From 8286d1c497b79ef7cb9655723ee01f5737147df6 Mon Sep 17 00:00:00 2001 From: ze97286 Date: Mon, 13 May 2024 14:18:46 +0100 Subject: [PATCH] feat: publish ongoing game data --- CHANGELOG.md | 2 +- cmd/data-node/commands/start/node.go | 1 + .../commands/start/sqlsubscribers.go | 8 +- core/banking/cancel_transfer_test.go | 1 - core/banking/checkpoint.go | 4 +- core/banking/checkpoint_test.go | 7 - core/banking/deduplicate_test.go | 3 - core/banking/engine.go | 29 + core/banking/engine_test.go | 10 +- core/banking/mocks/mocks.go | 12 + core/banking/oneoff_transfers_test.go | 19 - core/banking/recurring_transfers.go | 14 +- core/banking/recurring_transfers_test.go | 28 +- core/banking/snapshot.go | 8 +- core/banking/snapshot_test.go | 8 - core/banking/transfers_common.go | 10 + core/events/bus.go | 4 + core/events/game_scores.go | 143 + .../common/market_activity_tracker.go | 232 +- .../market_activity_tracker_internal_test.go | 254 +- .../common/market_activity_tracker_test.go | 96 +- .../mat_intermediate_scores_internal_test.go | 1115 + core/netparams/defaults.go | 1 + core/netparams/keys.go | 2 + core/processor/abci.go | 1 + core/processor/mocks/mocks.go | 12 + core/processor/processor.go | 1 + core/protocol/all_services.go | 4 + core/rewards/engine.go | 20 +- core/types/banking_snapshot.go | 5 + core/types/fee_score.go | 9 +- datanode/api/server.go | 4 + datanode/api/trading_data_v2.go | 89 + datanode/api/trading_test.go | 2 + datanode/broker/convert.go | 2 + datanode/entities/entities.go | 2 +- datanode/entities/game_scores.go | 217 + .../time_weighted_notional_position.go | 8 +- .../gateway/graphql/game_scores_resolver.go | 47 + datanode/gateway/graphql/generated.go | 3118 +- datanode/gateway/graphql/gqlgen.yml | 12 + datanode/gateway/graphql/mocks/mocks.go | 40 + datanode/gateway/graphql/models.go | 16 + datanode/gateway/graphql/resolvers.go | 39 + datanode/gateway/graphql/schema.graphql | 106 + datanode/networkhistory/service_test.go | 12 +- datanode/service/game_scores.go | 68 + datanode/sqlstore/game_scores.go | 282 + datanode/sqlstore/game_scores_test.go | 274 + .../sqlstore/migrations/0108_game_scores.sql | 117 + datanode/sqlstore/sqlstore.go | 2 + .../time_weighted_notional_position_test.go | 13 +- datanode/sqlsubscribers/game_scores.go | 76 + datanode/sqlsubscribers/game_scores_test.go | 51 + datanode/sqlsubscribers/mocks/mocks.go | 53 +- datanode/sqlsubscribers/subscriber.go | 2 +- mocks/mocks.go | 2721 ++ protos/data-node/api/v2/trading_data.pb.go | 31350 ++++++++-------- protos/data-node/api/v2/trading_data.pb.gw.go | 166 + .../data-node/api/v2/trading_data_grpc.pb.go | 84 + protos/embed_test.go | 2 +- .../data-node/api/v2/trading_data.proto | 88 + .../sources/data-node/grpc-rest-bindings.yml | 4 + .../vega/checkpoint/v1/checkpoint.proto | 1 + protos/sources/vega/events/v1/events.proto | 51 +- .../sources/vega/snapshot/v1/snapshot.proto | 1 + protos/vega/checkpoint/v1/checkpoint.pb.go | 885 +- protos/vega/events/v1/events.pb.go | 2181 +- protos/vega/snapshot/v1/snapshot.pb.go | 3685 +- 69 files changed, 28810 insertions(+), 19124 deletions(-) create mode 100644 core/events/game_scores.go create mode 100644 core/execution/common/mat_intermediate_scores_internal_test.go create mode 100644 datanode/entities/game_scores.go create mode 100644 datanode/gateway/graphql/game_scores_resolver.go create mode 100644 datanode/service/game_scores.go create mode 100644 datanode/sqlstore/game_scores.go create mode 100644 datanode/sqlstore/game_scores_test.go create mode 100644 datanode/sqlstore/migrations/0108_game_scores.sql create mode 100644 datanode/sqlsubscribers/game_scores.go create mode 100644 datanode/sqlsubscribers/game_scores_test.go create mode 100644 mocks/mocks.go diff --git a/CHANGELOG.md b/CHANGELOG.md index a98b02a00a3..55ade8cc47b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,7 +12,7 @@ ### 🛠 Improvements -- [](https://github.com/vegaprotocol/vega/issues/xxx) +- [11209](https://github.com/vegaprotocol/vega/issues/11209) - Publish ongoing games data. ### 🐛 Fixes diff --git a/cmd/data-node/commands/start/node.go b/cmd/data-node/commands/start/node.go index e4472246656..18b86524096 100644 --- a/cmd/data-node/commands/start/node.go +++ b/cmd/data-node/commands/start/node.go @@ -240,6 +240,7 @@ func (l *NodeCommand) createGRPCServer(config api.Config) *api.GRPCServer { l.gamesService, l.marginModesService, l.timeWeightedNotionalPositionService, + l.gameScoreService, ) return grpcServer } diff --git a/cmd/data-node/commands/start/sqlsubscribers.go b/cmd/data-node/commands/start/sqlsubscribers.go index 8b1afa14e4f..0c711a1e08d 100644 --- a/cmd/data-node/commands/start/sqlsubscribers.go +++ b/cmd/data-node/commands/start/sqlsubscribers.go @@ -82,6 +82,7 @@ type SQLSubscribers struct { gamesStore *sqlstore.Games marginModesStore *sqlstore.MarginModes timeWeightedNotionalPositionStore *sqlstore.TimeWeightedNotionalPosition + gameScoreStore *sqlstore.GameScores // Services candleService *candlesv2.Svc @@ -138,6 +139,7 @@ type SQLSubscribers struct { gamesService *service.Games marginModesService *service.MarginModes timeWeightedNotionalPositionService *service.TimeWeightedNotionalPosition + gameScoreService *service.GameScore // Subscribers accountSub *sqlsubscribers.Account @@ -190,6 +192,7 @@ type SQLSubscribers struct { transactionResultsSub *sqlsubscribers.TransactionResults marginModesSub *sqlsubscribers.MarginModes timeWeightedNotionalPositionSub *sqlsubscribers.TimeWeightedNotionalPosition + gameScoreSub *sqlsubscribers.GameScore } func (s *SQLSubscribers) GetSQLSubscribers() []broker.SQLBrokerSubscriber { @@ -246,6 +249,7 @@ func (s *SQLSubscribers) GetSQLSubscribers() []broker.SQLBrokerSubscriber { s.transactionResultsSub, s.marginModesSub, s.timeWeightedNotionalPositionSub, + s.gameScoreSub, } } @@ -307,6 +311,7 @@ func (s *SQLSubscribers) CreateAllStores(ctx context.Context, Log *logging.Logge s.gamesStore = sqlstore.NewGames(transactionalConnectionSource) s.marginModesStore = sqlstore.NewMarginModes(transactionalConnectionSource) s.timeWeightedNotionalPositionStore = sqlstore.NewTimeWeightedNotionalPosition(transactionalConnectionSource) + s.gameScoreStore = sqlstore.NewGameScores(transactionalConnectionSource) } func (s *SQLSubscribers) SetupServices(ctx context.Context, log *logging.Logger, candlesConfig candlesv2.Config) error { @@ -363,7 +368,7 @@ func (s *SQLSubscribers) SetupServices(ctx context.Context, log *logging.Logger, s.gamesService = service.NewGames(s.gamesStore) s.marginModesService = service.NewMarginModes(s.marginModesStore) s.timeWeightedNotionalPositionService = service.NewTimeWeightedNotionalPosition(s.timeWeightedNotionalPositionStore) - + s.gameScoreService = service.NewGameScore(s.gameScoreStore, log) s.transactionResultsSub = sqlsubscribers.NewTransactionResults(log) s.transactionResultsService = service.NewTransactionResults(s.transactionResultsSub) @@ -432,4 +437,5 @@ func (s *SQLSubscribers) SetupSQLSubscribers() { s.vestingSummarySub = sqlsubscribers.NewVestingBalancesSummary(s.partyVestingBalancesStore, s.partyLockedBalancesStore) s.marginModesSub = sqlsubscribers.NewMarginModes(s.marginModesService) s.timeWeightedNotionalPositionSub = sqlsubscribers.NewTimeWeightedNotionalPosition(s.timeWeightedNotionalPositionService) + s.gameScoreSub = sqlsubscribers.NewGameScore(s.gameScoreStore) } diff --git a/core/banking/cancel_transfer_test.go b/core/banking/cancel_transfer_test.go index 032abe5a015..448221d4c9e 100644 --- a/core/banking/cancel_transfer_test.go +++ b/core/banking/cancel_transfer_test.go @@ -68,7 +68,6 @@ func TestCancelTransfer(t *testing.T) { e.assets.EXPECT().Get(gomock.Any()).Times(2).Return( assets.NewAsset(&mockAsset{quantum: num.DecimalFromFloat(100), name: asset}), nil) - e.tsvc.EXPECT().GetTimeNow().Times(2) e.broker.EXPECT().Send(gomock.Any()).Times(2) assert.NoError(t, e.TransferFunds(ctx, transfer)) diff --git a/core/banking/checkpoint.go b/core/banking/checkpoint.go index 97ba825e86d..75ba318a9b6 100644 --- a/core/banking/checkpoint.go +++ b/core/banking/checkpoint.go @@ -20,6 +20,7 @@ import ( "fmt" "sort" "sync/atomic" + "time" "code.vegaprotocol.io/vega/core/assets" "code.vegaprotocol.io/vega/core/events" @@ -272,6 +273,7 @@ func (e *Engine) loadRecurringTransfers( ctx context.Context, r *checkpoint.RecurringTransfers, ) []events.Event { evts := []events.Event{} + e.nextMetricUpdate = time.Unix(0, r.NextMetricUpdate) for _, v := range r.RecurringTransfers { transfer := types.RecurringTransferFromEvent(v) e.recurringTransfers = append(e.recurringTransfers, transfer) @@ -334,7 +336,7 @@ func (e *Engine) getRecurringTransfers() *checkpoint.RecurringTransfers { for _, v := range e.recurringTransfers { out.RecurringTransfers = append(out.RecurringTransfers, v.IntoEvent(nil, e.getGameID(v))) } - + out.NextMetricUpdate = e.nextMetricUpdate.UnixNano() return out } diff --git a/core/banking/checkpoint_test.go b/core/banking/checkpoint_test.go index 09f9342ded4..7fcaa6a137b 100644 --- a/core/banking/checkpoint_test.go +++ b/core/banking/checkpoint_test.go @@ -81,11 +81,6 @@ func TestDepositFinalisedAfterCheckpoint(t *testing.T) { func testSimpledScheduledTransfer(t *testing.T) { e := getTestEngine(t) - e.tsvc.EXPECT().GetTimeNow().DoAndReturn( - func() time.Time { - return time.Unix(10, 0) - }).AnyTimes() - // let's do a massive fee, easy to test. e.OnTransferFeeFactorUpdate(context.Background(), num.NewDecimalFromFloat(1)) e.OnTick(context.Background(), time.Unix(10, 0)) @@ -229,7 +224,6 @@ func TestGovernanceScheduledTransfer(t *testing.T) { } e.broker.EXPECT().Send(gomock.Any()).Times(1) - e.tsvc.EXPECT().GetTimeNow().Times(1).Return(time.Unix(10, 0)) require.NoError(t, e.NewGovernanceTransfer(ctx, "1", "some reference", transfer)) checkp, err := e.Checkpoint() @@ -290,7 +284,6 @@ func TestGovernanceRecurringTransfer(t *testing.T) { } e.broker.EXPECT().Send(gomock.Any()).Times(1) - e.tsvc.EXPECT().GetTimeNow().Times(1).Return(time.Unix(10, 0)) require.NoError(t, e.NewGovernanceTransfer(ctx, "1", "some reference", transfer)) checkp, err := e.Checkpoint() diff --git a/core/banking/deduplicate_test.go b/core/banking/deduplicate_test.go index 568a3a7ee5d..3678cf10610 100644 --- a/core/banking/deduplicate_test.go +++ b/core/banking/deduplicate_test.go @@ -54,7 +54,6 @@ func TestAssetActionDeduplication(t *testing.T) { asset1 := assets.NewAsset(erc20Asset) t.Run("Generate asset list", func(t *testing.T) { - eng.tsvc.EXPECT().GetTimeNow().Times(1).Return(time.Now()) eng.assets.EXPECT().Get(assetID1).Times(1).Return(asset1, nil) require.NoError(t, eng.EnableERC20(ctx, assetList1, id1, 1000, 1000, txHash1, "")) @@ -71,7 +70,6 @@ func TestAssetActionDeduplication(t *testing.T) { }) t.Run("Generate duplicated asset list and ", func(t *testing.T) { - eng.tsvc.EXPECT().GetTimeNow().Times(1).Return(time.Now()) eng.assets.EXPECT().Get(assetID1).Times(1).Return(asset1, nil) require.NoError(t, eng.EnableERC20(ctx, assetList1, id1, 1000, 1000, txHash1, "")) @@ -88,7 +86,6 @@ func TestAssetActionDeduplication(t *testing.T) { // set, which might happen with the introduction of the second bridge. We have // to ensure the event is acknowledge as a duplicate. t.Run("Generate a duplicated event but updated with the chain ID", func(t *testing.T) { - eng.tsvc.EXPECT().GetTimeNow().Times(1).Return(time.Now()) eng.assets.EXPECT().Get(assetID1).Times(1).Return(asset1, nil) require.NoError(t, eng.EnableERC20(ctx, assetList1, id1, 1000, 1000, txHash1, "1")) diff --git a/core/banking/engine.go b/core/banking/engine.go index 4e42c770108..d5bb601f32a 100644 --- a/core/banking/engine.go +++ b/core/banking/engine.go @@ -113,6 +113,7 @@ type MarketActivityTracker interface { MarkPaidProposer(asset, market, payoutAsset string, marketsInScope []string, funder string) MarketTrackedForAsset(market, asset string) bool TeamStatsForMarkets(allMarketsForAssets, onlyTheseMarkets []string) map[string]map[string]*num.Uint + PublishGameMetric(ctx context.Context, dispatchStrategy []*vega.DispatchStrategy, now time.Time) } type EthereumEventSource interface { @@ -206,6 +207,9 @@ type Engine struct { maxGovTransferQunatumMultiplier num.Decimal maxGovTransferFraction num.Decimal + + metricUpdateFrequency time.Duration + nextMetricUpdate time.Time } type withdrawalRef struct { @@ -259,6 +263,7 @@ func New(log *logging.Logger, minTransferQuantumMultiple: num.DecimalZero(), minWithdrawQuantumMultiple: num.DecimalZero(), marketActivityTracker: marketActivityTracker, + nextMetricUpdate: time.Time{}, hashToStrategy: map[string]*dispatchStrategyCacheEntry{}, primaryBridgeState: &bridgeState{ active: true, @@ -310,6 +315,28 @@ func (e *Engine) ReloadConf(cfg Config) { e.cfg = cfg } +func (e *Engine) OnBlockEnd(ctx context.Context, now time.Time) { + if !now.Before(e.nextMetricUpdate) { + e.publishMetricData(ctx, now) + e.nextMetricUpdate = now.Add(e.metricUpdateFrequency) + } +} + +// publishMetricData requests the market activity tracker to publish and event +// for each game with the current metric data for each party. +func (e *Engine) publishMetricData(ctx context.Context, now time.Time) { + hashes := make([]string, 0, len(e.hashToStrategy)) + for hash := range e.hashToStrategy { + hashes = append(hashes, hash) + } + sort.Strings(hashes) + dss := make([]*vega.DispatchStrategy, 0, len(hashes)) + for _, hash := range hashes { + dss = append(dss, e.hashToStrategy[hash].ds) + } + e.marketActivityTracker.PublishGameMetric(ctx, dss, now) +} + func (e *Engine) OnEpoch(ctx context.Context, ep types.Epoch) { switch ep.Action { case proto.EpochAction_EPOCH_ACTION_START: @@ -320,6 +347,8 @@ func (e *Engine) OnEpoch(ctx context.Context, ep types.Epoch) { e.distributeRecurringGovernanceTransfers(ctx) e.applyPendingFeeDiscountsUpdates(ctx) e.sendTeamsStats(ctx, ep.Seq) + // as the metrics are going to be published here, we want to progress the next update. + e.nextMetricUpdate = e.timeService.GetTimeNow().Add(e.metricUpdateFrequency) default: e.log.Panic("epoch action should never be UNSPECIFIED", logging.String("epoch", ep.String())) } diff --git a/core/banking/engine_test.go b/core/banking/engine_test.go index 2fe7d638675..6644ef8b3f9 100644 --- a/core/banking/engine_test.go +++ b/core/banking/engine_test.go @@ -64,6 +64,10 @@ func getTestEngine(t *testing.T) *testEngine { col := mocks.NewMockCollateral(ctrl) assets := mocks.NewMockAssets(ctrl) tsvc := mocks.NewMockTimeService(ctrl) + tsvc.EXPECT().GetTimeNow().DoAndReturn( + func() time.Time { + return time.Unix(10, 0) + }).AnyTimes() notary := mocks.NewMockNotary(ctrl) broker := bmocks.NewMockBroker(ctrl) top := mocks.NewMockTopology(ctrl) @@ -118,7 +122,6 @@ func testDepositSuccess(t *testing.T) { } // call the deposit function - eng.tsvc.EXPECT().GetTimeNow().Times(2).Return(time.Now()) err := eng.DepositBuiltinAsset(context.Background(), bad, "depositid", 42) assert.NoError(t, err) @@ -147,7 +150,6 @@ func testDepositSuccessNoTxDuplicate(t *testing.T) { } // call the deposit function - eng.tsvc.EXPECT().GetTimeNow().Times(2).Return(time.Now()) require.NoError(t, eng.DepositBuiltinAsset(context.Background(), bad, "depositid", 42)) // then we call the callback from the fake witness @@ -161,7 +163,6 @@ func testDepositSuccessNoTxDuplicate(t *testing.T) { eng.OnTick(context.Background(), time.Now()) // call the deposit function - eng.tsvc.EXPECT().GetTimeNow().Times(2).Return(time.Now()) require.NoError(t, eng.DepositBuiltinAsset(context.Background(), bad, "depositid2", 43)) // then we call the callback from the fake witness @@ -188,7 +189,6 @@ func testDepositFailure(t *testing.T) { } // call the deposit function - eng.tsvc.EXPECT().GetTimeNow().Times(2).Return(time.Now()) err := eng.DepositBuiltinAsset(context.Background(), bad, "depositid", 42) assert.NoError(t, err) @@ -217,7 +217,6 @@ func testDepositError(t *testing.T) { eng.witness.err = expectError // call the deposit function - eng.tsvc.EXPECT().GetTimeNow().Times(2).Return(time.Now()) err := eng.DepositBuiltinAsset(context.Background(), bad, "depositid", 42) assert.EqualError(t, err, expectError.Error()) } @@ -236,7 +235,6 @@ func testDepositFailureNotBuiltin(t *testing.T) { } // call the deposit function - eng.tsvc.EXPECT().GetTimeNow().Times(1).Return(time.Now()) err := eng.DepositBuiltinAsset(context.Background(), bad, "depositid", 42) assert.EqualError(t, err, expectError.Error()) } diff --git a/core/banking/mocks/mocks.go b/core/banking/mocks/mocks.go index 44671c4a515..bccf6a9413f 100644 --- a/core/banking/mocks/mocks.go +++ b/core/banking/mocks/mocks.go @@ -554,6 +554,18 @@ func (mr *MockMarketActivityTrackerMockRecorder) MarketTrackedForAsset(arg0, arg return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "MarketTrackedForAsset", reflect.TypeOf((*MockMarketActivityTracker)(nil).MarketTrackedForAsset), arg0, arg1) } +// PublishGameMetric mocks base method. +func (m *MockMarketActivityTracker) PublishGameMetric(arg0 context.Context, arg1 []*vega.DispatchStrategy, arg2 time.Time) { + m.ctrl.T.Helper() + m.ctrl.Call(m, "PublishGameMetric", arg0, arg1, arg2) +} + +// PublishGameMetric indicates an expected call of PublishGameMetric. +func (mr *MockMarketActivityTrackerMockRecorder) PublishGameMetric(arg0, arg1, arg2 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PublishGameMetric", reflect.TypeOf((*MockMarketActivityTracker)(nil).PublishGameMetric), arg0, arg1, arg2) +} + // TeamStatsForMarkets mocks base method. func (m *MockMarketActivityTracker) TeamStatsForMarkets(arg0, arg1 []string) map[string]map[string]*num.Uint { m.ctrl.T.Helper() diff --git a/core/banking/oneoff_transfers_test.go b/core/banking/oneoff_transfers_test.go index 91b204a9b01..390d963242a 100644 --- a/core/banking/oneoff_transfers_test.go +++ b/core/banking/oneoff_transfers_test.go @@ -62,7 +62,6 @@ func testRejectedIfDoesntReachMinimalAmount(t *testing.T) { e.OnMinTransferQuantumMultiple(context.Background(), num.DecimalFromFloat(1)) // asset exists e.assets.EXPECT().Get(gomock.Any()).Times(1).Return(assets.NewAsset(&mockAsset{name: assetNameETH, quantum: num.DecimalFromFloat(100)}), nil) - e.tsvc.EXPECT().GetTimeNow().Times(1) e.broker.EXPECT().Send(gomock.Any()).Times(1) assert.EqualError(t, @@ -78,7 +77,6 @@ func testInvalidTransferKind(t *testing.T) { transfer := &types.TransferFunds{ Kind: types.TransferCommandKind(-1), } - e.tsvc.EXPECT().GetTimeNow().Times(1) assert.EqualError(t, e.TransferFunds(ctx, transfer), banking.ErrUnsupportedTransferKind.Error(), @@ -88,8 +86,6 @@ func testInvalidTransferKind(t *testing.T) { func testOneOffTransferNotEnoughFundsToTransfer(t *testing.T) { e := getTestEngine(t) - e.tsvc.EXPECT().GetTimeNow().Times(1) - ctx := context.Background() transfer := &types.TransferFunds{ Kind: types.TransferCommandKindOneOff, @@ -145,7 +141,6 @@ func testOneOffTransferInvalidTransfers(t *testing.T) { var baseCpy types.TransferBase t.Run("invalid from account", func(t *testing.T) { - e.tsvc.EXPECT().GetTimeNow().Times(1) e.broker.EXPECT().Send(gomock.Any()).Times(1) baseCpy := transferBase transfer.OneOff.TransferBase = &baseCpy @@ -157,7 +152,6 @@ func testOneOffTransferInvalidTransfers(t *testing.T) { }) t.Run("invalid to account", func(t *testing.T) { - e.tsvc.EXPECT().GetTimeNow().Times(1) e.broker.EXPECT().Send(gomock.Any()).Times(1) baseCpy = transferBase transfer.OneOff.TransferBase = &baseCpy @@ -169,7 +163,6 @@ func testOneOffTransferInvalidTransfers(t *testing.T) { }) t.Run("unsupported from account type", func(t *testing.T) { - e.tsvc.EXPECT().GetTimeNow().Times(1) e.broker.EXPECT().Send(gomock.Any()).Times(1) baseCpy = transferBase transfer.OneOff.TransferBase = &baseCpy @@ -181,7 +174,6 @@ func testOneOffTransferInvalidTransfers(t *testing.T) { }) t.Run("unsuported to account type", func(t *testing.T) { - e.tsvc.EXPECT().GetTimeNow().Times(1) e.broker.EXPECT().Send(gomock.Any()).Times(1) baseCpy = transferBase transfer.OneOff.TransferBase = &baseCpy @@ -193,7 +185,6 @@ func testOneOffTransferInvalidTransfers(t *testing.T) { }) t.Run("zero funds transfer", func(t *testing.T) { - e.tsvc.EXPECT().GetTimeNow().Times(1) e.broker.EXPECT().Send(gomock.Any()).Times(1) baseCpy = transferBase transfer.OneOff.TransferBase = &baseCpy @@ -232,7 +223,6 @@ func testValidOneOffTransfer(t *testing.T) { } // asset exists - e.tsvc.EXPECT().GetTimeNow().Times(1) e.assets.EXPECT().Get(gomock.Any()).Times(1).Return( assets.NewAsset(&mockAsset{name: assetNameETH, quantum: num.DecimalFromFloat(100)}), nil) e.col.EXPECT().GetPartyGeneralAccount(gomock.Any(), gomock.Any()).Times(1).Return(&fromAcc, nil) @@ -277,18 +267,12 @@ func testValidOneOffTransfer(t *testing.T) { }) e.broker.EXPECT().Send(gomock.Any()).Times(3) - e.tsvc.EXPECT().GetTimeNow().AnyTimes() assert.NoError(t, e.TransferFunds(ctx, transfer)) } func testValidOneOffTransferWithDeliverOnInThePastStraightAway(t *testing.T) { e := getTestEngine(t) - e.tsvc.EXPECT().GetTimeNow().DoAndReturn( - func() time.Time { - return time.Unix(10, 0) - }).AnyTimes() - // let's do a massive fee, easy to test e.OnTransferFeeFactorUpdate(context.Background(), num.NewDecimalFromFloat(1)) e.OnTick(context.Background(), time.Unix(10, 0)) @@ -391,9 +375,6 @@ func testValidOneOffTransferWithDeliverOn(t *testing.T) { Balance: num.NewUint(100), } - // Time given to e.Transferfunds - base time Unix(10,0) - e.tsvc.EXPECT().GetTimeNow().Times(2).Return(time.Unix(10, 0)) - // asset exists e.assets.EXPECT().Get(gomock.Any()).Times(1).Return(assets.NewAsset(&mockAsset{name: assetNameETH, quantum: num.DecimalFromFloat(100)}), nil) e.col.EXPECT().GetPartyGeneralAccount(gomock.Any(), gomock.Any()).Times(1).Return(&fromAcc, nil) diff --git a/core/banking/recurring_transfers.go b/core/banking/recurring_transfers.go index a0b80ac19d2..902b63366fa 100644 --- a/core/banking/recurring_transfers.go +++ b/core/banking/recurring_transfers.go @@ -196,15 +196,25 @@ func (e *Engine) dispatchRequired(ctx context.Context, ds *vegapb.DispatchStrate if ds.EntityScope == vegapb.EntityScope_ENTITY_SCOPE_INDIVIDUALS { hasNonZeroMetric := false partyMetrics := e.marketActivityTracker.CalculateMetricForIndividuals(ctx, ds) + gs := events.NewPartyGameScoresEvent(ctx, int64(e.currentEpoch), e.hashDispatchStrategy(ds), e.timeService.GetTimeNow(), partyMetrics) + e.broker.Send(gs) + hasEligibleParties := false for _, pm := range partyMetrics { if !pm.Score.IsZero() { hasNonZeroMetric = true + } + if pm.IsEligible { + hasEligibleParties = true + } + if hasNonZeroMetric && hasEligibleParties { break } } - return hasNonZeroMetric || (len(partyMetrics) > 0 && ds.DistributionStrategy == vegapb.DistributionStrategy_DISTRIBUTION_STRATEGY_RANK) + return hasNonZeroMetric || (hasEligibleParties && ds.DistributionStrategy == vegapb.DistributionStrategy_DISTRIBUTION_STRATEGY_RANK) } else { - tcs, _ := e.marketActivityTracker.CalculateMetricForTeams(ctx, ds) + tcs, pcs := e.marketActivityTracker.CalculateMetricForTeams(ctx, ds) + gs := events.NewTeamGameScoresEvent(ctx, int64(e.currentEpoch), e.hashDispatchStrategy(ds), e.timeService.GetTimeNow(), tcs, pcs) + e.broker.Send(gs) return len(tcs) > 0 } case vegapb.DispatchMetric_DISPATCH_METRIC_VALIDATOR_RANKING: diff --git a/core/banking/recurring_transfers_test.go b/core/banking/recurring_transfers_test.go index 9d5d991e652..a0f342ea283 100644 --- a/core/banking/recurring_transfers_test.go +++ b/core/banking/recurring_transfers_test.go @@ -49,7 +49,6 @@ func TestMaturation(t *testing.T) { e.OnMinTransferQuantumMultiple(context.Background(), num.DecimalFromFloat(1)) e.assets.EXPECT().Get(gomock.Any()).AnyTimes().Return(assets.NewAsset(&mockAsset{name: assetNameETH, quantum: num.DecimalFromFloat(10)}), nil) - e.tsvc.EXPECT().GetTimeNow().AnyTimes() e.broker.EXPECT().Send(gomock.Any()).AnyTimes() fromAcc := types.Account{ Balance: num.NewUint(100000), // enough for the all @@ -127,7 +126,6 @@ func testInvalidRecurringTransfersBadAmount(t *testing.T) { e.OnMinTransferQuantumMultiple(context.Background(), num.DecimalFromFloat(1)) // asset exists e.assets.EXPECT().Get(gomock.Any()).Times(1).Return(assets.NewAsset(&mockAsset{name: assetNameETH, quantum: num.DecimalFromFloat(100)}), nil) - e.tsvc.EXPECT().GetTimeNow().Times(1) e.broker.EXPECT().Send(gomock.Any()).Times(1) assert.EqualError(t, @@ -165,7 +163,6 @@ func testInvalidRecurringTransfersInThePast(t *testing.T) { } e.assets.EXPECT().Get(gomock.Any()).AnyTimes().Return(assets.NewAsset(&mockAsset{name: assetNameETH, quantum: num.DecimalFromFloat(100)}), nil) - e.tsvc.EXPECT().GetTimeNow().Times(2) e.broker.EXPECT().Send(gomock.Any()).Times(1) assert.EqualError(t, e.TransferFunds(ctx, transfer), @@ -228,7 +225,6 @@ func testInvalidRecurringTransfersDuplicates(t *testing.T) { } e.assets.EXPECT().Get(gomock.Any()).AnyTimes().Return(assets.NewAsset(&mockAsset{name: assetNameETH, quantum: num.DecimalFromFloat(100)}), nil) - e.tsvc.EXPECT().GetTimeNow().Times(3) e.broker.EXPECT().Send(gomock.Any()).Times(1) assert.NoError(t, e.TransferFunds(ctx, transfer)) @@ -313,11 +309,10 @@ func testForeverTransferCancelledNotEnoughFunds(t *testing.T) { } e.marketActivityTracker.EXPECT().CalculateMetricForIndividuals(gomock.Any(), gomock.Any()).AnyTimes().Return([]*types.PartyContributionScore{ - {Party: "", Score: num.DecimalFromFloat(1)}, + {Party: "", Score: num.DecimalFromFloat(1), StakingBalance: num.UintZero(), OpenVolume: num.UintZero(), TotalFeesPaid: num.UintZero(), IsEligible: true}, }) e.assets.EXPECT().Get(gomock.Any()).AnyTimes().Return(assets.NewAsset(&mockAsset{name: assetNameETH, quantum: num.DecimalFromFloat(100)}), nil) - e.tsvc.EXPECT().GetTimeNow().Times(2) - e.broker.EXPECT().Send(gomock.Any()).Times(2) + e.broker.EXPECT().Send(gomock.Any()).AnyTimes() assert.NoError(t, e.TransferFunds(ctx, transfer)) // now let's move epochs to see the others transfers @@ -432,7 +427,6 @@ func testValidRecurringTransfer(t *testing.T) { } e.assets.EXPECT().Get(gomock.Any()).AnyTimes().Return(assets.NewAsset(&mockAsset{name: assetNameETH, quantum: num.DecimalFromFloat(100)}), nil) - e.tsvc.EXPECT().GetTimeNow().Times(3) e.broker.EXPECT().Send(gomock.Any()).Times(3) assert.NoError(t, e.TransferFunds(ctx, transfer)) @@ -571,7 +565,6 @@ func testRecurringTransferInvalidTransfers(t *testing.T) { var baseCpy types.TransferBase t.Run("invalid from account", func(t *testing.T) { - e.tsvc.EXPECT().GetTimeNow().Times(1) e.broker.EXPECT().Send(gomock.Any()).Times(1) baseCpy := transferBase transfer.Recurring.TransferBase = &baseCpy @@ -583,7 +576,6 @@ func testRecurringTransferInvalidTransfers(t *testing.T) { }) t.Run("invalid to account", func(t *testing.T) { - e.tsvc.EXPECT().GetTimeNow().Times(1) e.broker.EXPECT().Send(gomock.Any()).Times(1) baseCpy = transferBase transfer.Recurring.TransferBase = &baseCpy @@ -595,7 +587,6 @@ func testRecurringTransferInvalidTransfers(t *testing.T) { }) t.Run("unsupported from account type", func(t *testing.T) { - e.tsvc.EXPECT().GetTimeNow().Times(1) e.broker.EXPECT().Send(gomock.Any()).Times(1) baseCpy = transferBase transfer.Recurring.TransferBase = &baseCpy @@ -607,7 +598,6 @@ func testRecurringTransferInvalidTransfers(t *testing.T) { }) t.Run("unsuported to account type", func(t *testing.T) { - e.tsvc.EXPECT().GetTimeNow().Times(1) e.broker.EXPECT().Send(gomock.Any()).Times(1) baseCpy = transferBase transfer.Recurring.TransferBase = &baseCpy @@ -619,7 +609,6 @@ func testRecurringTransferInvalidTransfers(t *testing.T) { }) t.Run("zero funds transfer", func(t *testing.T) { - e.tsvc.EXPECT().GetTimeNow().Times(1) e.broker.EXPECT().Send(gomock.Any()).Times(1) baseCpy = transferBase transfer.Recurring.TransferBase = &baseCpy @@ -644,8 +633,6 @@ func testRecurringTransferInvalidTransfers(t *testing.T) { t.Run("bad start time", func(t *testing.T) { transfer.Recurring.StartEpoch = 0 - - e.tsvc.EXPECT().GetTimeNow().Times(1) e.broker.EXPECT().Send(gomock.Any()).Times(1) assert.EqualError(t, @@ -657,8 +644,6 @@ func testRecurringTransferInvalidTransfers(t *testing.T) { t.Run("bad end time", func(t *testing.T) { transfer.Recurring.StartEpoch = 90 transfer.Recurring.EndEpoch = &endEpoch0 - - e.tsvc.EXPECT().GetTimeNow().Times(1) e.broker.EXPECT().Send(gomock.Any()).Times(1) assert.EqualError(t, @@ -670,8 +655,6 @@ func testRecurringTransferInvalidTransfers(t *testing.T) { t.Run("negative factor", func(t *testing.T) { transfer.Recurring.EndEpoch = &endEpoch100 transfer.Recurring.Factor = num.MustDecimalFromString("-1") - - e.tsvc.EXPECT().GetTimeNow().Times(1) e.broker.EXPECT().Send(gomock.Any()).Times(1) assert.EqualError(t, @@ -682,8 +665,6 @@ func testRecurringTransferInvalidTransfers(t *testing.T) { t.Run("zero factor", func(t *testing.T) { transfer.Recurring.Factor = num.MustDecimalFromString("0") - - e.tsvc.EXPECT().GetTimeNow().Times(1) e.broker.EXPECT().Send(gomock.Any()).Times(1) assert.EqualError(t, @@ -695,8 +676,6 @@ func testRecurringTransferInvalidTransfers(t *testing.T) { t.Run("start epoch after end epoch", func(t *testing.T) { transfer.Recurring.Factor = num.MustDecimalFromString("1") transfer.Recurring.EndEpoch = &endEpoch1 - - e.tsvc.EXPECT().GetTimeNow().Times(1) e.broker.EXPECT().Send(gomock.Any()).Times(1) assert.EqualError(t, @@ -707,8 +686,6 @@ func testRecurringTransferInvalidTransfers(t *testing.T) { t.Run("end epoch nil", func(t *testing.T) { transfer.Recurring.EndEpoch = nil - - e.tsvc.EXPECT().GetTimeNow().Times(1) e.broker.EXPECT().Send(gomock.Any()).Times(1) assert.NoError(t, @@ -725,7 +702,6 @@ func TestMarketAssetMismatchRejectsTransfer(t *testing.T) { } eng.assets.EXPECT().Get(gomock.Any()).AnyTimes().Return(assets.NewAsset(&mockAsset{name: assetNameETH, quantum: num.DecimalFromFloat(100)}), nil) - eng.tsvc.EXPECT().GetTimeNow().Times(1) eng.col.EXPECT().GetPartyGeneralAccount(gomock.Any(), gomock.Any()).AnyTimes().Return(&fromAcc, nil) eng.broker.EXPECT().Send(gomock.Any()).AnyTimes() eng.col.EXPECT().TransferFunds(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).AnyTimes() diff --git a/core/banking/snapshot.go b/core/banking/snapshot.go index fe7cb5aa94e..29ce2b4a1e0 100644 --- a/core/banking/snapshot.go +++ b/core/banking/snapshot.go @@ -20,6 +20,7 @@ import ( "fmt" "math/big" "sort" + "time" "code.vegaprotocol.io/vega/core/types" "code.vegaprotocol.io/vega/libs/num" @@ -120,6 +121,7 @@ func (e *Engine) serialiseRecurringTransfers() ([]byte, error) { payload := types.Payload{ Data: &types.PayloadBankingRecurringTransfers{ BankingRecurringTransfers: e.getRecurringTransfers(), + NextMetricUpdate: e.nextMetricUpdate, }, } @@ -314,7 +316,7 @@ func (e *Engine) LoadState(ctx context.Context, p *types.Payload) ([]types.State case *types.PayloadBankingAssetActions: return nil, e.restoreAssetActions(pl.BankingAssetActions, p) case *types.PayloadBankingRecurringTransfers: - return nil, e.restoreRecurringTransfers(ctx, pl.BankingRecurringTransfers, p) + return nil, e.restoreRecurringTransfers(ctx, pl.BankingRecurringTransfers, pl.NextMetricUpdate, p) case *types.PayloadBankingScheduledTransfers: return nil, e.restoreScheduledTransfers(ctx, pl.BankingScheduledTransfers, p) case *types.PayloadBankingRecurringGovernanceTransfers: @@ -332,12 +334,12 @@ func (e *Engine) LoadState(ctx context.Context, p *types.Payload) ([]types.State } } -func (e *Engine) restoreRecurringTransfers(ctx context.Context, transfers *checkpoint.RecurringTransfers, p *types.Payload) error { +func (e *Engine) restoreRecurringTransfers(ctx context.Context, transfers *checkpoint.RecurringTransfers, nextMetricUpdate time.Time, p *types.Payload) error { var err error // ignore events here as we don't need to send them _ = e.loadRecurringTransfers(ctx, transfers) e.bss.serialisedRecurringTransfers, err = proto.Marshal(p.IntoProto()) - + e.nextMetricUpdate = nextMetricUpdate return err } diff --git a/core/banking/snapshot_test.go b/core/banking/snapshot_test.go index e6119fe6f5c..9faab7daed2 100644 --- a/core/banking/snapshot_test.go +++ b/core/banking/snapshot_test.go @@ -312,7 +312,6 @@ func TestSeenSnapshotRoundTrip(t *testing.T) { seenKey := (&types.PayloadBankingSeen{}).Key() eng := getTestEngine(t) - eng.tsvc.EXPECT().GetTimeNow().Times(2) state1, _, err := eng.GetState(seenKey) require.Nil(t, err) eng.col.EXPECT().Deposit(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).AnyTimes().Return(&types.LedgerMovement{}, nil) @@ -464,7 +463,6 @@ func TestOneOffTransfersSnapshotRoundTrip(t *testing.T) { eng.col.EXPECT().TransferFunds(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).AnyTimes() eng.assets.EXPECT().Get(gomock.Any()).Times(1).Return(assets.NewAsset(&mockAsset{name: assetNameETH, quantum: num.DecimalFromFloat(100)}), nil) eng.col.EXPECT().GetPartyGeneralAccount(gomock.Any(), gomock.Any()).AnyTimes().Times(1).Return(&fromAcc, nil) - eng.tsvc.EXPECT().GetTimeNow().Times(2).Return(now) eng.broker.EXPECT().Send(gomock.Any()).AnyTimes() require.NoError(t, eng.TransferFunds(ctx, oneoff)) @@ -494,7 +492,6 @@ func TestRecurringTransfersSnapshotRoundTrip(t *testing.T) { } eng.assets.EXPECT().Get(gomock.Any()).AnyTimes().Return(assets.NewAsset(&mockAsset{name: assetNameETH, quantum: num.DecimalFromFloat(100)}), nil) - eng.tsvc.EXPECT().GetTimeNow().Times(1) eng.col.EXPECT().GetPartyGeneralAccount(gomock.Any(), gomock.Any()).AnyTimes().Return(&fromAcc, nil) eng.broker.EXPECT().Send(gomock.Any()).AnyTimes() eng.col.EXPECT().TransferFunds(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).AnyTimes() @@ -596,7 +593,6 @@ func TestRecurringGovTransfersSnapshotRoundTrip(t *testing.T) { dsHash := hex.EncodeToString(crypto.Hash(p)) e.broker.EXPECT().Send(gomock.Any()).Times(1) - e.tsvc.EXPECT().GetTimeNow().Times(1).Return(time.Now()) require.NoError(t, e.NewGovernanceTransfer(ctx, "1", "some reference", transfer)) // test the new transfer prompts a change @@ -622,10 +618,6 @@ func TestScheduledgGovTransfersSnapshotRoundTrip(t *testing.T) { ctx := context.Background() key := (&types.PayloadBankingScheduledGovernanceTransfers{}).Key() e := getTestEngine(t) - e.tsvc.EXPECT().GetTimeNow().DoAndReturn( - func() time.Time { - return time.Unix(10, 0) - }).AnyTimes() // let's do a massive fee, easy to test. e.OnTransferFeeFactorUpdate(context.Background(), num.NewDecimalFromFloat(1)) diff --git a/core/banking/transfers_common.go b/core/banking/transfers_common.go index 8795075b62c..d030c9d2705 100644 --- a/core/banking/transfers_common.go +++ b/core/banking/transfers_common.go @@ -18,6 +18,7 @@ package banking import ( "context" "fmt" + "time" "code.vegaprotocol.io/vega/core/assets" "code.vegaprotocol.io/vega/core/events" @@ -26,6 +27,15 @@ import ( "code.vegaprotocol.io/vega/logging" ) +func (e *Engine) OnRewardsUpdateFrequencyUpdate(ctx context.Context, d time.Duration) error { + if !e.nextMetricUpdate.IsZero() { + e.nextMetricUpdate = e.nextMetricUpdate.Add(-e.metricUpdateFrequency) + } + e.nextMetricUpdate = e.nextMetricUpdate.Add(d) + e.metricUpdateFrequency = d + return nil +} + func (e *Engine) OnTransferFeeFactorUpdate(ctx context.Context, f num.Decimal) error { e.transferFeeFactor = f return nil diff --git a/core/events/bus.go b/core/events/bus.go index e127cacea4d..39a9d4b6085 100644 --- a/core/events/bus.go +++ b/core/events/bus.go @@ -172,6 +172,7 @@ const ( TeamsStatsUpdatedEvent TimeWeightedNotionalPositionUpdatedEvent CancelledOrdersEvent + GameScoresEvent ) var ( @@ -273,6 +274,7 @@ var ( eventspb.BusEventType_BUS_EVENT_TYPE_TEAMS_STATS_UPDATED: TeamsStatsUpdatedEvent, eventspb.BusEventType_BUS_EVENT_TYPE_TIME_WEIGHTED_NOTIONAL_POSITION_UPDATED: TimeWeightedNotionalPositionUpdatedEvent, eventspb.BusEventType_BUS_EVENT_TYPE_CANCELLED_ORDERS: CancelledOrdersEvent, + eventspb.BusEventType_BUS_EVENT_TYPE_GAME_SCORES: GameScoresEvent, // If adding a type here, please also add it to datanode/broker/convert.go } @@ -365,6 +367,7 @@ var ( TeamsStatsUpdatedEvent: eventspb.BusEventType_BUS_EVENT_TYPE_TEAMS_STATS_UPDATED, TimeWeightedNotionalPositionUpdatedEvent: eventspb.BusEventType_BUS_EVENT_TYPE_TIME_WEIGHTED_NOTIONAL_POSITION_UPDATED, CancelledOrdersEvent: eventspb.BusEventType_BUS_EVENT_TYPE_CANCELLED_ORDERS, + GameScoresEvent: eventspb.BusEventType_BUS_EVENT_TYPE_GAME_SCORES, // If adding a type here, please also add it to datanode/broker/convert.go } @@ -456,6 +459,7 @@ var ( TeamsStatsUpdatedEvent: "TeamsStatsUpdatedEvent", TimeWeightedNotionalPositionUpdatedEvent: "TimeWeightedNotionalPositionUpdatedEvent", CancelledOrdersEvent: "CancelledOrdersEvent", + GameScoresEvent: "GameScoresEvent", } ) diff --git a/core/events/game_scores.go b/core/events/game_scores.go new file mode 100644 index 00000000000..cb5e981ec98 --- /dev/null +++ b/core/events/game_scores.go @@ -0,0 +1,143 @@ +// Copyright (C) 2023 Gobalsky Labs Limited +// +// 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 events + +import ( + "context" + "time" + + "code.vegaprotocol.io/vega/core/types" + eventspb "code.vegaprotocol.io/vega/protos/vega/events/v1" +) + +type GameScores struct { + *Base + pb eventspb.GameScores +} + +func (gs *GameScores) GameScoreEvent() eventspb.GameScores { + return gs.pb +} + +func NewPartyGameScoresEvent(ctx context.Context, epoch int64, gameID string, time time.Time, partyScores []*types.PartyContributionScore) *GameScores { + ps := make([]*eventspb.GamePartyScore, 0, len(partyScores)) + for _, partyScore := range partyScores { + var ov, sb, tfp string + if partyScore.OpenVolume != nil { + ov = partyScore.OpenVolume.String() + } + if partyScore.StakingBalance != nil { + sb = partyScore.StakingBalance.String() + } + if partyScore.TotalFeesPaid != nil { + tfp = partyScore.TotalFeesPaid.String() + } + + ps = append(ps, &eventspb.GamePartyScore{ + GameId: gameID, + Epoch: epoch, + Time: time.UnixNano(), + Party: partyScore.Party, + Score: partyScore.Score.String(), + IsEligible: partyScore.IsEligible, + OpenVolume: ov, + StakingBalance: sb, + TotalFeesPaid: tfp, + }) + } + + return &GameScores{ + Base: newBase(ctx, GameScoresEvent), + pb: eventspb.GameScores{ + PartyScores: ps, + }, + } +} + +func NewTeamGameScoresEvent(ctx context.Context, epoch int64, gameID string, time time.Time, teamScores []*types.PartyContributionScore, teamPartyScores map[string][]*types.PartyContributionScore) *GameScores { + ts := make([]*eventspb.GameTeamScore, 0, len(teamScores)) + ps := []*eventspb.GamePartyScore{} + for _, teamScore := range teamScores { + team := &eventspb.GameTeamScore{ + GameId: gameID, + Time: time.UnixNano(), + Epoch: epoch, + TeamId: teamScore.Party, + Score: teamScore.Score.String(), + } + for _, partyScore := range teamPartyScores[teamScore.Party] { + var rank *uint64 + if partyScore.RankingIndex >= 0 { + r := uint64(partyScore.RankingIndex) + rank = &r + } + var ov, sb, tfp string + if partyScore.OpenVolume != nil { + ov = partyScore.OpenVolume.String() + } + if partyScore.StakingBalance != nil { + sb = partyScore.StakingBalance.String() + } + if partyScore.TotalFeesPaid != nil { + tfp = partyScore.TotalFeesPaid.String() + } + ps = append(ps, &eventspb.GamePartyScore{ + GameId: gameID, + TeamId: &team.TeamId, + Time: time.UnixNano(), + Epoch: epoch, + Party: partyScore.Party, + Score: partyScore.Score.String(), + IsEligible: partyScore.IsEligible, + OpenVolume: ov, + StakingBalance: sb, + TotalFeesPaid: tfp, + Rank: rank, + }) + } + ts = append(ts, team) + } + + return &GameScores{ + Base: newBase(ctx, GameScoresEvent), + pb: eventspb.GameScores{ + PartyScores: ps, + TeamScores: ts, + }, + } +} + +func (gs *GameScores) Proto() eventspb.GameScores { + return gs.pb +} + +func (gs *GameScores) StreamMessage() *eventspb.BusEvent { + busEvent := newBusEventFromBase(gs.Base) + cpy := gs.pb + busEvent.Event = &eventspb.BusEvent_GameScores{ + GameScores: &cpy, + } + + return busEvent +} + +func GameScoresEventFromStream(ctx context.Context, be *eventspb.BusEvent) *GameScores { + m := be.GetGameScores() + return &GameScores{ + Base: newBaseFromBusEvent(ctx, GameScoresEvent, be), + pb: *m, + } +} diff --git a/core/execution/common/market_activity_tracker.go b/core/execution/common/market_activity_tracker.go index 2f9d3295ffb..90a6e567758 100644 --- a/core/execution/common/market_activity_tracker.go +++ b/core/execution/common/market_activity_tracker.go @@ -212,6 +212,60 @@ func (mat *MarketActivityTracker) MarketProposed(asset, marketID, proposer strin } } +func (mat *MarketActivityTracker) PublishGameMetric(ctx context.Context, dispatchStrategy []*vega.DispatchStrategy, now time.Time) { + m := map[string]map[string]map[string]*num.Uint{} + + for asset, market := range mat.assetToMarketTrackers { + m[asset] = map[string]map[string]*num.Uint{} + for mkt, mt := range market { + m[asset][mkt] = mt.aggregatedFees() + mt.processNotionalAtMilestone(mat.epochStartTime, now) + mt.processPositionAtMilestone(mat.epochStartTime, now) + mt.processM2MAtMilestone() + mt.processPartyRealisedReturnAtMilestone() + mt.calcFeesAtMilestone() + } + } + mat.takerFeesPaidInEpoch = append(mat.takerFeesPaidInEpoch, m) + + for _, ds := range dispatchStrategy { + if ds.Metric == vega.DispatchMetric_DISPATCH_METRIC_VALIDATOR_RANKING || ds.Metric == vega.DispatchMetric_DISPATCH_METRIC_LP_FEES_RECEIVED || + ds.Metric == vega.DispatchMetric_DISPATCH_METRIC_MARKET_VALUE { + continue + } + mat.publishMetricForDispatchStrategy(ctx, ds, now) + } + + for _, market := range mat.assetToMarketTrackers { + for _, mt := range market { + mt.epochTimeWeightedNotional = mt.epochTimeWeightedNotional[:len(mt.epochTimeWeightedNotional)-1] + mt.epochTimeWeightedPosition = mt.epochTimeWeightedPosition[:len(mt.epochTimeWeightedPosition)-1] + mt.epochPartyM2M = mt.epochPartyM2M[:len(mt.epochPartyM2M)-1] + mt.epochPartyRealisedReturn = mt.epochPartyRealisedReturn[:len(mt.epochPartyRealisedReturn)-1] + mt.epochMakerFeesReceived = mt.epochMakerFeesReceived[:len(mt.epochMakerFeesReceived)-1] + mt.epochMakerFeesPaid = mt.epochMakerFeesPaid[:len(mt.epochMakerFeesPaid)-1] + mt.epochLpFees = mt.epochLpFees[:len(mt.epochLpFees)-1] + mt.epochTotalMakerFeesReceived = mt.epochTotalMakerFeesReceived[:len(mt.epochTotalMakerFeesReceived)-1] + mt.epochTotalMakerFeesPaid = mt.epochTotalMakerFeesPaid[:len(mt.epochTotalMakerFeesPaid)-1] + mt.epochTotalLpFees = mt.epochTotalLpFees[:len(mt.epochTotalLpFees)-1] + } + } + mat.takerFeesPaidInEpoch = mat.takerFeesPaidInEpoch[:len(mat.takerFeesPaidInEpoch)-1] + mat.partyContributionCache = map[string][]*types.PartyContributionScore{} +} + +func (mat *MarketActivityTracker) publishMetricForDispatchStrategy(ctx context.Context, ds *vega.DispatchStrategy, now time.Time) { + if ds.EntityScope == vega.EntityScope_ENTITY_SCOPE_INDIVIDUALS { + partyScores := mat.CalculateMetricForIndividuals(ctx, ds) + gs := events.NewPartyGameScoresEvent(ctx, int64(mat.currentEpoch), getGameID(ds), now, partyScores) + mat.broker.Send(gs) + } else { + teamScores, partyScores := mat.CalculateMetricForTeams(ctx, ds) + gs := events.NewTeamGameScoresEvent(ctx, int64(mat.currentEpoch), getGameID(ds), now, teamScores, partyScores) + mat.broker.Send(gs) + } +} + // AddValueTraded records the value of a trade done in the given market. func (mat *MarketActivityTracker) AddValueTraded(asset, marketID string, value *num.Uint) { markets, ok := mat.assetToMarketTrackers[asset] @@ -442,6 +496,15 @@ func (mat *MarketActivityTracker) clearDeletedMarkets() { } } +func (mt *marketTracker) calcFeesAtMilestone() { + mt.epochMakerFeesReceived = append(mt.epochMakerFeesReceived, mt.makerFeesReceived) + mt.epochMakerFeesPaid = append(mt.epochMakerFeesPaid, mt.makerFeesPaid) + mt.epochLpFees = append(mt.epochLpFees, mt.lpFees) + mt.epochTotalMakerFeesReceived = append(mt.epochTotalMakerFeesReceived, mt.totalMakerFeesReceived) + mt.epochTotalMakerFeesPaid = append(mt.epochTotalMakerFeesPaid, mt.totalMakerFeesPaid) + mt.epochTotalLpFees = append(mt.epochTotalLpFees, mt.totalLpFees) +} + // clearFeeActivity is called at the end of the epoch. It deletes markets that are pending to be removed and resets the fees paid for the epoch. func (mt *marketTracker) clearFeeActivity() { if len(mt.epochMakerFeesReceived) == maxWindowSize { @@ -599,12 +662,16 @@ func (mat *MarketActivityTracker) getPartiesInScope(ds *vega.DispatchStrategy) [ return parties } +func getGameID(ds *vega.DispatchStrategy) string { + p, _ := lproto.Marshal(ds) + return hex.EncodeToString(crypto.Hash(p)) +} + // CalculateMetricForIndividuals calculates the metric corresponding to the dispatch strategy and returns a slice of the contribution scores of the parties. // Markets in scope are the ones passed in the dispatch strategy if any or all available markets for the asset for metric. // Parties in scope depend on the `IndividualScope_INDIVIDUAL_SCOPE_IN_TEAM` and can include all parties, only those in teams, and only those not in teams. func (mat *MarketActivityTracker) CalculateMetricForIndividuals(ctx context.Context, ds *vega.DispatchStrategy) []*types.PartyContributionScore { - p, _ := lproto.Marshal(ds) - hash := hex.EncodeToString(crypto.Hash(p)) + hash := getGameID(ds) if pc, ok := mat.partyContributionCache[hash]; ok { return pc } @@ -612,7 +679,11 @@ func (mat *MarketActivityTracker) CalculateMetricForIndividuals(ctx context.Cont parties := mat.getPartiesInScope(ds) stakingRequirement, _ := num.UintFromString(ds.StakingRequirement, 10) notionalRequirement, _ := num.UintFromString(ds.NotionalTimeWeightedAveragePositionRequirement, 10) - partyContributions := mat.calculateMetricForIndividuals(ctx, ds.AssetForMetric, parties, ds.Markets, ds.Metric, stakingRequirement, notionalRequirement, int(ds.WindowLength), hash) + interval := int32(1) + if ds.TransferInterval != nil { + interval = *ds.TransferInterval + } + partyContributions := mat.calculateMetricForIndividuals(ctx, ds.AssetForMetric, parties, ds.Markets, ds.Metric, stakingRequirement, notionalRequirement, int(ds.WindowLength), hash, interval) // we do this calculation at the end of the epoch and clear it in the beginning of the next epoch, i.e. within the same block therefore it saves us // redundant calculation and has no snapshot implication @@ -623,6 +694,11 @@ func (mat *MarketActivityTracker) CalculateMetricForIndividuals(ctx context.Cont // CalculateMetricForTeams calculates the metric for teams and their respective team members for markets in scope of the dispatch strategy. func (mat *MarketActivityTracker) CalculateMetricForTeams(ctx context.Context, ds *vega.DispatchStrategy) ([]*types.PartyContributionScore, map[string][]*types.PartyContributionScore) { var teamMembers map[string][]string + interval := int32(1) + if ds.TransferInterval != nil { + interval = *ds.TransferInterval + } + paidFees := mat.GetLastEpochTakeFees(ds.AssetForMetric, ds.Markets, interval) if tsl := len(ds.TeamScope); tsl > 0 { teamMembers = make(map[string][]string, len(ds.TeamScope)) for _, team := range ds.TeamScope { @@ -638,53 +714,63 @@ func (mat *MarketActivityTracker) CalculateMetricForTeams(ctx context.Context, d p, _ := lproto.Marshal(ds) gameID := hex.EncodeToString(crypto.Hash(p)) - return mat.calculateMetricForTeams(ctx, ds.AssetForMetric, teamMembers, ds.Markets, ds.Metric, stakingRequirement, notionalRequirement, int(ds.WindowLength), topNDecimal, gameID) + return mat.calculateMetricForTeams(ctx, ds.AssetForMetric, teamMembers, ds.Markets, ds.Metric, stakingRequirement, notionalRequirement, int(ds.WindowLength), topNDecimal, gameID, paidFees) } -func (mat *MarketActivityTracker) isEligibleForReward(ctx context.Context, asset, party string, markets []string, minStakingBalanceRequired *num.Uint, notionalTimeWeightedAveragePositionRequired *num.Uint, gameID string) bool { - if !minStakingBalanceRequired.IsZero() { - balance, err := mat.balanceChecker.GetAvailableBalance(party) - if err != nil || balance.LT(minStakingBalanceRequired) { - return false +func (mat *MarketActivityTracker) isEligibleForReward(ctx context.Context, asset, party string, markets []string, minStakingBalanceRequired *num.Uint, notionalTimeWeightedAveragePositionRequired *num.Uint, gameID string) (bool, *num.Uint, *num.Uint) { + eligiblByBalance := true + eligibleByNotional := true + var balance, notional *num.Uint + var err error + + balance, err = mat.balanceChecker.GetAvailableBalance(party) + if err != nil || balance.LT(minStakingBalanceRequired) { + eligiblByBalance = false + if balance == nil { + balance = num.UintZero() } } - if !notionalTimeWeightedAveragePositionRequired.IsZero() { - notional := mat.getTWNotionalPosition(asset, party, markets) - mat.broker.Send(events.NewTimeWeightedNotionalPositionUpdated(ctx, mat.currentEpoch, asset, party, gameID, notional.String())) - if notional.LT(notionalTimeWeightedAveragePositionRequired) { - return false - } + + notional = mat.getTWNotionalPosition(asset, party, markets) + mat.broker.Send(events.NewTimeWeightedNotionalPositionUpdated(ctx, mat.currentEpoch, asset, party, gameID, notional.String())) + if notional.LT(notionalTimeWeightedAveragePositionRequired) { + eligibleByNotional = false } - return true + + isEligible := (eligiblByBalance || minStakingBalanceRequired.IsZero()) && (eligibleByNotional || notionalTimeWeightedAveragePositionRequired.IsZero()) + return isEligible, balance, notional } -func (mat *MarketActivityTracker) calculateMetricForIndividuals(ctx context.Context, asset string, parties []string, markets []string, metric vega.DispatchMetric, minStakingBalanceRequired *num.Uint, notionalTimeWeightedAveragePositionRequired *num.Uint, windowSize int, gameID string) []*types.PartyContributionScore { +func (mat *MarketActivityTracker) calculateMetricForIndividuals(ctx context.Context, asset string, parties []string, markets []string, metric vega.DispatchMetric, minStakingBalanceRequired *num.Uint, notionalTimeWeightedAveragePositionRequired *num.Uint, windowSize int, gameID string, interval int32) []*types.PartyContributionScore { ret := make([]*types.PartyContributionScore, 0, len(parties)) + paidFees := mat.GetLastEpochTakeFees(asset, markets, interval) for _, party := range parties { - if !mat.isEligibleForReward(ctx, asset, party, markets, minStakingBalanceRequired, notionalTimeWeightedAveragePositionRequired, gameID) { + eligible, balance, notional := mat.isEligibleForReward(ctx, asset, party, markets, minStakingBalanceRequired, notionalTimeWeightedAveragePositionRequired, gameID) + if !eligible { + ret = append(ret, &types.PartyContributionScore{Party: party, Score: num.DecimalZero(), IsEligible: eligible, StakingBalance: balance, OpenVolume: notional, TotalFeesPaid: paidFees[party], RankingIndex: -1}) continue } score, ok := mat.calculateMetricForParty(asset, party, markets, metric, windowSize) if !ok { + ret = append(ret, &types.PartyContributionScore{Party: party, Score: num.DecimalZero(), IsEligible: false, StakingBalance: balance, OpenVolume: notional, TotalFeesPaid: paidFees[party], RankingIndex: -1}) continue } - ret = append(ret, &types.PartyContributionScore{Party: party, Score: score}) + ret = append(ret, &types.PartyContributionScore{Party: party, Score: score, IsEligible: true, StakingBalance: balance, OpenVolume: notional, TotalFeesPaid: paidFees[party], RankingIndex: -1}) } return ret } // CalculateMetricForTeams returns a slice of metrics for the team and a slice of metrics for each team member. -func (mat *MarketActivityTracker) calculateMetricForTeams(ctx context.Context, asset string, teams map[string][]string, marketsInScope []string, metric vega.DispatchMetric, minStakingBalanceRequired *num.Uint, notionalTimeWeightedAveragePositionRequired *num.Uint, windowSize int, topN num.Decimal, gameID string) ([]*types.PartyContributionScore, map[string][]*types.PartyContributionScore) { +func (mat *MarketActivityTracker) calculateMetricForTeams(ctx context.Context, asset string, teams map[string][]string, marketsInScope []string, metric vega.DispatchMetric, minStakingBalanceRequired *num.Uint, notionalTimeWeightedAveragePositionRequired *num.Uint, windowSize int, topN num.Decimal, gameID string, paidFees map[string]*num.Uint) ([]*types.PartyContributionScore, map[string][]*types.PartyContributionScore) { teamScores := make([]*types.PartyContributionScore, 0, len(teams)) teamKeys := make([]string, 0, len(teams)) for k := range teams { teamKeys = append(teamKeys, k) } sort.Strings(teamKeys) - ps := make(map[string][]*types.PartyContributionScore, len(teamScores)) for _, t := range teamKeys { - ts, teamMemberScores := mat.calculateMetricForTeam(ctx, asset, teams[t], marketsInScope, metric, minStakingBalanceRequired, notionalTimeWeightedAveragePositionRequired, windowSize, topN, gameID) + ts, teamMemberScores := mat.calculateMetricForTeam(ctx, asset, teams[t], marketsInScope, metric, minStakingBalanceRequired, notionalTimeWeightedAveragePositionRequired, windowSize, topN, gameID, paidFees) if ts.IsZero() { continue } @@ -696,8 +782,8 @@ func (mat *MarketActivityTracker) calculateMetricForTeams(ctx context.Context, a } // calculateMetricForTeam returns the metric score for team and a slice of the score for each of its members. -func (mat *MarketActivityTracker) calculateMetricForTeam(ctx context.Context, asset string, parties []string, marketsInScope []string, metric vega.DispatchMetric, minStakingBalanceRequired *num.Uint, notionalTimeWeightedAveragePositionRequired *num.Uint, windowSize int, topN num.Decimal, gameID string) (num.Decimal, []*types.PartyContributionScore) { - return calculateMetricForTeamUtil(ctx, asset, parties, marketsInScope, metric, minStakingBalanceRequired, notionalTimeWeightedAveragePositionRequired, windowSize, topN, mat.isEligibleForReward, mat.calculateMetricForParty, gameID) +func (mat *MarketActivityTracker) calculateMetricForTeam(ctx context.Context, asset string, parties []string, marketsInScope []string, metric vega.DispatchMetric, minStakingBalanceRequired *num.Uint, notionalTimeWeightedAveragePositionRequired *num.Uint, windowSize int, topN num.Decimal, gameID string, paidFees map[string]*num.Uint) (num.Decimal, []*types.PartyContributionScore) { + return calculateMetricForTeamUtil(ctx, asset, parties, marketsInScope, metric, minStakingBalanceRequired, notionalTimeWeightedAveragePositionRequired, windowSize, topN, mat.isEligibleForReward, mat.calculateMetricForParty, gameID, paidFees) } func calculateMetricForTeamUtil(ctx context.Context, @@ -709,17 +795,24 @@ func calculateMetricForTeamUtil(ctx context.Context, notionalTimeWeightedAveragePositionRequired *num.Uint, windowSize int, topN num.Decimal, - isEligibleForReward func(ctx context.Context, asset, party string, markets []string, minStakingBalanceRequired *num.Uint, notionalTimeWeightedAveragePositionRequired *num.Uint, gameID string) bool, + isEligibleForReward func(ctx context.Context, asset, party string, markets []string, minStakingBalanceRequired *num.Uint, notionalTimeWeightedAveragePositionRequired *num.Uint, gameID string) (bool, *num.Uint, *num.Uint), calculateMetricForParty func(asset, party string, marketsInScope []string, metric vega.DispatchMetric, windowSize int) (num.Decimal, bool), gameID string, + paidFees map[string]*num.Uint, ) (num.Decimal, []*types.PartyContributionScore) { teamPartyScores := []*types.PartyContributionScore{} + eligibleTeamPartyScores := []*types.PartyContributionScore{} for _, party := range parties { - if !isEligibleForReward(ctx, asset, party, marketsInScope, minStakingBalanceRequired, notionalTimeWeightedAveragePositionRequired, gameID) { + eligible, balance, notional := isEligibleForReward(ctx, asset, party, marketsInScope, minStakingBalanceRequired, notionalTimeWeightedAveragePositionRequired, gameID) + if !eligible { + teamPartyScores = append(teamPartyScores, &types.PartyContributionScore{Party: party, Score: num.DecimalZero(), IsEligible: eligible, StakingBalance: balance, OpenVolume: notional, TotalFeesPaid: paidFees[party], RankingIndex: -1}) continue } if score, ok := calculateMetricForParty(asset, party, marketsInScope, metric, windowSize); ok { - teamPartyScores = append(teamPartyScores, &types.PartyContributionScore{Party: party, Score: score}) + teamPartyScores = append(teamPartyScores, &types.PartyContributionScore{Party: party, Score: score, IsEligible: eligible, StakingBalance: balance, OpenVolume: notional, TotalFeesPaid: paidFees[party], RankingIndex: -1}) + eligibleTeamPartyScores = append(eligibleTeamPartyScores, &types.PartyContributionScore{Party: party, Score: score, IsEligible: eligible, StakingBalance: balance, OpenVolume: notional, TotalFeesPaid: paidFees[party], RankingIndex: -1}) + } else { + teamPartyScores = append(teamPartyScores, &types.PartyContributionScore{Party: party, Score: num.DecimalZero(), IsEligible: false, StakingBalance: balance, OpenVolume: notional, TotalFeesPaid: paidFees[party], RankingIndex: -1}) } } @@ -727,17 +820,29 @@ func calculateMetricForTeamUtil(ctx context.Context, return num.DecimalZero(), []*types.PartyContributionScore{} } + sort.Slice(eligibleTeamPartyScores, func(i, j int) bool { + return eligibleTeamPartyScores[i].Score.GreaterThan(eligibleTeamPartyScores[j].Score) + }) + sort.Slice(teamPartyScores, func(i, j int) bool { return teamPartyScores[i].Score.GreaterThan(teamPartyScores[j].Score) }) + lastUsed := int64(1) + for _, tps := range teamPartyScores { + if tps.IsEligible { + tps.RankingIndex = lastUsed + lastUsed += 1 + } + } + maxIndex := int(topN.Mul(num.DecimalFromInt64(int64(len(parties)))).IntPart()) // ensure non-zero, otherwise we have a divide-by-zero panic on our hands if maxIndex == 0 { maxIndex = 1 } - if len(teamPartyScores) < maxIndex { - maxIndex = len(teamPartyScores) + if len(eligibleTeamPartyScores) < maxIndex { + maxIndex = len(eligibleTeamPartyScores) } if maxIndex == 0 { return num.DecimalZero(), teamPartyScores @@ -745,7 +850,7 @@ func calculateMetricForTeamUtil(ctx context.Context, total := num.DecimalZero() for i := 0; i < maxIndex; i++ { - total = total.Add(teamPartyScores[i].Score) + total = total.Add(eligibleTeamPartyScores[i].Score) } return total.Div(num.DecimalFromInt64(int64(maxIndex))), teamPartyScores @@ -975,6 +1080,18 @@ func updateNotional(n *twNotional, notional *num.Uint, t, tn int64, time time.Ti n.t = time } +func calcNotionalAt(n *twNotional, t, tn int64) *num.Uint { + tnOverT := num.UintZero() + tnOverTComp := uScalingFactor.Clone() + if t != 0 { + tnOverT = num.NewUint(uint64(tn / t)) + tnOverTComp = tnOverTComp.Sub(tnOverTComp, tnOverT) + } + p1 := num.UintZero().Mul(n.currentEpochTWNotional, tnOverTComp) + p2 := num.UintZero().Mul(n.notional, tnOverT) + return num.UintZero().Div(p1.AddSum(p2), uScalingFactor) +} + // recordNotional tracks the time weighted average notional for the party per market. // notional = abs(position) x price / position_factor // price in asset decimals. @@ -1007,6 +1124,16 @@ func (mt *marketTracker) processNotionalEndOfEpoch(epochStartTime time.Time, end mt.epochTimeWeightedNotional = append(mt.epochTimeWeightedNotional, m) } +func (mt *marketTracker) processNotionalAtMilestone(epochStartTime time.Time, milestoneTime time.Time) { + t := int64(milestoneTime.Sub(epochStartTime).Seconds()) + m := make(map[string]*num.Uint, len(mt.twNotional)) + for party, twNotional := range mt.twNotional { + tn := int64(milestoneTime.Sub(twNotional.t).Seconds()) * scalingFactor + m[party] = calcNotionalAt(twNotional, t, tn) + } + mt.epochTimeWeightedNotional = append(mt.epochTimeWeightedNotional, m) +} + func (mat *MarketActivityTracker) getTWNotionalPosition(asset, party string, markets []string) *num.Uint { total := num.UintZero() mkts := markets @@ -1038,6 +1165,14 @@ func updatePosition(toi *twPosition, scaledAbsPos uint64, t, tn int64, time time toi.t = time } +func calculatePositionAt(toi *twPosition, t, tn int64) uint64 { + tnOverT := uint64(0) + if t != 0 { + tnOverT = uint64(tn / t) + } + return (toi.currentEpochTWPosition*(u64ScalingFactor-tnOverT) + (toi.position * tnOverT)) / u64ScalingFactor +} + // recordPosition records the current position of a party and the time of change. If there is a previous position then it is time weight updated with respect to the time // it has been in place during the epoch. func (mt *marketTracker) recordPosition(party string, absPos uint64, positionFactor num.Decimal, time time.Time, epochStartTime time.Time) { @@ -1085,6 +1220,16 @@ func (mt *marketTracker) processPositionEndOfEpoch(epochStartTime time.Time, end } } +func (mt *marketTracker) processPositionAtMilestone(epochStartTime time.Time, milestoneTime time.Time) { + t := int64(milestoneTime.Sub(epochStartTime).Seconds()) + m := make(map[string]uint64, len(mt.twPosition)) + for party, toi := range mt.twPosition { + tn := int64(milestoneTime.Sub(toi.t).Seconds()) * scalingFactor + m[party] = calculatePositionAt(toi, t, tn) + } + mt.epochTimeWeightedPosition = append(mt.epochTimeWeightedPosition, m) +} + // //// return metric ////// // recordM2M records the amount corresponding to mark to market (profit or loss). @@ -1144,6 +1289,25 @@ func (mt *marketTracker) processM2MEndOfEpoch() { mt.epochPartyM2M = append(mt.epochPartyM2M, m) } +func (mt *marketTracker) processM2MAtMilestone() { + m := map[string]num.Decimal{} + for party, m2m := range mt.partyM2M { + if _, ok := mt.twPosition[party]; !ok { + continue + } + p := mt.epochTimeWeightedPosition[len(mt.epochTimeWeightedPosition)-1][party] + + var v num.Decimal + if p == 0 { + v = num.DecimalZero() + } else { + v = m2m.Div(num.DecimalFromInt64(int64(p)).Div(dScalingFactor)) + } + m[party] = v + } + mt.epochPartyM2M = append(mt.epochPartyM2M, m) +} + // processPartyRealisedReturnOfEpoch is called at the end of the epoch to reset the running total for the next epoch and record the total m2m in the ended epoch. func (mt *marketTracker) processPartyRealisedReturnOfEpoch() { m := map[string]num.Decimal{} @@ -1157,6 +1321,14 @@ func (mt *marketTracker) processPartyRealisedReturnOfEpoch() { mt.partyRealisedReturn = map[string]decimal.Decimal{} } +func (mt *marketTracker) processPartyRealisedReturnAtMilestone() { + m := map[string]num.Decimal{} + for party, realised := range mt.partyRealisedReturn { + m[party] = realised + } + mt.epochPartyRealisedReturn = append(mt.epochPartyRealisedReturn, m) +} + // getReturns returns a slice of the total of the party's return by epoch in the given window. func (mt *marketTracker) getReturns(party string, windowSize int) ([]*num.Decimal, bool) { returns := make([]*num.Decimal, windowSize) diff --git a/core/execution/common/market_activity_tracker_internal_test.go b/core/execution/common/market_activity_tracker_internal_test.go index d37dba4f6e0..1e4c68d7e7a 100644 --- a/core/execution/common/market_activity_tracker_internal_test.go +++ b/core/execution/common/market_activity_tracker_internal_test.go @@ -346,6 +346,7 @@ func TestCalculateMetricForIndividualsAvePosition(t *testing.T) { balanceChecker := mocks.NewMockAccountBalanceChecker(ctrl) broker := bmocks.NewMockBroker(ctrl) broker.EXPECT().SendBatch(gomock.Any()).AnyTimes() + broker.EXPECT().Send(gomock.Any()).AnyTimes() tracker := NewMarketActivityTracker(logging.NewTestLogger(), teams, balanceChecker, broker) epochService.NotifyOnEpoch(tracker.OnEpochEvent, tracker.OnEpochRestore) tracker.SetEligibilityChecker(&DummyEligibilityChecker{}) @@ -374,7 +375,8 @@ func TestCalculateMetricForIndividualsAvePosition(t *testing.T) { epochService.target(context.Background(), types.Epoch{Seq: 1, Action: vgproto.EpochAction_EPOCH_ACTION_END, StartTime: time.Unix(0, 0), EndTime: time.Unix(60, 0)}) // get metrics for market m1 with window size=1 - metrics := tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m1"}, vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, num.UintZero(), num.UintZero(), 1, gameID) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.NewUint(0), nil).Times(2) + metrics := tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m1"}, vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, num.UintZero(), num.UintZero(), 1, gameID, 1) require.Equal(t, 2, len(metrics)) require.Equal(t, "p1", metrics[0].Party) require.Equal(t, "p2", metrics[1].Party) @@ -382,15 +384,17 @@ func TestCalculateMetricForIndividualsAvePosition(t *testing.T) { require.Equal(t, "75", metrics[1].Score.String()) // get metrics for market m2 with window size=1 - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m2"}, vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, num.UintZero(), num.UintZero(), 1, gameID) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.NewUint(0), nil).Times(2) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m2"}, vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, num.UintZero(), num.UintZero(), 1, gameID, 1) require.Equal(t, 2, len(metrics)) require.Equal(t, "p1", metrics[0].Party) require.Equal(t, "p2", metrics[1].Party) require.Equal(t, "13.333332", metrics[0].Score.String()) require.Equal(t, "116.66666", metrics[1].Score.String()) - // get metrics for market m2 with window size=1 - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m3"}, vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, num.UintZero(), num.UintZero(), 1, gameID) + // get metrics for market m3 with window size=1 + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.NewUint(0), nil).Times(2) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m3"}, vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, num.UintZero(), num.UintZero(), 1, gameID, 1) require.Equal(t, 2, len(metrics)) require.Equal(t, "p1", metrics[0].Party) require.Equal(t, "p2", metrics[1].Party) @@ -398,7 +402,8 @@ func TestCalculateMetricForIndividualsAvePosition(t *testing.T) { require.Equal(t, "75", metrics[1].Score.String()) // get metrics for market m1,m2 with window size=1 - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m1", "m2"}, vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, num.UintZero(), num.UintZero(), 1, gameID) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.NewUint(0), nil).Times(2) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m1", "m2"}, vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, num.UintZero(), num.UintZero(), 1, gameID, 1) require.Equal(t, 2, len(metrics)) require.Equal(t, "p1", metrics[0].Party) require.Equal(t, "p2", metrics[1].Party) @@ -406,7 +411,8 @@ func TestCalculateMetricForIndividualsAvePosition(t *testing.T) { require.Equal(t, "191.66666", metrics[1].Score.String()) // get metrics for all market window size=1 - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{}, vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, num.UintZero(), num.UintZero(), 1, gameID) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.NewUint(0), nil).Times(2) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{}, vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, num.UintZero(), num.UintZero(), 1, gameID, 1) require.Equal(t, 2, len(metrics)) require.Equal(t, "p1", metrics[0].Party) require.Equal(t, "p2", metrics[1].Party) @@ -423,7 +429,8 @@ func TestCalculateMetricForIndividualsAvePosition(t *testing.T) { epochService.target(context.Background(), types.Epoch{Seq: 2, Action: vgproto.EpochAction_EPOCH_ACTION_END, StartTime: time.Unix(60, 0), EndTime: time.Unix(120, 0)}) // get metrics for market m1 with window size=1 - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m1"}, vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, num.UintZero(), num.UintZero(), 1, gameID) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.NewUint(0), nil).Times(2) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m1"}, vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, num.UintZero(), num.UintZero(), 1, gameID, 1) require.Equal(t, 2, len(metrics)) require.Equal(t, "p1", metrics[0].Party) require.Equal(t, "p2", metrics[1].Party) @@ -431,7 +438,8 @@ func TestCalculateMetricForIndividualsAvePosition(t *testing.T) { require.Equal(t, "100", metrics[1].Score.String()) // get metrics for market m2 with window size=1 - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m2"}, vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, num.UintZero(), num.UintZero(), 1, gameID) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.NewUint(0), nil).Times(2) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m2"}, vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, num.UintZero(), num.UintZero(), 1, gameID, 1) require.Equal(t, 2, len(metrics)) require.Equal(t, "p1", metrics[0].Party) require.Equal(t, "p2", metrics[1].Party) @@ -439,7 +447,8 @@ func TestCalculateMetricForIndividualsAvePosition(t *testing.T) { require.Equal(t, "57.5", metrics[1].Score.String()) // get metrics for market m2 with window size=1 - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m3"}, vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, num.UintZero(), num.UintZero(), 1, gameID) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.NewUint(0), nil).Times(2) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m3"}, vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, num.UintZero(), num.UintZero(), 1, gameID, 1) require.Equal(t, 2, len(metrics)) require.Equal(t, "p1", metrics[0].Party) require.Equal(t, "p2", metrics[1].Party) @@ -447,7 +456,8 @@ func TestCalculateMetricForIndividualsAvePosition(t *testing.T) { require.Equal(t, "300", metrics[1].Score.String()) // get metrics for market m1,m2 with window size=1 - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m1", "m2"}, vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, num.UintZero(), num.UintZero(), 1, gameID) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.NewUint(0), nil).Times(2) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m1", "m2"}, vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, num.UintZero(), num.UintZero(), 1, gameID, 1) require.Equal(t, 2, len(metrics)) require.Equal(t, "p1", metrics[0].Party) require.Equal(t, "p2", metrics[1].Party) @@ -455,7 +465,8 @@ func TestCalculateMetricForIndividualsAvePosition(t *testing.T) { require.Equal(t, "157.5", metrics[1].Score.String()) // get metrics for all market window size=1 - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{}, vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, num.UintZero(), num.UintZero(), 1, gameID) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.NewUint(0), nil).Times(2) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{}, vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, num.UintZero(), num.UintZero(), 1, gameID, 1) require.Equal(t, 2, len(metrics)) require.Equal(t, "p1", metrics[0].Party) require.Equal(t, "p2", metrics[1].Party) @@ -464,7 +475,8 @@ func TestCalculateMetricForIndividualsAvePosition(t *testing.T) { // calc with window size = 2 // get metrics for market m1 with window size=2 - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m1"}, vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, num.UintZero(), num.UintZero(), 2, gameID) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.NewUint(0), nil).Times(2) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m1"}, vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, num.UintZero(), num.UintZero(), 2, gameID, 1) require.Equal(t, 2, len(metrics)) require.Equal(t, "p1", metrics[0].Party) require.Equal(t, "p2", metrics[1].Party) @@ -472,7 +484,8 @@ func TestCalculateMetricForIndividualsAvePosition(t *testing.T) { require.Equal(t, "87.5", metrics[1].Score.String()) // get metrics for market m2 with window size=2 - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m2"}, vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, num.UintZero(), num.UintZero(), 2, gameID) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.NewUint(0), nil).Times(2) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m2"}, vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, num.UintZero(), num.UintZero(), 2, gameID, 1) require.Equal(t, 2, len(metrics)) require.Equal(t, "p1", metrics[0].Party) require.Equal(t, "p2", metrics[1].Party) @@ -480,7 +493,8 @@ func TestCalculateMetricForIndividualsAvePosition(t *testing.T) { require.Equal(t, "87.08333", metrics[1].Score.String()) // get metrics for market m2 with window size=2 - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m3"}, vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, num.UintZero(), num.UintZero(), 2, gameID) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.NewUint(0), nil).Times(2) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m3"}, vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, num.UintZero(), num.UintZero(), 2, gameID, 1) require.Equal(t, 2, len(metrics)) require.Equal(t, "p1", metrics[0].Party) require.Equal(t, "p2", metrics[1].Party) @@ -488,7 +502,8 @@ func TestCalculateMetricForIndividualsAvePosition(t *testing.T) { require.Equal(t, "187.5", metrics[1].Score.String()) // get metrics for market m1,m2 with window size=2 - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m1", "m2"}, vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, num.UintZero(), num.UintZero(), 2, gameID) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.NewUint(0), nil).Times(2) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m1", "m2"}, vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, num.UintZero(), num.UintZero(), 2, gameID, 1) require.Equal(t, 2, len(metrics)) require.Equal(t, "p1", metrics[0].Party) require.Equal(t, "p2", metrics[1].Party) @@ -496,7 +511,8 @@ func TestCalculateMetricForIndividualsAvePosition(t *testing.T) { require.Equal(t, "174.58333", metrics[1].Score.String()) // get metrics for all market window size=2 - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{}, vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, num.UintZero(), num.UintZero(), 2, gameID) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.NewUint(0), nil).Times(2) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{}, vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, num.UintZero(), num.UintZero(), 2, gameID, 1) require.Equal(t, 2, len(metrics)) require.Equal(t, "p1", metrics[0].Party) require.Equal(t, "p2", metrics[1].Party) @@ -506,16 +522,24 @@ func TestCalculateMetricForIndividualsAvePosition(t *testing.T) { // now make p2 not eligible via not having sufficient governance token balanceChecker.EXPECT().GetAvailableBalance("p1").Return(num.NewUint(2), nil).Times(1) balanceChecker.EXPECT().GetAvailableBalance("p2").Return(nil, errors.New("some error")).Times(1) - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{}, vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, num.NewUint(1), num.UintZero(), 2, gameID) - require.Equal(t, 1, len(metrics)) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{}, vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, num.NewUint(1), num.UintZero(), 2, gameID, 1) + require.Equal(t, 2, len(metrics)) require.Equal(t, "p1", metrics[0].Party) + require.Equal(t, "p2", metrics[1].Party) + require.Equal(t, false, metrics[1].IsEligible) + require.Equal(t, "0", metrics[1].StakingBalance.String()) // repeat now p2 has balance just not enough balanceChecker.EXPECT().GetAvailableBalance("p1").Return(num.NewUint(2), nil).Times(1) balanceChecker.EXPECT().GetAvailableBalance("p2").Return(num.NewUint(1), nil).Times(1) - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{}, vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, num.NewUint(2), num.UintZero(), 2, gameID) - require.Equal(t, 1, len(metrics)) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{}, vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, num.NewUint(2), num.UintZero(), 2, gameID, 1) + require.Equal(t, 2, len(metrics)) require.Equal(t, "p1", metrics[0].Party) + require.Equal(t, "2", metrics[0].StakingBalance.String()) + require.Equal(t, true, metrics[0].IsEligible) + require.Equal(t, "p2", metrics[1].Party) + require.Equal(t, false, metrics[1].IsEligible) + require.Equal(t, "1", metrics[1].StakingBalance.String()) } func TestCalculateMetricForPartyAvePosition(t *testing.T) { @@ -761,6 +785,7 @@ func TestCalculateMetricForIndividualReturnVolatility(t *testing.T) { teams := mocks.NewMockTeams(ctrl) balanceChecker := mocks.NewMockAccountBalanceChecker(ctrl) broker := bmocks.NewMockBroker(ctrl) + broker.EXPECT().Send(gomock.Any()).AnyTimes() broker.EXPECT().SendBatch(gomock.Any()).AnyTimes() tracker := NewMarketActivityTracker(logging.NewTestLogger(), teams, balanceChecker, broker) epochService.NotifyOnEpoch(tracker.OnEpochEvent, tracker.OnEpochRestore) @@ -805,29 +830,64 @@ func TestCalculateMetricForIndividualReturnVolatility(t *testing.T) { gameID := "game123" // get metrics for market m1 with window size=1 - metrics := tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m1"}, vgproto.DispatchMetric_DISPATCH_METRIC_RETURN_VOLATILITY, num.UintZero(), num.UintZero(), 1, gameID) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.UintZero(), nil).Times(2) + metrics := tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m1"}, vgproto.DispatchMetric_DISPATCH_METRIC_RETURN_VOLATILITY, num.UintZero(), num.UintZero(), 1, gameID, 1) // only one sample (window size=1) variance=0 by definition - require.Equal(t, 0, len(metrics)) + require.Equal(t, 2, len(metrics)) + require.Equal(t, false, metrics[0].IsEligible) + require.Equal(t, "p1", metrics[0].Party) + require.Equal(t, "0", metrics[0].Score.String()) + require.Equal(t, false, metrics[1].IsEligible) + require.Equal(t, "p2", metrics[1].Party) + require.Equal(t, "0", metrics[1].Score.String()) // get metrics for market m2 with window size=1 - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m2"}, vgproto.DispatchMetric_DISPATCH_METRIC_RETURN_VOLATILITY, num.UintZero(), num.UintZero(), 1, gameID) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.UintZero(), nil).Times(2) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m2"}, vgproto.DispatchMetric_DISPATCH_METRIC_RETURN_VOLATILITY, num.UintZero(), num.UintZero(), 1, gameID, 1) // only one sample (window size=1) variance=0 by definition - require.Equal(t, 0, len(metrics)) + require.Equal(t, 2, len(metrics)) + require.Equal(t, false, metrics[0].IsEligible) + require.Equal(t, "p1", metrics[0].Party) + require.Equal(t, "0", metrics[0].Score.String()) + require.Equal(t, false, metrics[1].IsEligible) + require.Equal(t, "p2", metrics[1].Party) + require.Equal(t, "0", metrics[1].Score.String()) // get metrics for market m3 with window size=1 - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m3"}, vgproto.DispatchMetric_DISPATCH_METRIC_RETURN_VOLATILITY, num.UintZero(), num.UintZero(), 1, gameID) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.UintZero(), nil).Times(2) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m3"}, vgproto.DispatchMetric_DISPATCH_METRIC_RETURN_VOLATILITY, num.UintZero(), num.UintZero(), 1, gameID, 1) // only one sample (window size=1) variance=0 by definition - require.Equal(t, 0, len(metrics)) + require.Equal(t, 2, len(metrics)) + require.Equal(t, false, metrics[0].IsEligible) + require.Equal(t, "p1", metrics[0].Party) + require.Equal(t, "0", metrics[0].Score.String()) + require.Equal(t, false, metrics[1].IsEligible) + require.Equal(t, "p2", metrics[1].Party) + require.Equal(t, "0", metrics[1].Score.String()) // get metrics for market m1,m2 with window size=1 - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m1", "m2"}, vgproto.DispatchMetric_DISPATCH_METRIC_RETURN_VOLATILITY, num.UintZero(), num.UintZero(), 1, gameID) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.UintZero(), nil).Times(2) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m1", "m2"}, vgproto.DispatchMetric_DISPATCH_METRIC_RETURN_VOLATILITY, num.UintZero(), num.UintZero(), 1, gameID, 1) // only one sample (window size=1) variance=0 by definition - require.Equal(t, 0, len(metrics)) + require.Equal(t, 2, len(metrics)) + require.Equal(t, false, metrics[0].IsEligible) + require.Equal(t, "p1", metrics[0].Party) + require.Equal(t, "0", metrics[0].Score.String()) + require.Equal(t, false, metrics[1].IsEligible) + require.Equal(t, "p2", metrics[1].Party) + require.Equal(t, "0", metrics[1].Score.String()) // get metrics for all market window size=1 - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{}, vgproto.DispatchMetric_DISPATCH_METRIC_RETURN_VOLATILITY, num.UintZero(), num.UintZero(), 1, gameID) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.UintZero(), nil).Times(2) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{}, vgproto.DispatchMetric_DISPATCH_METRIC_RETURN_VOLATILITY, num.UintZero(), num.UintZero(), 1, gameID, 1) // only one sample (window size=1) variance=0 by definition - require.Equal(t, 0, len(metrics)) + require.Equal(t, 2, len(metrics)) + require.Equal(t, false, metrics[0].IsEligible) + require.Equal(t, "p1", metrics[0].Party) + require.Equal(t, "0", metrics[0].Score.String()) + require.Equal(t, false, metrics[1].IsEligible) + require.Equal(t, "p2", metrics[1].Party) + require.Equal(t, "0", metrics[1].Score.String()) // // start epoch2 epochService.target(context.Background(), types.Epoch{Seq: 2, Action: vgproto.EpochAction_EPOCH_ACTION_START, StartTime: time.Unix(60, 0)}) @@ -848,14 +908,19 @@ func TestCalculateMetricForIndividualReturnVolatility(t *testing.T) { // calc with window size = 2 // get metrics for market m1 with window size=2 - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m1"}, vgproto.DispatchMetric_DISPATCH_METRIC_RETURN_VOLATILITY, num.UintZero(), num.UintZero(), 2, gameID) - require.Equal(t, 1, len(metrics)) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.UintZero(), nil).Times(2) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m1"}, vgproto.DispatchMetric_DISPATCH_METRIC_RETURN_VOLATILITY, num.UintZero(), num.UintZero(), 2, gameID, 1) + require.Equal(t, 2, len(metrics)) require.Equal(t, "p1", metrics[0].Party) // variance(3, 9.8181825322314569) => 11.6219032607065405 => 1/11.6219032607065405 = 0.08604442642 require.Equal(t, "0.086044426422046", metrics[0].Score.String()) + require.Equal(t, false, metrics[1].IsEligible) + require.Equal(t, "p2", metrics[1].Party) + require.Equal(t, "0", metrics[1].Score.String()) // get metrics for market m2 with window size=2 - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m2"}, vgproto.DispatchMetric_DISPATCH_METRIC_RETURN_VOLATILITY, num.UintZero(), num.UintZero(), 2, gameID) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.UintZero(), nil).Times(2) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m2"}, vgproto.DispatchMetric_DISPATCH_METRIC_RETURN_VOLATILITY, num.UintZero(), num.UintZero(), 2, gameID, 1) require.Equal(t, 2, len(metrics)) require.Equal(t, "p1", metrics[0].Party) require.Equal(t, "0.2214532481172412", metrics[0].Score.String()) @@ -863,11 +928,19 @@ func TestCalculateMetricForIndividualReturnVolatility(t *testing.T) { require.Equal(t, "85.1257359604949139", metrics[1].Score.String()) // get metrics for market m3 with window size=2 - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m3"}, vgproto.DispatchMetric_DISPATCH_METRIC_RETURN_VOLATILITY, num.UintZero(), num.UintZero(), 2, gameID) - require.Equal(t, 0, len(metrics)) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.UintZero(), nil).Times(2) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m3"}, vgproto.DispatchMetric_DISPATCH_METRIC_RETURN_VOLATILITY, num.UintZero(), num.UintZero(), 2, gameID, 1) + require.Equal(t, 2, len(metrics)) + require.Equal(t, false, metrics[0].IsEligible) + require.Equal(t, "p1", metrics[0].Party) + require.Equal(t, "0", metrics[0].Score.String()) + require.Equal(t, false, metrics[1].IsEligible) + require.Equal(t, "p2", metrics[1].Party) + require.Equal(t, "0", metrics[1].Score.String()) // get metrics for market m1,m2 with window size=2 - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m1", "m2"}, vgproto.DispatchMetric_DISPATCH_METRIC_RETURN_VOLATILITY, num.UintZero(), num.UintZero(), 2, gameID) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.UintZero(), nil).Times(2) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m1", "m2"}, vgproto.DispatchMetric_DISPATCH_METRIC_RETURN_VOLATILITY, num.UintZero(), num.UintZero(), 2, gameID, 1) require.Equal(t, 2, len(metrics)) require.Equal(t, "p1", metrics[0].Party) // variance(2.5, 13.5681829072314944) = 30.6261682169828538 => 0.03265181569 @@ -876,7 +949,8 @@ func TestCalculateMetricForIndividualReturnVolatility(t *testing.T) { require.Equal(t, "574.5715725244936759", metrics[1].Score.String()) // get metrics for all market window size=2 - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{}, vgproto.DispatchMetric_DISPATCH_METRIC_RETURN_VOLATILITY, num.UintZero(), num.UintZero(), 2, gameID) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.UintZero(), nil).Times(2) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{}, vgproto.DispatchMetric_DISPATCH_METRIC_RETURN_VOLATILITY, num.UintZero(), num.UintZero(), 2, gameID, 1) require.Equal(t, 2, len(metrics)) require.Equal(t, "p1", metrics[0].Party) require.Equal(t, "p2", metrics[1].Party) @@ -888,16 +962,26 @@ func TestCalculateMetricForIndividualReturnVolatility(t *testing.T) { // now make p2 not eligible via not having sufficient governance token balanceChecker.EXPECT().GetAvailableBalance("p1").Return(num.NewUint(2), nil).Times(1) balanceChecker.EXPECT().GetAvailableBalance("p2").Return(nil, errors.New("some error")).Times(1) - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{}, vgproto.DispatchMetric_DISPATCH_METRIC_RETURN_VOLATILITY, num.NewUint(1), num.UintZero(), 2, gameID) - require.Equal(t, 1, len(metrics)) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{}, vgproto.DispatchMetric_DISPATCH_METRIC_RETURN_VOLATILITY, num.NewUint(1), num.UintZero(), 2, gameID, 1) + require.Equal(t, 2, len(metrics)) require.Equal(t, "p1", metrics[0].Party) + require.Equal(t, "p2", metrics[1].Party) + require.Equal(t, true, metrics[0].IsEligible) + require.Equal(t, false, metrics[1].IsEligible) + require.Equal(t, "2", metrics[0].StakingBalance.String()) + require.Equal(t, "0", metrics[1].StakingBalance.String()) // repeat now p2 has balance just not enough balanceChecker.EXPECT().GetAvailableBalance("p1").Return(num.NewUint(2), nil).Times(1) balanceChecker.EXPECT().GetAvailableBalance("p2").Return(num.NewUint(1), nil).Times(1) - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{}, vgproto.DispatchMetric_DISPATCH_METRIC_RETURN_VOLATILITY, num.NewUint(2), num.UintZero(), 2, gameID) - require.Equal(t, 1, len(metrics)) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{}, vgproto.DispatchMetric_DISPATCH_METRIC_RETURN_VOLATILITY, num.NewUint(2), num.UintZero(), 2, gameID, 1) + require.Equal(t, 2, len(metrics)) require.Equal(t, "p1", metrics[0].Party) + require.Equal(t, "p2", metrics[1].Party) + require.Equal(t, true, metrics[0].IsEligible) + require.Equal(t, false, metrics[1].IsEligible) + require.Equal(t, "2", metrics[0].StakingBalance.String()) + require.Equal(t, "1", metrics[1].StakingBalance.String()) } func TestCalculateMetricForIndividualsRelativeReturn(t *testing.T) { @@ -907,6 +991,7 @@ func TestCalculateMetricForIndividualsRelativeReturn(t *testing.T) { teams := mocks.NewMockTeams(ctrl) balanceChecker := mocks.NewMockAccountBalanceChecker(ctrl) broker := bmocks.NewMockBroker(ctrl) + broker.EXPECT().Send(gomock.Any()).AnyTimes() broker.EXPECT().SendBatch(gomock.Any()).AnyTimes() tracker := NewMarketActivityTracker(logging.NewTestLogger(), teams, balanceChecker, broker) epochService.NotifyOnEpoch(tracker.OnEpochEvent, tracker.OnEpochRestore) @@ -946,7 +1031,8 @@ func TestCalculateMetricForIndividualsRelativeReturn(t *testing.T) { gameID := "game123" // get metrics for market m1 with window size=1 - metrics := tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m1"}, vgproto.DispatchMetric_DISPATCH_METRIC_RELATIVE_RETURN, num.UintZero(), num.UintZero(), 1, gameID) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.UintZero(), nil).Times(2) + metrics := tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m1"}, vgproto.DispatchMetric_DISPATCH_METRIC_RELATIVE_RETURN, num.UintZero(), num.UintZero(), 1, gameID, 1) require.Equal(t, 2, len(metrics)) require.Equal(t, "p1", metrics[0].Party) require.Equal(t, "16.3636375537", metrics[0].Score.StringFixed(10)) @@ -954,7 +1040,8 @@ func TestCalculateMetricForIndividualsRelativeReturn(t *testing.T) { require.Equal(t, "-2", metrics[1].Score.String()) // get metrics for market m2 with window size=1 - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m2"}, vgproto.DispatchMetric_DISPATCH_METRIC_RELATIVE_RETURN, num.UintZero(), num.UintZero(), 1, gameID) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.UintZero(), nil).Times(2) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m2"}, vgproto.DispatchMetric_DISPATCH_METRIC_RELATIVE_RETURN, num.UintZero(), num.UintZero(), 1, gameID, 1) require.Equal(t, 2, len(metrics)) require.Equal(t, "p1", metrics[0].Party) require.Equal(t, "-3.7500003750", metrics[0].Score.StringFixed(10)) @@ -962,7 +1049,8 @@ func TestCalculateMetricForIndividualsRelativeReturn(t *testing.T) { require.Equal(t, "0.4285714531", metrics[1].Score.StringFixed(10)) // get metrics for market m3 with window size=1 - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m3"}, vgproto.DispatchMetric_DISPATCH_METRIC_RELATIVE_RETURN, num.UintZero(), num.UintZero(), 1, gameID) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.UintZero(), nil).Times(2) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m3"}, vgproto.DispatchMetric_DISPATCH_METRIC_RELATIVE_RETURN, num.UintZero(), num.UintZero(), 1, gameID, 1) require.Equal(t, 2, len(metrics)) require.Equal(t, "p1", metrics[0].Party) require.Equal(t, "6.6666666667", metrics[0].Score.StringFixed(10)) @@ -970,7 +1058,8 @@ func TestCalculateMetricForIndividualsRelativeReturn(t *testing.T) { require.Equal(t, "-1.3333333333", metrics[1].Score.StringFixed(10)) // get metrics for market m1,m2 with window size=1 - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m1", "m2"}, vgproto.DispatchMetric_DISPATCH_METRIC_RELATIVE_RETURN, num.UintZero(), num.UintZero(), 1, gameID) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.UintZero(), nil).Times(2) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m1", "m2"}, vgproto.DispatchMetric_DISPATCH_METRIC_RELATIVE_RETURN, num.UintZero(), num.UintZero(), 1, gameID, 1) require.Equal(t, 2, len(metrics)) require.Equal(t, "p1", metrics[0].Party) require.Equal(t, "12.6136371787", metrics[0].Score.StringFixed(10)) @@ -978,7 +1067,8 @@ func TestCalculateMetricForIndividualsRelativeReturn(t *testing.T) { require.Equal(t, "-1.5714285469", metrics[1].Score.StringFixed(10)) // get metrics for all market window size=1 - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{}, vgproto.DispatchMetric_DISPATCH_METRIC_RELATIVE_RETURN, num.UintZero(), num.UintZero(), 1, gameID) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.UintZero(), nil).Times(2) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{}, vgproto.DispatchMetric_DISPATCH_METRIC_RELATIVE_RETURN, num.UintZero(), num.UintZero(), 1, gameID, 1) require.Equal(t, 2, len(metrics)) require.Equal(t, "p1", metrics[0].Party) require.Equal(t, "19.2803038454", metrics[0].Score.StringFixed(10)) @@ -1002,7 +1092,8 @@ func TestCalculateMetricForIndividualsRelativeReturn(t *testing.T) { epochService.target(context.Background(), types.Epoch{Seq: 2, Action: vgproto.EpochAction_EPOCH_ACTION_END, StartTime: time.Unix(60, 0), EndTime: time.Unix(120, 0)}) // get metrics for market m1 with window size=1 - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m1"}, vgproto.DispatchMetric_DISPATCH_METRIC_RELATIVE_RETURN, num.UintZero(), num.UintZero(), 1, gameID) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.UintZero(), nil).Times(2) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m1"}, vgproto.DispatchMetric_DISPATCH_METRIC_RELATIVE_RETURN, num.UintZero(), num.UintZero(), 1, gameID, 1) require.Equal(t, 2, len(metrics)) require.Equal(t, "p1", metrics[0].Party) require.Equal(t, "30", metrics[0].Score.String()) @@ -1010,7 +1101,8 @@ func TestCalculateMetricForIndividualsRelativeReturn(t *testing.T) { require.Equal(t, "-4.5", metrics[1].Score.String()) // get metrics for market m2 with window size=1 - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m2"}, vgproto.DispatchMetric_DISPATCH_METRIC_RELATIVE_RETURN, num.UintZero(), num.UintZero(), 1, gameID) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.UintZero(), nil).Times(2) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m2"}, vgproto.DispatchMetric_DISPATCH_METRIC_RELATIVE_RETURN, num.UintZero(), num.UintZero(), 1, gameID, 1) require.Equal(t, 2, len(metrics)) require.Equal(t, "p1", metrics[0].Party) require.Equal(t, "-5", metrics[0].Score.String()) @@ -1018,11 +1110,17 @@ func TestCalculateMetricForIndividualsRelativeReturn(t *testing.T) { require.Equal(t, "1.7391304348", metrics[1].Score.StringFixed(10)) // get metrics for market m3 with window size=1 - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m3"}, vgproto.DispatchMetric_DISPATCH_METRIC_RELATIVE_RETURN, num.UintZero(), num.UintZero(), 1, gameID) - require.Equal(t, 0, len(metrics)) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.UintZero(), nil).Times(2) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m3"}, vgproto.DispatchMetric_DISPATCH_METRIC_RELATIVE_RETURN, num.UintZero(), num.UintZero(), 1, gameID, 1) + require.Equal(t, 2, len(metrics)) + require.Equal(t, "p1", metrics[0].Party) + require.Equal(t, "p2", metrics[1].Party) + require.Equal(t, false, metrics[0].IsEligible) + require.Equal(t, false, metrics[1].IsEligible) // get metrics for market m1,m2 with window size=1 - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m1", "m2"}, vgproto.DispatchMetric_DISPATCH_METRIC_RELATIVE_RETURN, num.UintZero(), num.UintZero(), 1, gameID) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.UintZero(), nil).Times(2) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m1", "m2"}, vgproto.DispatchMetric_DISPATCH_METRIC_RELATIVE_RETURN, num.UintZero(), num.UintZero(), 1, gameID, 1) require.Equal(t, 2, len(metrics)) require.Equal(t, "p1", metrics[0].Party) require.Equal(t, "25", metrics[0].Score.String()) @@ -1030,7 +1128,8 @@ func TestCalculateMetricForIndividualsRelativeReturn(t *testing.T) { require.Equal(t, "-2.7608695652", metrics[1].Score.StringFixed(10)) // get metrics for all market window size=1 - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{}, vgproto.DispatchMetric_DISPATCH_METRIC_RELATIVE_RETURN, num.UintZero(), num.UintZero(), 1, gameID) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.UintZero(), nil).Times(2) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{}, vgproto.DispatchMetric_DISPATCH_METRIC_RELATIVE_RETURN, num.UintZero(), num.UintZero(), 1, gameID, 1) require.Equal(t, 2, len(metrics)) require.Equal(t, "p1", metrics[0].Party) require.Equal(t, "25", metrics[0].Score.String()) @@ -1039,7 +1138,8 @@ func TestCalculateMetricForIndividualsRelativeReturn(t *testing.T) { // calc with window size = 2 // get metrics for market m1 with window size=2 - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m1"}, vgproto.DispatchMetric_DISPATCH_METRIC_RELATIVE_RETURN, num.UintZero(), num.UintZero(), 2, gameID) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.UintZero(), nil).Times(2) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m1"}, vgproto.DispatchMetric_DISPATCH_METRIC_RELATIVE_RETURN, num.UintZero(), num.UintZero(), 2, gameID, 1) require.Equal(t, 2, len(metrics)) require.Equal(t, "p1", metrics[0].Party) require.Equal(t, "23.1818187769", metrics[0].Score.StringFixed(10)) @@ -1047,7 +1147,8 @@ func TestCalculateMetricForIndividualsRelativeReturn(t *testing.T) { require.Equal(t, "-3.25", metrics[1].Score.String()) // get metrics for market m2 with window size=2 - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m2"}, vgproto.DispatchMetric_DISPATCH_METRIC_RELATIVE_RETURN, num.UintZero(), num.UintZero(), 2, gameID) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.UintZero(), nil).Times(2) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m2"}, vgproto.DispatchMetric_DISPATCH_METRIC_RELATIVE_RETURN, num.UintZero(), num.UintZero(), 2, gameID, 1) require.Equal(t, 2, len(metrics)) require.Equal(t, "p1", metrics[0].Party) require.Equal(t, "-4.3750001875", metrics[0].Score.StringFixed(10)) @@ -1055,7 +1156,8 @@ func TestCalculateMetricForIndividualsRelativeReturn(t *testing.T) { require.Equal(t, "1.0838509439", metrics[1].Score.StringFixed(10)) // get metrics for market m3 with window size=2 - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m3"}, vgproto.DispatchMetric_DISPATCH_METRIC_RELATIVE_RETURN, num.UintZero(), num.UintZero(), 2, gameID) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.UintZero(), nil).Times(2) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m3"}, vgproto.DispatchMetric_DISPATCH_METRIC_RELATIVE_RETURN, num.UintZero(), num.UintZero(), 2, gameID, 1) require.Equal(t, 2, len(metrics)) require.Equal(t, "p1", metrics[0].Party) require.Equal(t, "3.3333333333", metrics[0].Score.StringFixed(10)) @@ -1063,7 +1165,8 @@ func TestCalculateMetricForIndividualsRelativeReturn(t *testing.T) { require.Equal(t, "-0.6666666667", metrics[1].Score.StringFixed(10)) // get metrics for market m1,m2 with window size=2 - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m1", "m2"}, vgproto.DispatchMetric_DISPATCH_METRIC_RELATIVE_RETURN, num.UintZero(), num.UintZero(), 2, gameID) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.UintZero(), nil).Times(2) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{"m1", "m2"}, vgproto.DispatchMetric_DISPATCH_METRIC_RELATIVE_RETURN, num.UintZero(), num.UintZero(), 2, gameID, 1) require.Equal(t, 2, len(metrics)) require.Equal(t, "p1", metrics[0].Party) require.Equal(t, "18.8068185894", metrics[0].Score.StringFixed(10)) @@ -1071,7 +1174,8 @@ func TestCalculateMetricForIndividualsRelativeReturn(t *testing.T) { require.Equal(t, "-2.1661490561", metrics[1].Score.StringFixed(10)) // get metrics for all market window size=2 - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{}, vgproto.DispatchMetric_DISPATCH_METRIC_RELATIVE_RETURN, num.UintZero(), num.UintZero(), 2, gameID) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.UintZero(), nil).Times(2) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{}, vgproto.DispatchMetric_DISPATCH_METRIC_RELATIVE_RETURN, num.UintZero(), num.UintZero(), 2, gameID, 1) require.Equal(t, 2, len(metrics)) require.Equal(t, "p1", metrics[0].Party) require.Equal(t, "22.1401519227", metrics[0].Score.StringFixed(10)) @@ -1081,16 +1185,26 @@ func TestCalculateMetricForIndividualsRelativeReturn(t *testing.T) { // now make p2 not eligible via not having sufficient governance token balanceChecker.EXPECT().GetAvailableBalance("p1").Return(num.NewUint(2), nil).Times(1) balanceChecker.EXPECT().GetAvailableBalance("p2").Return(nil, errors.New("some error")).Times(1) - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{}, vgproto.DispatchMetric_DISPATCH_METRIC_RELATIVE_RETURN, num.NewUint(1), num.UintZero(), 2, gameID) - require.Equal(t, 1, len(metrics)) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{}, vgproto.DispatchMetric_DISPATCH_METRIC_RELATIVE_RETURN, num.NewUint(1), num.UintZero(), 2, gameID, 1) + require.Equal(t, 2, len(metrics)) require.Equal(t, "p1", metrics[0].Party) + require.Equal(t, true, metrics[0].IsEligible) + require.Equal(t, "2", metrics[0].StakingBalance.String()) + require.Equal(t, "p2", metrics[1].Party) + require.Equal(t, false, metrics[1].IsEligible) + require.Equal(t, "0", metrics[1].StakingBalance.String()) // repeat now p2 has balance just not enough balanceChecker.EXPECT().GetAvailableBalance("p1").Return(num.NewUint(2), nil).Times(1) balanceChecker.EXPECT().GetAvailableBalance("p2").Return(num.NewUint(1), nil).Times(1) - metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{}, vgproto.DispatchMetric_DISPATCH_METRIC_RELATIVE_RETURN, num.NewUint(2), num.UintZero(), 2, gameID) - require.Equal(t, 1, len(metrics)) + metrics = tracker.calculateMetricForIndividuals(ctx, "a1", []string{"p1", "p2"}, []string{}, vgproto.DispatchMetric_DISPATCH_METRIC_RELATIVE_RETURN, num.NewUint(2), num.UintZero(), 2, gameID, 1) + require.Equal(t, 2, len(metrics)) require.Equal(t, "p1", metrics[0].Party) + require.Equal(t, true, metrics[0].IsEligible) + require.Equal(t, "2", metrics[0].StakingBalance.String()) + require.Equal(t, "p2", metrics[1].Party) + require.Equal(t, false, metrics[1].IsEligible) + require.Equal(t, "1", metrics[1].StakingBalance.String()) } func TestCalculateMetricForPartyRelativeReturn(t *testing.T) { @@ -1387,11 +1501,11 @@ func TestCalculateMetricForParty(t *testing.T) { func TestCalculateMetricForTeamUtil(t *testing.T) { ctx := context.Background() - isEligible := func(_ context.Context, asset, party string, markets []string, minStakingBalanceRequired *num.Uint, notionalTimeWeightedAveragePositionRequired *num.Uint, _ string) bool { + isEligible := func(_ context.Context, asset, party string, markets []string, minStakingBalanceRequired *num.Uint, notionalTimeWeightedAveragePositionRequired *num.Uint, _ string) (bool, *num.Uint, *num.Uint) { if party == "party1" || party == "party2" || party == "party3" || party == "party4" { - return true + return true, num.NewUint(100), num.NewUint(200) } - return false + return false, num.UintZero(), num.UintZero() } calculateMetricForParty := func(asset, party string, marketsInScope []string, metric vega.DispatchMetric, windowSize int) (num.Decimal, bool) { if party == "party1" { @@ -1413,12 +1527,12 @@ func TestCalculateMetricForTeamUtil(t *testing.T) { } gameID := "game123" - teamScore, partyScores := calculateMetricForTeamUtil(ctx, "asset1", []string{"party1", "party2", "party3", "party4", "party5"}, []string{}, vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, num.UintOne(), num.UintOne(), 5, num.DecimalFromFloat(0.5), isEligible, calculateMetricForParty, gameID) + teamScore, partyScores := calculateMetricForTeamUtil(ctx, "asset1", []string{"party1", "party2", "party3", "party4", "party5"}, []string{}, vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, num.UintOne(), num.UintOne(), int(5), num.DecimalFromFloat(0.5), isEligible, calculateMetricForParty, gameID, map[string]*num.Uint{}) // we're indicating the the score of the team need to be the mean of the top 0.5 * number of participants = floor(0.5*5) = 2 // the top scores are 2.5 and 2 => team score should be 2.25 // 4 party scores expected (1-4) as party5 is not eligible require.Equal(t, "2.25", teamScore.String()) - require.Equal(t, 4, len(partyScores)) + require.Equal(t, 5, len(partyScores)) require.Equal(t, "party4", partyScores[0].Party) require.Equal(t, "2.5", partyScores[0].Score.String()) require.Equal(t, "party2", partyScores[1].Party) @@ -1427,11 +1541,15 @@ func TestCalculateMetricForTeamUtil(t *testing.T) { require.Equal(t, "1.5", partyScores[2].Score.String()) require.Equal(t, "party3", partyScores[3].Party) require.Equal(t, "0.5", partyScores[3].Score.String()) + require.Equal(t, "party5", partyScores[4].Party) + require.Equal(t, false, partyScores[4].IsEligible) // lets repeat the check when there is no one eligible - teamScore, partyScores = calculateMetricForTeamUtil(ctx, "asset1", []string{"party5"}, []string{}, vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, num.UintOne(), num.UintOne(), 5, num.DecimalFromFloat(0.5), isEligible, calculateMetricForParty, gameID) + teamScore, partyScores = calculateMetricForTeamUtil(ctx, "asset1", []string{"party5"}, []string{}, vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, num.UintOne(), num.UintOne(), 5, num.DecimalFromFloat(0.5), isEligible, calculateMetricForParty, gameID, map[string]*num.Uint{}) require.Equal(t, "0", teamScore.String()) - require.Equal(t, 0, len(partyScores)) + require.Equal(t, 1, len(partyScores)) + require.Equal(t, "party5", partyScores[0].Party) + require.Equal(t, false, partyScores[0].IsEligible) } type DummyEpochEngine struct { diff --git a/core/execution/common/market_activity_tracker_test.go b/core/execution/common/market_activity_tracker_test.go index e381412adc2..444993465ee 100644 --- a/core/execution/common/market_activity_tracker_test.go +++ b/core/execution/common/market_activity_tracker_test.go @@ -186,8 +186,10 @@ func TestGetScores(t *testing.T) { ctrl := gomock.NewController(t) teams := mocks.NewMockTeams(ctrl) balanceChecker := mocks.NewMockAccountBalanceChecker(ctrl) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.UintZero(), nil).AnyTimes() broker := bmocks.NewMockBroker(ctrl) broker.EXPECT().SendBatch(gomock.Any()).AnyTimes() + broker.EXPECT().Send(gomock.Any()).AnyTimes() tracker := common.NewMarketActivityTracker(logging.NewTestLogger(), teams, balanceChecker, broker) epochService.NotifyOnEpoch(tracker.OnEpochEvent, tracker.OnEpochRestore) tracker.SetEligibilityChecker(&EligibilityChecker{}) @@ -284,16 +286,23 @@ func TestGetScores(t *testing.T) { // now look only on market 2: scores = tracker.CalculateMetricForIndividuals(ctx, &vgproto.DispatchStrategy{AssetForMetric: "asset1", Metric: vgproto.DispatchMetric_DISPATCH_METRIC_LP_FEES_RECEIVED, IndividualScope: vgproto.IndividualScope_INDIVIDUAL_SCOPE_ALL, WindowLength: 1, Markets: []string{"market2"}}) - require.Equal(t, 1, len(scores)) - - require.Equal(t, "party2", scores[0].Party) - require.Equal(t, "1", scores[0].Score.String()) + require.Equal(t, 2, len(scores)) + require.Equal(t, "party2", scores[1].Party) + require.Equal(t, "1", scores[1].Score.String()) + require.Equal(t, true, scores[1].IsEligible) + require.Equal(t, "party1", scores[0].Party) + require.Equal(t, false, scores[0].IsEligible) + require.Equal(t, "0", scores[0].Score.String()) // now look at asset2 with no market qualifer scores = tracker.CalculateMetricForIndividuals(ctx, &vgproto.DispatchStrategy{AssetForMetric: "asset2", Metric: vgproto.DispatchMetric_DISPATCH_METRIC_MAKER_FEES_PAID, IndividualScope: vgproto.IndividualScope_INDIVIDUAL_SCOPE_ALL, WindowLength: 1}) - require.Equal(t, 1, len(scores)) + require.Equal(t, 2, len(scores)) require.Equal(t, "party1", scores[0].Party) require.Equal(t, "1", scores[0].Score.String()) + require.Equal(t, true, scores[0].IsEligible) + require.Equal(t, "party2", scores[1].Party) + require.Equal(t, "0", scores[1].Score.String()) + require.Equal(t, false, scores[1].IsEligible) epochService.target(context.Background(), types.Epoch{Seq: 3, Action: vgproto.EpochAction_EPOCH_ACTION_START}) transfersM1 = []*types.Transfer{ @@ -327,8 +336,10 @@ func TestGetScoresIndividualsDifferentScopes(t *testing.T) { ctrl := gomock.NewController(t) teams := mocks.NewMockTeams(ctrl) balanceChecker := mocks.NewMockAccountBalanceChecker(ctrl) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.UintZero(), nil).AnyTimes() broker := bmocks.NewMockBroker(ctrl) broker.EXPECT().SendBatch(gomock.Any()).AnyTimes() + broker.EXPECT().Send(gomock.Any()).AnyTimes() tracker := common.NewMarketActivityTracker(logging.NewTestLogger(), teams, balanceChecker, broker) epochService.NotifyOnEpoch(tracker.OnEpochEvent, tracker.OnEpochRestore) tracker.SetEligibilityChecker(&EligibilityChecker{}) @@ -425,16 +436,24 @@ func TestGetScoresIndividualsDifferentScopes(t *testing.T) { // now look only on market 2: scores = tracker.CalculateMetricForIndividuals(ctx, &vgproto.DispatchStrategy{AssetForMetric: "asset1", Metric: vgproto.DispatchMetric_DISPATCH_METRIC_LP_FEES_RECEIVED, IndividualScope: vgproto.IndividualScope_INDIVIDUAL_SCOPE_ALL, WindowLength: 1, Markets: []string{"market2"}}) - require.Equal(t, 1, len(scores)) + require.Equal(t, 2, len(scores)) - require.Equal(t, "party2", scores[0].Party) - require.Equal(t, "1", scores[0].Score.String()) + require.Equal(t, "party1", scores[0].Party) + require.Equal(t, "0", scores[0].Score.String()) + require.Equal(t, false, scores[0].IsEligible) + require.Equal(t, "party2", scores[1].Party) + require.Equal(t, "1", scores[1].Score.String()) + require.Equal(t, true, scores[1].IsEligible) // now look at asset2 with no market qualifer scores = tracker.CalculateMetricForIndividuals(ctx, &vgproto.DispatchStrategy{AssetForMetric: "asset2", Metric: vgproto.DispatchMetric_DISPATCH_METRIC_MAKER_FEES_PAID, IndividualScope: vgproto.IndividualScope_INDIVIDUAL_SCOPE_ALL, WindowLength: 1}) - require.Equal(t, 1, len(scores)) + require.Equal(t, 2, len(scores)) require.Equal(t, "party1", scores[0].Party) + require.Equal(t, true, scores[0].IsEligible) require.Equal(t, "1", scores[0].Score.String()) + require.Equal(t, "party2", scores[1].Party) + require.Equal(t, "0", scores[1].Score.String()) + require.Equal(t, false, scores[1].IsEligible) epochService.target(context.Background(), types.Epoch{Seq: 3, Action: vgproto.EpochAction_EPOCH_ACTION_START}) transfersM1 = []*types.Transfer{ @@ -498,7 +517,9 @@ func TestFeesTrackerWith0(t *testing.T) { ctrl := gomock.NewController(t) teams := mocks.NewMockTeams(ctrl) balanceChecker := mocks.NewMockAccountBalanceChecker(ctrl) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.UintZero(), nil).AnyTimes() broker := bmocks.NewMockBroker(ctrl) + broker.EXPECT().Send(gomock.Any()).AnyTimes() tracker := common.NewMarketActivityTracker(logging.NewTestLogger(), teams, balanceChecker, broker) epochEngine.NotifyOnEpoch(tracker.OnEpochEvent, tracker.OnEpochRestore) epochEngine.target(context.Background(), types.Epoch{Seq: 1, Action: vgproto.EpochAction_EPOCH_ACTION_START}) @@ -521,7 +542,9 @@ func TestFeesTrackerWith0(t *testing.T) { tracker.UpdateFeesFromTransfers("asset1", "market1", transfersM1) epochEngine.target(context.Background(), types.Epoch{Seq: 1, Action: vgproto.EpochAction_EPOCH_ACTION_END}) scores := tracker.CalculateMetricForIndividuals(ctx, &vgproto.DispatchStrategy{AssetForMetric: "asset1", Metric: vgproto.DispatchMetric_DISPATCH_METRIC_MAKER_FEES_RECEIVED, IndividualScope: vgproto.IndividualScope_INDIVIDUAL_SCOPE_ALL, WindowLength: 1, Markets: []string{"market1"}}) - require.Equal(t, 0, len(scores)) + require.Equal(t, 2, len(scores)) + require.Equal(t, false, scores[0].IsEligible) + require.Equal(t, false, scores[1].IsEligible) } func TestGetLastEpochTakeFees(t *testing.T) { @@ -681,7 +704,9 @@ func TestFeesTracker(t *testing.T) { ctrl := gomock.NewController(t) teams := mocks.NewMockTeams(ctrl) balanceChecker := mocks.NewMockAccountBalanceChecker(ctrl) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.UintZero(), nil).AnyTimes() broker := bmocks.NewMockBroker(ctrl) + broker.EXPECT().Send(gomock.Any()).AnyTimes() broker.EXPECT().SendBatch(gomock.Any()).AnyTimes() tracker := common.NewMarketActivityTracker(logging.NewTestLogger(), teams, balanceChecker, broker) epochEngine.NotifyOnEpoch(tracker.OnEpochEvent, tracker.OnEpochRestore) @@ -756,15 +781,23 @@ func TestFeesTracker(t *testing.T) { // asset2 TransferTypeMakerFeePay scores = tracker.CalculateMetricForIndividuals(ctx, &vgproto.DispatchStrategy{AssetForMetric: "asset1", Metric: vgproto.DispatchMetric_DISPATCH_METRIC_MAKER_FEES_RECEIVED, IndividualScope: vgproto.IndividualScope_INDIVIDUAL_SCOPE_ALL, WindowLength: 1, Markets: []string{"market2"}}) - require.Equal(t, 1, len(scores)) + require.Equal(t, 2, len(scores)) require.Equal(t, "1", scores[0].Score.String()) require.Equal(t, "party1", scores[0].Party) + require.Equal(t, true, scores[0].IsEligible) + require.Equal(t, "0", scores[1].Score.String()) + require.Equal(t, "party2", scores[1].Party) + require.Equal(t, false, scores[1].IsEligible) // asset2 TransferTypeMakerFeePay scores = tracker.CalculateMetricForIndividuals(ctx, &vgproto.DispatchStrategy{AssetForMetric: "asset1", Metric: vgproto.DispatchMetric_DISPATCH_METRIC_MAKER_FEES_PAID, IndividualScope: vgproto.IndividualScope_INDIVIDUAL_SCOPE_ALL, WindowLength: 1, Markets: []string{"market2"}}) - require.Equal(t, 1, len(scores)) - require.Equal(t, "1", scores[0].Score.String()) - require.Equal(t, "party2", scores[0].Party) + require.Equal(t, 2, len(scores)) + require.Equal(t, "0", scores[0].Score.String()) + require.Equal(t, "party1", scores[0].Party) + require.Equal(t, false, scores[0].IsEligible) + require.Equal(t, "1", scores[1].Score.String()) + require.Equal(t, "party2", scores[1].Party) + require.Equal(t, true, scores[1].IsEligible) // check state has changed state2, _, err := tracker.GetState(key) @@ -775,6 +808,8 @@ func TestFeesTracker(t *testing.T) { ctrl = gomock.NewController(t) teams = mocks.NewMockTeams(ctrl) balanceChecker = mocks.NewMockAccountBalanceChecker(ctrl) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.UintZero(), nil).AnyTimes() + broker.EXPECT().Send(gomock.Any()).AnyTimes() trackerLoad := common.NewMarketActivityTracker(logging.NewTestLogger(), teams, balanceChecker, broker) epochEngineLoad.NotifyOnEpoch(trackerLoad.OnEpochEvent, trackerLoad.OnEpochRestore) @@ -791,9 +826,13 @@ func TestFeesTracker(t *testing.T) { // check a restored party exist in the restored engine scores = tracker.CalculateMetricForIndividuals(ctx, &vgproto.DispatchStrategy{AssetForMetric: "asset1", Metric: vgproto.DispatchMetric_DISPATCH_METRIC_MAKER_FEES_RECEIVED, IndividualScope: vgproto.IndividualScope_INDIVIDUAL_SCOPE_ALL, WindowLength: 1, Markets: []string{"market2"}}) - require.Equal(t, 1, len(scores)) + require.Equal(t, 2, len(scores)) require.Equal(t, "1", scores[0].Score.String()) require.Equal(t, "party1", scores[0].Party) + require.Equal(t, true, scores[0].IsEligible) + require.Equal(t, "0", scores[1].Score.String()) + require.Equal(t, "party2", scores[1].Party) + require.Equal(t, false, scores[1].IsEligible) // end the epoch epochEngineLoad.target(context.Background(), types.Epoch{Seq: 2, Action: vgproto.EpochAction_EPOCH_ACTION_END}) @@ -808,9 +847,21 @@ func TestFeesTracker(t *testing.T) { metrics := []vgproto.DispatchMetric{vgproto.DispatchMetric_DISPATCH_METRIC_MAKER_FEES_PAID, vgproto.DispatchMetric_DISPATCH_METRIC_LP_FEES_RECEIVED, vgproto.DispatchMetric_DISPATCH_METRIC_MAKER_FEES_RECEIVED} for _, m := range metrics { scores = trackerLoad.CalculateMetricForIndividuals(ctx, &vgproto.DispatchStrategy{AssetForMetric: "asset1", Metric: m, IndividualScope: vgproto.IndividualScope_INDIVIDUAL_SCOPE_ALL, WindowLength: 1, Markets: []string{"market1"}}) - require.Equal(t, 0, len(scores)) + require.Equal(t, 2, len(scores)) + require.Equal(t, "0", scores[0].Score.String()) + require.Equal(t, "party1", scores[0].Party) + require.Equal(t, false, scores[0].IsEligible) + require.Equal(t, "0", scores[1].Score.String()) + require.Equal(t, "party2", scores[1].Party) + require.Equal(t, false, scores[1].IsEligible) scores = trackerLoad.CalculateMetricForIndividuals(ctx, &vgproto.DispatchStrategy{AssetForMetric: "asset1", Metric: m, IndividualScope: vgproto.IndividualScope_INDIVIDUAL_SCOPE_ALL, WindowLength: 1, Markets: []string{"market2"}}) - require.Equal(t, 0, len(scores)) + require.Equal(t, 2, len(scores)) + require.Equal(t, "0", scores[0].Score.String()) + require.Equal(t, "party1", scores[0].Party) + require.Equal(t, false, scores[0].IsEligible) + require.Equal(t, "0", scores[1].Score.String()) + require.Equal(t, "party2", scores[1].Party) + require.Equal(t, false, scores[1].IsEligible) } } @@ -1096,8 +1147,10 @@ func TestPositionMetric(t *testing.T) { ctrl := gomock.NewController(t) teams := mocks.NewMockTeams(ctrl) balanceChecker := mocks.NewMockAccountBalanceChecker(ctrl) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.UintZero(), nil).AnyTimes() broker := bmocks.NewMockBroker(ctrl) broker.EXPECT().SendBatch(gomock.Any()).AnyTimes() + broker.EXPECT().Send(gomock.Any()).AnyTimes() tracker := common.NewMarketActivityTracker(logging.NewTestLogger(), teams, balanceChecker, broker) epochService.NotifyOnEpoch(tracker.OnEpochEvent, tracker.OnEpochRestore) @@ -1203,8 +1256,10 @@ func TestRealisedReturnMetric(t *testing.T) { ctrl := gomock.NewController(t) teams := mocks.NewMockTeams(ctrl) balanceChecker := mocks.NewMockAccountBalanceChecker(ctrl) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.UintZero(), nil).AnyTimes() broker := bmocks.NewMockBroker(ctrl) broker.EXPECT().SendBatch(gomock.Any()).AnyTimes() + broker.EXPECT().Send(gomock.Any()).AnyTimes() tracker := common.NewMarketActivityTracker(logging.NewTestLogger(), teams, balanceChecker, broker) epochService.NotifyOnEpoch(tracker.OnEpochEvent, tracker.OnEpochRestore) @@ -1282,7 +1337,10 @@ func TestRealisedReturnMetric(t *testing.T) { // end the epoch epochService.target(context.Background(), types.Epoch{Action: vgproto.EpochAction_EPOCH_ACTION_END, StartTime: epochStartTime.Add(2000 * time.Second), EndTime: epochStartTime.Add(3000 * time.Second)}) scores = tracker.CalculateMetricForIndividuals(ctx, &vgproto.DispatchStrategy{AssetForMetric: "a1", Metric: vgproto.DispatchMetric_DISPATCH_METRIC_REALISED_RETURN, IndividualScope: vgproto.IndividualScope_INDIVIDUAL_SCOPE_ALL, WindowLength: 1}) - require.Equal(t, 0, len(scores)) + require.Equal(t, 1, len(scores)) + require.Equal(t, "p1", scores[0].Party) + require.Equal(t, "0", scores[0].Score.String()) + require.Equal(t, false, scores[0].IsEligible) scores = tracker.CalculateMetricForIndividuals(ctx, &vgproto.DispatchStrategy{AssetForMetric: "a1", Metric: vgproto.DispatchMetric_DISPATCH_METRIC_REALISED_RETURN, IndividualScope: vgproto.IndividualScope_INDIVIDUAL_SCOPE_ALL, WindowLength: 2}) require.Equal(t, 1, len(scores)) @@ -1301,8 +1359,10 @@ func TestRelativeReturnMetric(t *testing.T) { ctrl := gomock.NewController(t) teams := mocks.NewMockTeams(ctrl) balanceChecker := mocks.NewMockAccountBalanceChecker(ctrl) + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.UintZero(), nil).AnyTimes() broker := bmocks.NewMockBroker(ctrl) + broker.EXPECT().Send(gomock.Any()).AnyTimes() broker.EXPECT().SendBatch(gomock.Any()).AnyTimes() tracker := common.NewMarketActivityTracker(logging.NewTestLogger(), teams, balanceChecker, broker) epochService.NotifyOnEpoch(tracker.OnEpochEvent, tracker.OnEpochRestore) diff --git a/core/execution/common/mat_intermediate_scores_internal_test.go b/core/execution/common/mat_intermediate_scores_internal_test.go new file mode 100644 index 00000000000..a60ffc9f120 --- /dev/null +++ b/core/execution/common/mat_intermediate_scores_internal_test.go @@ -0,0 +1,1115 @@ +// Copyright (C) 2023 Gobalsky Labs Limited +// +// 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 common + +import ( + "context" + "testing" + "time" + + bmocks "code.vegaprotocol.io/vega/core/broker/mocks" + "code.vegaprotocol.io/vega/core/events" + "code.vegaprotocol.io/vega/core/execution/common/mocks" + "code.vegaprotocol.io/vega/core/types" + "code.vegaprotocol.io/vega/libs/num" + "code.vegaprotocol.io/vega/logging" + vgproto "code.vegaprotocol.io/vega/protos/vega" + + "github.com/golang/mock/gomock" + "github.com/stretchr/testify/require" +) + +func TestPublishGameMetricAveragePosition(t *testing.T) { + ctx := context.Background() + epochService := &DummyEpochEngine{} + ctrl := gomock.NewController(t) + teams := mocks.NewMockTeams(ctrl) + balanceChecker := mocks.NewMockAccountBalanceChecker(ctrl) + broker := bmocks.NewMockBroker(ctrl) + gameScoreEvents := []events.Event{} + + broker.EXPECT().SendBatch(gomock.Any()).AnyTimes() + broker.EXPECT().Send(gomock.Any()).Do(func(evt events.Event) { + if evt.StreamMessage().GetGameScores() != nil { + gameScoreEvents = append(gameScoreEvents, evt) + } + }).AnyTimes() + tracker := NewMarketActivityTracker(logging.NewTestLogger(), teams, balanceChecker, broker) + epochService.NotifyOnEpoch(tracker.OnEpochEvent, tracker.OnEpochRestore) + tracker.SetEligibilityChecker(&DummyEligibilityChecker{}) + epochService.target(context.Background(), types.Epoch{Seq: 1, Action: vgproto.EpochAction_EPOCH_ACTION_START, StartTime: time.Time{}}) + + // add some markets for 2 different assets + tracker.MarketProposed("a1", "m1", "z1") + tracker.MarketProposed("a1", "m2", "z2") + tracker.MarketProposed("a1", "m3", "z3") + + // add some markets for 2 different assets + tracker.MarketProposed("a1", "m1", "z1") + tracker.MarketProposed("a1", "m2", "z2") + tracker.MarketProposed("a1", "m3", "z3") + + // record some values for all metrics + tracker.RecordPosition("a1", "p1", "m1", 10, num.NewUint(1), num.DecimalOne(), time.Unix(5, 0)) + tracker.RecordPosition("a1", "p1", "m2", 20, num.NewUint(2), num.DecimalOne(), time.Unix(20, 0)) + tracker.RecordPosition("a1", "p1", "m3", 30, num.NewUint(3), num.DecimalOne(), time.Unix(30, 0)) + tracker.RecordPosition("a1", "p2", "m1", 100, num.NewUint(10), num.DecimalOne(), time.Unix(15, 0)) + tracker.RecordPosition("a1", "p2", "m2", 200, num.NewUint(20), num.DecimalOne(), time.Unix(25, 0)) + tracker.RecordPosition("a1", "p2", "m3", 300, num.NewUint(30), num.DecimalOne(), time.Unix(45, 0)) + + // end epoch1 + epochService.target(context.Background(), types.Epoch{Seq: 1, Action: vgproto.EpochAction_EPOCH_ACTION_END, StartTime: time.Unix(0, 0), EndTime: time.Unix(60, 0)}) + + // get metrics for market m1 with window size=1 + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.NewUint(0), nil).AnyTimes() + + ds1 := &vgproto.DispatchStrategy{ + AssetForMetric: "a1", + Metric: vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, + Markets: []string{"m1"}, + EntityScope: vgproto.EntityScope_ENTITY_SCOPE_INDIVIDUALS, + IndividualScope: vgproto.IndividualScope_INDIVIDUAL_SCOPE_ALL, + WindowLength: 1, + DistributionStrategy: vgproto.DistributionStrategy_DISTRIBUTION_STRATEGY_PRO_RATA, + } + ds2 := &vgproto.DispatchStrategy{ + AssetForMetric: "a1", + Metric: vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, + Markets: []string{"m2"}, + EntityScope: vgproto.EntityScope_ENTITY_SCOPE_INDIVIDUALS, + IndividualScope: vgproto.IndividualScope_INDIVIDUAL_SCOPE_ALL, + WindowLength: 1, + DistributionStrategy: vgproto.DistributionStrategy_DISTRIBUTION_STRATEGY_PRO_RATA, + } + ds3 := &vgproto.DispatchStrategy{ + AssetForMetric: "a1", + Metric: vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, + Markets: []string{"m3"}, + EntityScope: vgproto.EntityScope_ENTITY_SCOPE_INDIVIDUALS, + IndividualScope: vgproto.IndividualScope_INDIVIDUAL_SCOPE_ALL, + WindowLength: 1, + DistributionStrategy: vgproto.DistributionStrategy_DISTRIBUTION_STRATEGY_PRO_RATA, + } + ds4 := &vgproto.DispatchStrategy{ + AssetForMetric: "a1", + Metric: vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, + Markets: []string{"m1", "m2"}, + EntityScope: vgproto.EntityScope_ENTITY_SCOPE_INDIVIDUALS, + IndividualScope: vgproto.IndividualScope_INDIVIDUAL_SCOPE_ALL, + WindowLength: 1, + DistributionStrategy: vgproto.DistributionStrategy_DISTRIBUTION_STRATEGY_PRO_RATA, + } + ds5 := &vgproto.DispatchStrategy{ + AssetForMetric: "a1", + Metric: vgproto.DispatchMetric_DISPATCH_METRIC_AVERAGE_POSITION, + EntityScope: vgproto.EntityScope_ENTITY_SCOPE_INDIVIDUALS, + IndividualScope: vgproto.IndividualScope_INDIVIDUAL_SCOPE_ALL, + WindowLength: 1, + DistributionStrategy: vgproto.DistributionStrategy_DISTRIBUTION_STRATEGY_PRO_RATA, + } + + // calculate intermediate scores + tracker.PublishGameMetric(ctx, []*vgproto.DispatchStrategy{ds1, ds2, ds3, ds4, ds5}, time.Unix(60, 0)) + require.Equal(t, 5, len(gameScoreEvents)) + ps1 := gameScoreEvents[0].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps1[0].Party) + require.Equal(t, "p2", ps1[1].Party) + require.Equal(t, "9.166666", ps1[0].Score) + require.Equal(t, "75", ps1[1].Score) + + ps2 := gameScoreEvents[1].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps2[0].Party) + require.Equal(t, "p2", ps2[1].Party) + require.Equal(t, "13.333332", ps2[0].Score) + require.Equal(t, "116.66666", ps2[1].Score) + + ps3 := gameScoreEvents[2].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps3[0].Party) + require.Equal(t, "p2", ps3[1].Party) + require.Equal(t, "15", ps3[0].Score) + require.Equal(t, "75", ps3[1].Score) + + ps4 := gameScoreEvents[3].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps4[0].Party) + require.Equal(t, "p2", ps4[1].Party) + require.Equal(t, "22.499998", ps4[0].Score) + require.Equal(t, "191.66666", ps4[1].Score) + + ps5 := gameScoreEvents[4].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps5[0].Party) + require.Equal(t, "p2", ps5[1].Party) + require.Equal(t, "37.499998", ps5[0].Score) + require.Equal(t, "266.66666", ps5[1].Score) + + // now we end the epoch and make sure that we get the exact same results + gameScoreEvents = []events.Event{} + epochService.target(context.Background(), types.Epoch{Seq: 1, Action: vgproto.EpochAction_EPOCH_ACTION_END, StartTime: time.Unix(0, 0), EndTime: time.Unix(60, 0)}) + + // we expect that if we take a snapshot of scores now, it looks identical because we didn't change the time + tracker.PublishGameMetric(ctx, []*vgproto.DispatchStrategy{ds1, ds2, ds3, ds4, ds5}, time.Unix(60, 0)) + require.Equal(t, 5, len(gameScoreEvents)) + ps1 = gameScoreEvents[0].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps1[0].Party) + require.Equal(t, "p2", ps1[1].Party) + require.Equal(t, "9.166666", ps1[0].Score) + require.Equal(t, "75", ps1[1].Score) + + ps2 = gameScoreEvents[1].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps2[0].Party) + require.Equal(t, "p2", ps2[1].Party) + require.Equal(t, "13.333332", ps2[0].Score) + require.Equal(t, "116.66666", ps2[1].Score) + + ps3 = gameScoreEvents[2].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps3[0].Party) + require.Equal(t, "p2", ps3[1].Party) + require.Equal(t, "15", ps3[0].Score) + require.Equal(t, "75", ps3[1].Score) + + ps4 = gameScoreEvents[3].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps4[0].Party) + require.Equal(t, "p2", ps4[1].Party) + require.Equal(t, "22.499998", ps4[0].Score) + require.Equal(t, "191.66666", ps4[1].Score) + + ps5 = gameScoreEvents[4].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps5[0].Party) + require.Equal(t, "p2", ps5[1].Party) + require.Equal(t, "37.499998", ps5[0].Score) + require.Equal(t, "266.66666", ps5[1].Score) + + // start epoch 2 and record some activity + epochService.target(context.Background(), types.Epoch{Seq: 2, Action: vgproto.EpochAction_EPOCH_ACTION_START, StartTime: time.Unix(60, 0)}) + tracker.RecordPosition("a1", "p1", "m1", 20, num.NewUint(5), num.DecimalOne(), time.Unix(90, 0)) + tracker.RecordPosition("a1", "p2", "m2", 10, num.NewUint(10), num.DecimalOne(), time.Unix(75, 0)) + tracker.RecordPosition("a2", "p1", "m3", 20, num.NewUint(5), num.DecimalOne(), time.Unix(90, 0)) + tracker.RecordPosition("a2", "p2", "m2", 10, num.NewUint(10), num.DecimalOne(), time.Unix(75, 0)) + + gameScoreEvents = []events.Event{} + + // lets look at the events when the window size is 1 + tracker.PublishGameMetric(ctx, []*vgproto.DispatchStrategy{ds1, ds2, ds3, ds4, ds5}, time.Unix(120, 0)) + require.Equal(t, 5, len(gameScoreEvents)) + ps1 = gameScoreEvents[0].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps1[0].Party) + require.Equal(t, "p2", ps1[1].Party) + require.Equal(t, "15", ps1[0].Score) + require.Equal(t, "100", ps1[1].Score) + + ps2 = gameScoreEvents[1].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps2[0].Party) + require.Equal(t, "p2", ps2[1].Party) + require.Equal(t, "20", ps2[0].Score) + require.Equal(t, "57.5", ps2[1].Score) + + ps3 = gameScoreEvents[2].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps3[0].Party) + require.Equal(t, "p2", ps3[1].Party) + require.Equal(t, "30", ps3[0].Score) + require.Equal(t, "300", ps3[1].Score) + + ps4 = gameScoreEvents[3].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps4[0].Party) + require.Equal(t, "p2", ps4[1].Party) + require.Equal(t, "35", ps4[0].Score) + require.Equal(t, "157.5", ps4[1].Score) + + ps5 = gameScoreEvents[4].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps5[0].Party) + require.Equal(t, "p2", ps5[1].Party) + require.Equal(t, "65", ps5[0].Score) + require.Equal(t, "457.5", ps5[1].Score) + + // now lets change the window to 2: + ds1.WindowLength = 2 + ds2.WindowLength = 2 + ds3.WindowLength = 2 + ds4.WindowLength = 2 + ds5.WindowLength = 2 + + gameScoreEvents = []events.Event{} + + tracker.PublishGameMetric(ctx, []*vgproto.DispatchStrategy{ds1, ds2, ds3, ds4, ds5}, time.Unix(120, 0)) + require.Equal(t, 5, len(gameScoreEvents)) + ps1 = gameScoreEvents[0].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps1[0].Party) + require.Equal(t, "p2", ps1[1].Party) + require.Equal(t, "12.083333", ps1[0].Score) + require.Equal(t, "87.5", ps1[1].Score) + + ps2 = gameScoreEvents[1].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps2[0].Party) + require.Equal(t, "p2", ps2[1].Party) + require.Equal(t, "16.666666", ps2[0].Score) + require.Equal(t, "87.08333", ps2[1].Score) + + ps3 = gameScoreEvents[2].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps3[0].Party) + require.Equal(t, "p2", ps3[1].Party) + require.Equal(t, "22.5", ps3[0].Score) + require.Equal(t, "187.5", ps3[1].Score) + + ps4 = gameScoreEvents[3].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps4[0].Party) + require.Equal(t, "p2", ps4[1].Party) + require.Equal(t, "28.749999", ps4[0].Score) + require.Equal(t, "174.58333", ps4[1].Score) + + ps5 = gameScoreEvents[4].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps5[0].Party) + require.Equal(t, "p2", ps5[1].Party) + require.Equal(t, "51.249999", ps5[0].Score) + require.Equal(t, "362.08333", ps5[1].Score) +} + +func TestPublishGameMetricReturnVolatility(t *testing.T) { + ctx := context.Background() + epochService := &DummyEpochEngine{} + ctrl := gomock.NewController(t) + teams := mocks.NewMockTeams(ctrl) + balanceChecker := mocks.NewMockAccountBalanceChecker(ctrl) + broker := bmocks.NewMockBroker(ctrl) + gameScoreEvents := []events.Event{} + broker.EXPECT().SendBatch(gomock.Any()).AnyTimes() + broker.EXPECT().Send(gomock.Any()).Do(func(evt events.Event) { + if evt.StreamMessage().GetGameScores() != nil { + gameScoreEvents = append(gameScoreEvents, evt) + } + }).AnyTimes() + tracker := NewMarketActivityTracker(logging.NewTestLogger(), teams, balanceChecker, broker) + epochService.NotifyOnEpoch(tracker.OnEpochEvent, tracker.OnEpochRestore) + tracker.SetEligibilityChecker(&DummyEligibilityChecker{}) + epochService.target(context.Background(), types.Epoch{Seq: 1, Action: vgproto.EpochAction_EPOCH_ACTION_START, StartTime: time.Time{}}) + + // add some markets for 2 different assets + tracker.MarketProposed("a1", "m1", "z1") + tracker.MarketProposed("a1", "m2", "z2") + tracker.MarketProposed("a1", "m3", "z3") + + // add some markets for 2 different assets + tracker.MarketProposed("a1", "m1", "z1") + tracker.MarketProposed("a1", "m2", "z2") + tracker.MarketProposed("a1", "m3", "z3") + + // record some values for all metrics + tracker.RecordPosition("a1", "p1", "m1", 10, num.NewUint(1), num.DecimalOne(), time.Unix(5, 0)) + tracker.RecordPosition("a1", "p1", "m2", 20, num.NewUint(2), num.DecimalOne(), time.Unix(20, 0)) + tracker.RecordPosition("a1", "p1", "m3", 30, num.NewUint(3), num.DecimalOne(), time.Unix(30, 0)) + tracker.RecordPosition("a1", "p2", "m1", 100, num.NewUint(10), num.DecimalOne(), time.Unix(15, 0)) + tracker.RecordPosition("a1", "p2", "m2", 200, num.NewUint(20), num.DecimalOne(), time.Unix(25, 0)) + tracker.RecordPosition("a1", "p2", "m3", 300, num.NewUint(30), num.DecimalOne(), time.Unix(45, 0)) + tracker.RecordPosition("a1", "p3", "m1", 10, num.NewUint(1), num.DecimalOne(), time.Unix(10, 0)) + tracker.RecordPosition("a1", "p3", "m2", 20, num.NewUint(2), num.DecimalOne(), time.Unix(10, 0)) + tracker.RecordPosition("a1", "p3", "m3", 30, num.NewUint(3), num.DecimalOne(), time.Unix(10, 0)) + + tracker.RecordM2M("a1", "p1", "m1", num.DecimalFromInt64(80)) + tracker.RecordM2M("a1", "p2", "m1", num.DecimalFromInt64(20)) + tracker.RecordM2M("a1", "p3", "m1", num.DecimalFromInt64(-100)) + tracker.RecordM2M("a1", "p1", "m1", num.DecimalFromInt64(10)) + tracker.RecordM2M("a1", "p2", "m1", num.DecimalFromInt64(-10)) + tracker.RecordM2M("a1", "p1", "m2", num.DecimalFromInt64(50)) + tracker.RecordM2M("a1", "p2", "m2", num.DecimalFromInt64(-5)) + tracker.RecordM2M("a1", "p3", "m2", num.DecimalFromInt64(-45)) + tracker.RecordM2M("a1", "p1", "m3", num.DecimalFromInt64(-35)) + tracker.RecordM2M("a1", "p2", "m3", num.DecimalFromInt64(35)) + + // get metrics for market m1 with window size=1 + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.NewUint(0), nil).AnyTimes() + + ds1 := &vgproto.DispatchStrategy{ + AssetForMetric: "a1", + Metric: vgproto.DispatchMetric_DISPATCH_METRIC_RETURN_VOLATILITY, + Markets: []string{"m1"}, + EntityScope: vgproto.EntityScope_ENTITY_SCOPE_INDIVIDUALS, + IndividualScope: vgproto.IndividualScope_INDIVIDUAL_SCOPE_ALL, + WindowLength: 1, + DistributionStrategy: vgproto.DistributionStrategy_DISTRIBUTION_STRATEGY_PRO_RATA, + } + ds2 := &vgproto.DispatchStrategy{ + AssetForMetric: "a1", + Metric: vgproto.DispatchMetric_DISPATCH_METRIC_RETURN_VOLATILITY, + Markets: []string{"m2"}, + EntityScope: vgproto.EntityScope_ENTITY_SCOPE_INDIVIDUALS, + IndividualScope: vgproto.IndividualScope_INDIVIDUAL_SCOPE_ALL, + WindowLength: 1, + DistributionStrategy: vgproto.DistributionStrategy_DISTRIBUTION_STRATEGY_PRO_RATA, + } + ds3 := &vgproto.DispatchStrategy{ + AssetForMetric: "a1", + Metric: vgproto.DispatchMetric_DISPATCH_METRIC_RETURN_VOLATILITY, + Markets: []string{"m3"}, + EntityScope: vgproto.EntityScope_ENTITY_SCOPE_INDIVIDUALS, + IndividualScope: vgproto.IndividualScope_INDIVIDUAL_SCOPE_ALL, + WindowLength: 1, + DistributionStrategy: vgproto.DistributionStrategy_DISTRIBUTION_STRATEGY_PRO_RATA, + } + ds4 := &vgproto.DispatchStrategy{ + AssetForMetric: "a1", + Metric: vgproto.DispatchMetric_DISPATCH_METRIC_RETURN_VOLATILITY, + Markets: []string{"m1", "m2"}, + EntityScope: vgproto.EntityScope_ENTITY_SCOPE_INDIVIDUALS, + IndividualScope: vgproto.IndividualScope_INDIVIDUAL_SCOPE_ALL, + WindowLength: 1, + DistributionStrategy: vgproto.DistributionStrategy_DISTRIBUTION_STRATEGY_PRO_RATA, + } + ds5 := &vgproto.DispatchStrategy{ + AssetForMetric: "a1", + Metric: vgproto.DispatchMetric_DISPATCH_METRIC_RETURN_VOLATILITY, + EntityScope: vgproto.EntityScope_ENTITY_SCOPE_INDIVIDUALS, + IndividualScope: vgproto.IndividualScope_INDIVIDUAL_SCOPE_ALL, + WindowLength: 1, + DistributionStrategy: vgproto.DistributionStrategy_DISTRIBUTION_STRATEGY_PRO_RATA, + } + + tracker.PublishGameMetric(ctx, []*vgproto.DispatchStrategy{ds1, ds2, ds3, ds4, ds5}, time.Unix(60, 0)) + require.Equal(t, 5, len(gameScoreEvents)) + ps1 := gameScoreEvents[0].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps1[0].Party) + require.Equal(t, "p2", ps1[1].Party) + require.Equal(t, "0", ps1[0].Score) + require.Equal(t, "0", ps1[1].Score) + + ps2 := gameScoreEvents[1].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps2[0].Party) + require.Equal(t, "p2", ps2[1].Party) + require.Equal(t, "0", ps2[0].Score) + require.Equal(t, "0", ps2[1].Score) + + ps3 := gameScoreEvents[2].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps3[0].Party) + require.Equal(t, "p2", ps3[1].Party) + require.Equal(t, "0", ps3[0].Score) + require.Equal(t, "0", ps3[1].Score) + + ps4 := gameScoreEvents[3].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps4[0].Party) + require.Equal(t, "p2", ps4[1].Party) + require.Equal(t, "0", ps4[0].Score) + require.Equal(t, "0", ps4[1].Score) + + ps5 := gameScoreEvents[4].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps5[0].Party) + require.Equal(t, "p2", ps5[1].Party) + require.Equal(t, "0", ps5[0].Score) + require.Equal(t, "0", ps5[1].Score) + + epochService.target(context.Background(), types.Epoch{Seq: 1, Action: vgproto.EpochAction_EPOCH_ACTION_END, StartTime: time.Unix(0, 0), EndTime: time.Unix(60, 0)}) + epochService.target(context.Background(), types.Epoch{Seq: 2, Action: vgproto.EpochAction_EPOCH_ACTION_START, StartTime: time.Unix(60, 0)}) + tracker.RecordPosition("a1", "p1", "m1", 20, num.NewUint(5), num.DecimalOne(), time.Unix(90, 0)) + tracker.RecordPosition("a1", "p2", "m2", 10, num.NewUint(10), num.DecimalOne(), time.Unix(75, 0)) + tracker.RecordPosition("a1", "p3", "m1", 10, num.NewUint(10), num.DecimalOne(), time.Unix(75, 0)) + tracker.RecordPosition("a2", "p1", "m3", 20, num.NewUint(5), num.DecimalOne(), time.Unix(90, 0)) + tracker.RecordPosition("a2", "p2", "m2", 10, num.NewUint(10), num.DecimalOne(), time.Unix(75, 0)) + + tracker.RecordM2M("a1", "p1", "m1", num.DecimalFromInt64(45)) + tracker.RecordM2M("a1", "p3", "m1", num.DecimalFromInt64(-45)) + tracker.RecordM2M("a1", "p1", "m2", num.DecimalFromInt64(-10)) + tracker.RecordM2M("a1", "p2", "m2", num.DecimalFromInt64(10)) + // nothing in m3 + + ds1.WindowLength = 2 + ds2.WindowLength = 2 + ds3.WindowLength = 2 + ds4.WindowLength = 2 + ds5.WindowLength = 2 + + gameScoreEvents = []events.Event{} + tracker.PublishGameMetric(ctx, []*vgproto.DispatchStrategy{ds1, ds2, ds3, ds4, ds5}, time.Unix(120, 0)) + require.Equal(t, 5, len(gameScoreEvents)) + ps1 = gameScoreEvents[0].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps1[0].Party) + require.Equal(t, "p2", ps1[1].Party) + require.Equal(t, "0.086044426422046", ps1[0].Score) + require.Equal(t, "0", ps1[1].Score) + require.Equal(t, true, ps1[0].IsEligible) + require.Equal(t, false, ps1[1].IsEligible) + + ps2 = gameScoreEvents[1].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps2[0].Party) + require.Equal(t, "p2", ps2[1].Party) + require.Equal(t, "0.2214532481172412", ps2[0].Score) + require.Equal(t, "85.1257359604949139", ps2[1].Score) + require.Equal(t, true, ps2[0].IsEligible) + require.Equal(t, true, ps2[1].IsEligible) + + ps3 = gameScoreEvents[2].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps3[0].Party) + require.Equal(t, "p2", ps3[1].Party) + require.Equal(t, "0", ps3[0].Score) + require.Equal(t, "0", ps3[1].Score) + require.Equal(t, false, ps3[0].IsEligible) + require.Equal(t, false, ps1[1].IsEligible) + + ps4 = gameScoreEvents[3].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps4[0].Party) + require.Equal(t, "p2", ps4[1].Party) + require.Equal(t, "0.0326518156928779", ps4[0].Score) + require.Equal(t, "574.5715725244936759", ps4[1].Score) + require.Equal(t, true, ps4[0].IsEligible) + require.Equal(t, true, ps4[1].IsEligible) + + ps5 = gameScoreEvents[4].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps5[0].Party) + require.Equal(t, "p2", ps5[1].Party) + require.Equal(t, "0.0524262906455334", ps5[0].Score) + require.Equal(t, "27.2358805547724978", ps5[1].Score) + require.Equal(t, true, ps5[0].IsEligible) + require.Equal(t, true, ps5[1].IsEligible) + + // now end the epoch properly + epochService.target(context.Background(), types.Epoch{Seq: 2, Action: vgproto.EpochAction_EPOCH_ACTION_END, StartTime: time.Unix(60, 0), EndTime: time.Unix(120, 0)}) + epochService.target(context.Background(), types.Epoch{Seq: 3, Action: vgproto.EpochAction_EPOCH_ACTION_START, StartTime: time.Unix(120, 0)}) + + // record some m2ms + tracker.RecordM2M("a1", "p1", "m1", num.DecimalFromInt64(20)) + tracker.RecordM2M("a1", "p3", "m1", num.DecimalFromInt64(-25)) + tracker.RecordM2M("a1", "p1", "m2", num.DecimalFromInt64(-15)) + tracker.RecordM2M("a1", "p2", "m2", num.DecimalFromInt64(15)) + + gameScoreEvents = []events.Event{} + tracker.PublishGameMetric(ctx, []*vgproto.DispatchStrategy{ds1, ds2, ds3, ds4, ds5}, time.Unix(150, 0)) + require.Equal(t, 5, len(gameScoreEvents)) + ps1 = gameScoreEvents[0].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps1[0].Party) + require.Equal(t, "p2", ps1[1].Party) + require.Equal(t, "1", ps1[0].Score) + require.Equal(t, "0", ps1[1].Score) + require.Equal(t, true, ps1[0].IsEligible) + require.Equal(t, false, ps1[1].IsEligible) + + ps2 = gameScoreEvents[1].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps2[0].Party) + require.Equal(t, "p2", ps2[1].Party) + require.Equal(t, "64", ps2[0].Score) + require.Equal(t, "2.2746573501746843", ps2[1].Score) + require.Equal(t, true, ps2[0].IsEligible) + require.Equal(t, true, ps2[1].IsEligible) + + ps3 = gameScoreEvents[2].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps3[0].Party) + require.Equal(t, "p2", ps3[1].Party) + require.Equal(t, "0", ps3[0].Score) + require.Equal(t, "0", ps3[1].Score) + require.Equal(t, false, ps3[0].IsEligible) + require.Equal(t, false, ps1[1].IsEligible) + + ps4 = gameScoreEvents[3].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps4[0].Party) + require.Equal(t, "p2", ps4[1].Party) + require.Equal(t, "0.7901234567901235", ps4[0].Score) + require.Equal(t, "2.2746573501746843", ps4[1].Score) + require.Equal(t, true, ps4[0].IsEligible) + require.Equal(t, true, ps4[1].IsEligible) + + ps5 = gameScoreEvents[4].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps5[0].Party) + require.Equal(t, "p2", ps5[1].Party) + require.Equal(t, "0.7901234567901235", ps5[0].Score) + require.Equal(t, "2.2746573501746843", ps5[1].Score) + require.Equal(t, true, ps5[0].IsEligible) + require.Equal(t, true, ps5[1].IsEligible) +} + +func TestPublishGameMetricRelativeReturn(t *testing.T) { + ctx := context.Background() + epochService := &DummyEpochEngine{} + ctrl := gomock.NewController(t) + teams := mocks.NewMockTeams(ctrl) + balanceChecker := mocks.NewMockAccountBalanceChecker(ctrl) + broker := bmocks.NewMockBroker(ctrl) + gameScoreEvents := []events.Event{} + broker.EXPECT().SendBatch(gomock.Any()).AnyTimes() + broker.EXPECT().Send(gomock.Any()).Do(func(evt events.Event) { + if evt.StreamMessage().GetGameScores() != nil { + gameScoreEvents = append(gameScoreEvents, evt) + } + }).AnyTimes() + tracker := NewMarketActivityTracker(logging.NewTestLogger(), teams, balanceChecker, broker) + epochService.NotifyOnEpoch(tracker.OnEpochEvent, tracker.OnEpochRestore) + tracker.SetEligibilityChecker(&DummyEligibilityChecker{}) + epochService.target(context.Background(), types.Epoch{Seq: 1, Action: vgproto.EpochAction_EPOCH_ACTION_START, StartTime: time.Unix(0, 0)}) + + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.NewUint(0), nil).AnyTimes() + + ds1 := &vgproto.DispatchStrategy{ + AssetForMetric: "a1", + Metric: vgproto.DispatchMetric_DISPATCH_METRIC_RELATIVE_RETURN, + Markets: []string{"m1"}, + EntityScope: vgproto.EntityScope_ENTITY_SCOPE_INDIVIDUALS, + IndividualScope: vgproto.IndividualScope_INDIVIDUAL_SCOPE_ALL, + WindowLength: 1, + DistributionStrategy: vgproto.DistributionStrategy_DISTRIBUTION_STRATEGY_PRO_RATA, + } + ds2 := &vgproto.DispatchStrategy{ + AssetForMetric: "a1", + Metric: vgproto.DispatchMetric_DISPATCH_METRIC_RELATIVE_RETURN, + Markets: []string{"m2"}, + EntityScope: vgproto.EntityScope_ENTITY_SCOPE_INDIVIDUALS, + IndividualScope: vgproto.IndividualScope_INDIVIDUAL_SCOPE_ALL, + WindowLength: 1, + DistributionStrategy: vgproto.DistributionStrategy_DISTRIBUTION_STRATEGY_PRO_RATA, + } + ds3 := &vgproto.DispatchStrategy{ + AssetForMetric: "a1", + Metric: vgproto.DispatchMetric_DISPATCH_METRIC_RELATIVE_RETURN, + Markets: []string{"m3"}, + EntityScope: vgproto.EntityScope_ENTITY_SCOPE_INDIVIDUALS, + IndividualScope: vgproto.IndividualScope_INDIVIDUAL_SCOPE_ALL, + WindowLength: 1, + DistributionStrategy: vgproto.DistributionStrategy_DISTRIBUTION_STRATEGY_PRO_RATA, + } + ds4 := &vgproto.DispatchStrategy{ + AssetForMetric: "a1", + Metric: vgproto.DispatchMetric_DISPATCH_METRIC_RELATIVE_RETURN, + Markets: []string{"m1", "m2"}, + EntityScope: vgproto.EntityScope_ENTITY_SCOPE_INDIVIDUALS, + IndividualScope: vgproto.IndividualScope_INDIVIDUAL_SCOPE_ALL, + WindowLength: 1, + DistributionStrategy: vgproto.DistributionStrategy_DISTRIBUTION_STRATEGY_PRO_RATA, + } + ds5 := &vgproto.DispatchStrategy{ + AssetForMetric: "a1", + Metric: vgproto.DispatchMetric_DISPATCH_METRIC_RELATIVE_RETURN, + EntityScope: vgproto.EntityScope_ENTITY_SCOPE_INDIVIDUALS, + IndividualScope: vgproto.IndividualScope_INDIVIDUAL_SCOPE_ALL, + WindowLength: 1, + DistributionStrategy: vgproto.DistributionStrategy_DISTRIBUTION_STRATEGY_PRO_RATA, + } + + // add some markets for 2 different assets + tracker.MarketProposed("a1", "m1", "z1") + tracker.MarketProposed("a1", "m2", "z2") + tracker.MarketProposed("a1", "m3", "z3") + + // record some values for all metrics + tracker.RecordPosition("a1", "p1", "m1", 10, num.NewUint(1), num.DecimalOne(), time.Unix(5, 0)) + tracker.RecordPosition("a1", "p1", "m2", 20, num.NewUint(2), num.DecimalOne(), time.Unix(20, 0)) + tracker.RecordPosition("a1", "p1", "m3", 30, num.NewUint(3), num.DecimalOne(), time.Unix(30, 0)) + tracker.RecordPosition("a1", "p2", "m1", 100, num.NewUint(10), num.DecimalOne(), time.Unix(15, 0)) + tracker.RecordPosition("a1", "p2", "m2", 200, num.NewUint(20), num.DecimalOne(), time.Unix(25, 0)) + tracker.RecordPosition("a1", "p2", "m3", 300, num.NewUint(30), num.DecimalOne(), time.Unix(45, 0)) + + tracker.RecordM2M("a1", "p1", "m1", num.DecimalFromInt64(-100)) + tracker.RecordM2M("a1", "p2", "m1", num.DecimalFromInt64(100)) + tracker.RecordM2M("a1", "p1", "m1", num.DecimalFromInt64(250)) + tracker.RecordM2M("a1", "p2", "m1", num.DecimalFromInt64(-250)) + tracker.RecordM2M("a1", "p1", "m2", num.DecimalFromInt64(-50)) + tracker.RecordM2M("a1", "p2", "m2", num.DecimalFromInt64(50)) + tracker.RecordM2M("a1", "p1", "m3", num.DecimalFromInt64(100)) + tracker.RecordM2M("a1", "p2", "m3", num.DecimalFromInt64(-100)) + + tracker.PublishGameMetric(ctx, []*vgproto.DispatchStrategy{ds1, ds2, ds3, ds4, ds5}, time.Unix(60, 0)) + require.Equal(t, 5, len(gameScoreEvents)) + ps1 := gameScoreEvents[0].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps1[0].Party) + require.Equal(t, "p2", ps1[1].Party) + require.Equal(t, "16.3636375537190948", ps1[0].Score) + require.Equal(t, "-2", ps1[1].Score) + + ps2 := gameScoreEvents[1].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps2[0].Party) + require.Equal(t, "p2", ps2[1].Party) + require.Equal(t, "-3.7500003750000375", ps2[0].Score) + require.Equal(t, "0.4285714530612259", ps2[1].Score) + + ps3 := gameScoreEvents[2].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps3[0].Party) + require.Equal(t, "p2", ps3[1].Party) + require.Equal(t, "6.6666666666666667", ps3[0].Score) + require.Equal(t, "-1.3333333333333333", ps3[1].Score) + + ps4 := gameScoreEvents[3].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps4[0].Party) + require.Equal(t, "p2", ps4[1].Party) + require.Equal(t, "12.6136371787190573", ps4[0].Score) + require.Equal(t, "-1.5714285469387741", ps4[1].Score) + + ps5 := gameScoreEvents[4].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps5[0].Party) + require.Equal(t, "p2", ps5[1].Party) + require.Equal(t, "19.280303845385724", ps5[0].Score) + require.Equal(t, "-2.9047618802721074", ps5[1].Score) + + epochService.target(context.Background(), types.Epoch{Seq: 1, Action: vgproto.EpochAction_EPOCH_ACTION_END, StartTime: time.Unix(0, 0), EndTime: time.Unix(60, 0)}) + epochService.target(context.Background(), types.Epoch{Seq: 2, Action: vgproto.EpochAction_EPOCH_ACTION_START, StartTime: time.Unix(60, 0)}) + + tracker.RecordPosition("a1", "p1", "m1", 20, num.NewUint(5), num.DecimalOne(), time.Unix(90, 0)) + tracker.RecordPosition("a1", "p2", "m2", 10, num.NewUint(10), num.DecimalOne(), time.Unix(75, 0)) + tracker.RecordPosition("a2", "p1", "m3", 20, num.NewUint(5), num.DecimalOne(), time.Unix(90, 0)) + tracker.RecordPosition("a2", "p2", "m2", 10, num.NewUint(10), num.DecimalOne(), time.Unix(75, 0)) + + tracker.RecordM2M("a1", "p1", "m1", num.DecimalFromInt64(450)) + tracker.RecordM2M("a1", "p2", "m1", num.DecimalFromInt64(-450)) + tracker.RecordM2M("a1", "p1", "m2", num.DecimalFromInt64(-100)) + tracker.RecordM2M("a1", "p2", "m2", num.DecimalFromInt64(100)) + // nothing in m3 + + gameScoreEvents = []events.Event{} + tracker.PublishGameMetric(ctx, []*vgproto.DispatchStrategy{ds1, ds2, ds3, ds4, ds5}, time.Unix(120, 0)) + require.Equal(t, 5, len(gameScoreEvents)) + ps1 = gameScoreEvents[0].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps1[0].Party) + require.Equal(t, "p2", ps1[1].Party) + require.Equal(t, "30", ps1[0].Score) + require.Equal(t, "-4.5", ps1[1].Score) + + ps2 = gameScoreEvents[1].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps2[0].Party) + require.Equal(t, "p2", ps2[1].Party) + require.Equal(t, "-5", ps2[0].Score) + require.Equal(t, "1.7391304347826087", ps2[1].Score) + + ps3 = gameScoreEvents[2].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps3[0].Party) + require.Equal(t, "p2", ps3[1].Party) + require.Equal(t, "0", ps3[0].Score) + require.Equal(t, "0", ps3[1].Score) + require.False(t, ps3[0].IsEligible) + require.False(t, ps3[1].IsEligible) + + ps4 = gameScoreEvents[3].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps4[0].Party) + require.Equal(t, "p2", ps4[1].Party) + require.Equal(t, "25", ps4[0].Score) + require.Equal(t, "-2.7608695652173913", ps4[1].Score) + + ps5 = gameScoreEvents[4].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps5[0].Party) + require.Equal(t, "p2", ps5[1].Party) + require.Equal(t, "25", ps5[0].Score) + require.Equal(t, "-2.7608695652173913", ps5[1].Score) + + // check with window length = 2 + ds1.WindowLength = 2 + ds2.WindowLength = 2 + ds3.WindowLength = 2 + ds4.WindowLength = 2 + ds5.WindowLength = 2 + + gameScoreEvents = []events.Event{} + tracker.PublishGameMetric(ctx, []*vgproto.DispatchStrategy{ds1, ds2, ds3, ds4, ds5}, time.Unix(120, 0)) + require.Equal(t, 5, len(gameScoreEvents)) + ps1 = gameScoreEvents[0].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps1[0].Party) + require.Equal(t, "p2", ps1[1].Party) + require.Equal(t, "23.1818187768595474", ps1[0].Score) + require.Equal(t, "-3.25", ps1[1].Score) + require.Equal(t, true, ps1[0].IsEligible) + require.Equal(t, true, ps1[1].IsEligible) + + ps2 = gameScoreEvents[1].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps2[0].Party) + require.Equal(t, "p2", ps2[1].Party) + require.Equal(t, "-4.3750001875000188", ps2[0].Score) + require.Equal(t, "1.0838509439219173", ps2[1].Score) + require.Equal(t, true, ps2[0].IsEligible) + require.Equal(t, true, ps2[1].IsEligible) + + ps3 = gameScoreEvents[2].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps3[0].Party) + require.Equal(t, "p2", ps3[1].Party) + require.Equal(t, "3.3333333333333334", ps3[0].Score) + require.Equal(t, "-0.6666666666666667", ps3[1].Score) + require.Equal(t, true, ps3[0].IsEligible) + require.Equal(t, true, ps1[1].IsEligible) + + ps4 = gameScoreEvents[3].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps4[0].Party) + require.Equal(t, "p2", ps4[1].Party) + require.Equal(t, "18.8068185893595287", ps4[0].Score) + require.Equal(t, "-2.1661490560780827", ps4[1].Score) + require.Equal(t, true, ps4[0].IsEligible) + require.Equal(t, true, ps4[1].IsEligible) + + ps5 = gameScoreEvents[4].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps5[0].Party) + require.Equal(t, "p2", ps5[1].Party) + require.Equal(t, "22.140151922692862", ps5[0].Score) + require.Equal(t, "-2.8328157227447494", ps5[1].Score) + require.Equal(t, true, ps5[0].IsEligible) + require.Equal(t, true, ps5[1].IsEligible) +} + +func TestPublishGameMetricRealisedReturn(t *testing.T) { + ctx := context.Background() + epochService := &DummyEpochEngine{} + ctrl := gomock.NewController(t) + teams := mocks.NewMockTeams(ctrl) + balanceChecker := mocks.NewMockAccountBalanceChecker(ctrl) + broker := bmocks.NewMockBroker(ctrl) + gameScoreEvents := []events.Event{} + broker.EXPECT().SendBatch(gomock.Any()).AnyTimes() + broker.EXPECT().Send(gomock.Any()).Do(func(evt events.Event) { + if evt.StreamMessage().GetGameScores() != nil { + gameScoreEvents = append(gameScoreEvents, evt) + } + }).AnyTimes() + tracker := NewMarketActivityTracker(logging.NewTestLogger(), teams, balanceChecker, broker) + epochService.NotifyOnEpoch(tracker.OnEpochEvent, tracker.OnEpochRestore) + tracker.SetEligibilityChecker(&DummyEligibilityChecker{}) + epochService.target(context.Background(), types.Epoch{Seq: 1, Action: vgproto.EpochAction_EPOCH_ACTION_START, StartTime: time.Unix(0, 0)}) + + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.NewUint(0), nil).AnyTimes() + + tracker.MarketProposed("a1", "m1", "z1") + + ds1 := &vgproto.DispatchStrategy{ + AssetForMetric: "a1", + Metric: vgproto.DispatchMetric_DISPATCH_METRIC_REALISED_RETURN, + Markets: []string{"m1"}, + EntityScope: vgproto.EntityScope_ENTITY_SCOPE_INDIVIDUALS, + IndividualScope: vgproto.IndividualScope_INDIVIDUAL_SCOPE_ALL, + WindowLength: 1, + DistributionStrategy: vgproto.DistributionStrategy_DISTRIBUTION_STRATEGY_PRO_RATA, + } + ds2 := &vgproto.DispatchStrategy{ + AssetForMetric: "a1", + Metric: vgproto.DispatchMetric_DISPATCH_METRIC_REALISED_RETURN, + EntityScope: vgproto.EntityScope_ENTITY_SCOPE_INDIVIDUALS, + IndividualScope: vgproto.IndividualScope_INDIVIDUAL_SCOPE_ALL, + WindowLength: 1, + DistributionStrategy: vgproto.DistributionStrategy_DISTRIBUTION_STRATEGY_PRO_RATA, + } + + tracker.RecordFundingPayment("a1", "p1", "m1", num.DecimalFromInt64(100)) + tracker.RecordRealisedPosition("a1", "p1", "m1", num.DecimalFromInt64(-50)) + tracker.RecordFundingPayment("a1", "p1", "m1", num.DecimalFromInt64(-200)) + tracker.RecordRealisedPosition("a1", "p1", "m1", num.DecimalFromInt64(20)) + tracker.RecordFundingPayment("a1", "p2", "m1", num.DecimalFromInt64(-100)) + tracker.RecordRealisedPosition("a1", "p2", "m1", num.DecimalFromInt64(-10)) + tracker.RecordRealisedPosition("a1", "p2", "m1", num.DecimalFromInt64(20)) + tracker.RecordFundingPayment("a1", "p3", "m1", num.DecimalFromInt64(200)) + + tracker.PublishGameMetric(ctx, []*vgproto.DispatchStrategy{ds1, ds2}, time.Unix(60, 0)) + require.Equal(t, 2, len(gameScoreEvents)) + ps1 := gameScoreEvents[0].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps1[0].Party) + require.Equal(t, "p2", ps1[1].Party) + require.Equal(t, "p3", ps1[2].Party) + require.Equal(t, "-130", ps1[0].Score) + require.Equal(t, "-90", ps1[1].Score) + require.Equal(t, "200", ps1[2].Score) + + ps2 := gameScoreEvents[1].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps2[0].Party) + require.Equal(t, "p2", ps2[1].Party) + require.Equal(t, "p3", ps2[2].Party) + require.Equal(t, "-130", ps2[0].Score) + require.Equal(t, "-90", ps2[1].Score) + require.Equal(t, "200", ps2[2].Score) + + epochService.target(context.Background(), types.Epoch{Seq: 1, Action: vgproto.EpochAction_EPOCH_ACTION_END, StartTime: time.Unix(0, 0), EndTime: time.Unix(60, 0)}) + epochService.target(context.Background(), types.Epoch{Seq: 2, Action: vgproto.EpochAction_EPOCH_ACTION_START, StartTime: time.Unix(60, 0)}) + + tracker.RecordFundingPayment("a1", "p1", "m1", num.DecimalFromInt64(-30)) + tracker.RecordRealisedPosition("a1", "p2", "m1", num.DecimalFromInt64(70)) + tracker.RecordRealisedPosition("a1", "p2", "m1", num.DecimalFromInt64(80)) + tracker.RecordRealisedPosition("a1", "p3", "m1", num.DecimalFromInt64(-50)) + + // with window size1 + gameScoreEvents = []events.Event{} + tracker.PublishGameMetric(ctx, []*vgproto.DispatchStrategy{ds1, ds2}, time.Unix(120, 0)) + require.Equal(t, 2, len(gameScoreEvents)) + + ps1 = gameScoreEvents[0].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps1[0].Party) + require.Equal(t, "p2", ps1[1].Party) + require.Equal(t, "p3", ps1[2].Party) + require.Equal(t, "-30", ps1[0].Score) + require.Equal(t, "150", ps1[1].Score) + require.Equal(t, "-50", ps1[2].Score) + + ps2 = gameScoreEvents[1].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps2[0].Party) + require.Equal(t, "p2", ps2[1].Party) + require.Equal(t, "p3", ps2[2].Party) + require.Equal(t, "-30", ps2[0].Score) + require.Equal(t, "150", ps2[1].Score) + require.Equal(t, "-50", ps2[2].Score) + + // check with window length = 2 + ds1.WindowLength = 2 + ds2.WindowLength = 2 + + gameScoreEvents = []events.Event{} + tracker.PublishGameMetric(ctx, []*vgproto.DispatchStrategy{ds1, ds2}, time.Unix(120, 0)) + require.Equal(t, 2, len(gameScoreEvents)) + + ps1 = gameScoreEvents[0].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps1[0].Party) + require.Equal(t, "p2", ps1[1].Party) + require.Equal(t, "p3", ps1[2].Party) + require.Equal(t, "-80", ps1[0].Score) + require.Equal(t, "30", ps1[1].Score) + require.Equal(t, "75", ps1[2].Score) + + ps2 = gameScoreEvents[1].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps2[0].Party) + require.Equal(t, "p2", ps2[1].Party) + require.Equal(t, "p3", ps2[2].Party) + require.Equal(t, "-80", ps2[0].Score) + require.Equal(t, "30", ps2[1].Score) + require.Equal(t, "75", ps2[2].Score) +} + +func TestPublishGameMetricFees(t *testing.T) { + ctx := context.Background() + epochService := &DummyEpochEngine{} + ctrl := gomock.NewController(t) + teams := mocks.NewMockTeams(ctrl) + balanceChecker := mocks.NewMockAccountBalanceChecker(ctrl) + broker := bmocks.NewMockBroker(ctrl) + gameScoreEvents := []events.Event{} + broker.EXPECT().SendBatch(gomock.Any()).AnyTimes() + broker.EXPECT().Send(gomock.Any()).Do(func(evt events.Event) { + if evt.StreamMessage().GetGameScores() != nil { + gameScoreEvents = append(gameScoreEvents, evt) + } + }).AnyTimes() + tracker := NewMarketActivityTracker(logging.NewTestLogger(), teams, balanceChecker, broker) + epochService.NotifyOnEpoch(tracker.OnEpochEvent, tracker.OnEpochRestore) + tracker.SetEligibilityChecker(&DummyEligibilityChecker{}) + epochService.target(context.Background(), types.Epoch{Seq: 1, Action: vgproto.EpochAction_EPOCH_ACTION_START, StartTime: time.Unix(0, 0)}) + + balanceChecker.EXPECT().GetAvailableBalance(gomock.Any()).Return(num.NewUint(0), nil).AnyTimes() + + tracker.MarketProposed("a1", "m1", "me") + tracker.MarketProposed("a1", "m2", "me2") + + ds1 := &vgproto.DispatchStrategy{ + AssetForMetric: "a1", + Metric: vgproto.DispatchMetric_DISPATCH_METRIC_MAKER_FEES_PAID, + Markets: []string{"m1"}, + EntityScope: vgproto.EntityScope_ENTITY_SCOPE_INDIVIDUALS, + IndividualScope: vgproto.IndividualScope_INDIVIDUAL_SCOPE_ALL, + WindowLength: 1, + DistributionStrategy: vgproto.DistributionStrategy_DISTRIBUTION_STRATEGY_PRO_RATA, + } + ds2 := &vgproto.DispatchStrategy{ + AssetForMetric: "a1", + Metric: vgproto.DispatchMetric_DISPATCH_METRIC_MAKER_FEES_PAID, + Markets: []string{"m2"}, + EntityScope: vgproto.EntityScope_ENTITY_SCOPE_INDIVIDUALS, + IndividualScope: vgproto.IndividualScope_INDIVIDUAL_SCOPE_ALL, + WindowLength: 1, + DistributionStrategy: vgproto.DistributionStrategy_DISTRIBUTION_STRATEGY_PRO_RATA, + } + ds3 := &vgproto.DispatchStrategy{ + AssetForMetric: "a1", + Metric: vgproto.DispatchMetric_DISPATCH_METRIC_MAKER_FEES_PAID, + Markets: []string{"m1", "m2"}, + EntityScope: vgproto.EntityScope_ENTITY_SCOPE_INDIVIDUALS, + IndividualScope: vgproto.IndividualScope_INDIVIDUAL_SCOPE_ALL, + WindowLength: 1, + DistributionStrategy: vgproto.DistributionStrategy_DISTRIBUTION_STRATEGY_PRO_RATA, + } + ds4 := &vgproto.DispatchStrategy{ + AssetForMetric: "a1", + Metric: vgproto.DispatchMetric_DISPATCH_METRIC_MAKER_FEES_PAID, + Markets: []string{}, + EntityScope: vgproto.EntityScope_ENTITY_SCOPE_INDIVIDUALS, + IndividualScope: vgproto.IndividualScope_INDIVIDUAL_SCOPE_ALL, + WindowLength: 1, + DistributionStrategy: vgproto.DistributionStrategy_DISTRIBUTION_STRATEGY_PRO_RATA, + } + ds5 := &vgproto.DispatchStrategy{ + AssetForMetric: "a1", + Metric: vgproto.DispatchMetric_DISPATCH_METRIC_MAKER_FEES_RECEIVED, + Markets: []string{"m1"}, + EntityScope: vgproto.EntityScope_ENTITY_SCOPE_INDIVIDUALS, + IndividualScope: vgproto.IndividualScope_INDIVIDUAL_SCOPE_ALL, + WindowLength: 1, + DistributionStrategy: vgproto.DistributionStrategy_DISTRIBUTION_STRATEGY_PRO_RATA, + } + ds6 := &vgproto.DispatchStrategy{ + AssetForMetric: "a1", + Metric: vgproto.DispatchMetric_DISPATCH_METRIC_MAKER_FEES_RECEIVED, + Markets: []string{"m2"}, + EntityScope: vgproto.EntityScope_ENTITY_SCOPE_INDIVIDUALS, + IndividualScope: vgproto.IndividualScope_INDIVIDUAL_SCOPE_ALL, + WindowLength: 1, + DistributionStrategy: vgproto.DistributionStrategy_DISTRIBUTION_STRATEGY_PRO_RATA, + } + ds7 := &vgproto.DispatchStrategy{ + AssetForMetric: "a1", + Metric: vgproto.DispatchMetric_DISPATCH_METRIC_MAKER_FEES_RECEIVED, + Markets: []string{"m1", "m2"}, + EntityScope: vgproto.EntityScope_ENTITY_SCOPE_INDIVIDUALS, + IndividualScope: vgproto.IndividualScope_INDIVIDUAL_SCOPE_ALL, + WindowLength: 1, + DistributionStrategy: vgproto.DistributionStrategy_DISTRIBUTION_STRATEGY_PRO_RATA, + } + ds8 := &vgproto.DispatchStrategy{ + AssetForMetric: "a1", + Metric: vgproto.DispatchMetric_DISPATCH_METRIC_MAKER_FEES_RECEIVED, + Markets: []string{}, + EntityScope: vgproto.EntityScope_ENTITY_SCOPE_INDIVIDUALS, + IndividualScope: vgproto.IndividualScope_INDIVIDUAL_SCOPE_ALL, + WindowLength: 1, + DistributionStrategy: vgproto.DistributionStrategy_DISTRIBUTION_STRATEGY_PRO_RATA, + } + + epochService.target(context.Background(), types.Epoch{Seq: 1, Action: vgproto.EpochAction_EPOCH_ACTION_START}) + + tracker.MarketProposed("a1", "market1", "me") + tracker.MarketProposed("a1", "market2", "me2") + + // update with a few transfers + transfersM1 := []*types.Transfer{ + {Owner: "p1", Type: types.TransferTypeMakerFeeReceive, Amount: &types.FinancialAmount{Asset: "a1", Amount: num.NewUint(100)}}, + {Owner: "p1", Type: types.TransferTypeMakerFeePay, Amount: &types.FinancialAmount{Asset: "a1", Amount: num.NewUint(200)}}, + {Owner: "p1", Type: types.TransferTypeMakerFeeReceive, Amount: &types.FinancialAmount{Asset: "a1", Amount: num.NewUint(400)}}, + {Owner: "p1", Type: types.TransferTypeMakerFeePay, Amount: &types.FinancialAmount{Asset: "a1", Amount: num.NewUint(300)}}, + {Owner: "p2", Type: types.TransferTypeMakerFeeReceive, Amount: &types.FinancialAmount{Asset: "a1", Amount: num.NewUint(900)}}, + {Owner: "p2", Type: types.TransferTypeMakerFeePay, Amount: &types.FinancialAmount{Asset: "a1", Amount: num.NewUint(800)}}, + {Owner: "p2", Type: types.TransferTypeMakerFeeReceive, Amount: &types.FinancialAmount{Asset: "a1", Amount: num.NewUint(600)}}, + {Owner: "p2", Type: types.TransferTypeMakerFeePay, Amount: &types.FinancialAmount{Asset: "a1", Amount: num.NewUint(200)}}, + } + tracker.UpdateFeesFromTransfers("a1", "m1", transfersM1) + + transfersM2 := []*types.Transfer{ + {Owner: "p1", Type: types.TransferTypeMakerFeeReceive, Amount: &types.FinancialAmount{Asset: "a2", Amount: num.NewUint(150)}}, + {Owner: "p2", Type: types.TransferTypeMakerFeePay, Amount: &types.FinancialAmount{Asset: "a2", Amount: num.NewUint(150)}}, + } + tracker.UpdateFeesFromTransfers("a1", "m2", transfersM2) + + tracker.PublishGameMetric(ctx, []*vgproto.DispatchStrategy{ds1, ds2, ds3, ds4, ds5, ds6, ds7, ds8}, time.Unix(10, 0)) + require.Equal(t, 8, len(gameScoreEvents)) + + ps1 := gameScoreEvents[0].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps1[0].Party) + require.Equal(t, "0.3333333333333333", ps1[0].Score) + require.Equal(t, "p2", ps1[1].Party) + require.Equal(t, "0.6666666666666667", ps1[1].Score) + + ps2 := gameScoreEvents[1].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps2[0].Party) + require.Equal(t, "0", ps2[0].Score) + require.False(t, ps2[0].IsEligible) + require.Equal(t, "p2", ps2[1].Party) + require.Equal(t, "1", ps2[1].Score) + + ps3 := gameScoreEvents[2].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps3[0].Party) + require.Equal(t, "0.303030303030303", ps3[0].Score) + require.Equal(t, "p2", ps3[1].Party) + require.Equal(t, "0.696969696969697", ps3[1].Score) + + ps4 := gameScoreEvents[3].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps4[0].Party) + require.Equal(t, "0.303030303030303", ps4[0].Score) + require.Equal(t, "p2", ps4[1].Party) + require.Equal(t, "0.696969696969697", ps4[1].Score) + + ps5 := gameScoreEvents[4].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps5[0].Party) + require.Equal(t, "0.25", ps5[0].Score) + require.Equal(t, "p2", ps5[1].Party) + require.Equal(t, "0.75", ps5[1].Score) + + ps6 := gameScoreEvents[5].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps6[0].Party) + require.Equal(t, "1", ps6[0].Score) + require.Equal(t, "p2", ps6[1].Party) + require.Equal(t, "0", ps6[1].Score) + require.False(t, ps6[1].IsEligible) + + ps7 := gameScoreEvents[6].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps7[0].Party) + require.Equal(t, "0.3023255813953488", ps7[0].Score) + require.Equal(t, "p2", ps7[1].Party) + require.Equal(t, "0.6976744186046512", ps7[1].Score) + + ps8 := gameScoreEvents[7].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps8[0].Party) + require.Equal(t, "0.3023255813953488", ps8[0].Score) + require.Equal(t, "p2", ps8[1].Party) + require.Equal(t, "0.6976744186046512", ps8[1].Score) + + epochService.target(context.Background(), types.Epoch{Seq: 1, Action: vgproto.EpochAction_EPOCH_ACTION_END}) + epochService.target(context.Background(), types.Epoch{Seq: 2, Action: vgproto.EpochAction_EPOCH_ACTION_START}) + + ds1.WindowLength = 2 + ds2.WindowLength = 2 + ds3.WindowLength = 2 + ds4.WindowLength = 2 + ds5.WindowLength = 2 + ds6.WindowLength = 2 + ds7.WindowLength = 2 + ds8.WindowLength = 2 + + // pay/receive some fees in me for the new epoch + transfersM1 = []*types.Transfer{ + {Owner: "p1", Type: types.TransferTypeMakerFeeReceive, Amount: &types.FinancialAmount{Asset: "a1", Amount: num.NewUint(300)}}, + {Owner: "p1", Type: types.TransferTypeMakerFeePay, Amount: &types.FinancialAmount{Asset: "a1", Amount: num.NewUint(100)}}, + {Owner: "p2", Type: types.TransferTypeMakerFeeReceive, Amount: &types.FinancialAmount{Asset: "a1", Amount: num.NewUint(900)}}, + } + tracker.UpdateFeesFromTransfers("a1", "m1", transfersM1) + + gameScoreEvents = []events.Event{} + tracker.PublishGameMetric(ctx, []*vgproto.DispatchStrategy{ds1, ds2, ds3, ds4, ds5, ds6, ds7, ds8}, time.Unix(20, 0)) + require.Equal(t, 8, len(gameScoreEvents)) + + ps1 = gameScoreEvents[0].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps1[0].Party) + require.Equal(t, "0.375", ps1[0].Score) + require.Equal(t, "p2", ps1[1].Party) + require.Equal(t, "0.625", ps1[1].Score) + + ps2 = gameScoreEvents[1].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps2[0].Party) + require.Equal(t, "0", ps2[0].Score) + require.False(t, ps2[0].IsEligible) + require.Equal(t, "p2", ps2[1].Party) + require.Equal(t, "1", ps2[1].Score) + + ps3 = gameScoreEvents[2].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps3[0].Party) + require.Equal(t, "0.3428571428571429", ps3[0].Score) + require.Equal(t, "p2", ps3[1].Party) + require.Equal(t, "0.6571428571428571", ps3[1].Score) + + ps4 = gameScoreEvents[3].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps4[0].Party) + require.Equal(t, "0.3428571428571429", ps4[0].Score) + require.Equal(t, "p2", ps4[1].Party) + require.Equal(t, "0.6571428571428571", ps4[1].Score) + + ps5 = gameScoreEvents[4].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps5[0].Party) + require.Equal(t, "0.25", ps5[0].Score) + require.Equal(t, "p2", ps5[1].Party) + require.Equal(t, "0.75", ps5[1].Score) + + ps6 = gameScoreEvents[5].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps6[0].Party) + require.Equal(t, "1", ps6[0].Score) + require.Equal(t, "p2", ps6[1].Party) + require.Equal(t, "0", ps6[1].Score) + require.False(t, ps6[1].IsEligible) + + ps7 = gameScoreEvents[6].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps7[0].Party) + require.Equal(t, "0.2835820895522388", ps7[0].Score) + require.Equal(t, "p2", ps7[1].Party) + require.Equal(t, "0.7164179104477612", ps7[1].Score) + + ps8 = gameScoreEvents[7].StreamMessage().GetGameScores().PartyScores + require.Equal(t, "p1", ps8[0].Party) + require.Equal(t, "0.2835820895522388", ps8[0].Score) + require.Equal(t, "p2", ps8[1].Party) + require.Equal(t, "0.7164179104477612", ps8[1].Score) +} diff --git a/core/netparams/defaults.go b/core/netparams/defaults.go index cef5923ac03..7e52e3d482b 100644 --- a/core/netparams/defaults.go +++ b/core/netparams/defaults.go @@ -295,6 +295,7 @@ func defaultNetParams() map[string]value { RewardsVestingBaseRate: NewDecimal(gtD0, lteD1).Mutable(true).MustUpdate("0.25"), RewardsVestingMinimumTransfer: NewDecimal(gtD0).Mutable(true).MustUpdate("10"), RewardsVestingBenefitTiers: NewJSON(&proto.VestingBenefitTiers{}, types.CheckUntypedVestingBenefitTier).Mutable(true).MustUpdate(`{"tiers": []}`), + RewardsUpdateFrequency: NewDuration(gte1s).Mutable(true).MustUpdate("10m"), // Referral program ReferralProgramMaxReferralTiers: NewUint(UintGTE(num.NewUint(0)), UintLTE(num.NewUint(100))).Mutable(true).MustUpdate("10"), diff --git a/core/netparams/keys.go b/core/netparams/keys.go index 46a3ccbcc53..b0d60e657eb 100644 --- a/core/netparams/keys.go +++ b/core/netparams/keys.go @@ -155,6 +155,7 @@ const ( RewardMarketCreationQuantumMultiple = "rewards.marketCreationQuantumMultiple" MinEpochsInTeamForMetricRewardEligibility = "rewards.team.minEpochsInTeam" + RewardsUpdateFrequency = "rewards.updateFrequency" // spam policies params. SpamProtectionMaxVotes = "spam.protection.max.votes" @@ -271,6 +272,7 @@ var Deprecated = map[string]struct{}{ } var AllKeys = map[string]struct{}{ + RewardsUpdateFrequency: {}, SpamProtectionMaxUpdatePartyProfile: {}, SpamProtectionUpdateProfileMinFunds: {}, GovernanceProposalVolumeDiscountProgramMinClose: {}, diff --git a/core/processor/abci.go b/core/processor/abci.go index a18547adf75..78b93486b56 100644 --- a/core/processor/abci.go +++ b/core/processor/abci.go @@ -975,6 +975,7 @@ func (app *App) OnEndBlock(blockHeight uint64) (tmtypes.ValidatorUpdates, types1 app.epoch.OnBlockEnd(app.blockCtx) app.stateVar.OnBlockEnd(app.blockCtx) + app.banking.OnBlockEnd(app.blockCtx, app.currentTimestamp) powerUpdates := app.top.GetValidatorPowerUpdates() if len(powerUpdates) == 0 { diff --git a/core/processor/mocks/mocks.go b/core/processor/mocks/mocks.go index 8a4428eb4ec..013c8e59ad8 100644 --- a/core/processor/mocks/mocks.go +++ b/core/processor/mocks/mocks.go @@ -1734,6 +1734,18 @@ func (mr *MockBankingMockRecorder) NewGovernanceTransfer(arg0, arg1, arg2, arg3 return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NewGovernanceTransfer", reflect.TypeOf((*MockBanking)(nil).NewGovernanceTransfer), arg0, arg1, arg2, arg3) } +// OnBlockEnd mocks base method. +func (m *MockBanking) OnBlockEnd(arg0 context.Context, arg1 time.Time) { + m.ctrl.T.Helper() + m.ctrl.Call(m, "OnBlockEnd", arg0, arg1) +} + +// OnBlockEnd indicates an expected call of OnBlockEnd. +func (mr *MockBankingMockRecorder) OnBlockEnd(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "OnBlockEnd", reflect.TypeOf((*MockBanking)(nil).OnBlockEnd), arg0, arg1) +} + // TransferFunds mocks base method. func (m *MockBanking) TransferFunds(arg0 context.Context, arg1 *types.TransferFunds) error { m.ctrl.T.Helper() diff --git a/core/processor/processor.go b/core/processor/processor.go index 7a02ff22717..12e937d707f 100644 --- a/core/processor/processor.go +++ b/core/processor/processor.go @@ -229,6 +229,7 @@ type Banking interface { VerifyGovernanceTransfer(transfer *types.NewTransferConfiguration) error VerifyCancelGovernanceTransfer(transferID string) error CancelGovTransfer(ctx context.Context, ID string) error + OnBlockEnd(ctx context.Context, now time.Time) } // NetworkParameters ... diff --git a/core/protocol/all_services.go b/core/protocol/all_services.go index 1df9a5639c1..3742fb6692a 100644 --- a/core/protocol/all_services.go +++ b/core/protocol/all_services.go @@ -891,6 +891,10 @@ func (svcs *allServices) setupNetParameters(powWatchers []netparams.WatchParam) Param: netparams.TransferFeeFactor, Watcher: svcs.banking.OnTransferFeeFactorUpdate, }, + { + Param: netparams.RewardsUpdateFrequency, + Watcher: svcs.banking.OnRewardsUpdateFrequencyUpdate, + }, { Param: netparams.TransferFeeMaxQuantumAmount, Watcher: svcs.banking.OnMaxQuantumAmountUpdate, diff --git a/core/rewards/engine.go b/core/rewards/engine.go index 2d06ea1c28d..18dad626904 100644 --- a/core/rewards/engine.go +++ b/core/rewards/engine.go @@ -361,6 +361,16 @@ func (e *Engine) getRewardMultiplierForParty(party string) num.Decimal { return asMultiplier.Mul(vsMultiplier) } +func filterEligible(ps []*types.PartyContributionScore) []*types.PartyContributionScore { + filtered := []*types.PartyContributionScore{} + for _, psEntry := range ps { + if psEntry.IsEligible { + filtered = append(filtered, psEntry) + } + } + return filtered +} + // calculateRewardTypeForAsset calculates the payout for a given asset and reward type. // for market based rewards, we only care about account for specific markets (as opposed to global account for an asset). func (e *Engine) calculateRewardTypeForAsset(ctx context.Context, epochSeq, asset string, rewardType types.AccountType, account *types.Account, validatorData []*types.ValidatorData, validatorNormalisedScores map[string]num.Decimal, timestamp time.Time, factor num.Decimal, rankingScoresContributions []*types.PartyContributionScore) *payout { @@ -391,7 +401,7 @@ func (e *Engine) calculateRewardTypeForAsset(ctx context.Context, epochSeq, asse takerFeesPaidInRewardAsset = e.convertTakerFeesToRewardAsset(takerFeesPaid, ds.AssetForMetric, asset) } if ds.EntityScope == vega.EntityScope_ENTITY_SCOPE_INDIVIDUALS { - partyScores := e.marketActivityTracker.CalculateMetricForIndividuals(ctx, ds) + partyScores := filterEligible(e.marketActivityTracker.CalculateMetricForIndividuals(ctx, ds)) partyRewardFactors := map[string]num.Decimal{} for _, pcs := range partyScores { partyRewardFactors[pcs.Party] = e.getRewardMultiplierForParty(pcs.Party) @@ -399,6 +409,14 @@ func (e *Engine) calculateRewardTypeForAsset(ctx context.Context, epochSeq, asse return calculateRewardsByContributionIndividual(epochSeq, account.Asset, account.ID, account.Balance, partyScores, partyRewardFactors, timestamp, ds, takerFeesPaidInRewardAsset) } else { teamScores, partyScores := e.marketActivityTracker.CalculateMetricForTeams(ctx, ds) + filteredPartyScore := map[string][]*types.PartyContributionScore{} + for t, team := range partyScores { + filtered := filterEligible(team) + if len(filtered) > 0 { + filteredPartyScore[t] = filtered + } + } + partyScores = filteredPartyScore partyRewardFactors := map[string]num.Decimal{} for _, team := range partyScores { for _, pcs := range team { diff --git a/core/types/banking_snapshot.go b/core/types/banking_snapshot.go index bbdd266bf0e..43b49dfe698 100644 --- a/core/types/banking_snapshot.go +++ b/core/types/banking_snapshot.go @@ -16,6 +16,8 @@ package types import ( + "time" + checkpointpb "code.vegaprotocol.io/vega/protos/vega/checkpoint/v1" snapshot "code.vegaprotocol.io/vega/protos/vega/snapshot/v1" ) @@ -567,12 +569,14 @@ func PayloadBankingTransferFeeDiscountsFromProto(pbd *snapshot.Payload_BankingTr type PayloadBankingRecurringTransfers struct { BankingRecurringTransfers *checkpointpb.RecurringTransfers + NextMetricUpdate time.Time } func (p PayloadBankingRecurringTransfers) IntoProto() *snapshot.Payload_BankingRecurringTransfers { return &snapshot.Payload_BankingRecurringTransfers{ BankingRecurringTransfers: &snapshot.BankingRecurringTransfers{ RecurringTransfers: p.BankingRecurringTransfers, + NextMetricUpdate: p.NextMetricUpdate.UnixNano(), }, } } @@ -594,5 +598,6 @@ func (*PayloadBankingRecurringTransfers) Namespace() SnapshotNamespace { func PayloadBankingRecurringTransfersFromProto(pbd *snapshot.Payload_BankingRecurringTransfers) *PayloadBankingRecurringTransfers { return &PayloadBankingRecurringTransfers{ BankingRecurringTransfers: pbd.BankingRecurringTransfers.RecurringTransfers, + NextMetricUpdate: time.Unix(0, pbd.BankingRecurringTransfers.NextMetricUpdate), } } diff --git a/core/types/fee_score.go b/core/types/fee_score.go index 597255d2be9..fe5520efd12 100644 --- a/core/types/fee_score.go +++ b/core/types/fee_score.go @@ -22,8 +22,13 @@ import ( // PartyContributionScore represents the fraction the party has in the total fee. type PartyContributionScore struct { - Party string - Score num.Decimal + Party string + Score num.Decimal + StakingBalance *num.Uint + OpenVolume *num.Uint + TotalFeesPaid *num.Uint + IsEligible bool + RankingIndex int64 } type MarketContributionScore struct { diff --git a/datanode/api/server.go b/datanode/api/server.go index ea8e9912b52..b8470aa94e7 100644 --- a/datanode/api/server.go +++ b/datanode/api/server.go @@ -180,6 +180,7 @@ type GRPCServer struct { gamesService *service.Games marginModesService *service.MarginModes timeWeightedNotionalPositionService *service.TimeWeightedNotionalPosition + gameScoreService *service.GameScore eventObserver *eventObserver @@ -250,6 +251,7 @@ func NewGRPCServer( gameService *service.Games, marginModesService *service.MarginModes, timeWeightedNotionalPositionService *service.TimeWeightedNotionalPosition, + gameScoreService *service.GameScore, ) *GRPCServer { // setup logger log = log.Named(namedLogger) @@ -319,6 +321,7 @@ func NewGRPCServer( gamesService: gameService, marginModesService: marginModesService, timeWeightedNotionalPositionService: timeWeightedNotionalPositionService, + gameScoreService: gameScoreService, eventObserver: &eventObserver{ log: log, @@ -558,6 +561,7 @@ func (g *GRPCServer) Start(ctx context.Context, lis net.Listener) error { gamesService: g.gamesService, marginModesService: g.marginModesService, twNotionalPositionService: g.timeWeightedNotionalPositionService, + gameScoreService: g.gameScoreService, } protoapi.RegisterTradingDataServiceServer(g.srv, tradingDataSvcV2) diff --git a/datanode/api/trading_data_v2.go b/datanode/api/trading_data_v2.go index ef8e86e64a5..1396b1f261a 100644 --- a/datanode/api/trading_data_v2.go +++ b/datanode/api/trading_data_v2.go @@ -131,6 +131,7 @@ type TradingDataServiceV2 struct { gamesService *service.Games marginModesService *service.MarginModes twNotionalPositionService *service.TimeWeightedNotionalPosition + gameScoreService *service.GameScore } func (t *TradingDataServiceV2) GetPartyVestingStats( @@ -287,6 +288,94 @@ func (t *TradingDataServiceV2) ListFundingPayments(ctx context.Context, req *v2. }, nil } +func (t *TradingDataServiceV2) ListGamePartyScores(ctx context.Context, req *v2.ListGamePartyScoresRequest) (*v2.ListGamePartyScoresResponse, error) { + defer metrics.StartAPIRequestAndTimeGRPC("ListGamePartyScore")() + pagination, err := entities.CursorPaginationFromProto(req.Pagination) + if err != nil { + return nil, formatE(ErrInvalidPagination, err) + } + + var partyIDs []entities.PartyID + var teamIDs []entities.TeamID + var gameIDs []entities.GameID + if req.Filter != nil { + partyIDs = make([]entities.PartyID, 0, len(req.Filter.PartyIds)) + for _, pid := range req.Filter.PartyIds { + partyIDs = append(partyIDs, entities.PartyID(pid)) + } + teamIDs = make([]entities.TeamID, 0, len(req.Filter.TeamIds)) + for _, tid := range req.Filter.TeamIds { + teamIDs = append(teamIDs, entities.TeamID(tid)) + } + + gameIDs = make([]entities.GameID, 0, len(req.Filter.GameIds)) + for _, gid := range req.Filter.GameIds { + gameIDs = append(gameIDs, entities.GameID(gid)) + } + } + + partyScores, pageInfo, err := t.gameScoreService.ListPartyScores( + ctx, gameIDs, partyIDs, teamIDs, pagination) + if err != nil { + return nil, formatE(err) + } + + edges, err := makeEdges[*v2.GamePartyScoresEdge](partyScores) + if err != nil { + return nil, formatE(err) + } + + connection := &v2.GamePartyScoresConnection{ + Edges: edges, + PageInfo: pageInfo.ToProto(), + } + + return &v2.ListGamePartyScoresResponse{ + PartyScores: connection, + }, nil +} + +func (t *TradingDataServiceV2) ListGameTeamScores(ctx context.Context, req *v2.ListGameTeamScoresRequest) (*v2.ListGameTeamScoresResponse, error) { + defer metrics.StartAPIRequestAndTimeGRPC("ListGameTeamScores")() + pagination, err := entities.CursorPaginationFromProto(req.Pagination) + if err != nil { + return nil, formatE(ErrInvalidPagination, err) + } + var teamIDs []entities.TeamID + var gameIDs []entities.GameID + if req.Filter != nil { + teamIDs = make([]entities.TeamID, 0, len(req.Filter.TeamIds)) + for _, tid := range req.Filter.TeamIds { + teamIDs = append(teamIDs, entities.TeamID(tid)) + } + + gameIDs = make([]entities.GameID, 0, len(req.Filter.GameIds)) + for _, gid := range req.Filter.GameIds { + gameIDs = append(gameIDs, entities.GameID(gid)) + } + } + + teamScores, pageInfo, err := t.gameScoreService.ListTeamScores( + ctx, gameIDs, teamIDs, pagination) + if err != nil { + return nil, formatE(err) + } + + edges, err := makeEdges[*v2.GameTeamScoresEdge](teamScores) + if err != nil { + return nil, formatE(err) + } + + connection := &v2.GameTeamScoresConnection{ + Edges: edges, + PageInfo: pageInfo.ToProto(), + } + + return &v2.ListGameTeamScoresResponse{ + TeamScores: connection, + }, nil +} + // ListAccounts lists accounts matching the request. func (t *TradingDataServiceV2) ListAccounts(ctx context.Context, req *v2.ListAccountsRequest) (*v2.ListAccountsResponse, error) { defer metrics.StartAPIRequestAndTimeGRPC("ListAccountsV2")() diff --git a/datanode/api/trading_test.go b/datanode/api/trading_test.go index d0f2c6c6b57..1c4b2f90b9f 100644 --- a/datanode/api/trading_test.go +++ b/datanode/api/trading_test.go @@ -165,6 +165,7 @@ func getTestGRPCServer(t *testing.T, ctx context.Context) (tidy func(), conn *gr gameService := service.NewGames(sqlstore.NewGames(sqlConn)) marginModesService := service.NewMarginModes(sqlstore.NewMarginModes(sqlConn)) timeWeightedNotionPositionService := service.NewTimeWeightedNotionalPosition(sqlstore.NewTimeWeightedNotionalPosition(sqlConn)) + gameScoreService := service.NewGameScore(sqlstore.NewGameScores(sqlConn), logger) g := api.NewGRPCServer( logger, @@ -225,6 +226,7 @@ func getTestGRPCServer(t *testing.T, ctx context.Context) (tidy func(), conn *gr gameService, marginModesService, timeWeightedNotionPositionService, + gameScoreService, ) if g == nil { err = fmt.Errorf("failed to create gRPC server") diff --git a/datanode/broker/convert.go b/datanode/broker/convert.go index 3b21289d6ff..d5434229d9f 100644 --- a/datanode/broker/convert.go +++ b/datanode/broker/convert.go @@ -196,6 +196,8 @@ func toEvent(ctx context.Context, be *eventspb.BusEvent) events.Event { return events.TimeWeightedNotionalPositionUpdatedEventFromStream(ctx, be) case eventspb.BusEventType_BUS_EVENT_TYPE_CANCELLED_ORDERS: return events.CancelledOrdersEventFromStream(ctx, be) + case eventspb.BusEventType_BUS_EVENT_TYPE_GAME_SCORES: + return events.GameScoresEventFromStream(ctx, be) } return nil diff --git a/datanode/entities/entities.go b/datanode/entities/entities.go index 801b49f361c..6f0b6eccb16 100644 --- a/datanode/entities/entities.go +++ b/datanode/entities/entities.go @@ -27,7 +27,7 @@ type Entities interface { LiquidityProvider | FundingPeriod | FundingPeriodDataPoint | ReferralSet | ReferralSetRefereeStats | FlattenReferralSetStats | Team | TeamMember | TeamMemberHistory | FundingPayment | FlattenVolumeDiscountStats | PaidLiquidityFeesStats | CurrentAndPreviousLiquidityProvisions | TransferDetails | Game | TeamsStatistics | TeamMembersStatistics | - PartyMarginMode | PartyProfile + PartyMarginMode | PartyProfile | GamePartyScore | GameTeamScore } type PagedEntity[T proto.Message] interface { diff --git a/datanode/entities/game_scores.go b/datanode/entities/game_scores.go new file mode 100644 index 00000000000..944eff9b488 --- /dev/null +++ b/datanode/entities/game_scores.go @@ -0,0 +1,217 @@ +// Copyright (C) 2023 Gobalsky Labs Limited +// +// 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 entities + +import ( + "encoding/json" + "fmt" + "time" + + "code.vegaprotocol.io/vega/libs/num" + v2 "code.vegaprotocol.io/vega/protos/data-node/api/v2" + eventspb "code.vegaprotocol.io/vega/protos/vega/events/v1" + + "github.com/shopspring/decimal" +) + +type GamePartyScore struct { + GameID GameID + TeamID *TeamID + EpochID int64 + PartyID PartyID + Score decimal.Decimal + StakingBalance decimal.Decimal + OpenVolume decimal.Decimal + TotalFeesPaid decimal.Decimal + IsEligible bool + Rank *uint64 + VegaTime time.Time +} + +func (pgs GamePartyScore) ToProto() *eventspb.GamePartyScore { + var teamID *string + if pgs.TeamID != nil { + tid := pgs.TeamID.String() + teamID = &tid + } + return &eventspb.GamePartyScore{ + GameId: pgs.GameID.String(), + Party: pgs.PartyID.String(), + Epoch: pgs.EpochID, + TeamId: teamID, + Score: pgs.Score.String(), + StakingBalance: pgs.StakingBalance.String(), + OpenVolume: pgs.OpenVolume.String(), + TotalFeesPaid: pgs.TotalFeesPaid.String(), + IsEligible: pgs.IsEligible, + Rank: pgs.Rank, + Time: pgs.VegaTime.UnixNano(), + } +} + +type GameTeamScore struct { + GameID GameID + TeamID TeamID + EpochID int64 + Score decimal.Decimal + VegaTime time.Time +} + +func (pgs GameTeamScore) ToProto() *eventspb.GameTeamScore { + return &eventspb.GameTeamScore{ + GameId: pgs.GameID.String(), + Epoch: pgs.EpochID, + TeamId: pgs.TeamID.String(), + Score: pgs.Score.String(), + Time: pgs.VegaTime.UnixNano(), + } +} + +func GameScoresFromProto(gs *eventspb.GameScores, txHash TxHash, vegaTime time.Time, seqNum uint64) ([]GameTeamScore, []GamePartyScore, error) { + ts := make([]GameTeamScore, 0, len(gs.TeamScores)) + ps := []GamePartyScore{} + for _, gsTeam := range gs.TeamScores { + score, err := num.DecimalFromString(gsTeam.Score) + if err != nil { + return nil, nil, err + } + ts = append(ts, GameTeamScore{ + GameID: (ID[_Game])(gsTeam.GameId), + TeamID: ID[_Team](gsTeam.TeamId), + EpochID: gsTeam.Epoch, + Score: score, + VegaTime: vegaTime, + }) + } + for _, gsParty := range gs.PartyScores { + score, err := num.DecimalFromString(gsParty.Score) + if err != nil { + return nil, nil, err + } + var stakingBalance num.Decimal + if len(gsParty.StakingBalance) > 0 { + stakingBalance, err = num.DecimalFromString(gsParty.StakingBalance) + if err != nil { + return nil, nil, err + } + } + var openVolume num.Decimal + if len(gsParty.OpenVolume) > 0 { + openVolume, err = num.DecimalFromString(gsParty.OpenVolume) + if err != nil { + return nil, nil, err + } + } + var totalFeesPaid num.Decimal + if len(gsParty.TotalFeesPaid) > 0 { + totalFeesPaid, err = num.DecimalFromString(gsParty.TotalFeesPaid) + if err != nil { + return nil, nil, err + } + } + ps = append(ps, GamePartyScore{ + GameID: (ID[_Game])(gsParty.GameId), + EpochID: gsParty.Epoch, + PartyID: ID[_Party](gsParty.Party), + Score: score, + StakingBalance: stakingBalance, + OpenVolume: openVolume, + TotalFeesPaid: totalFeesPaid, + IsEligible: gsParty.IsEligible, + VegaTime: vegaTime, + }) + } + + return ts, ps, nil +} + +func (pgs GamePartyScore) Cursor() *Cursor { + cursor := PartyGameScoreCursor{ + GameID: pgs.GameID.String(), + PartyID: pgs.PartyID.String(), + EpochID: pgs.EpochID, + VegaTime: pgs.VegaTime, + } + return NewCursor(cursor.String()) +} + +func (pgs GamePartyScore) ToProtoEdge(_ ...any) (*v2.GamePartyScoresEdge, error) { + return &v2.GamePartyScoresEdge{ + Node: pgs.ToProto(), + Cursor: pgs.Cursor().Encode(), + }, nil +} + +func (pgs GameTeamScore) Cursor() *Cursor { + cursor := TeamGameScoreCursor{ + GameID: pgs.GameID.String(), + TeamID: pgs.TeamID.String(), + EpochID: pgs.EpochID, + VegaTime: pgs.VegaTime, + } + return NewCursor(cursor.String()) +} + +func (pgs GameTeamScore) ToProtoEdge(_ ...any) (*v2.GameTeamScoresEdge, error) { + return &v2.GameTeamScoresEdge{ + Node: pgs.ToProto(), + Cursor: pgs.Cursor().Encode(), + }, nil +} + +type PartyGameScoreCursor struct { + GameID string `json:"game_id"` + PartyID string `json:"party_id"` + EpochID int64 `json:"epoch_id"` + VegaTime time.Time `json:"vega_time"` +} + +func (pg PartyGameScoreCursor) String() string { + bs, err := json.Marshal(pg) + if err != nil { + panic(fmt.Errorf("marshalling party game cursor: %w", err)) + } + return string(bs) +} + +func (pg *PartyGameScoreCursor) Parse(cursorString string) error { + if cursorString == "" { + return nil + } + return json.Unmarshal([]byte(cursorString), pg) +} + +type TeamGameScoreCursor struct { + GameID string `json:"game_id"` + TeamID string `json:"team_id"` + EpochID int64 `json:"epoch_id"` + VegaTime time.Time `json:"vega_time"` +} + +func (pg TeamGameScoreCursor) String() string { + bs, err := json.Marshal(pg) + if err != nil { + panic(fmt.Errorf("marshalling team game score cursor: %w", err)) + } + return string(bs) +} + +func (pg *TeamGameScoreCursor) Parse(cursorString string) error { + if cursorString == "" { + return nil + } + return json.Unmarshal([]byte(cursorString), pg) +} diff --git a/datanode/entities/time_weighted_notional_position.go b/datanode/entities/time_weighted_notional_position.go index c4d0f398e2f..cb6be8f6a62 100644 --- a/datanode/entities/time_weighted_notional_position.go +++ b/datanode/entities/time_weighted_notional_position.go @@ -16,9 +16,9 @@ package entities import ( - "strconv" "time" + "code.vegaprotocol.io/vega/libs/num" v2 "code.vegaprotocol.io/vega/protos/data-node/api/v2" eventspb "code.vegaprotocol.io/vega/protos/vega/events/v1" ) @@ -28,12 +28,12 @@ type TimeWeightedNotionalPosition struct { AssetID AssetID PartyID PartyID GameID GameID - TimeWeightedNotionalPosition uint64 + TimeWeightedNotionalPosition num.Decimal VegaTime time.Time } func TimeWeightedNotionalPositionFromProto(event *eventspb.TimeWeightedNotionalPositionUpdated, vegaTime time.Time) (*TimeWeightedNotionalPosition, error) { - twNotionalPosition, err := strconv.ParseUint(event.TimeWeightedNotionalPosition, 10, 64) + twNotionalPosition, err := num.DecimalFromString(event.TimeWeightedNotionalPosition) if err != nil { return nil, err } @@ -53,7 +53,7 @@ func (tw *TimeWeightedNotionalPosition) ToProto() *v2.TimeWeightedNotionalPositi PartyId: tw.PartyID.String(), GameId: tw.GameID.String(), AtEpoch: tw.EpochSeq, - TimeWeightedNotionalPosition: strconv.FormatUint(tw.TimeWeightedNotionalPosition, 10), + TimeWeightedNotionalPosition: tw.TimeWeightedNotionalPosition.String(), LastUpdated: tw.VegaTime.UnixNano(), } } diff --git a/datanode/gateway/graphql/game_scores_resolver.go b/datanode/gateway/graphql/game_scores_resolver.go new file mode 100644 index 00000000000..9816bff0761 --- /dev/null +++ b/datanode/gateway/graphql/game_scores_resolver.go @@ -0,0 +1,47 @@ +// Copyright (C) 2023 Gobalsky Labs Limited +// +// 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 gql + +import ( + "context" + + v1 "code.vegaprotocol.io/vega/protos/vega/events/v1" +) + +type ( + gamePartyScoresResolver VegaResolverRoot + gameTeamScoresResolver VegaResolverRoot +) + +func (g *gamePartyScoresResolver) EpochID(_ context.Context, obj *v1.GamePartyScore) (int, error) { + return int(obj.Epoch), nil +} + +func (g *gamePartyScoresResolver) PartyID(_ context.Context, obj *v1.GamePartyScore) (string, error) { + return obj.Party, nil +} + +func (g *gamePartyScoresResolver) Rank(_ context.Context, obj *v1.GamePartyScore) (*int, error) { + if obj.Rank == nil { + return nil, nil + } + rank := int(*obj.Rank) + return &rank, nil +} + +func (g *gameTeamScoresResolver) EpochID(ctx context.Context, obj *v1.GameTeamScore) (int, error) { + return int(obj.Epoch), nil +} diff --git a/datanode/gateway/graphql/generated.go b/datanode/gateway/graphql/generated.go index 9aa9598017e..94fdd86a324 100644 --- a/datanode/gateway/graphql/generated.go +++ b/datanode/gateway/graphql/generated.go @@ -85,6 +85,8 @@ type ResolverRoot interface { Future() FutureResolver FutureProduct() FutureProductResolver Game() GameResolver + GamePartyScore() GamePartyScoreResolver + GameTeamScore() GameTeamScoreResolver IcebergOrder() IcebergOrderResolver Instrument() InstrumentResolver InstrumentConfiguration() InstrumentConfigurationResolver @@ -930,6 +932,48 @@ type ComplexityRoot struct { Node func(childComplexity int) int } + GamePartyScore struct { + EpochID func(childComplexity int) int + GameId func(childComplexity int) int + IsEligible func(childComplexity int) int + OpenVolume func(childComplexity int) int + PartyID func(childComplexity int) int + Rank func(childComplexity int) int + Score func(childComplexity int) int + StakingBalance func(childComplexity int) int + TeamId func(childComplexity int) int + Time func(childComplexity int) int + TotalFeesPaid func(childComplexity int) int + } + + GamePartyScoreConnection struct { + Edges func(childComplexity int) int + PageInfo func(childComplexity int) int + } + + GamePartyScoreEdge struct { + Cursor func(childComplexity int) int + Node func(childComplexity int) int + } + + GameTeamScore struct { + EpochID func(childComplexity int) int + GameId func(childComplexity int) int + Score func(childComplexity int) int + TeamId func(childComplexity int) int + Time func(childComplexity int) int + } + + GameTeamScoreConnection struct { + Edges func(childComplexity int) int + PageInfo func(childComplexity int) int + } + + GameTeamScoreEdge struct { + Cursor func(childComplexity int) int + Node func(childComplexity int) int + } + GamesConnection struct { Edges func(childComplexity int) int PageInfo func(childComplexity int) int @@ -2129,6 +2173,8 @@ type ComplexityRoot struct { FundingPayments func(childComplexity int, partyID string, marketID *string, pagination *v2.Pagination) int FundingPeriodDataPoints func(childComplexity int, marketID string, dateRange *v2.DateRange, source *v1.FundingPeriodDataPoint_Source, pagination *v2.Pagination) int FundingPeriods func(childComplexity int, marketID string, dateRange *v2.DateRange, pagination *v2.Pagination) int + GamePartyScores func(childComplexity int, filter *GamePartyScoreFilter, pagination *v2.Pagination) int + GameTeamScores func(childComplexity int, filter *GameTeamScoreFilter, pagination *v2.Pagination) int Games func(childComplexity int, gameID *string, epochFrom *int, epochTo *int, entityScope *vega.EntityScope, teamID *string, partyID *string, pagination *v2.Pagination) int GetMarketDataHistoryConnectionByID func(childComplexity int, id string, start *int64, end *int64, pagination *v2.Pagination) int KeyRotationsConnection func(childComplexity int, id *string, pagination *v2.Pagination) int @@ -3164,6 +3210,15 @@ type GameResolver interface { NumberOfParticipants(ctx context.Context, obj *v2.Game) (int, error) Entities(ctx context.Context, obj *v2.Game) ([]GameEntity, error) } +type GamePartyScoreResolver interface { + EpochID(ctx context.Context, obj *v1.GamePartyScore) (int, error) + PartyID(ctx context.Context, obj *v1.GamePartyScore) (string, error) + + Rank(ctx context.Context, obj *v1.GamePartyScore) (*int, error) +} +type GameTeamScoreResolver interface { + EpochID(ctx context.Context, obj *v1.GameTeamScore) (int, error) +} type IcebergOrderResolver interface { PeakSize(ctx context.Context, obj *vega.IcebergOrder) (string, error) MinimumVisibleSize(ctx context.Context, obj *vega.IcebergOrder) (string, error) @@ -3615,6 +3670,8 @@ type QueryResolver interface { Statistics(ctx context.Context) (*v12.Statistics, error) StopOrder(ctx context.Context, id string) (*v1.StopOrderEvent, error) StopOrders(ctx context.Context, filter *v2.StopOrderFilter, pagination *v2.Pagination) (*v2.StopOrderConnection, error) + GameTeamScores(ctx context.Context, filter *GameTeamScoreFilter, pagination *v2.Pagination) (*v2.GameTeamScoresConnection, error) + GamePartyScores(ctx context.Context, filter *GamePartyScoreFilter, pagination *v2.Pagination) (*v2.GamePartyScoresConnection, error) SuccessorMarkets(ctx context.Context, marketID string, fullHistory *bool, pagination *v2.Pagination) (*v2.SuccessorMarketConnection, error) Teams(ctx context.Context, teamID *string, partyID *string, pagination *v2.Pagination) (*v2.TeamConnection, error) TeamsStatistics(ctx context.Context, teamID *string, aggregationEpochs *int, pagination *v2.Pagination) (*v2.TeamsStatisticsConnection, error) @@ -6850,6 +6907,174 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.GameEdge.Node(childComplexity), true + case "GamePartyScore.epochId": + if e.complexity.GamePartyScore.EpochID == nil { + break + } + + return e.complexity.GamePartyScore.EpochID(childComplexity), true + + case "GamePartyScore.gameId": + if e.complexity.GamePartyScore.GameId == nil { + break + } + + return e.complexity.GamePartyScore.GameId(childComplexity), true + + case "GamePartyScore.isEligible": + if e.complexity.GamePartyScore.IsEligible == nil { + break + } + + return e.complexity.GamePartyScore.IsEligible(childComplexity), true + + case "GamePartyScore.openVolume": + if e.complexity.GamePartyScore.OpenVolume == nil { + break + } + + return e.complexity.GamePartyScore.OpenVolume(childComplexity), true + + case "GamePartyScore.partyId": + if e.complexity.GamePartyScore.PartyID == nil { + break + } + + return e.complexity.GamePartyScore.PartyID(childComplexity), true + + case "GamePartyScore.rank": + if e.complexity.GamePartyScore.Rank == nil { + break + } + + return e.complexity.GamePartyScore.Rank(childComplexity), true + + case "GamePartyScore.score": + if e.complexity.GamePartyScore.Score == nil { + break + } + + return e.complexity.GamePartyScore.Score(childComplexity), true + + case "GamePartyScore.stakingBalance": + if e.complexity.GamePartyScore.StakingBalance == nil { + break + } + + return e.complexity.GamePartyScore.StakingBalance(childComplexity), true + + case "GamePartyScore.teamId": + if e.complexity.GamePartyScore.TeamId == nil { + break + } + + return e.complexity.GamePartyScore.TeamId(childComplexity), true + + case "GamePartyScore.time": + if e.complexity.GamePartyScore.Time == nil { + break + } + + return e.complexity.GamePartyScore.Time(childComplexity), true + + case "GamePartyScore.totalFeesPaid": + if e.complexity.GamePartyScore.TotalFeesPaid == nil { + break + } + + return e.complexity.GamePartyScore.TotalFeesPaid(childComplexity), true + + case "GamePartyScoreConnection.edges": + if e.complexity.GamePartyScoreConnection.Edges == nil { + break + } + + return e.complexity.GamePartyScoreConnection.Edges(childComplexity), true + + case "GamePartyScoreConnection.pageInfo": + if e.complexity.GamePartyScoreConnection.PageInfo == nil { + break + } + + return e.complexity.GamePartyScoreConnection.PageInfo(childComplexity), true + + case "GamePartyScoreEdge.cursor": + if e.complexity.GamePartyScoreEdge.Cursor == nil { + break + } + + return e.complexity.GamePartyScoreEdge.Cursor(childComplexity), true + + case "GamePartyScoreEdge.node": + if e.complexity.GamePartyScoreEdge.Node == nil { + break + } + + return e.complexity.GamePartyScoreEdge.Node(childComplexity), true + + case "GameTeamScore.epochId": + if e.complexity.GameTeamScore.EpochID == nil { + break + } + + return e.complexity.GameTeamScore.EpochID(childComplexity), true + + case "GameTeamScore.gameId": + if e.complexity.GameTeamScore.GameId == nil { + break + } + + return e.complexity.GameTeamScore.GameId(childComplexity), true + + case "GameTeamScore.score": + if e.complexity.GameTeamScore.Score == nil { + break + } + + return e.complexity.GameTeamScore.Score(childComplexity), true + + case "GameTeamScore.teamId": + if e.complexity.GameTeamScore.TeamId == nil { + break + } + + return e.complexity.GameTeamScore.TeamId(childComplexity), true + + case "GameTeamScore.time": + if e.complexity.GameTeamScore.Time == nil { + break + } + + return e.complexity.GameTeamScore.Time(childComplexity), true + + case "GameTeamScoreConnection.edges": + if e.complexity.GameTeamScoreConnection.Edges == nil { + break + } + + return e.complexity.GameTeamScoreConnection.Edges(childComplexity), true + + case "GameTeamScoreConnection.pageInfo": + if e.complexity.GameTeamScoreConnection.PageInfo == nil { + break + } + + return e.complexity.GameTeamScoreConnection.PageInfo(childComplexity), true + + case "GameTeamScoreEdge.cursor": + if e.complexity.GameTeamScoreEdge.Cursor == nil { + break + } + + return e.complexity.GameTeamScoreEdge.Cursor(childComplexity), true + + case "GameTeamScoreEdge.node": + if e.complexity.GameTeamScoreEdge.Node == nil { + break + } + + return e.complexity.GameTeamScoreEdge.Node(childComplexity), true + case "GamesConnection.edges": if e.complexity.GamesConnection.Edges == nil { break @@ -12372,6 +12597,30 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.Query.FundingPeriods(childComplexity, args["marketId"].(string), args["dateRange"].(*v2.DateRange), args["pagination"].(*v2.Pagination)), true + case "Query.gamePartyScores": + if e.complexity.Query.GamePartyScores == nil { + break + } + + args, err := ec.field_Query_gamePartyScores_args(context.TODO(), rawArgs) + if err != nil { + return 0, false + } + + return e.complexity.Query.GamePartyScores(childComplexity, args["filter"].(*GamePartyScoreFilter), args["pagination"].(*v2.Pagination)), true + + case "Query.gameTeamScores": + if e.complexity.Query.GameTeamScores == nil { + break + } + + args, err := ec.field_Query_gameTeamScores_args(context.TODO(), rawArgs) + if err != nil { + return 0, false + } + + return e.complexity.Query.GameTeamScores(childComplexity, args["filter"].(*GameTeamScoreFilter), args["pagination"].(*v2.Pagination)), true + case "Query.games": if e.complexity.Query.Games == nil { break @@ -16225,6 +16474,8 @@ func (e *executableSchema) Exec(ctx context.Context) graphql.ResponseHandler { inputUnmarshalMap := graphql.BuildUnmarshalerMap( ec.unmarshalInputAccountFilter, ec.unmarshalInputDateRange, + ec.unmarshalInputGamePartyScoreFilter, + ec.unmarshalInputGameTeamScoreFilter, ec.unmarshalInputLedgerEntryFilter, ec.unmarshalInputOrderByMarketAndPartyIdsFilter, ec.unmarshalInputOrderByMarketIdsFilter, @@ -18113,6 +18364,54 @@ func (ec *executionContext) field_Query_fundingPeriods_args(ctx context.Context, return args, nil } +func (ec *executionContext) field_Query_gamePartyScores_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { + var err error + args := map[string]interface{}{} + var arg0 *GamePartyScoreFilter + if tmp, ok := rawArgs["filter"]; ok { + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("filter")) + arg0, err = ec.unmarshalOGamePartyScoreFilter2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐGamePartyScoreFilter(ctx, tmp) + if err != nil { + return nil, err + } + } + args["filter"] = arg0 + var arg1 *v2.Pagination + if tmp, ok := rawArgs["pagination"]; ok { + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("pagination")) + arg1, err = ec.unmarshalOPagination2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐPagination(ctx, tmp) + if err != nil { + return nil, err + } + } + args["pagination"] = arg1 + return args, nil +} + +func (ec *executionContext) field_Query_gameTeamScores_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { + var err error + args := map[string]interface{}{} + var arg0 *GameTeamScoreFilter + if tmp, ok := rawArgs["filter"]; ok { + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("filter")) + arg0, err = ec.unmarshalOGameTeamScoreFilter2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐGameTeamScoreFilter(ctx, tmp) + if err != nil { + return nil, err + } + } + args["filter"] = arg0 + var arg1 *v2.Pagination + if tmp, ok := rawArgs["pagination"]; ok { + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("pagination")) + arg1, err = ec.unmarshalOPagination2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐPagination(ctx, tmp) + if err != nil { + return nil, err + } + } + args["pagination"] = arg1 + return args, nil +} + func (ec *executionContext) field_Query_games_args(ctx context.Context, rawArgs map[string]interface{}) (map[string]interface{}, error) { var err error args := map[string]interface{}{} @@ -39997,8 +40296,480 @@ func (ec *executionContext) fieldContext_GameEdge_cursor(ctx context.Context, fi return fc, nil } -func (ec *executionContext) _GamesConnection_edges(ctx context.Context, field graphql.CollectedField, obj *v2.GamesConnection) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_GamesConnection_edges(ctx, field) +func (ec *executionContext) _GamePartyScore_gameId(ctx context.Context, field graphql.CollectedField, obj *v1.GamePartyScore) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_GamePartyScore_gameId(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.GameId, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNID2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_GamePartyScore_gameId(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "GamePartyScore", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type ID does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _GamePartyScore_teamId(ctx context.Context, field graphql.CollectedField, obj *v1.GamePartyScore) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_GamePartyScore_teamId(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.TeamId, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*string) + fc.Result = res + return ec.marshalOID2ᚖstring(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_GamePartyScore_teamId(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "GamePartyScore", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type ID does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _GamePartyScore_epochId(ctx context.Context, field graphql.CollectedField, obj *v1.GamePartyScore) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_GamePartyScore_epochId(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return ec.resolvers.GamePartyScore().EpochID(rctx, obj) + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(int) + fc.Result = res + return ec.marshalNInt2int(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_GamePartyScore_epochId(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "GamePartyScore", + Field: field, + IsMethod: true, + IsResolver: true, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type Int does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _GamePartyScore_partyId(ctx context.Context, field graphql.CollectedField, obj *v1.GamePartyScore) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_GamePartyScore_partyId(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return ec.resolvers.GamePartyScore().PartyID(rctx, obj) + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNID2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_GamePartyScore_partyId(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "GamePartyScore", + Field: field, + IsMethod: true, + IsResolver: true, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type ID does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _GamePartyScore_time(ctx context.Context, field graphql.CollectedField, obj *v1.GamePartyScore) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_GamePartyScore_time(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Time, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(int64) + fc.Result = res + return ec.marshalNTimestamp2int64(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_GamePartyScore_time(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "GamePartyScore", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type Timestamp does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _GamePartyScore_score(ctx context.Context, field graphql.CollectedField, obj *v1.GamePartyScore) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_GamePartyScore_score(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Score, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_GamePartyScore_score(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "GamePartyScore", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _GamePartyScore_stakingBalance(ctx context.Context, field graphql.CollectedField, obj *v1.GamePartyScore) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_GamePartyScore_stakingBalance(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.StakingBalance, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalOString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_GamePartyScore_stakingBalance(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "GamePartyScore", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _GamePartyScore_openVolume(ctx context.Context, field graphql.CollectedField, obj *v1.GamePartyScore) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_GamePartyScore_openVolume(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.OpenVolume, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalOString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_GamePartyScore_openVolume(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "GamePartyScore", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _GamePartyScore_totalFeesPaid(ctx context.Context, field graphql.CollectedField, obj *v1.GamePartyScore) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_GamePartyScore_totalFeesPaid(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.TotalFeesPaid, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_GamePartyScore_totalFeesPaid(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "GamePartyScore", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _GamePartyScore_isEligible(ctx context.Context, field graphql.CollectedField, obj *v1.GamePartyScore) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_GamePartyScore_isEligible(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.IsEligible, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(bool) + fc.Result = res + return ec.marshalNBoolean2bool(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_GamePartyScore_isEligible(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "GamePartyScore", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type Boolean does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _GamePartyScore_rank(ctx context.Context, field graphql.CollectedField, obj *v1.GamePartyScore) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_GamePartyScore_rank(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return ec.resolvers.GamePartyScore().Rank(rctx, obj) + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*int) + fc.Result = res + return ec.marshalOInt2ᚖint(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_GamePartyScore_rank(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "GamePartyScore", + Field: field, + IsMethod: true, + IsResolver: true, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type Int does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _GamePartyScoreConnection_edges(ctx context.Context, field graphql.CollectedField, obj *v2.GamePartyScoresConnection) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_GamePartyScoreConnection_edges(ctx, field) if err != nil { return graphql.Null } @@ -40020,32 +40791,648 @@ func (ec *executionContext) _GamesConnection_edges(ctx context.Context, field gr if resTmp == nil { return graphql.Null } - res := resTmp.([]*v2.GameEdge) + res := resTmp.([]*v2.GamePartyScoresEdge) fc.Result = res - return ec.marshalOGameEdge2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐGameEdge(ctx, field.Selections, res) + return ec.marshalOGamePartyScoreEdge2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐGamePartyScoresEdgeᚄ(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_GamesConnection_edges(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_GamePartyScoreConnection_edges(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "GamesConnection", + Object: "GamePartyScoreConnection", Field: field, IsMethod: false, IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { switch field.Name { case "node": - return ec.fieldContext_GameEdge_node(ctx, field) + return ec.fieldContext_GamePartyScoreEdge_node(ctx, field) case "cursor": - return ec.fieldContext_GameEdge_cursor(ctx, field) + return ec.fieldContext_GamePartyScoreEdge_cursor(ctx, field) } - return nil, fmt.Errorf("no field named %q was found under type GameEdge", field.Name) + return nil, fmt.Errorf("no field named %q was found under type GamePartyScoreEdge", field.Name) }, } return fc, nil } -func (ec *executionContext) _GamesConnection_pageInfo(ctx context.Context, field graphql.CollectedField, obj *v2.GamesConnection) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_GamesConnection_pageInfo(ctx, field) +func (ec *executionContext) _GamePartyScoreConnection_pageInfo(ctx context.Context, field graphql.CollectedField, obj *v2.GamePartyScoresConnection) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_GamePartyScoreConnection_pageInfo(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.PageInfo, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*v2.PageInfo) + fc.Result = res + return ec.marshalOPageInfo2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐPageInfo(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_GamePartyScoreConnection_pageInfo(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "GamePartyScoreConnection", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "hasNextPage": + return ec.fieldContext_PageInfo_hasNextPage(ctx, field) + case "hasPreviousPage": + return ec.fieldContext_PageInfo_hasPreviousPage(ctx, field) + case "startCursor": + return ec.fieldContext_PageInfo_startCursor(ctx, field) + case "endCursor": + return ec.fieldContext_PageInfo_endCursor(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type PageInfo", field.Name) + }, + } + return fc, nil +} + +func (ec *executionContext) _GamePartyScoreEdge_node(ctx context.Context, field graphql.CollectedField, obj *v2.GamePartyScoresEdge) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_GamePartyScoreEdge_node(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Node, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*v1.GamePartyScore) + fc.Result = res + return ec.marshalOGamePartyScore2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚋeventsᚋv1ᚐGamePartyScore(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_GamePartyScoreEdge_node(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "GamePartyScoreEdge", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "gameId": + return ec.fieldContext_GamePartyScore_gameId(ctx, field) + case "teamId": + return ec.fieldContext_GamePartyScore_teamId(ctx, field) + case "epochId": + return ec.fieldContext_GamePartyScore_epochId(ctx, field) + case "partyId": + return ec.fieldContext_GamePartyScore_partyId(ctx, field) + case "time": + return ec.fieldContext_GamePartyScore_time(ctx, field) + case "score": + return ec.fieldContext_GamePartyScore_score(ctx, field) + case "stakingBalance": + return ec.fieldContext_GamePartyScore_stakingBalance(ctx, field) + case "openVolume": + return ec.fieldContext_GamePartyScore_openVolume(ctx, field) + case "totalFeesPaid": + return ec.fieldContext_GamePartyScore_totalFeesPaid(ctx, field) + case "isEligible": + return ec.fieldContext_GamePartyScore_isEligible(ctx, field) + case "rank": + return ec.fieldContext_GamePartyScore_rank(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type GamePartyScore", field.Name) + }, + } + return fc, nil +} + +func (ec *executionContext) _GamePartyScoreEdge_cursor(ctx context.Context, field graphql.CollectedField, obj *v2.GamePartyScoresEdge) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_GamePartyScoreEdge_cursor(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Cursor, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalOString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_GamePartyScoreEdge_cursor(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "GamePartyScoreEdge", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _GameTeamScore_gameId(ctx context.Context, field graphql.CollectedField, obj *v1.GameTeamScore) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_GameTeamScore_gameId(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.GameId, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNID2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_GameTeamScore_gameId(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "GameTeamScore", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type ID does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _GameTeamScore_teamId(ctx context.Context, field graphql.CollectedField, obj *v1.GameTeamScore) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_GameTeamScore_teamId(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.TeamId, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNID2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_GameTeamScore_teamId(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "GameTeamScore", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type ID does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _GameTeamScore_epochId(ctx context.Context, field graphql.CollectedField, obj *v1.GameTeamScore) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_GameTeamScore_epochId(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return ec.resolvers.GameTeamScore().EpochID(rctx, obj) + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(int) + fc.Result = res + return ec.marshalNInt2int(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_GameTeamScore_epochId(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "GameTeamScore", + Field: field, + IsMethod: true, + IsResolver: true, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type Int does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _GameTeamScore_time(ctx context.Context, field graphql.CollectedField, obj *v1.GameTeamScore) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_GameTeamScore_time(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Time, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(int64) + fc.Result = res + return ec.marshalNTimestamp2int64(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_GameTeamScore_time(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "GameTeamScore", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type Timestamp does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _GameTeamScore_score(ctx context.Context, field graphql.CollectedField, obj *v1.GameTeamScore) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_GameTeamScore_score(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Score, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_GameTeamScore_score(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "GameTeamScore", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _GameTeamScoreConnection_edges(ctx context.Context, field graphql.CollectedField, obj *v2.GameTeamScoresConnection) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_GameTeamScoreConnection_edges(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Edges, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.([]*v2.GameTeamScoresEdge) + fc.Result = res + return ec.marshalOGameTeamScoreEdge2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐGameTeamScoresEdgeᚄ(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_GameTeamScoreConnection_edges(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "GameTeamScoreConnection", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "node": + return ec.fieldContext_GameTeamScoreEdge_node(ctx, field) + case "cursor": + return ec.fieldContext_GameTeamScoreEdge_cursor(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type GameTeamScoreEdge", field.Name) + }, + } + return fc, nil +} + +func (ec *executionContext) _GameTeamScoreConnection_pageInfo(ctx context.Context, field graphql.CollectedField, obj *v2.GameTeamScoresConnection) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_GameTeamScoreConnection_pageInfo(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.PageInfo, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*v2.PageInfo) + fc.Result = res + return ec.marshalOPageInfo2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐPageInfo(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_GameTeamScoreConnection_pageInfo(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "GameTeamScoreConnection", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "hasNextPage": + return ec.fieldContext_PageInfo_hasNextPage(ctx, field) + case "hasPreviousPage": + return ec.fieldContext_PageInfo_hasPreviousPage(ctx, field) + case "startCursor": + return ec.fieldContext_PageInfo_startCursor(ctx, field) + case "endCursor": + return ec.fieldContext_PageInfo_endCursor(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type PageInfo", field.Name) + }, + } + return fc, nil +} + +func (ec *executionContext) _GameTeamScoreEdge_node(ctx context.Context, field graphql.CollectedField, obj *v2.GameTeamScoresEdge) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_GameTeamScoreEdge_node(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Node, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*v1.GameTeamScore) + fc.Result = res + return ec.marshalOGameTeamScore2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚋeventsᚋv1ᚐGameTeamScore(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_GameTeamScoreEdge_node(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "GameTeamScoreEdge", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "gameId": + return ec.fieldContext_GameTeamScore_gameId(ctx, field) + case "teamId": + return ec.fieldContext_GameTeamScore_teamId(ctx, field) + case "epochId": + return ec.fieldContext_GameTeamScore_epochId(ctx, field) + case "time": + return ec.fieldContext_GameTeamScore_time(ctx, field) + case "score": + return ec.fieldContext_GameTeamScore_score(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type GameTeamScore", field.Name) + }, + } + return fc, nil +} + +func (ec *executionContext) _GameTeamScoreEdge_cursor(ctx context.Context, field graphql.CollectedField, obj *v2.GameTeamScoresEdge) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_GameTeamScoreEdge_cursor(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Cursor, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalOString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_GameTeamScoreEdge_cursor(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "GameTeamScoreEdge", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _GamesConnection_edges(ctx context.Context, field graphql.CollectedField, obj *v2.GamesConnection) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_GamesConnection_edges(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return obj.Edges, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.([]*v2.GameEdge) + fc.Result = res + return ec.marshalOGameEdge2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐGameEdge(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_GamesConnection_edges(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "GamesConnection", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "node": + return ec.fieldContext_GameEdge_node(ctx, field) + case "cursor": + return ec.fieldContext_GameEdge_cursor(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type GameEdge", field.Name) + }, + } + return fc, nil +} + +func (ec *executionContext) _GamesConnection_pageInfo(ctx context.Context, field graphql.CollectedField, obj *v2.GamesConnection) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_GamesConnection_pageInfo(ctx, field) if err != nil { return graphql.Null } @@ -79008,6 +80395,122 @@ func (ec *executionContext) fieldContext_Query_stopOrders(ctx context.Context, f return fc, nil } +func (ec *executionContext) _Query_gameTeamScores(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Query_gameTeamScores(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return ec.resolvers.Query().GameTeamScores(rctx, fc.Args["filter"].(*GameTeamScoreFilter), fc.Args["pagination"].(*v2.Pagination)) + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*v2.GameTeamScoresConnection) + fc.Result = res + return ec.marshalOGameTeamScoreConnection2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐGameTeamScoresConnection(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_Query_gameTeamScores(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "Query", + Field: field, + IsMethod: true, + IsResolver: true, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "edges": + return ec.fieldContext_GameTeamScoreConnection_edges(ctx, field) + case "pageInfo": + return ec.fieldContext_GameTeamScoreConnection_pageInfo(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type GameTeamScoreConnection", field.Name) + }, + } + defer func() { + if r := recover(); r != nil { + err = ec.Recover(ctx, r) + ec.Error(ctx, err) + } + }() + ctx = graphql.WithFieldContext(ctx, fc) + if fc.Args, err = ec.field_Query_gameTeamScores_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { + ec.Error(ctx, err) + return fc, err + } + return fc, nil +} + +func (ec *executionContext) _Query_gamePartyScores(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Query_gamePartyScores(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { + ctx = rctx // use context from middleware stack in children + return ec.resolvers.Query().GamePartyScores(rctx, fc.Args["filter"].(*GamePartyScoreFilter), fc.Args["pagination"].(*v2.Pagination)) + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*v2.GamePartyScoresConnection) + fc.Result = res + return ec.marshalOGamePartyScoreConnection2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐGamePartyScoresConnection(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_Query_gamePartyScores(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "Query", + Field: field, + IsMethod: true, + IsResolver: true, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "edges": + return ec.fieldContext_GamePartyScoreConnection_edges(ctx, field) + case "pageInfo": + return ec.fieldContext_GamePartyScoreConnection_pageInfo(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type GamePartyScoreConnection", field.Name) + }, + } + defer func() { + if r := recover(); r != nil { + err = ec.Recover(ctx, r) + ec.Error(ctx, err) + } + }() + ctx = graphql.WithFieldContext(ctx, fc) + if fc.Args, err = ec.field_Query_gamePartyScores_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { + ec.Error(ctx, err) + return fc, err + } + return fc, nil +} + func (ec *executionContext) _Query_successorMarkets(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { fc, err := ec.fieldContext_Query_successorMarkets(ctx, field) if err != nil { @@ -104192,6 +105695,81 @@ func (ec *executionContext) unmarshalInputDateRange(ctx context.Context, obj int return it, nil } +func (ec *executionContext) unmarshalInputGamePartyScoreFilter(ctx context.Context, obj interface{}) (GamePartyScoreFilter, error) { + var it GamePartyScoreFilter + asMap := map[string]interface{}{} + for k, v := range obj.(map[string]interface{}) { + asMap[k] = v + } + + fieldsInOrder := [...]string{"game_ids", "team_ids", "party_ids"} + for _, k := range fieldsInOrder { + v, ok := asMap[k] + if !ok { + continue + } + switch k { + case "game_ids": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("game_ids")) + data, err := ec.unmarshalOID2ᚕstringᚄ(ctx, v) + if err != nil { + return it, err + } + it.GameIds = data + case "team_ids": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("team_ids")) + data, err := ec.unmarshalOID2ᚕstringᚄ(ctx, v) + if err != nil { + return it, err + } + it.TeamIds = data + case "party_ids": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("party_ids")) + data, err := ec.unmarshalOID2ᚕstringᚄ(ctx, v) + if err != nil { + return it, err + } + it.PartyIds = data + } + } + + return it, nil +} + +func (ec *executionContext) unmarshalInputGameTeamScoreFilter(ctx context.Context, obj interface{}) (GameTeamScoreFilter, error) { + var it GameTeamScoreFilter + asMap := map[string]interface{}{} + for k, v := range obj.(map[string]interface{}) { + asMap[k] = v + } + + fieldsInOrder := [...]string{"game_ids", "team_ids"} + for _, k := range fieldsInOrder { + v, ok := asMap[k] + if !ok { + continue + } + switch k { + case "game_ids": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("game_ids")) + data, err := ec.unmarshalOID2ᚕstringᚄ(ctx, v) + if err != nil { + return it, err + } + it.GameIds = data + case "team_ids": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("team_ids")) + data, err := ec.unmarshalOID2ᚕstringᚄ(ctx, v) + if err != nil { + return it, err + } + it.TeamIds = data + } + } + + return it, nil +} + func (ec *executionContext) unmarshalInputLedgerEntryFilter(ctx context.Context, obj interface{}) (v2.LedgerEntryFilter, error) { var it v2.LedgerEntryFilter asMap := map[string]interface{}{} @@ -113502,44 +115080,424 @@ func (ec *executionContext) _Game(ctx context.Context, sel ast.SelectionSet, obj } out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) - case "entities": - field := field - - innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { - defer func() { - if r := recover(); r != nil { - ec.Error(ctx, ec.Recover(ctx, r)) - } - }() - res = ec._Game_entities(ctx, field, obj) - if res == graphql.Null { - atomic.AddUint32(&fs.Invalids, 1) - } - return res - } - - if field.Deferrable != nil { - dfs, ok := deferred[field.Deferrable.Label] - di := 0 - if ok { - dfs.AddField(field) - di = len(dfs.Values) - 1 - } else { - dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) - deferred[field.Deferrable.Label] = dfs - } - dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { - return innerFunc(ctx, dfs) - }) - - // don't run the out.Concurrently() call below - out.Values[i] = graphql.Null - continue + case "entities": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._Game_entities(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "rewardAssetId": + out.Values[i] = ec._Game_rewardAssetId(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + +var gameEdgeImplementors = []string{"GameEdge"} + +func (ec *executionContext) _GameEdge(ctx context.Context, sel ast.SelectionSet, obj *v2.GameEdge) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, gameEdgeImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("GameEdge") + case "node": + out.Values[i] = ec._GameEdge_node(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + case "cursor": + out.Values[i] = ec._GameEdge_cursor(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + +var gamePartyScoreImplementors = []string{"GamePartyScore"} + +func (ec *executionContext) _GamePartyScore(ctx context.Context, sel ast.SelectionSet, obj *v1.GamePartyScore) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, gamePartyScoreImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("GamePartyScore") + case "gameId": + out.Values[i] = ec._GamePartyScore_gameId(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "teamId": + out.Values[i] = ec._GamePartyScore_teamId(ctx, field, obj) + case "epochId": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._GamePartyScore_epochId(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "partyId": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._GamePartyScore_partyId(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "time": + out.Values[i] = ec._GamePartyScore_time(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "score": + out.Values[i] = ec._GamePartyScore_score(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "stakingBalance": + out.Values[i] = ec._GamePartyScore_stakingBalance(ctx, field, obj) + case "openVolume": + out.Values[i] = ec._GamePartyScore_openVolume(ctx, field, obj) + case "totalFeesPaid": + out.Values[i] = ec._GamePartyScore_totalFeesPaid(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "isEligible": + out.Values[i] = ec._GamePartyScore_isEligible(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "rank": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._GamePartyScore_rank(ctx, field, obj) + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + +var gamePartyScoreConnectionImplementors = []string{"GamePartyScoreConnection"} + +func (ec *executionContext) _GamePartyScoreConnection(ctx context.Context, sel ast.SelectionSet, obj *v2.GamePartyScoresConnection) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, gamePartyScoreConnectionImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("GamePartyScoreConnection") + case "edges": + out.Values[i] = ec._GamePartyScoreConnection_edges(ctx, field, obj) + case "pageInfo": + out.Values[i] = ec._GamePartyScoreConnection_pageInfo(ctx, field, obj) + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + +var gamePartyScoreEdgeImplementors = []string{"GamePartyScoreEdge"} + +func (ec *executionContext) _GamePartyScoreEdge(ctx context.Context, sel ast.SelectionSet, obj *v2.GamePartyScoresEdge) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, gamePartyScoreEdgeImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("GamePartyScoreEdge") + case "node": + out.Values[i] = ec._GamePartyScoreEdge_node(ctx, field, obj) + case "cursor": + out.Values[i] = ec._GamePartyScoreEdge_cursor(ctx, field, obj) + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + +var gameTeamScoreImplementors = []string{"GameTeamScore"} + +func (ec *executionContext) _GameTeamScore(ctx context.Context, sel ast.SelectionSet, obj *v1.GameTeamScore) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, gameTeamScoreImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("GameTeamScore") + case "gameId": + out.Values[i] = ec._GameTeamScore_gameId(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "teamId": + out.Values[i] = ec._GameTeamScore_teamId(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "epochId": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._GameTeamScore_epochId(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "time": + out.Values[i] = ec._GameTeamScore_time(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) } - - out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) - case "rewardAssetId": - out.Values[i] = ec._Game_rewardAssetId(ctx, field, obj) + case "score": + out.Values[i] = ec._GameTeamScore_score(ctx, field, obj) if out.Values[i] == graphql.Null { atomic.AddUint32(&out.Invalids, 1) } @@ -113566,27 +115524,59 @@ func (ec *executionContext) _Game(ctx context.Context, sel ast.SelectionSet, obj return out } -var gameEdgeImplementors = []string{"GameEdge"} +var gameTeamScoreConnectionImplementors = []string{"GameTeamScoreConnection"} -func (ec *executionContext) _GameEdge(ctx context.Context, sel ast.SelectionSet, obj *v2.GameEdge) graphql.Marshaler { - fields := graphql.CollectFields(ec.OperationContext, sel, gameEdgeImplementors) +func (ec *executionContext) _GameTeamScoreConnection(ctx context.Context, sel ast.SelectionSet, obj *v2.GameTeamScoresConnection) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, gameTeamScoreConnectionImplementors) out := graphql.NewFieldSet(fields) deferred := make(map[string]*graphql.FieldSet) for i, field := range fields { switch field.Name { case "__typename": - out.Values[i] = graphql.MarshalString("GameEdge") + out.Values[i] = graphql.MarshalString("GameTeamScoreConnection") + case "edges": + out.Values[i] = ec._GameTeamScoreConnection_edges(ctx, field, obj) + case "pageInfo": + out.Values[i] = ec._GameTeamScoreConnection_pageInfo(ctx, field, obj) + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + +var gameTeamScoreEdgeImplementors = []string{"GameTeamScoreEdge"} + +func (ec *executionContext) _GameTeamScoreEdge(ctx context.Context, sel ast.SelectionSet, obj *v2.GameTeamScoresEdge) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, gameTeamScoreEdgeImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("GameTeamScoreEdge") case "node": - out.Values[i] = ec._GameEdge_node(ctx, field, obj) - if out.Values[i] == graphql.Null { - out.Invalids++ - } + out.Values[i] = ec._GameTeamScoreEdge_node(ctx, field, obj) case "cursor": - out.Values[i] = ec._GameEdge_cursor(ctx, field, obj) - if out.Values[i] == graphql.Null { - out.Invalids++ - } + out.Values[i] = ec._GameTeamScoreEdge_cursor(ctx, field, obj) default: panic("unknown field " + strconv.Quote(field.Name)) } @@ -130087,6 +132077,44 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) } + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return rrm(innerCtx) }) + case "gameTeamScores": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._Query_gameTeamScores(ctx, field) + return res + } + + rrm := func(ctx context.Context) graphql.Marshaler { + return ec.OperationContext.RootResolverMiddleware(ctx, + func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return rrm(innerCtx) }) + case "gamePartyScores": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._Query_gamePartyScores(ctx, field) + return res + } + + rrm := func(ctx context.Context) graphql.Marshaler { + return ec.OperationContext.RootResolverMiddleware(ctx, + func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + } + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return rrm(innerCtx) }) case "successorMarkets": field := field @@ -141675,7 +143703,163 @@ func (ec *executionContext) marshalNFundingPaymentEdge2ᚕᚖcodeᚗvegaprotocol if !isLen1 { defer wg.Done() } - ret[i] = ec.marshalNFundingPaymentEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐFundingPaymentEdge(ctx, sel, v[i]) + ret[i] = ec.marshalNFundingPaymentEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐFundingPaymentEdge(ctx, sel, v[i]) + } + if isLen1 { + f(i) + } else { + go f(i) + } + + } + wg.Wait() + + for _, e := range ret { + if e == graphql.Null { + return graphql.Null + } + } + + return ret +} + +func (ec *executionContext) marshalNFundingPaymentEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐFundingPaymentEdge(ctx context.Context, sel ast.SelectionSet, v *v2.FundingPaymentEdge) graphql.Marshaler { + if v == nil { + if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { + ec.Errorf(ctx, "the requested element is null which the schema does not allow") + } + return graphql.Null + } + return ec._FundingPaymentEdge(ctx, sel, v) +} + +func (ec *executionContext) marshalNFundingPeriod2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚋeventsᚋv1ᚐFundingPeriod(ctx context.Context, sel ast.SelectionSet, v *v1.FundingPeriod) graphql.Marshaler { + if v == nil { + if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { + ec.Errorf(ctx, "the requested element is null which the schema does not allow") + } + return graphql.Null + } + return ec._FundingPeriod(ctx, sel, v) +} + +func (ec *executionContext) marshalNFundingPeriodConnection2codeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐFundingPeriodConnection(ctx context.Context, sel ast.SelectionSet, v v2.FundingPeriodConnection) graphql.Marshaler { + return ec._FundingPeriodConnection(ctx, sel, &v) +} + +func (ec *executionContext) marshalNFundingPeriodConnection2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐFundingPeriodConnection(ctx context.Context, sel ast.SelectionSet, v *v2.FundingPeriodConnection) graphql.Marshaler { + if v == nil { + if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { + ec.Errorf(ctx, "the requested element is null which the schema does not allow") + } + return graphql.Null + } + return ec._FundingPeriodConnection(ctx, sel, v) +} + +func (ec *executionContext) marshalNFundingPeriodDataPoint2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚋeventsᚋv1ᚐFundingPeriodDataPoint(ctx context.Context, sel ast.SelectionSet, v *v1.FundingPeriodDataPoint) graphql.Marshaler { + if v == nil { + if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { + ec.Errorf(ctx, "the requested element is null which the schema does not allow") + } + return graphql.Null + } + return ec._FundingPeriodDataPoint(ctx, sel, v) +} + +func (ec *executionContext) marshalNFundingPeriodDataPointConnection2codeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐFundingPeriodDataPointConnection(ctx context.Context, sel ast.SelectionSet, v v2.FundingPeriodDataPointConnection) graphql.Marshaler { + return ec._FundingPeriodDataPointConnection(ctx, sel, &v) +} + +func (ec *executionContext) marshalNFundingPeriodDataPointConnection2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐFundingPeriodDataPointConnection(ctx context.Context, sel ast.SelectionSet, v *v2.FundingPeriodDataPointConnection) graphql.Marshaler { + if v == nil { + if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { + ec.Errorf(ctx, "the requested element is null which the schema does not allow") + } + return graphql.Null + } + return ec._FundingPeriodDataPointConnection(ctx, sel, v) +} + +func (ec *executionContext) marshalNFundingPeriodDataPointEdge2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐFundingPeriodDataPointEdgeᚄ(ctx context.Context, sel ast.SelectionSet, v []*v2.FundingPeriodDataPointEdge) graphql.Marshaler { + ret := make(graphql.Array, len(v)) + var wg sync.WaitGroup + isLen1 := len(v) == 1 + if !isLen1 { + wg.Add(len(v)) + } + for i := range v { + i := i + fc := &graphql.FieldContext{ + Index: &i, + Result: &v[i], + } + ctx := graphql.WithFieldContext(ctx, fc) + f := func(i int) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = nil + } + }() + if !isLen1 { + defer wg.Done() + } + ret[i] = ec.marshalNFundingPeriodDataPointEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐFundingPeriodDataPointEdge(ctx, sel, v[i]) + } + if isLen1 { + f(i) + } else { + go f(i) + } + + } + wg.Wait() + + for _, e := range ret { + if e == graphql.Null { + return graphql.Null + } + } + + return ret +} + +func (ec *executionContext) marshalNFundingPeriodDataPointEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐFundingPeriodDataPointEdge(ctx context.Context, sel ast.SelectionSet, v *v2.FundingPeriodDataPointEdge) graphql.Marshaler { + if v == nil { + if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { + ec.Errorf(ctx, "the requested element is null which the schema does not allow") + } + return graphql.Null + } + return ec._FundingPeriodDataPointEdge(ctx, sel, v) +} + +func (ec *executionContext) marshalNFundingPeriodEdge2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐFundingPeriodEdgeᚄ(ctx context.Context, sel ast.SelectionSet, v []*v2.FundingPeriodEdge) graphql.Marshaler { + ret := make(graphql.Array, len(v)) + var wg sync.WaitGroup + isLen1 := len(v) == 1 + if !isLen1 { + wg.Add(len(v)) + } + for i := range v { + i := i + fc := &graphql.FieldContext{ + Index: &i, + Result: &v[i], + } + ctx := graphql.WithFieldContext(ctx, fc) + f := func(i int) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = nil + } + }() + if !isLen1 { + defer wg.Done() + } + ret[i] = ec.marshalNFundingPeriodEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐFundingPeriodEdge(ctx, sel, v[i]) } if isLen1 { f(i) @@ -141695,119 +143879,37 @@ func (ec *executionContext) marshalNFundingPaymentEdge2ᚕᚖcodeᚗvegaprotocol return ret } -func (ec *executionContext) marshalNFundingPaymentEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐFundingPaymentEdge(ctx context.Context, sel ast.SelectionSet, v *v2.FundingPaymentEdge) graphql.Marshaler { - if v == nil { - if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { - ec.Errorf(ctx, "the requested element is null which the schema does not allow") - } - return graphql.Null - } - return ec._FundingPaymentEdge(ctx, sel, v) -} - -func (ec *executionContext) marshalNFundingPeriod2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚋeventsᚋv1ᚐFundingPeriod(ctx context.Context, sel ast.SelectionSet, v *v1.FundingPeriod) graphql.Marshaler { - if v == nil { - if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { - ec.Errorf(ctx, "the requested element is null which the schema does not allow") - } - return graphql.Null - } - return ec._FundingPeriod(ctx, sel, v) -} - -func (ec *executionContext) marshalNFundingPeriodConnection2codeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐFundingPeriodConnection(ctx context.Context, sel ast.SelectionSet, v v2.FundingPeriodConnection) graphql.Marshaler { - return ec._FundingPeriodConnection(ctx, sel, &v) -} - -func (ec *executionContext) marshalNFundingPeriodConnection2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐFundingPeriodConnection(ctx context.Context, sel ast.SelectionSet, v *v2.FundingPeriodConnection) graphql.Marshaler { - if v == nil { - if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { - ec.Errorf(ctx, "the requested element is null which the schema does not allow") - } - return graphql.Null - } - return ec._FundingPeriodConnection(ctx, sel, v) -} - -func (ec *executionContext) marshalNFundingPeriodDataPoint2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚋeventsᚋv1ᚐFundingPeriodDataPoint(ctx context.Context, sel ast.SelectionSet, v *v1.FundingPeriodDataPoint) graphql.Marshaler { +func (ec *executionContext) marshalNFundingPeriodEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐFundingPeriodEdge(ctx context.Context, sel ast.SelectionSet, v *v2.FundingPeriodEdge) graphql.Marshaler { if v == nil { if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { ec.Errorf(ctx, "the requested element is null which the schema does not allow") } return graphql.Null } - return ec._FundingPeriodDataPoint(ctx, sel, v) -} - -func (ec *executionContext) marshalNFundingPeriodDataPointConnection2codeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐFundingPeriodDataPointConnection(ctx context.Context, sel ast.SelectionSet, v v2.FundingPeriodDataPointConnection) graphql.Marshaler { - return ec._FundingPeriodDataPointConnection(ctx, sel, &v) + return ec._FundingPeriodEdge(ctx, sel, v) } -func (ec *executionContext) marshalNFundingPeriodDataPointConnection2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐFundingPeriodDataPointConnection(ctx context.Context, sel ast.SelectionSet, v *v2.FundingPeriodDataPointConnection) graphql.Marshaler { +func (ec *executionContext) marshalNGame2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐGame(ctx context.Context, sel ast.SelectionSet, v *v2.Game) graphql.Marshaler { if v == nil { if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { ec.Errorf(ctx, "the requested element is null which the schema does not allow") } return graphql.Null } - return ec._FundingPeriodDataPointConnection(ctx, sel, v) -} - -func (ec *executionContext) marshalNFundingPeriodDataPointEdge2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐFundingPeriodDataPointEdgeᚄ(ctx context.Context, sel ast.SelectionSet, v []*v2.FundingPeriodDataPointEdge) graphql.Marshaler { - ret := make(graphql.Array, len(v)) - var wg sync.WaitGroup - isLen1 := len(v) == 1 - if !isLen1 { - wg.Add(len(v)) - } - for i := range v { - i := i - fc := &graphql.FieldContext{ - Index: &i, - Result: &v[i], - } - ctx := graphql.WithFieldContext(ctx, fc) - f := func(i int) { - defer func() { - if r := recover(); r != nil { - ec.Error(ctx, ec.Recover(ctx, r)) - ret = nil - } - }() - if !isLen1 { - defer wg.Done() - } - ret[i] = ec.marshalNFundingPeriodDataPointEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐFundingPeriodDataPointEdge(ctx, sel, v[i]) - } - if isLen1 { - f(i) - } else { - go f(i) - } - - } - wg.Wait() - - for _, e := range ret { - if e == graphql.Null { - return graphql.Null - } - } - - return ret + return ec._Game(ctx, sel, v) } -func (ec *executionContext) marshalNFundingPeriodDataPointEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐFundingPeriodDataPointEdge(ctx context.Context, sel ast.SelectionSet, v *v2.FundingPeriodDataPointEdge) graphql.Marshaler { +func (ec *executionContext) marshalNGameEntity2codeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐGameEntity(ctx context.Context, sel ast.SelectionSet, v GameEntity) graphql.Marshaler { if v == nil { if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { ec.Errorf(ctx, "the requested element is null which the schema does not allow") } return graphql.Null } - return ec._FundingPeriodDataPointEdge(ctx, sel, v) + return ec._GameEntity(ctx, sel, v) } -func (ec *executionContext) marshalNFundingPeriodEdge2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐFundingPeriodEdgeᚄ(ctx context.Context, sel ast.SelectionSet, v []*v2.FundingPeriodEdge) graphql.Marshaler { +func (ec *executionContext) marshalNGameEntity2ᚕcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐGameEntityᚄ(ctx context.Context, sel ast.SelectionSet, v []GameEntity) graphql.Marshaler { ret := make(graphql.Array, len(v)) var wg sync.WaitGroup isLen1 := len(v) == 1 @@ -141831,7 +143933,7 @@ func (ec *executionContext) marshalNFundingPeriodEdge2ᚕᚖcodeᚗvegaprotocol if !isLen1 { defer wg.Done() } - ret[i] = ec.marshalNFundingPeriodEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐFundingPeriodEdge(ctx, sel, v[i]) + ret[i] = ec.marshalNGameEntity2codeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐGameEntity(ctx, sel, v[i]) } if isLen1 { f(i) @@ -141851,78 +143953,24 @@ func (ec *executionContext) marshalNFundingPeriodEdge2ᚕᚖcodeᚗvegaprotocol return ret } -func (ec *executionContext) marshalNFundingPeriodEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐFundingPeriodEdge(ctx context.Context, sel ast.SelectionSet, v *v2.FundingPeriodEdge) graphql.Marshaler { +func (ec *executionContext) marshalNGamePartyScoreEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐGamePartyScoresEdge(ctx context.Context, sel ast.SelectionSet, v *v2.GamePartyScoresEdge) graphql.Marshaler { if v == nil { if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { ec.Errorf(ctx, "the requested element is null which the schema does not allow") } return graphql.Null } - return ec._FundingPeriodEdge(ctx, sel, v) + return ec._GamePartyScoreEdge(ctx, sel, v) } -func (ec *executionContext) marshalNGame2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐGame(ctx context.Context, sel ast.SelectionSet, v *v2.Game) graphql.Marshaler { +func (ec *executionContext) marshalNGameTeamScoreEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐGameTeamScoresEdge(ctx context.Context, sel ast.SelectionSet, v *v2.GameTeamScoresEdge) graphql.Marshaler { if v == nil { if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { ec.Errorf(ctx, "the requested element is null which the schema does not allow") } return graphql.Null } - return ec._Game(ctx, sel, v) -} - -func (ec *executionContext) marshalNGameEntity2codeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐGameEntity(ctx context.Context, sel ast.SelectionSet, v GameEntity) graphql.Marshaler { - if v == nil { - if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { - ec.Errorf(ctx, "the requested element is null which the schema does not allow") - } - return graphql.Null - } - return ec._GameEntity(ctx, sel, v) -} - -func (ec *executionContext) marshalNGameEntity2ᚕcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐGameEntityᚄ(ctx context.Context, sel ast.SelectionSet, v []GameEntity) graphql.Marshaler { - ret := make(graphql.Array, len(v)) - var wg sync.WaitGroup - isLen1 := len(v) == 1 - if !isLen1 { - wg.Add(len(v)) - } - for i := range v { - i := i - fc := &graphql.FieldContext{ - Index: &i, - Result: &v[i], - } - ctx := graphql.WithFieldContext(ctx, fc) - f := func(i int) { - defer func() { - if r := recover(); r != nil { - ec.Error(ctx, ec.Recover(ctx, r)) - ret = nil - } - }() - if !isLen1 { - defer wg.Done() - } - ret[i] = ec.marshalNGameEntity2codeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐGameEntity(ctx, sel, v[i]) - } - if isLen1 { - f(i) - } else { - go f(i) - } - - } - wg.Wait() - - for _, e := range ret { - if e == graphql.Null { - return graphql.Null - } - } - - return ret + return ec._GameTeamScoreEdge(ctx, sel, v) } func (ec *executionContext) marshalNGamesConnection2codeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐGamesConnection(ctx context.Context, sel ast.SelectionSet, v v2.GamesConnection) graphql.Marshaler { @@ -146221,7 +148269,112 @@ func (ec *executionContext) marshalOAssetEdge2ᚕᚖcodeᚗvegaprotocolᚗioᚋv if !isLen1 { defer wg.Done() } - ret[i] = ec.marshalOAssetEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐAssetEdge(ctx, sel, v[i]) + ret[i] = ec.marshalOAssetEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐAssetEdge(ctx, sel, v[i]) + } + if isLen1 { + f(i) + } else { + go f(i) + } + + } + wg.Wait() + + return ret +} + +func (ec *executionContext) marshalOAssetEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐAssetEdge(ctx context.Context, sel ast.SelectionSet, v *v2.AssetEdge) graphql.Marshaler { + if v == nil { + return graphql.Null + } + return ec._AssetEdge(ctx, sel, v) +} + +func (ec *executionContext) marshalOAssetsConnection2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐAssetsConnection(ctx context.Context, sel ast.SelectionSet, v *v2.AssetsConnection) graphql.Marshaler { + if v == nil { + return graphql.Null + } + return ec._AssetsConnection(ctx, sel, v) +} + +func (ec *executionContext) unmarshalOAuctionTrigger2codeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐAuctionTrigger(ctx context.Context, v interface{}) (vega.AuctionTrigger, error) { + res, err := marshallers.UnmarshalAuctionTrigger(v) + return res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) marshalOAuctionTrigger2codeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐAuctionTrigger(ctx context.Context, sel ast.SelectionSet, v vega.AuctionTrigger) graphql.Marshaler { + res := marshallers.MarshalAuctionTrigger(v) + return res +} + +func (ec *executionContext) marshalOBatchProposalTerms2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐBatchProposalTerms(ctx context.Context, sel ast.SelectionSet, v *vega.BatchProposalTerms) graphql.Marshaler { + if v == nil { + return graphql.Null + } + return ec._BatchProposalTerms(ctx, sel, v) +} + +func (ec *executionContext) marshalOBatchProposalTermsChange2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐBatchProposalTermsChange(ctx context.Context, sel ast.SelectionSet, v *vega.BatchProposalTermsChange) graphql.Marshaler { + if v == nil { + return graphql.Null + } + return ec._BatchProposalTermsChange(ctx, sel, v) +} + +func (ec *executionContext) unmarshalOBoolean2bool(ctx context.Context, v interface{}) (bool, error) { + res, err := graphql.UnmarshalBoolean(v) + return res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) marshalOBoolean2bool(ctx context.Context, sel ast.SelectionSet, v bool) graphql.Marshaler { + res := graphql.MarshalBoolean(v) + return res +} + +func (ec *executionContext) unmarshalOBoolean2ᚖbool(ctx context.Context, v interface{}) (*bool, error) { + if v == nil { + return nil, nil + } + res, err := graphql.UnmarshalBoolean(v) + return &res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) marshalOBoolean2ᚖbool(ctx context.Context, sel ast.SelectionSet, v *bool) graphql.Marshaler { + if v == nil { + return graphql.Null + } + res := graphql.MarshalBoolean(*v) + return res +} + +func (ec *executionContext) marshalOBusEvent2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐBusEventᚄ(ctx context.Context, sel ast.SelectionSet, v []*BusEvent) graphql.Marshaler { + if v == nil { + return graphql.Null + } + ret := make(graphql.Array, len(v)) + var wg sync.WaitGroup + isLen1 := len(v) == 1 + if !isLen1 { + wg.Add(len(v)) + } + for i := range v { + i := i + fc := &graphql.FieldContext{ + Index: &i, + Result: &v[i], + } + ctx := graphql.WithFieldContext(ctx, fc) + f := func(i int) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = nil + } + }() + if !isLen1 { + defer wg.Done() + } + ret[i] = ec.marshalNBusEvent2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐBusEvent(ctx, sel, v[i]) } if isLen1 { f(i) @@ -146232,74 +148385,78 @@ func (ec *executionContext) marshalOAssetEdge2ᚕᚖcodeᚗvegaprotocolᚗioᚋv } wg.Wait() + for _, e := range ret { + if e == graphql.Null { + return graphql.Null + } + } + return ret } -func (ec *executionContext) marshalOAssetEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐAssetEdge(ctx context.Context, sel ast.SelectionSet, v *v2.AssetEdge) graphql.Marshaler { +func (ec *executionContext) marshalOCandleDataConnection2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐCandleDataConnection(ctx context.Context, sel ast.SelectionSet, v *v2.CandleDataConnection) graphql.Marshaler { if v == nil { return graphql.Null } - return ec._AssetEdge(ctx, sel, v) + return ec._CandleDataConnection(ctx, sel, v) } -func (ec *executionContext) marshalOAssetsConnection2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐAssetsConnection(ctx context.Context, sel ast.SelectionSet, v *v2.AssetsConnection) graphql.Marshaler { +func (ec *executionContext) marshalOCandleEdge2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐCandleEdge(ctx context.Context, sel ast.SelectionSet, v []*v2.CandleEdge) graphql.Marshaler { if v == nil { return graphql.Null } - return ec._AssetsConnection(ctx, sel, v) -} - -func (ec *executionContext) unmarshalOAuctionTrigger2codeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐAuctionTrigger(ctx context.Context, v interface{}) (vega.AuctionTrigger, error) { - res, err := marshallers.UnmarshalAuctionTrigger(v) - return res, graphql.ErrorOnPath(ctx, err) -} - -func (ec *executionContext) marshalOAuctionTrigger2codeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐAuctionTrigger(ctx context.Context, sel ast.SelectionSet, v vega.AuctionTrigger) graphql.Marshaler { - res := marshallers.MarshalAuctionTrigger(v) - return res -} - -func (ec *executionContext) marshalOBatchProposalTerms2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐBatchProposalTerms(ctx context.Context, sel ast.SelectionSet, v *vega.BatchProposalTerms) graphql.Marshaler { - if v == nil { - return graphql.Null + ret := make(graphql.Array, len(v)) + var wg sync.WaitGroup + isLen1 := len(v) == 1 + if !isLen1 { + wg.Add(len(v)) } - return ec._BatchProposalTerms(ctx, sel, v) -} + for i := range v { + i := i + fc := &graphql.FieldContext{ + Index: &i, + Result: &v[i], + } + ctx := graphql.WithFieldContext(ctx, fc) + f := func(i int) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = nil + } + }() + if !isLen1 { + defer wg.Done() + } + ret[i] = ec.marshalOCandleEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐCandleEdge(ctx, sel, v[i]) + } + if isLen1 { + f(i) + } else { + go f(i) + } -func (ec *executionContext) marshalOBatchProposalTermsChange2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐBatchProposalTermsChange(ctx context.Context, sel ast.SelectionSet, v *vega.BatchProposalTermsChange) graphql.Marshaler { - if v == nil { - return graphql.Null } - return ec._BatchProposalTermsChange(ctx, sel, v) -} - -func (ec *executionContext) unmarshalOBoolean2bool(ctx context.Context, v interface{}) (bool, error) { - res, err := graphql.UnmarshalBoolean(v) - return res, graphql.ErrorOnPath(ctx, err) -} + wg.Wait() -func (ec *executionContext) marshalOBoolean2bool(ctx context.Context, sel ast.SelectionSet, v bool) graphql.Marshaler { - res := graphql.MarshalBoolean(v) - return res + return ret } -func (ec *executionContext) unmarshalOBoolean2ᚖbool(ctx context.Context, v interface{}) (*bool, error) { +func (ec *executionContext) marshalOCandleEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐCandleEdge(ctx context.Context, sel ast.SelectionSet, v *v2.CandleEdge) graphql.Marshaler { if v == nil { - return nil, nil + return graphql.Null } - res, err := graphql.UnmarshalBoolean(v) - return &res, graphql.ErrorOnPath(ctx, err) + return ec._CandleEdge(ctx, sel, v) } -func (ec *executionContext) marshalOBoolean2ᚖbool(ctx context.Context, sel ast.SelectionSet, v *bool) graphql.Marshaler { +func (ec *executionContext) marshalOCompositePriceConfiguration2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐCompositePriceConfiguration(ctx context.Context, sel ast.SelectionSet, v *vega.CompositePriceConfiguration) graphql.Marshaler { if v == nil { return graphql.Null } - res := graphql.MarshalBoolean(*v) - return res + return ec._CompositePriceConfiguration(ctx, sel, v) } -func (ec *executionContext) marshalOBusEvent2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐBusEventᚄ(ctx context.Context, sel ast.SelectionSet, v []*BusEvent) graphql.Marshaler { +func (ec *executionContext) marshalOCompositePriceSource2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐCompositePriceSourceᚄ(ctx context.Context, sel ast.SelectionSet, v []*vega.CompositePriceSource) graphql.Marshaler { if v == nil { return graphql.Null } @@ -146326,7 +148483,7 @@ func (ec *executionContext) marshalOBusEvent2ᚕᚖcodeᚗvegaprotocolᚗioᚋve if !isLen1 { defer wg.Done() } - ret[i] = ec.marshalNBusEvent2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐBusEvent(ctx, sel, v[i]) + ret[i] = ec.marshalNCompositePriceSource2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐCompositePriceSource(ctx, sel, v[i]) } if isLen1 { f(i) @@ -146346,14 +148503,14 @@ func (ec *executionContext) marshalOBusEvent2ᚕᚖcodeᚗvegaprotocolᚗioᚋve return ret } -func (ec *executionContext) marshalOCandleDataConnection2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐCandleDataConnection(ctx context.Context, sel ast.SelectionSet, v *v2.CandleDataConnection) graphql.Marshaler { +func (ec *executionContext) marshalOCompositePriceState2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐCompositePriceState(ctx context.Context, sel ast.SelectionSet, v *vega.CompositePriceState) graphql.Marshaler { if v == nil { return graphql.Null } - return ec._CandleDataConnection(ctx, sel, v) + return ec._CompositePriceState(ctx, sel, v) } -func (ec *executionContext) marshalOCandleEdge2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐCandleEdge(ctx context.Context, sel ast.SelectionSet, v []*v2.CandleEdge) graphql.Marshaler { +func (ec *executionContext) marshalOCondition2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐConditionᚄ(ctx context.Context, sel ast.SelectionSet, v []*Condition) graphql.Marshaler { if v == nil { return graphql.Null } @@ -146380,7 +148537,7 @@ func (ec *executionContext) marshalOCandleEdge2ᚕᚖcodeᚗvegaprotocolᚗioᚋ if !isLen1 { defer wg.Done() } - ret[i] = ec.marshalOCandleEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐCandleEdge(ctx, sel, v[i]) + ret[i] = ec.marshalNCondition2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐCondition(ctx, sel, v[i]) } if isLen1 { f(i) @@ -146391,24 +148548,30 @@ func (ec *executionContext) marshalOCandleEdge2ᚕᚖcodeᚗvegaprotocolᚗioᚋ } wg.Wait() + for _, e := range ret { + if e == graphql.Null { + return graphql.Null + } + } + return ret } -func (ec *executionContext) marshalOCandleEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐCandleEdge(ctx context.Context, sel ast.SelectionSet, v *v2.CandleEdge) graphql.Marshaler { +func (ec *executionContext) marshalOCondition2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐCondition(ctx context.Context, sel ast.SelectionSet, v *Condition) graphql.Marshaler { if v == nil { return graphql.Null } - return ec._CandleEdge(ctx, sel, v) + return ec._Condition(ctx, sel, v) } -func (ec *executionContext) marshalOCompositePriceConfiguration2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐCompositePriceConfiguration(ctx context.Context, sel ast.SelectionSet, v *vega.CompositePriceConfiguration) graphql.Marshaler { +func (ec *executionContext) marshalOCoreSnapshotConnection2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐCoreSnapshotConnection(ctx context.Context, sel ast.SelectionSet, v *v2.CoreSnapshotConnection) graphql.Marshaler { if v == nil { return graphql.Null } - return ec._CompositePriceConfiguration(ctx, sel, v) + return ec._CoreSnapshotConnection(ctx, sel, v) } -func (ec *executionContext) marshalOCompositePriceSource2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐCompositePriceSourceᚄ(ctx context.Context, sel ast.SelectionSet, v []*vega.CompositePriceSource) graphql.Marshaler { +func (ec *executionContext) marshalOCoreSnapshotEdge2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐCoreSnapshotEdgeᚄ(ctx context.Context, sel ast.SelectionSet, v []*v2.CoreSnapshotEdge) graphql.Marshaler { if v == nil { return graphql.Null } @@ -146435,7 +148598,7 @@ func (ec *executionContext) marshalOCompositePriceSource2ᚕᚖcodeᚗvegaprotoc if !isLen1 { defer wg.Done() } - ret[i] = ec.marshalNCompositePriceSource2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐCompositePriceSource(ctx, sel, v[i]) + ret[i] = ec.marshalNCoreSnapshotEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐCoreSnapshotEdge(ctx, sel, v[i]) } if isLen1 { f(i) @@ -146455,14 +148618,14 @@ func (ec *executionContext) marshalOCompositePriceSource2ᚕᚖcodeᚗvegaprotoc return ret } -func (ec *executionContext) marshalOCompositePriceState2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐCompositePriceState(ctx context.Context, sel ast.SelectionSet, v *vega.CompositePriceState) graphql.Marshaler { +func (ec *executionContext) marshalOCurrentReferralProgram2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐReferralProgram(ctx context.Context, sel ast.SelectionSet, v *v2.ReferralProgram) graphql.Marshaler { if v == nil { return graphql.Null } - return ec._CompositePriceState(ctx, sel, v) + return ec._CurrentReferralProgram(ctx, sel, v) } -func (ec *executionContext) marshalOCondition2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐConditionᚄ(ctx context.Context, sel ast.SelectionSet, v []*Condition) graphql.Marshaler { +func (ec *executionContext) marshalODataSourceDefinition2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐDataSourceDefinition(ctx context.Context, sel ast.SelectionSet, v []*vega.DataSourceDefinition) graphql.Marshaler { if v == nil { return graphql.Null } @@ -146489,7 +148652,7 @@ func (ec *executionContext) marshalOCondition2ᚕᚖcodeᚗvegaprotocolᚗioᚋv if !isLen1 { defer wg.Done() } - ret[i] = ec.marshalNCondition2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐCondition(ctx, sel, v[i]) + ret[i] = ec.marshalODataSourceDefinition2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐDataSourceDefinition(ctx, sel, v[i]) } if isLen1 { f(i) @@ -146500,30 +148663,25 @@ func (ec *executionContext) marshalOCondition2ᚕᚖcodeᚗvegaprotocolᚗioᚋv } wg.Wait() - for _, e := range ret { - if e == graphql.Null { - return graphql.Null - } - } - return ret } -func (ec *executionContext) marshalOCondition2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐCondition(ctx context.Context, sel ast.SelectionSet, v *Condition) graphql.Marshaler { +func (ec *executionContext) marshalODataSourceDefinition2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐDataSourceDefinition(ctx context.Context, sel ast.SelectionSet, v *vega.DataSourceDefinition) graphql.Marshaler { if v == nil { return graphql.Null } - return ec._Condition(ctx, sel, v) + return ec._DataSourceDefinition(ctx, sel, v) } -func (ec *executionContext) marshalOCoreSnapshotConnection2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐCoreSnapshotConnection(ctx context.Context, sel ast.SelectionSet, v *v2.CoreSnapshotConnection) graphql.Marshaler { +func (ec *executionContext) unmarshalODateRange2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐDateRange(ctx context.Context, v interface{}) (*v2.DateRange, error) { if v == nil { - return graphql.Null + return nil, nil } - return ec._CoreSnapshotConnection(ctx, sel, v) + res, err := ec.unmarshalInputDateRange(ctx, v) + return &res, graphql.ErrorOnPath(ctx, err) } -func (ec *executionContext) marshalOCoreSnapshotEdge2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐCoreSnapshotEdgeᚄ(ctx context.Context, sel ast.SelectionSet, v []*v2.CoreSnapshotEdge) graphql.Marshaler { +func (ec *executionContext) marshalODelegation2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐDelegation(ctx context.Context, sel ast.SelectionSet, v []*vega.Delegation) graphql.Marshaler { if v == nil { return graphql.Null } @@ -146550,7 +148708,7 @@ func (ec *executionContext) marshalOCoreSnapshotEdge2ᚕᚖcodeᚗvegaprotocol if !isLen1 { defer wg.Done() } - ret[i] = ec.marshalNCoreSnapshotEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐCoreSnapshotEdge(ctx, sel, v[i]) + ret[i] = ec.marshalODelegation2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐDelegation(ctx, sel, v[i]) } if isLen1 { f(i) @@ -146561,23 +148719,17 @@ func (ec *executionContext) marshalOCoreSnapshotEdge2ᚕᚖcodeᚗvegaprotocol } wg.Wait() - for _, e := range ret { - if e == graphql.Null { - return graphql.Null - } - } - return ret } -func (ec *executionContext) marshalOCurrentReferralProgram2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐReferralProgram(ctx context.Context, sel ast.SelectionSet, v *v2.ReferralProgram) graphql.Marshaler { +func (ec *executionContext) marshalODelegation2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐDelegation(ctx context.Context, sel ast.SelectionSet, v *vega.Delegation) graphql.Marshaler { if v == nil { return graphql.Null } - return ec._CurrentReferralProgram(ctx, sel, v) + return ec._Delegation(ctx, sel, v) } -func (ec *executionContext) marshalODataSourceDefinition2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐDataSourceDefinition(ctx context.Context, sel ast.SelectionSet, v []*vega.DataSourceDefinition) graphql.Marshaler { +func (ec *executionContext) marshalODelegationEdge2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐDelegationEdge(ctx context.Context, sel ast.SelectionSet, v []*v2.DelegationEdge) graphql.Marshaler { if v == nil { return graphql.Null } @@ -146604,7 +148756,7 @@ func (ec *executionContext) marshalODataSourceDefinition2ᚕᚖcodeᚗvegaprotoc if !isLen1 { defer wg.Done() } - ret[i] = ec.marshalODataSourceDefinition2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐDataSourceDefinition(ctx, sel, v[i]) + ret[i] = ec.marshalODelegationEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐDelegationEdge(ctx, sel, v[i]) } if isLen1 { f(i) @@ -146618,22 +148770,21 @@ func (ec *executionContext) marshalODataSourceDefinition2ᚕᚖcodeᚗvegaprotoc return ret } -func (ec *executionContext) marshalODataSourceDefinition2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐDataSourceDefinition(ctx context.Context, sel ast.SelectionSet, v *vega.DataSourceDefinition) graphql.Marshaler { +func (ec *executionContext) marshalODelegationEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐDelegationEdge(ctx context.Context, sel ast.SelectionSet, v *v2.DelegationEdge) graphql.Marshaler { if v == nil { return graphql.Null } - return ec._DataSourceDefinition(ctx, sel, v) + return ec._DelegationEdge(ctx, sel, v) } -func (ec *executionContext) unmarshalODateRange2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐDateRange(ctx context.Context, v interface{}) (*v2.DateRange, error) { +func (ec *executionContext) marshalODelegationsConnection2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐDelegationsConnection(ctx context.Context, sel ast.SelectionSet, v *v2.DelegationsConnection) graphql.Marshaler { if v == nil { - return nil, nil + return graphql.Null } - res, err := ec.unmarshalInputDateRange(ctx, v) - return &res, graphql.ErrorOnPath(ctx, err) + return ec._DelegationsConnection(ctx, sel, v) } -func (ec *executionContext) marshalODelegation2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐDelegation(ctx context.Context, sel ast.SelectionSet, v []*vega.Delegation) graphql.Marshaler { +func (ec *executionContext) marshalODeposit2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐDeposit(ctx context.Context, sel ast.SelectionSet, v []*vega.Deposit) graphql.Marshaler { if v == nil { return graphql.Null } @@ -146660,7 +148811,7 @@ func (ec *executionContext) marshalODelegation2ᚕᚖcodeᚗvegaprotocolᚗioᚋ if !isLen1 { defer wg.Done() } - ret[i] = ec.marshalODelegation2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐDelegation(ctx, sel, v[i]) + ret[i] = ec.marshalODeposit2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐDeposit(ctx, sel, v[i]) } if isLen1 { f(i) @@ -146674,14 +148825,14 @@ func (ec *executionContext) marshalODelegation2ᚕᚖcodeᚗvegaprotocolᚗioᚋ return ret } -func (ec *executionContext) marshalODelegation2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐDelegation(ctx context.Context, sel ast.SelectionSet, v *vega.Delegation) graphql.Marshaler { +func (ec *executionContext) marshalODeposit2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐDeposit(ctx context.Context, sel ast.SelectionSet, v *vega.Deposit) graphql.Marshaler { if v == nil { return graphql.Null } - return ec._Delegation(ctx, sel, v) + return ec._Deposit(ctx, sel, v) } -func (ec *executionContext) marshalODelegationEdge2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐDelegationEdge(ctx context.Context, sel ast.SelectionSet, v []*v2.DelegationEdge) graphql.Marshaler { +func (ec *executionContext) marshalODepositEdge2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐDepositEdge(ctx context.Context, sel ast.SelectionSet, v []*v2.DepositEdge) graphql.Marshaler { if v == nil { return graphql.Null } @@ -146708,7 +148859,7 @@ func (ec *executionContext) marshalODelegationEdge2ᚕᚖcodeᚗvegaprotocolᚗi if !isLen1 { defer wg.Done() } - ret[i] = ec.marshalODelegationEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐDelegationEdge(ctx, sel, v[i]) + ret[i] = ec.marshalODepositEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐDepositEdge(ctx, sel, v[i]) } if isLen1 { f(i) @@ -146722,21 +148873,28 @@ func (ec *executionContext) marshalODelegationEdge2ᚕᚖcodeᚗvegaprotocolᚗi return ret } -func (ec *executionContext) marshalODelegationEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐDelegationEdge(ctx context.Context, sel ast.SelectionSet, v *v2.DelegationEdge) graphql.Marshaler { +func (ec *executionContext) marshalODepositEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐDepositEdge(ctx context.Context, sel ast.SelectionSet, v *v2.DepositEdge) graphql.Marshaler { if v == nil { return graphql.Null } - return ec._DelegationEdge(ctx, sel, v) + return ec._DepositEdge(ctx, sel, v) } -func (ec *executionContext) marshalODelegationsConnection2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐDelegationsConnection(ctx context.Context, sel ast.SelectionSet, v *v2.DelegationsConnection) graphql.Marshaler { +func (ec *executionContext) marshalODepositsConnection2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐDepositsConnection(ctx context.Context, sel ast.SelectionSet, v *v2.DepositsConnection) graphql.Marshaler { if v == nil { return graphql.Null } - return ec._DelegationsConnection(ctx, sel, v) + return ec._DepositsConnection(ctx, sel, v) } -func (ec *executionContext) marshalODeposit2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐDeposit(ctx context.Context, sel ast.SelectionSet, v []*vega.Deposit) graphql.Marshaler { +func (ec *executionContext) marshalODispatchStrategy2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐDispatchStrategy(ctx context.Context, sel ast.SelectionSet, v *vega.DispatchStrategy) graphql.Marshaler { + if v == nil { + return graphql.Null + } + return ec._DispatchStrategy(ctx, sel, v) +} + +func (ec *executionContext) marshalOERC20MultiSigSignerAddedBundle2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐERC20MultiSigSignerAddedBundle(ctx context.Context, sel ast.SelectionSet, v []*v2.ERC20MultiSigSignerAddedBundle) graphql.Marshaler { if v == nil { return graphql.Null } @@ -146763,7 +148921,7 @@ func (ec *executionContext) marshalODeposit2ᚕᚖcodeᚗvegaprotocolᚗioᚋveg if !isLen1 { defer wg.Done() } - ret[i] = ec.marshalODeposit2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐDeposit(ctx, sel, v[i]) + ret[i] = ec.marshalOERC20MultiSigSignerAddedBundle2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐERC20MultiSigSignerAddedBundle(ctx, sel, v[i]) } if isLen1 { f(i) @@ -146777,14 +148935,62 @@ func (ec *executionContext) marshalODeposit2ᚕᚖcodeᚗvegaprotocolᚗioᚋveg return ret } -func (ec *executionContext) marshalODeposit2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐDeposit(ctx context.Context, sel ast.SelectionSet, v *vega.Deposit) graphql.Marshaler { +func (ec *executionContext) marshalOERC20MultiSigSignerAddedBundle2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐERC20MultiSigSignerAddedBundle(ctx context.Context, sel ast.SelectionSet, v *v2.ERC20MultiSigSignerAddedBundle) graphql.Marshaler { if v == nil { return graphql.Null } - return ec._Deposit(ctx, sel, v) + return ec._ERC20MultiSigSignerAddedBundle(ctx, sel, v) } -func (ec *executionContext) marshalODepositEdge2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐDepositEdge(ctx context.Context, sel ast.SelectionSet, v []*v2.DepositEdge) graphql.Marshaler { +func (ec *executionContext) marshalOERC20MultiSigSignerAddedBundleEdge2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐERC20MultiSigSignerAddedBundleEdge(ctx context.Context, sel ast.SelectionSet, v []*ERC20MultiSigSignerAddedBundleEdge) graphql.Marshaler { + if v == nil { + return graphql.Null + } + ret := make(graphql.Array, len(v)) + var wg sync.WaitGroup + isLen1 := len(v) == 1 + if !isLen1 { + wg.Add(len(v)) + } + for i := range v { + i := i + fc := &graphql.FieldContext{ + Index: &i, + Result: &v[i], + } + ctx := graphql.WithFieldContext(ctx, fc) + f := func(i int) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = nil + } + }() + if !isLen1 { + defer wg.Done() + } + ret[i] = ec.marshalOERC20MultiSigSignerAddedBundleEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐERC20MultiSigSignerAddedBundleEdge(ctx, sel, v[i]) + } + if isLen1 { + f(i) + } else { + go f(i) + } + + } + wg.Wait() + + return ret +} + +func (ec *executionContext) marshalOERC20MultiSigSignerAddedBundleEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐERC20MultiSigSignerAddedBundleEdge(ctx context.Context, sel ast.SelectionSet, v *ERC20MultiSigSignerAddedBundleEdge) graphql.Marshaler { + if v == nil { + return graphql.Null + } + return ec._ERC20MultiSigSignerAddedBundleEdge(ctx, sel, v) +} + +func (ec *executionContext) marshalOERC20MultiSigSignerRemovedBundle2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐERC20MultiSigSignerRemovedBundle(ctx context.Context, sel ast.SelectionSet, v []*v2.ERC20MultiSigSignerRemovedBundle) graphql.Marshaler { if v == nil { return graphql.Null } @@ -146811,7 +149017,7 @@ func (ec *executionContext) marshalODepositEdge2ᚕᚖcodeᚗvegaprotocolᚗio if !isLen1 { defer wg.Done() } - ret[i] = ec.marshalODepositEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐDepositEdge(ctx, sel, v[i]) + ret[i] = ec.marshalOERC20MultiSigSignerRemovedBundle2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐERC20MultiSigSignerRemovedBundle(ctx, sel, v[i]) } if isLen1 { f(i) @@ -146825,28 +149031,14 @@ func (ec *executionContext) marshalODepositEdge2ᚕᚖcodeᚗvegaprotocolᚗio return ret } -func (ec *executionContext) marshalODepositEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐDepositEdge(ctx context.Context, sel ast.SelectionSet, v *v2.DepositEdge) graphql.Marshaler { - if v == nil { - return graphql.Null - } - return ec._DepositEdge(ctx, sel, v) -} - -func (ec *executionContext) marshalODepositsConnection2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐDepositsConnection(ctx context.Context, sel ast.SelectionSet, v *v2.DepositsConnection) graphql.Marshaler { - if v == nil { - return graphql.Null - } - return ec._DepositsConnection(ctx, sel, v) -} - -func (ec *executionContext) marshalODispatchStrategy2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐDispatchStrategy(ctx context.Context, sel ast.SelectionSet, v *vega.DispatchStrategy) graphql.Marshaler { +func (ec *executionContext) marshalOERC20MultiSigSignerRemovedBundle2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐERC20MultiSigSignerRemovedBundle(ctx context.Context, sel ast.SelectionSet, v *v2.ERC20MultiSigSignerRemovedBundle) graphql.Marshaler { if v == nil { return graphql.Null } - return ec._DispatchStrategy(ctx, sel, v) + return ec._ERC20MultiSigSignerRemovedBundle(ctx, sel, v) } -func (ec *executionContext) marshalOERC20MultiSigSignerAddedBundle2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐERC20MultiSigSignerAddedBundle(ctx context.Context, sel ast.SelectionSet, v []*v2.ERC20MultiSigSignerAddedBundle) graphql.Marshaler { +func (ec *executionContext) marshalOERC20MultiSigSignerRemovedBundleEdge2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐERC20MultiSigSignerRemovedBundleEdge(ctx context.Context, sel ast.SelectionSet, v []*ERC20MultiSigSignerRemovedBundleEdge) graphql.Marshaler { if v == nil { return graphql.Null } @@ -146873,7 +149065,7 @@ func (ec *executionContext) marshalOERC20MultiSigSignerAddedBundle2ᚕᚖcodeᚗ if !isLen1 { defer wg.Done() } - ret[i] = ec.marshalOERC20MultiSigSignerAddedBundle2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐERC20MultiSigSignerAddedBundle(ctx, sel, v[i]) + ret[i] = ec.marshalOERC20MultiSigSignerRemovedBundleEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐERC20MultiSigSignerRemovedBundleEdge(ctx, sel, v[i]) } if isLen1 { f(i) @@ -146887,62 +149079,51 @@ func (ec *executionContext) marshalOERC20MultiSigSignerAddedBundle2ᚕᚖcodeᚗ return ret } -func (ec *executionContext) marshalOERC20MultiSigSignerAddedBundle2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐERC20MultiSigSignerAddedBundle(ctx context.Context, sel ast.SelectionSet, v *v2.ERC20MultiSigSignerAddedBundle) graphql.Marshaler { +func (ec *executionContext) marshalOERC20MultiSigSignerRemovedBundleEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐERC20MultiSigSignerRemovedBundleEdge(ctx context.Context, sel ast.SelectionSet, v *ERC20MultiSigSignerRemovedBundleEdge) graphql.Marshaler { if v == nil { return graphql.Null } - return ec._ERC20MultiSigSignerAddedBundle(ctx, sel, v) + return ec._ERC20MultiSigSignerRemovedBundleEdge(ctx, sel, v) } -func (ec *executionContext) marshalOERC20MultiSigSignerAddedBundleEdge2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐERC20MultiSigSignerAddedBundleEdge(ctx context.Context, sel ast.SelectionSet, v []*ERC20MultiSigSignerAddedBundleEdge) graphql.Marshaler { +func (ec *executionContext) unmarshalOEntityScope2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐEntityScope(ctx context.Context, v interface{}) (*vega.EntityScope, error) { if v == nil { - return graphql.Null + return nil, nil } - ret := make(graphql.Array, len(v)) - var wg sync.WaitGroup - isLen1 := len(v) == 1 - if !isLen1 { - wg.Add(len(v)) + res, err := marshallers.UnmarshalEntityScope(v) + return &res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) marshalOEntityScope2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐEntityScope(ctx context.Context, sel ast.SelectionSet, v *vega.EntityScope) graphql.Marshaler { + if v == nil { + return graphql.Null } - for i := range v { - i := i - fc := &graphql.FieldContext{ - Index: &i, - Result: &v[i], - } - ctx := graphql.WithFieldContext(ctx, fc) - f := func(i int) { - defer func() { - if r := recover(); r != nil { - ec.Error(ctx, ec.Recover(ctx, r)) - ret = nil - } - }() - if !isLen1 { - defer wg.Done() - } - ret[i] = ec.marshalOERC20MultiSigSignerAddedBundleEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐERC20MultiSigSignerAddedBundleEdge(ctx, sel, v[i]) - } - if isLen1 { - f(i) - } else { - go f(i) - } + res := marshallers.MarshalEntityScope(*v) + return res +} +func (ec *executionContext) marshalOEpoch2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐEpoch(ctx context.Context, sel ast.SelectionSet, v *vega.Epoch) graphql.Marshaler { + if v == nil { + return graphql.Null } - wg.Wait() + return ec._Epoch(ctx, sel, v) +} - return ret +func (ec *executionContext) marshalOEpochData2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐEpochData(ctx context.Context, sel ast.SelectionSet, v *vega.EpochData) graphql.Marshaler { + if v == nil { + return graphql.Null + } + return ec._EpochData(ctx, sel, v) } -func (ec *executionContext) marshalOERC20MultiSigSignerAddedBundleEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐERC20MultiSigSignerAddedBundleEdge(ctx context.Context, sel ast.SelectionSet, v *ERC20MultiSigSignerAddedBundleEdge) graphql.Marshaler { +func (ec *executionContext) marshalOEpochRewardSummaryConnection2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐEpochRewardSummaryConnection(ctx context.Context, sel ast.SelectionSet, v *v2.EpochRewardSummaryConnection) graphql.Marshaler { if v == nil { return graphql.Null } - return ec._ERC20MultiSigSignerAddedBundleEdge(ctx, sel, v) + return ec._EpochRewardSummaryConnection(ctx, sel, v) } -func (ec *executionContext) marshalOERC20MultiSigSignerRemovedBundle2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐERC20MultiSigSignerRemovedBundle(ctx context.Context, sel ast.SelectionSet, v []*v2.ERC20MultiSigSignerRemovedBundle) graphql.Marshaler { +func (ec *executionContext) marshalOEpochRewardSummaryEdge2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐEpochRewardSummaryEdge(ctx context.Context, sel ast.SelectionSet, v []*v2.EpochRewardSummaryEdge) graphql.Marshaler { if v == nil { return graphql.Null } @@ -146969,7 +149150,7 @@ func (ec *executionContext) marshalOERC20MultiSigSignerRemovedBundle2ᚕᚖcode if !isLen1 { defer wg.Done() } - ret[i] = ec.marshalOERC20MultiSigSignerRemovedBundle2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐERC20MultiSigSignerRemovedBundle(ctx, sel, v[i]) + ret[i] = ec.marshalOEpochRewardSummaryEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐEpochRewardSummaryEdge(ctx, sel, v[i]) } if isLen1 { f(i) @@ -146983,14 +149164,14 @@ func (ec *executionContext) marshalOERC20MultiSigSignerRemovedBundle2ᚕᚖcode return ret } -func (ec *executionContext) marshalOERC20MultiSigSignerRemovedBundle2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐERC20MultiSigSignerRemovedBundle(ctx context.Context, sel ast.SelectionSet, v *v2.ERC20MultiSigSignerRemovedBundle) graphql.Marshaler { +func (ec *executionContext) marshalOEpochRewardSummaryEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐEpochRewardSummaryEdge(ctx context.Context, sel ast.SelectionSet, v *v2.EpochRewardSummaryEdge) graphql.Marshaler { if v == nil { return graphql.Null } - return ec._ERC20MultiSigSignerRemovedBundle(ctx, sel, v) + return ec._EpochRewardSummaryEdge(ctx, sel, v) } -func (ec *executionContext) marshalOERC20MultiSigSignerRemovedBundleEdge2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐERC20MultiSigSignerRemovedBundleEdge(ctx context.Context, sel ast.SelectionSet, v []*ERC20MultiSigSignerRemovedBundleEdge) graphql.Marshaler { +func (ec *executionContext) marshalOEquityLikeShareWeightPerMarket2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐVoteELSPair(ctx context.Context, sel ast.SelectionSet, v []*vega.VoteELSPair) graphql.Marshaler { if v == nil { return graphql.Null } @@ -147017,7 +149198,7 @@ func (ec *executionContext) marshalOERC20MultiSigSignerRemovedBundleEdge2ᚕᚖc if !isLen1 { defer wg.Done() } - ret[i] = ec.marshalOERC20MultiSigSignerRemovedBundleEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐERC20MultiSigSignerRemovedBundleEdge(ctx, sel, v[i]) + ret[i] = ec.marshalOEquityLikeShareWeightPerMarket2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐVoteELSPair(ctx, sel, v[i]) } if isLen1 { f(i) @@ -147031,51 +149212,35 @@ func (ec *executionContext) marshalOERC20MultiSigSignerRemovedBundleEdge2ᚕᚖc return ret } -func (ec *executionContext) marshalOERC20MultiSigSignerRemovedBundleEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐERC20MultiSigSignerRemovedBundleEdge(ctx context.Context, sel ast.SelectionSet, v *ERC20MultiSigSignerRemovedBundleEdge) graphql.Marshaler { - if v == nil { - return graphql.Null - } - return ec._ERC20MultiSigSignerRemovedBundleEdge(ctx, sel, v) -} - -func (ec *executionContext) unmarshalOEntityScope2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐEntityScope(ctx context.Context, v interface{}) (*vega.EntityScope, error) { - if v == nil { - return nil, nil - } - res, err := marshallers.UnmarshalEntityScope(v) - return &res, graphql.ErrorOnPath(ctx, err) -} - -func (ec *executionContext) marshalOEntityScope2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐEntityScope(ctx context.Context, sel ast.SelectionSet, v *vega.EntityScope) graphql.Marshaler { +func (ec *executionContext) marshalOEquityLikeShareWeightPerMarket2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐVoteELSPair(ctx context.Context, sel ast.SelectionSet, v *vega.VoteELSPair) graphql.Marshaler { if v == nil { return graphql.Null } - res := marshallers.MarshalEntityScope(*v) - return res + return ec._EquityLikeShareWeightPerMarket(ctx, sel, v) } -func (ec *executionContext) marshalOEpoch2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐEpoch(ctx context.Context, sel ast.SelectionSet, v *vega.Epoch) graphql.Marshaler { +func (ec *executionContext) marshalOErc20ListAssetBundle2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐErc20ListAssetBundle(ctx context.Context, sel ast.SelectionSet, v *Erc20ListAssetBundle) graphql.Marshaler { if v == nil { return graphql.Null } - return ec._Epoch(ctx, sel, v) + return ec._Erc20ListAssetBundle(ctx, sel, v) } -func (ec *executionContext) marshalOEpochData2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐEpochData(ctx context.Context, sel ast.SelectionSet, v *vega.EpochData) graphql.Marshaler { +func (ec *executionContext) marshalOErc20WithdrawalApproval2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐErc20WithdrawalApproval(ctx context.Context, sel ast.SelectionSet, v *Erc20WithdrawalApproval) graphql.Marshaler { if v == nil { return graphql.Null } - return ec._EpochData(ctx, sel, v) + return ec._Erc20WithdrawalApproval(ctx, sel, v) } -func (ec *executionContext) marshalOEpochRewardSummaryConnection2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐEpochRewardSummaryConnection(ctx context.Context, sel ast.SelectionSet, v *v2.EpochRewardSummaryConnection) graphql.Marshaler { +func (ec *executionContext) marshalOEstimatedTransferFee2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐEstimateTransferFeeResponse(ctx context.Context, sel ast.SelectionSet, v *v2.EstimateTransferFeeResponse) graphql.Marshaler { if v == nil { return graphql.Null } - return ec._EpochRewardSummaryConnection(ctx, sel, v) + return ec._EstimatedTransferFee(ctx, sel, v) } -func (ec *executionContext) marshalOEpochRewardSummaryEdge2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐEpochRewardSummaryEdge(ctx context.Context, sel ast.SelectionSet, v []*v2.EpochRewardSummaryEdge) graphql.Marshaler { +func (ec *executionContext) marshalOEthereumKeyRotation2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚋeventsᚋv1ᚐEthereumKeyRotation(ctx context.Context, sel ast.SelectionSet, v []*v1.EthereumKeyRotation) graphql.Marshaler { if v == nil { return graphql.Null } @@ -147102,7 +149267,7 @@ func (ec *executionContext) marshalOEpochRewardSummaryEdge2ᚕᚖcodeᚗvegaprot if !isLen1 { defer wg.Done() } - ret[i] = ec.marshalOEpochRewardSummaryEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐEpochRewardSummaryEdge(ctx, sel, v[i]) + ret[i] = ec.marshalOEthereumKeyRotation2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚋeventsᚋv1ᚐEthereumKeyRotation(ctx, sel, v[i]) } if isLen1 { f(i) @@ -147116,14 +149281,21 @@ func (ec *executionContext) marshalOEpochRewardSummaryEdge2ᚕᚖcodeᚗvegaprot return ret } -func (ec *executionContext) marshalOEpochRewardSummaryEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐEpochRewardSummaryEdge(ctx context.Context, sel ast.SelectionSet, v *v2.EpochRewardSummaryEdge) graphql.Marshaler { +func (ec *executionContext) marshalOEthereumKeyRotation2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚋeventsᚋv1ᚐEthereumKeyRotation(ctx context.Context, sel ast.SelectionSet, v *v1.EthereumKeyRotation) graphql.Marshaler { if v == nil { return graphql.Null } - return ec._EpochRewardSummaryEdge(ctx, sel, v) + return ec._EthereumKeyRotation(ctx, sel, v) } -func (ec *executionContext) marshalOEquityLikeShareWeightPerMarket2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐVoteELSPair(ctx context.Context, sel ast.SelectionSet, v []*vega.VoteELSPair) graphql.Marshaler { +func (ec *executionContext) marshalOFeesStats2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚋeventsᚋv1ᚐFeesStats(ctx context.Context, sel ast.SelectionSet, v *v1.FeesStats) graphql.Marshaler { + if v == nil { + return graphql.Null + } + return ec._FeesStats(ctx, sel, v) +} + +func (ec *executionContext) marshalOFeesStatsForParty2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐFeesStatsForParty(ctx context.Context, sel ast.SelectionSet, v []*v2.FeesStatsForParty) graphql.Marshaler { if v == nil { return graphql.Null } @@ -147150,7 +149322,7 @@ func (ec *executionContext) marshalOEquityLikeShareWeightPerMarket2ᚕᚖcodeᚗ if !isLen1 { defer wg.Done() } - ret[i] = ec.marshalOEquityLikeShareWeightPerMarket2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐVoteELSPair(ctx, sel, v[i]) + ret[i] = ec.marshalOFeesStatsForParty2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐFeesStatsForParty(ctx, sel, v[i]) } if isLen1 { f(i) @@ -147164,35 +149336,14 @@ func (ec *executionContext) marshalOEquityLikeShareWeightPerMarket2ᚕᚖcodeᚗ return ret } -func (ec *executionContext) marshalOEquityLikeShareWeightPerMarket2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐVoteELSPair(ctx context.Context, sel ast.SelectionSet, v *vega.VoteELSPair) graphql.Marshaler { - if v == nil { - return graphql.Null - } - return ec._EquityLikeShareWeightPerMarket(ctx, sel, v) -} - -func (ec *executionContext) marshalOErc20ListAssetBundle2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐErc20ListAssetBundle(ctx context.Context, sel ast.SelectionSet, v *Erc20ListAssetBundle) graphql.Marshaler { - if v == nil { - return graphql.Null - } - return ec._Erc20ListAssetBundle(ctx, sel, v) -} - -func (ec *executionContext) marshalOErc20WithdrawalApproval2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐErc20WithdrawalApproval(ctx context.Context, sel ast.SelectionSet, v *Erc20WithdrawalApproval) graphql.Marshaler { - if v == nil { - return graphql.Null - } - return ec._Erc20WithdrawalApproval(ctx, sel, v) -} - -func (ec *executionContext) marshalOEstimatedTransferFee2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐEstimateTransferFeeResponse(ctx context.Context, sel ast.SelectionSet, v *v2.EstimateTransferFeeResponse) graphql.Marshaler { +func (ec *executionContext) marshalOFeesStatsForParty2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐFeesStatsForParty(ctx context.Context, sel ast.SelectionSet, v *v2.FeesStatsForParty) graphql.Marshaler { if v == nil { return graphql.Null } - return ec._EstimatedTransferFee(ctx, sel, v) + return ec._FeesStatsForParty(ctx, sel, v) } -func (ec *executionContext) marshalOEthereumKeyRotation2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚋeventsᚋv1ᚐEthereumKeyRotation(ctx context.Context, sel ast.SelectionSet, v []*v1.EthereumKeyRotation) graphql.Marshaler { +func (ec *executionContext) marshalOFilter2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐFilterᚄ(ctx context.Context, sel ast.SelectionSet, v []*Filter) graphql.Marshaler { if v == nil { return graphql.Null } @@ -147219,7 +149370,7 @@ func (ec *executionContext) marshalOEthereumKeyRotation2ᚕᚖcodeᚗvegaprotoco if !isLen1 { defer wg.Done() } - ret[i] = ec.marshalOEthereumKeyRotation2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚋeventsᚋv1ᚐEthereumKeyRotation(ctx, sel, v[i]) + ret[i] = ec.marshalNFilter2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐFilter(ctx, sel, v[i]) } if isLen1 { f(i) @@ -147230,24 +149381,55 @@ func (ec *executionContext) marshalOEthereumKeyRotation2ᚕᚖcodeᚗvegaprotoco } wg.Wait() + for _, e := range ret { + if e == graphql.Null { + return graphql.Null + } + } + return ret } -func (ec *executionContext) marshalOEthereumKeyRotation2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚋeventsᚋv1ᚐEthereumKeyRotation(ctx context.Context, sel ast.SelectionSet, v *v1.EthereumKeyRotation) graphql.Marshaler { +func (ec *executionContext) unmarshalOFloat2ᚖfloat64(ctx context.Context, v interface{}) (*float64, error) { + if v == nil { + return nil, nil + } + res, err := graphql.UnmarshalFloatContext(ctx, v) + return &res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) marshalOFloat2ᚖfloat64(ctx context.Context, sel ast.SelectionSet, v *float64) graphql.Marshaler { if v == nil { return graphql.Null } - return ec._EthereumKeyRotation(ctx, sel, v) + res := graphql.MarshalFloatContext(*v) + return graphql.WrapContextMarshaler(ctx, res) } -func (ec *executionContext) marshalOFeesStats2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚋeventsᚋv1ᚐFeesStats(ctx context.Context, sel ast.SelectionSet, v *v1.FeesStats) graphql.Marshaler { +func (ec *executionContext) unmarshalOFundingPeriodDataPointSource2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚋeventsᚋv1ᚐFundingPeriodDataPoint_Source(ctx context.Context, v interface{}) (*v1.FundingPeriodDataPoint_Source, error) { + if v == nil { + return nil, nil + } + res, err := marshallers.UnmarshalFundingPeriodDataPointSource(v) + return &res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) marshalOFundingPeriodDataPointSource2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚋeventsᚋv1ᚐFundingPeriodDataPoint_Source(ctx context.Context, sel ast.SelectionSet, v *v1.FundingPeriodDataPoint_Source) graphql.Marshaler { if v == nil { return graphql.Null } - return ec._FeesStats(ctx, sel, v) + res := marshallers.MarshalFundingPeriodDataPointSource(*v) + return res } -func (ec *executionContext) marshalOFeesStatsForParty2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐFeesStatsForParty(ctx context.Context, sel ast.SelectionSet, v []*v2.FeesStatsForParty) graphql.Marshaler { +func (ec *executionContext) marshalOFutureProduct2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐFutureProduct(ctx context.Context, sel ast.SelectionSet, v *vega.FutureProduct) graphql.Marshaler { + if v == nil { + return graphql.Null + } + return ec._FutureProduct(ctx, sel, v) +} + +func (ec *executionContext) marshalOGameEdge2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐGameEdge(ctx context.Context, sel ast.SelectionSet, v []*v2.GameEdge) graphql.Marshaler { if v == nil { return graphql.Null } @@ -147274,7 +149456,7 @@ func (ec *executionContext) marshalOFeesStatsForParty2ᚕᚖcodeᚗvegaprotocol if !isLen1 { defer wg.Done() } - ret[i] = ec.marshalOFeesStatsForParty2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐFeesStatsForParty(ctx, sel, v[i]) + ret[i] = ec.marshalOGameEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐGameEdge(ctx, sel, v[i]) } if isLen1 { f(i) @@ -147288,14 +149470,28 @@ func (ec *executionContext) marshalOFeesStatsForParty2ᚕᚖcodeᚗvegaprotocol return ret } -func (ec *executionContext) marshalOFeesStatsForParty2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐFeesStatsForParty(ctx context.Context, sel ast.SelectionSet, v *v2.FeesStatsForParty) graphql.Marshaler { +func (ec *executionContext) marshalOGameEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐGameEdge(ctx context.Context, sel ast.SelectionSet, v *v2.GameEdge) graphql.Marshaler { if v == nil { return graphql.Null } - return ec._FeesStatsForParty(ctx, sel, v) + return ec._GameEdge(ctx, sel, v) } -func (ec *executionContext) marshalOFilter2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐFilterᚄ(ctx context.Context, sel ast.SelectionSet, v []*Filter) graphql.Marshaler { +func (ec *executionContext) marshalOGamePartyScore2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚋeventsᚋv1ᚐGamePartyScore(ctx context.Context, sel ast.SelectionSet, v *v1.GamePartyScore) graphql.Marshaler { + if v == nil { + return graphql.Null + } + return ec._GamePartyScore(ctx, sel, v) +} + +func (ec *executionContext) marshalOGamePartyScoreConnection2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐGamePartyScoresConnection(ctx context.Context, sel ast.SelectionSet, v *v2.GamePartyScoresConnection) graphql.Marshaler { + if v == nil { + return graphql.Null + } + return ec._GamePartyScoreConnection(ctx, sel, v) +} + +func (ec *executionContext) marshalOGamePartyScoreEdge2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐGamePartyScoresEdgeᚄ(ctx context.Context, sel ast.SelectionSet, v []*v2.GamePartyScoresEdge) graphql.Marshaler { if v == nil { return graphql.Null } @@ -147322,7 +149518,7 @@ func (ec *executionContext) marshalOFilter2ᚕᚖcodeᚗvegaprotocolᚗioᚋvega if !isLen1 { defer wg.Done() } - ret[i] = ec.marshalNFilter2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐFilter(ctx, sel, v[i]) + ret[i] = ec.marshalNGamePartyScoreEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐGamePartyScoresEdge(ctx, sel, v[i]) } if isLen1 { f(i) @@ -147342,46 +149538,29 @@ func (ec *executionContext) marshalOFilter2ᚕᚖcodeᚗvegaprotocolᚗioᚋvega return ret } -func (ec *executionContext) unmarshalOFloat2ᚖfloat64(ctx context.Context, v interface{}) (*float64, error) { - if v == nil { - return nil, nil - } - res, err := graphql.UnmarshalFloatContext(ctx, v) - return &res, graphql.ErrorOnPath(ctx, err) -} - -func (ec *executionContext) marshalOFloat2ᚖfloat64(ctx context.Context, sel ast.SelectionSet, v *float64) graphql.Marshaler { - if v == nil { - return graphql.Null - } - res := graphql.MarshalFloatContext(*v) - return graphql.WrapContextMarshaler(ctx, res) -} - -func (ec *executionContext) unmarshalOFundingPeriodDataPointSource2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚋeventsᚋv1ᚐFundingPeriodDataPoint_Source(ctx context.Context, v interface{}) (*v1.FundingPeriodDataPoint_Source, error) { +func (ec *executionContext) unmarshalOGamePartyScoreFilter2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐGamePartyScoreFilter(ctx context.Context, v interface{}) (*GamePartyScoreFilter, error) { if v == nil { return nil, nil } - res, err := marshallers.UnmarshalFundingPeriodDataPointSource(v) + res, err := ec.unmarshalInputGamePartyScoreFilter(ctx, v) return &res, graphql.ErrorOnPath(ctx, err) } -func (ec *executionContext) marshalOFundingPeriodDataPointSource2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚋeventsᚋv1ᚐFundingPeriodDataPoint_Source(ctx context.Context, sel ast.SelectionSet, v *v1.FundingPeriodDataPoint_Source) graphql.Marshaler { +func (ec *executionContext) marshalOGameTeamScore2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚋeventsᚋv1ᚐGameTeamScore(ctx context.Context, sel ast.SelectionSet, v *v1.GameTeamScore) graphql.Marshaler { if v == nil { return graphql.Null } - res := marshallers.MarshalFundingPeriodDataPointSource(*v) - return res + return ec._GameTeamScore(ctx, sel, v) } -func (ec *executionContext) marshalOFutureProduct2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐFutureProduct(ctx context.Context, sel ast.SelectionSet, v *vega.FutureProduct) graphql.Marshaler { +func (ec *executionContext) marshalOGameTeamScoreConnection2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐGameTeamScoresConnection(ctx context.Context, sel ast.SelectionSet, v *v2.GameTeamScoresConnection) graphql.Marshaler { if v == nil { return graphql.Null } - return ec._FutureProduct(ctx, sel, v) + return ec._GameTeamScoreConnection(ctx, sel, v) } -func (ec *executionContext) marshalOGameEdge2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐGameEdge(ctx context.Context, sel ast.SelectionSet, v []*v2.GameEdge) graphql.Marshaler { +func (ec *executionContext) marshalOGameTeamScoreEdge2ᚕᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐGameTeamScoresEdgeᚄ(ctx context.Context, sel ast.SelectionSet, v []*v2.GameTeamScoresEdge) graphql.Marshaler { if v == nil { return graphql.Null } @@ -147408,7 +149587,7 @@ func (ec *executionContext) marshalOGameEdge2ᚕᚖcodeᚗvegaprotocolᚗioᚋve if !isLen1 { defer wg.Done() } - ret[i] = ec.marshalOGameEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐGameEdge(ctx, sel, v[i]) + ret[i] = ec.marshalNGameTeamScoreEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐGameTeamScoresEdge(ctx, sel, v[i]) } if isLen1 { f(i) @@ -147419,14 +149598,21 @@ func (ec *executionContext) marshalOGameEdge2ᚕᚖcodeᚗvegaprotocolᚗioᚋve } wg.Wait() + for _, e := range ret { + if e == graphql.Null { + return graphql.Null + } + } + return ret } -func (ec *executionContext) marshalOGameEdge2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋdataᚑnodeᚋapiᚋv2ᚐGameEdge(ctx context.Context, sel ast.SelectionSet, v *v2.GameEdge) graphql.Marshaler { +func (ec *executionContext) unmarshalOGameTeamScoreFilter2ᚖcodeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐGameTeamScoreFilter(ctx context.Context, v interface{}) (*GameTeamScoreFilter, error) { if v == nil { - return graphql.Null + return nil, nil } - return ec._GameEdge(ctx, sel, v) + res, err := ec.unmarshalInputGameTeamScoreFilter(ctx, v) + return &res, graphql.ErrorOnPath(ctx, err) } func (ec *executionContext) unmarshalOID2string(ctx context.Context, v interface{}) (string, error) { diff --git a/datanode/gateway/graphql/gqlgen.yml b/datanode/gateway/graphql/gqlgen.yml index e3ed3ebb8f3..e783c913dbe 100644 --- a/datanode/gateway/graphql/gqlgen.yml +++ b/datanode/gateway/graphql/gqlgen.yml @@ -128,6 +128,18 @@ models: StopOrderSizeOverrideSetting: model: - code.vegaprotocol.io/vega/datanode/gateway/graphql/marshallers.StopOrderSizeOverrideSetting + GameTeamScore: + model: code.vegaprotocol.io/vega/protos/vega/events/v1.GameTeamScore + GamePartyScore: + model: code.vegaprotocol.io/vega/protos/vega/events/v1.GamePartyScore + GamePartyScoreEdge: + model: code.vegaprotocol.io/vega/protos/data-node/api/v2.GamePartyScoresEdge + GamePartyScoreConnection: + model: code.vegaprotocol.io/vega/protos/data-node/api/v2.GamePartyScoresConnection + GameTeamScoreEdge: + model: code.vegaprotocol.io/vega/protos/data-node/api/v2.GameTeamScoresEdge + GameTeamScoreConnection: + model: code.vegaprotocol.io/vega/protos/data-node/api/v2.GameTeamScoresConnection Order: model: code.vegaprotocol.io/vega/protos/vega.Order OrderUpdate: diff --git a/datanode/gateway/graphql/mocks/mocks.go b/datanode/gateway/graphql/mocks/mocks.go index cb30455b6cd..dd7f7335032 100644 --- a/datanode/gateway/graphql/mocks/mocks.go +++ b/datanode/gateway/graphql/mocks/mocks.go @@ -1620,6 +1620,46 @@ func (mr *MockTradingDataServiceClientV2MockRecorder) ListFundingPeriods(arg0, a return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListFundingPeriods", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListFundingPeriods), varargs...) } +// ListGamePartyScores mocks base method. +func (m *MockTradingDataServiceClientV2) ListGamePartyScores(arg0 context.Context, arg1 *v2.ListGamePartyScoresRequest, arg2 ...grpc.CallOption) (*v2.ListGamePartyScoresResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListGamePartyScores", varargs...) + ret0, _ := ret[0].(*v2.ListGamePartyScoresResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListGamePartyScores indicates an expected call of ListGamePartyScores. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListGamePartyScores(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListGamePartyScores", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListGamePartyScores), varargs...) +} + +// ListGameTeamScores mocks base method. +func (m *MockTradingDataServiceClientV2) ListGameTeamScores(arg0 context.Context, arg1 *v2.ListGameTeamScoresRequest, arg2 ...grpc.CallOption) (*v2.ListGameTeamScoresResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListGameTeamScores", varargs...) + ret0, _ := ret[0].(*v2.ListGameTeamScoresResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListGameTeamScores indicates an expected call of ListGameTeamScores. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListGameTeamScores(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListGameTeamScores", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListGameTeamScores), varargs...) +} + // ListGames mocks base method. func (m *MockTradingDataServiceClientV2) ListGames(arg0 context.Context, arg1 *v2.ListGamesRequest, arg2 ...grpc.CallOption) (*v2.ListGamesResponse, error) { m.ctrl.T.Helper() diff --git a/datanode/gateway/graphql/models.go b/datanode/gateway/graphql/models.go index 3335b8c3451..e74bac07348 100644 --- a/datanode/gateway/graphql/models.go +++ b/datanode/gateway/graphql/models.go @@ -419,6 +419,22 @@ type Filter struct { Conditions []*Condition `json:"conditions,omitempty"` } +type GamePartyScoreFilter struct { + // Zero or more game IDs to filter by + GameIds []string `json:"game_ids,omitempty"` + // Zero or more team IDs to filter by + TeamIds []string `json:"team_ids,omitempty"` + // Zero or more party IDs to filter by + PartyIds []string `json:"party_ids,omitempty"` +} + +type GameTeamScoreFilter struct { + // Zero or more game IDs to filter by + GameIds []string `json:"game_ids,omitempty"` + // Zero or more team IDs to filter by + TeamIds []string `json:"team_ids,omitempty"` +} + // Individual party participating in a game and their metrics type IndividualGameEntity struct { // Party ID of the participant diff --git a/datanode/gateway/graphql/resolvers.go b/datanode/gateway/graphql/resolvers.go index 3cca2cdee94..b9f6c1f3c36 100644 --- a/datanode/gateway/graphql/resolvers.go +++ b/datanode/gateway/graphql/resolvers.go @@ -669,6 +669,14 @@ func (r *VegaResolverRoot) TimeWeightedNotionalPosition() TimeWeightedNotionalPo return (*timeWeightedNotionalPositionResolver)(r) } +func (r *VegaResolverRoot) GamePartyScore() GamePartyScoreResolver { + return (*gamePartyScoresResolver)(r) +} + +func (r *VegaResolverRoot) GameTeamScore() GameTeamScoreResolver { + return (*gameTeamScoresResolver)(r) +} + type protocolUpgradeProposalResolver VegaResolverRoot func (r *protocolUpgradeProposalResolver) UpgradeBlockHeight(_ context.Context, obj *eventspb.ProtocolUpgradeEvent) (string, error) { @@ -809,6 +817,37 @@ func (r *myQueryResolver) PartiesProfilesConnection(ctx context.Context, ids []s return res.Profiles, nil } +func (r *myQueryResolver) GamePartyScores(ctx context.Context, filter *GamePartyScoreFilter, pagination *v2.Pagination) (*v2.GamePartyScoresConnection, error) { + req := v2.ListGamePartyScoresRequest{ + Filter: &v2.GamePartyScoresFilter{ + GameIds: filter.GameIds, + TeamIds: filter.TeamIds, + PartyIds: filter.PartyIds, + }, + Pagination: pagination, + } + res, err := r.tradingDataClientV2.ListGamePartyScores(ctx, &req) + if err != nil { + return nil, err + } + return res.PartyScores, nil +} + +func (r *myQueryResolver) GameTeamScores(ctx context.Context, filter *GameTeamScoreFilter, pagination *v2.Pagination) (*v2.GameTeamScoresConnection, error) { + req := v2.ListGameTeamScoresRequest{ + Filter: &v2.GameTeamScoresFilter{ + GameIds: filter.GameIds, + TeamIds: filter.TeamIds, + }, + Pagination: pagination, + } + res, err := r.tradingDataClientV2.ListGameTeamScores(ctx, &req) + if err != nil { + return nil, err + } + return res.TeamScores, nil +} + func (r *myQueryResolver) PartyMarginModes(ctx context.Context, marketID *string, partyID *string, pagination *v2.Pagination) (*v2.PartyMarginModesConnection, error) { req := v2.ListPartyMarginModesRequest{ MarketId: marketID, diff --git a/datanode/gateway/graphql/schema.graphql b/datanode/gateway/graphql/schema.graphql index a15e7ebe0bd..28def98430c 100644 --- a/datanode/gateway/graphql/schema.graphql +++ b/datanode/gateway/graphql/schema.graphql @@ -1120,6 +1120,22 @@ type Query { pagination: Pagination ): StopOrderConnection + "Get a list of current game team scores. If provided, the filter will be applied to the list of games/teams to restrict the results." + gameTeamScores( + "Optional filter to restrict the results of the list." + filter: GameTeamScoreFilter + "Optional pagination information" + pagination: Pagination + ): GameTeamScoreConnection + + "Get a list of current game party scores. If provided, the filter will be applied to the list of games/parties to restrict the results." + gamePartyScores( + "Optional filter to restrict the results of the list." + filter: GamePartyScoreFilter + "Optional pagination information" + pagination: Pagination + ): GamePartyScoreConnection + "List markets in a succession line" successorMarkets( "Market ID of any market in the succession line" @@ -5969,6 +5985,22 @@ input StopOrderFilter { liveOnly: Boolean } +input GameTeamScoreFilter { + "Zero or more game IDs to filter by" + game_ids: [ID!] + "Zero or more team IDs to filter by" + team_ids: [ID!] +} + +input GamePartyScoreFilter { + "Zero or more game IDs to filter by" + game_ids: [ID!] + "Zero or more team IDs to filter by" + team_ids: [ID!] + "Zero or more party IDs to filter by" + party_ids: [ID!] +} + input OrderByPartyIdsFilter { order: OrderFilter partyIds: [ID!] @@ -6001,6 +6033,39 @@ type StopOrderConnection { pageInfo: PageInfo } +"Connection type for retrieving cursor-based paginated game team score information" +type GameTeamScoreConnection { + "The game team scores in this connection" + edges: [GameTeamScoreEdge!] + "The pagination information" + pageInfo: PageInfo +} + +"Connection type for retrieving cursor-based paginated game party score information" +type GamePartyScoreConnection { + "The game party scores in this connection" + edges: [GamePartyScoreEdge!] + "The pagination information" + pageInfo: PageInfo +} + +"Edge type containing the game party scores and cursor information returned by a GamePartyScoreConnection" +type GamePartyScoreEdge { + "The game party score" + node: GamePartyScore + "The cursor for this game party score" + cursor: String +} + +"Edge type containing the game team scores and cursor information returned by a GameTeamScoreConnection" +type GameTeamScoreEdge { + "The game team score" + node: GameTeamScore + "The cursor for this game team score" + cursor: String +} + + "Edge type containing the position and cursor information returned by a PositionConnection" type PositionEdge { "The position" @@ -7351,3 +7416,44 @@ type TimeWeightedNotionalPosition { "Time of the last block in which the metric was updated" lastUpdated: Timestamp! } + +"Game team score" +type GameTeamScore { + "Game ID" + gameId: ID! + "Team ID" + teamId: ID! + "The epoch for which this score is" + epochId: Int! + "Time of the score in RFC3339Nano" + time: Timestamp! + "The score" + score: String! +} + +"Game party score" +type GamePartyScore { + "Game ID" + gameId: ID! + "Team ID (optional)" + teamId: ID + "The epoch for which this score is" + epochId: Int! + "The party ID" + partyId: ID! + "Time of the score in RFC3339Nano" + time: Timestamp! + "The current score of the party in the game" + score: String! + "The staking balance of the party in the game, will be populated only if the game has a requirement for it" + stakingBalance: String + "The open volume of the party in the game, will be populated only if the game has a requirement for it" + openVolume: String + "The total fees paid by the party in the game during the relevant period" + totalFeesPaid: String! + "Is the party eligible for a reward in this game based on existing information" + isEligible: Boolean! + "If the party is a member of a team, this is their relative position in the sorting order of the team's scores" + rank: Int +} + \ No newline at end of file diff --git a/datanode/networkhistory/service_test.go b/datanode/networkhistory/service_test.go index 66ce17cad31..55fd226dfbd 100644 --- a/datanode/networkhistory/service_test.go +++ b/datanode/networkhistory/service_test.go @@ -379,12 +379,12 @@ func TestMain(t *testing.M) { log.Infof("%s", goldenSourceHistorySegment[4000].HistorySegmentID) log.Infof("%s", goldenSourceHistorySegment[5000].HistorySegmentID) - panicIfHistorySegmentIdsNotEqual(goldenSourceHistorySegment[1000].HistorySegmentID, "QmQqE56RWuyHEWm1rqcFNcEvCWiBpgMsSs1CAwABGfkSSh", snapshots) - panicIfHistorySegmentIdsNotEqual(goldenSourceHistorySegment[2000].HistorySegmentID, "QmNn42pXmiaxpDgLAAr2H1WTdz9YWYfyWgDBWajPb6m6Qd", snapshots) - panicIfHistorySegmentIdsNotEqual(goldenSourceHistorySegment[2500].HistorySegmentID, "QmcwwiZP3stVahfyLU4f6NjL3Spyn67JXV4RsPt2ieWL5i", snapshots) - panicIfHistorySegmentIdsNotEqual(goldenSourceHistorySegment[3000].HistorySegmentID, "QmP8LoArcevGNGoyMnfcLS82gErPfHHAukYJyax3hfvFd9", snapshots) - panicIfHistorySegmentIdsNotEqual(goldenSourceHistorySegment[4000].HistorySegmentID, "QmRJbm1dMajfEEMAzumsybuZ7hq6QcZJddT5QcNmGsFZir", snapshots) - panicIfHistorySegmentIdsNotEqual(goldenSourceHistorySegment[5000].HistorySegmentID, "QmQusPSJ5wq5gLjjCutX3hzUZ4yyY4uysyvqtq4K5disQE", snapshots) + panicIfHistorySegmentIdsNotEqual(goldenSourceHistorySegment[1000].HistorySegmentID, "Qmcs5Hzbdtjk9N1X1oS6vcpBzZuGo9qc3Nw42WQ6kffG55", snapshots) + panicIfHistorySegmentIdsNotEqual(goldenSourceHistorySegment[2000].HistorySegmentID, "QmZ3h4ynB1afxabstcmGK5FUpuWtfJrzjU6FN7NC5efBrA", snapshots) + panicIfHistorySegmentIdsNotEqual(goldenSourceHistorySegment[2500].HistorySegmentID, "QmTHEuD4cCFpJTBitx9iAc3B7mYTGTj3miWhQLpZ3EADVW", snapshots) + panicIfHistorySegmentIdsNotEqual(goldenSourceHistorySegment[3000].HistorySegmentID, "QmWgwDhXXomVieGHHyxM3Vr675hPHvYBBdWjCUg1Z4LJ9Q", snapshots) + panicIfHistorySegmentIdsNotEqual(goldenSourceHistorySegment[4000].HistorySegmentID, "QmR5eCUF148Pd3YvVaLPe4MrQemtYSa9qLBUEKyCurBYJo", snapshots) + panicIfHistorySegmentIdsNotEqual(goldenSourceHistorySegment[5000].HistorySegmentID, "QmVxdKwANkqQ8BV8q4JZopgmizQxxXpttYtsxibb27t7KK", snapshots) }, postgresRuntimePath, sqlFs) if exitCode != 0 { diff --git a/datanode/service/game_scores.go b/datanode/service/game_scores.go new file mode 100644 index 00000000000..9175da04604 --- /dev/null +++ b/datanode/service/game_scores.go @@ -0,0 +1,68 @@ +// Copyright (C) 2023 Gobalsky Labs Limited +// +// 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 service + +import ( + "context" + + "code.vegaprotocol.io/vega/datanode/entities" + "code.vegaprotocol.io/vega/logging" +) + +type gameScoreStore interface { + ListPartyScores( + ctx context.Context, + gameIDs []entities.GameID, + partyIDs []entities.PartyID, + teamIDs []entities.TeamID, + pagination entities.CursorPagination, + ) ([]entities.GamePartyScore, entities.PageInfo, error) + ListTeamScores( + ctx context.Context, + gameIDs []entities.GameID, + teamIDs []entities.TeamID, + pagination entities.CursorPagination, + ) ([]entities.GameTeamScore, entities.PageInfo, error) +} + +type GameScore struct { + store gameScoreStore +} + +func NewGameScore(store gameScoreStore, log *logging.Logger) *GameScore { + return &GameScore{ + store: store, + } +} + +func (gs *GameScore) ListPartyScores( + ctx context.Context, + gameIDs []entities.GameID, + partyIDs []entities.PartyID, + teamIDs []entities.TeamID, + pagination entities.CursorPagination, +) ([]entities.GamePartyScore, entities.PageInfo, error) { + return gs.store.ListPartyScores(ctx, gameIDs, partyIDs, teamIDs, pagination) +} + +func (gs *GameScore) ListTeamScores( + ctx context.Context, + gameIDs []entities.GameID, + teamIDs []entities.TeamID, + pagination entities.CursorPagination, +) ([]entities.GameTeamScore, entities.PageInfo, error) { + return gs.store.ListTeamScores(ctx, gameIDs, teamIDs, pagination) +} diff --git a/datanode/sqlstore/game_scores.go b/datanode/sqlstore/game_scores.go new file mode 100644 index 00000000000..2e05deccc9c --- /dev/null +++ b/datanode/sqlstore/game_scores.go @@ -0,0 +1,282 @@ +// Copyright (C) 2023 Gobalsky Labs Limited +// +// 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 sqlstore + +import ( + "context" + "encoding/hex" + "fmt" + "strings" + "time" + + "code.vegaprotocol.io/vega/datanode/entities" + "code.vegaprotocol.io/vega/datanode/metrics" + "code.vegaprotocol.io/vega/libs/ptr" + v2 "code.vegaprotocol.io/vega/protos/data-node/api/v2" + + "github.com/georgysavva/scany/pgxscan" + "github.com/shopspring/decimal" +) + +type GameScores struct { + *ConnectionSource +} + +var gamesTeamOrderding = TableOrdering{ + ColumnOrdering{Name: "game_id", Sorting: ASC}, + ColumnOrdering{Name: "team_id", Sorting: ASC}, +} + +var gamesPartyOrderding = TableOrdering{ + ColumnOrdering{Name: "game_id", Sorting: ASC}, + ColumnOrdering{Name: "party_id", Sorting: ASC}, +} + +func NewGameScores(connectionSource *ConnectionSource) *GameScores { + r := &GameScores{ + ConnectionSource: connectionSource, + } + return r +} + +func (gs *GameScores) AddPartyScore(ctx context.Context, r entities.GamePartyScore) error { + defer metrics.StartSQLQuery("GameScores", "AddPartyScores")() + _, err := gs.Connection.Exec(ctx, + `INSERT INTO game_party_scores( + game_id, + team_id, + epoch_id, + party_id, + score, + staking_balance, + open_volume, + total_fees_paid, + is_eligible, + rank, + vega_time + ) + VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11);`, + r.GameID, r.TeamID, r.EpochID, r.PartyID, r.Score, r.StakingBalance, r.OpenVolume, r.TotalFeesPaid, r.IsEligible, + r.Rank, r.VegaTime) + return err +} + +func (gs *GameScores) AddTeamScore(ctx context.Context, r entities.GameTeamScore) error { + defer metrics.StartSQLQuery("GameScores", "AddPartyScores")() + _, err := gs.Connection.Exec(ctx, + `INSERT INTO game_team_scores( + game_id, + team_id, + epoch_id, + score, + vega_time + ) + VALUES ($1, $2, $3, $4, $5);`, + r.GameID, r.TeamID, r.EpochID, r.Score, r.VegaTime) + return err +} + +// scany does not like deserializing byte arrays to strings so if an ID +// needs to be nillable, we need to scan it into a temporary struct that will +// define the ID field as a byte array and then parse the value accordingly. +type scannedPartyGameScore struct { + GameID entities.GameID + TeamID []byte + EpochID int64 + PartyID entities.PartyID + Score decimal.Decimal + StakingBalance decimal.Decimal + OpenVolume decimal.Decimal + TotalFeesPaid decimal.Decimal + IsEligible bool + Rank *uint64 + VegaTime time.Time + TxHash entities.TxHash + SeqNum uint64 +} + +func (gs *GameScores) ListPartyScores( + ctx context.Context, + gameIDs []entities.GameID, + partyIDs []entities.PartyID, + teamIDs []entities.TeamID, + pagination entities.CursorPagination, +) ([]entities.GamePartyScore, entities.PageInfo, error) { + var pageInfo entities.PageInfo + where, args, err := filterPartyQuery(gameIDs, partyIDs, teamIDs) + if err != nil { + return nil, pageInfo, err + } + + query := `SELECT * FROM game_party_scores_current ` + query = fmt.Sprintf("%s %s", query, where) + query, args, err = PaginateQuery[entities.PartyGameScoreCursor](query, args, gamesPartyOrderding, pagination) + if err != nil { + return nil, pageInfo, err + } + + sPgs := []scannedPartyGameScore{} + defer metrics.StartSQLQuery("GameScores", "ListPartyScores")() + + if err = pgxscan.Select(ctx, gs.Connection, &sPgs, query, args...); err != nil { + return nil, pageInfo, fmt.Errorf("querying game party scores: %w", err) + } + + pgs := parseScannedPartyGameScores(sPgs) + ret, pageInfo := entities.PageEntities[*v2.GamePartyScoresEdge](pgs, pagination) + return ret, pageInfo, nil +} + +func filterPartyQuery(gameIDs []entities.GameID, partyIDs []entities.PartyID, teamIDs []entities.TeamID) (string, []any, error) { + var ( + args []any + conditions []string + ) + + if len(gameIDs) > 0 { + gids := make([][]byte, len(gameIDs)) + for i, gid := range gameIDs { + bytes, err := gid.Bytes() + if err != nil { + return "", nil, fmt.Errorf("could not decode game ID: %w", err) + } + gids[i] = bytes + } + conditions = append(conditions, fmt.Sprintf("game_id = ANY(%s)", nextBindVar(&args, gids))) + } + + if len(partyIDs) > 0 { + pids := make([][]byte, len(partyIDs)) + for i, pid := range partyIDs { + bytes, err := pid.Bytes() + if err != nil { + return "", nil, fmt.Errorf("could not decode party ID: %w", err) + } + pids[i] = bytes + } + conditions = append(conditions, fmt.Sprintf("party_id = ANY(%s)", nextBindVar(&args, pids))) + } + + if len(teamIDs) > 0 { + tids := make([][]byte, len(teamIDs)) + for i, tid := range teamIDs { + bytes, err := tid.Bytes() + if err != nil { + return "", nil, fmt.Errorf("could not decode team ID: %w", err) + } + tids[i] = bytes + } + conditions = append(conditions, fmt.Sprintf("team_id = ANY(%s)", nextBindVar(&args, tids))) + } + + whereClause := strings.Join(conditions, " AND ") + if len(whereClause) > 0 { + return " WHERE " + whereClause, args, nil + } + return "", args, nil +} + +func filterTeamQuery(gameIDs []entities.GameID, teamIDs []entities.TeamID) (string, []any, error) { + var ( + args []any + conditions []string + ) + + if len(gameIDs) > 0 { + gids := make([][]byte, len(gameIDs)) + for i, gid := range gameIDs { + bytes, err := gid.Bytes() + if err != nil { + return "", nil, fmt.Errorf("could not decode game ID: %w", err) + } + gids[i] = bytes + } + conditions = append(conditions, fmt.Sprintf("game_id = ANY(%s)", nextBindVar(&args, gids))) + } + if len(teamIDs) > 0 { + tids := make([][]byte, len(teamIDs)) + for i, tid := range teamIDs { + bytes, err := tid.Bytes() + if err != nil { + return "", nil, fmt.Errorf("could not decode team ID: %w", err) + } + tids[i] = bytes + } + conditions = append(conditions, fmt.Sprintf("team_id = ANY(%s)", nextBindVar(&args, tids))) + } + if len(conditions) > 0 { + return " WHERE " + strings.Join(conditions, " AND "), args, nil + } + return "", args, nil +} + +func (gs *GameScores) ListTeamScores( + ctx context.Context, + gameIDs []entities.GameID, + teamIDs []entities.TeamID, + pagination entities.CursorPagination, +) ([]entities.GameTeamScore, entities.PageInfo, error) { + var pageInfo entities.PageInfo + where, args, err := filterTeamQuery(gameIDs, teamIDs) + if err != nil { + return nil, pageInfo, err + } + + query := `SELECT * FROM game_team_scores_current ` + query = fmt.Sprintf("%s %s", query, where) + query, args, err = PaginateQuery[entities.TeamGameScoreCursor](query, args, gamesTeamOrderding, pagination) + if err != nil { + return nil, pageInfo, err + } + + tgs := []entities.GameTeamScore{} + defer metrics.StartSQLQuery("GameScores", "ListTeamScores")() + + if err = pgxscan.Select(ctx, gs.Connection, &tgs, query, args...); err != nil { + return nil, pageInfo, fmt.Errorf("querying game team scores: %w", err) + } + + ret, pageInfo := entities.PageEntities[*v2.GameTeamScoresEdge](tgs, pagination) + return ret, pageInfo, nil +} + +func parseScannedPartyGameScores(scanned []scannedPartyGameScore) []entities.GamePartyScore { + pgs := make([]entities.GamePartyScore, 0, len(scanned)) + for _, s := range scanned { + var teamID *entities.TeamID + if s.TeamID != nil { + id := hex.EncodeToString(s.TeamID) + if id != "" { + teamID = ptr.From(entities.TeamID(id)) + } + } + + pgs = append(pgs, entities.GamePartyScore{ + GameID: s.GameID, + TeamID: teamID, + EpochID: s.EpochID, + PartyID: s.PartyID, + Score: s.Score, + StakingBalance: s.StakingBalance, + OpenVolume: s.OpenVolume, + TotalFeesPaid: s.TotalFeesPaid, + IsEligible: s.IsEligible, + Rank: s.Rank, + VegaTime: s.VegaTime, + }) + } + return pgs +} diff --git a/datanode/sqlstore/game_scores_test.go b/datanode/sqlstore/game_scores_test.go new file mode 100644 index 00000000000..58ca5a607d1 --- /dev/null +++ b/datanode/sqlstore/game_scores_test.go @@ -0,0 +1,274 @@ +// Copyright (C) 2023 Gobalsky Labs Limited +// +// 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 sqlstore_test + +import ( + "context" + "sort" + "testing" + "time" + + "code.vegaprotocol.io/vega/datanode/entities" + "code.vegaprotocol.io/vega/datanode/sqlstore" + "code.vegaprotocol.io/vega/libs/num" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +type gameScoresTestStore struct { + gs *sqlstore.GameScores +} + +func newGameScoresTestStore(t *testing.T) *gameScoresTestStore { + t.Helper() + return &gameScoresTestStore{ + gs: sqlstore.NewGameScores(connectionSource), + } +} + +func TestInsertPartyScores(t *testing.T) { + ctx := tempTransaction(t) + store := newGameScoresTestStore(t) + now := time.Now() + gps := entities.GamePartyScore{ + GameID: "FFFF", + EpochID: 1, + PartyID: "EEEE", + Score: num.DecimalOne(), + StakingBalance: num.DecimalTwo(), + OpenVolume: num.DecimalZero(), + TotalFeesPaid: num.DecimalFromInt64(4), + IsEligible: true, + VegaTime: now, + } + + t.Run("can insert successfully", func(t *testing.T) { + assert.NoError(t, store.gs.AddPartyScore(ctx, gps)) + }) + + team := entities.TeamID("AAAA") + gps.GameID = "BBBB" + gps.TeamID = &team + t.Run("can insert successfully with team", func(t *testing.T) { + assert.NoError(t, store.gs.AddPartyScore(ctx, gps)) + }) + + rank := uint64(2) + gps.PartyID = "BBBB" + gps.Rank = &rank + t.Run("can insert successfully with rank", func(t *testing.T) { + assert.NoError(t, store.gs.AddPartyScore(ctx, gps)) + }) +} + +func TestInsertTeamScores(t *testing.T) { + ctx := tempTransaction(t) + store := newGameScoresTestStore(t) + now := time.Now() + gts := entities.GameTeamScore{ + GameID: "FFFF", + EpochID: 1, + TeamID: "EEEE", + Score: num.DecimalOne(), + VegaTime: now, + } + + t.Run("can insert successfully", func(t *testing.T) { + require.NoError(t, store.gs.AddTeamScore(ctx, gts)) + }) +} + +func prepopoulatePartyScores(t *testing.T, ctx context.Context, gs *gameScoresTestStore, now time.Time) []entities.GamePartyScore { + t.Helper() + team1 := entities.TeamID("AAAA") + team2 := entities.TeamID("BBBB") + team3 := entities.TeamID("CCCC") + gps := []entities.GamePartyScore{ + { + GameID: "EEEE", + EpochID: 1, + PartyID: "FFFE", + TeamID: &team3, + Score: num.DecimalFromFloat(0.1), + StakingBalance: num.DecimalFromInt64(1), + OpenVolume: num.DecimalFromInt64(2), + TotalFeesPaid: num.DecimalFromInt64(3), + IsEligible: true, + VegaTime: now, + }, + { + GameID: "FFFF", + EpochID: 1, + PartyID: "FFFE", + TeamID: &team1, + Score: num.DecimalFromFloat(0.1), + StakingBalance: num.DecimalFromInt64(1), + OpenVolume: num.DecimalFromInt64(2), + TotalFeesPaid: num.DecimalFromInt64(3), + IsEligible: true, + VegaTime: now, + }, + { + GameID: "EEFF", + EpochID: 1, + PartyID: "FFFD", + TeamID: &team2, + Score: num.DecimalFromFloat(0.2), + StakingBalance: num.DecimalFromInt64(11), + OpenVolume: num.DecimalFromInt64(22), + TotalFeesPaid: num.DecimalFromInt64(33), + IsEligible: true, + VegaTime: now, + }, + { + GameID: "FFFF", + EpochID: 1, + PartyID: "FFFD", + Score: num.DecimalFromFloat(0.2), + StakingBalance: num.DecimalFromInt64(111), + OpenVolume: num.DecimalFromInt64(222), + TotalFeesPaid: num.DecimalFromInt64(333), + IsEligible: true, + VegaTime: now, + }, + { + GameID: "FFFF", + EpochID: 1, + PartyID: "FFFC", + TeamID: &team3, + Score: num.DecimalFromFloat(0.3), + StakingBalance: num.DecimalFromInt64(1111), + OpenVolume: num.DecimalFromInt64(2222), + TotalFeesPaid: num.DecimalFromInt64(3333), + IsEligible: true, + VegaTime: now, + }, + { + GameID: "FFFF", + EpochID: 1, + PartyID: "FFFB", + TeamID: &team3, + Score: num.DecimalFromFloat(0.4), + StakingBalance: num.DecimalFromInt64(11111), + OpenVolume: num.DecimalFromInt64(22222), + TotalFeesPaid: num.DecimalFromInt64(33333), + IsEligible: true, + VegaTime: now, + }, + { + GameID: "FFFF", + EpochID: 1, + PartyID: "FFFA", + Score: num.DecimalFromFloat(0.5), + StakingBalance: num.DecimalTwo(), + OpenVolume: num.DecimalZero(), + TotalFeesPaid: num.DecimalFromInt64(4), + IsEligible: true, + VegaTime: now, + }, + } + for _, gps1 := range gps { + require.NoError(t, gs.gs.AddPartyScore(ctx, gps1)) + } + sort.Slice(gps, func(i, j int) bool { + if gps[i].GameID == gps[j].GameID { + return gps[i].PartyID > gps[j].PartyID + } + return gps[i].GameID > gps[j].GameID + }) + + return gps +} + +func TestListPartyScoresNoFilters(t *testing.T) { + ctx := tempTransaction(t) + store := newGameScoresTestStore(t) + now := time.Now() + pagination, _ := entities.NewCursorPagination(nil, nil, nil, nil, true) + partyScores := prepopoulatePartyScores(t, ctx, store, now) + scores, _, err := store.gs.ListPartyScores(ctx, nil, nil, nil, pagination) + require.NoError(t, err) + require.Equal(t, len(partyScores), len(scores)) + + // now insert a fresh score for an existing party for the same game + now = now.Add(time.Hour) + partyScores[0].VegaTime = now + partyScores[0].Score = num.DecimalE() + require.NoError(t, store.gs.AddPartyScore(ctx, partyScores[0])) + require.Equal(t, len(partyScores), len(scores)) +} + +func TestListPartyScoresPartyFilters(t *testing.T) { + ctx := tempTransaction(t) + store := newGameScoresTestStore(t) + now := time.Now() + pagination, _ := entities.NewCursorPagination(nil, nil, nil, nil, true) + prepopoulatePartyScores(t, ctx, store, now) + scores, _, err := store.gs.ListPartyScores(ctx, nil, []entities.PartyID{"FFFD"}, nil, pagination) + require.NoError(t, err) + require.Equal(t, 2, len(scores)) + + scores, _, err = store.gs.ListPartyScores(ctx, nil, []entities.PartyID{"FFFD", "FFFE"}, nil, pagination) + require.NoError(t, err) + require.Equal(t, 4, len(scores)) +} + +func TestListPartyScoresGameFilters(t *testing.T) { + ctx := tempTransaction(t) + store := newGameScoresTestStore(t) + now := time.Now() + pagination, _ := entities.NewCursorPagination(nil, nil, nil, nil, true) + ps := prepopoulatePartyScores(t, ctx, store, now) + scores, _, err := store.gs.ListPartyScores(ctx, []entities.GameID{"EEFF"}, nil, nil, pagination) + require.NoError(t, err) + require.Equal(t, 1, len(scores)) + + scores, _, err = store.gs.ListPartyScores(ctx, []entities.GameID{"FFFF", "EEEE"}, nil, nil, pagination) + require.NoError(t, err) + require.Equal(t, len(ps)-1, len(scores)) +} + +func TestListPartyScoresTeamFilters(t *testing.T) { + ctx := tempTransaction(t) + store := newGameScoresTestStore(t) + now := time.Now() + pagination, _ := entities.NewCursorPagination(nil, nil, nil, nil, true) + prepopoulatePartyScores(t, ctx, store, now) + scores, _, err := store.gs.ListPartyScores(ctx, nil, nil, []entities.TeamID{"AAAA"}, pagination) + require.NoError(t, err) + require.Equal(t, 1, len(scores)) + scores, _, err = store.gs.ListPartyScores(ctx, nil, nil, []entities.TeamID{"AAAA", "BBBB"}, pagination) + require.NoError(t, err) + require.Equal(t, 2, len(scores)) +} + +func TestListPartyScoresAllFilters(t *testing.T) { + ctx := tempTransaction(t) + store := newGameScoresTestStore(t) + now := time.Now() + pagination, _ := entities.NewCursorPagination(nil, nil, nil, nil, true) + prepopoulatePartyScores(t, ctx, store, now) + + // all filters populated + scores, _, err := store.gs.ListPartyScores(ctx, []entities.GameID{"FFFF"}, []entities.PartyID{"FFFB"}, []entities.TeamID{"CCCC"}, pagination) + require.NoError(t, err) + require.Equal(t, 1, len(scores)) + require.Equal(t, num.DecimalFromFloat(0.4), scores[0].Score) + require.Equal(t, num.DecimalFromInt64(11111), scores[0].StakingBalance) + require.Equal(t, num.DecimalFromInt64(22222), scores[0].OpenVolume) + require.Equal(t, num.DecimalFromInt64(33333), scores[0].TotalFeesPaid) +} diff --git a/datanode/sqlstore/migrations/0108_game_scores.sql b/datanode/sqlstore/migrations/0108_game_scores.sql new file mode 100644 index 00000000000..35bdf948437 --- /dev/null +++ b/datanode/sqlstore/migrations/0108_game_scores.sql @@ -0,0 +1,117 @@ +-- +goose Up + +-- create the history and current tables for game team scores +create table if not exists game_team_scores ( + game_id bytea not null, + team_id bytea not null, + epoch_id bigint not null, + score NUMERIC NOT NULL, + vega_time timestamp with time zone not null, + primary key (vega_time, game_id, team_id) +); + +create table if not exists game_party_scores ( + game_id bytea not null, + party_id bytea not null, + team_id bytea, + epoch_id bigint not null, + score NUMERIC NOT NULL, + staking_balance HUGEINT, + open_volume HUGEINT, + total_fees_paid HUGEINT not null, + is_eligible boolean, + rank integer, + vega_time timestamp with time zone not null, + primary key (vega_time, game_id, party_id) +); + + +select create_hypertable('game_team_scores', 'vega_time', chunk_time_interval => INTERVAL '1 day'); +select create_hypertable('game_party_scores', 'vega_time', chunk_time_interval => INTERVAL '1 day'); + +create table if not exists game_team_scores_current ( + game_id bytea not null, + team_id bytea not null, + epoch_id bigint not null, + score NUMERIC NOT NULL, + vega_time timestamp with time zone not null, + primary key (game_id, team_id) +); + +create table if not exists game_party_scores_current ( + game_id bytea not null, + party_id bytea not null, + team_id bytea, + epoch_id bigint not null, + score NUMERIC NOT NULL, + staking_balance HUGEINT, + open_volume HUGEINT, + total_fees_paid HUGEINT not null, + is_eligible boolean, + rank integer, + vega_time timestamp with time zone not null, + primary key (game_id, party_id) +); + +-- create the trigger functions and triggers +-- +goose StatementBegin +create or replace function update_game_team_scores() + returns trigger + language plpgsql +as $$ + begin + insert into game_team_scores_current(game_id,team_id, epoch_id, score, vega_time) + values (new.game_id, new.team_id, new.epoch_id, new.score, new.vega_time) + on conflict(game_id, team_id) + do update set + epoch_id = excluded.epoch_id, + score = excluded.score, + vega_time = excluded.vega_time; + return null; + end; +$$; + +create or replace function update_game_party_scores() + returns trigger + language plpgsql +as $$ + begin + insert into game_party_scores_current(game_id,party_id, team_id, epoch_id, score, + staking_balance,open_volume,total_fees_paid,is_eligible,vega_time) + values (new.game_id, new.party_id, new.team_id, new.epoch_id, new.score, + new.staking_balance, new.open_volume, new.total_fees_paid, + new.is_eligible,new.vega_time) + on conflict(game_id, party_id) + do update set + epoch_id = excluded.epoch_id, + team_id = excluded.team_id, + score = excluded.score, + staking_balance = excluded.staking_balance, + open_volume = excluded.open_volume, + total_fees_paid = excluded.total_fees_paid, + is_eligible = excluded.is_eligible, + vega_time = excluded.vega_time; + return null; + end; +$$; +-- +goose StatementEnd + +create trigger update_game_team_scores + after insert or update + on game_team_scores + for each row execute function update_game_team_scores(); + +create trigger update_game_party_scores + after insert or update + on game_party_scores + for each row execute function update_game_party_scores(); + +-- +goose Down + +drop table if exists game_team_scores_current; +drop table if exists game_team_scores; +drop function if exists update_game_team_scores; + +drop table if exists game_party_scores_current; +drop table if exists game_party_scores; +drop function if exists update_game_party_scores; \ No newline at end of file diff --git a/datanode/sqlstore/sqlstore.go b/datanode/sqlstore/sqlstore.go index 4706e33898d..10eeaeedb69 100644 --- a/datanode/sqlstore/sqlstore.go +++ b/datanode/sqlstore/sqlstore.go @@ -100,6 +100,8 @@ var defaultRetentionPolicies = map[RetentionPeriod][]RetentionPolicy{ {HypertableOrCaggName: "paid_liquidity_fees", DataRetentionPeriod: "1 year"}, {HypertableOrCaggName: "transfer_fees_discount", DataRetentionPeriod: "1 year"}, {HypertableOrCaggName: "time_weighted_notional_positions", DataRetentionPeriod: "1 month"}, + {HypertableOrCaggName: "game_team_scores", DataRetentionPeriod: "1 month"}, + {HypertableOrCaggName: "game_party_scores", DataRetentionPeriod: "1 month"}, }, RetentionPeriodArchive: { {HypertableOrCaggName: "*", DataRetentionPeriod: string(RetentionPeriodArchive)}, diff --git a/datanode/sqlstore/time_weighted_notional_position_test.go b/datanode/sqlstore/time_weighted_notional_position_test.go index 85d576c45fe..c0a4fd26460 100644 --- a/datanode/sqlstore/time_weighted_notional_position_test.go +++ b/datanode/sqlstore/time_weighted_notional_position_test.go @@ -21,6 +21,7 @@ import ( "code.vegaprotocol.io/vega/datanode/entities" "code.vegaprotocol.io/vega/datanode/sqlstore" + "code.vegaprotocol.io/vega/libs/num" "code.vegaprotocol.io/vega/libs/ptr" "github.com/georgysavva/scany/pgxscan" @@ -37,7 +38,7 @@ func TestTimeWeightedNotionalPosition_Upsert(t *testing.T) { PartyID: entities.PartyID(GenerateID()), GameID: entities.GameID(GenerateID()), EpochSeq: 1, - TimeWeightedNotionalPosition: 1000, + TimeWeightedNotionalPosition: num.DecimalFromInt64(1000), VegaTime: time.Now().Truncate(time.Microsecond), } err := tw.Upsert(ctx, want) @@ -57,12 +58,12 @@ func TestTimeWeightedNotionalPosition_Upsert(t *testing.T) { PartyID: entities.PartyID(GenerateID()), GameID: entities.GameID(GenerateID()), EpochSeq: 2, - TimeWeightedNotionalPosition: 1000, + TimeWeightedNotionalPosition: num.DecimalFromInt64(1000), VegaTime: time.Now().Truncate(time.Microsecond), } err := tw.Upsert(ctx, want) require.NoError(t, err) - want.TimeWeightedNotionalPosition = 2000 + want.TimeWeightedNotionalPosition = num.DecimalFromInt64(2000) err = tw.Upsert(ctx, want) require.NoError(t, err) var got entities.TimeWeightedNotionalPosition @@ -83,7 +84,7 @@ func TestTimeWeightedNotionalPosition_Get(t *testing.T) { PartyID: entities.PartyID(GenerateID()), GameID: entities.GameID(GenerateID()), EpochSeq: 1, - TimeWeightedNotionalPosition: 1000, + TimeWeightedNotionalPosition: num.DecimalFromInt64(1000), VegaTime: time.Now().Truncate(time.Microsecond), } err := tw.Upsert(ctx, want) @@ -100,13 +101,13 @@ func TestTimeWeightedNotionalPosition_Get(t *testing.T) { PartyID: entities.PartyID(GenerateID()), GameID: entities.GameID(GenerateID()), EpochSeq: 1, - TimeWeightedNotionalPosition: 1000, + TimeWeightedNotionalPosition: num.DecimalFromInt64(1000), VegaTime: time.Now().Truncate(time.Microsecond), } err := tw.Upsert(ctx, want) require.NoError(t, err) want.EpochSeq = 2 - want.TimeWeightedNotionalPosition = 2000 + want.TimeWeightedNotionalPosition = num.DecimalFromInt64(2000) want.VegaTime = want.VegaTime.Add(time.Second) err = tw.Upsert(ctx, want) require.NoError(t, err) diff --git a/datanode/sqlsubscribers/game_scores.go b/datanode/sqlsubscribers/game_scores.go new file mode 100644 index 00000000000..2c0a4b69e85 --- /dev/null +++ b/datanode/sqlsubscribers/game_scores.go @@ -0,0 +1,76 @@ +// Copyright (C) 2023 Gobalsky Labs Limited +// +// 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 sqlsubscribers + +import ( + "context" + + "code.vegaprotocol.io/vega/core/events" + "code.vegaprotocol.io/vega/datanode/entities" + eventspb "code.vegaprotocol.io/vega/protos/vega/events/v1" + + "github.com/pkg/errors" +) + +type GameScoreEvent interface { + events.Event + GameScoreEvent() eventspb.GameScores +} + +type GameScoreStore interface { + AddTeamScore(context.Context, entities.GameTeamScore) error + AddPartyScore(context.Context, entities.GamePartyScore) error +} + +type GameScore struct { + subscriber + store GameScoreStore +} + +func NewGameScore(store GameScoreStore) *GameScore { + t := &GameScore{ + store: store, + } + return t +} + +func (gs *GameScore) Types() []events.Type { + return []events.Type{events.GameScoresEvent} +} + +func (gs *GameScore) Push(ctx context.Context, evt events.Event) error { + return gs.consume(ctx, evt.(GameScoreEvent)) +} + +func (gs *GameScore) consume(ctx context.Context, event GameScoreEvent) error { + gameScoresEvents := event.GameScoreEvent() + teamScores, partyScores, err := entities.GameScoresFromProto(&gameScoresEvents, entities.TxHash(event.TxHash()), gs.vegaTime, event.Sequence()) + if err != nil { + return errors.Wrap(err, "unable to parse game scores") + } + + for _, ts := range teamScores { + if err := gs.store.AddTeamScore(ctx, ts); err != nil { + return errors.Wrap(err, "error adding team score") + } + } + for _, ps := range partyScores { + if err := gs.store.AddPartyScore(ctx, ps); err != nil { + return errors.Wrap(err, "error adding party score") + } + } + return nil +} diff --git a/datanode/sqlsubscribers/game_scores_test.go b/datanode/sqlsubscribers/game_scores_test.go new file mode 100644 index 00000000000..8176e8969d7 --- /dev/null +++ b/datanode/sqlsubscribers/game_scores_test.go @@ -0,0 +1,51 @@ +// Copyright (C) 2023 Gobalsky Labs Limited +// +// 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 sqlsubscribers_test + +import ( + "context" + "testing" + "time" + + "code.vegaprotocol.io/vega/core/events" + "code.vegaprotocol.io/vega/core/types" + "code.vegaprotocol.io/vega/datanode/sqlsubscribers" + "code.vegaprotocol.io/vega/datanode/sqlsubscribers/mocks" + "code.vegaprotocol.io/vega/libs/num" + + "github.com/golang/mock/gomock" +) + +func TestGameScore_Push(t *testing.T) { + ctrl := gomock.NewController(t) + + store := mocks.NewMockGameScoreStore(ctrl) + + store.EXPECT().AddPartyScore(gomock.Any(), gomock.Any()).Times(2) + store.EXPECT().AddTeamScore(gomock.Any(), gomock.Any()).Times(2) + subscriber := sqlsubscribers.NewGameScore(store) + subscriber.Flush(context.Background()) + subscriber.Push(context.Background(), events.NewTeamGameScoresEvent( + context.Background(), + 1, + "game1", + time.Now(), + []*types.PartyContributionScore{{Party: "team1", Score: num.DecimalOne()}, {Party: "team2", Score: num.DecimalOne()}}, + map[string][]*types.PartyContributionScore{ + "team1": {{Party: "party1", Score: num.DecimalOne(), StakingBalance: num.UintZero(), OpenVolume: num.UintZero(), TotalFeesPaid: num.UintZero()}}, + "team2": {{Party: "party2", Score: num.DecimalOne(), StakingBalance: num.UintZero(), OpenVolume: num.UintZero(), TotalFeesPaid: num.UintZero()}}, + })) +} diff --git a/datanode/sqlsubscribers/mocks/mocks.go b/datanode/sqlsubscribers/mocks/mocks.go index c4d1da44dfe..0e39e7ccef9 100644 --- a/datanode/sqlsubscribers/mocks/mocks.go +++ b/datanode/sqlsubscribers/mocks/mocks.go @@ -1,5 +1,5 @@ // Code generated by MockGen. DO NOT EDIT. -// Source: code.vegaprotocol.io/vega/datanode/sqlsubscribers (interfaces: RiskFactorStore,TransferStore,WithdrawalStore,LiquidityProvisionStore,KeyRotationStore,OracleSpecStore,DepositStore,StakeLinkingStore,MarketDataStore,PositionStore,OracleDataStore,MarginLevelsStore,NotaryStore,NodeStore,MarketsStore,MarketSvc) +// Source: code.vegaprotocol.io/vega/datanode/sqlsubscribers (interfaces: RiskFactorStore,TransferStore,WithdrawalStore,LiquidityProvisionStore,KeyRotationStore,OracleSpecStore,DepositStore,StakeLinkingStore,MarketDataStore,PositionStore,OracleDataStore,MarginLevelsStore,NotaryStore,NodeStore,MarketsStore,MarketSvc,GameScoreStore) // Package mocks is a generated GoMock package. package mocks @@ -819,3 +819,54 @@ func (mr *MockMarketSvcMockRecorder) IsSpotMarket(arg0, arg1 interface{}) *gomoc mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IsSpotMarket", reflect.TypeOf((*MockMarketSvc)(nil).IsSpotMarket), arg0, arg1) } + +// MockGameScoreStore is a mock of GameScoreStore interface. +type MockGameScoreStore struct { + ctrl *gomock.Controller + recorder *MockGameScoreStoreMockRecorder +} + +// MockGameScoreStoreMockRecorder is the mock recorder for MockGameScoreStore. +type MockGameScoreStoreMockRecorder struct { + mock *MockGameScoreStore +} + +// NewMockGameScoreStore creates a new mock instance. +func NewMockGameScoreStore(ctrl *gomock.Controller) *MockGameScoreStore { + mock := &MockGameScoreStore{ctrl: ctrl} + mock.recorder = &MockGameScoreStoreMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockGameScoreStore) EXPECT() *MockGameScoreStoreMockRecorder { + return m.recorder +} + +// AddPartyScore mocks base method. +func (m *MockGameScoreStore) AddPartyScore(arg0 context.Context, arg1 entities.GamePartyScore) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "AddPartyScore", arg0, arg1) + ret0, _ := ret[0].(error) + return ret0 +} + +// AddPartyScore indicates an expected call of AddPartyScore. +func (mr *MockGameScoreStoreMockRecorder) AddPartyScore(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddPartyScore", reflect.TypeOf((*MockGameScoreStore)(nil).AddPartyScore), arg0, arg1) +} + +// AddTeamScore mocks base method. +func (m *MockGameScoreStore) AddTeamScore(arg0 context.Context, arg1 entities.GameTeamScore) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "AddTeamScore", arg0, arg1) + ret0, _ := ret[0].(error) + return ret0 +} + +// AddTeamScore indicates an expected call of AddTeamScore. +func (mr *MockGameScoreStoreMockRecorder) AddTeamScore(arg0, arg1 interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddTeamScore", reflect.TypeOf((*MockGameScoreStore)(nil).AddTeamScore), arg0, arg1) +} diff --git a/datanode/sqlsubscribers/subscriber.go b/datanode/sqlsubscribers/subscriber.go index a3c2dba1874..20f92cf6e35 100644 --- a/datanode/sqlsubscribers/subscriber.go +++ b/datanode/sqlsubscribers/subscriber.go @@ -20,7 +20,7 @@ import ( "time" ) -//go:generate go run github.com/golang/mock/mockgen -destination mocks/mocks.go -package mocks code.vegaprotocol.io/vega/datanode/sqlsubscribers RiskFactorStore,TransferStore,WithdrawalStore,LiquidityProvisionStore,KeyRotationStore,OracleSpecStore,DepositStore,StakeLinkingStore,MarketDataStore,PositionStore,OracleDataStore,MarginLevelsStore,NotaryStore,NodeStore,MarketsStore,MarketSvc +//go:generate go run github.com/golang/mock/mockgen -destination mocks/mocks.go -package mocks code.vegaprotocol.io/vega/datanode/sqlsubscribers RiskFactorStore,TransferStore,WithdrawalStore,LiquidityProvisionStore,KeyRotationStore,OracleSpecStore,DepositStore,StakeLinkingStore,MarketDataStore,PositionStore,OracleDataStore,MarginLevelsStore,NotaryStore,NodeStore,MarketsStore,MarketSvc,GameScoreStore type subscriber struct { vegaTime time.Time diff --git a/mocks/mocks.go b/mocks/mocks.go new file mode 100644 index 00000000000..dd7f7335032 --- /dev/null +++ b/mocks/mocks.go @@ -0,0 +1,2721 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: code.vegaprotocol.io/vega/datanode/gateway/graphql (interfaces: CoreProxyServiceClient,TradingDataServiceClientV2) + +// Package mocks is a generated GoMock package. +package mocks + +import ( + context "context" + reflect "reflect" + + v2 "code.vegaprotocol.io/vega/protos/data-node/api/v2" + v1 "code.vegaprotocol.io/vega/protos/vega/api/v1" + gomock "github.com/golang/mock/gomock" + grpc "google.golang.org/grpc" +) + +// MockCoreProxyServiceClient is a mock of CoreProxyServiceClient interface. +type MockCoreProxyServiceClient struct { + ctrl *gomock.Controller + recorder *MockCoreProxyServiceClientMockRecorder +} + +// MockCoreProxyServiceClientMockRecorder is the mock recorder for MockCoreProxyServiceClient. +type MockCoreProxyServiceClientMockRecorder struct { + mock *MockCoreProxyServiceClient +} + +// NewMockCoreProxyServiceClient creates a new mock instance. +func NewMockCoreProxyServiceClient(ctrl *gomock.Controller) *MockCoreProxyServiceClient { + mock := &MockCoreProxyServiceClient{ctrl: ctrl} + mock.recorder = &MockCoreProxyServiceClientMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockCoreProxyServiceClient) EXPECT() *MockCoreProxyServiceClientMockRecorder { + return m.recorder +} + +// CheckRawTransaction mocks base method. +func (m *MockCoreProxyServiceClient) CheckRawTransaction(arg0 context.Context, arg1 *v1.CheckRawTransactionRequest, arg2 ...grpc.CallOption) (*v1.CheckRawTransactionResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CheckRawTransaction", varargs...) + ret0, _ := ret[0].(*v1.CheckRawTransactionResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// CheckRawTransaction indicates an expected call of CheckRawTransaction. +func (mr *MockCoreProxyServiceClientMockRecorder) CheckRawTransaction(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CheckRawTransaction", reflect.TypeOf((*MockCoreProxyServiceClient)(nil).CheckRawTransaction), varargs...) +} + +// CheckTransaction mocks base method. +func (m *MockCoreProxyServiceClient) CheckTransaction(arg0 context.Context, arg1 *v1.CheckTransactionRequest, arg2 ...grpc.CallOption) (*v1.CheckTransactionResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "CheckTransaction", varargs...) + ret0, _ := ret[0].(*v1.CheckTransactionResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// CheckTransaction indicates an expected call of CheckTransaction. +func (mr *MockCoreProxyServiceClientMockRecorder) CheckTransaction(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CheckTransaction", reflect.TypeOf((*MockCoreProxyServiceClient)(nil).CheckTransaction), varargs...) +} + +// GetSpamStatistics mocks base method. +func (m *MockCoreProxyServiceClient) GetSpamStatistics(arg0 context.Context, arg1 *v1.GetSpamStatisticsRequest, arg2 ...grpc.CallOption) (*v1.GetSpamStatisticsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetSpamStatistics", varargs...) + ret0, _ := ret[0].(*v1.GetSpamStatisticsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetSpamStatistics indicates an expected call of GetSpamStatistics. +func (mr *MockCoreProxyServiceClientMockRecorder) GetSpamStatistics(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSpamStatistics", reflect.TypeOf((*MockCoreProxyServiceClient)(nil).GetSpamStatistics), varargs...) +} + +// GetVegaTime mocks base method. +func (m *MockCoreProxyServiceClient) GetVegaTime(arg0 context.Context, arg1 *v1.GetVegaTimeRequest, arg2 ...grpc.CallOption) (*v1.GetVegaTimeResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetVegaTime", varargs...) + ret0, _ := ret[0].(*v1.GetVegaTimeResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetVegaTime indicates an expected call of GetVegaTime. +func (mr *MockCoreProxyServiceClientMockRecorder) GetVegaTime(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetVegaTime", reflect.TypeOf((*MockCoreProxyServiceClient)(nil).GetVegaTime), varargs...) +} + +// LastBlockHeight mocks base method. +func (m *MockCoreProxyServiceClient) LastBlockHeight(arg0 context.Context, arg1 *v1.LastBlockHeightRequest, arg2 ...grpc.CallOption) (*v1.LastBlockHeightResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "LastBlockHeight", varargs...) + ret0, _ := ret[0].(*v1.LastBlockHeightResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// LastBlockHeight indicates an expected call of LastBlockHeight. +func (mr *MockCoreProxyServiceClientMockRecorder) LastBlockHeight(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "LastBlockHeight", reflect.TypeOf((*MockCoreProxyServiceClient)(nil).LastBlockHeight), varargs...) +} + +// ObserveEventBus mocks base method. +func (m *MockCoreProxyServiceClient) ObserveEventBus(arg0 context.Context, arg1 ...grpc.CallOption) (v1.CoreService_ObserveEventBusClient, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0} + for _, a := range arg1 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ObserveEventBus", varargs...) + ret0, _ := ret[0].(v1.CoreService_ObserveEventBusClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ObserveEventBus indicates an expected call of ObserveEventBus. +func (mr *MockCoreProxyServiceClientMockRecorder) ObserveEventBus(arg0 interface{}, arg1 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0}, arg1...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ObserveEventBus", reflect.TypeOf((*MockCoreProxyServiceClient)(nil).ObserveEventBus), varargs...) +} + +// PropagateChainEvent mocks base method. +func (m *MockCoreProxyServiceClient) PropagateChainEvent(arg0 context.Context, arg1 *v1.PropagateChainEventRequest, arg2 ...grpc.CallOption) (*v1.PropagateChainEventResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "PropagateChainEvent", varargs...) + ret0, _ := ret[0].(*v1.PropagateChainEventResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// PropagateChainEvent indicates an expected call of PropagateChainEvent. +func (mr *MockCoreProxyServiceClientMockRecorder) PropagateChainEvent(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PropagateChainEvent", reflect.TypeOf((*MockCoreProxyServiceClient)(nil).PropagateChainEvent), varargs...) +} + +// Statistics mocks base method. +func (m *MockCoreProxyServiceClient) Statistics(arg0 context.Context, arg1 *v1.StatisticsRequest, arg2 ...grpc.CallOption) (*v1.StatisticsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "Statistics", varargs...) + ret0, _ := ret[0].(*v1.StatisticsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Statistics indicates an expected call of Statistics. +func (mr *MockCoreProxyServiceClientMockRecorder) Statistics(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Statistics", reflect.TypeOf((*MockCoreProxyServiceClient)(nil).Statistics), varargs...) +} + +// SubmitRawTransaction mocks base method. +func (m *MockCoreProxyServiceClient) SubmitRawTransaction(arg0 context.Context, arg1 *v1.SubmitRawTransactionRequest, arg2 ...grpc.CallOption) (*v1.SubmitRawTransactionResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "SubmitRawTransaction", varargs...) + ret0, _ := ret[0].(*v1.SubmitRawTransactionResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// SubmitRawTransaction indicates an expected call of SubmitRawTransaction. +func (mr *MockCoreProxyServiceClientMockRecorder) SubmitRawTransaction(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SubmitRawTransaction", reflect.TypeOf((*MockCoreProxyServiceClient)(nil).SubmitRawTransaction), varargs...) +} + +// SubmitTransaction mocks base method. +func (m *MockCoreProxyServiceClient) SubmitTransaction(arg0 context.Context, arg1 *v1.SubmitTransactionRequest, arg2 ...grpc.CallOption) (*v1.SubmitTransactionResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "SubmitTransaction", varargs...) + ret0, _ := ret[0].(*v1.SubmitTransactionResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// SubmitTransaction indicates an expected call of SubmitTransaction. +func (mr *MockCoreProxyServiceClientMockRecorder) SubmitTransaction(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SubmitTransaction", reflect.TypeOf((*MockCoreProxyServiceClient)(nil).SubmitTransaction), varargs...) +} + +// MockTradingDataServiceClientV2 is a mock of TradingDataServiceClientV2 interface. +type MockTradingDataServiceClientV2 struct { + ctrl *gomock.Controller + recorder *MockTradingDataServiceClientV2MockRecorder +} + +// MockTradingDataServiceClientV2MockRecorder is the mock recorder for MockTradingDataServiceClientV2. +type MockTradingDataServiceClientV2MockRecorder struct { + mock *MockTradingDataServiceClientV2 +} + +// NewMockTradingDataServiceClientV2 creates a new mock instance. +func NewMockTradingDataServiceClientV2(ctrl *gomock.Controller) *MockTradingDataServiceClientV2 { + mock := &MockTradingDataServiceClientV2{ctrl: ctrl} + mock.recorder = &MockTradingDataServiceClientV2MockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockTradingDataServiceClientV2) EXPECT() *MockTradingDataServiceClientV2MockRecorder { + return m.recorder +} + +// EstimateFee mocks base method. +func (m *MockTradingDataServiceClientV2) EstimateFee(arg0 context.Context, arg1 *v2.EstimateFeeRequest, arg2 ...grpc.CallOption) (*v2.EstimateFeeResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "EstimateFee", varargs...) + ret0, _ := ret[0].(*v2.EstimateFeeResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// EstimateFee indicates an expected call of EstimateFee. +func (mr *MockTradingDataServiceClientV2MockRecorder) EstimateFee(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "EstimateFee", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).EstimateFee), varargs...) +} + +// EstimateMargin mocks base method. +func (m *MockTradingDataServiceClientV2) EstimateMargin(arg0 context.Context, arg1 *v2.EstimateMarginRequest, arg2 ...grpc.CallOption) (*v2.EstimateMarginResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "EstimateMargin", varargs...) + ret0, _ := ret[0].(*v2.EstimateMarginResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// EstimateMargin indicates an expected call of EstimateMargin. +func (mr *MockTradingDataServiceClientV2MockRecorder) EstimateMargin(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "EstimateMargin", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).EstimateMargin), varargs...) +} + +// EstimatePosition mocks base method. +func (m *MockTradingDataServiceClientV2) EstimatePosition(arg0 context.Context, arg1 *v2.EstimatePositionRequest, arg2 ...grpc.CallOption) (*v2.EstimatePositionResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "EstimatePosition", varargs...) + ret0, _ := ret[0].(*v2.EstimatePositionResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// EstimatePosition indicates an expected call of EstimatePosition. +func (mr *MockTradingDataServiceClientV2MockRecorder) EstimatePosition(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "EstimatePosition", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).EstimatePosition), varargs...) +} + +// EstimateTransferFee mocks base method. +func (m *MockTradingDataServiceClientV2) EstimateTransferFee(arg0 context.Context, arg1 *v2.EstimateTransferFeeRequest, arg2 ...grpc.CallOption) (*v2.EstimateTransferFeeResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "EstimateTransferFee", varargs...) + ret0, _ := ret[0].(*v2.EstimateTransferFeeResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// EstimateTransferFee indicates an expected call of EstimateTransferFee. +func (mr *MockTradingDataServiceClientV2MockRecorder) EstimateTransferFee(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "EstimateTransferFee", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).EstimateTransferFee), varargs...) +} + +// ExportLedgerEntries mocks base method. +func (m *MockTradingDataServiceClientV2) ExportLedgerEntries(arg0 context.Context, arg1 *v2.ExportLedgerEntriesRequest, arg2 ...grpc.CallOption) (v2.TradingDataService_ExportLedgerEntriesClient, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ExportLedgerEntries", varargs...) + ret0, _ := ret[0].(v2.TradingDataService_ExportLedgerEntriesClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ExportLedgerEntries indicates an expected call of ExportLedgerEntries. +func (mr *MockTradingDataServiceClientV2MockRecorder) ExportLedgerEntries(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ExportLedgerEntries", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ExportLedgerEntries), varargs...) +} + +// ExportNetworkHistory mocks base method. +func (m *MockTradingDataServiceClientV2) ExportNetworkHistory(arg0 context.Context, arg1 *v2.ExportNetworkHistoryRequest, arg2 ...grpc.CallOption) (v2.TradingDataService_ExportNetworkHistoryClient, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ExportNetworkHistory", varargs...) + ret0, _ := ret[0].(v2.TradingDataService_ExportNetworkHistoryClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ExportNetworkHistory indicates an expected call of ExportNetworkHistory. +func (mr *MockTradingDataServiceClientV2MockRecorder) ExportNetworkHistory(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ExportNetworkHistory", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ExportNetworkHistory), varargs...) +} + +// GetActiveNetworkHistoryPeerAddresses mocks base method. +func (m *MockTradingDataServiceClientV2) GetActiveNetworkHistoryPeerAddresses(arg0 context.Context, arg1 *v2.GetActiveNetworkHistoryPeerAddressesRequest, arg2 ...grpc.CallOption) (*v2.GetActiveNetworkHistoryPeerAddressesResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetActiveNetworkHistoryPeerAddresses", varargs...) + ret0, _ := ret[0].(*v2.GetActiveNetworkHistoryPeerAddressesResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetActiveNetworkHistoryPeerAddresses indicates an expected call of GetActiveNetworkHistoryPeerAddresses. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetActiveNetworkHistoryPeerAddresses(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetActiveNetworkHistoryPeerAddresses", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetActiveNetworkHistoryPeerAddresses), varargs...) +} + +// GetAsset mocks base method. +func (m *MockTradingDataServiceClientV2) GetAsset(arg0 context.Context, arg1 *v2.GetAssetRequest, arg2 ...grpc.CallOption) (*v2.GetAssetResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetAsset", varargs...) + ret0, _ := ret[0].(*v2.GetAssetResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetAsset indicates an expected call of GetAsset. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetAsset(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetAsset", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetAsset), varargs...) +} + +// GetCurrentReferralProgram mocks base method. +func (m *MockTradingDataServiceClientV2) GetCurrentReferralProgram(arg0 context.Context, arg1 *v2.GetCurrentReferralProgramRequest, arg2 ...grpc.CallOption) (*v2.GetCurrentReferralProgramResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetCurrentReferralProgram", varargs...) + ret0, _ := ret[0].(*v2.GetCurrentReferralProgramResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetCurrentReferralProgram indicates an expected call of GetCurrentReferralProgram. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetCurrentReferralProgram(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetCurrentReferralProgram", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetCurrentReferralProgram), varargs...) +} + +// GetCurrentVolumeDiscountProgram mocks base method. +func (m *MockTradingDataServiceClientV2) GetCurrentVolumeDiscountProgram(arg0 context.Context, arg1 *v2.GetCurrentVolumeDiscountProgramRequest, arg2 ...grpc.CallOption) (*v2.GetCurrentVolumeDiscountProgramResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetCurrentVolumeDiscountProgram", varargs...) + ret0, _ := ret[0].(*v2.GetCurrentVolumeDiscountProgramResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetCurrentVolumeDiscountProgram indicates an expected call of GetCurrentVolumeDiscountProgram. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetCurrentVolumeDiscountProgram(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetCurrentVolumeDiscountProgram", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetCurrentVolumeDiscountProgram), varargs...) +} + +// GetDeposit mocks base method. +func (m *MockTradingDataServiceClientV2) GetDeposit(arg0 context.Context, arg1 *v2.GetDepositRequest, arg2 ...grpc.CallOption) (*v2.GetDepositResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetDeposit", varargs...) + ret0, _ := ret[0].(*v2.GetDepositResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetDeposit indicates an expected call of GetDeposit. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetDeposit(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetDeposit", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetDeposit), varargs...) +} + +// GetERC20ListAssetBundle mocks base method. +func (m *MockTradingDataServiceClientV2) GetERC20ListAssetBundle(arg0 context.Context, arg1 *v2.GetERC20ListAssetBundleRequest, arg2 ...grpc.CallOption) (*v2.GetERC20ListAssetBundleResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetERC20ListAssetBundle", varargs...) + ret0, _ := ret[0].(*v2.GetERC20ListAssetBundleResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetERC20ListAssetBundle indicates an expected call of GetERC20ListAssetBundle. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetERC20ListAssetBundle(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetERC20ListAssetBundle", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetERC20ListAssetBundle), varargs...) +} + +// GetERC20SetAssetLimitsBundle mocks base method. +func (m *MockTradingDataServiceClientV2) GetERC20SetAssetLimitsBundle(arg0 context.Context, arg1 *v2.GetERC20SetAssetLimitsBundleRequest, arg2 ...grpc.CallOption) (*v2.GetERC20SetAssetLimitsBundleResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetERC20SetAssetLimitsBundle", varargs...) + ret0, _ := ret[0].(*v2.GetERC20SetAssetLimitsBundleResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetERC20SetAssetLimitsBundle indicates an expected call of GetERC20SetAssetLimitsBundle. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetERC20SetAssetLimitsBundle(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetERC20SetAssetLimitsBundle", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetERC20SetAssetLimitsBundle), varargs...) +} + +// GetERC20WithdrawalApproval mocks base method. +func (m *MockTradingDataServiceClientV2) GetERC20WithdrawalApproval(arg0 context.Context, arg1 *v2.GetERC20WithdrawalApprovalRequest, arg2 ...grpc.CallOption) (*v2.GetERC20WithdrawalApprovalResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetERC20WithdrawalApproval", varargs...) + ret0, _ := ret[0].(*v2.GetERC20WithdrawalApprovalResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetERC20WithdrawalApproval indicates an expected call of GetERC20WithdrawalApproval. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetERC20WithdrawalApproval(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetERC20WithdrawalApproval", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetERC20WithdrawalApproval), varargs...) +} + +// GetEpoch mocks base method. +func (m *MockTradingDataServiceClientV2) GetEpoch(arg0 context.Context, arg1 *v2.GetEpochRequest, arg2 ...grpc.CallOption) (*v2.GetEpochResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetEpoch", varargs...) + ret0, _ := ret[0].(*v2.GetEpochResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetEpoch indicates an expected call of GetEpoch. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetEpoch(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetEpoch", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetEpoch), varargs...) +} + +// GetFeesStats mocks base method. +func (m *MockTradingDataServiceClientV2) GetFeesStats(arg0 context.Context, arg1 *v2.GetFeesStatsRequest, arg2 ...grpc.CallOption) (*v2.GetFeesStatsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetFeesStats", varargs...) + ret0, _ := ret[0].(*v2.GetFeesStatsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetFeesStats indicates an expected call of GetFeesStats. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetFeesStats(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetFeesStats", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetFeesStats), varargs...) +} + +// GetFeesStatsForParty mocks base method. +func (m *MockTradingDataServiceClientV2) GetFeesStatsForParty(arg0 context.Context, arg1 *v2.GetFeesStatsForPartyRequest, arg2 ...grpc.CallOption) (*v2.GetFeesStatsForPartyResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetFeesStatsForParty", varargs...) + ret0, _ := ret[0].(*v2.GetFeesStatsForPartyResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetFeesStatsForParty indicates an expected call of GetFeesStatsForParty. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetFeesStatsForParty(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetFeesStatsForParty", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetFeesStatsForParty), varargs...) +} + +// GetGovernanceData mocks base method. +func (m *MockTradingDataServiceClientV2) GetGovernanceData(arg0 context.Context, arg1 *v2.GetGovernanceDataRequest, arg2 ...grpc.CallOption) (*v2.GetGovernanceDataResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetGovernanceData", varargs...) + ret0, _ := ret[0].(*v2.GetGovernanceDataResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetGovernanceData indicates an expected call of GetGovernanceData. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetGovernanceData(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetGovernanceData", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetGovernanceData), varargs...) +} + +// GetLastTrade mocks base method. +func (m *MockTradingDataServiceClientV2) GetLastTrade(arg0 context.Context, arg1 *v2.GetLastTradeRequest, arg2 ...grpc.CallOption) (*v2.GetLastTradeResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetLastTrade", varargs...) + ret0, _ := ret[0].(*v2.GetLastTradeResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetLastTrade indicates an expected call of GetLastTrade. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetLastTrade(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetLastTrade", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetLastTrade), varargs...) +} + +// GetLatestMarketData mocks base method. +func (m *MockTradingDataServiceClientV2) GetLatestMarketData(arg0 context.Context, arg1 *v2.GetLatestMarketDataRequest, arg2 ...grpc.CallOption) (*v2.GetLatestMarketDataResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetLatestMarketData", varargs...) + ret0, _ := ret[0].(*v2.GetLatestMarketDataResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetLatestMarketData indicates an expected call of GetLatestMarketData. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetLatestMarketData(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetLatestMarketData", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetLatestMarketData), varargs...) +} + +// GetLatestMarketDepth mocks base method. +func (m *MockTradingDataServiceClientV2) GetLatestMarketDepth(arg0 context.Context, arg1 *v2.GetLatestMarketDepthRequest, arg2 ...grpc.CallOption) (*v2.GetLatestMarketDepthResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetLatestMarketDepth", varargs...) + ret0, _ := ret[0].(*v2.GetLatestMarketDepthResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetLatestMarketDepth indicates an expected call of GetLatestMarketDepth. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetLatestMarketDepth(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetLatestMarketDepth", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetLatestMarketDepth), varargs...) +} + +// GetMarket mocks base method. +func (m *MockTradingDataServiceClientV2) GetMarket(arg0 context.Context, arg1 *v2.GetMarketRequest, arg2 ...grpc.CallOption) (*v2.GetMarketResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetMarket", varargs...) + ret0, _ := ret[0].(*v2.GetMarketResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetMarket indicates an expected call of GetMarket. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetMarket(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetMarket", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetMarket), varargs...) +} + +// GetMarketDataHistoryByID mocks base method. +func (m *MockTradingDataServiceClientV2) GetMarketDataHistoryByID(arg0 context.Context, arg1 *v2.GetMarketDataHistoryByIDRequest, arg2 ...grpc.CallOption) (*v2.GetMarketDataHistoryByIDResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetMarketDataHistoryByID", varargs...) + ret0, _ := ret[0].(*v2.GetMarketDataHistoryByIDResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetMarketDataHistoryByID indicates an expected call of GetMarketDataHistoryByID. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetMarketDataHistoryByID(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetMarketDataHistoryByID", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetMarketDataHistoryByID), varargs...) +} + +// GetMostRecentNetworkHistorySegment mocks base method. +func (m *MockTradingDataServiceClientV2) GetMostRecentNetworkHistorySegment(arg0 context.Context, arg1 *v2.GetMostRecentNetworkHistorySegmentRequest, arg2 ...grpc.CallOption) (*v2.GetMostRecentNetworkHistorySegmentResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetMostRecentNetworkHistorySegment", varargs...) + ret0, _ := ret[0].(*v2.GetMostRecentNetworkHistorySegmentResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetMostRecentNetworkHistorySegment indicates an expected call of GetMostRecentNetworkHistorySegment. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetMostRecentNetworkHistorySegment(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetMostRecentNetworkHistorySegment", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetMostRecentNetworkHistorySegment), varargs...) +} + +// GetNetworkData mocks base method. +func (m *MockTradingDataServiceClientV2) GetNetworkData(arg0 context.Context, arg1 *v2.GetNetworkDataRequest, arg2 ...grpc.CallOption) (*v2.GetNetworkDataResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetNetworkData", varargs...) + ret0, _ := ret[0].(*v2.GetNetworkDataResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetNetworkData indicates an expected call of GetNetworkData. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetNetworkData(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetNetworkData", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetNetworkData), varargs...) +} + +// GetNetworkHistoryBootstrapPeers mocks base method. +func (m *MockTradingDataServiceClientV2) GetNetworkHistoryBootstrapPeers(arg0 context.Context, arg1 *v2.GetNetworkHistoryBootstrapPeersRequest, arg2 ...grpc.CallOption) (*v2.GetNetworkHistoryBootstrapPeersResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetNetworkHistoryBootstrapPeers", varargs...) + ret0, _ := ret[0].(*v2.GetNetworkHistoryBootstrapPeersResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetNetworkHistoryBootstrapPeers indicates an expected call of GetNetworkHistoryBootstrapPeers. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetNetworkHistoryBootstrapPeers(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetNetworkHistoryBootstrapPeers", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetNetworkHistoryBootstrapPeers), varargs...) +} + +// GetNetworkHistoryStatus mocks base method. +func (m *MockTradingDataServiceClientV2) GetNetworkHistoryStatus(arg0 context.Context, arg1 *v2.GetNetworkHistoryStatusRequest, arg2 ...grpc.CallOption) (*v2.GetNetworkHistoryStatusResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetNetworkHistoryStatus", varargs...) + ret0, _ := ret[0].(*v2.GetNetworkHistoryStatusResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetNetworkHistoryStatus indicates an expected call of GetNetworkHistoryStatus. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetNetworkHistoryStatus(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetNetworkHistoryStatus", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetNetworkHistoryStatus), varargs...) +} + +// GetNetworkLimits mocks base method. +func (m *MockTradingDataServiceClientV2) GetNetworkLimits(arg0 context.Context, arg1 *v2.GetNetworkLimitsRequest, arg2 ...grpc.CallOption) (*v2.GetNetworkLimitsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetNetworkLimits", varargs...) + ret0, _ := ret[0].(*v2.GetNetworkLimitsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetNetworkLimits indicates an expected call of GetNetworkLimits. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetNetworkLimits(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetNetworkLimits", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetNetworkLimits), varargs...) +} + +// GetNetworkParameter mocks base method. +func (m *MockTradingDataServiceClientV2) GetNetworkParameter(arg0 context.Context, arg1 *v2.GetNetworkParameterRequest, arg2 ...grpc.CallOption) (*v2.GetNetworkParameterResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetNetworkParameter", varargs...) + ret0, _ := ret[0].(*v2.GetNetworkParameterResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetNetworkParameter indicates an expected call of GetNetworkParameter. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetNetworkParameter(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetNetworkParameter", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetNetworkParameter), varargs...) +} + +// GetNode mocks base method. +func (m *MockTradingDataServiceClientV2) GetNode(arg0 context.Context, arg1 *v2.GetNodeRequest, arg2 ...grpc.CallOption) (*v2.GetNodeResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetNode", varargs...) + ret0, _ := ret[0].(*v2.GetNodeResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetNode indicates an expected call of GetNode. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetNode(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetNode", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetNode), varargs...) +} + +// GetOracleSpec mocks base method. +func (m *MockTradingDataServiceClientV2) GetOracleSpec(arg0 context.Context, arg1 *v2.GetOracleSpecRequest, arg2 ...grpc.CallOption) (*v2.GetOracleSpecResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetOracleSpec", varargs...) + ret0, _ := ret[0].(*v2.GetOracleSpecResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetOracleSpec indicates an expected call of GetOracleSpec. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetOracleSpec(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetOracleSpec", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetOracleSpec), varargs...) +} + +// GetOrder mocks base method. +func (m *MockTradingDataServiceClientV2) GetOrder(arg0 context.Context, arg1 *v2.GetOrderRequest, arg2 ...grpc.CallOption) (*v2.GetOrderResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetOrder", varargs...) + ret0, _ := ret[0].(*v2.GetOrderResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetOrder indicates an expected call of GetOrder. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetOrder(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetOrder", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetOrder), varargs...) +} + +// GetParty mocks base method. +func (m *MockTradingDataServiceClientV2) GetParty(arg0 context.Context, arg1 *v2.GetPartyRequest, arg2 ...grpc.CallOption) (*v2.GetPartyResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetParty", varargs...) + ret0, _ := ret[0].(*v2.GetPartyResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetParty indicates an expected call of GetParty. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetParty(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetParty", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetParty), varargs...) +} + +// GetPartyActivityStreak mocks base method. +func (m *MockTradingDataServiceClientV2) GetPartyActivityStreak(arg0 context.Context, arg1 *v2.GetPartyActivityStreakRequest, arg2 ...grpc.CallOption) (*v2.GetPartyActivityStreakResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetPartyActivityStreak", varargs...) + ret0, _ := ret[0].(*v2.GetPartyActivityStreakResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetPartyActivityStreak indicates an expected call of GetPartyActivityStreak. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetPartyActivityStreak(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPartyActivityStreak", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetPartyActivityStreak), varargs...) +} + +// GetPartyVestingStats mocks base method. +func (m *MockTradingDataServiceClientV2) GetPartyVestingStats(arg0 context.Context, arg1 *v2.GetPartyVestingStatsRequest, arg2 ...grpc.CallOption) (*v2.GetPartyVestingStatsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetPartyVestingStats", varargs...) + ret0, _ := ret[0].(*v2.GetPartyVestingStatsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetPartyVestingStats indicates an expected call of GetPartyVestingStats. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetPartyVestingStats(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPartyVestingStats", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetPartyVestingStats), varargs...) +} + +// GetProtocolUpgradeStatus mocks base method. +func (m *MockTradingDataServiceClientV2) GetProtocolUpgradeStatus(arg0 context.Context, arg1 *v2.GetProtocolUpgradeStatusRequest, arg2 ...grpc.CallOption) (*v2.GetProtocolUpgradeStatusResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetProtocolUpgradeStatus", varargs...) + ret0, _ := ret[0].(*v2.GetProtocolUpgradeStatusResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetProtocolUpgradeStatus indicates an expected call of GetProtocolUpgradeStatus. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetProtocolUpgradeStatus(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetProtocolUpgradeStatus", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetProtocolUpgradeStatus), varargs...) +} + +// GetReferralSetStats mocks base method. +func (m *MockTradingDataServiceClientV2) GetReferralSetStats(arg0 context.Context, arg1 *v2.GetReferralSetStatsRequest, arg2 ...grpc.CallOption) (*v2.GetReferralSetStatsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetReferralSetStats", varargs...) + ret0, _ := ret[0].(*v2.GetReferralSetStatsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetReferralSetStats indicates an expected call of GetReferralSetStats. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetReferralSetStats(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetReferralSetStats", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetReferralSetStats), varargs...) +} + +// GetRiskFactors mocks base method. +func (m *MockTradingDataServiceClientV2) GetRiskFactors(arg0 context.Context, arg1 *v2.GetRiskFactorsRequest, arg2 ...grpc.CallOption) (*v2.GetRiskFactorsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetRiskFactors", varargs...) + ret0, _ := ret[0].(*v2.GetRiskFactorsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetRiskFactors indicates an expected call of GetRiskFactors. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetRiskFactors(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetRiskFactors", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetRiskFactors), varargs...) +} + +// GetStake mocks base method. +func (m *MockTradingDataServiceClientV2) GetStake(arg0 context.Context, arg1 *v2.GetStakeRequest, arg2 ...grpc.CallOption) (*v2.GetStakeResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetStake", varargs...) + ret0, _ := ret[0].(*v2.GetStakeResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetStake indicates an expected call of GetStake. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetStake(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetStake", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetStake), varargs...) +} + +// GetStopOrder mocks base method. +func (m *MockTradingDataServiceClientV2) GetStopOrder(arg0 context.Context, arg1 *v2.GetStopOrderRequest, arg2 ...grpc.CallOption) (*v2.GetStopOrderResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetStopOrder", varargs...) + ret0, _ := ret[0].(*v2.GetStopOrderResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetStopOrder indicates an expected call of GetStopOrder. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetStopOrder(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetStopOrder", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetStopOrder), varargs...) +} + +// GetTimeWeightedNotionalPosition mocks base method. +func (m *MockTradingDataServiceClientV2) GetTimeWeightedNotionalPosition(arg0 context.Context, arg1 *v2.GetTimeWeightedNotionalPositionRequest, arg2 ...grpc.CallOption) (*v2.GetTimeWeightedNotionalPositionResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetTimeWeightedNotionalPosition", varargs...) + ret0, _ := ret[0].(*v2.GetTimeWeightedNotionalPositionResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetTimeWeightedNotionalPosition indicates an expected call of GetTimeWeightedNotionalPosition. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetTimeWeightedNotionalPosition(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTimeWeightedNotionalPosition", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetTimeWeightedNotionalPosition), varargs...) +} + +// GetTotalTransferFeeDiscount mocks base method. +func (m *MockTradingDataServiceClientV2) GetTotalTransferFeeDiscount(arg0 context.Context, arg1 *v2.GetTotalTransferFeeDiscountRequest, arg2 ...grpc.CallOption) (*v2.GetTotalTransferFeeDiscountResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetTotalTransferFeeDiscount", varargs...) + ret0, _ := ret[0].(*v2.GetTotalTransferFeeDiscountResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetTotalTransferFeeDiscount indicates an expected call of GetTotalTransferFeeDiscount. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetTotalTransferFeeDiscount(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTotalTransferFeeDiscount", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetTotalTransferFeeDiscount), varargs...) +} + +// GetTransfer mocks base method. +func (m *MockTradingDataServiceClientV2) GetTransfer(arg0 context.Context, arg1 *v2.GetTransferRequest, arg2 ...grpc.CallOption) (*v2.GetTransferResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetTransfer", varargs...) + ret0, _ := ret[0].(*v2.GetTransferResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetTransfer indicates an expected call of GetTransfer. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetTransfer(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTransfer", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetTransfer), varargs...) +} + +// GetVegaTime mocks base method. +func (m *MockTradingDataServiceClientV2) GetVegaTime(arg0 context.Context, arg1 *v2.GetVegaTimeRequest, arg2 ...grpc.CallOption) (*v2.GetVegaTimeResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetVegaTime", varargs...) + ret0, _ := ret[0].(*v2.GetVegaTimeResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetVegaTime indicates an expected call of GetVegaTime. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetVegaTime(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetVegaTime", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetVegaTime), varargs...) +} + +// GetVestingBalancesSummary mocks base method. +func (m *MockTradingDataServiceClientV2) GetVestingBalancesSummary(arg0 context.Context, arg1 *v2.GetVestingBalancesSummaryRequest, arg2 ...grpc.CallOption) (*v2.GetVestingBalancesSummaryResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetVestingBalancesSummary", varargs...) + ret0, _ := ret[0].(*v2.GetVestingBalancesSummaryResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetVestingBalancesSummary indicates an expected call of GetVestingBalancesSummary. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetVestingBalancesSummary(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetVestingBalancesSummary", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetVestingBalancesSummary), varargs...) +} + +// GetVolumeDiscountStats mocks base method. +func (m *MockTradingDataServiceClientV2) GetVolumeDiscountStats(arg0 context.Context, arg1 *v2.GetVolumeDiscountStatsRequest, arg2 ...grpc.CallOption) (*v2.GetVolumeDiscountStatsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetVolumeDiscountStats", varargs...) + ret0, _ := ret[0].(*v2.GetVolumeDiscountStatsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetVolumeDiscountStats indicates an expected call of GetVolumeDiscountStats. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetVolumeDiscountStats(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetVolumeDiscountStats", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetVolumeDiscountStats), varargs...) +} + +// GetWithdrawal mocks base method. +func (m *MockTradingDataServiceClientV2) GetWithdrawal(arg0 context.Context, arg1 *v2.GetWithdrawalRequest, arg2 ...grpc.CallOption) (*v2.GetWithdrawalResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "GetWithdrawal", varargs...) + ret0, _ := ret[0].(*v2.GetWithdrawalResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetWithdrawal indicates an expected call of GetWithdrawal. +func (mr *MockTradingDataServiceClientV2MockRecorder) GetWithdrawal(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetWithdrawal", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).GetWithdrawal), varargs...) +} + +// Info mocks base method. +func (m *MockTradingDataServiceClientV2) Info(arg0 context.Context, arg1 *v2.InfoRequest, arg2 ...grpc.CallOption) (*v2.InfoResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "Info", varargs...) + ret0, _ := ret[0].(*v2.InfoResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Info indicates an expected call of Info. +func (mr *MockTradingDataServiceClientV2MockRecorder) Info(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Info", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).Info), varargs...) +} + +// ListAccounts mocks base method. +func (m *MockTradingDataServiceClientV2) ListAccounts(arg0 context.Context, arg1 *v2.ListAccountsRequest, arg2 ...grpc.CallOption) (*v2.ListAccountsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListAccounts", varargs...) + ret0, _ := ret[0].(*v2.ListAccountsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListAccounts indicates an expected call of ListAccounts. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListAccounts(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListAccounts", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListAccounts), varargs...) +} + +// ListAllLiquidityProvisions mocks base method. +func (m *MockTradingDataServiceClientV2) ListAllLiquidityProvisions(arg0 context.Context, arg1 *v2.ListAllLiquidityProvisionsRequest, arg2 ...grpc.CallOption) (*v2.ListAllLiquidityProvisionsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListAllLiquidityProvisions", varargs...) + ret0, _ := ret[0].(*v2.ListAllLiquidityProvisionsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListAllLiquidityProvisions indicates an expected call of ListAllLiquidityProvisions. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListAllLiquidityProvisions(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListAllLiquidityProvisions", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListAllLiquidityProvisions), varargs...) +} + +// ListAllNetworkHistorySegments mocks base method. +func (m *MockTradingDataServiceClientV2) ListAllNetworkHistorySegments(arg0 context.Context, arg1 *v2.ListAllNetworkHistorySegmentsRequest, arg2 ...grpc.CallOption) (*v2.ListAllNetworkHistorySegmentsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListAllNetworkHistorySegments", varargs...) + ret0, _ := ret[0].(*v2.ListAllNetworkHistorySegmentsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListAllNetworkHistorySegments indicates an expected call of ListAllNetworkHistorySegments. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListAllNetworkHistorySegments(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListAllNetworkHistorySegments", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListAllNetworkHistorySegments), varargs...) +} + +// ListAllPositions mocks base method. +func (m *MockTradingDataServiceClientV2) ListAllPositions(arg0 context.Context, arg1 *v2.ListAllPositionsRequest, arg2 ...grpc.CallOption) (*v2.ListAllPositionsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListAllPositions", varargs...) + ret0, _ := ret[0].(*v2.ListAllPositionsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListAllPositions indicates an expected call of ListAllPositions. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListAllPositions(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListAllPositions", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListAllPositions), varargs...) +} + +// ListAssets mocks base method. +func (m *MockTradingDataServiceClientV2) ListAssets(arg0 context.Context, arg1 *v2.ListAssetsRequest, arg2 ...grpc.CallOption) (*v2.ListAssetsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListAssets", varargs...) + ret0, _ := ret[0].(*v2.ListAssetsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListAssets indicates an expected call of ListAssets. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListAssets(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListAssets", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListAssets), varargs...) +} + +// ListBalanceChanges mocks base method. +func (m *MockTradingDataServiceClientV2) ListBalanceChanges(arg0 context.Context, arg1 *v2.ListBalanceChangesRequest, arg2 ...grpc.CallOption) (*v2.ListBalanceChangesResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListBalanceChanges", varargs...) + ret0, _ := ret[0].(*v2.ListBalanceChangesResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListBalanceChanges indicates an expected call of ListBalanceChanges. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListBalanceChanges(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListBalanceChanges", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListBalanceChanges), varargs...) +} + +// ListCandleData mocks base method. +func (m *MockTradingDataServiceClientV2) ListCandleData(arg0 context.Context, arg1 *v2.ListCandleDataRequest, arg2 ...grpc.CallOption) (*v2.ListCandleDataResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListCandleData", varargs...) + ret0, _ := ret[0].(*v2.ListCandleDataResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListCandleData indicates an expected call of ListCandleData. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListCandleData(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListCandleData", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListCandleData), varargs...) +} + +// ListCandleIntervals mocks base method. +func (m *MockTradingDataServiceClientV2) ListCandleIntervals(arg0 context.Context, arg1 *v2.ListCandleIntervalsRequest, arg2 ...grpc.CallOption) (*v2.ListCandleIntervalsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListCandleIntervals", varargs...) + ret0, _ := ret[0].(*v2.ListCandleIntervalsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListCandleIntervals indicates an expected call of ListCandleIntervals. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListCandleIntervals(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListCandleIntervals", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListCandleIntervals), varargs...) +} + +// ListCheckpoints mocks base method. +func (m *MockTradingDataServiceClientV2) ListCheckpoints(arg0 context.Context, arg1 *v2.ListCheckpointsRequest, arg2 ...grpc.CallOption) (*v2.ListCheckpointsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListCheckpoints", varargs...) + ret0, _ := ret[0].(*v2.ListCheckpointsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListCheckpoints indicates an expected call of ListCheckpoints. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListCheckpoints(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListCheckpoints", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListCheckpoints), varargs...) +} + +// ListCoreSnapshots mocks base method. +func (m *MockTradingDataServiceClientV2) ListCoreSnapshots(arg0 context.Context, arg1 *v2.ListCoreSnapshotsRequest, arg2 ...grpc.CallOption) (*v2.ListCoreSnapshotsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListCoreSnapshots", varargs...) + ret0, _ := ret[0].(*v2.ListCoreSnapshotsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListCoreSnapshots indicates an expected call of ListCoreSnapshots. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListCoreSnapshots(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListCoreSnapshots", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListCoreSnapshots), varargs...) +} + +// ListDelegations mocks base method. +func (m *MockTradingDataServiceClientV2) ListDelegations(arg0 context.Context, arg1 *v2.ListDelegationsRequest, arg2 ...grpc.CallOption) (*v2.ListDelegationsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListDelegations", varargs...) + ret0, _ := ret[0].(*v2.ListDelegationsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListDelegations indicates an expected call of ListDelegations. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListDelegations(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListDelegations", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListDelegations), varargs...) +} + +// ListDeposits mocks base method. +func (m *MockTradingDataServiceClientV2) ListDeposits(arg0 context.Context, arg1 *v2.ListDepositsRequest, arg2 ...grpc.CallOption) (*v2.ListDepositsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListDeposits", varargs...) + ret0, _ := ret[0].(*v2.ListDepositsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListDeposits indicates an expected call of ListDeposits. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListDeposits(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListDeposits", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListDeposits), varargs...) +} + +// ListERC20MultiSigSignerAddedBundles mocks base method. +func (m *MockTradingDataServiceClientV2) ListERC20MultiSigSignerAddedBundles(arg0 context.Context, arg1 *v2.ListERC20MultiSigSignerAddedBundlesRequest, arg2 ...grpc.CallOption) (*v2.ListERC20MultiSigSignerAddedBundlesResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListERC20MultiSigSignerAddedBundles", varargs...) + ret0, _ := ret[0].(*v2.ListERC20MultiSigSignerAddedBundlesResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListERC20MultiSigSignerAddedBundles indicates an expected call of ListERC20MultiSigSignerAddedBundles. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListERC20MultiSigSignerAddedBundles(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListERC20MultiSigSignerAddedBundles", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListERC20MultiSigSignerAddedBundles), varargs...) +} + +// ListERC20MultiSigSignerRemovedBundles mocks base method. +func (m *MockTradingDataServiceClientV2) ListERC20MultiSigSignerRemovedBundles(arg0 context.Context, arg1 *v2.ListERC20MultiSigSignerRemovedBundlesRequest, arg2 ...grpc.CallOption) (*v2.ListERC20MultiSigSignerRemovedBundlesResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListERC20MultiSigSignerRemovedBundles", varargs...) + ret0, _ := ret[0].(*v2.ListERC20MultiSigSignerRemovedBundlesResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListERC20MultiSigSignerRemovedBundles indicates an expected call of ListERC20MultiSigSignerRemovedBundles. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListERC20MultiSigSignerRemovedBundles(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListERC20MultiSigSignerRemovedBundles", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListERC20MultiSigSignerRemovedBundles), varargs...) +} + +// ListEntities mocks base method. +func (m *MockTradingDataServiceClientV2) ListEntities(arg0 context.Context, arg1 *v2.ListEntitiesRequest, arg2 ...grpc.CallOption) (*v2.ListEntitiesResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListEntities", varargs...) + ret0, _ := ret[0].(*v2.ListEntitiesResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListEntities indicates an expected call of ListEntities. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListEntities(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListEntities", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListEntities), varargs...) +} + +// ListEpochRewardSummaries mocks base method. +func (m *MockTradingDataServiceClientV2) ListEpochRewardSummaries(arg0 context.Context, arg1 *v2.ListEpochRewardSummariesRequest, arg2 ...grpc.CallOption) (*v2.ListEpochRewardSummariesResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListEpochRewardSummaries", varargs...) + ret0, _ := ret[0].(*v2.ListEpochRewardSummariesResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListEpochRewardSummaries indicates an expected call of ListEpochRewardSummaries. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListEpochRewardSummaries(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListEpochRewardSummaries", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListEpochRewardSummaries), varargs...) +} + +// ListEthereumKeyRotations mocks base method. +func (m *MockTradingDataServiceClientV2) ListEthereumKeyRotations(arg0 context.Context, arg1 *v2.ListEthereumKeyRotationsRequest, arg2 ...grpc.CallOption) (*v2.ListEthereumKeyRotationsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListEthereumKeyRotations", varargs...) + ret0, _ := ret[0].(*v2.ListEthereumKeyRotationsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListEthereumKeyRotations indicates an expected call of ListEthereumKeyRotations. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListEthereumKeyRotations(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListEthereumKeyRotations", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListEthereumKeyRotations), varargs...) +} + +// ListFundingPayments mocks base method. +func (m *MockTradingDataServiceClientV2) ListFundingPayments(arg0 context.Context, arg1 *v2.ListFundingPaymentsRequest, arg2 ...grpc.CallOption) (*v2.ListFundingPaymentsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListFundingPayments", varargs...) + ret0, _ := ret[0].(*v2.ListFundingPaymentsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListFundingPayments indicates an expected call of ListFundingPayments. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListFundingPayments(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListFundingPayments", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListFundingPayments), varargs...) +} + +// ListFundingPeriodDataPoints mocks base method. +func (m *MockTradingDataServiceClientV2) ListFundingPeriodDataPoints(arg0 context.Context, arg1 *v2.ListFundingPeriodDataPointsRequest, arg2 ...grpc.CallOption) (*v2.ListFundingPeriodDataPointsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListFundingPeriodDataPoints", varargs...) + ret0, _ := ret[0].(*v2.ListFundingPeriodDataPointsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListFundingPeriodDataPoints indicates an expected call of ListFundingPeriodDataPoints. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListFundingPeriodDataPoints(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListFundingPeriodDataPoints", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListFundingPeriodDataPoints), varargs...) +} + +// ListFundingPeriods mocks base method. +func (m *MockTradingDataServiceClientV2) ListFundingPeriods(arg0 context.Context, arg1 *v2.ListFundingPeriodsRequest, arg2 ...grpc.CallOption) (*v2.ListFundingPeriodsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListFundingPeriods", varargs...) + ret0, _ := ret[0].(*v2.ListFundingPeriodsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListFundingPeriods indicates an expected call of ListFundingPeriods. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListFundingPeriods(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListFundingPeriods", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListFundingPeriods), varargs...) +} + +// ListGamePartyScores mocks base method. +func (m *MockTradingDataServiceClientV2) ListGamePartyScores(arg0 context.Context, arg1 *v2.ListGamePartyScoresRequest, arg2 ...grpc.CallOption) (*v2.ListGamePartyScoresResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListGamePartyScores", varargs...) + ret0, _ := ret[0].(*v2.ListGamePartyScoresResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListGamePartyScores indicates an expected call of ListGamePartyScores. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListGamePartyScores(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListGamePartyScores", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListGamePartyScores), varargs...) +} + +// ListGameTeamScores mocks base method. +func (m *MockTradingDataServiceClientV2) ListGameTeamScores(arg0 context.Context, arg1 *v2.ListGameTeamScoresRequest, arg2 ...grpc.CallOption) (*v2.ListGameTeamScoresResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListGameTeamScores", varargs...) + ret0, _ := ret[0].(*v2.ListGameTeamScoresResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListGameTeamScores indicates an expected call of ListGameTeamScores. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListGameTeamScores(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListGameTeamScores", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListGameTeamScores), varargs...) +} + +// ListGames mocks base method. +func (m *MockTradingDataServiceClientV2) ListGames(arg0 context.Context, arg1 *v2.ListGamesRequest, arg2 ...grpc.CallOption) (*v2.ListGamesResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListGames", varargs...) + ret0, _ := ret[0].(*v2.ListGamesResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListGames indicates an expected call of ListGames. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListGames(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListGames", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListGames), varargs...) +} + +// ListGovernanceData mocks base method. +func (m *MockTradingDataServiceClientV2) ListGovernanceData(arg0 context.Context, arg1 *v2.ListGovernanceDataRequest, arg2 ...grpc.CallOption) (*v2.ListGovernanceDataResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListGovernanceData", varargs...) + ret0, _ := ret[0].(*v2.ListGovernanceDataResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListGovernanceData indicates an expected call of ListGovernanceData. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListGovernanceData(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListGovernanceData", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListGovernanceData), varargs...) +} + +// ListKeyRotations mocks base method. +func (m *MockTradingDataServiceClientV2) ListKeyRotations(arg0 context.Context, arg1 *v2.ListKeyRotationsRequest, arg2 ...grpc.CallOption) (*v2.ListKeyRotationsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListKeyRotations", varargs...) + ret0, _ := ret[0].(*v2.ListKeyRotationsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListKeyRotations indicates an expected call of ListKeyRotations. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListKeyRotations(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListKeyRotations", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListKeyRotations), varargs...) +} + +// ListLatestMarketData mocks base method. +func (m *MockTradingDataServiceClientV2) ListLatestMarketData(arg0 context.Context, arg1 *v2.ListLatestMarketDataRequest, arg2 ...grpc.CallOption) (*v2.ListLatestMarketDataResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListLatestMarketData", varargs...) + ret0, _ := ret[0].(*v2.ListLatestMarketDataResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListLatestMarketData indicates an expected call of ListLatestMarketData. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListLatestMarketData(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListLatestMarketData", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListLatestMarketData), varargs...) +} + +// ListLedgerEntries mocks base method. +func (m *MockTradingDataServiceClientV2) ListLedgerEntries(arg0 context.Context, arg1 *v2.ListLedgerEntriesRequest, arg2 ...grpc.CallOption) (*v2.ListLedgerEntriesResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListLedgerEntries", varargs...) + ret0, _ := ret[0].(*v2.ListLedgerEntriesResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListLedgerEntries indicates an expected call of ListLedgerEntries. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListLedgerEntries(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListLedgerEntries", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListLedgerEntries), varargs...) +} + +// ListLiquidityProviders mocks base method. +func (m *MockTradingDataServiceClientV2) ListLiquidityProviders(arg0 context.Context, arg1 *v2.ListLiquidityProvidersRequest, arg2 ...grpc.CallOption) (*v2.ListLiquidityProvidersResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListLiquidityProviders", varargs...) + ret0, _ := ret[0].(*v2.ListLiquidityProvidersResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListLiquidityProviders indicates an expected call of ListLiquidityProviders. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListLiquidityProviders(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListLiquidityProviders", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListLiquidityProviders), varargs...) +} + +// ListLiquidityProvisions mocks base method. +func (m *MockTradingDataServiceClientV2) ListLiquidityProvisions(arg0 context.Context, arg1 *v2.ListLiquidityProvisionsRequest, arg2 ...grpc.CallOption) (*v2.ListLiquidityProvisionsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListLiquidityProvisions", varargs...) + ret0, _ := ret[0].(*v2.ListLiquidityProvisionsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListLiquidityProvisions indicates an expected call of ListLiquidityProvisions. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListLiquidityProvisions(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListLiquidityProvisions", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListLiquidityProvisions), varargs...) +} + +// ListMarginLevels mocks base method. +func (m *MockTradingDataServiceClientV2) ListMarginLevels(arg0 context.Context, arg1 *v2.ListMarginLevelsRequest, arg2 ...grpc.CallOption) (*v2.ListMarginLevelsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListMarginLevels", varargs...) + ret0, _ := ret[0].(*v2.ListMarginLevelsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListMarginLevels indicates an expected call of ListMarginLevels. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListMarginLevels(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListMarginLevels", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListMarginLevels), varargs...) +} + +// ListMarkets mocks base method. +func (m *MockTradingDataServiceClientV2) ListMarkets(arg0 context.Context, arg1 *v2.ListMarketsRequest, arg2 ...grpc.CallOption) (*v2.ListMarketsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListMarkets", varargs...) + ret0, _ := ret[0].(*v2.ListMarketsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListMarkets indicates an expected call of ListMarkets. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListMarkets(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListMarkets", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListMarkets), varargs...) +} + +// ListNetworkParameters mocks base method. +func (m *MockTradingDataServiceClientV2) ListNetworkParameters(arg0 context.Context, arg1 *v2.ListNetworkParametersRequest, arg2 ...grpc.CallOption) (*v2.ListNetworkParametersResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListNetworkParameters", varargs...) + ret0, _ := ret[0].(*v2.ListNetworkParametersResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListNetworkParameters indicates an expected call of ListNetworkParameters. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListNetworkParameters(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListNetworkParameters", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListNetworkParameters), varargs...) +} + +// ListNodeSignatures mocks base method. +func (m *MockTradingDataServiceClientV2) ListNodeSignatures(arg0 context.Context, arg1 *v2.ListNodeSignaturesRequest, arg2 ...grpc.CallOption) (*v2.ListNodeSignaturesResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListNodeSignatures", varargs...) + ret0, _ := ret[0].(*v2.ListNodeSignaturesResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListNodeSignatures indicates an expected call of ListNodeSignatures. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListNodeSignatures(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListNodeSignatures", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListNodeSignatures), varargs...) +} + +// ListNodes mocks base method. +func (m *MockTradingDataServiceClientV2) ListNodes(arg0 context.Context, arg1 *v2.ListNodesRequest, arg2 ...grpc.CallOption) (*v2.ListNodesResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListNodes", varargs...) + ret0, _ := ret[0].(*v2.ListNodesResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListNodes indicates an expected call of ListNodes. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListNodes(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListNodes", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListNodes), varargs...) +} + +// ListOracleData mocks base method. +func (m *MockTradingDataServiceClientV2) ListOracleData(arg0 context.Context, arg1 *v2.ListOracleDataRequest, arg2 ...grpc.CallOption) (*v2.ListOracleDataResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListOracleData", varargs...) + ret0, _ := ret[0].(*v2.ListOracleDataResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListOracleData indicates an expected call of ListOracleData. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListOracleData(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListOracleData", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListOracleData), varargs...) +} + +// ListOracleSpecs mocks base method. +func (m *MockTradingDataServiceClientV2) ListOracleSpecs(arg0 context.Context, arg1 *v2.ListOracleSpecsRequest, arg2 ...grpc.CallOption) (*v2.ListOracleSpecsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListOracleSpecs", varargs...) + ret0, _ := ret[0].(*v2.ListOracleSpecsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListOracleSpecs indicates an expected call of ListOracleSpecs. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListOracleSpecs(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListOracleSpecs", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListOracleSpecs), varargs...) +} + +// ListOrderVersions mocks base method. +func (m *MockTradingDataServiceClientV2) ListOrderVersions(arg0 context.Context, arg1 *v2.ListOrderVersionsRequest, arg2 ...grpc.CallOption) (*v2.ListOrderVersionsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListOrderVersions", varargs...) + ret0, _ := ret[0].(*v2.ListOrderVersionsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListOrderVersions indicates an expected call of ListOrderVersions. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListOrderVersions(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListOrderVersions", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListOrderVersions), varargs...) +} + +// ListOrders mocks base method. +func (m *MockTradingDataServiceClientV2) ListOrders(arg0 context.Context, arg1 *v2.ListOrdersRequest, arg2 ...grpc.CallOption) (*v2.ListOrdersResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListOrders", varargs...) + ret0, _ := ret[0].(*v2.ListOrdersResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListOrders indicates an expected call of ListOrders. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListOrders(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListOrders", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListOrders), varargs...) +} + +// ListPaidLiquidityFees mocks base method. +func (m *MockTradingDataServiceClientV2) ListPaidLiquidityFees(arg0 context.Context, arg1 *v2.ListPaidLiquidityFeesRequest, arg2 ...grpc.CallOption) (*v2.ListPaidLiquidityFeesResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListPaidLiquidityFees", varargs...) + ret0, _ := ret[0].(*v2.ListPaidLiquidityFeesResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListPaidLiquidityFees indicates an expected call of ListPaidLiquidityFees. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListPaidLiquidityFees(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListPaidLiquidityFees", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListPaidLiquidityFees), varargs...) +} + +// ListParties mocks base method. +func (m *MockTradingDataServiceClientV2) ListParties(arg0 context.Context, arg1 *v2.ListPartiesRequest, arg2 ...grpc.CallOption) (*v2.ListPartiesResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListParties", varargs...) + ret0, _ := ret[0].(*v2.ListPartiesResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListParties indicates an expected call of ListParties. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListParties(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListParties", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListParties), varargs...) +} + +// ListPartiesProfiles mocks base method. +func (m *MockTradingDataServiceClientV2) ListPartiesProfiles(arg0 context.Context, arg1 *v2.ListPartiesProfilesRequest, arg2 ...grpc.CallOption) (*v2.ListPartiesProfilesResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListPartiesProfiles", varargs...) + ret0, _ := ret[0].(*v2.ListPartiesProfilesResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListPartiesProfiles indicates an expected call of ListPartiesProfiles. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListPartiesProfiles(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListPartiesProfiles", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListPartiesProfiles), varargs...) +} + +// ListPartyMarginModes mocks base method. +func (m *MockTradingDataServiceClientV2) ListPartyMarginModes(arg0 context.Context, arg1 *v2.ListPartyMarginModesRequest, arg2 ...grpc.CallOption) (*v2.ListPartyMarginModesResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListPartyMarginModes", varargs...) + ret0, _ := ret[0].(*v2.ListPartyMarginModesResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListPartyMarginModes indicates an expected call of ListPartyMarginModes. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListPartyMarginModes(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListPartyMarginModes", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListPartyMarginModes), varargs...) +} + +// ListPositions mocks base method. +func (m *MockTradingDataServiceClientV2) ListPositions(arg0 context.Context, arg1 *v2.ListPositionsRequest, arg2 ...grpc.CallOption) (*v2.ListPositionsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListPositions", varargs...) + ret0, _ := ret[0].(*v2.ListPositionsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListPositions indicates an expected call of ListPositions. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListPositions(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListPositions", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListPositions), varargs...) +} + +// ListProtocolUpgradeProposals mocks base method. +func (m *MockTradingDataServiceClientV2) ListProtocolUpgradeProposals(arg0 context.Context, arg1 *v2.ListProtocolUpgradeProposalsRequest, arg2 ...grpc.CallOption) (*v2.ListProtocolUpgradeProposalsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListProtocolUpgradeProposals", varargs...) + ret0, _ := ret[0].(*v2.ListProtocolUpgradeProposalsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListProtocolUpgradeProposals indicates an expected call of ListProtocolUpgradeProposals. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListProtocolUpgradeProposals(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListProtocolUpgradeProposals", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListProtocolUpgradeProposals), varargs...) +} + +// ListReferralSetReferees mocks base method. +func (m *MockTradingDataServiceClientV2) ListReferralSetReferees(arg0 context.Context, arg1 *v2.ListReferralSetRefereesRequest, arg2 ...grpc.CallOption) (*v2.ListReferralSetRefereesResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListReferralSetReferees", varargs...) + ret0, _ := ret[0].(*v2.ListReferralSetRefereesResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListReferralSetReferees indicates an expected call of ListReferralSetReferees. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListReferralSetReferees(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListReferralSetReferees", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListReferralSetReferees), varargs...) +} + +// ListReferralSets mocks base method. +func (m *MockTradingDataServiceClientV2) ListReferralSets(arg0 context.Context, arg1 *v2.ListReferralSetsRequest, arg2 ...grpc.CallOption) (*v2.ListReferralSetsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListReferralSets", varargs...) + ret0, _ := ret[0].(*v2.ListReferralSetsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListReferralSets indicates an expected call of ListReferralSets. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListReferralSets(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListReferralSets", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListReferralSets), varargs...) +} + +// ListRewardSummaries mocks base method. +func (m *MockTradingDataServiceClientV2) ListRewardSummaries(arg0 context.Context, arg1 *v2.ListRewardSummariesRequest, arg2 ...grpc.CallOption) (*v2.ListRewardSummariesResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListRewardSummaries", varargs...) + ret0, _ := ret[0].(*v2.ListRewardSummariesResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListRewardSummaries indicates an expected call of ListRewardSummaries. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListRewardSummaries(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListRewardSummaries", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListRewardSummaries), varargs...) +} + +// ListRewards mocks base method. +func (m *MockTradingDataServiceClientV2) ListRewards(arg0 context.Context, arg1 *v2.ListRewardsRequest, arg2 ...grpc.CallOption) (*v2.ListRewardsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListRewards", varargs...) + ret0, _ := ret[0].(*v2.ListRewardsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListRewards indicates an expected call of ListRewards. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListRewards(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListRewards", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListRewards), varargs...) +} + +// ListStopOrders mocks base method. +func (m *MockTradingDataServiceClientV2) ListStopOrders(arg0 context.Context, arg1 *v2.ListStopOrdersRequest, arg2 ...grpc.CallOption) (*v2.ListStopOrdersResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListStopOrders", varargs...) + ret0, _ := ret[0].(*v2.ListStopOrdersResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListStopOrders indicates an expected call of ListStopOrders. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListStopOrders(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListStopOrders", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListStopOrders), varargs...) +} + +// ListSuccessorMarkets mocks base method. +func (m *MockTradingDataServiceClientV2) ListSuccessorMarkets(arg0 context.Context, arg1 *v2.ListSuccessorMarketsRequest, arg2 ...grpc.CallOption) (*v2.ListSuccessorMarketsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListSuccessorMarkets", varargs...) + ret0, _ := ret[0].(*v2.ListSuccessorMarketsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListSuccessorMarkets indicates an expected call of ListSuccessorMarkets. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListSuccessorMarkets(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListSuccessorMarkets", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListSuccessorMarkets), varargs...) +} + +// ListTeamMembersStatistics mocks base method. +func (m *MockTradingDataServiceClientV2) ListTeamMembersStatistics(arg0 context.Context, arg1 *v2.ListTeamMembersStatisticsRequest, arg2 ...grpc.CallOption) (*v2.ListTeamMembersStatisticsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListTeamMembersStatistics", varargs...) + ret0, _ := ret[0].(*v2.ListTeamMembersStatisticsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListTeamMembersStatistics indicates an expected call of ListTeamMembersStatistics. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListTeamMembersStatistics(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListTeamMembersStatistics", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListTeamMembersStatistics), varargs...) +} + +// ListTeamRefereeHistory mocks base method. +func (m *MockTradingDataServiceClientV2) ListTeamRefereeHistory(arg0 context.Context, arg1 *v2.ListTeamRefereeHistoryRequest, arg2 ...grpc.CallOption) (*v2.ListTeamRefereeHistoryResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListTeamRefereeHistory", varargs...) + ret0, _ := ret[0].(*v2.ListTeamRefereeHistoryResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListTeamRefereeHistory indicates an expected call of ListTeamRefereeHistory. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListTeamRefereeHistory(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListTeamRefereeHistory", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListTeamRefereeHistory), varargs...) +} + +// ListTeamReferees mocks base method. +func (m *MockTradingDataServiceClientV2) ListTeamReferees(arg0 context.Context, arg1 *v2.ListTeamRefereesRequest, arg2 ...grpc.CallOption) (*v2.ListTeamRefereesResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListTeamReferees", varargs...) + ret0, _ := ret[0].(*v2.ListTeamRefereesResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListTeamReferees indicates an expected call of ListTeamReferees. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListTeamReferees(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListTeamReferees", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListTeamReferees), varargs...) +} + +// ListTeams mocks base method. +func (m *MockTradingDataServiceClientV2) ListTeams(arg0 context.Context, arg1 *v2.ListTeamsRequest, arg2 ...grpc.CallOption) (*v2.ListTeamsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListTeams", varargs...) + ret0, _ := ret[0].(*v2.ListTeamsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListTeams indicates an expected call of ListTeams. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListTeams(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListTeams", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListTeams), varargs...) +} + +// ListTeamsStatistics mocks base method. +func (m *MockTradingDataServiceClientV2) ListTeamsStatistics(arg0 context.Context, arg1 *v2.ListTeamsStatisticsRequest, arg2 ...grpc.CallOption) (*v2.ListTeamsStatisticsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListTeamsStatistics", varargs...) + ret0, _ := ret[0].(*v2.ListTeamsStatisticsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListTeamsStatistics indicates an expected call of ListTeamsStatistics. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListTeamsStatistics(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListTeamsStatistics", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListTeamsStatistics), varargs...) +} + +// ListTrades mocks base method. +func (m *MockTradingDataServiceClientV2) ListTrades(arg0 context.Context, arg1 *v2.ListTradesRequest, arg2 ...grpc.CallOption) (*v2.ListTradesResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListTrades", varargs...) + ret0, _ := ret[0].(*v2.ListTradesResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListTrades indicates an expected call of ListTrades. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListTrades(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListTrades", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListTrades), varargs...) +} + +// ListTransfers mocks base method. +func (m *MockTradingDataServiceClientV2) ListTransfers(arg0 context.Context, arg1 *v2.ListTransfersRequest, arg2 ...grpc.CallOption) (*v2.ListTransfersResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListTransfers", varargs...) + ret0, _ := ret[0].(*v2.ListTransfersResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListTransfers indicates an expected call of ListTransfers. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListTransfers(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListTransfers", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListTransfers), varargs...) +} + +// ListVotes mocks base method. +func (m *MockTradingDataServiceClientV2) ListVotes(arg0 context.Context, arg1 *v2.ListVotesRequest, arg2 ...grpc.CallOption) (*v2.ListVotesResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListVotes", varargs...) + ret0, _ := ret[0].(*v2.ListVotesResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListVotes indicates an expected call of ListVotes. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListVotes(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListVotes", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListVotes), varargs...) +} + +// ListWithdrawals mocks base method. +func (m *MockTradingDataServiceClientV2) ListWithdrawals(arg0 context.Context, arg1 *v2.ListWithdrawalsRequest, arg2 ...grpc.CallOption) (*v2.ListWithdrawalsResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ListWithdrawals", varargs...) + ret0, _ := ret[0].(*v2.ListWithdrawalsResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ListWithdrawals indicates an expected call of ListWithdrawals. +func (mr *MockTradingDataServiceClientV2MockRecorder) ListWithdrawals(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListWithdrawals", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ListWithdrawals), varargs...) +} + +// ObserveAccounts mocks base method. +func (m *MockTradingDataServiceClientV2) ObserveAccounts(arg0 context.Context, arg1 *v2.ObserveAccountsRequest, arg2 ...grpc.CallOption) (v2.TradingDataService_ObserveAccountsClient, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ObserveAccounts", varargs...) + ret0, _ := ret[0].(v2.TradingDataService_ObserveAccountsClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ObserveAccounts indicates an expected call of ObserveAccounts. +func (mr *MockTradingDataServiceClientV2MockRecorder) ObserveAccounts(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ObserveAccounts", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ObserveAccounts), varargs...) +} + +// ObserveCandleData mocks base method. +func (m *MockTradingDataServiceClientV2) ObserveCandleData(arg0 context.Context, arg1 *v2.ObserveCandleDataRequest, arg2 ...grpc.CallOption) (v2.TradingDataService_ObserveCandleDataClient, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ObserveCandleData", varargs...) + ret0, _ := ret[0].(v2.TradingDataService_ObserveCandleDataClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ObserveCandleData indicates an expected call of ObserveCandleData. +func (mr *MockTradingDataServiceClientV2MockRecorder) ObserveCandleData(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ObserveCandleData", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ObserveCandleData), varargs...) +} + +// ObserveEventBus mocks base method. +func (m *MockTradingDataServiceClientV2) ObserveEventBus(arg0 context.Context, arg1 ...grpc.CallOption) (v2.TradingDataService_ObserveEventBusClient, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0} + for _, a := range arg1 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ObserveEventBus", varargs...) + ret0, _ := ret[0].(v2.TradingDataService_ObserveEventBusClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ObserveEventBus indicates an expected call of ObserveEventBus. +func (mr *MockTradingDataServiceClientV2MockRecorder) ObserveEventBus(arg0 interface{}, arg1 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0}, arg1...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ObserveEventBus", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ObserveEventBus), varargs...) +} + +// ObserveGovernance mocks base method. +func (m *MockTradingDataServiceClientV2) ObserveGovernance(arg0 context.Context, arg1 *v2.ObserveGovernanceRequest, arg2 ...grpc.CallOption) (v2.TradingDataService_ObserveGovernanceClient, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ObserveGovernance", varargs...) + ret0, _ := ret[0].(v2.TradingDataService_ObserveGovernanceClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ObserveGovernance indicates an expected call of ObserveGovernance. +func (mr *MockTradingDataServiceClientV2MockRecorder) ObserveGovernance(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ObserveGovernance", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ObserveGovernance), varargs...) +} + +// ObserveLedgerMovements mocks base method. +func (m *MockTradingDataServiceClientV2) ObserveLedgerMovements(arg0 context.Context, arg1 *v2.ObserveLedgerMovementsRequest, arg2 ...grpc.CallOption) (v2.TradingDataService_ObserveLedgerMovementsClient, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ObserveLedgerMovements", varargs...) + ret0, _ := ret[0].(v2.TradingDataService_ObserveLedgerMovementsClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ObserveLedgerMovements indicates an expected call of ObserveLedgerMovements. +func (mr *MockTradingDataServiceClientV2MockRecorder) ObserveLedgerMovements(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ObserveLedgerMovements", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ObserveLedgerMovements), varargs...) +} + +// ObserveLiquidityProvisions mocks base method. +func (m *MockTradingDataServiceClientV2) ObserveLiquidityProvisions(arg0 context.Context, arg1 *v2.ObserveLiquidityProvisionsRequest, arg2 ...grpc.CallOption) (v2.TradingDataService_ObserveLiquidityProvisionsClient, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ObserveLiquidityProvisions", varargs...) + ret0, _ := ret[0].(v2.TradingDataService_ObserveLiquidityProvisionsClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ObserveLiquidityProvisions indicates an expected call of ObserveLiquidityProvisions. +func (mr *MockTradingDataServiceClientV2MockRecorder) ObserveLiquidityProvisions(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ObserveLiquidityProvisions", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ObserveLiquidityProvisions), varargs...) +} + +// ObserveMarginLevels mocks base method. +func (m *MockTradingDataServiceClientV2) ObserveMarginLevels(arg0 context.Context, arg1 *v2.ObserveMarginLevelsRequest, arg2 ...grpc.CallOption) (v2.TradingDataService_ObserveMarginLevelsClient, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ObserveMarginLevels", varargs...) + ret0, _ := ret[0].(v2.TradingDataService_ObserveMarginLevelsClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ObserveMarginLevels indicates an expected call of ObserveMarginLevels. +func (mr *MockTradingDataServiceClientV2MockRecorder) ObserveMarginLevels(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ObserveMarginLevels", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ObserveMarginLevels), varargs...) +} + +// ObserveMarketsData mocks base method. +func (m *MockTradingDataServiceClientV2) ObserveMarketsData(arg0 context.Context, arg1 *v2.ObserveMarketsDataRequest, arg2 ...grpc.CallOption) (v2.TradingDataService_ObserveMarketsDataClient, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ObserveMarketsData", varargs...) + ret0, _ := ret[0].(v2.TradingDataService_ObserveMarketsDataClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ObserveMarketsData indicates an expected call of ObserveMarketsData. +func (mr *MockTradingDataServiceClientV2MockRecorder) ObserveMarketsData(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ObserveMarketsData", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ObserveMarketsData), varargs...) +} + +// ObserveMarketsDepth mocks base method. +func (m *MockTradingDataServiceClientV2) ObserveMarketsDepth(arg0 context.Context, arg1 *v2.ObserveMarketsDepthRequest, arg2 ...grpc.CallOption) (v2.TradingDataService_ObserveMarketsDepthClient, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ObserveMarketsDepth", varargs...) + ret0, _ := ret[0].(v2.TradingDataService_ObserveMarketsDepthClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ObserveMarketsDepth indicates an expected call of ObserveMarketsDepth. +func (mr *MockTradingDataServiceClientV2MockRecorder) ObserveMarketsDepth(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ObserveMarketsDepth", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ObserveMarketsDepth), varargs...) +} + +// ObserveMarketsDepthUpdates mocks base method. +func (m *MockTradingDataServiceClientV2) ObserveMarketsDepthUpdates(arg0 context.Context, arg1 *v2.ObserveMarketsDepthUpdatesRequest, arg2 ...grpc.CallOption) (v2.TradingDataService_ObserveMarketsDepthUpdatesClient, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ObserveMarketsDepthUpdates", varargs...) + ret0, _ := ret[0].(v2.TradingDataService_ObserveMarketsDepthUpdatesClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ObserveMarketsDepthUpdates indicates an expected call of ObserveMarketsDepthUpdates. +func (mr *MockTradingDataServiceClientV2MockRecorder) ObserveMarketsDepthUpdates(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ObserveMarketsDepthUpdates", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ObserveMarketsDepthUpdates), varargs...) +} + +// ObserveOrders mocks base method. +func (m *MockTradingDataServiceClientV2) ObserveOrders(arg0 context.Context, arg1 *v2.ObserveOrdersRequest, arg2 ...grpc.CallOption) (v2.TradingDataService_ObserveOrdersClient, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ObserveOrders", varargs...) + ret0, _ := ret[0].(v2.TradingDataService_ObserveOrdersClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ObserveOrders indicates an expected call of ObserveOrders. +func (mr *MockTradingDataServiceClientV2MockRecorder) ObserveOrders(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ObserveOrders", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ObserveOrders), varargs...) +} + +// ObservePositions mocks base method. +func (m *MockTradingDataServiceClientV2) ObservePositions(arg0 context.Context, arg1 *v2.ObservePositionsRequest, arg2 ...grpc.CallOption) (v2.TradingDataService_ObservePositionsClient, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ObservePositions", varargs...) + ret0, _ := ret[0].(v2.TradingDataService_ObservePositionsClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ObservePositions indicates an expected call of ObservePositions. +func (mr *MockTradingDataServiceClientV2MockRecorder) ObservePositions(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ObservePositions", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ObservePositions), varargs...) +} + +// ObserveTrades mocks base method. +func (m *MockTradingDataServiceClientV2) ObserveTrades(arg0 context.Context, arg1 *v2.ObserveTradesRequest, arg2 ...grpc.CallOption) (v2.TradingDataService_ObserveTradesClient, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ObserveTrades", varargs...) + ret0, _ := ret[0].(v2.TradingDataService_ObserveTradesClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ObserveTrades indicates an expected call of ObserveTrades. +func (mr *MockTradingDataServiceClientV2MockRecorder) ObserveTrades(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ObserveTrades", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ObserveTrades), varargs...) +} + +// ObserveTransactionResults mocks base method. +func (m *MockTradingDataServiceClientV2) ObserveTransactionResults(arg0 context.Context, arg1 *v2.ObserveTransactionResultsRequest, arg2 ...grpc.CallOption) (v2.TradingDataService_ObserveTransactionResultsClient, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ObserveTransactionResults", varargs...) + ret0, _ := ret[0].(v2.TradingDataService_ObserveTransactionResultsClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ObserveTransactionResults indicates an expected call of ObserveTransactionResults. +func (mr *MockTradingDataServiceClientV2MockRecorder) ObserveTransactionResults(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ObserveTransactionResults", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ObserveTransactionResults), varargs...) +} + +// ObserveVotes mocks base method. +func (m *MockTradingDataServiceClientV2) ObserveVotes(arg0 context.Context, arg1 *v2.ObserveVotesRequest, arg2 ...grpc.CallOption) (v2.TradingDataService_ObserveVotesClient, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "ObserveVotes", varargs...) + ret0, _ := ret[0].(v2.TradingDataService_ObserveVotesClient) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// ObserveVotes indicates an expected call of ObserveVotes. +func (mr *MockTradingDataServiceClientV2MockRecorder) ObserveVotes(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ObserveVotes", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).ObserveVotes), varargs...) +} + +// Ping mocks base method. +func (m *MockTradingDataServiceClientV2) Ping(arg0 context.Context, arg1 *v2.PingRequest, arg2 ...grpc.CallOption) (*v2.PingResponse, error) { + m.ctrl.T.Helper() + varargs := []interface{}{arg0, arg1} + for _, a := range arg2 { + varargs = append(varargs, a) + } + ret := m.ctrl.Call(m, "Ping", varargs...) + ret0, _ := ret[0].(*v2.PingResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// Ping indicates an expected call of Ping. +func (mr *MockTradingDataServiceClientV2MockRecorder) Ping(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + varargs := append([]interface{}{arg0, arg1}, arg2...) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Ping", reflect.TypeOf((*MockTradingDataServiceClientV2)(nil).Ping), varargs...) +} diff --git a/protos/data-node/api/v2/trading_data.pb.go b/protos/data-node/api/v2/trading_data.pb.go index 1a9697fe96c..35c8ec47a0b 100644 --- a/protos/data-node/api/v2/trading_data.pb.go +++ b/protos/data-node/api/v2/trading_data.pb.go @@ -328,7 +328,7 @@ func (x ListTransfersRequest_Scope) Number() protoreflect.EnumNumber { // Deprecated: Use ListTransfersRequest_Scope.Descriptor instead. func (ListTransfersRequest_Scope) EnumDescriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{77, 0} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{87, 0} } // Filter for the types of governance proposals to view @@ -428,7 +428,7 @@ func (x ListGovernanceDataRequest_Type) Number() protoreflect.EnumNumber { // Deprecated: Use ListGovernanceDataRequest_Type.Descriptor instead. func (ListGovernanceDataRequest_Type) EnumDescriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{220, 0} + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{230, 0} } // All data returned from the API is ordered in a well-defined manner. @@ -2353,20 +2353,20 @@ func (x *GetStopOrderResponse) GetOrder() *v1.StopOrderEvent { return nil } -// Request that is sent when executing a query for a list of stop orders. -type ListStopOrdersRequest struct { +// Request that is sent when executing a query for a list of team game scores. +type ListGameTeamScoresRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Optional pagination control. - Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` - // Order filter contains all filtering conditions and values that are applied to the orders listing. - Filter *StopOrderFilter `protobuf:"bytes,5,opt,name=filter,proto3,oneof" json:"filter,omitempty"` + Pagination *Pagination `protobuf:"bytes,1,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + // Team games filter contains all filtering conditions and values that are applied to the team games score listing. + Filter *GameTeamScoresFilter `protobuf:"bytes,2,opt,name=filter,proto3,oneof" json:"filter,omitempty"` } -func (x *ListStopOrdersRequest) Reset() { - *x = ListStopOrdersRequest{} +func (x *ListGameTeamScoresRequest) Reset() { + *x = ListGameTeamScoresRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2374,13 +2374,13 @@ func (x *ListStopOrdersRequest) Reset() { } } -func (x *ListStopOrdersRequest) String() string { +func (x *ListGameTeamScoresRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListStopOrdersRequest) ProtoMessage() {} +func (*ListGameTeamScoresRequest) ProtoMessage() {} -func (x *ListStopOrdersRequest) ProtoReflect() protoreflect.Message { +func (x *ListGameTeamScoresRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2392,49 +2392,38 @@ func (x *ListStopOrdersRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListStopOrdersRequest.ProtoReflect.Descriptor instead. -func (*ListStopOrdersRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListGameTeamScoresRequest.ProtoReflect.Descriptor instead. +func (*ListGameTeamScoresRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{30} } -func (x *ListStopOrdersRequest) GetPagination() *Pagination { +func (x *ListGameTeamScoresRequest) GetPagination() *Pagination { if x != nil { return x.Pagination } return nil } -func (x *ListStopOrdersRequest) GetFilter() *StopOrderFilter { +func (x *ListGameTeamScoresRequest) GetFilter() *GameTeamScoresFilter { if x != nil { return x.Filter } return nil } -// Stop order filter -// -// Stop order filter that contains all filtering conditions and values that are applied to the stop orders listing. -type StopOrderFilter struct { +type GameTeamScoresFilter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Restrict orders to those with the given statuses. - Statuses []vega.StopOrder_Status `protobuf:"varint,1,rep,packed,name=statuses,proto3,enum=vega.StopOrder_Status" json:"statuses,omitempty"` - // Restrict orders to those with the given expiry strategies. - ExpiryStrategies []vega.StopOrder_ExpiryStrategy `protobuf:"varint,2,rep,packed,name=expiry_strategies,json=expiryStrategies,proto3,enum=vega.StopOrder_ExpiryStrategy" json:"expiry_strategies,omitempty"` - // Restrict orders to those placed during the given date range. If not set, all orders will be returned. - DateRange *DateRange `protobuf:"bytes,3,opt,name=date_range,json=dateRange,proto3,oneof" json:"date_range,omitempty"` - // Restrict orders to those placed by the given party IDs. - PartyIds []string `protobuf:"bytes,4,rep,name=party_ids,json=partyIds,proto3" json:"party_ids,omitempty"` - // Restrict orders to those placed on the given market IDs. - MarketIds []string `protobuf:"bytes,5,rep,name=market_ids,json=marketIds,proto3" json:"market_ids,omitempty"` - // Live stop orders only - LiveOnly *bool `protobuf:"varint,6,opt,name=live_only,json=liveOnly,proto3,oneof" json:"live_only,omitempty"` + // Restrict game scores to the given ones. + GameIds []string `protobuf:"bytes,1,rep,name=game_ids,json=gameIds,proto3" json:"game_ids,omitempty"` + // Restrict game scores to those for the given teams. + TeamIds []string `protobuf:"bytes,2,rep,name=team_ids,json=teamIds,proto3" json:"team_ids,omitempty"` } -func (x *StopOrderFilter) Reset() { - *x = StopOrderFilter{} +func (x *GameTeamScoresFilter) Reset() { + *x = GameTeamScoresFilter{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2442,13 +2431,13 @@ func (x *StopOrderFilter) Reset() { } } -func (x *StopOrderFilter) String() string { +func (x *GameTeamScoresFilter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StopOrderFilter) ProtoMessage() {} +func (*GameTeamScoresFilter) ProtoMessage() {} -func (x *StopOrderFilter) ProtoReflect() protoreflect.Message { +func (x *GameTeamScoresFilter) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2460,67 +2449,37 @@ func (x *StopOrderFilter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StopOrderFilter.ProtoReflect.Descriptor instead. -func (*StopOrderFilter) Descriptor() ([]byte, []int) { +// Deprecated: Use GameTeamScoresFilter.ProtoReflect.Descriptor instead. +func (*GameTeamScoresFilter) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{31} } -func (x *StopOrderFilter) GetStatuses() []vega.StopOrder_Status { - if x != nil { - return x.Statuses - } - return nil -} - -func (x *StopOrderFilter) GetExpiryStrategies() []vega.StopOrder_ExpiryStrategy { - if x != nil { - return x.ExpiryStrategies - } - return nil -} - -func (x *StopOrderFilter) GetDateRange() *DateRange { - if x != nil { - return x.DateRange - } - return nil -} - -func (x *StopOrderFilter) GetPartyIds() []string { +func (x *GameTeamScoresFilter) GetGameIds() []string { if x != nil { - return x.PartyIds + return x.GameIds } return nil } -func (x *StopOrderFilter) GetMarketIds() []string { +func (x *GameTeamScoresFilter) GetTeamIds() []string { if x != nil { - return x.MarketIds + return x.TeamIds } return nil } -func (x *StopOrderFilter) GetLiveOnly() bool { - if x != nil && x.LiveOnly != nil { - return *x.LiveOnly - } - return false -} - -// Order data with the corresponding cursor. -type StopOrderEdge struct { +// Response received from the query for getting a list of game scores for teams. +type ListGameTeamScoresResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Data associated with an order submitted to a Vega node. - Node *v1.StopOrderEvent `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Page of team game scores data and corresponding page information. + TeamScores *GameTeamScoresConnection `protobuf:"bytes,1,opt,name=team_scores,json=teamScores,proto3" json:"team_scores,omitempty"` } -func (x *StopOrderEdge) Reset() { - *x = StopOrderEdge{} +func (x *ListGameTeamScoresResponse) Reset() { + *x = ListGameTeamScoresResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2528,13 +2487,13 @@ func (x *StopOrderEdge) Reset() { } } -func (x *StopOrderEdge) String() string { +func (x *ListGameTeamScoresResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StopOrderEdge) ProtoMessage() {} +func (*ListGameTeamScoresResponse) ProtoMessage() {} -func (x *StopOrderEdge) ProtoReflect() protoreflect.Message { +func (x *ListGameTeamScoresResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2546,39 +2505,32 @@ func (x *StopOrderEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StopOrderEdge.ProtoReflect.Descriptor instead. -func (*StopOrderEdge) Descriptor() ([]byte, []int) { +// Deprecated: Use ListGameTeamScoresResponse.ProtoReflect.Descriptor instead. +func (*ListGameTeamScoresResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{32} } -func (x *StopOrderEdge) GetNode() *v1.StopOrderEvent { +func (x *ListGameTeamScoresResponse) GetTeamScores() *GameTeamScoresConnection { if x != nil { - return x.Node + return x.TeamScores } return nil } -func (x *StopOrderEdge) GetCursor() string { - if x != nil { - return x.Cursor - } - return "" -} - -// Page of stop orders data and corresponding page information. -type StopOrderConnection struct { +// Page of team game scores data and corresponding page information. +type GameTeamScoresConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of stop orders and their corresponding cursors. - Edges []*StopOrderEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page of orders and their corresponding cursors. + Edges []*GameTeamScoresEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` // Page information that is used for fetching further pages. PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *StopOrderConnection) Reset() { - *x = StopOrderConnection{} +func (x *GameTeamScoresConnection) Reset() { + *x = GameTeamScoresConnection{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2586,13 +2538,13 @@ func (x *StopOrderConnection) Reset() { } } -func (x *StopOrderConnection) String() string { +func (x *GameTeamScoresConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StopOrderConnection) ProtoMessage() {} +func (*GameTeamScoresConnection) ProtoMessage() {} -func (x *StopOrderConnection) ProtoReflect() protoreflect.Message { +func (x *GameTeamScoresConnection) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2604,37 +2556,38 @@ func (x *StopOrderConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StopOrderConnection.ProtoReflect.Descriptor instead. -func (*StopOrderConnection) Descriptor() ([]byte, []int) { +// Deprecated: Use GameTeamScoresConnection.ProtoReflect.Descriptor instead. +func (*GameTeamScoresConnection) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{33} } -func (x *StopOrderConnection) GetEdges() []*StopOrderEdge { +func (x *GameTeamScoresConnection) GetEdges() []*GameTeamScoresEdge { if x != nil { return x.Edges } return nil } -func (x *StopOrderConnection) GetPageInfo() *PageInfo { +func (x *GameTeamScoresConnection) GetPageInfo() *PageInfo { if x != nil { return x.PageInfo } return nil } -// Response that is received from the query to list stop orders. -type ListStopOrdersResponse struct { +type GameTeamScoresEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of stop orders data and corresponding page information. - Orders *StopOrderConnection `protobuf:"bytes,1,opt,name=orders,proto3" json:"orders,omitempty"` + // Data associated with an order submitted to a Vega node. + Node *v1.GameTeamScore `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *ListStopOrdersResponse) Reset() { - *x = ListStopOrdersResponse{} +func (x *GameTeamScoresEdge) Reset() { + *x = GameTeamScoresEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2642,13 +2595,13 @@ func (x *ListStopOrdersResponse) Reset() { } } -func (x *ListStopOrdersResponse) String() string { +func (x *GameTeamScoresEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListStopOrdersResponse) ProtoMessage() {} +func (*GameTeamScoresEdge) ProtoMessage() {} -func (x *ListStopOrdersResponse) ProtoReflect() protoreflect.Message { +func (x *GameTeamScoresEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2660,37 +2613,39 @@ func (x *ListStopOrdersResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListStopOrdersResponse.ProtoReflect.Descriptor instead. -func (*ListStopOrdersResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GameTeamScoresEdge.ProtoReflect.Descriptor instead. +func (*GameTeamScoresEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{34} } -func (x *ListStopOrdersResponse) GetOrders() *StopOrderConnection { +func (x *GameTeamScoresEdge) GetNode() *v1.GameTeamScore { if x != nil { - return x.Orders + return x.Node } return nil } -// Request used to list all positions for a party. -// Optionally, if a market ID is set, the results will be filtered for that market only. -// -// Deprecated: Do not use. -type ListPositionsRequest struct { +func (x *GameTeamScoresEdge) GetCursor() string { + if x != nil { + return x.Cursor + } + return "" +} + +// Request that is sent when executing a query for a list of party game scores. +type ListGamePartyScoresRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Party ID to list positions for, required field. - PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` - // Market ID to filter for. If empty, no markets will be filtered. - MarketId string `protobuf:"bytes,2,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` - // Pagination controls. - Pagination *Pagination `protobuf:"bytes,3,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + // Optional pagination control. + Pagination *Pagination `protobuf:"bytes,1,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + // Party games filter contains all filtering conditions and values that are applied to the party games score listing. + Filter *GamePartyScoresFilter `protobuf:"bytes,2,opt,name=filter,proto3,oneof" json:"filter,omitempty"` } -func (x *ListPositionsRequest) Reset() { - *x = ListPositionsRequest{} +func (x *ListGamePartyScoresRequest) Reset() { + *x = ListGamePartyScoresRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2698,13 +2653,13 @@ func (x *ListPositionsRequest) Reset() { } } -func (x *ListPositionsRequest) String() string { +func (x *ListGamePartyScoresRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListPositionsRequest) ProtoMessage() {} +func (*ListGamePartyScoresRequest) ProtoMessage() {} -func (x *ListPositionsRequest) ProtoReflect() protoreflect.Message { +func (x *ListGamePartyScoresRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2716,46 +2671,40 @@ func (x *ListPositionsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListPositionsRequest.ProtoReflect.Descriptor instead. -func (*ListPositionsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListGamePartyScoresRequest.ProtoReflect.Descriptor instead. +func (*ListGamePartyScoresRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{35} } -func (x *ListPositionsRequest) GetPartyId() string { - if x != nil { - return x.PartyId - } - return "" -} - -func (x *ListPositionsRequest) GetMarketId() string { +func (x *ListGamePartyScoresRequest) GetPagination() *Pagination { if x != nil { - return x.MarketId + return x.Pagination } - return "" + return nil } -func (x *ListPositionsRequest) GetPagination() *Pagination { +func (x *ListGamePartyScoresRequest) GetFilter() *GamePartyScoresFilter { if x != nil { - return x.Pagination + return x.Filter } return nil } -// Response for a list of positions for a party -// -// Deprecated: Do not use. -type ListPositionsResponse struct { +type GamePartyScoresFilter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of positions data and corresponding page information. - Positions *PositionConnection `protobuf:"bytes,1,opt,name=positions,proto3" json:"positions,omitempty"` + // Restrict game scores to those in the given games. + GameIds []string `protobuf:"bytes,1,rep,name=game_ids,json=gameIds,proto3" json:"game_ids,omitempty"` + // Restrict game scores to the parties in the given teams. + TeamIds []string `protobuf:"bytes,2,rep,name=team_ids,json=teamIds,proto3" json:"team_ids,omitempty"` + // Restrict game scores to those relating to the given parties. + PartyIds []string `protobuf:"bytes,3,rep,name=party_ids,json=partyIds,proto3" json:"party_ids,omitempty"` } -func (x *ListPositionsResponse) Reset() { - *x = ListPositionsResponse{} +func (x *GamePartyScoresFilter) Reset() { + *x = GamePartyScoresFilter{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2763,13 +2712,13 @@ func (x *ListPositionsResponse) Reset() { } } -func (x *ListPositionsResponse) String() string { +func (x *GamePartyScoresFilter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListPositionsResponse) ProtoMessage() {} +func (*GamePartyScoresFilter) ProtoMessage() {} -func (x *ListPositionsResponse) ProtoReflect() protoreflect.Message { +func (x *GamePartyScoresFilter) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2781,32 +2730,44 @@ func (x *ListPositionsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListPositionsResponse.ProtoReflect.Descriptor instead. -func (*ListPositionsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GamePartyScoresFilter.ProtoReflect.Descriptor instead. +func (*GamePartyScoresFilter) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{36} } -func (x *ListPositionsResponse) GetPositions() *PositionConnection { +func (x *GamePartyScoresFilter) GetGameIds() []string { if x != nil { - return x.Positions + return x.GameIds } return nil } -// Filter to apply to the ListAllPositionsRequest -type PositionsFilter struct { +func (x *GamePartyScoresFilter) GetTeamIds() []string { + if x != nil { + return x.TeamIds + } + return nil +} + +func (x *GamePartyScoresFilter) GetPartyIds() []string { + if x != nil { + return x.PartyIds + } + return nil +} + +// Response received from the query for getting a list of game scores for teams. +type ListGamePartyScoresResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Restrict positions to those related to the given parties. - PartyIds []string `protobuf:"bytes,1,rep,name=party_ids,json=partyIds,proto3" json:"party_ids,omitempty"` - // Restrict positions to those on the given markets. - MarketIds []string `protobuf:"bytes,2,rep,name=market_ids,json=marketIds,proto3" json:"market_ids,omitempty"` + // Page of party game scores data and corresponding page information. + PartyScores *GamePartyScoresConnection `protobuf:"bytes,1,opt,name=party_scores,json=partyScores,proto3" json:"party_scores,omitempty"` } -func (x *PositionsFilter) Reset() { - *x = PositionsFilter{} +func (x *ListGamePartyScoresResponse) Reset() { + *x = ListGamePartyScoresResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2814,13 +2775,13 @@ func (x *PositionsFilter) Reset() { } } -func (x *PositionsFilter) String() string { +func (x *ListGamePartyScoresResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PositionsFilter) ProtoMessage() {} +func (*ListGamePartyScoresResponse) ProtoMessage() {} -func (x *PositionsFilter) ProtoReflect() protoreflect.Message { +func (x *ListGamePartyScoresResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2832,39 +2793,32 @@ func (x *PositionsFilter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PositionsFilter.ProtoReflect.Descriptor instead. -func (*PositionsFilter) Descriptor() ([]byte, []int) { +// Deprecated: Use ListGamePartyScoresResponse.ProtoReflect.Descriptor instead. +func (*ListGamePartyScoresResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{37} } -func (x *PositionsFilter) GetPartyIds() []string { - if x != nil { - return x.PartyIds - } - return nil -} - -func (x *PositionsFilter) GetMarketIds() []string { +func (x *ListGamePartyScoresResponse) GetPartyScores() *GamePartyScoresConnection { if x != nil { - return x.MarketIds + return x.PartyScores } return nil } -// Request to list positions, given the position filter is supplied. -type ListAllPositionsRequest struct { +// Page of party game scores data and corresponding page information. +type GamePartyScoresConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Filter to apply to the positions. - Filter *PositionsFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"` - // Pagination controls. - Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + // Page of orders and their corresponding cursors. + Edges []*GamePartyScoresEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *ListAllPositionsRequest) Reset() { - *x = ListAllPositionsRequest{} +func (x *GamePartyScoresConnection) Reset() { + *x = GamePartyScoresConnection{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2872,13 +2826,13 @@ func (x *ListAllPositionsRequest) Reset() { } } -func (x *ListAllPositionsRequest) String() string { +func (x *GamePartyScoresConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListAllPositionsRequest) ProtoMessage() {} +func (*GamePartyScoresConnection) ProtoMessage() {} -func (x *ListAllPositionsRequest) ProtoReflect() protoreflect.Message { +func (x *GamePartyScoresConnection) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2890,37 +2844,38 @@ func (x *ListAllPositionsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListAllPositionsRequest.ProtoReflect.Descriptor instead. -func (*ListAllPositionsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GamePartyScoresConnection.ProtoReflect.Descriptor instead. +func (*GamePartyScoresConnection) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{38} } -func (x *ListAllPositionsRequest) GetFilter() *PositionsFilter { +func (x *GamePartyScoresConnection) GetEdges() []*GamePartyScoresEdge { if x != nil { - return x.Filter + return x.Edges } return nil } -func (x *ListAllPositionsRequest) GetPagination() *Pagination { +func (x *GamePartyScoresConnection) GetPageInfo() *PageInfo { if x != nil { - return x.Pagination + return x.PageInfo } return nil } -// Response to query for listing of positions, given the filter is supplied -type ListAllPositionsResponse struct { +type GamePartyScoresEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of positions data and corresponding page information. - Positions *PositionConnection `protobuf:"bytes,1,opt,name=positions,proto3" json:"positions,omitempty"` + // Data associated with an order submitted to a Vega node. + Node *v1.GamePartyScore `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *ListAllPositionsResponse) Reset() { - *x = ListAllPositionsResponse{} +func (x *GamePartyScoresEdge) Reset() { + *x = GamePartyScoresEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2928,13 +2883,13 @@ func (x *ListAllPositionsResponse) Reset() { } } -func (x *ListAllPositionsResponse) String() string { +func (x *GamePartyScoresEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListAllPositionsResponse) ProtoMessage() {} +func (*GamePartyScoresEdge) ProtoMessage() {} -func (x *ListAllPositionsResponse) ProtoReflect() protoreflect.Message { +func (x *GamePartyScoresEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2946,32 +2901,39 @@ func (x *ListAllPositionsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListAllPositionsResponse.ProtoReflect.Descriptor instead. -func (*ListAllPositionsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GamePartyScoresEdge.ProtoReflect.Descriptor instead. +func (*GamePartyScoresEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{39} } -func (x *ListAllPositionsResponse) GetPositions() *PositionConnection { +func (x *GamePartyScoresEdge) GetNode() *v1.GamePartyScore { if x != nil { - return x.Positions + return x.Node } return nil } -// Position data with the corresponding cursor. -type PositionEdge struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +func (x *GamePartyScoresEdge) GetCursor() string { + if x != nil { + return x.Cursor + } + return "" +} + +// Request that is sent when executing a query for a list of stop orders. +type ListStopOrdersRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Position data for a party on a market. - Node *vega.Position `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Optional pagination control. + Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + // Order filter contains all filtering conditions and values that are applied to the orders listing. + Filter *StopOrderFilter `protobuf:"bytes,5,opt,name=filter,proto3,oneof" json:"filter,omitempty"` } -func (x *PositionEdge) Reset() { - *x = PositionEdge{} +func (x *ListStopOrdersRequest) Reset() { + *x = ListStopOrdersRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2979,13 +2941,13 @@ func (x *PositionEdge) Reset() { } } -func (x *PositionEdge) String() string { +func (x *ListStopOrdersRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PositionEdge) ProtoMessage() {} +func (*ListStopOrdersRequest) ProtoMessage() {} -func (x *PositionEdge) ProtoReflect() protoreflect.Message { +func (x *ListStopOrdersRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2997,39 +2959,49 @@ func (x *PositionEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PositionEdge.ProtoReflect.Descriptor instead. -func (*PositionEdge) Descriptor() ([]byte, []int) { +// Deprecated: Use ListStopOrdersRequest.ProtoReflect.Descriptor instead. +func (*ListStopOrdersRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{40} } -func (x *PositionEdge) GetNode() *vega.Position { +func (x *ListStopOrdersRequest) GetPagination() *Pagination { if x != nil { - return x.Node + return x.Pagination } return nil } -func (x *PositionEdge) GetCursor() string { +func (x *ListStopOrdersRequest) GetFilter() *StopOrderFilter { if x != nil { - return x.Cursor + return x.Filter } - return "" + return nil } -// Page of positions and corresponding page information -type PositionConnection struct { +// Stop order filter +// +// Stop order filter that contains all filtering conditions and values that are applied to the stop orders listing. +type StopOrderFilter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of positions data and their corresponding cursors. - Edges []*PositionEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + // Restrict orders to those with the given statuses. + Statuses []vega.StopOrder_Status `protobuf:"varint,1,rep,packed,name=statuses,proto3,enum=vega.StopOrder_Status" json:"statuses,omitempty"` + // Restrict orders to those with the given expiry strategies. + ExpiryStrategies []vega.StopOrder_ExpiryStrategy `protobuf:"varint,2,rep,packed,name=expiry_strategies,json=expiryStrategies,proto3,enum=vega.StopOrder_ExpiryStrategy" json:"expiry_strategies,omitempty"` + // Restrict orders to those placed during the given date range. If not set, all orders will be returned. + DateRange *DateRange `protobuf:"bytes,3,opt,name=date_range,json=dateRange,proto3,oneof" json:"date_range,omitempty"` + // Restrict orders to those placed by the given party IDs. + PartyIds []string `protobuf:"bytes,4,rep,name=party_ids,json=partyIds,proto3" json:"party_ids,omitempty"` + // Restrict orders to those placed on the given market IDs. + MarketIds []string `protobuf:"bytes,5,rep,name=market_ids,json=marketIds,proto3" json:"market_ids,omitempty"` + // Live stop orders only + LiveOnly *bool `protobuf:"varint,6,opt,name=live_only,json=liveOnly,proto3,oneof" json:"live_only,omitempty"` } -func (x *PositionConnection) Reset() { - *x = PositionConnection{} +func (x *StopOrderFilter) Reset() { + *x = StopOrderFilter{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3037,13 +3009,13 @@ func (x *PositionConnection) Reset() { } } -func (x *PositionConnection) String() string { +func (x *StopOrderFilter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PositionConnection) ProtoMessage() {} +func (*StopOrderFilter) ProtoMessage() {} -func (x *PositionConnection) ProtoReflect() protoreflect.Message { +func (x *StopOrderFilter) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3055,39 +3027,67 @@ func (x *PositionConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PositionConnection.ProtoReflect.Descriptor instead. -func (*PositionConnection) Descriptor() ([]byte, []int) { +// Deprecated: Use StopOrderFilter.ProtoReflect.Descriptor instead. +func (*StopOrderFilter) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{41} } -func (x *PositionConnection) GetEdges() []*PositionEdge { +func (x *StopOrderFilter) GetStatuses() []vega.StopOrder_Status { if x != nil { - return x.Edges + return x.Statuses } return nil } -func (x *PositionConnection) GetPageInfo() *PageInfo { +func (x *StopOrderFilter) GetExpiryStrategies() []vega.StopOrder_ExpiryStrategy { if x != nil { - return x.PageInfo + return x.ExpiryStrategies } return nil } -// Request that is used to subscribe to a stream of positions -type ObservePositionsRequest struct { +func (x *StopOrderFilter) GetDateRange() *DateRange { + if x != nil { + return x.DateRange + } + return nil +} + +func (x *StopOrderFilter) GetPartyIds() []string { + if x != nil { + return x.PartyIds + } + return nil +} + +func (x *StopOrderFilter) GetMarketIds() []string { + if x != nil { + return x.MarketIds + } + return nil +} + +func (x *StopOrderFilter) GetLiveOnly() bool { + if x != nil && x.LiveOnly != nil { + return *x.LiveOnly + } + return false +} + +// Order data with the corresponding cursor. +type StopOrderEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Restrict position updates to those related to the given parties. - PartyId *string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3,oneof" json:"party_id,omitempty"` - // Restrict position updates to those related to the given markets. - MarketId *string `protobuf:"bytes,2,opt,name=market_id,json=marketId,proto3,oneof" json:"market_id,omitempty"` + // Data associated with an order submitted to a Vega node. + Node *v1.StopOrderEvent `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *ObservePositionsRequest) Reset() { - *x = ObservePositionsRequest{} +func (x *StopOrderEdge) Reset() { + *x = StopOrderEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3095,13 +3095,13 @@ func (x *ObservePositionsRequest) Reset() { } } -func (x *ObservePositionsRequest) String() string { +func (x *StopOrderEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ObservePositionsRequest) ProtoMessage() {} +func (*StopOrderEdge) ProtoMessage() {} -func (x *ObservePositionsRequest) ProtoReflect() protoreflect.Message { +func (x *StopOrderEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3113,40 +3113,39 @@ func (x *ObservePositionsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ObservePositionsRequest.ProtoReflect.Descriptor instead. -func (*ObservePositionsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use StopOrderEdge.ProtoReflect.Descriptor instead. +func (*StopOrderEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{42} } -func (x *ObservePositionsRequest) GetPartyId() string { - if x != nil && x.PartyId != nil { - return *x.PartyId +func (x *StopOrderEdge) GetNode() *v1.StopOrderEvent { + if x != nil { + return x.Node } - return "" + return nil } -func (x *ObservePositionsRequest) GetMarketId() string { - if x != nil && x.MarketId != nil { - return *x.MarketId +func (x *StopOrderEdge) GetCursor() string { + if x != nil { + return x.Cursor } return "" } -// Response received from a positions subscription request -type ObservePositionsResponse struct { +// Page of stop orders data and corresponding page information. +type StopOrderConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Types that are assignable to Response: - // - // *ObservePositionsResponse_Snapshot - // *ObservePositionsResponse_Updates - Response isObservePositionsResponse_Response `protobuf_oneof:"response"` + // Page of stop orders and their corresponding cursors. + Edges []*StopOrderEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *ObservePositionsResponse) Reset() { - *x = ObservePositionsResponse{} +func (x *StopOrderConnection) Reset() { + *x = StopOrderConnection{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3154,13 +3153,13 @@ func (x *ObservePositionsResponse) Reset() { } } -func (x *ObservePositionsResponse) String() string { +func (x *StopOrderConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ObservePositionsResponse) ProtoMessage() {} +func (*StopOrderConnection) ProtoMessage() {} -func (x *ObservePositionsResponse) ProtoReflect() protoreflect.Message { +func (x *StopOrderConnection) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3172,64 +3171,37 @@ func (x *ObservePositionsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ObservePositionsResponse.ProtoReflect.Descriptor instead. -func (*ObservePositionsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use StopOrderConnection.ProtoReflect.Descriptor instead. +func (*StopOrderConnection) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{43} } -func (m *ObservePositionsResponse) GetResponse() isObservePositionsResponse_Response { - if m != nil { - return m.Response - } - return nil -} - -func (x *ObservePositionsResponse) GetSnapshot() *PositionSnapshotPage { - if x, ok := x.GetResponse().(*ObservePositionsResponse_Snapshot); ok { - return x.Snapshot +func (x *StopOrderConnection) GetEdges() []*StopOrderEdge { + if x != nil { + return x.Edges } return nil } -func (x *ObservePositionsResponse) GetUpdates() *PositionUpdates { - if x, ok := x.GetResponse().(*ObservePositionsResponse_Updates); ok { - return x.Updates +func (x *StopOrderConnection) GetPageInfo() *PageInfo { + if x != nil { + return x.PageInfo } return nil } -type isObservePositionsResponse_Response interface { - isObservePositionsResponse_Response() -} - -type ObservePositionsResponse_Snapshot struct { - // An 'initial image' snapshot containing current positions. - Snapshot *PositionSnapshotPage `protobuf:"bytes,1,opt,name=snapshot,proto3,oneof"` -} - -type ObservePositionsResponse_Updates struct { - // List of position updates in the last block. - Updates *PositionUpdates `protobuf:"bytes,2,opt,name=updates,proto3,oneof"` -} - -func (*ObservePositionsResponse_Snapshot) isObservePositionsResponse_Response() {} - -func (*ObservePositionsResponse_Updates) isObservePositionsResponse_Response() {} - -// 'Initial image' of current positions, may be sent over multiple response messages -type PositionSnapshotPage struct { +// Response that is received from the query to list stop orders. +type ListStopOrdersResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // List of positions data. - Positions []*vega.Position `protobuf:"bytes,1,rep,name=positions,proto3" json:"positions,omitempty"` - // Indicator if last page is reached or not. - LastPage bool `protobuf:"varint,2,opt,name=last_page,json=lastPage,proto3" json:"last_page,omitempty"` + // Page of stop orders data and corresponding page information. + Orders *StopOrderConnection `protobuf:"bytes,1,opt,name=orders,proto3" json:"orders,omitempty"` } -func (x *PositionSnapshotPage) Reset() { - *x = PositionSnapshotPage{} +func (x *ListStopOrdersResponse) Reset() { + *x = ListStopOrdersResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3237,13 +3209,13 @@ func (x *PositionSnapshotPage) Reset() { } } -func (x *PositionSnapshotPage) String() string { +func (x *ListStopOrdersResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PositionSnapshotPage) ProtoMessage() {} +func (*ListStopOrdersResponse) ProtoMessage() {} -func (x *PositionSnapshotPage) ProtoReflect() protoreflect.Message { +func (x *ListStopOrdersResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3255,37 +3227,37 @@ func (x *PositionSnapshotPage) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PositionSnapshotPage.ProtoReflect.Descriptor instead. -func (*PositionSnapshotPage) Descriptor() ([]byte, []int) { +// Deprecated: Use ListStopOrdersResponse.ProtoReflect.Descriptor instead. +func (*ListStopOrdersResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{44} } -func (x *PositionSnapshotPage) GetPositions() []*vega.Position { +func (x *ListStopOrdersResponse) GetOrders() *StopOrderConnection { if x != nil { - return x.Positions + return x.Orders } return nil } -func (x *PositionSnapshotPage) GetLastPage() bool { - if x != nil { - return x.LastPage - } - return false -} - -// List of position updates in the last block -type PositionUpdates struct { - state protoimpl.MessageState +// Request used to list all positions for a party. +// Optionally, if a market ID is set, the results will be filtered for that market only. +// +// Deprecated: Do not use. +type ListPositionsRequest struct { + state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // List of positions data. - Positions []*vega.Position `protobuf:"bytes,1,rep,name=positions,proto3" json:"positions,omitempty"` + // Party ID to list positions for, required field. + PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` + // Market ID to filter for. If empty, no markets will be filtered. + MarketId string `protobuf:"bytes,2,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` + // Pagination controls. + Pagination *Pagination `protobuf:"bytes,3,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` } -func (x *PositionUpdates) Reset() { - *x = PositionUpdates{} +func (x *ListPositionsRequest) Reset() { + *x = ListPositionsRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3293,13 +3265,13 @@ func (x *PositionUpdates) Reset() { } } -func (x *PositionUpdates) String() string { +func (x *ListPositionsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PositionUpdates) ProtoMessage() {} +func (*ListPositionsRequest) ProtoMessage() {} -func (x *PositionUpdates) ProtoReflect() protoreflect.Message { +func (x *ListPositionsRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3311,40 +3283,46 @@ func (x *PositionUpdates) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PositionUpdates.ProtoReflect.Descriptor instead. -func (*PositionUpdates) Descriptor() ([]byte, []int) { +// Deprecated: Use ListPositionsRequest.ProtoReflect.Descriptor instead. +func (*ListPositionsRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{45} } -func (x *PositionUpdates) GetPositions() []*vega.Position { +func (x *ListPositionsRequest) GetPartyId() string { if x != nil { - return x.Positions + return x.PartyId + } + return "" +} + +func (x *ListPositionsRequest) GetMarketId() string { + if x != nil { + return x.MarketId + } + return "" +} + +func (x *ListPositionsRequest) GetPagination() *Pagination { + if x != nil { + return x.Pagination } return nil } -// Ledger entry filter sets filters on returned set of ledger entries. -type LedgerEntryFilter struct { +// Response for a list of positions for a party +// +// Deprecated: Do not use. +type ListPositionsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Determines whether an entry must have accounts matching both the account_from_filter - // and the account_to_filter. If set to 'true', entries must have matches in both filters. - // If set to `false`, entries matching only the account_from_filter or the account_to_filter will also be included. - CloseOnAccountFilters bool `protobuf:"varint,1,opt,name=close_on_account_filters,json=closeOnAccountFilters,proto3" json:"close_on_account_filters,omitempty"` - // Used to set values for filtering sender accounts. Party must be provided in this filter or 'to' account filter, or both. - FromAccountFilter *AccountFilter `protobuf:"bytes,2,opt,name=from_account_filter,json=fromAccountFilter,proto3" json:"from_account_filter,omitempty"` - // Used to set values for filtering receiver accounts. Party must be provided in this filter or 'from' account filter, or both. - ToAccountFilter *AccountFilter `protobuf:"bytes,3,opt,name=to_account_filter,json=toAccountFilter,proto3" json:"to_account_filter,omitempty"` - // List of transfer types that is used for filtering sender and receiver accounts. - TransferTypes []vega.TransferType `protobuf:"varint,5,rep,packed,name=transfer_types,json=transferTypes,proto3,enum=vega.TransferType" json:"transfer_types,omitempty"` - // List ledger entries that are associated with a specific transfer ID. If provided, all other filters are ignored - TransferId *string `protobuf:"bytes,6,opt,name=transfer_id,json=transferId,proto3,oneof" json:"transfer_id,omitempty"` + // Page of positions data and corresponding page information. + Positions *PositionConnection `protobuf:"bytes,1,opt,name=positions,proto3" json:"positions,omitempty"` } -func (x *LedgerEntryFilter) Reset() { - *x = LedgerEntryFilter{} +func (x *ListPositionsResponse) Reset() { + *x = ListPositionsResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3352,13 +3330,13 @@ func (x *LedgerEntryFilter) Reset() { } } -func (x *LedgerEntryFilter) String() string { +func (x *ListPositionsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LedgerEntryFilter) ProtoMessage() {} +func (*ListPositionsResponse) ProtoMessage() {} -func (x *LedgerEntryFilter) ProtoReflect() protoreflect.Message { +func (x *ListPositionsResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3370,83 +3348,32 @@ func (x *LedgerEntryFilter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LedgerEntryFilter.ProtoReflect.Descriptor instead. -func (*LedgerEntryFilter) Descriptor() ([]byte, []int) { +// Deprecated: Use ListPositionsResponse.ProtoReflect.Descriptor instead. +func (*ListPositionsResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{46} } -func (x *LedgerEntryFilter) GetCloseOnAccountFilters() bool { - if x != nil { - return x.CloseOnAccountFilters - } - return false -} - -func (x *LedgerEntryFilter) GetFromAccountFilter() *AccountFilter { - if x != nil { - return x.FromAccountFilter - } - return nil -} - -func (x *LedgerEntryFilter) GetToAccountFilter() *AccountFilter { - if x != nil { - return x.ToAccountFilter - } - return nil -} - -func (x *LedgerEntryFilter) GetTransferTypes() []vega.TransferType { +func (x *ListPositionsResponse) GetPositions() *PositionConnection { if x != nil { - return x.TransferTypes + return x.Positions } return nil } -func (x *LedgerEntryFilter) GetTransferId() string { - if x != nil && x.TransferId != nil { - return *x.TransferId - } - return "" -} - -// Represents an aggregated view of ledger entry data, sender and receiver accounts, -// details and balances for both sides after the transfer has been made -type AggregatedLedgerEntry struct { +// Filter to apply to the ListAllPositionsRequest +type PositionsFilter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Timestamp in Unix nanoseconds of the block in which the result is referring to. - Timestamp int64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - // Amount of ledger entries for the set of requested accounts at the time above. - Quantity string `protobuf:"bytes,3,opt,name=quantity,proto3" json:"quantity,omitempty"` - // Transfer type. - TransferType vega.TransferType `protobuf:"varint,4,opt,name=transfer_type,json=transferType,proto3,enum=vega.TransferType" json:"transfer_type,omitempty"` - // Asset ID for the asset associated with the entry. - AssetId *string `protobuf:"bytes,5,opt,name=asset_id,json=assetId,proto3,oneof" json:"asset_id,omitempty"` - // Type of account sent from. - FromAccountType vega.AccountType `protobuf:"varint,6,opt,name=from_account_type,json=fromAccountType,proto3,enum=vega.AccountType" json:"from_account_type,omitempty"` - // Type of account received to. - ToAccountType vega.AccountType `protobuf:"varint,7,opt,name=to_account_type,json=toAccountType,proto3,enum=vega.AccountType" json:"to_account_type,omitempty"` - // Sender's party ID. - FromAccountPartyId *string `protobuf:"bytes,8,opt,name=from_account_party_id,json=fromAccountPartyId,proto3,oneof" json:"from_account_party_id,omitempty"` - // Receiver's party ID. - ToAccountPartyId *string `protobuf:"bytes,9,opt,name=to_account_party_id,json=toAccountPartyId,proto3,oneof" json:"to_account_party_id,omitempty"` - // Sender market ID. - FromAccountMarketId *string `protobuf:"bytes,10,opt,name=from_account_market_id,json=fromAccountMarketId,proto3,oneof" json:"from_account_market_id,omitempty"` - // Receiver market ID. - ToAccountMarketId *string `protobuf:"bytes,11,opt,name=to_account_market_id,json=toAccountMarketId,proto3,oneof" json:"to_account_market_id,omitempty"` - // Sender account balance after the transfer. - FromAccountBalance string `protobuf:"bytes,12,opt,name=from_account_balance,json=fromAccountBalance,proto3" json:"from_account_balance,omitempty"` - // Receiver account balance after the transfer. - ToAccountBalance string `protobuf:"bytes,13,opt,name=to_account_balance,json=toAccountBalance,proto3" json:"to_account_balance,omitempty"` - // Transfer ID associated with the ledger entry. - TransferId string `protobuf:"bytes,14,opt,name=transfer_id,json=transferId,proto3" json:"transfer_id,omitempty"` + // Restrict positions to those related to the given parties. + PartyIds []string `protobuf:"bytes,1,rep,name=party_ids,json=partyIds,proto3" json:"party_ids,omitempty"` + // Restrict positions to those on the given markets. + MarketIds []string `protobuf:"bytes,2,rep,name=market_ids,json=marketIds,proto3" json:"market_ids,omitempty"` } -func (x *AggregatedLedgerEntry) Reset() { - *x = AggregatedLedgerEntry{} +func (x *PositionsFilter) Reset() { + *x = PositionsFilter{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3454,13 +3381,13 @@ func (x *AggregatedLedgerEntry) Reset() { } } -func (x *AggregatedLedgerEntry) String() string { +func (x *PositionsFilter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AggregatedLedgerEntry) ProtoMessage() {} +func (*PositionsFilter) ProtoMessage() {} -func (x *AggregatedLedgerEntry) ProtoReflect() protoreflect.Message { +func (x *PositionsFilter) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -3472,139 +3399,110 @@ func (x *AggregatedLedgerEntry) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AggregatedLedgerEntry.ProtoReflect.Descriptor instead. -func (*AggregatedLedgerEntry) Descriptor() ([]byte, []int) { +// Deprecated: Use PositionsFilter.ProtoReflect.Descriptor instead. +func (*PositionsFilter) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{47} } -func (x *AggregatedLedgerEntry) GetTimestamp() int64 { +func (x *PositionsFilter) GetPartyIds() []string { if x != nil { - return x.Timestamp + return x.PartyIds } - return 0 + return nil } -func (x *AggregatedLedgerEntry) GetQuantity() string { +func (x *PositionsFilter) GetMarketIds() []string { if x != nil { - return x.Quantity + return x.MarketIds } - return "" + return nil } -func (x *AggregatedLedgerEntry) GetTransferType() vega.TransferType { - if x != nil { - return x.TransferType - } - return vega.TransferType(0) -} +// Request to list positions, given the position filter is supplied. +type ListAllPositionsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *AggregatedLedgerEntry) GetAssetId() string { - if x != nil && x.AssetId != nil { - return *x.AssetId - } - return "" + // Filter to apply to the positions. + Filter *PositionsFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"` + // Pagination controls. + Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` } -func (x *AggregatedLedgerEntry) GetFromAccountType() vega.AccountType { - if x != nil { - return x.FromAccountType +func (x *ListAllPositionsRequest) Reset() { + *x = ListAllPositionsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return vega.AccountType(0) } -func (x *AggregatedLedgerEntry) GetToAccountType() vega.AccountType { - if x != nil { - return x.ToAccountType - } - return vega.AccountType(0) +func (x *ListAllPositionsRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *AggregatedLedgerEntry) GetFromAccountPartyId() string { - if x != nil && x.FromAccountPartyId != nil { - return *x.FromAccountPartyId - } - return "" -} +func (*ListAllPositionsRequest) ProtoMessage() {} -func (x *AggregatedLedgerEntry) GetToAccountPartyId() string { - if x != nil && x.ToAccountPartyId != nil { - return *x.ToAccountPartyId +func (x *ListAllPositionsRequest) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[48] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (x *AggregatedLedgerEntry) GetFromAccountMarketId() string { - if x != nil && x.FromAccountMarketId != nil { - return *x.FromAccountMarketId - } - return "" +// Deprecated: Use ListAllPositionsRequest.ProtoReflect.Descriptor instead. +func (*ListAllPositionsRequest) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{48} } -func (x *AggregatedLedgerEntry) GetToAccountMarketId() string { - if x != nil && x.ToAccountMarketId != nil { - return *x.ToAccountMarketId +func (x *ListAllPositionsRequest) GetFilter() *PositionsFilter { + if x != nil { + return x.Filter } - return "" + return nil } -func (x *AggregatedLedgerEntry) GetFromAccountBalance() string { +func (x *ListAllPositionsRequest) GetPagination() *Pagination { if x != nil { - return x.FromAccountBalance + return x.Pagination } - return "" + return nil } -func (x *AggregatedLedgerEntry) GetToAccountBalance() string { - if x != nil { - return x.ToAccountBalance - } - return "" -} - -func (x *AggregatedLedgerEntry) GetTransferId() string { - if x != nil { - return x.TransferId - } - return "" -} - -// Request that is sent when listing ledger entries. -type ListLedgerEntriesRequest struct { +// Response to query for listing of positions, given the filter is supplied +type ListAllPositionsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Ledger entry filter that contains all values and conditions according to which - // the listing of ledger entries is filtered.You must provide at least one party in - // 'from' account filter, or 'to' account filter. - Filter *LedgerEntryFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"` - // Optional pagination control. - Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` - // Date range for which to list ledger entries. - // If not set, the date range is restricted to the last 5 days. - // If a start and end date is provided, but the range is more than 5 days, the end date will be restricted to 5 days from the start. - // If a start date is provided, but no end date, the end date will be set to 5 days from the start. - // If an end date is provided, but no start date, the start date will be set to 5 days before the end. - DateRange *DateRange `protobuf:"bytes,3,opt,name=date_range,json=dateRange,proto3,oneof" json:"date_range,omitempty"` + // Page of positions data and corresponding page information. + Positions *PositionConnection `protobuf:"bytes,1,opt,name=positions,proto3" json:"positions,omitempty"` } -func (x *ListLedgerEntriesRequest) Reset() { - *x = ListLedgerEntriesRequest{} +func (x *ListAllPositionsResponse) Reset() { + *x = ListAllPositionsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[48] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListLedgerEntriesRequest) String() string { +func (x *ListAllPositionsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListLedgerEntriesRequest) ProtoMessage() {} +func (*ListAllPositionsResponse) ProtoMessage() {} -func (x *ListLedgerEntriesRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[48] +func (x *ListAllPositionsResponse) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3615,63 +3513,47 @@ func (x *ListLedgerEntriesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListLedgerEntriesRequest.ProtoReflect.Descriptor instead. -func (*ListLedgerEntriesRequest) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{48} -} - -func (x *ListLedgerEntriesRequest) GetFilter() *LedgerEntryFilter { - if x != nil { - return x.Filter - } - return nil -} - -func (x *ListLedgerEntriesRequest) GetPagination() *Pagination { - if x != nil { - return x.Pagination - } - return nil +// Deprecated: Use ListAllPositionsResponse.ProtoReflect.Descriptor instead. +func (*ListAllPositionsResponse) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{49} } -func (x *ListLedgerEntriesRequest) GetDateRange() *DateRange { +func (x *ListAllPositionsResponse) GetPositions() *PositionConnection { if x != nil { - return x.DateRange + return x.Positions } return nil } -// Request that is sent when exporting ledger entries to csv -type ExportLedgerEntriesRequest struct { +// Position data with the corresponding cursor. +type PositionEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Restrict exported ledger entries to those relating to the given party ID. - PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` - // Restrict exported ledger entries to those relating to the given asset ID. - AssetId *string `protobuf:"bytes,2,opt,name=asset_id,json=assetId,proto3,oneof" json:"asset_id,omitempty"` - // Date range to export ledger entries for. - DateRange *DateRange `protobuf:"bytes,4,opt,name=date_range,json=dateRange,proto3,oneof" json:"date_range,omitempty"` + // Position data for a party on a market. + Node *vega.Position `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *ExportLedgerEntriesRequest) Reset() { - *x = ExportLedgerEntriesRequest{} +func (x *PositionEdge) Reset() { + *x = PositionEdge{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[49] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ExportLedgerEntriesRequest) String() string { +func (x *PositionEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ExportLedgerEntriesRequest) ProtoMessage() {} +func (*PositionEdge) ProtoMessage() {} -func (x *ExportLedgerEntriesRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[49] +func (x *PositionEdge) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3682,59 +3564,54 @@ func (x *ExportLedgerEntriesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ExportLedgerEntriesRequest.ProtoReflect.Descriptor instead. -func (*ExportLedgerEntriesRequest) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{49} +// Deprecated: Use PositionEdge.ProtoReflect.Descriptor instead. +func (*PositionEdge) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{50} } -func (x *ExportLedgerEntriesRequest) GetPartyId() string { +func (x *PositionEdge) GetNode() *vega.Position { if x != nil { - return x.PartyId - } - return "" -} - -func (x *ExportLedgerEntriesRequest) GetAssetId() string { - if x != nil && x.AssetId != nil { - return *x.AssetId + return x.Node } - return "" + return nil } -func (x *ExportLedgerEntriesRequest) GetDateRange() *DateRange { +func (x *PositionEdge) GetCursor() string { if x != nil { - return x.DateRange + return x.Cursor } - return nil + return "" } -// Response that is received when listing ledger entries -type ListLedgerEntriesResponse struct { +// Page of positions and corresponding page information +type PositionConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of aggregated ledger entries data and corresponding page information. - LedgerEntries *AggregatedLedgerEntriesConnection `protobuf:"bytes,1,opt,name=ledger_entries,json=ledgerEntries,proto3" json:"ledger_entries,omitempty"` + // Page of positions data and their corresponding cursors. + Edges []*PositionEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *ListLedgerEntriesResponse) Reset() { - *x = ListLedgerEntriesResponse{} +func (x *PositionConnection) Reset() { + *x = PositionConnection{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[50] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListLedgerEntriesResponse) String() string { +func (x *PositionConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListLedgerEntriesResponse) ProtoMessage() {} +func (*PositionConnection) ProtoMessage() {} -func (x *ListLedgerEntriesResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[50] +func (x *PositionConnection) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3745,47 +3622,54 @@ func (x *ListLedgerEntriesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListLedgerEntriesResponse.ProtoReflect.Descriptor instead. -func (*ListLedgerEntriesResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{50} +// Deprecated: Use PositionConnection.ProtoReflect.Descriptor instead. +func (*PositionConnection) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{51} } -func (x *ListLedgerEntriesResponse) GetLedgerEntries() *AggregatedLedgerEntriesConnection { +func (x *PositionConnection) GetEdges() []*PositionEdge { if x != nil { - return x.LedgerEntries + return x.Edges } return nil } -// Represents the aggregated ledger entry data with corresponding cursor for it -type AggregatedLedgerEntriesEdge struct { +func (x *PositionConnection) GetPageInfo() *PageInfo { + if x != nil { + return x.PageInfo + } + return nil +} + +// Request that is used to subscribe to a stream of positions +type ObservePositionsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // 'AggregatedLedgerEntry' data. - Node *AggregatedLedgerEntry `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Restrict position updates to those related to the given parties. + PartyId *string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3,oneof" json:"party_id,omitempty"` + // Restrict position updates to those related to the given markets. + MarketId *string `protobuf:"bytes,2,opt,name=market_id,json=marketId,proto3,oneof" json:"market_id,omitempty"` } -func (x *AggregatedLedgerEntriesEdge) Reset() { - *x = AggregatedLedgerEntriesEdge{} +func (x *ObservePositionsRequest) Reset() { + *x = ObservePositionsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[51] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *AggregatedLedgerEntriesEdge) String() string { +func (x *ObservePositionsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AggregatedLedgerEntriesEdge) ProtoMessage() {} +func (*ObservePositionsRequest) ProtoMessage() {} -func (x *AggregatedLedgerEntriesEdge) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[51] +func (x *ObservePositionsRequest) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3796,54 +3680,55 @@ func (x *AggregatedLedgerEntriesEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AggregatedLedgerEntriesEdge.ProtoReflect.Descriptor instead. -func (*AggregatedLedgerEntriesEdge) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{51} +// Deprecated: Use ObservePositionsRequest.ProtoReflect.Descriptor instead. +func (*ObservePositionsRequest) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{52} } -func (x *AggregatedLedgerEntriesEdge) GetNode() *AggregatedLedgerEntry { - if x != nil { - return x.Node +func (x *ObservePositionsRequest) GetPartyId() string { + if x != nil && x.PartyId != nil { + return *x.PartyId } - return nil + return "" } -func (x *AggregatedLedgerEntriesEdge) GetCursor() string { - if x != nil { - return x.Cursor +func (x *ObservePositionsRequest) GetMarketId() string { + if x != nil && x.MarketId != nil { + return *x.MarketId } return "" } -// Page of aggregated ledger entries data and corresponding page information. -type AggregatedLedgerEntriesConnection struct { +// Response received from a positions subscription request +type ObservePositionsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of 'AggregatedLedgerEntry' data and their corresponding cursors. - Edges []*AggregatedLedgerEntriesEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + // Types that are assignable to Response: + // + // *ObservePositionsResponse_Snapshot + // *ObservePositionsResponse_Updates + Response isObservePositionsResponse_Response `protobuf_oneof:"response"` } -func (x *AggregatedLedgerEntriesConnection) Reset() { - *x = AggregatedLedgerEntriesConnection{} +func (x *ObservePositionsResponse) Reset() { + *x = ObservePositionsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[52] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *AggregatedLedgerEntriesConnection) String() string { +func (x *ObservePositionsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AggregatedLedgerEntriesConnection) ProtoMessage() {} +func (*ObservePositionsResponse) ProtoMessage() {} -func (x *AggregatedLedgerEntriesConnection) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[52] +func (x *ObservePositionsResponse) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3854,60 +3739,79 @@ func (x *AggregatedLedgerEntriesConnection) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use AggregatedLedgerEntriesConnection.ProtoReflect.Descriptor instead. -func (*AggregatedLedgerEntriesConnection) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{52} +// Deprecated: Use ObservePositionsResponse.ProtoReflect.Descriptor instead. +func (*ObservePositionsResponse) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{53} } -func (x *AggregatedLedgerEntriesConnection) GetEdges() []*AggregatedLedgerEntriesEdge { - if x != nil { - return x.Edges +func (m *ObservePositionsResponse) GetResponse() isObservePositionsResponse_Response { + if m != nil { + return m.Response } return nil } -func (x *AggregatedLedgerEntriesConnection) GetPageInfo() *PageInfo { - if x != nil { - return x.PageInfo +func (x *ObservePositionsResponse) GetSnapshot() *PositionSnapshotPage { + if x, ok := x.GetResponse().(*ObservePositionsResponse_Snapshot); ok { + return x.Snapshot } return nil } -// Request to use when querying balances changes. -type ListBalanceChangesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *ObservePositionsResponse) GetUpdates() *PositionUpdates { + if x, ok := x.GetResponse().(*ObservePositionsResponse_Updates); ok { + return x.Updates + } + return nil +} - // Limit the accounts considered according to the filter supplied. - Filter *AccountFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"` - // Pagination controls. - Pagination *Pagination `protobuf:"bytes,5,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` - // Date range over which to query. If a cursor is not provided in the pagination controls, - // the date range must be provided with a start or end date, or both. - // The date range is inclusive of the start date and exclusive of the end date. - // The date range must be no more than 1 year in duration. - // Dates before 2020-01-01 will not be accepted. - DateRange *DateRange `protobuf:"bytes,6,opt,name=date_range,json=dateRange,proto3,oneof" json:"date_range,omitempty"` +type isObservePositionsResponse_Response interface { + isObservePositionsResponse_Response() } -func (x *ListBalanceChangesRequest) Reset() { - *x = ListBalanceChangesRequest{} +type ObservePositionsResponse_Snapshot struct { + // An 'initial image' snapshot containing current positions. + Snapshot *PositionSnapshotPage `protobuf:"bytes,1,opt,name=snapshot,proto3,oneof"` +} + +type ObservePositionsResponse_Updates struct { + // List of position updates in the last block. + Updates *PositionUpdates `protobuf:"bytes,2,opt,name=updates,proto3,oneof"` +} + +func (*ObservePositionsResponse_Snapshot) isObservePositionsResponse_Response() {} + +func (*ObservePositionsResponse_Updates) isObservePositionsResponse_Response() {} + +// 'Initial image' of current positions, may be sent over multiple response messages +type PositionSnapshotPage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // List of positions data. + Positions []*vega.Position `protobuf:"bytes,1,rep,name=positions,proto3" json:"positions,omitempty"` + // Indicator if last page is reached or not. + LastPage bool `protobuf:"varint,2,opt,name=last_page,json=lastPage,proto3" json:"last_page,omitempty"` +} + +func (x *PositionSnapshotPage) Reset() { + *x = PositionSnapshotPage{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[53] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListBalanceChangesRequest) String() string { +func (x *PositionSnapshotPage) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListBalanceChangesRequest) ProtoMessage() {} +func (*PositionSnapshotPage) ProtoMessage() {} -func (x *ListBalanceChangesRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[53] +func (x *PositionSnapshotPage) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3918,59 +3822,52 @@ func (x *ListBalanceChangesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListBalanceChangesRequest.ProtoReflect.Descriptor instead. -func (*ListBalanceChangesRequest) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{53} -} - -func (x *ListBalanceChangesRequest) GetFilter() *AccountFilter { - if x != nil { - return x.Filter - } - return nil +// Deprecated: Use PositionSnapshotPage.ProtoReflect.Descriptor instead. +func (*PositionSnapshotPage) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{54} } -func (x *ListBalanceChangesRequest) GetPagination() *Pagination { +func (x *PositionSnapshotPage) GetPositions() []*vega.Position { if x != nil { - return x.Pagination + return x.Positions } return nil } -func (x *ListBalanceChangesRequest) GetDateRange() *DateRange { +func (x *PositionSnapshotPage) GetLastPage() bool { if x != nil { - return x.DateRange + return x.LastPage } - return nil + return false } -// Response that is received from querying balances changes. -type ListBalanceChangesResponse struct { +// List of position updates in the last block +type PositionUpdates struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of aggregated balances data and corresponding page information. - Balances *AggregatedBalanceConnection `protobuf:"bytes,1,opt,name=balances,proto3" json:"balances,omitempty"` + // List of positions data. + Positions []*vega.Position `protobuf:"bytes,1,rep,name=positions,proto3" json:"positions,omitempty"` } -func (x *ListBalanceChangesResponse) Reset() { - *x = ListBalanceChangesResponse{} +func (x *PositionUpdates) Reset() { + *x = PositionUpdates{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[54] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListBalanceChangesResponse) String() string { +func (x *PositionUpdates) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListBalanceChangesResponse) ProtoMessage() {} +func (*PositionUpdates) ProtoMessage() {} -func (x *ListBalanceChangesResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[54] +func (x *PositionUpdates) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3981,50 +3878,55 @@ func (x *ListBalanceChangesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListBalanceChangesResponse.ProtoReflect.Descriptor instead. -func (*ListBalanceChangesResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{54} +// Deprecated: Use PositionUpdates.ProtoReflect.Descriptor instead. +func (*PositionUpdates) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{55} } -func (x *ListBalanceChangesResponse) GetBalances() *AggregatedBalanceConnection { +func (x *PositionUpdates) GetPositions() []*vega.Position { if x != nil { - return x.Balances + return x.Positions } return nil } -// Request that is used when querying balance history -type GetBalanceHistoryRequest struct { +// Ledger entry filter sets filters on returned set of ledger entries. +type LedgerEntryFilter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Account filter contains values that can be set in order to limit balance history data to them. - Filter *AccountFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"` - // By default the net balances of all the accounts specified by the filter are returned. - // If a list of fields is given in group_by, split out those balances by the supplied criteria. - GroupBy []AccountField `protobuf:"varint,2,rep,packed,name=group_by,json=groupBy,proto3,enum=datanode.api.v2.AccountField" json:"group_by,omitempty"` - Pagination *Pagination `protobuf:"bytes,3,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` - DateRange *DateRange `protobuf:"bytes,4,opt,name=date_range,json=dateRange,proto3,oneof" json:"date_range,omitempty"` + // Determines whether an entry must have accounts matching both the account_from_filter + // and the account_to_filter. If set to 'true', entries must have matches in both filters. + // If set to `false`, entries matching only the account_from_filter or the account_to_filter will also be included. + CloseOnAccountFilters bool `protobuf:"varint,1,opt,name=close_on_account_filters,json=closeOnAccountFilters,proto3" json:"close_on_account_filters,omitempty"` + // Used to set values for filtering sender accounts. Party must be provided in this filter or 'to' account filter, or both. + FromAccountFilter *AccountFilter `protobuf:"bytes,2,opt,name=from_account_filter,json=fromAccountFilter,proto3" json:"from_account_filter,omitempty"` + // Used to set values for filtering receiver accounts. Party must be provided in this filter or 'from' account filter, or both. + ToAccountFilter *AccountFilter `protobuf:"bytes,3,opt,name=to_account_filter,json=toAccountFilter,proto3" json:"to_account_filter,omitempty"` + // List of transfer types that is used for filtering sender and receiver accounts. + TransferTypes []vega.TransferType `protobuf:"varint,5,rep,packed,name=transfer_types,json=transferTypes,proto3,enum=vega.TransferType" json:"transfer_types,omitempty"` + // List ledger entries that are associated with a specific transfer ID. If provided, all other filters are ignored + TransferId *string `protobuf:"bytes,6,opt,name=transfer_id,json=transferId,proto3,oneof" json:"transfer_id,omitempty"` } -func (x *GetBalanceHistoryRequest) Reset() { - *x = GetBalanceHistoryRequest{} +func (x *LedgerEntryFilter) Reset() { + *x = LedgerEntryFilter{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[55] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetBalanceHistoryRequest) String() string { +func (x *LedgerEntryFilter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetBalanceHistoryRequest) ProtoMessage() {} +func (*LedgerEntryFilter) ProtoMessage() {} -func (x *GetBalanceHistoryRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[55] +func (x *LedgerEntryFilter) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4035,66 +3937,98 @@ func (x *GetBalanceHistoryRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetBalanceHistoryRequest.ProtoReflect.Descriptor instead. -func (*GetBalanceHistoryRequest) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{55} +// Deprecated: Use LedgerEntryFilter.ProtoReflect.Descriptor instead. +func (*LedgerEntryFilter) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{56} } -func (x *GetBalanceHistoryRequest) GetFilter() *AccountFilter { +func (x *LedgerEntryFilter) GetCloseOnAccountFilters() bool { if x != nil { - return x.Filter + return x.CloseOnAccountFilters } - return nil + return false } -func (x *GetBalanceHistoryRequest) GetGroupBy() []AccountField { +func (x *LedgerEntryFilter) GetFromAccountFilter() *AccountFilter { if x != nil { - return x.GroupBy + return x.FromAccountFilter } return nil } -func (x *GetBalanceHistoryRequest) GetPagination() *Pagination { +func (x *LedgerEntryFilter) GetToAccountFilter() *AccountFilter { if x != nil { - return x.Pagination + return x.ToAccountFilter } return nil } -func (x *GetBalanceHistoryRequest) GetDateRange() *DateRange { +func (x *LedgerEntryFilter) GetTransferTypes() []vega.TransferType { if x != nil { - return x.DateRange + return x.TransferTypes } return nil } -// Response that is received when querying for balance history -type GetBalanceHistoryResponse struct { +func (x *LedgerEntryFilter) GetTransferId() string { + if x != nil && x.TransferId != nil { + return *x.TransferId + } + return "" +} + +// Represents an aggregated view of ledger entry data, sender and receiver accounts, +// details and balances for both sides after the transfer has been made +type AggregatedLedgerEntry struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of aggregated balances with the corresponding page information. - Balances *AggregatedBalanceConnection `protobuf:"bytes,1,opt,name=balances,proto3" json:"balances,omitempty"` + // Timestamp in Unix nanoseconds of the block in which the result is referring to. + Timestamp int64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + // Amount of ledger entries for the set of requested accounts at the time above. + Quantity string `protobuf:"bytes,3,opt,name=quantity,proto3" json:"quantity,omitempty"` + // Transfer type. + TransferType vega.TransferType `protobuf:"varint,4,opt,name=transfer_type,json=transferType,proto3,enum=vega.TransferType" json:"transfer_type,omitempty"` + // Asset ID for the asset associated with the entry. + AssetId *string `protobuf:"bytes,5,opt,name=asset_id,json=assetId,proto3,oneof" json:"asset_id,omitempty"` + // Type of account sent from. + FromAccountType vega.AccountType `protobuf:"varint,6,opt,name=from_account_type,json=fromAccountType,proto3,enum=vega.AccountType" json:"from_account_type,omitempty"` + // Type of account received to. + ToAccountType vega.AccountType `protobuf:"varint,7,opt,name=to_account_type,json=toAccountType,proto3,enum=vega.AccountType" json:"to_account_type,omitempty"` + // Sender's party ID. + FromAccountPartyId *string `protobuf:"bytes,8,opt,name=from_account_party_id,json=fromAccountPartyId,proto3,oneof" json:"from_account_party_id,omitempty"` + // Receiver's party ID. + ToAccountPartyId *string `protobuf:"bytes,9,opt,name=to_account_party_id,json=toAccountPartyId,proto3,oneof" json:"to_account_party_id,omitempty"` + // Sender market ID. + FromAccountMarketId *string `protobuf:"bytes,10,opt,name=from_account_market_id,json=fromAccountMarketId,proto3,oneof" json:"from_account_market_id,omitempty"` + // Receiver market ID. + ToAccountMarketId *string `protobuf:"bytes,11,opt,name=to_account_market_id,json=toAccountMarketId,proto3,oneof" json:"to_account_market_id,omitempty"` + // Sender account balance after the transfer. + FromAccountBalance string `protobuf:"bytes,12,opt,name=from_account_balance,json=fromAccountBalance,proto3" json:"from_account_balance,omitempty"` + // Receiver account balance after the transfer. + ToAccountBalance string `protobuf:"bytes,13,opt,name=to_account_balance,json=toAccountBalance,proto3" json:"to_account_balance,omitempty"` + // Transfer ID associated with the ledger entry. + TransferId string `protobuf:"bytes,14,opt,name=transfer_id,json=transferId,proto3" json:"transfer_id,omitempty"` } -func (x *GetBalanceHistoryResponse) Reset() { - *x = GetBalanceHistoryResponse{} +func (x *AggregatedLedgerEntry) Reset() { + *x = AggregatedLedgerEntry{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[56] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetBalanceHistoryResponse) String() string { +func (x *AggregatedLedgerEntry) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetBalanceHistoryResponse) ProtoMessage() {} +func (*AggregatedLedgerEntry) ProtoMessage() {} -func (x *GetBalanceHistoryResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[56] +func (x *AggregatedLedgerEntry) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4105,90 +4039,124 @@ func (x *GetBalanceHistoryResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetBalanceHistoryResponse.ProtoReflect.Descriptor instead. -func (*GetBalanceHistoryResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{56} +// Deprecated: Use AggregatedLedgerEntry.ProtoReflect.Descriptor instead. +func (*AggregatedLedgerEntry) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{57} } -func (x *GetBalanceHistoryResponse) GetBalances() *AggregatedBalanceConnection { +func (x *AggregatedLedgerEntry) GetTimestamp() int64 { if x != nil { - return x.Balances + return x.Timestamp } - return nil + return 0 } -// Aggregated balance data with the corresponding cursor. -type AggregatedBalanceEdge struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Balance of the set of requested accounts. - Node *AggregatedBalance `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` +func (x *AggregatedLedgerEntry) GetQuantity() string { + if x != nil { + return x.Quantity + } + return "" } -func (x *AggregatedBalanceEdge) Reset() { - *x = AggregatedBalanceEdge{} - if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[57] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *AggregatedLedgerEntry) GetTransferType() vega.TransferType { + if x != nil { + return x.TransferType } + return vega.TransferType(0) } -func (x *AggregatedBalanceEdge) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *AggregatedLedgerEntry) GetAssetId() string { + if x != nil && x.AssetId != nil { + return *x.AssetId + } + return "" } -func (*AggregatedBalanceEdge) ProtoMessage() {} +func (x *AggregatedLedgerEntry) GetFromAccountType() vega.AccountType { + if x != nil { + return x.FromAccountType + } + return vega.AccountType(0) +} -func (x *AggregatedBalanceEdge) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[57] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *AggregatedLedgerEntry) GetToAccountType() vega.AccountType { + if x != nil { + return x.ToAccountType } - return mi.MessageOf(x) + return vega.AccountType(0) } -// Deprecated: Use AggregatedBalanceEdge.ProtoReflect.Descriptor instead. -func (*AggregatedBalanceEdge) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{57} +func (x *AggregatedLedgerEntry) GetFromAccountPartyId() string { + if x != nil && x.FromAccountPartyId != nil { + return *x.FromAccountPartyId + } + return "" } -func (x *AggregatedBalanceEdge) GetNode() *AggregatedBalance { +func (x *AggregatedLedgerEntry) GetToAccountPartyId() string { + if x != nil && x.ToAccountPartyId != nil { + return *x.ToAccountPartyId + } + return "" +} + +func (x *AggregatedLedgerEntry) GetFromAccountMarketId() string { + if x != nil && x.FromAccountMarketId != nil { + return *x.FromAccountMarketId + } + return "" +} + +func (x *AggregatedLedgerEntry) GetToAccountMarketId() string { + if x != nil && x.ToAccountMarketId != nil { + return *x.ToAccountMarketId + } + return "" +} + +func (x *AggregatedLedgerEntry) GetFromAccountBalance() string { if x != nil { - return x.Node + return x.FromAccountBalance } - return nil + return "" } -func (x *AggregatedBalanceEdge) GetCursor() string { +func (x *AggregatedLedgerEntry) GetToAccountBalance() string { if x != nil { - return x.Cursor + return x.ToAccountBalance } return "" } -// Page of aggregated balance objects and corresponding page information -type AggregatedBalanceConnection struct { +func (x *AggregatedLedgerEntry) GetTransferId() string { + if x != nil { + return x.TransferId + } + return "" +} + +// Request that is sent when listing ledger entries. +type ListLedgerEntriesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of aggregated balance data and their corresponding cursors. - Edges []*AggregatedBalanceEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + // Ledger entry filter that contains all values and conditions according to which + // the listing of ledger entries is filtered.You must provide at least one party in + // 'from' account filter, or 'to' account filter. + Filter *LedgerEntryFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"` + // Optional pagination control. + Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + // Date range for which to list ledger entries. + // If not set, the date range is restricted to the last 5 days. + // If a start and end date is provided, but the range is more than 5 days, the end date will be restricted to 5 days from the start. + // If a start date is provided, but no end date, the end date will be set to 5 days from the start. + // If an end date is provided, but no start date, the start date will be set to 5 days before the end. + DateRange *DateRange `protobuf:"bytes,3,opt,name=date_range,json=dateRange,proto3,oneof" json:"date_range,omitempty"` } -func (x *AggregatedBalanceConnection) Reset() { - *x = AggregatedBalanceConnection{} +func (x *ListLedgerEntriesRequest) Reset() { + *x = ListLedgerEntriesRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4196,13 +4164,13 @@ func (x *AggregatedBalanceConnection) Reset() { } } -func (x *AggregatedBalanceConnection) String() string { +func (x *ListLedgerEntriesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AggregatedBalanceConnection) ProtoMessage() {} +func (*ListLedgerEntriesRequest) ProtoMessage() {} -func (x *AggregatedBalanceConnection) ProtoReflect() protoreflect.Message { +func (x *ListLedgerEntriesRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4214,50 +4182,48 @@ func (x *AggregatedBalanceConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AggregatedBalanceConnection.ProtoReflect.Descriptor instead. -func (*AggregatedBalanceConnection) Descriptor() ([]byte, []int) { +// Deprecated: Use ListLedgerEntriesRequest.ProtoReflect.Descriptor instead. +func (*ListLedgerEntriesRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{58} } -func (x *AggregatedBalanceConnection) GetEdges() []*AggregatedBalanceEdge { +func (x *ListLedgerEntriesRequest) GetFilter() *LedgerEntryFilter { if x != nil { - return x.Edges + return x.Filter } return nil } -func (x *AggregatedBalanceConnection) GetPageInfo() *PageInfo { +func (x *ListLedgerEntriesRequest) GetPagination() *Pagination { if x != nil { - return x.PageInfo + return x.Pagination } return nil } -// Account filter is used to filter account data. -// -// An account is defined as a set of asset ID, type, party ID, and market ID. -// - Every account has an associated asset and type. -// - Certain account types such as the global reward pool for example, do not have an associated party. -// These are denoted by the special party ID 'network'. -// - Certain account types do not have an associated market such as the general party accounts, for example. -// These are denoted by the special market ID ” (an empty string). -type AccountFilter struct { +func (x *ListLedgerEntriesRequest) GetDateRange() *DateRange { + if x != nil { + return x.DateRange + } + return nil +} + +// Request that is sent when exporting ledger entries to csv +type ExportLedgerEntriesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Restrict accounts to those holding balances in this asset ID. - AssetId string `protobuf:"bytes,1,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty"` - // Restrict accounts to those owned by the parties in this list. Pass an empty list for no filter. - PartyIds []string `protobuf:"bytes,2,rep,name=party_ids,json=partyIds,proto3" json:"party_ids,omitempty"` - // Restrict accounts to those connected to the markets in this list. Pass an empty list for no filter. - MarketIds []string `protobuf:"bytes,3,rep,name=market_ids,json=marketIds,proto3" json:"market_ids,omitempty"` - // Restrict accounts to those connected to any of the types in this list. Pass an empty list for no filter. - AccountTypes []vega.AccountType `protobuf:"varint,4,rep,packed,name=account_types,json=accountTypes,proto3,enum=vega.AccountType" json:"account_types,omitempty"` + // Restrict exported ledger entries to those relating to the given party ID. + PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` + // Restrict exported ledger entries to those relating to the given asset ID. + AssetId *string `protobuf:"bytes,2,opt,name=asset_id,json=assetId,proto3,oneof" json:"asset_id,omitempty"` + // Date range to export ledger entries for. + DateRange *DateRange `protobuf:"bytes,4,opt,name=date_range,json=dateRange,proto3,oneof" json:"date_range,omitempty"` } -func (x *AccountFilter) Reset() { - *x = AccountFilter{} +func (x *ExportLedgerEntriesRequest) Reset() { + *x = ExportLedgerEntriesRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4265,13 +4231,13 @@ func (x *AccountFilter) Reset() { } } -func (x *AccountFilter) String() string { +func (x *ExportLedgerEntriesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AccountFilter) ProtoMessage() {} +func (*ExportLedgerEntriesRequest) ProtoMessage() {} -func (x *AccountFilter) ProtoReflect() protoreflect.Message { +func (x *ExportLedgerEntriesRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4283,62 +4249,44 @@ func (x *AccountFilter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AccountFilter.ProtoReflect.Descriptor instead. -func (*AccountFilter) Descriptor() ([]byte, []int) { +// Deprecated: Use ExportLedgerEntriesRequest.ProtoReflect.Descriptor instead. +func (*ExportLedgerEntriesRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{59} } -func (x *AccountFilter) GetAssetId() string { +func (x *ExportLedgerEntriesRequest) GetPartyId() string { if x != nil { - return x.AssetId + return x.PartyId } return "" } -func (x *AccountFilter) GetPartyIds() []string { - if x != nil { - return x.PartyIds - } - return nil -} - -func (x *AccountFilter) GetMarketIds() []string { - if x != nil { - return x.MarketIds +func (x *ExportLedgerEntriesRequest) GetAssetId() string { + if x != nil && x.AssetId != nil { + return *x.AssetId } - return nil + return "" } -func (x *AccountFilter) GetAccountTypes() []vega.AccountType { +func (x *ExportLedgerEntriesRequest) GetDateRange() *DateRange { if x != nil { - return x.AccountTypes + return x.DateRange } return nil } -// AggregatedBalance data contains the balance of the set of requested accounts combined with corresponding -// party ID, market ID and account type details -type AggregatedBalance struct { +// Response that is received when listing ledger entries +type ListLedgerEntriesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Timestamp in Unix nanoseconds of the block in which the balance exists. - Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - // Balance of the set of requested accounts at the time above. - Balance string `protobuf:"bytes,2,opt,name=balance,proto3" json:"balance,omitempty"` - // If grouping by party, the party ID. - PartyId *string `protobuf:"bytes,4,opt,name=party_id,json=partyId,proto3,oneof" json:"party_id,omitempty"` - // If grouping by asset, the asset ID. - AssetId *string `protobuf:"bytes,5,opt,name=asset_id,json=assetId,proto3,oneof" json:"asset_id,omitempty"` - // If grouping by market, the market ID - MarketId *string `protobuf:"bytes,6,opt,name=market_id,json=marketId,proto3,oneof" json:"market_id,omitempty"` - // If grouping by account type, the account type. - AccountType *vega.AccountType `protobuf:"varint,7,opt,name=account_type,json=accountType,proto3,enum=vega.AccountType,oneof" json:"account_type,omitempty"` + // Page of aggregated ledger entries data and corresponding page information. + LedgerEntries *AggregatedLedgerEntriesConnection `protobuf:"bytes,1,opt,name=ledger_entries,json=ledgerEntries,proto3" json:"ledger_entries,omitempty"` } -func (x *AggregatedBalance) Reset() { - *x = AggregatedBalance{} +func (x *ListLedgerEntriesResponse) Reset() { + *x = ListLedgerEntriesResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4346,13 +4294,13 @@ func (x *AggregatedBalance) Reset() { } } -func (x *AggregatedBalance) String() string { +func (x *ListLedgerEntriesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AggregatedBalance) ProtoMessage() {} +func (*ListLedgerEntriesResponse) ProtoMessage() {} -func (x *AggregatedBalance) ProtoReflect() protoreflect.Message { +func (x *ListLedgerEntriesResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4364,65 +4312,32 @@ func (x *AggregatedBalance) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AggregatedBalance.ProtoReflect.Descriptor instead. -func (*AggregatedBalance) Descriptor() ([]byte, []int) { +// Deprecated: Use ListLedgerEntriesResponse.ProtoReflect.Descriptor instead. +func (*ListLedgerEntriesResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{60} } -func (x *AggregatedBalance) GetTimestamp() int64 { +func (x *ListLedgerEntriesResponse) GetLedgerEntries() *AggregatedLedgerEntriesConnection { if x != nil { - return x.Timestamp + return x.LedgerEntries } - return 0 + return nil } -func (x *AggregatedBalance) GetBalance() string { - if x != nil { - return x.Balance - } - return "" -} +// Represents the aggregated ledger entry data with corresponding cursor for it +type AggregatedLedgerEntriesEdge struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *AggregatedBalance) GetPartyId() string { - if x != nil && x.PartyId != nil { - return *x.PartyId - } - return "" + // 'AggregatedLedgerEntry' data. + Node *AggregatedLedgerEntry `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *AggregatedBalance) GetAssetId() string { - if x != nil && x.AssetId != nil { - return *x.AssetId - } - return "" -} - -func (x *AggregatedBalance) GetMarketId() string { - if x != nil && x.MarketId != nil { - return *x.MarketId - } - return "" -} - -func (x *AggregatedBalance) GetAccountType() vega.AccountType { - if x != nil && x.AccountType != nil { - return *x.AccountType - } - return vega.AccountType(0) -} - -// Request that is sent to get market depth subscription -type ObserveMarketsDepthRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Restrict market depth data by the given market IDs. - MarketIds []string `protobuf:"bytes,1,rep,name=market_ids,json=marketIds,proto3" json:"market_ids,omitempty"` -} - -func (x *ObserveMarketsDepthRequest) Reset() { - *x = ObserveMarketsDepthRequest{} +func (x *AggregatedLedgerEntriesEdge) Reset() { + *x = AggregatedLedgerEntriesEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4430,13 +4345,13 @@ func (x *ObserveMarketsDepthRequest) Reset() { } } -func (x *ObserveMarketsDepthRequest) String() string { +func (x *AggregatedLedgerEntriesEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ObserveMarketsDepthRequest) ProtoMessage() {} +func (*AggregatedLedgerEntriesEdge) ProtoMessage() {} -func (x *ObserveMarketsDepthRequest) ProtoReflect() protoreflect.Message { +func (x *AggregatedLedgerEntriesEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4448,30 +4363,39 @@ func (x *ObserveMarketsDepthRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ObserveMarketsDepthRequest.ProtoReflect.Descriptor instead. -func (*ObserveMarketsDepthRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use AggregatedLedgerEntriesEdge.ProtoReflect.Descriptor instead. +func (*AggregatedLedgerEntriesEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{61} } -func (x *ObserveMarketsDepthRequest) GetMarketIds() []string { +func (x *AggregatedLedgerEntriesEdge) GetNode() *AggregatedLedgerEntry { if x != nil { - return x.MarketIds + return x.Node } return nil } -// Response that is received for MarketDepth subscription. -type ObserveMarketsDepthResponse struct { +func (x *AggregatedLedgerEntriesEdge) GetCursor() string { + if x != nil { + return x.Cursor + } + return "" +} + +// Page of aggregated ledger entries data and corresponding page information. +type AggregatedLedgerEntriesConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // List of market depth data. - MarketDepth []*vega.MarketDepth `protobuf:"bytes,1,rep,name=market_depth,json=marketDepth,proto3" json:"market_depth,omitempty"` + // Page of 'AggregatedLedgerEntry' data and their corresponding cursors. + Edges []*AggregatedLedgerEntriesEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *ObserveMarketsDepthResponse) Reset() { - *x = ObserveMarketsDepthResponse{} +func (x *AggregatedLedgerEntriesConnection) Reset() { + *x = AggregatedLedgerEntriesConnection{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4479,13 +4403,13 @@ func (x *ObserveMarketsDepthResponse) Reset() { } } -func (x *ObserveMarketsDepthResponse) String() string { +func (x *AggregatedLedgerEntriesConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ObserveMarketsDepthResponse) ProtoMessage() {} +func (*AggregatedLedgerEntriesConnection) ProtoMessage() {} -func (x *ObserveMarketsDepthResponse) ProtoReflect() protoreflect.Message { +func (x *AggregatedLedgerEntriesConnection) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4497,30 +4421,45 @@ func (x *ObserveMarketsDepthResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ObserveMarketsDepthResponse.ProtoReflect.Descriptor instead. -func (*ObserveMarketsDepthResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use AggregatedLedgerEntriesConnection.ProtoReflect.Descriptor instead. +func (*AggregatedLedgerEntriesConnection) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{62} } -func (x *ObserveMarketsDepthResponse) GetMarketDepth() []*vega.MarketDepth { +func (x *AggregatedLedgerEntriesConnection) GetEdges() []*AggregatedLedgerEntriesEdge { if x != nil { - return x.MarketDepth + return x.Edges } return nil } -// Request that is sent for market depth update subscription -type ObserveMarketsDepthUpdatesRequest struct { +func (x *AggregatedLedgerEntriesConnection) GetPageInfo() *PageInfo { + if x != nil { + return x.PageInfo + } + return nil +} + +// Request to use when querying balances changes. +type ListBalanceChangesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Restrict updates to market depth by the given market IDs. - MarketIds []string `protobuf:"bytes,1,rep,name=market_ids,json=marketIds,proto3" json:"market_ids,omitempty"` + // Limit the accounts considered according to the filter supplied. + Filter *AccountFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"` + // Pagination controls. + Pagination *Pagination `protobuf:"bytes,5,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + // Date range over which to query. If a cursor is not provided in the pagination controls, + // the date range must be provided with a start or end date, or both. + // The date range is inclusive of the start date and exclusive of the end date. + // The date range must be no more than 1 year in duration. + // Dates before 2020-01-01 will not be accepted. + DateRange *DateRange `protobuf:"bytes,6,opt,name=date_range,json=dateRange,proto3,oneof" json:"date_range,omitempty"` } -func (x *ObserveMarketsDepthUpdatesRequest) Reset() { - *x = ObserveMarketsDepthUpdatesRequest{} +func (x *ListBalanceChangesRequest) Reset() { + *x = ListBalanceChangesRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4528,13 +4467,13 @@ func (x *ObserveMarketsDepthUpdatesRequest) Reset() { } } -func (x *ObserveMarketsDepthUpdatesRequest) String() string { +func (x *ListBalanceChangesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ObserveMarketsDepthUpdatesRequest) ProtoMessage() {} +func (*ListBalanceChangesRequest) ProtoMessage() {} -func (x *ObserveMarketsDepthUpdatesRequest) ProtoReflect() protoreflect.Message { +func (x *ListBalanceChangesRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4546,30 +4485,44 @@ func (x *ObserveMarketsDepthUpdatesRequest) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use ObserveMarketsDepthUpdatesRequest.ProtoReflect.Descriptor instead. -func (*ObserveMarketsDepthUpdatesRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListBalanceChangesRequest.ProtoReflect.Descriptor instead. +func (*ListBalanceChangesRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{63} } -func (x *ObserveMarketsDepthUpdatesRequest) GetMarketIds() []string { +func (x *ListBalanceChangesRequest) GetFilter() *AccountFilter { if x != nil { - return x.MarketIds + return x.Filter } return nil } -// Response that is received for market depth update subscription -type ObserveMarketsDepthUpdatesResponse struct { +func (x *ListBalanceChangesRequest) GetPagination() *Pagination { + if x != nil { + return x.Pagination + } + return nil +} + +func (x *ListBalanceChangesRequest) GetDateRange() *DateRange { + if x != nil { + return x.DateRange + } + return nil +} + +// Response that is received from querying balances changes. +type ListBalanceChangesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // List of market depth update data. - Update []*vega.MarketDepthUpdate `protobuf:"bytes,1,rep,name=update,proto3" json:"update,omitempty"` + // Page of aggregated balances data and corresponding page information. + Balances *AggregatedBalanceConnection `protobuf:"bytes,1,opt,name=balances,proto3" json:"balances,omitempty"` } -func (x *ObserveMarketsDepthUpdatesResponse) Reset() { - *x = ObserveMarketsDepthUpdatesResponse{} +func (x *ListBalanceChangesResponse) Reset() { + *x = ListBalanceChangesResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4577,13 +4530,13 @@ func (x *ObserveMarketsDepthUpdatesResponse) Reset() { } } -func (x *ObserveMarketsDepthUpdatesResponse) String() string { +func (x *ListBalanceChangesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ObserveMarketsDepthUpdatesResponse) ProtoMessage() {} +func (*ListBalanceChangesResponse) ProtoMessage() {} -func (x *ObserveMarketsDepthUpdatesResponse) ProtoReflect() protoreflect.Message { +func (x *ListBalanceChangesResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4595,30 +4548,35 @@ func (x *ObserveMarketsDepthUpdatesResponse) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use ObserveMarketsDepthUpdatesResponse.ProtoReflect.Descriptor instead. -func (*ObserveMarketsDepthUpdatesResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListBalanceChangesResponse.ProtoReflect.Descriptor instead. +func (*ListBalanceChangesResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{64} } -func (x *ObserveMarketsDepthUpdatesResponse) GetUpdate() []*vega.MarketDepthUpdate { +func (x *ListBalanceChangesResponse) GetBalances() *AggregatedBalanceConnection { if x != nil { - return x.Update + return x.Balances } return nil } -// Request that is sent for market data subscription -type ObserveMarketsDataRequest struct { +// Request that is used when querying balance history +type GetBalanceHistoryRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Restrict updates to market data by the given market IDs. - MarketIds []string `protobuf:"bytes,1,rep,name=market_ids,json=marketIds,proto3" json:"market_ids,omitempty"` + // Account filter contains values that can be set in order to limit balance history data to them. + Filter *AccountFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"` + // By default the net balances of all the accounts specified by the filter are returned. + // If a list of fields is given in group_by, split out those balances by the supplied criteria. + GroupBy []AccountField `protobuf:"varint,2,rep,packed,name=group_by,json=groupBy,proto3,enum=datanode.api.v2.AccountField" json:"group_by,omitempty"` + Pagination *Pagination `protobuf:"bytes,3,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + DateRange *DateRange `protobuf:"bytes,4,opt,name=date_range,json=dateRange,proto3,oneof" json:"date_range,omitempty"` } -func (x *ObserveMarketsDataRequest) Reset() { - *x = ObserveMarketsDataRequest{} +func (x *GetBalanceHistoryRequest) Reset() { + *x = GetBalanceHistoryRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4626,13 +4584,13 @@ func (x *ObserveMarketsDataRequest) Reset() { } } -func (x *ObserveMarketsDataRequest) String() string { +func (x *GetBalanceHistoryRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ObserveMarketsDataRequest) ProtoMessage() {} +func (*GetBalanceHistoryRequest) ProtoMessage() {} -func (x *ObserveMarketsDataRequest) ProtoReflect() protoreflect.Message { +func (x *GetBalanceHistoryRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4644,30 +4602,51 @@ func (x *ObserveMarketsDataRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ObserveMarketsDataRequest.ProtoReflect.Descriptor instead. -func (*ObserveMarketsDataRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GetBalanceHistoryRequest.ProtoReflect.Descriptor instead. +func (*GetBalanceHistoryRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{65} } -func (x *ObserveMarketsDataRequest) GetMarketIds() []string { +func (x *GetBalanceHistoryRequest) GetFilter() *AccountFilter { if x != nil { - return x.MarketIds + return x.Filter } return nil } -// Response that is received for market data subscription -type ObserveMarketsDataResponse struct { +func (x *GetBalanceHistoryRequest) GetGroupBy() []AccountField { + if x != nil { + return x.GroupBy + } + return nil +} + +func (x *GetBalanceHistoryRequest) GetPagination() *Pagination { + if x != nil { + return x.Pagination + } + return nil +} + +func (x *GetBalanceHistoryRequest) GetDateRange() *DateRange { + if x != nil { + return x.DateRange + } + return nil +} + +// Response that is received when querying for balance history +type GetBalanceHistoryResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // List of market data. - MarketData []*vega.MarketData `protobuf:"bytes,1,rep,name=market_data,json=marketData,proto3" json:"market_data,omitempty"` + // Page of aggregated balances with the corresponding page information. + Balances *AggregatedBalanceConnection `protobuf:"bytes,1,opt,name=balances,proto3" json:"balances,omitempty"` } -func (x *ObserveMarketsDataResponse) Reset() { - *x = ObserveMarketsDataResponse{} +func (x *GetBalanceHistoryResponse) Reset() { + *x = GetBalanceHistoryResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4675,13 +4654,13 @@ func (x *ObserveMarketsDataResponse) Reset() { } } -func (x *ObserveMarketsDataResponse) String() string { +func (x *GetBalanceHistoryResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ObserveMarketsDataResponse) ProtoMessage() {} +func (*GetBalanceHistoryResponse) ProtoMessage() {} -func (x *ObserveMarketsDataResponse) ProtoReflect() protoreflect.Message { +func (x *GetBalanceHistoryResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4693,32 +4672,32 @@ func (x *ObserveMarketsDataResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ObserveMarketsDataResponse.ProtoReflect.Descriptor instead. -func (*ObserveMarketsDataResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GetBalanceHistoryResponse.ProtoReflect.Descriptor instead. +func (*GetBalanceHistoryResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{66} } -func (x *ObserveMarketsDataResponse) GetMarketData() []*vega.MarketData { +func (x *GetBalanceHistoryResponse) GetBalances() *AggregatedBalanceConnection { if x != nil { - return x.MarketData + return x.Balances } return nil } -// Request that is sent when requesting latest market depth data -type GetLatestMarketDepthRequest struct { +// Aggregated balance data with the corresponding cursor. +type AggregatedBalanceEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Market ID to request market depth for, required field. - MarketId string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` - // Maximum market depth. - MaxDepth *uint64 `protobuf:"varint,2,opt,name=max_depth,json=maxDepth,proto3,oneof" json:"max_depth,omitempty"` + // Balance of the set of requested accounts. + Node *AggregatedBalance `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *GetLatestMarketDepthRequest) Reset() { - *x = GetLatestMarketDepthRequest{} +func (x *AggregatedBalanceEdge) Reset() { + *x = AggregatedBalanceEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4726,13 +4705,13 @@ func (x *GetLatestMarketDepthRequest) Reset() { } } -func (x *GetLatestMarketDepthRequest) String() string { +func (x *AggregatedBalanceEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetLatestMarketDepthRequest) ProtoMessage() {} +func (*AggregatedBalanceEdge) ProtoMessage() {} -func (x *GetLatestMarketDepthRequest) ProtoReflect() protoreflect.Message { +func (x *AggregatedBalanceEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4744,45 +4723,39 @@ func (x *GetLatestMarketDepthRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetLatestMarketDepthRequest.ProtoReflect.Descriptor instead. -func (*GetLatestMarketDepthRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use AggregatedBalanceEdge.ProtoReflect.Descriptor instead. +func (*AggregatedBalanceEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{67} } -func (x *GetLatestMarketDepthRequest) GetMarketId() string { +func (x *AggregatedBalanceEdge) GetNode() *AggregatedBalance { if x != nil { - return x.MarketId + return x.Node } - return "" + return nil } -func (x *GetLatestMarketDepthRequest) GetMaxDepth() uint64 { - if x != nil && x.MaxDepth != nil { - return *x.MaxDepth +func (x *AggregatedBalanceEdge) GetCursor() string { + if x != nil { + return x.Cursor } - return 0 + return "" } -// Response that is received when latest market depth data is queried -type GetLatestMarketDepthResponse struct { +// Page of aggregated balance objects and corresponding page information +type AggregatedBalanceConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Market ID of the depth levels returned. - MarketId string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` - // Zero or more price levels for the buy side of the market depth data. - Buy []*vega.PriceLevel `protobuf:"bytes,2,rep,name=buy,proto3" json:"buy,omitempty"` - // Zero or more price levels for the sell side of the market depth data. - Sell []*vega.PriceLevel `protobuf:"bytes,3,rep,name=sell,proto3" json:"sell,omitempty"` - // Last trade recorded on Vega. - LastTrade *vega.Trade `protobuf:"bytes,4,opt,name=last_trade,json=lastTrade,proto3" json:"last_trade,omitempty"` - // Sequence number incremented after each update. - SequenceNumber uint64 `protobuf:"varint,5,opt,name=sequence_number,json=sequenceNumber,proto3" json:"sequence_number,omitempty"` + // Page of aggregated balance data and their corresponding cursors. + Edges []*AggregatedBalanceEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *GetLatestMarketDepthResponse) Reset() { - *x = GetLatestMarketDepthResponse{} +func (x *AggregatedBalanceConnection) Reset() { + *x = AggregatedBalanceConnection{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4790,13 +4763,13 @@ func (x *GetLatestMarketDepthResponse) Reset() { } } -func (x *GetLatestMarketDepthResponse) String() string { +func (x *AggregatedBalanceConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetLatestMarketDepthResponse) ProtoMessage() {} +func (*AggregatedBalanceConnection) ProtoMessage() {} -func (x *GetLatestMarketDepthResponse) ProtoReflect() protoreflect.Message { +func (x *AggregatedBalanceConnection) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4808,55 +4781,50 @@ func (x *GetLatestMarketDepthResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetLatestMarketDepthResponse.ProtoReflect.Descriptor instead. -func (*GetLatestMarketDepthResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use AggregatedBalanceConnection.ProtoReflect.Descriptor instead. +func (*AggregatedBalanceConnection) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{68} } -func (x *GetLatestMarketDepthResponse) GetMarketId() string { - if x != nil { - return x.MarketId - } - return "" -} - -func (x *GetLatestMarketDepthResponse) GetBuy() []*vega.PriceLevel { - if x != nil { - return x.Buy - } - return nil -} - -func (x *GetLatestMarketDepthResponse) GetSell() []*vega.PriceLevel { +func (x *AggregatedBalanceConnection) GetEdges() []*AggregatedBalanceEdge { if x != nil { - return x.Sell + return x.Edges } return nil } -func (x *GetLatestMarketDepthResponse) GetLastTrade() *vega.Trade { +func (x *AggregatedBalanceConnection) GetPageInfo() *PageInfo { if x != nil { - return x.LastTrade + return x.PageInfo } return nil } -func (x *GetLatestMarketDepthResponse) GetSequenceNumber() uint64 { - if x != nil { - return x.SequenceNumber - } - return 0 -} - -// Request that is sent when listing the latest market data for every market -type ListLatestMarketDataRequest struct { +// Account filter is used to filter account data. +// +// An account is defined as a set of asset ID, type, party ID, and market ID. +// - Every account has an associated asset and type. +// - Certain account types such as the global reward pool for example, do not have an associated party. +// These are denoted by the special party ID 'network'. +// - Certain account types do not have an associated market such as the general party accounts, for example. +// These are denoted by the special market ID ” (an empty string). +type AccountFilter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Restrict accounts to those holding balances in this asset ID. + AssetId string `protobuf:"bytes,1,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty"` + // Restrict accounts to those owned by the parties in this list. Pass an empty list for no filter. + PartyIds []string `protobuf:"bytes,2,rep,name=party_ids,json=partyIds,proto3" json:"party_ids,omitempty"` + // Restrict accounts to those connected to the markets in this list. Pass an empty list for no filter. + MarketIds []string `protobuf:"bytes,3,rep,name=market_ids,json=marketIds,proto3" json:"market_ids,omitempty"` + // Restrict accounts to those connected to any of the types in this list. Pass an empty list for no filter. + AccountTypes []vega.AccountType `protobuf:"varint,4,rep,packed,name=account_types,json=accountTypes,proto3,enum=vega.AccountType" json:"account_types,omitempty"` } -func (x *ListLatestMarketDataRequest) Reset() { - *x = ListLatestMarketDataRequest{} +func (x *AccountFilter) Reset() { + *x = AccountFilter{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4864,13 +4832,13 @@ func (x *ListLatestMarketDataRequest) Reset() { } } -func (x *ListLatestMarketDataRequest) String() string { +func (x *AccountFilter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListLatestMarketDataRequest) ProtoMessage() {} +func (*AccountFilter) ProtoMessage() {} -func (x *ListLatestMarketDataRequest) ProtoReflect() protoreflect.Message { +func (x *AccountFilter) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4882,22 +4850,62 @@ func (x *ListLatestMarketDataRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListLatestMarketDataRequest.ProtoReflect.Descriptor instead. -func (*ListLatestMarketDataRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use AccountFilter.ProtoReflect.Descriptor instead. +func (*AccountFilter) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{69} } -// Response that is received when listing the latest market data for every market -type ListLatestMarketDataResponse struct { +func (x *AccountFilter) GetAssetId() string { + if x != nil { + return x.AssetId + } + return "" +} + +func (x *AccountFilter) GetPartyIds() []string { + if x != nil { + return x.PartyIds + } + return nil +} + +func (x *AccountFilter) GetMarketIds() []string { + if x != nil { + return x.MarketIds + } + return nil +} + +func (x *AccountFilter) GetAccountTypes() []vega.AccountType { + if x != nil { + return x.AccountTypes + } + return nil +} + +// AggregatedBalance data contains the balance of the set of requested accounts combined with corresponding +// party ID, market ID and account type details +type AggregatedBalance struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - MarketsData []*vega.MarketData `protobuf:"bytes,1,rep,name=markets_data,json=marketsData,proto3" json:"markets_data,omitempty"` + // Timestamp in Unix nanoseconds of the block in which the balance exists. + Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + // Balance of the set of requested accounts at the time above. + Balance string `protobuf:"bytes,2,opt,name=balance,proto3" json:"balance,omitempty"` + // If grouping by party, the party ID. + PartyId *string `protobuf:"bytes,4,opt,name=party_id,json=partyId,proto3,oneof" json:"party_id,omitempty"` + // If grouping by asset, the asset ID. + AssetId *string `protobuf:"bytes,5,opt,name=asset_id,json=assetId,proto3,oneof" json:"asset_id,omitempty"` + // If grouping by market, the market ID + MarketId *string `protobuf:"bytes,6,opt,name=market_id,json=marketId,proto3,oneof" json:"market_id,omitempty"` + // If grouping by account type, the account type. + AccountType *vega.AccountType `protobuf:"varint,7,opt,name=account_type,json=accountType,proto3,enum=vega.AccountType,oneof" json:"account_type,omitempty"` } -func (x *ListLatestMarketDataResponse) Reset() { - *x = ListLatestMarketDataResponse{} +func (x *AggregatedBalance) Reset() { + *x = AggregatedBalance{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4905,13 +4913,13 @@ func (x *ListLatestMarketDataResponse) Reset() { } } -func (x *ListLatestMarketDataResponse) String() string { +func (x *AggregatedBalance) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListLatestMarketDataResponse) ProtoMessage() {} +func (*AggregatedBalance) ProtoMessage() {} -func (x *ListLatestMarketDataResponse) ProtoReflect() protoreflect.Message { +func (x *AggregatedBalance) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4923,30 +4931,65 @@ func (x *ListLatestMarketDataResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListLatestMarketDataResponse.ProtoReflect.Descriptor instead. -func (*ListLatestMarketDataResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use AggregatedBalance.ProtoReflect.Descriptor instead. +func (*AggregatedBalance) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{70} } -func (x *ListLatestMarketDataResponse) GetMarketsData() []*vega.MarketData { +func (x *AggregatedBalance) GetTimestamp() int64 { if x != nil { - return x.MarketsData + return x.Timestamp } - return nil + return 0 } -// Request that is sent when listing the latest market data for a given market -type GetLatestMarketDataRequest struct { +func (x *AggregatedBalance) GetBalance() string { + if x != nil { + return x.Balance + } + return "" +} + +func (x *AggregatedBalance) GetPartyId() string { + if x != nil && x.PartyId != nil { + return *x.PartyId + } + return "" +} + +func (x *AggregatedBalance) GetAssetId() string { + if x != nil && x.AssetId != nil { + return *x.AssetId + } + return "" +} + +func (x *AggregatedBalance) GetMarketId() string { + if x != nil && x.MarketId != nil { + return *x.MarketId + } + return "" +} + +func (x *AggregatedBalance) GetAccountType() vega.AccountType { + if x != nil && x.AccountType != nil { + return *x.AccountType + } + return vega.AccountType(0) +} + +// Request that is sent to get market depth subscription +type ObserveMarketsDepthRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Market ID to retrieve market data for. - MarketId string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` + // Restrict market depth data by the given market IDs. + MarketIds []string `protobuf:"bytes,1,rep,name=market_ids,json=marketIds,proto3" json:"market_ids,omitempty"` } -func (x *GetLatestMarketDataRequest) Reset() { - *x = GetLatestMarketDataRequest{} +func (x *ObserveMarketsDepthRequest) Reset() { + *x = ObserveMarketsDepthRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4954,13 +4997,13 @@ func (x *GetLatestMarketDataRequest) Reset() { } } -func (x *GetLatestMarketDataRequest) String() string { +func (x *ObserveMarketsDepthRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetLatestMarketDataRequest) ProtoMessage() {} +func (*ObserveMarketsDepthRequest) ProtoMessage() {} -func (x *GetLatestMarketDataRequest) ProtoReflect() protoreflect.Message { +func (x *ObserveMarketsDepthRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -4972,30 +5015,30 @@ func (x *GetLatestMarketDataRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetLatestMarketDataRequest.ProtoReflect.Descriptor instead. -func (*GetLatestMarketDataRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ObserveMarketsDepthRequest.ProtoReflect.Descriptor instead. +func (*ObserveMarketsDepthRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{71} } -func (x *GetLatestMarketDataRequest) GetMarketId() string { +func (x *ObserveMarketsDepthRequest) GetMarketIds() []string { if x != nil { - return x.MarketId + return x.MarketIds } - return "" + return nil } -// Response that is received when listing the latest market data for a given market -type GetLatestMarketDataResponse struct { +// Response that is received for MarketDepth subscription. +type ObserveMarketsDepthResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Market data that was requested. - MarketData *vega.MarketData `protobuf:"bytes,1,opt,name=market_data,json=marketData,proto3" json:"market_data,omitempty"` + // List of market depth data. + MarketDepth []*vega.MarketDepth `protobuf:"bytes,1,rep,name=market_depth,json=marketDepth,proto3" json:"market_depth,omitempty"` } -func (x *GetLatestMarketDataResponse) Reset() { - *x = GetLatestMarketDataResponse{} +func (x *ObserveMarketsDepthResponse) Reset() { + *x = ObserveMarketsDepthResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5003,13 +5046,13 @@ func (x *GetLatestMarketDataResponse) Reset() { } } -func (x *GetLatestMarketDataResponse) String() string { +func (x *ObserveMarketsDepthResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetLatestMarketDataResponse) ProtoMessage() {} +func (*ObserveMarketsDepthResponse) ProtoMessage() {} -func (x *GetLatestMarketDataResponse) ProtoReflect() protoreflect.Message { +func (x *ObserveMarketsDepthResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5021,36 +5064,30 @@ func (x *GetLatestMarketDataResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetLatestMarketDataResponse.ProtoReflect.Descriptor instead. -func (*GetLatestMarketDataResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ObserveMarketsDepthResponse.ProtoReflect.Descriptor instead. +func (*ObserveMarketsDepthResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{72} } -func (x *GetLatestMarketDataResponse) GetMarketData() *vega.MarketData { +func (x *ObserveMarketsDepthResponse) GetMarketDepth() []*vega.MarketDepth { if x != nil { - return x.MarketData + return x.MarketDepth } return nil } -// Request that is sent for getting Market Data History -type GetMarketDataHistoryByIDRequest struct { +// Request that is sent for market depth update subscription +type ObserveMarketsDepthUpdatesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Market ID to request data history for. - MarketId string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` - // Timestamp in Unix nanoseconds indicating the start of the date range. - StartTimestamp *int64 `protobuf:"varint,2,opt,name=start_timestamp,json=startTimestamp,proto3,oneof" json:"start_timestamp,omitempty"` - // Timestamp in Unix nanoseconds indicating the end of the date range. - EndTimestamp *int64 `protobuf:"varint,3,opt,name=end_timestamp,json=endTimestamp,proto3,oneof" json:"end_timestamp,omitempty"` - // Pagination control. - Pagination *Pagination `protobuf:"bytes,4,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + // Restrict updates to market depth by the given market IDs. + MarketIds []string `protobuf:"bytes,1,rep,name=market_ids,json=marketIds,proto3" json:"market_ids,omitempty"` } -func (x *GetMarketDataHistoryByIDRequest) Reset() { - *x = GetMarketDataHistoryByIDRequest{} +func (x *ObserveMarketsDepthUpdatesRequest) Reset() { + *x = ObserveMarketsDepthUpdatesRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5058,13 +5095,13 @@ func (x *GetMarketDataHistoryByIDRequest) Reset() { } } -func (x *GetMarketDataHistoryByIDRequest) String() string { +func (x *ObserveMarketsDepthUpdatesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetMarketDataHistoryByIDRequest) ProtoMessage() {} +func (*ObserveMarketsDepthUpdatesRequest) ProtoMessage() {} -func (x *GetMarketDataHistoryByIDRequest) ProtoReflect() protoreflect.Message { +func (x *ObserveMarketsDepthUpdatesRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5076,51 +5113,30 @@ func (x *GetMarketDataHistoryByIDRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetMarketDataHistoryByIDRequest.ProtoReflect.Descriptor instead. -func (*GetMarketDataHistoryByIDRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ObserveMarketsDepthUpdatesRequest.ProtoReflect.Descriptor instead. +func (*ObserveMarketsDepthUpdatesRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{73} } -func (x *GetMarketDataHistoryByIDRequest) GetMarketId() string { - if x != nil { - return x.MarketId - } - return "" -} - -func (x *GetMarketDataHistoryByIDRequest) GetStartTimestamp() int64 { - if x != nil && x.StartTimestamp != nil { - return *x.StartTimestamp - } - return 0 -} - -func (x *GetMarketDataHistoryByIDRequest) GetEndTimestamp() int64 { - if x != nil && x.EndTimestamp != nil { - return *x.EndTimestamp - } - return 0 -} - -func (x *GetMarketDataHistoryByIDRequest) GetPagination() *Pagination { +func (x *ObserveMarketsDepthUpdatesRequest) GetMarketIds() []string { if x != nil { - return x.Pagination + return x.MarketIds } return nil } -// Response that is received when querying Market Data History -type GetMarketDataHistoryByIDResponse struct { +// Response that is received for market depth update subscription +type ObserveMarketsDepthUpdatesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of market data history with the corresponding page information. - MarketData *MarketDataConnection `protobuf:"bytes,1,opt,name=market_data,json=marketData,proto3" json:"market_data,omitempty"` + // List of market depth update data. + Update []*vega.MarketDepthUpdate `protobuf:"bytes,1,rep,name=update,proto3" json:"update,omitempty"` } -func (x *GetMarketDataHistoryByIDResponse) Reset() { - *x = GetMarketDataHistoryByIDResponse{} +func (x *ObserveMarketsDepthUpdatesResponse) Reset() { + *x = ObserveMarketsDepthUpdatesResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5128,13 +5144,13 @@ func (x *GetMarketDataHistoryByIDResponse) Reset() { } } -func (x *GetMarketDataHistoryByIDResponse) String() string { +func (x *ObserveMarketsDepthUpdatesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetMarketDataHistoryByIDResponse) ProtoMessage() {} +func (*ObserveMarketsDepthUpdatesResponse) ProtoMessage() {} -func (x *GetMarketDataHistoryByIDResponse) ProtoReflect() protoreflect.Message { +func (x *ObserveMarketsDepthUpdatesResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5146,32 +5162,30 @@ func (x *GetMarketDataHistoryByIDResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetMarketDataHistoryByIDResponse.ProtoReflect.Descriptor instead. -func (*GetMarketDataHistoryByIDResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ObserveMarketsDepthUpdatesResponse.ProtoReflect.Descriptor instead. +func (*ObserveMarketsDepthUpdatesResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{74} } -func (x *GetMarketDataHistoryByIDResponse) GetMarketData() *MarketDataConnection { +func (x *ObserveMarketsDepthUpdatesResponse) GetUpdate() []*vega.MarketDepthUpdate { if x != nil { - return x.MarketData + return x.Update } return nil } -// Market data with the corresponding cursor. -type MarketDataEdge struct { +// Request that is sent for market data subscription +type ObserveMarketsDataRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Data generated by a market when open. - Node *vega.MarketData `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Restrict updates to market data by the given market IDs. + MarketIds []string `protobuf:"bytes,1,rep,name=market_ids,json=marketIds,proto3" json:"market_ids,omitempty"` } -func (x *MarketDataEdge) Reset() { - *x = MarketDataEdge{} +func (x *ObserveMarketsDataRequest) Reset() { + *x = ObserveMarketsDataRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5179,13 +5193,13 @@ func (x *MarketDataEdge) Reset() { } } -func (x *MarketDataEdge) String() string { +func (x *ObserveMarketsDataRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MarketDataEdge) ProtoMessage() {} +func (*ObserveMarketsDataRequest) ProtoMessage() {} -func (x *MarketDataEdge) ProtoReflect() protoreflect.Message { +func (x *ObserveMarketsDataRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5197,39 +5211,30 @@ func (x *MarketDataEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use MarketDataEdge.ProtoReflect.Descriptor instead. -func (*MarketDataEdge) Descriptor() ([]byte, []int) { +// Deprecated: Use ObserveMarketsDataRequest.ProtoReflect.Descriptor instead. +func (*ObserveMarketsDataRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{75} } -func (x *MarketDataEdge) GetNode() *vega.MarketData { +func (x *ObserveMarketsDataRequest) GetMarketIds() []string { if x != nil { - return x.Node + return x.MarketIds } return nil } -func (x *MarketDataEdge) GetCursor() string { - if x != nil { - return x.Cursor - } - return "" -} - -// Page of market data items and corresponding page information -type MarketDataConnection struct { +// Response that is received for market data subscription +type ObserveMarketsDataResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of market data items and their corresponding cursors. - Edges []*MarketDataEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + // List of market data. + MarketData []*vega.MarketData `protobuf:"bytes,1,rep,name=market_data,json=marketData,proto3" json:"market_data,omitempty"` } -func (x *MarketDataConnection) Reset() { - *x = MarketDataConnection{} +func (x *ObserveMarketsDataResponse) Reset() { + *x = ObserveMarketsDataResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5237,13 +5242,13 @@ func (x *MarketDataConnection) Reset() { } } -func (x *MarketDataConnection) String() string { +func (x *ObserveMarketsDataResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MarketDataConnection) ProtoMessage() {} +func (*ObserveMarketsDataResponse) ProtoMessage() {} -func (x *MarketDataConnection) ProtoReflect() protoreflect.Message { +func (x *ObserveMarketsDataResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5255,58 +5260,32 @@ func (x *MarketDataConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use MarketDataConnection.ProtoReflect.Descriptor instead. -func (*MarketDataConnection) Descriptor() ([]byte, []int) { +// Deprecated: Use ObserveMarketsDataResponse.ProtoReflect.Descriptor instead. +func (*ObserveMarketsDataResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{76} } -func (x *MarketDataConnection) GetEdges() []*MarketDataEdge { - if x != nil { - return x.Edges - } - return nil -} - -func (x *MarketDataConnection) GetPageInfo() *PageInfo { +func (x *ObserveMarketsDataResponse) GetMarketData() []*vega.MarketData { if x != nil { - return x.PageInfo + return x.MarketData } return nil } -// Request that is sent to list transfers -type ListTransfersRequest struct { +// Request that is sent when requesting latest market depth data +type GetLatestMarketDepthRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Restrict transfer to those where the given public key is a sender or receiver. - Pubkey *string `protobuf:"bytes,1,opt,name=pubkey,proto3,oneof" json:"pubkey,omitempty"` - // Restrict transfers to those in the given direction from the supplied public key. - // When is_reward is true, and pubkey is set, then direction MUST be TRANSFER_DIRECTION_DIRECTION_FROM. - Direction TransferDirection `protobuf:"varint,2,opt,name=direction,proto3,enum=datanode.api.v2.TransferDirection" json:"direction,omitempty"` - // Pagination controls. - Pagination *Pagination `protobuf:"bytes,3,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` - // Restrict transfers to those related to reward transfers. - IsReward *bool `protobuf:"varint,4,opt,name=is_reward,json=isReward,proto3,oneof" json:"is_reward,omitempty"` - // Epoch to filter from (included). If omitted, the range goes from the oldest epoch to the `to epoch`. - FromEpoch *uint64 `protobuf:"varint,5,opt,name=from_epoch,json=fromEpoch,proto3,oneof" json:"from_epoch,omitempty"` - // Epoch to filter to (included). If omitted, the range goes from `from epoch` to the most recent epoch. - ToEpoch *uint64 `protobuf:"varint,6,opt,name=to_epoch,json=toEpoch,proto3,oneof" json:"to_epoch,omitempty"` - // Status to filter on. - Status *v1.Transfer_Status `protobuf:"varint,7,opt,name=status,proto3,enum=vega.events.v1.Transfer_Status,oneof" json:"status,omitempty"` - // Dispatch strategy's scope to filter for. - Scope *ListTransfersRequest_Scope `protobuf:"varint,8,opt,name=scope,proto3,enum=datanode.api.v2.ListTransfersRequest_Scope,oneof" json:"scope,omitempty"` - // Game ID to filter on - GameId *string `protobuf:"bytes,9,opt,name=game_id,json=gameId,proto3,oneof" json:"game_id,omitempty"` - // Account type to filter on for transfers from account - FromAccountType *vega.AccountType `protobuf:"varint,10,opt,name=from_account_type,json=fromAccountType,proto3,enum=vega.AccountType,oneof" json:"from_account_type,omitempty"` - // Account type to filter on for transfers to account - ToAccountType *vega.AccountType `protobuf:"varint,11,opt,name=to_account_type,json=toAccountType,proto3,enum=vega.AccountType,oneof" json:"to_account_type,omitempty"` + // Market ID to request market depth for, required field. + MarketId string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` + // Maximum market depth. + MaxDepth *uint64 `protobuf:"varint,2,opt,name=max_depth,json=maxDepth,proto3,oneof" json:"max_depth,omitempty"` } -func (x *ListTransfersRequest) Reset() { - *x = ListTransfersRequest{} +func (x *GetLatestMarketDepthRequest) Reset() { + *x = GetLatestMarketDepthRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5314,13 +5293,13 @@ func (x *ListTransfersRequest) Reset() { } } -func (x *ListTransfersRequest) String() string { +func (x *GetLatestMarketDepthRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListTransfersRequest) ProtoMessage() {} +func (*GetLatestMarketDepthRequest) ProtoMessage() {} -func (x *ListTransfersRequest) ProtoReflect() protoreflect.Message { +func (x *GetLatestMarketDepthRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5332,115 +5311,134 @@ func (x *ListTransfersRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListTransfersRequest.ProtoReflect.Descriptor instead. -func (*ListTransfersRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GetLatestMarketDepthRequest.ProtoReflect.Descriptor instead. +func (*GetLatestMarketDepthRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{77} } -func (x *ListTransfersRequest) GetPubkey() string { - if x != nil && x.Pubkey != nil { - return *x.Pubkey +func (x *GetLatestMarketDepthRequest) GetMarketId() string { + if x != nil { + return x.MarketId } return "" } -func (x *ListTransfersRequest) GetDirection() TransferDirection { - if x != nil { - return x.Direction +func (x *GetLatestMarketDepthRequest) GetMaxDepth() uint64 { + if x != nil && x.MaxDepth != nil { + return *x.MaxDepth } - return TransferDirection_TRANSFER_DIRECTION_UNSPECIFIED + return 0 } -func (x *ListTransfersRequest) GetPagination() *Pagination { - if x != nil { - return x.Pagination - } - return nil +// Response that is received when latest market depth data is queried +type GetLatestMarketDepthResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Market ID of the depth levels returned. + MarketId string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` + // Zero or more price levels for the buy side of the market depth data. + Buy []*vega.PriceLevel `protobuf:"bytes,2,rep,name=buy,proto3" json:"buy,omitempty"` + // Zero or more price levels for the sell side of the market depth data. + Sell []*vega.PriceLevel `protobuf:"bytes,3,rep,name=sell,proto3" json:"sell,omitempty"` + // Last trade recorded on Vega. + LastTrade *vega.Trade `protobuf:"bytes,4,opt,name=last_trade,json=lastTrade,proto3" json:"last_trade,omitempty"` + // Sequence number incremented after each update. + SequenceNumber uint64 `protobuf:"varint,5,opt,name=sequence_number,json=sequenceNumber,proto3" json:"sequence_number,omitempty"` } -func (x *ListTransfersRequest) GetIsReward() bool { - if x != nil && x.IsReward != nil { - return *x.IsReward +func (x *GetLatestMarketDepthResponse) Reset() { + *x = GetLatestMarketDepthResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[78] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return false } -func (x *ListTransfersRequest) GetFromEpoch() uint64 { - if x != nil && x.FromEpoch != nil { - return *x.FromEpoch - } - return 0 +func (x *GetLatestMarketDepthResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *ListTransfersRequest) GetToEpoch() uint64 { - if x != nil && x.ToEpoch != nil { - return *x.ToEpoch +func (*GetLatestMarketDepthResponse) ProtoMessage() {} + +func (x *GetLatestMarketDepthResponse) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[78] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return 0 + return mi.MessageOf(x) } -func (x *ListTransfersRequest) GetStatus() v1.Transfer_Status { - if x != nil && x.Status != nil { - return *x.Status +// Deprecated: Use GetLatestMarketDepthResponse.ProtoReflect.Descriptor instead. +func (*GetLatestMarketDepthResponse) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{78} +} + +func (x *GetLatestMarketDepthResponse) GetMarketId() string { + if x != nil { + return x.MarketId } - return v1.Transfer_Status(0) + return "" } -func (x *ListTransfersRequest) GetScope() ListTransfersRequest_Scope { - if x != nil && x.Scope != nil { - return *x.Scope +func (x *GetLatestMarketDepthResponse) GetBuy() []*vega.PriceLevel { + if x != nil { + return x.Buy } - return ListTransfersRequest_SCOPE_UNSPECIFIED + return nil } -func (x *ListTransfersRequest) GetGameId() string { - if x != nil && x.GameId != nil { - return *x.GameId +func (x *GetLatestMarketDepthResponse) GetSell() []*vega.PriceLevel { + if x != nil { + return x.Sell } - return "" + return nil } -func (x *ListTransfersRequest) GetFromAccountType() vega.AccountType { - if x != nil && x.FromAccountType != nil { - return *x.FromAccountType +func (x *GetLatestMarketDepthResponse) GetLastTrade() *vega.Trade { + if x != nil { + return x.LastTrade } - return vega.AccountType(0) + return nil } -func (x *ListTransfersRequest) GetToAccountType() vega.AccountType { - if x != nil && x.ToAccountType != nil { - return *x.ToAccountType +func (x *GetLatestMarketDepthResponse) GetSequenceNumber() uint64 { + if x != nil { + return x.SequenceNumber } - return vega.AccountType(0) + return 0 } -// Response that is received when listing transfers -type ListTransfersResponse struct { +// Request that is sent when listing the latest market data for every market +type ListLatestMarketDataRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // Page of transfers data and corresponding page information. - Transfers *TransferConnection `protobuf:"bytes,1,opt,name=transfers,proto3" json:"transfers,omitempty"` } -func (x *ListTransfersResponse) Reset() { - *x = ListTransfersResponse{} +func (x *ListLatestMarketDataRequest) Reset() { + *x = ListLatestMarketDataRequest{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[78] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListTransfersResponse) String() string { +func (x *ListLatestMarketDataRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListTransfersResponse) ProtoMessage() {} +func (*ListLatestMarketDataRequest) ProtoMessage() {} -func (x *ListTransfersResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[78] +func (x *ListLatestMarketDataRequest) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[79] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5451,46 +5449,37 @@ func (x *ListTransfersResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListTransfersResponse.ProtoReflect.Descriptor instead. -func (*ListTransfersResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{78} -} - -func (x *ListTransfersResponse) GetTransfers() *TransferConnection { - if x != nil { - return x.Transfers - } - return nil +// Deprecated: Use ListLatestMarketDataRequest.ProtoReflect.Descriptor instead. +func (*ListLatestMarketDataRequest) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{79} } -type TransferNode struct { +// Response that is received when listing the latest market data for every market +type ListLatestMarketDataResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Data relating to a transfer that has been made. - Transfer *v1.Transfer `protobuf:"bytes,1,opt,name=transfer,proto3" json:"transfer,omitempty"` - // Fees paid for this transfer. - Fees []*v1.TransferFees `protobuf:"bytes,2,rep,name=fees,proto3" json:"fees,omitempty"` + MarketsData []*vega.MarketData `protobuf:"bytes,1,rep,name=markets_data,json=marketsData,proto3" json:"markets_data,omitempty"` } -func (x *TransferNode) Reset() { - *x = TransferNode{} +func (x *ListLatestMarketDataResponse) Reset() { + *x = ListLatestMarketDataResponse{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[79] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *TransferNode) String() string { +func (x *ListLatestMarketDataResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TransferNode) ProtoMessage() {} +func (*ListLatestMarketDataResponse) ProtoMessage() {} -func (x *TransferNode) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[79] +func (x *ListLatestMarketDataResponse) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5501,54 +5490,45 @@ func (x *TransferNode) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TransferNode.ProtoReflect.Descriptor instead. -func (*TransferNode) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{79} -} - -func (x *TransferNode) GetTransfer() *v1.Transfer { - if x != nil { - return x.Transfer - } - return nil +// Deprecated: Use ListLatestMarketDataResponse.ProtoReflect.Descriptor instead. +func (*ListLatestMarketDataResponse) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{80} } -func (x *TransferNode) GetFees() []*v1.TransferFees { +func (x *ListLatestMarketDataResponse) GetMarketsData() []*vega.MarketData { if x != nil { - return x.Fees + return x.MarketsData } return nil } -// Transfers data with the corresponding cursor. -type TransferEdge struct { +// Request that is sent when listing the latest market data for a given market +type GetLatestMarketDataRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Data relating to a transfer that has been made. - Node *TransferNode `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Market ID to retrieve market data for. + MarketId string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` } -func (x *TransferEdge) Reset() { - *x = TransferEdge{} +func (x *GetLatestMarketDataRequest) Reset() { + *x = GetLatestMarketDataRequest{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[80] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *TransferEdge) String() string { +func (x *GetLatestMarketDataRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TransferEdge) ProtoMessage() {} +func (*GetLatestMarketDataRequest) ProtoMessage() {} -func (x *TransferEdge) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[80] +func (x *GetLatestMarketDataRequest) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[81] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5559,54 +5539,45 @@ func (x *TransferEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TransferEdge.ProtoReflect.Descriptor instead. -func (*TransferEdge) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{80} -} - -func (x *TransferEdge) GetNode() *TransferNode { - if x != nil { - return x.Node - } - return nil +// Deprecated: Use GetLatestMarketDataRequest.ProtoReflect.Descriptor instead. +func (*GetLatestMarketDataRequest) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{81} } -func (x *TransferEdge) GetCursor() string { +func (x *GetLatestMarketDataRequest) GetMarketId() string { if x != nil { - return x.Cursor + return x.MarketId } return "" } -// Page of transfers data items and corresponding page information -type TransferConnection struct { +// Response that is received when listing the latest market data for a given market +type GetLatestMarketDataResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of transfers data and their corresponding cursors. - Edges []*TransferEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + // Market data that was requested. + MarketData *vega.MarketData `protobuf:"bytes,1,opt,name=market_data,json=marketData,proto3" json:"market_data,omitempty"` } -func (x *TransferConnection) Reset() { - *x = TransferConnection{} +func (x *GetLatestMarketDataResponse) Reset() { + *x = GetLatestMarketDataResponse{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[81] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *TransferConnection) String() string { +func (x *GetLatestMarketDataResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TransferConnection) ProtoMessage() {} +func (*GetLatestMarketDataResponse) ProtoMessage() {} -func (x *TransferConnection) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[81] +func (x *GetLatestMarketDataResponse) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[82] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5617,52 +5588,51 @@ func (x *TransferConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TransferConnection.ProtoReflect.Descriptor instead. -func (*TransferConnection) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{81} -} - -func (x *TransferConnection) GetEdges() []*TransferEdge { - if x != nil { - return x.Edges - } - return nil +// Deprecated: Use GetLatestMarketDataResponse.ProtoReflect.Descriptor instead. +func (*GetLatestMarketDataResponse) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{82} } -func (x *TransferConnection) GetPageInfo() *PageInfo { +func (x *GetLatestMarketDataResponse) GetMarketData() *vega.MarketData { if x != nil { - return x.PageInfo + return x.MarketData } return nil } -// Request that is sent for getting a transfer by ID -type GetTransferRequest struct { +// Request that is sent for getting Market Data History +type GetMarketDataHistoryByIDRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Transfer ID to request data for. - TransferId string `protobuf:"bytes,1,opt,name=transfer_id,json=transferId,proto3" json:"transfer_id,omitempty"` + // Market ID to request data history for. + MarketId string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` + // Timestamp in Unix nanoseconds indicating the start of the date range. + StartTimestamp *int64 `protobuf:"varint,2,opt,name=start_timestamp,json=startTimestamp,proto3,oneof" json:"start_timestamp,omitempty"` + // Timestamp in Unix nanoseconds indicating the end of the date range. + EndTimestamp *int64 `protobuf:"varint,3,opt,name=end_timestamp,json=endTimestamp,proto3,oneof" json:"end_timestamp,omitempty"` + // Pagination control. + Pagination *Pagination `protobuf:"bytes,4,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` } -func (x *GetTransferRequest) Reset() { - *x = GetTransferRequest{} +func (x *GetMarketDataHistoryByIDRequest) Reset() { + *x = GetMarketDataHistoryByIDRequest{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[82] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetTransferRequest) String() string { +func (x *GetMarketDataHistoryByIDRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetTransferRequest) ProtoMessage() {} +func (*GetMarketDataHistoryByIDRequest) ProtoMessage() {} -func (x *GetTransferRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[82] +func (x *GetMarketDataHistoryByIDRequest) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[83] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5673,76 +5643,51 @@ func (x *GetTransferRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetTransferRequest.ProtoReflect.Descriptor instead. -func (*GetTransferRequest) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{82} +// Deprecated: Use GetMarketDataHistoryByIDRequest.ProtoReflect.Descriptor instead. +func (*GetMarketDataHistoryByIDRequest) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{83} } -func (x *GetTransferRequest) GetTransferId() string { +func (x *GetMarketDataHistoryByIDRequest) GetMarketId() string { if x != nil { - return x.TransferId + return x.MarketId } return "" } -// Response that is received when querying transfers by ID -type GetTransferResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Transfer and its fees requested by ID. - TransferNode *TransferNode `protobuf:"bytes,1,opt,name=transfer_node,json=transferNode,proto3" json:"transfer_node,omitempty"` -} - -func (x *GetTransferResponse) Reset() { - *x = GetTransferResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[83] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *GetMarketDataHistoryByIDRequest) GetStartTimestamp() int64 { + if x != nil && x.StartTimestamp != nil { + return *x.StartTimestamp } + return 0 } -func (x *GetTransferResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetTransferResponse) ProtoMessage() {} - -func (x *GetTransferResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[83] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *GetMarketDataHistoryByIDRequest) GetEndTimestamp() int64 { + if x != nil && x.EndTimestamp != nil { + return *x.EndTimestamp } - return mi.MessageOf(x) -} - -// Deprecated: Use GetTransferResponse.ProtoReflect.Descriptor instead. -func (*GetTransferResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{83} + return 0 } -func (x *GetTransferResponse) GetTransferNode() *TransferNode { +func (x *GetMarketDataHistoryByIDRequest) GetPagination() *Pagination { if x != nil { - return x.TransferNode + return x.Pagination } return nil } -// Request that is used to query current network limits -type GetNetworkLimitsRequest struct { +// Response that is received when querying Market Data History +type GetMarketDataHistoryByIDResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Page of market data history with the corresponding page information. + MarketData *MarketDataConnection `protobuf:"bytes,1,opt,name=market_data,json=marketData,proto3" json:"market_data,omitempty"` } -func (x *GetNetworkLimitsRequest) Reset() { - *x = GetNetworkLimitsRequest{} +func (x *GetMarketDataHistoryByIDResponse) Reset() { + *x = GetMarketDataHistoryByIDResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5750,13 +5695,13 @@ func (x *GetNetworkLimitsRequest) Reset() { } } -func (x *GetNetworkLimitsRequest) String() string { +func (x *GetMarketDataHistoryByIDResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetNetworkLimitsRequest) ProtoMessage() {} +func (*GetMarketDataHistoryByIDResponse) ProtoMessage() {} -func (x *GetNetworkLimitsRequest) ProtoReflect() protoreflect.Message { +func (x *GetMarketDataHistoryByIDResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[84] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5768,23 +5713,32 @@ func (x *GetNetworkLimitsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetNetworkLimitsRequest.ProtoReflect.Descriptor instead. -func (*GetNetworkLimitsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GetMarketDataHistoryByIDResponse.ProtoReflect.Descriptor instead. +func (*GetMarketDataHistoryByIDResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{84} } -// Response received when querying the current network limits -type GetNetworkLimitsResponse struct { +func (x *GetMarketDataHistoryByIDResponse) GetMarketData() *MarketDataConnection { + if x != nil { + return x.MarketData + } + return nil +} + +// Market data with the corresponding cursor. +type MarketDataEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // List of received network limits. - Limits *vega.NetworkLimits `protobuf:"bytes,1,opt,name=limits,proto3" json:"limits,omitempty"` + // Data generated by a market when open. + Node *vega.MarketData `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *GetNetworkLimitsResponse) Reset() { - *x = GetNetworkLimitsResponse{} +func (x *MarketDataEdge) Reset() { + *x = MarketDataEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5792,13 +5746,13 @@ func (x *GetNetworkLimitsResponse) Reset() { } } -func (x *GetNetworkLimitsResponse) String() string { +func (x *MarketDataEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetNetworkLimitsResponse) ProtoMessage() {} +func (*MarketDataEdge) ProtoMessage() {} -func (x *GetNetworkLimitsResponse) ProtoReflect() protoreflect.Message { +func (x *MarketDataEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[85] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5810,30 +5764,39 @@ func (x *GetNetworkLimitsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetNetworkLimitsResponse.ProtoReflect.Descriptor instead. -func (*GetNetworkLimitsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use MarketDataEdge.ProtoReflect.Descriptor instead. +func (*MarketDataEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{85} } -func (x *GetNetworkLimitsResponse) GetLimits() *vega.NetworkLimits { +func (x *MarketDataEdge) GetNode() *vega.MarketData { if x != nil { - return x.Limits + return x.Node } return nil } -// Request that is used to fetch a list of supported intervals for the given market along with the corresponding candle ID -type ListCandleIntervalsRequest struct { +func (x *MarketDataEdge) GetCursor() string { + if x != nil { + return x.Cursor + } + return "" +} + +// Page of market data items and corresponding page information +type MarketDataConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Unique ID for the market to list candle intervals for. - MarketId string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` + // Page of market data items and their corresponding cursors. + Edges []*MarketDataEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *ListCandleIntervalsRequest) Reset() { - *x = ListCandleIntervalsRequest{} +func (x *MarketDataConnection) Reset() { + *x = MarketDataConnection{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5841,13 +5804,13 @@ func (x *ListCandleIntervalsRequest) Reset() { } } -func (x *ListCandleIntervalsRequest) String() string { +func (x *MarketDataConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListCandleIntervalsRequest) ProtoMessage() {} +func (*MarketDataConnection) ProtoMessage() {} -func (x *ListCandleIntervalsRequest) ProtoReflect() protoreflect.Message { +func (x *MarketDataConnection) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[86] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5859,32 +5822,58 @@ func (x *ListCandleIntervalsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListCandleIntervalsRequest.ProtoReflect.Descriptor instead. -func (*ListCandleIntervalsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use MarketDataConnection.ProtoReflect.Descriptor instead. +func (*MarketDataConnection) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{86} } -func (x *ListCandleIntervalsRequest) GetMarketId() string { +func (x *MarketDataConnection) GetEdges() []*MarketDataEdge { if x != nil { - return x.MarketId + return x.Edges } - return "" + return nil } -// Maps an interval for a given market to its corresponding candle ID -type IntervalToCandleId struct { +func (x *MarketDataConnection) GetPageInfo() *PageInfo { + if x != nil { + return x.PageInfo + } + return nil +} + +// Request that is sent to list transfers +type ListTransfersRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Interval for the candle. - Interval string `protobuf:"bytes,1,opt,name=interval,proto3" json:"interval,omitempty"` - // Unique ID of the candle. - CandleId string `protobuf:"bytes,2,opt,name=candle_id,json=candleId,proto3" json:"candle_id,omitempty"` + // Restrict transfer to those where the given public key is a sender or receiver. + Pubkey *string `protobuf:"bytes,1,opt,name=pubkey,proto3,oneof" json:"pubkey,omitempty"` + // Restrict transfers to those in the given direction from the supplied public key. + // When is_reward is true, and pubkey is set, then direction MUST be TRANSFER_DIRECTION_DIRECTION_FROM. + Direction TransferDirection `protobuf:"varint,2,opt,name=direction,proto3,enum=datanode.api.v2.TransferDirection" json:"direction,omitempty"` + // Pagination controls. + Pagination *Pagination `protobuf:"bytes,3,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + // Restrict transfers to those related to reward transfers. + IsReward *bool `protobuf:"varint,4,opt,name=is_reward,json=isReward,proto3,oneof" json:"is_reward,omitempty"` + // Epoch to filter from (included). If omitted, the range goes from the oldest epoch to the `to epoch`. + FromEpoch *uint64 `protobuf:"varint,5,opt,name=from_epoch,json=fromEpoch,proto3,oneof" json:"from_epoch,omitempty"` + // Epoch to filter to (included). If omitted, the range goes from `from epoch` to the most recent epoch. + ToEpoch *uint64 `protobuf:"varint,6,opt,name=to_epoch,json=toEpoch,proto3,oneof" json:"to_epoch,omitempty"` + // Status to filter on. + Status *v1.Transfer_Status `protobuf:"varint,7,opt,name=status,proto3,enum=vega.events.v1.Transfer_Status,oneof" json:"status,omitempty"` + // Dispatch strategy's scope to filter for. + Scope *ListTransfersRequest_Scope `protobuf:"varint,8,opt,name=scope,proto3,enum=datanode.api.v2.ListTransfersRequest_Scope,oneof" json:"scope,omitempty"` + // Game ID to filter on + GameId *string `protobuf:"bytes,9,opt,name=game_id,json=gameId,proto3,oneof" json:"game_id,omitempty"` + // Account type to filter on for transfers from account + FromAccountType *vega.AccountType `protobuf:"varint,10,opt,name=from_account_type,json=fromAccountType,proto3,enum=vega.AccountType,oneof" json:"from_account_type,omitempty"` + // Account type to filter on for transfers to account + ToAccountType *vega.AccountType `protobuf:"varint,11,opt,name=to_account_type,json=toAccountType,proto3,enum=vega.AccountType,oneof" json:"to_account_type,omitempty"` } -func (x *IntervalToCandleId) Reset() { - *x = IntervalToCandleId{} +func (x *ListTransfersRequest) Reset() { + *x = ListTransfersRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5892,13 +5881,13 @@ func (x *IntervalToCandleId) Reset() { } } -func (x *IntervalToCandleId) String() string { +func (x *ListTransfersRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IntervalToCandleId) ProtoMessage() {} +func (*ListTransfersRequest) ProtoMessage() {} -func (x *IntervalToCandleId) ProtoReflect() protoreflect.Message { +func (x *ListTransfersRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[87] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -5910,117 +5899,115 @@ func (x *IntervalToCandleId) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IntervalToCandleId.ProtoReflect.Descriptor instead. -func (*IntervalToCandleId) Descriptor() ([]byte, []int) { +// Deprecated: Use ListTransfersRequest.ProtoReflect.Descriptor instead. +func (*ListTransfersRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{87} } -func (x *IntervalToCandleId) GetInterval() string { - if x != nil { - return x.Interval +func (x *ListTransfersRequest) GetPubkey() string { + if x != nil && x.Pubkey != nil { + return *x.Pubkey } return "" } -func (x *IntervalToCandleId) GetCandleId() string { +func (x *ListTransfersRequest) GetDirection() TransferDirection { if x != nil { - return x.CandleId + return x.Direction } - return "" + return TransferDirection_TRANSFER_DIRECTION_UNSPECIFIED } -// List of mapped pairs `interval` -> `candle ID` for a given market -type ListCandleIntervalsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // List of the mappings. - IntervalToCandleId []*IntervalToCandleId `protobuf:"bytes,1,rep,name=interval_to_candle_id,json=intervalToCandleId,proto3" json:"interval_to_candle_id,omitempty"` +func (x *ListTransfersRequest) GetPagination() *Pagination { + if x != nil { + return x.Pagination + } + return nil } -func (x *ListCandleIntervalsResponse) Reset() { - *x = ListCandleIntervalsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[88] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *ListTransfersRequest) GetIsReward() bool { + if x != nil && x.IsReward != nil { + return *x.IsReward } + return false } -func (x *ListCandleIntervalsResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *ListTransfersRequest) GetFromEpoch() uint64 { + if x != nil && x.FromEpoch != nil { + return *x.FromEpoch + } + return 0 } -func (*ListCandleIntervalsResponse) ProtoMessage() {} - -func (x *ListCandleIntervalsResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[88] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *ListTransfersRequest) GetToEpoch() uint64 { + if x != nil && x.ToEpoch != nil { + return *x.ToEpoch } - return mi.MessageOf(x) + return 0 } -// Deprecated: Use ListCandleIntervalsResponse.ProtoReflect.Descriptor instead. -func (*ListCandleIntervalsResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{88} +func (x *ListTransfersRequest) GetStatus() v1.Transfer_Status { + if x != nil && x.Status != nil { + return *x.Status + } + return v1.Transfer_Status(0) } -func (x *ListCandleIntervalsResponse) GetIntervalToCandleId() []*IntervalToCandleId { - if x != nil { - return x.IntervalToCandleId +func (x *ListTransfersRequest) GetScope() ListTransfersRequest_Scope { + if x != nil && x.Scope != nil { + return *x.Scope } - return nil + return ListTransfersRequest_SCOPE_UNSPECIFIED } -// Represents the high, low, open, and closing prices for an interval of trading, -// referred to commonly as a candlestick or candle -type Candle struct { +func (x *ListTransfersRequest) GetGameId() string { + if x != nil && x.GameId != nil { + return *x.GameId + } + return "" +} + +func (x *ListTransfersRequest) GetFromAccountType() vega.AccountType { + if x != nil && x.FromAccountType != nil { + return *x.FromAccountType + } + return vega.AccountType(0) +} + +func (x *ListTransfersRequest) GetToAccountType() vega.AccountType { + if x != nil && x.ToAccountType != nil { + return *x.ToAccountType + } + return vega.AccountType(0) +} + +// Response that is received when listing transfers +type ListTransfersResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Timestamp in Unix nanoseconds for the point in time when the candle was initially created/opened. - Start int64 `protobuf:"varint,1,opt,name=start,proto3" json:"start,omitempty"` - // Timestamp in Unix nanoseconds for the point in time when the candle was last updated. - LastUpdate int64 `protobuf:"varint,2,opt,name=last_update,json=lastUpdate,proto3" json:"last_update,omitempty"` - // Highest price for trading during the candle interval. - High string `protobuf:"bytes,3,opt,name=high,proto3" json:"high,omitempty"` - // Lowest price for trading during the candle interval. - Low string `protobuf:"bytes,4,opt,name=low,proto3" json:"low,omitempty"` - // Open trade price. - Open string `protobuf:"bytes,5,opt,name=open,proto3" json:"open,omitempty"` - // Closing trade price. - Close string `protobuf:"bytes,6,opt,name=close,proto3" json:"close,omitempty"` - // Total trading volume during the candle interval. - Volume uint64 `protobuf:"varint,7,opt,name=volume,proto3" json:"volume,omitempty"` - // Total notional value traded during the candle interval. This value is determined by multiplying price, using market decimal places, by size, using position decimal places. - // The number of decimal places needed to convert this value to a decimal is market decimal places plus position decimal places. - Notional uint64 `protobuf:"varint,8,opt,name=notional,proto3" json:"notional,omitempty"` + // Page of transfers data and corresponding page information. + Transfers *TransferConnection `protobuf:"bytes,1,opt,name=transfers,proto3" json:"transfers,omitempty"` } -func (x *Candle) Reset() { - *x = Candle{} +func (x *ListTransfersResponse) Reset() { + *x = ListTransfersResponse{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[89] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Candle) String() string { +func (x *ListTransfersResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Candle) ProtoMessage() {} +func (*ListTransfersResponse) ProtoMessage() {} -func (x *Candle) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[89] +func (x *ListTransfersResponse) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[88] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6031,79 +6018,89 @@ func (x *Candle) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Candle.ProtoReflect.Descriptor instead. -func (*Candle) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{89} +// Deprecated: Use ListTransfersResponse.ProtoReflect.Descriptor instead. +func (*ListTransfersResponse) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{88} } -func (x *Candle) GetStart() int64 { +func (x *ListTransfersResponse) GetTransfers() *TransferConnection { if x != nil { - return x.Start + return x.Transfers } - return 0 + return nil } -func (x *Candle) GetLastUpdate() int64 { - if x != nil { - return x.LastUpdate - } - return 0 +type TransferNode struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Data relating to a transfer that has been made. + Transfer *v1.Transfer `protobuf:"bytes,1,opt,name=transfer,proto3" json:"transfer,omitempty"` + // Fees paid for this transfer. + Fees []*v1.TransferFees `protobuf:"bytes,2,rep,name=fees,proto3" json:"fees,omitempty"` } -func (x *Candle) GetHigh() string { - if x != nil { - return x.High +func (x *TransferNode) Reset() { + *x = TransferNode{} + if protoimpl.UnsafeEnabled { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[89] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *Candle) GetLow() string { - if x != nil { - return x.Low - } - return "" +func (x *TransferNode) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *Candle) GetOpen() string { - if x != nil { - return x.Open +func (*TransferNode) ProtoMessage() {} + +func (x *TransferNode) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[89] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (x *Candle) GetClose() string { - if x != nil { - return x.Close - } - return "" +// Deprecated: Use TransferNode.ProtoReflect.Descriptor instead. +func (*TransferNode) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{89} } -func (x *Candle) GetVolume() uint64 { +func (x *TransferNode) GetTransfer() *v1.Transfer { if x != nil { - return x.Volume + return x.Transfer } - return 0 + return nil } -func (x *Candle) GetNotional() uint64 { +func (x *TransferNode) GetFees() []*v1.TransferFees { if x != nil { - return x.Notional + return x.Fees } - return 0 + return nil } -// Request that is used to subscribe to a stream of candles -type ObserveCandleDataRequest struct { +// Transfers data with the corresponding cursor. +type TransferEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Unique ID for the candle. - CandleId string `protobuf:"bytes,1,opt,name=candle_id,json=candleId,proto3" json:"candle_id,omitempty"` + // Data relating to a transfer that has been made. + Node *TransferNode `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *ObserveCandleDataRequest) Reset() { - *x = ObserveCandleDataRequest{} +func (x *TransferEdge) Reset() { + *x = TransferEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6111,13 +6108,13 @@ func (x *ObserveCandleDataRequest) Reset() { } } -func (x *ObserveCandleDataRequest) String() string { +func (x *TransferEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ObserveCandleDataRequest) ProtoMessage() {} +func (*TransferEdge) ProtoMessage() {} -func (x *ObserveCandleDataRequest) ProtoReflect() protoreflect.Message { +func (x *TransferEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[90] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6129,30 +6126,39 @@ func (x *ObserveCandleDataRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ObserveCandleDataRequest.ProtoReflect.Descriptor instead. -func (*ObserveCandleDataRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use TransferEdge.ProtoReflect.Descriptor instead. +func (*TransferEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{90} } -func (x *ObserveCandleDataRequest) GetCandleId() string { +func (x *TransferEdge) GetNode() *TransferNode { if x != nil { - return x.CandleId + return x.Node + } + return nil +} + +func (x *TransferEdge) GetCursor() string { + if x != nil { + return x.Cursor } return "" } -// Response that is received when subscribing to a stream of candles -type ObserveCandleDataResponse struct { +// Page of transfers data items and corresponding page information +type TransferConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Candle data. - Candle *Candle `protobuf:"bytes,1,opt,name=candle,proto3" json:"candle,omitempty"` + // Page of transfers data and their corresponding cursors. + Edges []*TransferEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *ObserveCandleDataResponse) Reset() { - *x = ObserveCandleDataResponse{} +func (x *TransferConnection) Reset() { + *x = TransferConnection{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6160,13 +6166,13 @@ func (x *ObserveCandleDataResponse) Reset() { } } -func (x *ObserveCandleDataResponse) String() string { +func (x *TransferConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ObserveCandleDataResponse) ProtoMessage() {} +func (*TransferConnection) ProtoMessage() {} -func (x *ObserveCandleDataResponse) ProtoReflect() protoreflect.Message { +func (x *TransferConnection) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[91] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6178,36 +6184,37 @@ func (x *ObserveCandleDataResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ObserveCandleDataResponse.ProtoReflect.Descriptor instead. -func (*ObserveCandleDataResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use TransferConnection.ProtoReflect.Descriptor instead. +func (*TransferConnection) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{91} } -func (x *ObserveCandleDataResponse) GetCandle() *Candle { +func (x *TransferConnection) GetEdges() []*TransferEdge { if x != nil { - return x.Candle + return x.Edges } return nil } -// Request that is used when listing candles for a market at an interval -type ListCandleDataRequest struct { +func (x *TransferConnection) GetPageInfo() *PageInfo { + if x != nil { + return x.PageInfo + } + return nil +} + +// Request that is sent for getting a transfer by ID +type GetTransferRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Candle ID to retrieve candle data for. - CandleId string `protobuf:"bytes,1,opt,name=candle_id,json=candleId,proto3" json:"candle_id,omitempty"` - // Timestamp in Unix nanoseconds to retrieve candles from. - FromTimestamp int64 `protobuf:"varint,2,opt,name=from_timestamp,json=fromTimestamp,proto3" json:"from_timestamp,omitempty"` - // Timestamp in Unix nanoseconds to retrieve candles to. - ToTimestamp int64 `protobuf:"varint,3,opt,name=to_timestamp,json=toTimestamp,proto3" json:"to_timestamp,omitempty"` - // Pagination controls. - Pagination *Pagination `protobuf:"bytes,5,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + // Transfer ID to request data for. + TransferId string `protobuf:"bytes,1,opt,name=transfer_id,json=transferId,proto3" json:"transfer_id,omitempty"` } -func (x *ListCandleDataRequest) Reset() { - *x = ListCandleDataRequest{} +func (x *GetTransferRequest) Reset() { + *x = GetTransferRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6215,13 +6222,13 @@ func (x *ListCandleDataRequest) Reset() { } } -func (x *ListCandleDataRequest) String() string { +func (x *GetTransferRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListCandleDataRequest) ProtoMessage() {} +func (*GetTransferRequest) ProtoMessage() {} -func (x *ListCandleDataRequest) ProtoReflect() protoreflect.Message { +func (x *GetTransferRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[92] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6233,51 +6240,30 @@ func (x *ListCandleDataRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListCandleDataRequest.ProtoReflect.Descriptor instead. -func (*ListCandleDataRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GetTransferRequest.ProtoReflect.Descriptor instead. +func (*GetTransferRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{92} } -func (x *ListCandleDataRequest) GetCandleId() string { +func (x *GetTransferRequest) GetTransferId() string { if x != nil { - return x.CandleId + return x.TransferId } return "" } -func (x *ListCandleDataRequest) GetFromTimestamp() int64 { - if x != nil { - return x.FromTimestamp - } - return 0 -} - -func (x *ListCandleDataRequest) GetToTimestamp() int64 { - if x != nil { - return x.ToTimestamp - } - return 0 -} - -func (x *ListCandleDataRequest) GetPagination() *Pagination { - if x != nil { - return x.Pagination - } - return nil -} - -// Response for list of candles for a market at an interval -type ListCandleDataResponse struct { +// Response that is received when querying transfers by ID +type GetTransferResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of candle data and corresponding page information. - Candles *CandleDataConnection `protobuf:"bytes,1,opt,name=candles,proto3" json:"candles,omitempty"` + // Transfer and its fees requested by ID. + TransferNode *TransferNode `protobuf:"bytes,1,opt,name=transfer_node,json=transferNode,proto3" json:"transfer_node,omitempty"` } -func (x *ListCandleDataResponse) Reset() { - *x = ListCandleDataResponse{} +func (x *GetTransferResponse) Reset() { + *x = GetTransferResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6285,13 +6271,13 @@ func (x *ListCandleDataResponse) Reset() { } } -func (x *ListCandleDataResponse) String() string { +func (x *GetTransferResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListCandleDataResponse) ProtoMessage() {} +func (*GetTransferResponse) ProtoMessage() {} -func (x *ListCandleDataResponse) ProtoReflect() protoreflect.Message { +func (x *GetTransferResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[93] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6303,32 +6289,27 @@ func (x *ListCandleDataResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListCandleDataResponse.ProtoReflect.Descriptor instead. -func (*ListCandleDataResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GetTransferResponse.ProtoReflect.Descriptor instead. +func (*GetTransferResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{93} } -func (x *ListCandleDataResponse) GetCandles() *CandleDataConnection { +func (x *GetTransferResponse) GetTransferNode() *TransferNode { if x != nil { - return x.Candles + return x.TransferNode } return nil } -// Candle data with the corresponding cursor. -type CandleEdge struct { +// Request that is used to query current network limits +type GetNetworkLimitsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // Candlestick data, i.e. high, low, open, and closing prices for an interval of trading. - Node *Candle `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *CandleEdge) Reset() { - *x = CandleEdge{} +func (x *GetNetworkLimitsRequest) Reset() { + *x = GetNetworkLimitsRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6336,13 +6317,13 @@ func (x *CandleEdge) Reset() { } } -func (x *CandleEdge) String() string { +func (x *GetNetworkLimitsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CandleEdge) ProtoMessage() {} +func (*GetNetworkLimitsRequest) ProtoMessage() {} -func (x *CandleEdge) ProtoReflect() protoreflect.Message { +func (x *GetNetworkLimitsRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[94] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6354,39 +6335,23 @@ func (x *CandleEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CandleEdge.ProtoReflect.Descriptor instead. -func (*CandleEdge) Descriptor() ([]byte, []int) { +// Deprecated: Use GetNetworkLimitsRequest.ProtoReflect.Descriptor instead. +func (*GetNetworkLimitsRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{94} } -func (x *CandleEdge) GetNode() *Candle { - if x != nil { - return x.Node - } - return nil -} - -func (x *CandleEdge) GetCursor() string { - if x != nil { - return x.Cursor - } - return "" -} - -// Page of candles data and corresponding page information -type CandleDataConnection struct { +// Response received when querying the current network limits +type GetNetworkLimitsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of candle data items and their corresponding cursors. - Edges []*CandleEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + // List of received network limits. + Limits *vega.NetworkLimits `protobuf:"bytes,1,opt,name=limits,proto3" json:"limits,omitempty"` } -func (x *CandleDataConnection) Reset() { - *x = CandleDataConnection{} +func (x *GetNetworkLimitsResponse) Reset() { + *x = GetNetworkLimitsResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6394,13 +6359,13 @@ func (x *CandleDataConnection) Reset() { } } -func (x *CandleDataConnection) String() string { +func (x *GetNetworkLimitsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CandleDataConnection) ProtoMessage() {} +func (*GetNetworkLimitsResponse) ProtoMessage() {} -func (x *CandleDataConnection) ProtoReflect() protoreflect.Message { +func (x *GetNetworkLimitsResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[95] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6412,41 +6377,30 @@ func (x *CandleDataConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CandleDataConnection.ProtoReflect.Descriptor instead. -func (*CandleDataConnection) Descriptor() ([]byte, []int) { +// Deprecated: Use GetNetworkLimitsResponse.ProtoReflect.Descriptor instead. +func (*GetNetworkLimitsResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{95} } -func (x *CandleDataConnection) GetEdges() []*CandleEdge { - if x != nil { - return x.Edges - } - return nil -} - -func (x *CandleDataConnection) GetPageInfo() *PageInfo { +func (x *GetNetworkLimitsResponse) GetLimits() *vega.NetworkLimits { if x != nil { - return x.PageInfo + return x.Limits } return nil } -// Request that is used to list governance votes -type ListVotesRequest struct { +// Request that is used to fetch a list of supported intervals for the given market along with the corresponding candle ID +type ListCandleIntervalsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Party for which the votes are requested. - PartyId *string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3,oneof" json:"party_id,omitempty"` - // Proposal ID to list votes for. - ProposalId *string `protobuf:"bytes,2,opt,name=proposal_id,json=proposalId,proto3,oneof" json:"proposal_id,omitempty"` - // Optional pagination control. - Pagination *Pagination `protobuf:"bytes,3,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + // Unique ID for the market to list candle intervals for. + MarketId string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` } -func (x *ListVotesRequest) Reset() { - *x = ListVotesRequest{} +func (x *ListCandleIntervalsRequest) Reset() { + *x = ListCandleIntervalsRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6454,13 +6408,13 @@ func (x *ListVotesRequest) Reset() { } } -func (x *ListVotesRequest) String() string { +func (x *ListCandleIntervalsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListVotesRequest) ProtoMessage() {} +func (*ListCandleIntervalsRequest) ProtoMessage() {} -func (x *ListVotesRequest) ProtoReflect() protoreflect.Message { +func (x *ListCandleIntervalsRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[96] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6472,44 +6426,32 @@ func (x *ListVotesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListVotesRequest.ProtoReflect.Descriptor instead. -func (*ListVotesRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListCandleIntervalsRequest.ProtoReflect.Descriptor instead. +func (*ListCandleIntervalsRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{96} } -func (x *ListVotesRequest) GetPartyId() string { - if x != nil && x.PartyId != nil { - return *x.PartyId - } - return "" -} - -func (x *ListVotesRequest) GetProposalId() string { - if x != nil && x.ProposalId != nil { - return *x.ProposalId - } - return "" -} - -func (x *ListVotesRequest) GetPagination() *Pagination { +func (x *ListCandleIntervalsRequest) GetMarketId() string { if x != nil { - return x.Pagination + return x.MarketId } - return nil + return "" } -// Response that is received when listing Votes -type ListVotesResponse struct { +// Maps an interval for a given market to its corresponding candle ID +type IntervalToCandleId struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of votes data received and corresponding page information. - Votes *VoteConnection `protobuf:"bytes,1,opt,name=votes,proto3" json:"votes,omitempty"` + // Interval for the candle. + Interval string `protobuf:"bytes,1,opt,name=interval,proto3" json:"interval,omitempty"` + // Unique ID of the candle. + CandleId string `protobuf:"bytes,2,opt,name=candle_id,json=candleId,proto3" json:"candle_id,omitempty"` } -func (x *ListVotesResponse) Reset() { - *x = ListVotesResponse{} +func (x *IntervalToCandleId) Reset() { + *x = IntervalToCandleId{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6517,13 +6459,13 @@ func (x *ListVotesResponse) Reset() { } } -func (x *ListVotesResponse) String() string { +func (x *IntervalToCandleId) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListVotesResponse) ProtoMessage() {} +func (*IntervalToCandleId) ProtoMessage() {} -func (x *ListVotesResponse) ProtoReflect() protoreflect.Message { +func (x *IntervalToCandleId) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[97] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6535,32 +6477,37 @@ func (x *ListVotesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListVotesResponse.ProtoReflect.Descriptor instead. -func (*ListVotesResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use IntervalToCandleId.ProtoReflect.Descriptor instead. +func (*IntervalToCandleId) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{97} } -func (x *ListVotesResponse) GetVotes() *VoteConnection { +func (x *IntervalToCandleId) GetInterval() string { if x != nil { - return x.Votes + return x.Interval } - return nil + return "" } -// Votes data with the corresponding cursor. -type VoteEdge struct { +func (x *IntervalToCandleId) GetCandleId() string { + if x != nil { + return x.CandleId + } + return "" +} + +// List of mapped pairs `interval` -> `candle ID` for a given market +type ListCandleIntervalsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Data associated with a governance vote. - Node *vega.Vote `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // List of the mappings. + IntervalToCandleId []*IntervalToCandleId `protobuf:"bytes,1,rep,name=interval_to_candle_id,json=intervalToCandleId,proto3" json:"interval_to_candle_id,omitempty"` } -func (x *VoteEdge) Reset() { - *x = VoteEdge{} +func (x *ListCandleIntervalsResponse) Reset() { + *x = ListCandleIntervalsResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6568,13 +6515,13 @@ func (x *VoteEdge) Reset() { } } -func (x *VoteEdge) String() string { +func (x *ListCandleIntervalsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VoteEdge) ProtoMessage() {} +func (*ListCandleIntervalsResponse) ProtoMessage() {} -func (x *VoteEdge) ProtoReflect() protoreflect.Message { +func (x *ListCandleIntervalsResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[98] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6586,53 +6533,60 @@ func (x *VoteEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VoteEdge.ProtoReflect.Descriptor instead. -func (*VoteEdge) Descriptor() ([]byte, []int) { +// Deprecated: Use ListCandleIntervalsResponse.ProtoReflect.Descriptor instead. +func (*ListCandleIntervalsResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{98} } -func (x *VoteEdge) GetNode() *vega.Vote { +func (x *ListCandleIntervalsResponse) GetIntervalToCandleId() []*IntervalToCandleId { if x != nil { - return x.Node + return x.IntervalToCandleId } return nil } -func (x *VoteEdge) GetCursor() string { - if x != nil { - return x.Cursor - } - return "" -} - -// Page of vote data items and corresponding page information -type VoteConnection struct { +// Represents the high, low, open, and closing prices for an interval of trading, +// referred to commonly as a candlestick or candle +type Candle struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of vote data and their corresponding cursors. - Edges []*VoteEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` -} - -func (x *VoteConnection) Reset() { - *x = VoteConnection{} - if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[99] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *VoteConnection) String() string { - return protoimpl.X.MessageStringOf(x) + // Timestamp in Unix nanoseconds for the point in time when the candle was initially created/opened. + Start int64 `protobuf:"varint,1,opt,name=start,proto3" json:"start,omitempty"` + // Timestamp in Unix nanoseconds for the point in time when the candle was last updated. + LastUpdate int64 `protobuf:"varint,2,opt,name=last_update,json=lastUpdate,proto3" json:"last_update,omitempty"` + // Highest price for trading during the candle interval. + High string `protobuf:"bytes,3,opt,name=high,proto3" json:"high,omitempty"` + // Lowest price for trading during the candle interval. + Low string `protobuf:"bytes,4,opt,name=low,proto3" json:"low,omitempty"` + // Open trade price. + Open string `protobuf:"bytes,5,opt,name=open,proto3" json:"open,omitempty"` + // Closing trade price. + Close string `protobuf:"bytes,6,opt,name=close,proto3" json:"close,omitempty"` + // Total trading volume during the candle interval. + Volume uint64 `protobuf:"varint,7,opt,name=volume,proto3" json:"volume,omitempty"` + // Total notional value traded during the candle interval. This value is determined by multiplying price, using market decimal places, by size, using position decimal places. + // The number of decimal places needed to convert this value to a decimal is market decimal places plus position decimal places. + Notional uint64 `protobuf:"varint,8,opt,name=notional,proto3" json:"notional,omitempty"` } -func (*VoteConnection) ProtoMessage() {} +func (x *Candle) Reset() { + *x = Candle{} + if protoimpl.UnsafeEnabled { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[99] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} -func (x *VoteConnection) ProtoReflect() protoreflect.Message { +func (x *Candle) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Candle) ProtoMessage() {} + +func (x *Candle) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[99] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6644,39 +6598,79 @@ func (x *VoteConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VoteConnection.ProtoReflect.Descriptor instead. -func (*VoteConnection) Descriptor() ([]byte, []int) { +// Deprecated: Use Candle.ProtoReflect.Descriptor instead. +func (*Candle) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{99} } -func (x *VoteConnection) GetEdges() []*VoteEdge { +func (x *Candle) GetStart() int64 { if x != nil { - return x.Edges + return x.Start } - return nil + return 0 } -func (x *VoteConnection) GetPageInfo() *PageInfo { +func (x *Candle) GetLastUpdate() int64 { if x != nil { - return x.PageInfo + return x.LastUpdate } - return nil + return 0 } -// Request that is sent to subscribe to votes -type ObserveVotesRequest struct { +func (x *Candle) GetHigh() string { + if x != nil { + return x.High + } + return "" +} + +func (x *Candle) GetLow() string { + if x != nil { + return x.Low + } + return "" +} + +func (x *Candle) GetOpen() string { + if x != nil { + return x.Open + } + return "" +} + +func (x *Candle) GetClose() string { + if x != nil { + return x.Close + } + return "" +} + +func (x *Candle) GetVolume() uint64 { + if x != nil { + return x.Volume + } + return 0 +} + +func (x *Candle) GetNotional() uint64 { + if x != nil { + return x.Notional + } + return 0 +} + +// Request that is used to subscribe to a stream of candles +type ObserveCandleDataRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Restrict vote updates to those made by the given party. - PartyId *string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3,oneof" json:"party_id,omitempty"` - // Restrict vote updates to those made on the given proposal. - ProposalId *string `protobuf:"bytes,2,opt,name=proposal_id,json=proposalId,proto3,oneof" json:"proposal_id,omitempty"` + // Unique ID for the candle. + CandleId string `protobuf:"bytes,1,opt,name=candle_id,json=candleId,proto3" json:"candle_id,omitempty"` } -func (x *ObserveVotesRequest) Reset() { - *x = ObserveVotesRequest{} +func (x *ObserveCandleDataRequest) Reset() { + *x = ObserveCandleDataRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6684,13 +6678,13 @@ func (x *ObserveVotesRequest) Reset() { } } -func (x *ObserveVotesRequest) String() string { +func (x *ObserveCandleDataRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ObserveVotesRequest) ProtoMessage() {} +func (*ObserveCandleDataRequest) ProtoMessage() {} -func (x *ObserveVotesRequest) ProtoReflect() protoreflect.Message { +func (x *ObserveCandleDataRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[100] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6702,37 +6696,30 @@ func (x *ObserveVotesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ObserveVotesRequest.ProtoReflect.Descriptor instead. -func (*ObserveVotesRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ObserveCandleDataRequest.ProtoReflect.Descriptor instead. +func (*ObserveCandleDataRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{100} } -func (x *ObserveVotesRequest) GetPartyId() string { - if x != nil && x.PartyId != nil { - return *x.PartyId - } - return "" -} - -func (x *ObserveVotesRequest) GetProposalId() string { - if x != nil && x.ProposalId != nil { - return *x.ProposalId +func (x *ObserveCandleDataRequest) GetCandleId() string { + if x != nil { + return x.CandleId } return "" } -// Response that is received from votes subscription -type ObserveVotesResponse struct { +// Response that is received when subscribing to a stream of candles +type ObserveCandleDataResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Data associated with governance votes that are published to the stream. - Vote *vega.Vote `protobuf:"bytes,1,opt,name=vote,proto3" json:"vote,omitempty"` + // Candle data. + Candle *Candle `protobuf:"bytes,1,opt,name=candle,proto3" json:"candle,omitempty"` } -func (x *ObserveVotesResponse) Reset() { - *x = ObserveVotesResponse{} +func (x *ObserveCandleDataResponse) Reset() { + *x = ObserveCandleDataResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6740,13 +6727,13 @@ func (x *ObserveVotesResponse) Reset() { } } -func (x *ObserveVotesResponse) String() string { +func (x *ObserveCandleDataResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ObserveVotesResponse) ProtoMessage() {} +func (*ObserveCandleDataResponse) ProtoMessage() {} -func (x *ObserveVotesResponse) ProtoReflect() protoreflect.Message { +func (x *ObserveCandleDataResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[101] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6758,38 +6745,36 @@ func (x *ObserveVotesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ObserveVotesResponse.ProtoReflect.Descriptor instead. -func (*ObserveVotesResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ObserveCandleDataResponse.ProtoReflect.Descriptor instead. +func (*ObserveCandleDataResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{101} } -func (x *ObserveVotesResponse) GetVote() *vega.Vote { +func (x *ObserveCandleDataResponse) GetCandle() *Candle { if x != nil { - return x.Vote + return x.Candle } return nil } -// Request for adding a signature bundle to the signer list of a multisig contract for a particular validator -type ListERC20MultiSigSignerAddedBundlesRequest struct { +// Request that is used when listing candles for a market at an interval +type ListCandleDataRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Node ID of the validator for which a signature bundle is required. - NodeId string `protobuf:"bytes,1,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"` - // Ethereum address of the validator that will submit the bundle. - Submitter string `protobuf:"bytes,2,opt,name=submitter,proto3" json:"submitter,omitempty"` - // Epoch in which the bundle was generated, i.e. the epoch in which the node was promoted to consensus validator. - EpochSeq string `protobuf:"bytes,3,opt,name=epoch_seq,json=epochSeq,proto3" json:"epoch_seq,omitempty"` + // Candle ID to retrieve candle data for. + CandleId string `protobuf:"bytes,1,opt,name=candle_id,json=candleId,proto3" json:"candle_id,omitempty"` + // Timestamp in Unix nanoseconds to retrieve candles from. + FromTimestamp int64 `protobuf:"varint,2,opt,name=from_timestamp,json=fromTimestamp,proto3" json:"from_timestamp,omitempty"` + // Timestamp in Unix nanoseconds to retrieve candles to. + ToTimestamp int64 `protobuf:"varint,3,opt,name=to_timestamp,json=toTimestamp,proto3" json:"to_timestamp,omitempty"` // Pagination controls. - Pagination *Pagination `protobuf:"bytes,4,opt,name=pagination,proto3" json:"pagination,omitempty"` - // Filter signature bundles to those related to the contract on the given chain ID. - ChainId *string `protobuf:"bytes,5,opt,name=chain_id,json=chainId,proto3,oneof" json:"chain_id,omitempty"` + Pagination *Pagination `protobuf:"bytes,5,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` } -func (x *ListERC20MultiSigSignerAddedBundlesRequest) Reset() { - *x = ListERC20MultiSigSignerAddedBundlesRequest{} +func (x *ListCandleDataRequest) Reset() { + *x = ListCandleDataRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6797,13 +6782,13 @@ func (x *ListERC20MultiSigSignerAddedBundlesRequest) Reset() { } } -func (x *ListERC20MultiSigSignerAddedBundlesRequest) String() string { +func (x *ListCandleDataRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListERC20MultiSigSignerAddedBundlesRequest) ProtoMessage() {} +func (*ListCandleDataRequest) ProtoMessage() {} -func (x *ListERC20MultiSigSignerAddedBundlesRequest) ProtoReflect() protoreflect.Message { +func (x *ListCandleDataRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[102] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6815,58 +6800,51 @@ func (x *ListERC20MultiSigSignerAddedBundlesRequest) ProtoReflect() protoreflect return mi.MessageOf(x) } -// Deprecated: Use ListERC20MultiSigSignerAddedBundlesRequest.ProtoReflect.Descriptor instead. -func (*ListERC20MultiSigSignerAddedBundlesRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListCandleDataRequest.ProtoReflect.Descriptor instead. +func (*ListCandleDataRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{102} } -func (x *ListERC20MultiSigSignerAddedBundlesRequest) GetNodeId() string { +func (x *ListCandleDataRequest) GetCandleId() string { if x != nil { - return x.NodeId + return x.CandleId } return "" } -func (x *ListERC20MultiSigSignerAddedBundlesRequest) GetSubmitter() string { +func (x *ListCandleDataRequest) GetFromTimestamp() int64 { if x != nil { - return x.Submitter + return x.FromTimestamp } - return "" + return 0 } -func (x *ListERC20MultiSigSignerAddedBundlesRequest) GetEpochSeq() string { +func (x *ListCandleDataRequest) GetToTimestamp() int64 { if x != nil { - return x.EpochSeq + return x.ToTimestamp } - return "" + return 0 } -func (x *ListERC20MultiSigSignerAddedBundlesRequest) GetPagination() *Pagination { +func (x *ListCandleDataRequest) GetPagination() *Pagination { if x != nil { return x.Pagination } return nil } -func (x *ListERC20MultiSigSignerAddedBundlesRequest) GetChainId() string { - if x != nil && x.ChainId != nil { - return *x.ChainId - } - return "" -} - -// Response from adding a signature bundle to the signer list of a multisig contract for a particular validator -type ListERC20MultiSigSignerAddedBundlesResponse struct { +// Response for list of candles for a market at an interval +type ListCandleDataResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of bundles for that validator - it may have been added multiple times if removed in between - and corresponding page information. - Bundles *ERC20MultiSigSignerAddedConnection `protobuf:"bytes,1,opt,name=bundles,proto3" json:"bundles,omitempty"` + // Page of candle data and corresponding page information. + Candles *CandleDataConnection `protobuf:"bytes,1,opt,name=candles,proto3" json:"candles,omitempty"` } -func (x *ListERC20MultiSigSignerAddedBundlesResponse) Reset() { - *x = ListERC20MultiSigSignerAddedBundlesResponse{} +func (x *ListCandleDataResponse) Reset() { + *x = ListCandleDataResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6874,13 +6852,13 @@ func (x *ListERC20MultiSigSignerAddedBundlesResponse) Reset() { } } -func (x *ListERC20MultiSigSignerAddedBundlesResponse) String() string { +func (x *ListCandleDataResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListERC20MultiSigSignerAddedBundlesResponse) ProtoMessage() {} +func (*ListCandleDataResponse) ProtoMessage() {} -func (x *ListERC20MultiSigSignerAddedBundlesResponse) ProtoReflect() protoreflect.Message { +func (x *ListCandleDataResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[103] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6892,32 +6870,32 @@ func (x *ListERC20MultiSigSignerAddedBundlesResponse) ProtoReflect() protoreflec return mi.MessageOf(x) } -// Deprecated: Use ListERC20MultiSigSignerAddedBundlesResponse.ProtoReflect.Descriptor instead. -func (*ListERC20MultiSigSignerAddedBundlesResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListCandleDataResponse.ProtoReflect.Descriptor instead. +func (*ListCandleDataResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{103} } -func (x *ListERC20MultiSigSignerAddedBundlesResponse) GetBundles() *ERC20MultiSigSignerAddedConnection { +func (x *ListCandleDataResponse) GetCandles() *CandleDataConnection { if x != nil { - return x.Bundles + return x.Candles } return nil } -// Signature data that is to be added with the corresponding cursor. -type ERC20MultiSigSignerAddedEdge struct { +// Candle data with the corresponding cursor. +type CandleEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Signature data to be added. - Node *v1.ERC20MultiSigSignerAdded `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Candlestick data, i.e. high, low, open, and closing prices for an interval of trading. + Node *Candle `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` // Cursor that can be used to fetch further pages. Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *ERC20MultiSigSignerAddedEdge) Reset() { - *x = ERC20MultiSigSignerAddedEdge{} +func (x *CandleEdge) Reset() { + *x = CandleEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6925,13 +6903,13 @@ func (x *ERC20MultiSigSignerAddedEdge) Reset() { } } -func (x *ERC20MultiSigSignerAddedEdge) String() string { +func (x *CandleEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ERC20MultiSigSignerAddedEdge) ProtoMessage() {} +func (*CandleEdge) ProtoMessage() {} -func (x *ERC20MultiSigSignerAddedEdge) ProtoReflect() protoreflect.Message { +func (x *CandleEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[104] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6943,39 +6921,39 @@ func (x *ERC20MultiSigSignerAddedEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ERC20MultiSigSignerAddedEdge.ProtoReflect.Descriptor instead. -func (*ERC20MultiSigSignerAddedEdge) Descriptor() ([]byte, []int) { +// Deprecated: Use CandleEdge.ProtoReflect.Descriptor instead. +func (*CandleEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{104} } -func (x *ERC20MultiSigSignerAddedEdge) GetNode() *v1.ERC20MultiSigSignerAdded { +func (x *CandleEdge) GetNode() *Candle { if x != nil { return x.Node } return nil } -func (x *ERC20MultiSigSignerAddedEdge) GetCursor() string { +func (x *CandleEdge) GetCursor() string { if x != nil { return x.Cursor } return "" } -// Signature bundle data that is to be added with the corresponding cursor. -type ERC20MultiSigSignerAddedBundleEdge struct { +// Page of candles data and corresponding page information +type CandleDataConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Signature bundle data to be added. - Node *ERC20MultiSigSignerAddedBundle `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Page of candle data items and their corresponding cursors. + Edges []*CandleEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *ERC20MultiSigSignerAddedBundleEdge) Reset() { - *x = ERC20MultiSigSignerAddedBundleEdge{} +func (x *CandleDataConnection) Reset() { + *x = CandleDataConnection{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[105] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -6983,13 +6961,13 @@ func (x *ERC20MultiSigSignerAddedBundleEdge) Reset() { } } -func (x *ERC20MultiSigSignerAddedBundleEdge) String() string { +func (x *CandleDataConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ERC20MultiSigSignerAddedBundleEdge) ProtoMessage() {} +func (*CandleDataConnection) ProtoMessage() {} -func (x *ERC20MultiSigSignerAddedBundleEdge) ProtoReflect() protoreflect.Message { +func (x *CandleDataConnection) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[105] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7001,39 +6979,41 @@ func (x *ERC20MultiSigSignerAddedBundleEdge) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use ERC20MultiSigSignerAddedBundleEdge.ProtoReflect.Descriptor instead. -func (*ERC20MultiSigSignerAddedBundleEdge) Descriptor() ([]byte, []int) { +// Deprecated: Use CandleDataConnection.ProtoReflect.Descriptor instead. +func (*CandleDataConnection) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{105} } -func (x *ERC20MultiSigSignerAddedBundleEdge) GetNode() *ERC20MultiSigSignerAddedBundle { +func (x *CandleDataConnection) GetEdges() []*CandleEdge { if x != nil { - return x.Node + return x.Edges } return nil } -func (x *ERC20MultiSigSignerAddedBundleEdge) GetCursor() string { +func (x *CandleDataConnection) GetPageInfo() *PageInfo { if x != nil { - return x.Cursor + return x.PageInfo } - return "" + return nil } -// Page of signature data items to be added and corresponding page information -type ERC20MultiSigSignerAddedConnection struct { +// Request that is used to list governance votes +type ListVotesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of signature bundle data and their corresponding cursors. - Edges []*ERC20MultiSigSignerAddedBundleEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + // Party for which the votes are requested. + PartyId *string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3,oneof" json:"party_id,omitempty"` + // Proposal ID to list votes for. + ProposalId *string `protobuf:"bytes,2,opt,name=proposal_id,json=proposalId,proto3,oneof" json:"proposal_id,omitempty"` + // Optional pagination control. + Pagination *Pagination `protobuf:"bytes,3,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` } -func (x *ERC20MultiSigSignerAddedConnection) Reset() { - *x = ERC20MultiSigSignerAddedConnection{} +func (x *ListVotesRequest) Reset() { + *x = ListVotesRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7041,13 +7021,13 @@ func (x *ERC20MultiSigSignerAddedConnection) Reset() { } } -func (x *ERC20MultiSigSignerAddedConnection) String() string { +func (x *ListVotesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ERC20MultiSigSignerAddedConnection) ProtoMessage() {} +func (*ListVotesRequest) ProtoMessage() {} -func (x *ERC20MultiSigSignerAddedConnection) ProtoReflect() protoreflect.Message { +func (x *ListVotesRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[106] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7059,49 +7039,44 @@ func (x *ERC20MultiSigSignerAddedConnection) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use ERC20MultiSigSignerAddedConnection.ProtoReflect.Descriptor instead. -func (*ERC20MultiSigSignerAddedConnection) Descriptor() ([]byte, []int) { +// Deprecated: Use ListVotesRequest.ProtoReflect.Descriptor instead. +func (*ListVotesRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{106} } -func (x *ERC20MultiSigSignerAddedConnection) GetEdges() []*ERC20MultiSigSignerAddedBundleEdge { - if x != nil { - return x.Edges +func (x *ListVotesRequest) GetPartyId() string { + if x != nil && x.PartyId != nil { + return *x.PartyId } - return nil + return "" } -func (x *ERC20MultiSigSignerAddedConnection) GetPageInfo() *PageInfo { +func (x *ListVotesRequest) GetProposalId() string { + if x != nil && x.ProposalId != nil { + return *x.ProposalId + } + return "" +} + +func (x *ListVotesRequest) GetPagination() *Pagination { if x != nil { - return x.PageInfo + return x.Pagination } return nil } -// Signature bundle data to be added -type ERC20MultiSigSignerAddedBundle struct { +// Response that is received when listing Votes +type ListVotesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Ethereum address of the signer to be removed. - NewSigner string `protobuf:"bytes,1,opt,name=new_signer,json=newSigner,proto3" json:"new_signer,omitempty"` - // Ethereum address of the submitter. - Submitter string `protobuf:"bytes,2,opt,name=submitter,proto3" json:"submitter,omitempty"` - // Nonce used in the signing operation. - Nonce string `protobuf:"bytes,4,opt,name=nonce,proto3" json:"nonce,omitempty"` - // Unixnano timestamp for when the validator was added. - Timestamp int64 `protobuf:"varint,5,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - // Bundle of signatures from current validators to sign in the new signer. - Signatures string `protobuf:"bytes,6,opt,name=signatures,proto3" json:"signatures,omitempty"` - // Epoch in which the validator was added. - EpochSeq string `protobuf:"bytes,3,opt,name=epoch_seq,json=epochSeq,proto3" json:"epoch_seq,omitempty"` - // ID of the EVM chain this signature bundle is valid for. - ChainId string `protobuf:"bytes,7,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + // Page of votes data received and corresponding page information. + Votes *VoteConnection `protobuf:"bytes,1,opt,name=votes,proto3" json:"votes,omitempty"` } -func (x *ERC20MultiSigSignerAddedBundle) Reset() { - *x = ERC20MultiSigSignerAddedBundle{} +func (x *ListVotesResponse) Reset() { + *x = ListVotesResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[107] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7109,13 +7084,13 @@ func (x *ERC20MultiSigSignerAddedBundle) Reset() { } } -func (x *ERC20MultiSigSignerAddedBundle) String() string { +func (x *ListVotesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ERC20MultiSigSignerAddedBundle) ProtoMessage() {} +func (*ListVotesResponse) ProtoMessage() {} -func (x *ERC20MultiSigSignerAddedBundle) ProtoReflect() protoreflect.Message { +func (x *ListVotesResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[107] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7127,80 +7102,32 @@ func (x *ERC20MultiSigSignerAddedBundle) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ERC20MultiSigSignerAddedBundle.ProtoReflect.Descriptor instead. -func (*ERC20MultiSigSignerAddedBundle) Descriptor() ([]byte, []int) { +// Deprecated: Use ListVotesResponse.ProtoReflect.Descriptor instead. +func (*ListVotesResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{107} } -func (x *ERC20MultiSigSignerAddedBundle) GetNewSigner() string { - if x != nil { - return x.NewSigner - } - return "" -} - -func (x *ERC20MultiSigSignerAddedBundle) GetSubmitter() string { - if x != nil { - return x.Submitter - } - return "" -} - -func (x *ERC20MultiSigSignerAddedBundle) GetNonce() string { - if x != nil { - return x.Nonce - } - return "" -} - -func (x *ERC20MultiSigSignerAddedBundle) GetTimestamp() int64 { - if x != nil { - return x.Timestamp - } - return 0 -} - -func (x *ERC20MultiSigSignerAddedBundle) GetSignatures() string { - if x != nil { - return x.Signatures - } - return "" -} - -func (x *ERC20MultiSigSignerAddedBundle) GetEpochSeq() string { - if x != nil { - return x.EpochSeq - } - return "" -} - -func (x *ERC20MultiSigSignerAddedBundle) GetChainId() string { +func (x *ListVotesResponse) GetVotes() *VoteConnection { if x != nil { - return x.ChainId + return x.Votes } - return "" + return nil } -// Request for removing a signature bundle from the signer list of the multisig contract for a particular validator -type ListERC20MultiSigSignerRemovedBundlesRequest struct { +// Votes data with the corresponding cursor. +type VoteEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Node ID of the validator of which a signature bundle is required. - NodeId string `protobuf:"bytes,1,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"` - // Ethereum address of the validator that will submit the bundle. - Submitter string `protobuf:"bytes,2,opt,name=submitter,proto3" json:"submitter,omitempty"` - // Epoch in which the bundle was generated, i.e. the epoch in which the node was demoted from a consensus validator. - EpochSeq string `protobuf:"bytes,3,opt,name=epoch_seq,json=epochSeq,proto3" json:"epoch_seq,omitempty"` - // Pagination controls. - Pagination *Pagination `protobuf:"bytes,4,opt,name=pagination,proto3" json:"pagination,omitempty"` - // Filter signature bundles to those related to the contract on the given chain ID. - ChainId *string `protobuf:"bytes,5,opt,name=chain_id,json=chainId,proto3,oneof" json:"chain_id,omitempty"` + // Data associated with a governance vote. + Node *vega.Vote `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *ListERC20MultiSigSignerRemovedBundlesRequest) Reset() { - *x = ListERC20MultiSigSignerRemovedBundlesRequest{} +func (x *VoteEdge) Reset() { + *x = VoteEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7208,13 +7135,13 @@ func (x *ListERC20MultiSigSignerRemovedBundlesRequest) Reset() { } } -func (x *ListERC20MultiSigSignerRemovedBundlesRequest) String() string { +func (x *VoteEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListERC20MultiSigSignerRemovedBundlesRequest) ProtoMessage() {} +func (*VoteEdge) ProtoMessage() {} -func (x *ListERC20MultiSigSignerRemovedBundlesRequest) ProtoReflect() protoreflect.Message { +func (x *VoteEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[108] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7226,58 +7153,39 @@ func (x *ListERC20MultiSigSignerRemovedBundlesRequest) ProtoReflect() protorefle return mi.MessageOf(x) } -// Deprecated: Use ListERC20MultiSigSignerRemovedBundlesRequest.ProtoReflect.Descriptor instead. -func (*ListERC20MultiSigSignerRemovedBundlesRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use VoteEdge.ProtoReflect.Descriptor instead. +func (*VoteEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{108} } -func (x *ListERC20MultiSigSignerRemovedBundlesRequest) GetNodeId() string { - if x != nil { - return x.NodeId - } - return "" -} - -func (x *ListERC20MultiSigSignerRemovedBundlesRequest) GetSubmitter() string { - if x != nil { - return x.Submitter - } - return "" -} - -func (x *ListERC20MultiSigSignerRemovedBundlesRequest) GetEpochSeq() string { - if x != nil { - return x.EpochSeq - } - return "" -} - -func (x *ListERC20MultiSigSignerRemovedBundlesRequest) GetPagination() *Pagination { +func (x *VoteEdge) GetNode() *vega.Vote { if x != nil { - return x.Pagination + return x.Node } return nil } -func (x *ListERC20MultiSigSignerRemovedBundlesRequest) GetChainId() string { - if x != nil && x.ChainId != nil { - return *x.ChainId +func (x *VoteEdge) GetCursor() string { + if x != nil { + return x.Cursor } return "" } -// Response when removing a signature bundle from the signer list of the multisig contract for a particular validator -type ListERC20MultiSigSignerRemovedBundlesResponse struct { +// Page of vote data items and corresponding page information +type VoteConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of signer bundle data items for that validator and corresponding page information. - Bundles *ERC20MultiSigSignerRemovedConnection `protobuf:"bytes,1,opt,name=bundles,proto3" json:"bundles,omitempty"` + // Page of vote data and their corresponding cursors. + Edges []*VoteEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *ListERC20MultiSigSignerRemovedBundlesResponse) Reset() { - *x = ListERC20MultiSigSignerRemovedBundlesResponse{} +func (x *VoteConnection) Reset() { + *x = VoteConnection{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[109] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7285,13 +7193,13 @@ func (x *ListERC20MultiSigSignerRemovedBundlesResponse) Reset() { } } -func (x *ListERC20MultiSigSignerRemovedBundlesResponse) String() string { +func (x *VoteConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListERC20MultiSigSignerRemovedBundlesResponse) ProtoMessage() {} +func (*VoteConnection) ProtoMessage() {} -func (x *ListERC20MultiSigSignerRemovedBundlesResponse) ProtoReflect() protoreflect.Message { +func (x *VoteConnection) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[109] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7303,32 +7211,39 @@ func (x *ListERC20MultiSigSignerRemovedBundlesResponse) ProtoReflect() protorefl return mi.MessageOf(x) } -// Deprecated: Use ListERC20MultiSigSignerRemovedBundlesResponse.ProtoReflect.Descriptor instead. -func (*ListERC20MultiSigSignerRemovedBundlesResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use VoteConnection.ProtoReflect.Descriptor instead. +func (*VoteConnection) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{109} } -func (x *ListERC20MultiSigSignerRemovedBundlesResponse) GetBundles() *ERC20MultiSigSignerRemovedConnection { +func (x *VoteConnection) GetEdges() []*VoteEdge { if x != nil { - return x.Bundles + return x.Edges } return nil } -// Signature data to be removed with the corresponding cursor. -type ERC20MultiSigSignerRemovedEdge struct { +func (x *VoteConnection) GetPageInfo() *PageInfo { + if x != nil { + return x.PageInfo + } + return nil +} + +// Request that is sent to subscribe to votes +type ObserveVotesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Signature data to be removed. - Node *v1.ERC20MultiSigSignerRemoved `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Restrict vote updates to those made by the given party. + PartyId *string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3,oneof" json:"party_id,omitempty"` + // Restrict vote updates to those made on the given proposal. + ProposalId *string `protobuf:"bytes,2,opt,name=proposal_id,json=proposalId,proto3,oneof" json:"proposal_id,omitempty"` } -func (x *ERC20MultiSigSignerRemovedEdge) Reset() { - *x = ERC20MultiSigSignerRemovedEdge{} +func (x *ObserveVotesRequest) Reset() { + *x = ObserveVotesRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[110] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7336,13 +7251,13 @@ func (x *ERC20MultiSigSignerRemovedEdge) Reset() { } } -func (x *ERC20MultiSigSignerRemovedEdge) String() string { +func (x *ObserveVotesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ERC20MultiSigSignerRemovedEdge) ProtoMessage() {} +func (*ObserveVotesRequest) ProtoMessage() {} -func (x *ERC20MultiSigSignerRemovedEdge) ProtoReflect() protoreflect.Message { +func (x *ObserveVotesRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[110] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7354,39 +7269,37 @@ func (x *ERC20MultiSigSignerRemovedEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ERC20MultiSigSignerRemovedEdge.ProtoReflect.Descriptor instead. -func (*ERC20MultiSigSignerRemovedEdge) Descriptor() ([]byte, []int) { +// Deprecated: Use ObserveVotesRequest.ProtoReflect.Descriptor instead. +func (*ObserveVotesRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{110} } -func (x *ERC20MultiSigSignerRemovedEdge) GetNode() *v1.ERC20MultiSigSignerRemoved { - if x != nil { - return x.Node +func (x *ObserveVotesRequest) GetPartyId() string { + if x != nil && x.PartyId != nil { + return *x.PartyId } - return nil + return "" } -func (x *ERC20MultiSigSignerRemovedEdge) GetCursor() string { - if x != nil { - return x.Cursor +func (x *ObserveVotesRequest) GetProposalId() string { + if x != nil && x.ProposalId != nil { + return *x.ProposalId } return "" } -// Signature bundle data to be removed, with the corresponding cursor. -type ERC20MultiSigSignerRemovedBundleEdge struct { +// Response that is received from votes subscription +type ObserveVotesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Signature bundle data to be added. - Node *ERC20MultiSigSignerRemovedBundle `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Data associated with governance votes that are published to the stream. + Vote *vega.Vote `protobuf:"bytes,1,opt,name=vote,proto3" json:"vote,omitempty"` } -func (x *ERC20MultiSigSignerRemovedBundleEdge) Reset() { - *x = ERC20MultiSigSignerRemovedBundleEdge{} +func (x *ObserveVotesResponse) Reset() { + *x = ObserveVotesResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7394,13 +7307,13 @@ func (x *ERC20MultiSigSignerRemovedBundleEdge) Reset() { } } -func (x *ERC20MultiSigSignerRemovedBundleEdge) String() string { +func (x *ObserveVotesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ERC20MultiSigSignerRemovedBundleEdge) ProtoMessage() {} +func (*ObserveVotesResponse) ProtoMessage() {} -func (x *ERC20MultiSigSignerRemovedBundleEdge) ProtoReflect() protoreflect.Message { +func (x *ObserveVotesResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[111] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7412,39 +7325,38 @@ func (x *ERC20MultiSigSignerRemovedBundleEdge) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use ERC20MultiSigSignerRemovedBundleEdge.ProtoReflect.Descriptor instead. -func (*ERC20MultiSigSignerRemovedBundleEdge) Descriptor() ([]byte, []int) { +// Deprecated: Use ObserveVotesResponse.ProtoReflect.Descriptor instead. +func (*ObserveVotesResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{111} } -func (x *ERC20MultiSigSignerRemovedBundleEdge) GetNode() *ERC20MultiSigSignerRemovedBundle { +func (x *ObserveVotesResponse) GetVote() *vega.Vote { if x != nil { - return x.Node + return x.Vote } return nil } -func (x *ERC20MultiSigSignerRemovedBundleEdge) GetCursor() string { - if x != nil { - return x.Cursor - } - return "" -} - -// Page of signature data items to be removed and corresponding page information. -type ERC20MultiSigSignerRemovedConnection struct { +// Request for adding a signature bundle to the signer list of a multisig contract for a particular validator +type ListERC20MultiSigSignerAddedBundlesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of signature bundle data and their corresponding cursors. - Edges []*ERC20MultiSigSignerRemovedBundleEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + // Node ID of the validator for which a signature bundle is required. + NodeId string `protobuf:"bytes,1,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"` + // Ethereum address of the validator that will submit the bundle. + Submitter string `protobuf:"bytes,2,opt,name=submitter,proto3" json:"submitter,omitempty"` + // Epoch in which the bundle was generated, i.e. the epoch in which the node was promoted to consensus validator. + EpochSeq string `protobuf:"bytes,3,opt,name=epoch_seq,json=epochSeq,proto3" json:"epoch_seq,omitempty"` + // Pagination controls. + Pagination *Pagination `protobuf:"bytes,4,opt,name=pagination,proto3" json:"pagination,omitempty"` + // Filter signature bundles to those related to the contract on the given chain ID. + ChainId *string `protobuf:"bytes,5,opt,name=chain_id,json=chainId,proto3,oneof" json:"chain_id,omitempty"` } -func (x *ERC20MultiSigSignerRemovedConnection) Reset() { - *x = ERC20MultiSigSignerRemovedConnection{} +func (x *ListERC20MultiSigSignerAddedBundlesRequest) Reset() { + *x = ListERC20MultiSigSignerAddedBundlesRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7452,13 +7364,13 @@ func (x *ERC20MultiSigSignerRemovedConnection) Reset() { } } -func (x *ERC20MultiSigSignerRemovedConnection) String() string { +func (x *ListERC20MultiSigSignerAddedBundlesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ERC20MultiSigSignerRemovedConnection) ProtoMessage() {} +func (*ListERC20MultiSigSignerAddedBundlesRequest) ProtoMessage() {} -func (x *ERC20MultiSigSignerRemovedConnection) ProtoReflect() protoreflect.Message { +func (x *ListERC20MultiSigSignerAddedBundlesRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[112] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7470,49 +7382,58 @@ func (x *ERC20MultiSigSignerRemovedConnection) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use ERC20MultiSigSignerRemovedConnection.ProtoReflect.Descriptor instead. -func (*ERC20MultiSigSignerRemovedConnection) Descriptor() ([]byte, []int) { +// Deprecated: Use ListERC20MultiSigSignerAddedBundlesRequest.ProtoReflect.Descriptor instead. +func (*ListERC20MultiSigSignerAddedBundlesRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{112} } -func (x *ERC20MultiSigSignerRemovedConnection) GetEdges() []*ERC20MultiSigSignerRemovedBundleEdge { +func (x *ListERC20MultiSigSignerAddedBundlesRequest) GetNodeId() string { if x != nil { - return x.Edges + return x.NodeId } - return nil + return "" } -func (x *ERC20MultiSigSignerRemovedConnection) GetPageInfo() *PageInfo { +func (x *ListERC20MultiSigSignerAddedBundlesRequest) GetSubmitter() string { if x != nil { - return x.PageInfo + return x.Submitter + } + return "" +} + +func (x *ListERC20MultiSigSignerAddedBundlesRequest) GetEpochSeq() string { + if x != nil { + return x.EpochSeq + } + return "" +} + +func (x *ListERC20MultiSigSignerAddedBundlesRequest) GetPagination() *Pagination { + if x != nil { + return x.Pagination } return nil } -// Signature bundle data to be removed -type ERC20MultiSigSignerRemovedBundle struct { +func (x *ListERC20MultiSigSignerAddedBundlesRequest) GetChainId() string { + if x != nil && x.ChainId != nil { + return *x.ChainId + } + return "" +} + +// Response from adding a signature bundle to the signer list of a multisig contract for a particular validator +type ListERC20MultiSigSignerAddedBundlesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Ethereum address of the signer to be removed. - OldSigner string `protobuf:"bytes,1,opt,name=old_signer,json=oldSigner,proto3" json:"old_signer,omitempty"` - // Ethereum address of the submitter. - Submitter string `protobuf:"bytes,2,opt,name=submitter,proto3" json:"submitter,omitempty"` - // Nonce used in the signing operation. - Nonce string `protobuf:"bytes,4,opt,name=nonce,proto3" json:"nonce,omitempty"` - // Unixnano timestamp for when the validator was added. - Timestamp int64 `protobuf:"varint,5,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - // Bundle of signatures from current validators to sign in the new signer. - Signatures string `protobuf:"bytes,6,opt,name=signatures,proto3" json:"signatures,omitempty"` - // Epoch in which the validator was removed. - EpochSeq string `protobuf:"bytes,7,opt,name=epoch_seq,json=epochSeq,proto3" json:"epoch_seq,omitempty"` - // ID of the EVM chain this signature bundle is valid for. - ChainId string `protobuf:"bytes,8,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + // Page of bundles for that validator - it may have been added multiple times if removed in between - and corresponding page information. + Bundles *ERC20MultiSigSignerAddedConnection `protobuf:"bytes,1,opt,name=bundles,proto3" json:"bundles,omitempty"` } -func (x *ERC20MultiSigSignerRemovedBundle) Reset() { - *x = ERC20MultiSigSignerRemovedBundle{} +func (x *ListERC20MultiSigSignerAddedBundlesResponse) Reset() { + *x = ListERC20MultiSigSignerAddedBundlesResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[113] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7520,13 +7441,13 @@ func (x *ERC20MultiSigSignerRemovedBundle) Reset() { } } -func (x *ERC20MultiSigSignerRemovedBundle) String() string { +func (x *ListERC20MultiSigSignerAddedBundlesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ERC20MultiSigSignerRemovedBundle) ProtoMessage() {} +func (*ListERC20MultiSigSignerAddedBundlesResponse) ProtoMessage() {} -func (x *ERC20MultiSigSignerRemovedBundle) ProtoReflect() protoreflect.Message { +func (x *ListERC20MultiSigSignerAddedBundlesResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[113] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7538,72 +7459,32 @@ func (x *ERC20MultiSigSignerRemovedBundle) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ERC20MultiSigSignerRemovedBundle.ProtoReflect.Descriptor instead. -func (*ERC20MultiSigSignerRemovedBundle) Descriptor() ([]byte, []int) { +// Deprecated: Use ListERC20MultiSigSignerAddedBundlesResponse.ProtoReflect.Descriptor instead. +func (*ListERC20MultiSigSignerAddedBundlesResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{113} } -func (x *ERC20MultiSigSignerRemovedBundle) GetOldSigner() string { - if x != nil { - return x.OldSigner - } - return "" -} - -func (x *ERC20MultiSigSignerRemovedBundle) GetSubmitter() string { - if x != nil { - return x.Submitter - } - return "" -} - -func (x *ERC20MultiSigSignerRemovedBundle) GetNonce() string { - if x != nil { - return x.Nonce - } - return "" -} - -func (x *ERC20MultiSigSignerRemovedBundle) GetTimestamp() int64 { - if x != nil { - return x.Timestamp - } - return 0 -} - -func (x *ERC20MultiSigSignerRemovedBundle) GetSignatures() string { - if x != nil { - return x.Signatures - } - return "" -} - -func (x *ERC20MultiSigSignerRemovedBundle) GetEpochSeq() string { - if x != nil { - return x.EpochSeq - } - return "" -} - -func (x *ERC20MultiSigSignerRemovedBundle) GetChainId() string { +func (x *ListERC20MultiSigSignerAddedBundlesResponse) GetBundles() *ERC20MultiSigSignerAddedConnection { if x != nil { - return x.ChainId + return x.Bundles } - return "" + return nil } -// Request for listing the signature bundle to an ERC-20 token in the collateral bridge -type GetERC20ListAssetBundleRequest struct { +// Signature data that is to be added with the corresponding cursor. +type ERC20MultiSigSignerAddedEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Asset ID of the asset bundle requested. - AssetId string `protobuf:"bytes,1,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty"` + // Signature data to be added. + Node *v1.ERC20MultiSigSignerAdded `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *GetERC20ListAssetBundleRequest) Reset() { - *x = GetERC20ListAssetBundleRequest{} +func (x *ERC20MultiSigSignerAddedEdge) Reset() { + *x = ERC20MultiSigSignerAddedEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7611,13 +7492,13 @@ func (x *GetERC20ListAssetBundleRequest) Reset() { } } -func (x *GetERC20ListAssetBundleRequest) String() string { +func (x *ERC20MultiSigSignerAddedEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetERC20ListAssetBundleRequest) ProtoMessage() {} +func (*ERC20MultiSigSignerAddedEdge) ProtoMessage() {} -func (x *GetERC20ListAssetBundleRequest) ProtoReflect() protoreflect.Message { +func (x *ERC20MultiSigSignerAddedEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[114] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7629,37 +7510,39 @@ func (x *GetERC20ListAssetBundleRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetERC20ListAssetBundleRequest.ProtoReflect.Descriptor instead. -func (*GetERC20ListAssetBundleRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ERC20MultiSigSignerAddedEdge.ProtoReflect.Descriptor instead. +func (*ERC20MultiSigSignerAddedEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{114} } -func (x *GetERC20ListAssetBundleRequest) GetAssetId() string { +func (x *ERC20MultiSigSignerAddedEdge) GetNode() *v1.ERC20MultiSigSignerAdded { if x != nil { - return x.AssetId + return x.Node + } + return nil +} + +func (x *ERC20MultiSigSignerAddedEdge) GetCursor() string { + if x != nil { + return x.Cursor } return "" } -// Response from listing the signature bundle to an ERC-20 token in the collateral bridge -type GetERC20ListAssetBundleResponse struct { +// Signature bundle data that is to be added with the corresponding cursor. +type ERC20MultiSigSignerAddedBundleEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Address of the asset on Ethereum. - AssetSource string `protobuf:"bytes,1,opt,name=asset_source,json=assetSource,proto3" json:"asset_source,omitempty"` - // Asset ID for the underlying Vega asset. - VegaAssetId string `protobuf:"bytes,2,opt,name=vega_asset_id,json=vegaAssetId,proto3" json:"vega_asset_id,omitempty"` - // Nonce that uniquely identifies this signature bundle and prevents resubmission. - Nonce string `protobuf:"bytes,3,opt,name=nonce,proto3" json:"nonce,omitempty"` - // Signatures bundle as hex encoded data, prefixed with `0x` - // e.g: `0x + sig1 + sig2 + ... + sixN`. - Signatures string `protobuf:"bytes,4,opt,name=signatures,proto3" json:"signatures,omitempty"` + // Signature bundle data to be added. + Node *ERC20MultiSigSignerAddedBundle `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *GetERC20ListAssetBundleResponse) Reset() { - *x = GetERC20ListAssetBundleResponse{} +func (x *ERC20MultiSigSignerAddedBundleEdge) Reset() { + *x = ERC20MultiSigSignerAddedBundleEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7667,13 +7550,13 @@ func (x *GetERC20ListAssetBundleResponse) Reset() { } } -func (x *GetERC20ListAssetBundleResponse) String() string { +func (x *ERC20MultiSigSignerAddedBundleEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetERC20ListAssetBundleResponse) ProtoMessage() {} +func (*ERC20MultiSigSignerAddedBundleEdge) ProtoMessage() {} -func (x *GetERC20ListAssetBundleResponse) ProtoReflect() protoreflect.Message { +func (x *ERC20MultiSigSignerAddedBundleEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[115] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7685,51 +7568,39 @@ func (x *GetERC20ListAssetBundleResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetERC20ListAssetBundleResponse.ProtoReflect.Descriptor instead. -func (*GetERC20ListAssetBundleResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ERC20MultiSigSignerAddedBundleEdge.ProtoReflect.Descriptor instead. +func (*ERC20MultiSigSignerAddedBundleEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{115} } -func (x *GetERC20ListAssetBundleResponse) GetAssetSource() string { - if x != nil { - return x.AssetSource - } - return "" -} - -func (x *GetERC20ListAssetBundleResponse) GetVegaAssetId() string { - if x != nil { - return x.VegaAssetId - } - return "" -} - -func (x *GetERC20ListAssetBundleResponse) GetNonce() string { +func (x *ERC20MultiSigSignerAddedBundleEdge) GetNode() *ERC20MultiSigSignerAddedBundle { if x != nil { - return x.Nonce + return x.Node } - return "" + return nil } -func (x *GetERC20ListAssetBundleResponse) GetSignatures() string { +func (x *ERC20MultiSigSignerAddedBundleEdge) GetCursor() string { if x != nil { - return x.Signatures + return x.Cursor } return "" } -// Request for the signature bundle to update the token limits i.e. maxLifetimeDeposit and withdrawThreshold for a given ERC20 token that is already allowlisted in the collateral bridge -type GetERC20SetAssetLimitsBundleRequest struct { +// Page of signature data items to be added and corresponding page information +type ERC20MultiSigSignerAddedConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Proposal ID of the asset update proposal. - ProposalId string `protobuf:"bytes,1,opt,name=proposal_id,json=proposalId,proto3" json:"proposal_id,omitempty"` + // Page of signature bundle data and their corresponding cursors. + Edges []*ERC20MultiSigSignerAddedBundleEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *GetERC20SetAssetLimitsBundleRequest) Reset() { - *x = GetERC20SetAssetLimitsBundleRequest{} +func (x *ERC20MultiSigSignerAddedConnection) Reset() { + *x = ERC20MultiSigSignerAddedConnection{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[116] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7737,13 +7608,13 @@ func (x *GetERC20SetAssetLimitsBundleRequest) Reset() { } } -func (x *GetERC20SetAssetLimitsBundleRequest) String() string { +func (x *ERC20MultiSigSignerAddedConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetERC20SetAssetLimitsBundleRequest) ProtoMessage() {} +func (*ERC20MultiSigSignerAddedConnection) ProtoMessage() {} -func (x *GetERC20SetAssetLimitsBundleRequest) ProtoReflect() protoreflect.Message { +func (x *ERC20MultiSigSignerAddedConnection) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[116] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7755,41 +7626,49 @@ func (x *GetERC20SetAssetLimitsBundleRequest) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use GetERC20SetAssetLimitsBundleRequest.ProtoReflect.Descriptor instead. -func (*GetERC20SetAssetLimitsBundleRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ERC20MultiSigSignerAddedConnection.ProtoReflect.Descriptor instead. +func (*ERC20MultiSigSignerAddedConnection) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{116} } -func (x *GetERC20SetAssetLimitsBundleRequest) GetProposalId() string { +func (x *ERC20MultiSigSignerAddedConnection) GetEdges() []*ERC20MultiSigSignerAddedBundleEdge { if x != nil { - return x.ProposalId + return x.Edges } - return "" + return nil } -// Response for the signature bundle to update the token limits i.e. maxLifetimeDeposit and withdrawThreshold for a given ERC20 token that is already allowlisted in the collateral bridge -type GetERC20SetAssetLimitsBundleResponse struct { +func (x *ERC20MultiSigSignerAddedConnection) GetPageInfo() *PageInfo { + if x != nil { + return x.PageInfo + } + return nil +} + +// Signature bundle data to be added +type ERC20MultiSigSignerAddedBundle struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Address of the asset on Ethereum. - AssetSource string `protobuf:"bytes,1,opt,name=asset_source,json=assetSource,proto3" json:"asset_source,omitempty"` - // Asset ID for the underlying Vega asset. - VegaAssetId string `protobuf:"bytes,2,opt,name=vega_asset_id,json=vegaAssetId,proto3" json:"vega_asset_id,omitempty"` - // Nonce that uniquely identifies this signature bundle and prevents resubmission. - Nonce string `protobuf:"bytes,3,opt,name=nonce,proto3" json:"nonce,omitempty"` - // Lifetime limit deposit for this asset. - LifetimeLimit string `protobuf:"bytes,4,opt,name=lifetime_limit,json=lifetimeLimit,proto3" json:"lifetime_limit,omitempty"` - // Withdrawal threshold for this asset. - Threshold string `protobuf:"bytes,5,opt,name=threshold,proto3" json:"threshold,omitempty"` - // Signatures bundle as hex encoded data, prefixed with `0x` - // e.g: `0x + sig1 + sig2 + ... + sixN`. + // Ethereum address of the signer to be removed. + NewSigner string `protobuf:"bytes,1,opt,name=new_signer,json=newSigner,proto3" json:"new_signer,omitempty"` + // Ethereum address of the submitter. + Submitter string `protobuf:"bytes,2,opt,name=submitter,proto3" json:"submitter,omitempty"` + // Nonce used in the signing operation. + Nonce string `protobuf:"bytes,4,opt,name=nonce,proto3" json:"nonce,omitempty"` + // Unixnano timestamp for when the validator was added. + Timestamp int64 `protobuf:"varint,5,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + // Bundle of signatures from current validators to sign in the new signer. Signatures string `protobuf:"bytes,6,opt,name=signatures,proto3" json:"signatures,omitempty"` + // Epoch in which the validator was added. + EpochSeq string `protobuf:"bytes,3,opt,name=epoch_seq,json=epochSeq,proto3" json:"epoch_seq,omitempty"` + // ID of the EVM chain this signature bundle is valid for. + ChainId string `protobuf:"bytes,7,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` } -func (x *GetERC20SetAssetLimitsBundleResponse) Reset() { - *x = GetERC20SetAssetLimitsBundleResponse{} +func (x *ERC20MultiSigSignerAddedBundle) Reset() { + *x = ERC20MultiSigSignerAddedBundle{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[117] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7797,13 +7676,13 @@ func (x *GetERC20SetAssetLimitsBundleResponse) Reset() { } } -func (x *GetERC20SetAssetLimitsBundleResponse) String() string { +func (x *ERC20MultiSigSignerAddedBundle) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetERC20SetAssetLimitsBundleResponse) ProtoMessage() {} +func (*ERC20MultiSigSignerAddedBundle) ProtoMessage() {} -func (x *GetERC20SetAssetLimitsBundleResponse) ProtoReflect() protoreflect.Message { +func (x *ERC20MultiSigSignerAddedBundle) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[117] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7815,65 +7694,80 @@ func (x *GetERC20SetAssetLimitsBundleResponse) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use GetERC20SetAssetLimitsBundleResponse.ProtoReflect.Descriptor instead. -func (*GetERC20SetAssetLimitsBundleResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ERC20MultiSigSignerAddedBundle.ProtoReflect.Descriptor instead. +func (*ERC20MultiSigSignerAddedBundle) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{117} } -func (x *GetERC20SetAssetLimitsBundleResponse) GetAssetSource() string { +func (x *ERC20MultiSigSignerAddedBundle) GetNewSigner() string { if x != nil { - return x.AssetSource + return x.NewSigner } return "" } -func (x *GetERC20SetAssetLimitsBundleResponse) GetVegaAssetId() string { +func (x *ERC20MultiSigSignerAddedBundle) GetSubmitter() string { if x != nil { - return x.VegaAssetId + return x.Submitter } return "" } -func (x *GetERC20SetAssetLimitsBundleResponse) GetNonce() string { +func (x *ERC20MultiSigSignerAddedBundle) GetNonce() string { if x != nil { return x.Nonce } return "" } -func (x *GetERC20SetAssetLimitsBundleResponse) GetLifetimeLimit() string { +func (x *ERC20MultiSigSignerAddedBundle) GetTimestamp() int64 { if x != nil { - return x.LifetimeLimit + return x.Timestamp + } + return 0 +} + +func (x *ERC20MultiSigSignerAddedBundle) GetSignatures() string { + if x != nil { + return x.Signatures } return "" } -func (x *GetERC20SetAssetLimitsBundleResponse) GetThreshold() string { +func (x *ERC20MultiSigSignerAddedBundle) GetEpochSeq() string { if x != nil { - return x.Threshold + return x.EpochSeq } return "" } -func (x *GetERC20SetAssetLimitsBundleResponse) GetSignatures() string { +func (x *ERC20MultiSigSignerAddedBundle) GetChainId() string { if x != nil { - return x.Signatures + return x.ChainId } return "" } -// Request to get all information required to bundle the call to finalise the withdrawal on the erc20 bridge -type GetERC20WithdrawalApprovalRequest struct { +// Request for removing a signature bundle from the signer list of the multisig contract for a particular validator +type ListERC20MultiSigSignerRemovedBundlesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Withdrawal ID to retrieve. - WithdrawalId string `protobuf:"bytes,1,opt,name=withdrawal_id,json=withdrawalId,proto3" json:"withdrawal_id,omitempty"` + // Node ID of the validator of which a signature bundle is required. + NodeId string `protobuf:"bytes,1,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"` + // Ethereum address of the validator that will submit the bundle. + Submitter string `protobuf:"bytes,2,opt,name=submitter,proto3" json:"submitter,omitempty"` + // Epoch in which the bundle was generated, i.e. the epoch in which the node was demoted from a consensus validator. + EpochSeq string `protobuf:"bytes,3,opt,name=epoch_seq,json=epochSeq,proto3" json:"epoch_seq,omitempty"` + // Pagination controls. + Pagination *Pagination `protobuf:"bytes,4,opt,name=pagination,proto3" json:"pagination,omitempty"` + // Filter signature bundles to those related to the contract on the given chain ID. + ChainId *string `protobuf:"bytes,5,opt,name=chain_id,json=chainId,proto3,oneof" json:"chain_id,omitempty"` } -func (x *GetERC20WithdrawalApprovalRequest) Reset() { - *x = GetERC20WithdrawalApprovalRequest{} +func (x *ListERC20MultiSigSignerRemovedBundlesRequest) Reset() { + *x = ListERC20MultiSigSignerRemovedBundlesRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[118] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7881,13 +7775,13 @@ func (x *GetERC20WithdrawalApprovalRequest) Reset() { } } -func (x *GetERC20WithdrawalApprovalRequest) String() string { +func (x *ListERC20MultiSigSignerRemovedBundlesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetERC20WithdrawalApprovalRequest) ProtoMessage() {} +func (*ListERC20MultiSigSignerRemovedBundlesRequest) ProtoMessage() {} -func (x *GetERC20WithdrawalApprovalRequest) ProtoReflect() protoreflect.Message { +func (x *ListERC20MultiSigSignerRemovedBundlesRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[118] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7899,58 +7793,72 @@ func (x *GetERC20WithdrawalApprovalRequest) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use GetERC20WithdrawalApprovalRequest.ProtoReflect.Descriptor instead. -func (*GetERC20WithdrawalApprovalRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListERC20MultiSigSignerRemovedBundlesRequest.ProtoReflect.Descriptor instead. +func (*ListERC20MultiSigSignerRemovedBundlesRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{118} } -func (x *GetERC20WithdrawalApprovalRequest) GetWithdrawalId() string { +func (x *ListERC20MultiSigSignerRemovedBundlesRequest) GetNodeId() string { if x != nil { - return x.WithdrawalId + return x.NodeId } return "" } -// Response with all information required to bundle the call to finalise the withdrawal on the erc20 bridge -// function withdraw_asset(address asset_source, uint256 asset_id, uint256 amount, uint256 expiry, uint256 nonce, bytes memory signatures) -type GetERC20WithdrawalApprovalResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *ListERC20MultiSigSignerRemovedBundlesRequest) GetSubmitter() string { + if x != nil { + return x.Submitter + } + return "" +} - // Address of asset on the bridged EVM chain. - AssetSource string `protobuf:"bytes,1,opt,name=asset_source,json=assetSource,proto3" json:"asset_source,omitempty"` - // Amount to be withdrawn. - Amount string `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount,omitempty"` - // Nonce that uniquely identifies this signature bundle and prevents resubmission. - Nonce string `protobuf:"bytes,4,opt,name=nonce,proto3" json:"nonce,omitempty"` - // Signatures bundle as hex encoded data, prefixed with `0x` - // e.g: 0x + sig1 + sig2 + ... + sixN. - Signatures string `protobuf:"bytes,5,opt,name=signatures,proto3" json:"signatures,omitempty"` - // Address, prefixed with `0x`, that will receive the withdrawn assets. - TargetAddress string `protobuf:"bytes,6,opt,name=target_address,json=targetAddress,proto3" json:"target_address,omitempty"` - // Creation timestamps. - Creation int64 `protobuf:"varint,7,opt,name=creation,proto3" json:"creation,omitempty"` - // Chain ID of the bridged EVM chain. - SourceChainId string `protobuf:"bytes,8,opt,name=source_chain_id,json=sourceChainId,proto3" json:"source_chain_id,omitempty"` +func (x *ListERC20MultiSigSignerRemovedBundlesRequest) GetEpochSeq() string { + if x != nil { + return x.EpochSeq + } + return "" } -func (x *GetERC20WithdrawalApprovalResponse) Reset() { - *x = GetERC20WithdrawalApprovalResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[119] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *ListERC20MultiSigSignerRemovedBundlesRequest) GetPagination() *Pagination { + if x != nil { + return x.Pagination } + return nil } -func (x *GetERC20WithdrawalApprovalResponse) String() string { +func (x *ListERC20MultiSigSignerRemovedBundlesRequest) GetChainId() string { + if x != nil && x.ChainId != nil { + return *x.ChainId + } + return "" +} + +// Response when removing a signature bundle from the signer list of the multisig contract for a particular validator +type ListERC20MultiSigSignerRemovedBundlesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Page of signer bundle data items for that validator and corresponding page information. + Bundles *ERC20MultiSigSignerRemovedConnection `protobuf:"bytes,1,opt,name=bundles,proto3" json:"bundles,omitempty"` +} + +func (x *ListERC20MultiSigSignerRemovedBundlesResponse) Reset() { + *x = ListERC20MultiSigSignerRemovedBundlesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[119] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListERC20MultiSigSignerRemovedBundlesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetERC20WithdrawalApprovalResponse) ProtoMessage() {} +func (*ListERC20MultiSigSignerRemovedBundlesResponse) ProtoMessage() {} -func (x *GetERC20WithdrawalApprovalResponse) ProtoReflect() protoreflect.Message { +func (x *ListERC20MultiSigSignerRemovedBundlesResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[119] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -7962,72 +7870,32 @@ func (x *GetERC20WithdrawalApprovalResponse) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use GetERC20WithdrawalApprovalResponse.ProtoReflect.Descriptor instead. -func (*GetERC20WithdrawalApprovalResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListERC20MultiSigSignerRemovedBundlesResponse.ProtoReflect.Descriptor instead. +func (*ListERC20MultiSigSignerRemovedBundlesResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{119} } -func (x *GetERC20WithdrawalApprovalResponse) GetAssetSource() string { - if x != nil { - return x.AssetSource - } - return "" -} - -func (x *GetERC20WithdrawalApprovalResponse) GetAmount() string { - if x != nil { - return x.Amount - } - return "" -} - -func (x *GetERC20WithdrawalApprovalResponse) GetNonce() string { - if x != nil { - return x.Nonce - } - return "" -} - -func (x *GetERC20WithdrawalApprovalResponse) GetSignatures() string { - if x != nil { - return x.Signatures - } - return "" -} - -func (x *GetERC20WithdrawalApprovalResponse) GetTargetAddress() string { - if x != nil { - return x.TargetAddress - } - return "" -} - -func (x *GetERC20WithdrawalApprovalResponse) GetCreation() int64 { - if x != nil { - return x.Creation - } - return 0 -} - -func (x *GetERC20WithdrawalApprovalResponse) GetSourceChainId() string { +func (x *ListERC20MultiSigSignerRemovedBundlesResponse) GetBundles() *ERC20MultiSigSignerRemovedConnection { if x != nil { - return x.SourceChainId + return x.Bundles } - return "" + return nil } -// Request for the latest trade that occurred on Vega for a given market -type GetLastTradeRequest struct { +// Signature data to be removed with the corresponding cursor. +type ERC20MultiSigSignerRemovedEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Market ID to retrieve the last trade for. - MarketId string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` + // Signature data to be removed. + Node *v1.ERC20MultiSigSignerRemoved `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *GetLastTradeRequest) Reset() { - *x = GetLastTradeRequest{} +func (x *ERC20MultiSigSignerRemovedEdge) Reset() { + *x = ERC20MultiSigSignerRemovedEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[120] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8035,13 +7903,13 @@ func (x *GetLastTradeRequest) Reset() { } } -func (x *GetLastTradeRequest) String() string { +func (x *ERC20MultiSigSignerRemovedEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetLastTradeRequest) ProtoMessage() {} +func (*ERC20MultiSigSignerRemovedEdge) ProtoMessage() {} -func (x *GetLastTradeRequest) ProtoReflect() protoreflect.Message { +func (x *ERC20MultiSigSignerRemovedEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[120] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8053,30 +7921,39 @@ func (x *GetLastTradeRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetLastTradeRequest.ProtoReflect.Descriptor instead. -func (*GetLastTradeRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ERC20MultiSigSignerRemovedEdge.ProtoReflect.Descriptor instead. +func (*ERC20MultiSigSignerRemovedEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{120} } -func (x *GetLastTradeRequest) GetMarketId() string { +func (x *ERC20MultiSigSignerRemovedEdge) GetNode() *v1.ERC20MultiSigSignerRemoved { if x != nil { - return x.MarketId + return x.Node + } + return nil +} + +func (x *ERC20MultiSigSignerRemovedEdge) GetCursor() string { + if x != nil { + return x.Cursor } return "" } -// Response for the latest trade that occurred on Vega for a given market -type GetLastTradeResponse struct { +// Signature bundle data to be removed, with the corresponding cursor. +type ERC20MultiSigSignerRemovedBundleEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Information about the trade, if one is found. - Trade *vega.Trade `protobuf:"bytes,1,opt,name=trade,proto3" json:"trade,omitempty"` + // Signature bundle data to be added. + Node *ERC20MultiSigSignerRemovedBundle `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *GetLastTradeResponse) Reset() { - *x = GetLastTradeResponse{} +func (x *ERC20MultiSigSignerRemovedBundleEdge) Reset() { + *x = ERC20MultiSigSignerRemovedBundleEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[121] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8084,13 +7961,13 @@ func (x *GetLastTradeResponse) Reset() { } } -func (x *GetLastTradeResponse) String() string { +func (x *ERC20MultiSigSignerRemovedBundleEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetLastTradeResponse) ProtoMessage() {} +func (*ERC20MultiSigSignerRemovedBundleEdge) ProtoMessage() {} -func (x *GetLastTradeResponse) ProtoReflect() protoreflect.Message { +func (x *ERC20MultiSigSignerRemovedBundleEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[121] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8102,38 +7979,39 @@ func (x *GetLastTradeResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetLastTradeResponse.ProtoReflect.Descriptor instead. -func (*GetLastTradeResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ERC20MultiSigSignerRemovedBundleEdge.ProtoReflect.Descriptor instead. +func (*ERC20MultiSigSignerRemovedBundleEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{121} } -func (x *GetLastTradeResponse) GetTrade() *vega.Trade { +func (x *ERC20MultiSigSignerRemovedBundleEdge) GetNode() *ERC20MultiSigSignerRemovedBundle { if x != nil { - return x.Trade + return x.Node } return nil } -// Request to list trades -type ListTradesRequest struct { +func (x *ERC20MultiSigSignerRemovedBundleEdge) GetCursor() string { + if x != nil { + return x.Cursor + } + return "" +} + +// Page of signature data items to be removed and corresponding page information. +type ERC20MultiSigSignerRemovedConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Restrict trades to those that occurred on the given markets. - MarketIds []string `protobuf:"bytes,1,rep,name=market_ids,json=marketIds,proto3" json:"market_ids,omitempty"` - // Restrict trades to those that were caused by the given orders. - OrderIds []string `protobuf:"bytes,2,rep,name=order_ids,json=orderIds,proto3" json:"order_ids,omitempty"` - // Restrict trades to those that were caused by orders placed by the given parties. - PartyIds []string `protobuf:"bytes,3,rep,name=party_ids,json=partyIds,proto3" json:"party_ids,omitempty"` - // Pagination control. - Pagination *Pagination `protobuf:"bytes,4,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` - // Restrict trades to those made during the given date range. If not set, all trades will be returned. - DateRange *DateRange `protobuf:"bytes,5,opt,name=date_range,json=dateRange,proto3,oneof" json:"date_range,omitempty"` + // Page of signature bundle data and their corresponding cursors. + Edges []*ERC20MultiSigSignerRemovedBundleEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *ListTradesRequest) Reset() { - *x = ListTradesRequest{} +func (x *ERC20MultiSigSignerRemovedConnection) Reset() { + *x = ERC20MultiSigSignerRemovedConnection{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[122] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8141,13 +8019,13 @@ func (x *ListTradesRequest) Reset() { } } -func (x *ListTradesRequest) String() string { +func (x *ERC20MultiSigSignerRemovedConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListTradesRequest) ProtoMessage() {} +func (*ERC20MultiSigSignerRemovedConnection) ProtoMessage() {} -func (x *ListTradesRequest) ProtoReflect() protoreflect.Message { +func (x *ERC20MultiSigSignerRemovedConnection) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[122] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8159,58 +8037,49 @@ func (x *ListTradesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListTradesRequest.ProtoReflect.Descriptor instead. -func (*ListTradesRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ERC20MultiSigSignerRemovedConnection.ProtoReflect.Descriptor instead. +func (*ERC20MultiSigSignerRemovedConnection) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{122} } -func (x *ListTradesRequest) GetMarketIds() []string { - if x != nil { - return x.MarketIds - } - return nil -} - -func (x *ListTradesRequest) GetOrderIds() []string { - if x != nil { - return x.OrderIds - } - return nil -} - -func (x *ListTradesRequest) GetPartyIds() []string { - if x != nil { - return x.PartyIds - } - return nil -} - -func (x *ListTradesRequest) GetPagination() *Pagination { +func (x *ERC20MultiSigSignerRemovedConnection) GetEdges() []*ERC20MultiSigSignerRemovedBundleEdge { if x != nil { - return x.Pagination + return x.Edges } return nil } -func (x *ListTradesRequest) GetDateRange() *DateRange { +func (x *ERC20MultiSigSignerRemovedConnection) GetPageInfo() *PageInfo { if x != nil { - return x.DateRange + return x.PageInfo } return nil } -// Response from listing trades -type ListTradesResponse struct { +// Signature bundle data to be removed +type ERC20MultiSigSignerRemovedBundle struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of trades data and corresponding page information. - Trades *TradeConnection `protobuf:"bytes,1,opt,name=trades,proto3" json:"trades,omitempty"` + // Ethereum address of the signer to be removed. + OldSigner string `protobuf:"bytes,1,opt,name=old_signer,json=oldSigner,proto3" json:"old_signer,omitempty"` + // Ethereum address of the submitter. + Submitter string `protobuf:"bytes,2,opt,name=submitter,proto3" json:"submitter,omitempty"` + // Nonce used in the signing operation. + Nonce string `protobuf:"bytes,4,opt,name=nonce,proto3" json:"nonce,omitempty"` + // Unixnano timestamp for when the validator was added. + Timestamp int64 `protobuf:"varint,5,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + // Bundle of signatures from current validators to sign in the new signer. + Signatures string `protobuf:"bytes,6,opt,name=signatures,proto3" json:"signatures,omitempty"` + // Epoch in which the validator was removed. + EpochSeq string `protobuf:"bytes,7,opt,name=epoch_seq,json=epochSeq,proto3" json:"epoch_seq,omitempty"` + // ID of the EVM chain this signature bundle is valid for. + ChainId string `protobuf:"bytes,8,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` } -func (x *ListTradesResponse) Reset() { - *x = ListTradesResponse{} +func (x *ERC20MultiSigSignerRemovedBundle) Reset() { + *x = ERC20MultiSigSignerRemovedBundle{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[123] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8218,13 +8087,13 @@ func (x *ListTradesResponse) Reset() { } } -func (x *ListTradesResponse) String() string { +func (x *ERC20MultiSigSignerRemovedBundle) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListTradesResponse) ProtoMessage() {} +func (*ERC20MultiSigSignerRemovedBundle) ProtoMessage() {} -func (x *ListTradesResponse) ProtoReflect() protoreflect.Message { +func (x *ERC20MultiSigSignerRemovedBundle) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[123] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8236,32 +8105,72 @@ func (x *ListTradesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListTradesResponse.ProtoReflect.Descriptor instead. -func (*ListTradesResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ERC20MultiSigSignerRemovedBundle.ProtoReflect.Descriptor instead. +func (*ERC20MultiSigSignerRemovedBundle) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{123} } -func (x *ListTradesResponse) GetTrades() *TradeConnection { +func (x *ERC20MultiSigSignerRemovedBundle) GetOldSigner() string { if x != nil { - return x.Trades + return x.OldSigner } - return nil + return "" } -// Page of trades and corresponding page information -type TradeConnection struct { +func (x *ERC20MultiSigSignerRemovedBundle) GetSubmitter() string { + if x != nil { + return x.Submitter + } + return "" +} + +func (x *ERC20MultiSigSignerRemovedBundle) GetNonce() string { + if x != nil { + return x.Nonce + } + return "" +} + +func (x *ERC20MultiSigSignerRemovedBundle) GetTimestamp() int64 { + if x != nil { + return x.Timestamp + } + return 0 +} + +func (x *ERC20MultiSigSignerRemovedBundle) GetSignatures() string { + if x != nil { + return x.Signatures + } + return "" +} + +func (x *ERC20MultiSigSignerRemovedBundle) GetEpochSeq() string { + if x != nil { + return x.EpochSeq + } + return "" +} + +func (x *ERC20MultiSigSignerRemovedBundle) GetChainId() string { + if x != nil { + return x.ChainId + } + return "" +} + +// Request for listing the signature bundle to an ERC-20 token in the collateral bridge +type GetERC20ListAssetBundleRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of trades and their corresponding cursors. - Edges []*TradeEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + // Asset ID of the asset bundle requested. + AssetId string `protobuf:"bytes,1,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty"` } -func (x *TradeConnection) Reset() { - *x = TradeConnection{} +func (x *GetERC20ListAssetBundleRequest) Reset() { + *x = GetERC20ListAssetBundleRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[124] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8269,13 +8178,13 @@ func (x *TradeConnection) Reset() { } } -func (x *TradeConnection) String() string { +func (x *GetERC20ListAssetBundleRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TradeConnection) ProtoMessage() {} +func (*GetERC20ListAssetBundleRequest) ProtoMessage() {} -func (x *TradeConnection) ProtoReflect() protoreflect.Message { +func (x *GetERC20ListAssetBundleRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[124] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8287,39 +8196,37 @@ func (x *TradeConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TradeConnection.ProtoReflect.Descriptor instead. -func (*TradeConnection) Descriptor() ([]byte, []int) { +// Deprecated: Use GetERC20ListAssetBundleRequest.ProtoReflect.Descriptor instead. +func (*GetERC20ListAssetBundleRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{124} } -func (x *TradeConnection) GetEdges() []*TradeEdge { - if x != nil { - return x.Edges - } - return nil -} - -func (x *TradeConnection) GetPageInfo() *PageInfo { +func (x *GetERC20ListAssetBundleRequest) GetAssetId() string { if x != nil { - return x.PageInfo + return x.AssetId } - return nil + return "" } -// Trade data item with the corresponding cursor.. -type TradeEdge struct { +// Response from listing the signature bundle to an ERC-20 token in the collateral bridge +type GetERC20ListAssetBundleResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Data associated with a trade that has been executed. - Node *vega.Trade `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Address of the asset on Ethereum. + AssetSource string `protobuf:"bytes,1,opt,name=asset_source,json=assetSource,proto3" json:"asset_source,omitempty"` + // Asset ID for the underlying Vega asset. + VegaAssetId string `protobuf:"bytes,2,opt,name=vega_asset_id,json=vegaAssetId,proto3" json:"vega_asset_id,omitempty"` + // Nonce that uniquely identifies this signature bundle and prevents resubmission. + Nonce string `protobuf:"bytes,3,opt,name=nonce,proto3" json:"nonce,omitempty"` + // Signatures bundle as hex encoded data, prefixed with `0x` + // e.g: `0x + sig1 + sig2 + ... + sixN`. + Signatures string `protobuf:"bytes,4,opt,name=signatures,proto3" json:"signatures,omitempty"` } -func (x *TradeEdge) Reset() { - *x = TradeEdge{} +func (x *GetERC20ListAssetBundleResponse) Reset() { + *x = GetERC20ListAssetBundleResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[125] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8327,13 +8234,13 @@ func (x *TradeEdge) Reset() { } } -func (x *TradeEdge) String() string { +func (x *GetERC20ListAssetBundleResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TradeEdge) ProtoMessage() {} +func (*GetERC20ListAssetBundleResponse) ProtoMessage() {} -func (x *TradeEdge) ProtoReflect() protoreflect.Message { +func (x *GetERC20ListAssetBundleResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[125] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8345,39 +8252,51 @@ func (x *TradeEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TradeEdge.ProtoReflect.Descriptor instead. -func (*TradeEdge) Descriptor() ([]byte, []int) { +// Deprecated: Use GetERC20ListAssetBundleResponse.ProtoReflect.Descriptor instead. +func (*GetERC20ListAssetBundleResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{125} } -func (x *TradeEdge) GetNode() *vega.Trade { +func (x *GetERC20ListAssetBundleResponse) GetAssetSource() string { if x != nil { - return x.Node + return x.AssetSource } - return nil + return "" } -func (x *TradeEdge) GetCursor() string { +func (x *GetERC20ListAssetBundleResponse) GetVegaAssetId() string { if x != nil { - return x.Cursor + return x.VegaAssetId } return "" } -// Request to subscribe to a stream of trades -type ObserveTradesRequest struct { +func (x *GetERC20ListAssetBundleResponse) GetNonce() string { + if x != nil { + return x.Nonce + } + return "" +} + +func (x *GetERC20ListAssetBundleResponse) GetSignatures() string { + if x != nil { + return x.Signatures + } + return "" +} + +// Request for the signature bundle to update the token limits i.e. maxLifetimeDeposit and withdrawThreshold for a given ERC20 token that is already allowlisted in the collateral bridge +type GetERC20SetAssetLimitsBundleRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Restrict the trades streamed to those made on the given markets. - MarketIds []string `protobuf:"bytes,1,rep,name=market_ids,json=marketIds,proto3" json:"market_ids,omitempty"` - // Restrict the trades streamed to those made by the given parties. - PartyIds []string `protobuf:"bytes,2,rep,name=party_ids,json=partyIds,proto3" json:"party_ids,omitempty"` + // Proposal ID of the asset update proposal. + ProposalId string `protobuf:"bytes,1,opt,name=proposal_id,json=proposalId,proto3" json:"proposal_id,omitempty"` } -func (x *ObserveTradesRequest) Reset() { - *x = ObserveTradesRequest{} +func (x *GetERC20SetAssetLimitsBundleRequest) Reset() { + *x = GetERC20SetAssetLimitsBundleRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[126] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8385,13 +8304,13 @@ func (x *ObserveTradesRequest) Reset() { } } -func (x *ObserveTradesRequest) String() string { +func (x *GetERC20SetAssetLimitsBundleRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ObserveTradesRequest) ProtoMessage() {} +func (*GetERC20SetAssetLimitsBundleRequest) ProtoMessage() {} -func (x *ObserveTradesRequest) ProtoReflect() protoreflect.Message { +func (x *GetERC20SetAssetLimitsBundleRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[126] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8403,37 +8322,41 @@ func (x *ObserveTradesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ObserveTradesRequest.ProtoReflect.Descriptor instead. -func (*ObserveTradesRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GetERC20SetAssetLimitsBundleRequest.ProtoReflect.Descriptor instead. +func (*GetERC20SetAssetLimitsBundleRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{126} } -func (x *ObserveTradesRequest) GetMarketIds() []string { - if x != nil { - return x.MarketIds - } - return nil -} - -func (x *ObserveTradesRequest) GetPartyIds() []string { +func (x *GetERC20SetAssetLimitsBundleRequest) GetProposalId() string { if x != nil { - return x.PartyIds + return x.ProposalId } - return nil + return "" } -// Stream of trades -type ObserveTradesResponse struct { +// Response for the signature bundle to update the token limits i.e. maxLifetimeDeposit and withdrawThreshold for a given ERC20 token that is already allowlisted in the collateral bridge +type GetERC20SetAssetLimitsBundleResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // List of 0 or more trades. - Trades []*vega.Trade `protobuf:"bytes,1,rep,name=trades,proto3" json:"trades,omitempty"` + // Address of the asset on Ethereum. + AssetSource string `protobuf:"bytes,1,opt,name=asset_source,json=assetSource,proto3" json:"asset_source,omitempty"` + // Asset ID for the underlying Vega asset. + VegaAssetId string `protobuf:"bytes,2,opt,name=vega_asset_id,json=vegaAssetId,proto3" json:"vega_asset_id,omitempty"` + // Nonce that uniquely identifies this signature bundle and prevents resubmission. + Nonce string `protobuf:"bytes,3,opt,name=nonce,proto3" json:"nonce,omitempty"` + // Lifetime limit deposit for this asset. + LifetimeLimit string `protobuf:"bytes,4,opt,name=lifetime_limit,json=lifetimeLimit,proto3" json:"lifetime_limit,omitempty"` + // Withdrawal threshold for this asset. + Threshold string `protobuf:"bytes,5,opt,name=threshold,proto3" json:"threshold,omitempty"` + // Signatures bundle as hex encoded data, prefixed with `0x` + // e.g: `0x + sig1 + sig2 + ... + sixN`. + Signatures string `protobuf:"bytes,6,opt,name=signatures,proto3" json:"signatures,omitempty"` } -func (x *ObserveTradesResponse) Reset() { - *x = ObserveTradesResponse{} +func (x *GetERC20SetAssetLimitsBundleResponse) Reset() { + *x = GetERC20SetAssetLimitsBundleResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[127] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8441,13 +8364,13 @@ func (x *ObserveTradesResponse) Reset() { } } -func (x *ObserveTradesResponse) String() string { +func (x *GetERC20SetAssetLimitsBundleResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ObserveTradesResponse) ProtoMessage() {} +func (*GetERC20SetAssetLimitsBundleResponse) ProtoMessage() {} -func (x *ObserveTradesResponse) ProtoReflect() protoreflect.Message { +func (x *GetERC20SetAssetLimitsBundleResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[127] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8459,30 +8382,65 @@ func (x *ObserveTradesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ObserveTradesResponse.ProtoReflect.Descriptor instead. -func (*ObserveTradesResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GetERC20SetAssetLimitsBundleResponse.ProtoReflect.Descriptor instead. +func (*GetERC20SetAssetLimitsBundleResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{127} } -func (x *ObserveTradesResponse) GetTrades() []*vega.Trade { +func (x *GetERC20SetAssetLimitsBundleResponse) GetAssetSource() string { if x != nil { - return x.Trades + return x.AssetSource } - return nil + return "" } -// Request to get a specific oracle spec by its ID -type GetOracleSpecRequest struct { +func (x *GetERC20SetAssetLimitsBundleResponse) GetVegaAssetId() string { + if x != nil { + return x.VegaAssetId + } + return "" +} + +func (x *GetERC20SetAssetLimitsBundleResponse) GetNonce() string { + if x != nil { + return x.Nonce + } + return "" +} + +func (x *GetERC20SetAssetLimitsBundleResponse) GetLifetimeLimit() string { + if x != nil { + return x.LifetimeLimit + } + return "" +} + +func (x *GetERC20SetAssetLimitsBundleResponse) GetThreshold() string { + if x != nil { + return x.Threshold + } + return "" +} + +func (x *GetERC20SetAssetLimitsBundleResponse) GetSignatures() string { + if x != nil { + return x.Signatures + } + return "" +} + +// Request to get all information required to bundle the call to finalise the withdrawal on the erc20 bridge +type GetERC20WithdrawalApprovalRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Oracle spec ID to request data for. - OracleSpecId string `protobuf:"bytes,1,opt,name=oracle_spec_id,json=oracleSpecId,proto3" json:"oracle_spec_id,omitempty"` + // Withdrawal ID to retrieve. + WithdrawalId string `protobuf:"bytes,1,opt,name=withdrawal_id,json=withdrawalId,proto3" json:"withdrawal_id,omitempty"` } -func (x *GetOracleSpecRequest) Reset() { - *x = GetOracleSpecRequest{} +func (x *GetERC20WithdrawalApprovalRequest) Reset() { + *x = GetERC20WithdrawalApprovalRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[128] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8490,13 +8448,13 @@ func (x *GetOracleSpecRequest) Reset() { } } -func (x *GetOracleSpecRequest) String() string { +func (x *GetERC20WithdrawalApprovalRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetOracleSpecRequest) ProtoMessage() {} +func (*GetERC20WithdrawalApprovalRequest) ProtoMessage() {} -func (x *GetOracleSpecRequest) ProtoReflect() protoreflect.Message { +func (x *GetERC20WithdrawalApprovalRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[128] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8508,30 +8466,44 @@ func (x *GetOracleSpecRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetOracleSpecRequest.ProtoReflect.Descriptor instead. -func (*GetOracleSpecRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GetERC20WithdrawalApprovalRequest.ProtoReflect.Descriptor instead. +func (*GetERC20WithdrawalApprovalRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{128} } -func (x *GetOracleSpecRequest) GetOracleSpecId() string { +func (x *GetERC20WithdrawalApprovalRequest) GetWithdrawalId() string { if x != nil { - return x.OracleSpecId + return x.WithdrawalId } return "" } -// Response for a oracle spec -type GetOracleSpecResponse struct { +// Response with all information required to bundle the call to finalise the withdrawal on the erc20 bridge +// function withdraw_asset(address asset_source, uint256 asset_id, uint256 amount, uint256 expiry, uint256 nonce, bytes memory signatures) +type GetERC20WithdrawalApprovalResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // External data spec matching the ID. - OracleSpec *vega.OracleSpec `protobuf:"bytes,1,opt,name=oracle_spec,json=oracleSpec,proto3" json:"oracle_spec,omitempty"` + // Address of asset on the bridged EVM chain. + AssetSource string `protobuf:"bytes,1,opt,name=asset_source,json=assetSource,proto3" json:"asset_source,omitempty"` + // Amount to be withdrawn. + Amount string `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount,omitempty"` + // Nonce that uniquely identifies this signature bundle and prevents resubmission. + Nonce string `protobuf:"bytes,4,opt,name=nonce,proto3" json:"nonce,omitempty"` + // Signatures bundle as hex encoded data, prefixed with `0x` + // e.g: 0x + sig1 + sig2 + ... + sixN. + Signatures string `protobuf:"bytes,5,opt,name=signatures,proto3" json:"signatures,omitempty"` + // Address, prefixed with `0x`, that will receive the withdrawn assets. + TargetAddress string `protobuf:"bytes,6,opt,name=target_address,json=targetAddress,proto3" json:"target_address,omitempty"` + // Creation timestamps. + Creation int64 `protobuf:"varint,7,opt,name=creation,proto3" json:"creation,omitempty"` + // Chain ID of the bridged EVM chain. + SourceChainId string `protobuf:"bytes,8,opt,name=source_chain_id,json=sourceChainId,proto3" json:"source_chain_id,omitempty"` } -func (x *GetOracleSpecResponse) Reset() { - *x = GetOracleSpecResponse{} +func (x *GetERC20WithdrawalApprovalResponse) Reset() { + *x = GetERC20WithdrawalApprovalResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[129] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8539,13 +8511,13 @@ func (x *GetOracleSpecResponse) Reset() { } } -func (x *GetOracleSpecResponse) String() string { +func (x *GetERC20WithdrawalApprovalResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetOracleSpecResponse) ProtoMessage() {} +func (*GetERC20WithdrawalApprovalResponse) ProtoMessage() {} -func (x *GetOracleSpecResponse) ProtoReflect() protoreflect.Message { +func (x *GetERC20WithdrawalApprovalResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[129] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8557,30 +8529,72 @@ func (x *GetOracleSpecResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetOracleSpecResponse.ProtoReflect.Descriptor instead. -func (*GetOracleSpecResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GetERC20WithdrawalApprovalResponse.ProtoReflect.Descriptor instead. +func (*GetERC20WithdrawalApprovalResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{129} } -func (x *GetOracleSpecResponse) GetOracleSpec() *vega.OracleSpec { +func (x *GetERC20WithdrawalApprovalResponse) GetAssetSource() string { if x != nil { - return x.OracleSpec + return x.AssetSource } - return nil + return "" } -// Request to get all active oracle specs -type ListOracleSpecsRequest struct { +func (x *GetERC20WithdrawalApprovalResponse) GetAmount() string { + if x != nil { + return x.Amount + } + return "" +} + +func (x *GetERC20WithdrawalApprovalResponse) GetNonce() string { + if x != nil { + return x.Nonce + } + return "" +} + +func (x *GetERC20WithdrawalApprovalResponse) GetSignatures() string { + if x != nil { + return x.Signatures + } + return "" +} + +func (x *GetERC20WithdrawalApprovalResponse) GetTargetAddress() string { + if x != nil { + return x.TargetAddress + } + return "" +} + +func (x *GetERC20WithdrawalApprovalResponse) GetCreation() int64 { + if x != nil { + return x.Creation + } + return 0 +} + +func (x *GetERC20WithdrawalApprovalResponse) GetSourceChainId() string { + if x != nil { + return x.SourceChainId + } + return "" +} + +// Request for the latest trade that occurred on Vega for a given market +type GetLastTradeRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Pagination controls. - Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + // Market ID to retrieve the last trade for. + MarketId string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` } -func (x *ListOracleSpecsRequest) Reset() { - *x = ListOracleSpecsRequest{} +func (x *GetLastTradeRequest) Reset() { + *x = GetLastTradeRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[130] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8588,13 +8602,13 @@ func (x *ListOracleSpecsRequest) Reset() { } } -func (x *ListOracleSpecsRequest) String() string { +func (x *GetLastTradeRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListOracleSpecsRequest) ProtoMessage() {} +func (*GetLastTradeRequest) ProtoMessage() {} -func (x *ListOracleSpecsRequest) ProtoReflect() protoreflect.Message { +func (x *GetLastTradeRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[130] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8606,30 +8620,30 @@ func (x *ListOracleSpecsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListOracleSpecsRequest.ProtoReflect.Descriptor instead. -func (*ListOracleSpecsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GetLastTradeRequest.ProtoReflect.Descriptor instead. +func (*GetLastTradeRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{130} } -func (x *ListOracleSpecsRequest) GetPagination() *Pagination { +func (x *GetLastTradeRequest) GetMarketId() string { if x != nil { - return x.Pagination + return x.MarketId } - return nil + return "" } -// Response to get all active oracle specs -type ListOracleSpecsResponse struct { +// Response for the latest trade that occurred on Vega for a given market +type GetLastTradeResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of active oracle specs and corresponding page information. - OracleSpecs *OracleSpecsConnection `protobuf:"bytes,1,opt,name=oracle_specs,json=oracleSpecs,proto3" json:"oracle_specs,omitempty"` + // Information about the trade, if one is found. + Trade *vega.Trade `protobuf:"bytes,1,opt,name=trade,proto3" json:"trade,omitempty"` } -func (x *ListOracleSpecsResponse) Reset() { - *x = ListOracleSpecsResponse{} +func (x *GetLastTradeResponse) Reset() { + *x = GetLastTradeResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[131] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8637,13 +8651,13 @@ func (x *ListOracleSpecsResponse) Reset() { } } -func (x *ListOracleSpecsResponse) String() string { +func (x *GetLastTradeResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListOracleSpecsResponse) ProtoMessage() {} +func (*GetLastTradeResponse) ProtoMessage() {} -func (x *ListOracleSpecsResponse) ProtoReflect() protoreflect.Message { +func (x *GetLastTradeResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[131] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8655,32 +8669,38 @@ func (x *ListOracleSpecsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListOracleSpecsResponse.ProtoReflect.Descriptor instead. -func (*ListOracleSpecsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GetLastTradeResponse.ProtoReflect.Descriptor instead. +func (*GetLastTradeResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{131} } -func (x *ListOracleSpecsResponse) GetOracleSpecs() *OracleSpecsConnection { +func (x *GetLastTradeResponse) GetTrade() *vega.Trade { if x != nil { - return x.OracleSpecs + return x.Trade } return nil } -// Request to get all seen oracle data -type ListOracleDataRequest struct { +// Request to list trades +type ListTradesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Oracle spec ID to list data for. - OracleSpecId *string `protobuf:"bytes,1,opt,name=oracle_spec_id,json=oracleSpecId,proto3,oneof" json:"oracle_spec_id,omitempty"` - // Pagination controls. - Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + // Restrict trades to those that occurred on the given markets. + MarketIds []string `protobuf:"bytes,1,rep,name=market_ids,json=marketIds,proto3" json:"market_ids,omitempty"` + // Restrict trades to those that were caused by the given orders. + OrderIds []string `protobuf:"bytes,2,rep,name=order_ids,json=orderIds,proto3" json:"order_ids,omitempty"` + // Restrict trades to those that were caused by orders placed by the given parties. + PartyIds []string `protobuf:"bytes,3,rep,name=party_ids,json=partyIds,proto3" json:"party_ids,omitempty"` + // Pagination control. + Pagination *Pagination `protobuf:"bytes,4,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + // Restrict trades to those made during the given date range. If not set, all trades will be returned. + DateRange *DateRange `protobuf:"bytes,5,opt,name=date_range,json=dateRange,proto3,oneof" json:"date_range,omitempty"` } -func (x *ListOracleDataRequest) Reset() { - *x = ListOracleDataRequest{} +func (x *ListTradesRequest) Reset() { + *x = ListTradesRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[132] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8688,13 +8708,13 @@ func (x *ListOracleDataRequest) Reset() { } } -func (x *ListOracleDataRequest) String() string { +func (x *ListTradesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListOracleDataRequest) ProtoMessage() {} +func (*ListTradesRequest) ProtoMessage() {} -func (x *ListOracleDataRequest) ProtoReflect() protoreflect.Message { +func (x *ListTradesRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[132] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8706,37 +8726,58 @@ func (x *ListOracleDataRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListOracleDataRequest.ProtoReflect.Descriptor instead. -func (*ListOracleDataRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListTradesRequest.ProtoReflect.Descriptor instead. +func (*ListTradesRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{132} } -func (x *ListOracleDataRequest) GetOracleSpecId() string { - if x != nil && x.OracleSpecId != nil { - return *x.OracleSpecId +func (x *ListTradesRequest) GetMarketIds() []string { + if x != nil { + return x.MarketIds } - return "" + return nil } -func (x *ListOracleDataRequest) GetPagination() *Pagination { +func (x *ListTradesRequest) GetOrderIds() []string { + if x != nil { + return x.OrderIds + } + return nil +} + +func (x *ListTradesRequest) GetPartyIds() []string { + if x != nil { + return x.PartyIds + } + return nil +} + +func (x *ListTradesRequest) GetPagination() *Pagination { if x != nil { return x.Pagination } return nil } -// Response to get all seen oracle data -type ListOracleDataResponse struct { +func (x *ListTradesRequest) GetDateRange() *DateRange { + if x != nil { + return x.DateRange + } + return nil +} + +// Response from listing trades +type ListTradesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of seen oracle data and corresponding page information. - OracleData *OracleDataConnection `protobuf:"bytes,1,opt,name=oracle_data,json=oracleData,proto3" json:"oracle_data,omitempty"` + // Page of trades data and corresponding page information. + Trades *TradeConnection `protobuf:"bytes,1,opt,name=trades,proto3" json:"trades,omitempty"` } -func (x *ListOracleDataResponse) Reset() { - *x = ListOracleDataResponse{} +func (x *ListTradesResponse) Reset() { + *x = ListTradesResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[133] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8744,13 +8785,13 @@ func (x *ListOracleDataResponse) Reset() { } } -func (x *ListOracleDataResponse) String() string { +func (x *ListTradesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListOracleDataResponse) ProtoMessage() {} +func (*ListTradesResponse) ProtoMessage() {} -func (x *ListOracleDataResponse) ProtoReflect() protoreflect.Message { +func (x *ListTradesResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[133] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8762,46 +8803,46 @@ func (x *ListOracleDataResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListOracleDataResponse.ProtoReflect.Descriptor instead. -func (*ListOracleDataResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListTradesResponse.ProtoReflect.Descriptor instead. +func (*ListTradesResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{133} } -func (x *ListOracleDataResponse) GetOracleData() *OracleDataConnection { +func (x *ListTradesResponse) GetTrades() *TradeConnection { if x != nil { - return x.OracleData + return x.Trades } return nil } -// Oracle specs data item with the corresponding cursor. -type OracleSpecEdge struct { +// Page of trades and corresponding page information +type TradeConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // External spec data that satisfies the list request. - Node *vega.OracleSpec `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Page of trades and their corresponding cursors. + Edges []*TradeEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *OracleSpecEdge) Reset() { - *x = OracleSpecEdge{} - if protoimpl.UnsafeEnabled { +func (x *TradeConnection) Reset() { + *x = TradeConnection{} + if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[134] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *OracleSpecEdge) String() string { +func (x *TradeConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*OracleSpecEdge) ProtoMessage() {} +func (*TradeConnection) ProtoMessage() {} -func (x *OracleSpecEdge) ProtoReflect() protoreflect.Message { +func (x *TradeConnection) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[134] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8813,39 +8854,39 @@ func (x *OracleSpecEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use OracleSpecEdge.ProtoReflect.Descriptor instead. -func (*OracleSpecEdge) Descriptor() ([]byte, []int) { +// Deprecated: Use TradeConnection.ProtoReflect.Descriptor instead. +func (*TradeConnection) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{134} } -func (x *OracleSpecEdge) GetNode() *vega.OracleSpec { +func (x *TradeConnection) GetEdges() []*TradeEdge { if x != nil { - return x.Node + return x.Edges } return nil } -func (x *OracleSpecEdge) GetCursor() string { +func (x *TradeConnection) GetPageInfo() *PageInfo { if x != nil { - return x.Cursor + return x.PageInfo } - return "" + return nil } -// Page of oracle specs and corresponding page information -type OracleSpecsConnection struct { +// Trade data item with the corresponding cursor.. +type TradeEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of oracle specs data and their corresponding cursors. - Edges []*OracleSpecEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + // Data associated with a trade that has been executed. + Node *vega.Trade `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *OracleSpecsConnection) Reset() { - *x = OracleSpecsConnection{} +func (x *TradeEdge) Reset() { + *x = TradeEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[135] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8853,13 +8894,13 @@ func (x *OracleSpecsConnection) Reset() { } } -func (x *OracleSpecsConnection) String() string { +func (x *TradeEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*OracleSpecsConnection) ProtoMessage() {} +func (*TradeEdge) ProtoMessage() {} -func (x *OracleSpecsConnection) ProtoReflect() protoreflect.Message { +func (x *TradeEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[135] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8871,39 +8912,39 @@ func (x *OracleSpecsConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use OracleSpecsConnection.ProtoReflect.Descriptor instead. -func (*OracleSpecsConnection) Descriptor() ([]byte, []int) { +// Deprecated: Use TradeEdge.ProtoReflect.Descriptor instead. +func (*TradeEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{135} } -func (x *OracleSpecsConnection) GetEdges() []*OracleSpecEdge { +func (x *TradeEdge) GetNode() *vega.Trade { if x != nil { - return x.Edges + return x.Node } return nil } -func (x *OracleSpecsConnection) GetPageInfo() *PageInfo { +func (x *TradeEdge) GetCursor() string { if x != nil { - return x.PageInfo + return x.Cursor } - return nil + return "" } -// Oracle data item with the corresponding cursor. -type OracleDataEdge struct { +// Request to subscribe to a stream of trades +type ObserveTradesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Data that was received from an external oracle. - Node *vega.OracleData `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Restrict the trades streamed to those made on the given markets. + MarketIds []string `protobuf:"bytes,1,rep,name=market_ids,json=marketIds,proto3" json:"market_ids,omitempty"` + // Restrict the trades streamed to those made by the given parties. + PartyIds []string `protobuf:"bytes,2,rep,name=party_ids,json=partyIds,proto3" json:"party_ids,omitempty"` } -func (x *OracleDataEdge) Reset() { - *x = OracleDataEdge{} +func (x *ObserveTradesRequest) Reset() { + *x = ObserveTradesRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[136] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8911,13 +8952,13 @@ func (x *OracleDataEdge) Reset() { } } -func (x *OracleDataEdge) String() string { +func (x *ObserveTradesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*OracleDataEdge) ProtoMessage() {} +func (*ObserveTradesRequest) ProtoMessage() {} -func (x *OracleDataEdge) ProtoReflect() protoreflect.Message { +func (x *ObserveTradesRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[136] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8929,39 +8970,37 @@ func (x *OracleDataEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use OracleDataEdge.ProtoReflect.Descriptor instead. -func (*OracleDataEdge) Descriptor() ([]byte, []int) { +// Deprecated: Use ObserveTradesRequest.ProtoReflect.Descriptor instead. +func (*ObserveTradesRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{136} } -func (x *OracleDataEdge) GetNode() *vega.OracleData { +func (x *ObserveTradesRequest) GetMarketIds() []string { if x != nil { - return x.Node + return x.MarketIds } return nil } -func (x *OracleDataEdge) GetCursor() string { +func (x *ObserveTradesRequest) GetPartyIds() []string { if x != nil { - return x.Cursor + return x.PartyIds } - return "" + return nil } -// Page of oracle data and corresponding page information. -type OracleDataConnection struct { +// Stream of trades +type ObserveTradesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of oracle data and their corresponding cursors. - Edges []*OracleDataEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + // List of 0 or more trades. + Trades []*vega.Trade `protobuf:"bytes,1,rep,name=trades,proto3" json:"trades,omitempty"` } -func (x *OracleDataConnection) Reset() { - *x = OracleDataConnection{} +func (x *ObserveTradesResponse) Reset() { + *x = ObserveTradesResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[137] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8969,13 +9008,13 @@ func (x *OracleDataConnection) Reset() { } } -func (x *OracleDataConnection) String() string { +func (x *ObserveTradesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*OracleDataConnection) ProtoMessage() {} +func (*ObserveTradesResponse) ProtoMessage() {} -func (x *OracleDataConnection) ProtoReflect() protoreflect.Message { +func (x *ObserveTradesResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[137] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -8987,37 +9026,30 @@ func (x *OracleDataConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use OracleDataConnection.ProtoReflect.Descriptor instead. -func (*OracleDataConnection) Descriptor() ([]byte, []int) { +// Deprecated: Use ObserveTradesResponse.ProtoReflect.Descriptor instead. +func (*ObserveTradesResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{137} } -func (x *OracleDataConnection) GetEdges() []*OracleDataEdge { - if x != nil { - return x.Edges - } - return nil -} - -func (x *OracleDataConnection) GetPageInfo() *PageInfo { +func (x *ObserveTradesResponse) GetTrades() []*vega.Trade { if x != nil { - return x.PageInfo + return x.Trades } return nil } -// Request for getting a market by ID -type GetMarketRequest struct { +// Request to get a specific oracle spec by its ID +type GetOracleSpecRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Market ID of the market to retrieve data for. - MarketId string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` + // Oracle spec ID to request data for. + OracleSpecId string `protobuf:"bytes,1,opt,name=oracle_spec_id,json=oracleSpecId,proto3" json:"oracle_spec_id,omitempty"` } -func (x *GetMarketRequest) Reset() { - *x = GetMarketRequest{} +func (x *GetOracleSpecRequest) Reset() { + *x = GetOracleSpecRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[138] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9025,13 +9057,13 @@ func (x *GetMarketRequest) Reset() { } } -func (x *GetMarketRequest) String() string { +func (x *GetOracleSpecRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetMarketRequest) ProtoMessage() {} +func (*GetOracleSpecRequest) ProtoMessage() {} -func (x *GetMarketRequest) ProtoReflect() protoreflect.Message { +func (x *GetOracleSpecRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[138] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9043,30 +9075,30 @@ func (x *GetMarketRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetMarketRequest.ProtoReflect.Descriptor instead. -func (*GetMarketRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GetOracleSpecRequest.ProtoReflect.Descriptor instead. +func (*GetOracleSpecRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{138} } -func (x *GetMarketRequest) GetMarketId() string { +func (x *GetOracleSpecRequest) GetOracleSpecId() string { if x != nil { - return x.MarketId + return x.OracleSpecId } return "" } -// Response from getting a market by ID -type GetMarketResponse struct { +// Response for a oracle spec +type GetOracleSpecResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Information about the market requested. - Market *vega.Market `protobuf:"bytes,1,opt,name=market,proto3" json:"market,omitempty"` + // External data spec matching the ID. + OracleSpec *vega.OracleSpec `protobuf:"bytes,1,opt,name=oracle_spec,json=oracleSpec,proto3" json:"oracle_spec,omitempty"` } -func (x *GetMarketResponse) Reset() { - *x = GetMarketResponse{} +func (x *GetOracleSpecResponse) Reset() { + *x = GetOracleSpecResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[139] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9074,13 +9106,13 @@ func (x *GetMarketResponse) Reset() { } } -func (x *GetMarketResponse) String() string { +func (x *GetOracleSpecResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetMarketResponse) ProtoMessage() {} +func (*GetOracleSpecResponse) ProtoMessage() {} -func (x *GetMarketResponse) ProtoReflect() protoreflect.Message { +func (x *GetOracleSpecResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[139] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9092,32 +9124,30 @@ func (x *GetMarketResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetMarketResponse.ProtoReflect.Descriptor instead. -func (*GetMarketResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GetOracleSpecResponse.ProtoReflect.Descriptor instead. +func (*GetOracleSpecResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{139} } -func (x *GetMarketResponse) GetMarket() *vega.Market { +func (x *GetOracleSpecResponse) GetOracleSpec() *vega.OracleSpec { if x != nil { - return x.Market + return x.OracleSpec } return nil } -// Request for listing markets -type ListMarketsRequest struct { +// Request to get all active oracle specs +type ListOracleSpecsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Pagination control. + // Pagination controls. Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` - // Whether to include settled markets. If not set, settled markets will be included. - IncludeSettled *bool `protobuf:"varint,3,opt,name=include_settled,json=includeSettled,proto3,oneof" json:"include_settled,omitempty"` } -func (x *ListMarketsRequest) Reset() { - *x = ListMarketsRequest{} +func (x *ListOracleSpecsRequest) Reset() { + *x = ListOracleSpecsRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[140] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9125,13 +9155,13 @@ func (x *ListMarketsRequest) Reset() { } } -func (x *ListMarketsRequest) String() string { +func (x *ListOracleSpecsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListMarketsRequest) ProtoMessage() {} +func (*ListOracleSpecsRequest) ProtoMessage() {} -func (x *ListMarketsRequest) ProtoReflect() protoreflect.Message { +func (x *ListOracleSpecsRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[140] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9143,37 +9173,30 @@ func (x *ListMarketsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListMarketsRequest.ProtoReflect.Descriptor instead. -func (*ListMarketsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListOracleSpecsRequest.ProtoReflect.Descriptor instead. +func (*ListOracleSpecsRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{140} } -func (x *ListMarketsRequest) GetPagination() *Pagination { +func (x *ListOracleSpecsRequest) GetPagination() *Pagination { if x != nil { return x.Pagination } return nil } -func (x *ListMarketsRequest) GetIncludeSettled() bool { - if x != nil && x.IncludeSettled != nil { - return *x.IncludeSettled - } - return false -} - -// Response from listing markets -type ListMarketsResponse struct { +// Response to get all active oracle specs +type ListOracleSpecsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of markets and corresponding page information. - Markets *MarketConnection `protobuf:"bytes,1,opt,name=markets,proto3" json:"markets,omitempty"` + // Page of active oracle specs and corresponding page information. + OracleSpecs *OracleSpecsConnection `protobuf:"bytes,1,opt,name=oracle_specs,json=oracleSpecs,proto3" json:"oracle_specs,omitempty"` } -func (x *ListMarketsResponse) Reset() { - *x = ListMarketsResponse{} +func (x *ListOracleSpecsResponse) Reset() { + *x = ListOracleSpecsResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[141] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9181,13 +9204,13 @@ func (x *ListMarketsResponse) Reset() { } } -func (x *ListMarketsResponse) String() string { +func (x *ListOracleSpecsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListMarketsResponse) ProtoMessage() {} +func (*ListOracleSpecsResponse) ProtoMessage() {} -func (x *ListMarketsResponse) ProtoReflect() protoreflect.Message { +func (x *ListOracleSpecsResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[141] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9199,32 +9222,32 @@ func (x *ListMarketsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListMarketsResponse.ProtoReflect.Descriptor instead. -func (*ListMarketsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListOracleSpecsResponse.ProtoReflect.Descriptor instead. +func (*ListOracleSpecsResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{141} } -func (x *ListMarketsResponse) GetMarkets() *MarketConnection { +func (x *ListOracleSpecsResponse) GetOracleSpecs() *OracleSpecsConnection { if x != nil { - return x.Markets + return x.OracleSpecs } return nil } -// Market information with the corresponding cursor. -type MarketEdge struct { +// Request to get all seen oracle data +type ListOracleDataRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Information about the market. - Node *vega.Market `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Oracle spec ID to list data for. + OracleSpecId *string `protobuf:"bytes,1,opt,name=oracle_spec_id,json=oracleSpecId,proto3,oneof" json:"oracle_spec_id,omitempty"` + // Pagination controls. + Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` } -func (x *MarketEdge) Reset() { - *x = MarketEdge{} +func (x *ListOracleDataRequest) Reset() { + *x = ListOracleDataRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[142] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9232,13 +9255,13 @@ func (x *MarketEdge) Reset() { } } -func (x *MarketEdge) String() string { +func (x *ListOracleDataRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MarketEdge) ProtoMessage() {} +func (*ListOracleDataRequest) ProtoMessage() {} -func (x *MarketEdge) ProtoReflect() protoreflect.Message { +func (x *ListOracleDataRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[142] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9250,39 +9273,37 @@ func (x *MarketEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use MarketEdge.ProtoReflect.Descriptor instead. -func (*MarketEdge) Descriptor() ([]byte, []int) { +// Deprecated: Use ListOracleDataRequest.ProtoReflect.Descriptor instead. +func (*ListOracleDataRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{142} } -func (x *MarketEdge) GetNode() *vega.Market { - if x != nil { - return x.Node +func (x *ListOracleDataRequest) GetOracleSpecId() string { + if x != nil && x.OracleSpecId != nil { + return *x.OracleSpecId } - return nil + return "" } -func (x *MarketEdge) GetCursor() string { +func (x *ListOracleDataRequest) GetPagination() *Pagination { if x != nil { - return x.Cursor + return x.Pagination } - return "" + return nil } -// Page of markets and corresponding page information. -type MarketConnection struct { +// Response to get all seen oracle data +type ListOracleDataResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of markets and their corresponding cursors. - Edges []*MarketEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + // Page of seen oracle data and corresponding page information. + OracleData *OracleDataConnection `protobuf:"bytes,1,opt,name=oracle_data,json=oracleData,proto3" json:"oracle_data,omitempty"` } -func (x *MarketConnection) Reset() { - *x = MarketConnection{} +func (x *ListOracleDataResponse) Reset() { + *x = ListOracleDataResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[143] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9290,13 +9311,13 @@ func (x *MarketConnection) Reset() { } } -func (x *MarketConnection) String() string { +func (x *ListOracleDataResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MarketConnection) ProtoMessage() {} +func (*ListOracleDataResponse) ProtoMessage() {} -func (x *MarketConnection) ProtoReflect() protoreflect.Message { +func (x *ListOracleDataResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[143] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9308,43 +9329,32 @@ func (x *MarketConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use MarketConnection.ProtoReflect.Descriptor instead. -func (*MarketConnection) Descriptor() ([]byte, []int) { +// Deprecated: Use ListOracleDataResponse.ProtoReflect.Descriptor instead. +func (*ListOracleDataResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{143} } -func (x *MarketConnection) GetEdges() []*MarketEdge { - if x != nil { - return x.Edges - } - return nil -} - -func (x *MarketConnection) GetPageInfo() *PageInfo { +func (x *ListOracleDataResponse) GetOracleData() *OracleDataConnection { if x != nil { - return x.PageInfo + return x.OracleData } return nil } -// Request for listing successor markets. -type ListSuccessorMarketsRequest struct { +// Oracle specs data item with the corresponding cursor. +type OracleSpecEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Market ID that is a member of the succession line. This can be the original market - // or any subsequent child market that succeeded it. - MarketId string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` - // Flag to indicate whether or not to include the full succession line, or only list - // the children of the given market ID. If true, the full succession line is included. - IncludeFullHistory bool `protobuf:"varint,2,opt,name=include_full_history,json=includeFullHistory,proto3" json:"include_full_history,omitempty"` - // Pagination control. - Pagination *Pagination `protobuf:"bytes,3,opt,name=pagination,proto3" json:"pagination,omitempty"` + // External spec data that satisfies the list request. + Node *vega.OracleSpec `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *ListSuccessorMarketsRequest) Reset() { - *x = ListSuccessorMarketsRequest{} +func (x *OracleSpecEdge) Reset() { + *x = OracleSpecEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[144] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9352,13 +9362,13 @@ func (x *ListSuccessorMarketsRequest) Reset() { } } -func (x *ListSuccessorMarketsRequest) String() string { +func (x *OracleSpecEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListSuccessorMarketsRequest) ProtoMessage() {} +func (*OracleSpecEdge) ProtoMessage() {} -func (x *ListSuccessorMarketsRequest) ProtoReflect() protoreflect.Message { +func (x *OracleSpecEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[144] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9370,48 +9380,39 @@ func (x *ListSuccessorMarketsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListSuccessorMarketsRequest.ProtoReflect.Descriptor instead. -func (*ListSuccessorMarketsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use OracleSpecEdge.ProtoReflect.Descriptor instead. +func (*OracleSpecEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{144} } -func (x *ListSuccessorMarketsRequest) GetMarketId() string { - if x != nil { - return x.MarketId - } - return "" -} - -func (x *ListSuccessorMarketsRequest) GetIncludeFullHistory() bool { +func (x *OracleSpecEdge) GetNode() *vega.OracleSpec { if x != nil { - return x.IncludeFullHistory + return x.Node } - return false + return nil } -func (x *ListSuccessorMarketsRequest) GetPagination() *Pagination { +func (x *OracleSpecEdge) GetCursor() string { if x != nil { - return x.Pagination + return x.Cursor } - return nil + return "" } -// Successor market information includes the market that is a member of the succession line -// and any governance data that is associated with proposals for child markets -// whether enacted or not. -type SuccessorMarket struct { +// Page of oracle specs and corresponding page information +type OracleSpecsConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // The market that is a member of the succession line. - Market *vega.Market `protobuf:"bytes,1,opt,name=market,proto3" json:"market,omitempty"` - // All proposals for child markets that have the market as a parent. - Proposals []*vega.GovernanceData `protobuf:"bytes,2,rep,name=proposals,proto3" json:"proposals,omitempty"` + // Page of oracle specs data and their corresponding cursors. + Edges []*OracleSpecEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *SuccessorMarket) Reset() { - *x = SuccessorMarket{} +func (x *OracleSpecsConnection) Reset() { + *x = OracleSpecsConnection{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[145] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9419,13 +9420,13 @@ func (x *SuccessorMarket) Reset() { } } -func (x *SuccessorMarket) String() string { +func (x *OracleSpecsConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SuccessorMarket) ProtoMessage() {} +func (*OracleSpecsConnection) ProtoMessage() {} -func (x *SuccessorMarket) ProtoReflect() protoreflect.Message { +func (x *OracleSpecsConnection) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[145] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9437,39 +9438,39 @@ func (x *SuccessorMarket) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SuccessorMarket.ProtoReflect.Descriptor instead. -func (*SuccessorMarket) Descriptor() ([]byte, []int) { +// Deprecated: Use OracleSpecsConnection.ProtoReflect.Descriptor instead. +func (*OracleSpecsConnection) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{145} } -func (x *SuccessorMarket) GetMarket() *vega.Market { +func (x *OracleSpecsConnection) GetEdges() []*OracleSpecEdge { if x != nil { - return x.Market + return x.Edges } return nil } -func (x *SuccessorMarket) GetProposals() []*vega.GovernanceData { +func (x *OracleSpecsConnection) GetPageInfo() *PageInfo { if x != nil { - return x.Proposals + return x.PageInfo } return nil } -// Successor market record with the corresponding cursor for paginated results -type SuccessorMarketEdge struct { +// Oracle data item with the corresponding cursor. +type OracleDataEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Successor market record. - Node *SuccessorMarket `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor identifying the record for pagination control. + // Data that was received from an external oracle. + Node *vega.OracleData `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *SuccessorMarketEdge) Reset() { - *x = SuccessorMarketEdge{} +func (x *OracleDataEdge) Reset() { + *x = OracleDataEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[146] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9477,13 +9478,13 @@ func (x *SuccessorMarketEdge) Reset() { } } -func (x *SuccessorMarketEdge) String() string { +func (x *OracleDataEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SuccessorMarketEdge) ProtoMessage() {} +func (*OracleDataEdge) ProtoMessage() {} -func (x *SuccessorMarketEdge) ProtoReflect() protoreflect.Message { +func (x *OracleDataEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[146] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9495,39 +9496,39 @@ func (x *SuccessorMarketEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SuccessorMarketEdge.ProtoReflect.Descriptor instead. -func (*SuccessorMarketEdge) Descriptor() ([]byte, []int) { +// Deprecated: Use OracleDataEdge.ProtoReflect.Descriptor instead. +func (*OracleDataEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{146} } -func (x *SuccessorMarketEdge) GetNode() *SuccessorMarket { +func (x *OracleDataEdge) GetNode() *vega.OracleData { if x != nil { return x.Node } return nil } -func (x *SuccessorMarketEdge) GetCursor() string { +func (x *OracleDataEdge) GetCursor() string { if x != nil { return x.Cursor } return "" } -// Page of successor market records and corresponding page information. -type SuccessorMarketConnection struct { +// Page of oracle data and corresponding page information. +type OracleDataConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of successor markets and their cursors. - Edges []*SuccessorMarketEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information for pagination control. + // Page of oracle data and their corresponding cursors. + Edges []*OracleDataEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *SuccessorMarketConnection) Reset() { - *x = SuccessorMarketConnection{} +func (x *OracleDataConnection) Reset() { + *x = OracleDataConnection{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[147] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9535,13 +9536,13 @@ func (x *SuccessorMarketConnection) Reset() { } } -func (x *SuccessorMarketConnection) String() string { +func (x *OracleDataConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SuccessorMarketConnection) ProtoMessage() {} +func (*OracleDataConnection) ProtoMessage() {} -func (x *SuccessorMarketConnection) ProtoReflect() protoreflect.Message { +func (x *OracleDataConnection) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[147] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9553,37 +9554,37 @@ func (x *SuccessorMarketConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SuccessorMarketConnection.ProtoReflect.Descriptor instead. -func (*SuccessorMarketConnection) Descriptor() ([]byte, []int) { +// Deprecated: Use OracleDataConnection.ProtoReflect.Descriptor instead. +func (*OracleDataConnection) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{147} } -func (x *SuccessorMarketConnection) GetEdges() []*SuccessorMarketEdge { +func (x *OracleDataConnection) GetEdges() []*OracleDataEdge { if x != nil { return x.Edges } return nil } -func (x *SuccessorMarketConnection) GetPageInfo() *PageInfo { +func (x *OracleDataConnection) GetPageInfo() *PageInfo { if x != nil { return x.PageInfo } return nil } -// Response from a list successor markets request. -type ListSuccessorMarketsResponse struct { +// Request for getting a market by ID +type GetMarketRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // List of markets in the succession line. - SuccessorMarkets *SuccessorMarketConnection `protobuf:"bytes,1,opt,name=successor_markets,json=successorMarkets,proto3" json:"successor_markets,omitempty"` + // Market ID of the market to retrieve data for. + MarketId string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` } -func (x *ListSuccessorMarketsResponse) Reset() { - *x = ListSuccessorMarketsResponse{} +func (x *GetMarketRequest) Reset() { + *x = GetMarketRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[148] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9591,13 +9592,13 @@ func (x *ListSuccessorMarketsResponse) Reset() { } } -func (x *ListSuccessorMarketsResponse) String() string { +func (x *GetMarketRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListSuccessorMarketsResponse) ProtoMessage() {} +func (*GetMarketRequest) ProtoMessage() {} -func (x *ListSuccessorMarketsResponse) ProtoReflect() protoreflect.Message { +func (x *GetMarketRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[148] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9609,30 +9610,30 @@ func (x *ListSuccessorMarketsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListSuccessorMarketsResponse.ProtoReflect.Descriptor instead. -func (*ListSuccessorMarketsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GetMarketRequest.ProtoReflect.Descriptor instead. +func (*GetMarketRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{148} } -func (x *ListSuccessorMarketsResponse) GetSuccessorMarkets() *SuccessorMarketConnection { +func (x *GetMarketRequest) GetMarketId() string { if x != nil { - return x.SuccessorMarkets + return x.MarketId } - return nil + return "" } -// Request to get party by ID -type GetPartyRequest struct { +// Response from getting a market by ID +type GetMarketResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Party ID to retrieve party information for. - PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` + // Information about the market requested. + Market *vega.Market `protobuf:"bytes,1,opt,name=market,proto3" json:"market,omitempty"` } -func (x *GetPartyRequest) Reset() { - *x = GetPartyRequest{} +func (x *GetMarketResponse) Reset() { + *x = GetMarketResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[149] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9640,13 +9641,13 @@ func (x *GetPartyRequest) Reset() { } } -func (x *GetPartyRequest) String() string { +func (x *GetMarketResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetPartyRequest) ProtoMessage() {} +func (*GetMarketResponse) ProtoMessage() {} -func (x *GetPartyRequest) ProtoReflect() protoreflect.Message { +func (x *GetMarketResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[149] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9658,30 +9659,32 @@ func (x *GetPartyRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetPartyRequest.ProtoReflect.Descriptor instead. -func (*GetPartyRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GetMarketResponse.ProtoReflect.Descriptor instead. +func (*GetMarketResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{149} } -func (x *GetPartyRequest) GetPartyId() string { +func (x *GetMarketResponse) GetMarket() *vega.Market { if x != nil { - return x.PartyId + return x.Market } - return "" + return nil } -// Response from getting party by ID -type GetPartyResponse struct { +// Request for listing markets +type ListMarketsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Data for the party requested. - Party *vega.Party `protobuf:"bytes,1,opt,name=party,proto3" json:"party,omitempty"` + // Pagination control. + Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + // Whether to include settled markets. If not set, settled markets will be included. + IncludeSettled *bool `protobuf:"varint,3,opt,name=include_settled,json=includeSettled,proto3,oneof" json:"include_settled,omitempty"` } -func (x *GetPartyResponse) Reset() { - *x = GetPartyResponse{} +func (x *ListMarketsRequest) Reset() { + *x = ListMarketsRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[150] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9689,13 +9692,13 @@ func (x *GetPartyResponse) Reset() { } } -func (x *GetPartyResponse) String() string { +func (x *ListMarketsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetPartyResponse) ProtoMessage() {} +func (*ListMarketsRequest) ProtoMessage() {} -func (x *GetPartyResponse) ProtoReflect() protoreflect.Message { +func (x *ListMarketsRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[150] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9707,32 +9710,37 @@ func (x *GetPartyResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetPartyResponse.ProtoReflect.Descriptor instead. -func (*GetPartyResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListMarketsRequest.ProtoReflect.Descriptor instead. +func (*ListMarketsRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{150} } -func (x *GetPartyResponse) GetParty() *vega.Party { +func (x *ListMarketsRequest) GetPagination() *Pagination { if x != nil { - return x.Party + return x.Pagination } return nil } -// Request to list parties by ID -type ListPartiesRequest struct { +func (x *ListMarketsRequest) GetIncludeSettled() bool { + if x != nil && x.IncludeSettled != nil { + return *x.IncludeSettled + } + return false +} + +// Response from listing markets +type ListMarketsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Restrict the returned party to only the given party ID. If not set, all parties will be returned. - PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` - // Pagination control. - Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` + // Page of markets and corresponding page information. + Markets *MarketConnection `protobuf:"bytes,1,opt,name=markets,proto3" json:"markets,omitempty"` } -func (x *ListPartiesRequest) Reset() { - *x = ListPartiesRequest{} +func (x *ListMarketsResponse) Reset() { + *x = ListMarketsResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[151] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9740,13 +9748,13 @@ func (x *ListPartiesRequest) Reset() { } } -func (x *ListPartiesRequest) String() string { +func (x *ListMarketsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListPartiesRequest) ProtoMessage() {} +func (*ListMarketsResponse) ProtoMessage() {} -func (x *ListPartiesRequest) ProtoReflect() protoreflect.Message { +func (x *ListMarketsResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[151] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9758,37 +9766,32 @@ func (x *ListPartiesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListPartiesRequest.ProtoReflect.Descriptor instead. -func (*ListPartiesRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListMarketsResponse.ProtoReflect.Descriptor instead. +func (*ListMarketsResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{151} } -func (x *ListPartiesRequest) GetPartyId() string { - if x != nil { - return x.PartyId - } - return "" -} - -func (x *ListPartiesRequest) GetPagination() *Pagination { +func (x *ListMarketsResponse) GetMarkets() *MarketConnection { if x != nil { - return x.Pagination + return x.Markets } return nil } -// Response from listing parties -type ListPartiesResponse struct { +// Market information with the corresponding cursor. +type MarketEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of parties data and corresponding page information. - Parties *PartyConnection `protobuf:"bytes,1,opt,name=parties,proto3" json:"parties,omitempty"` + // Information about the market. + Node *vega.Market `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *ListPartiesResponse) Reset() { - *x = ListPartiesResponse{} +func (x *MarketEdge) Reset() { + *x = MarketEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[152] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9796,13 +9799,13 @@ func (x *ListPartiesResponse) Reset() { } } -func (x *ListPartiesResponse) String() string { +func (x *MarketEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListPartiesResponse) ProtoMessage() {} +func (*MarketEdge) ProtoMessage() {} -func (x *ListPartiesResponse) ProtoReflect() protoreflect.Message { +func (x *MarketEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[152] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9814,32 +9817,39 @@ func (x *ListPartiesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListPartiesResponse.ProtoReflect.Descriptor instead. -func (*ListPartiesResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use MarketEdge.ProtoReflect.Descriptor instead. +func (*MarketEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{152} } -func (x *ListPartiesResponse) GetParties() *PartyConnection { +func (x *MarketEdge) GetNode() *vega.Market { if x != nil { - return x.Parties + return x.Node } return nil } -// Party data with the corresponding cursor. -type PartyEdge struct { +func (x *MarketEdge) GetCursor() string { + if x != nil { + return x.Cursor + } + return "" +} + +// Page of markets and corresponding page information. +type MarketConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Data associated with a party. - Node *vega.Party `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Page of markets and their corresponding cursors. + Edges []*MarketEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *PartyEdge) Reset() { - *x = PartyEdge{} +func (x *MarketConnection) Reset() { + *x = MarketConnection{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[153] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9847,13 +9857,13 @@ func (x *PartyEdge) Reset() { } } -func (x *PartyEdge) String() string { +func (x *MarketConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PartyEdge) ProtoMessage() {} +func (*MarketConnection) ProtoMessage() {} -func (x *PartyEdge) ProtoReflect() protoreflect.Message { +func (x *MarketConnection) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[153] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9865,39 +9875,43 @@ func (x *PartyEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PartyEdge.ProtoReflect.Descriptor instead. -func (*PartyEdge) Descriptor() ([]byte, []int) { +// Deprecated: Use MarketConnection.ProtoReflect.Descriptor instead. +func (*MarketConnection) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{153} } -func (x *PartyEdge) GetNode() *vega.Party { +func (x *MarketConnection) GetEdges() []*MarketEdge { if x != nil { - return x.Node + return x.Edges } return nil } -func (x *PartyEdge) GetCursor() string { +func (x *MarketConnection) GetPageInfo() *PageInfo { if x != nil { - return x.Cursor + return x.PageInfo } - return "" + return nil } -// Page of parties data and corresponding page information. -type PartyConnection struct { +// Request for listing successor markets. +type ListSuccessorMarketsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of parties and their corresponding cursors. - Edges []*PartyEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + // Market ID that is a member of the succession line. This can be the original market + // or any subsequent child market that succeeded it. + MarketId string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` + // Flag to indicate whether or not to include the full succession line, or only list + // the children of the given market ID. If true, the full succession line is included. + IncludeFullHistory bool `protobuf:"varint,2,opt,name=include_full_history,json=includeFullHistory,proto3" json:"include_full_history,omitempty"` + // Pagination control. + Pagination *Pagination `protobuf:"bytes,3,opt,name=pagination,proto3" json:"pagination,omitempty"` } -func (x *PartyConnection) Reset() { - *x = PartyConnection{} +func (x *ListSuccessorMarketsRequest) Reset() { + *x = ListSuccessorMarketsRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[154] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9905,13 +9919,13 @@ func (x *PartyConnection) Reset() { } } -func (x *PartyConnection) String() string { +func (x *ListSuccessorMarketsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PartyConnection) ProtoMessage() {} +func (*ListSuccessorMarketsRequest) ProtoMessage() {} -func (x *PartyConnection) ProtoReflect() protoreflect.Message { +func (x *ListSuccessorMarketsRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[154] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9923,40 +9937,48 @@ func (x *PartyConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PartyConnection.ProtoReflect.Descriptor instead. -func (*PartyConnection) Descriptor() ([]byte, []int) { +// Deprecated: Use ListSuccessorMarketsRequest.ProtoReflect.Descriptor instead. +func (*ListSuccessorMarketsRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{154} } -func (x *PartyConnection) GetEdges() []*PartyEdge { +func (x *ListSuccessorMarketsRequest) GetMarketId() string { if x != nil { - return x.Edges + return x.MarketId } - return nil + return "" } -func (x *PartyConnection) GetPageInfo() *PageInfo { +func (x *ListSuccessorMarketsRequest) GetIncludeFullHistory() bool { if x != nil { - return x.PageInfo + return x.IncludeFullHistory + } + return false +} + +func (x *ListSuccessorMarketsRequest) GetPagination() *Pagination { + if x != nil { + return x.Pagination } return nil } -// Request to list profiles by party ID. -type ListPartiesProfilesRequest struct { +// Successor market information includes the market that is a member of the succession line +// and any governance data that is associated with proposals for child markets +// whether enacted or not. +type SuccessorMarket struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Restrict the returned profiles to only the given party IDs. If not set, - // all parties' profiles will be returned. - Parties []string `protobuf:"bytes,1,rep,name=parties,proto3" json:"parties,omitempty"` - // Pagination control. - Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` + // The market that is a member of the succession line. + Market *vega.Market `protobuf:"bytes,1,opt,name=market,proto3" json:"market,omitempty"` + // All proposals for child markets that have the market as a parent. + Proposals []*vega.GovernanceData `protobuf:"bytes,2,rep,name=proposals,proto3" json:"proposals,omitempty"` } -func (x *ListPartiesProfilesRequest) Reset() { - *x = ListPartiesProfilesRequest{} +func (x *SuccessorMarket) Reset() { + *x = SuccessorMarket{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[155] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9964,13 +9986,13 @@ func (x *ListPartiesProfilesRequest) Reset() { } } -func (x *ListPartiesProfilesRequest) String() string { +func (x *SuccessorMarket) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListPartiesProfilesRequest) ProtoMessage() {} +func (*SuccessorMarket) ProtoMessage() {} -func (x *ListPartiesProfilesRequest) ProtoReflect() protoreflect.Message { +func (x *SuccessorMarket) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[155] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -9982,37 +10004,39 @@ func (x *ListPartiesProfilesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListPartiesProfilesRequest.ProtoReflect.Descriptor instead. -func (*ListPartiesProfilesRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use SuccessorMarket.ProtoReflect.Descriptor instead. +func (*SuccessorMarket) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{155} } -func (x *ListPartiesProfilesRequest) GetParties() []string { +func (x *SuccessorMarket) GetMarket() *vega.Market { if x != nil { - return x.Parties + return x.Market } return nil } -func (x *ListPartiesProfilesRequest) GetPagination() *Pagination { +func (x *SuccessorMarket) GetProposals() []*vega.GovernanceData { if x != nil { - return x.Pagination + return x.Proposals } return nil } -// Response from listing parties' profiles. -type ListPartiesProfilesResponse struct { +// Successor market record with the corresponding cursor for paginated results +type SuccessorMarketEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of profile data and corresponding page information. - Profiles *PartiesProfilesConnection `protobuf:"bytes,1,opt,name=profiles,proto3" json:"profiles,omitempty"` + // Successor market record. + Node *SuccessorMarket `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor identifying the record for pagination control. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *ListPartiesProfilesResponse) Reset() { - *x = ListPartiesProfilesResponse{} +func (x *SuccessorMarketEdge) Reset() { + *x = SuccessorMarketEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[156] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10020,13 +10044,13 @@ func (x *ListPartiesProfilesResponse) Reset() { } } -func (x *ListPartiesProfilesResponse) String() string { +func (x *SuccessorMarketEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListPartiesProfilesResponse) ProtoMessage() {} +func (*SuccessorMarketEdge) ProtoMessage() {} -func (x *ListPartiesProfilesResponse) ProtoReflect() protoreflect.Message { +func (x *SuccessorMarketEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[156] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10038,32 +10062,39 @@ func (x *ListPartiesProfilesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListPartiesProfilesResponse.ProtoReflect.Descriptor instead. -func (*ListPartiesProfilesResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use SuccessorMarketEdge.ProtoReflect.Descriptor instead. +func (*SuccessorMarketEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{156} } -func (x *ListPartiesProfilesResponse) GetProfiles() *PartiesProfilesConnection { +func (x *SuccessorMarketEdge) GetNode() *SuccessorMarket { if x != nil { - return x.Profiles + return x.Node } return nil } -// Party's profile data with the corresponding cursor. -type PartyProfileEdge struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache +func (x *SuccessorMarketEdge) GetCursor() string { + if x != nil { + return x.Cursor + } + return "" +} + +// Page of successor market records and corresponding page information. +type SuccessorMarketConnection struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Data associated with a party's profile. - Node *vega.PartyProfile `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Page of successor markets and their cursors. + Edges []*SuccessorMarketEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information for pagination control. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *PartyProfileEdge) Reset() { - *x = PartyProfileEdge{} +func (x *SuccessorMarketConnection) Reset() { + *x = SuccessorMarketConnection{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[157] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10071,13 +10102,13 @@ func (x *PartyProfileEdge) Reset() { } } -func (x *PartyProfileEdge) String() string { +func (x *SuccessorMarketConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PartyProfileEdge) ProtoMessage() {} +func (*SuccessorMarketConnection) ProtoMessage() {} -func (x *PartyProfileEdge) ProtoReflect() protoreflect.Message { +func (x *SuccessorMarketConnection) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[157] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10089,39 +10120,37 @@ func (x *PartyProfileEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PartyProfileEdge.ProtoReflect.Descriptor instead. -func (*PartyProfileEdge) Descriptor() ([]byte, []int) { +// Deprecated: Use SuccessorMarketConnection.ProtoReflect.Descriptor instead. +func (*SuccessorMarketConnection) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{157} } -func (x *PartyProfileEdge) GetNode() *vega.PartyProfile { +func (x *SuccessorMarketConnection) GetEdges() []*SuccessorMarketEdge { if x != nil { - return x.Node + return x.Edges } return nil } -func (x *PartyProfileEdge) GetCursor() string { +func (x *SuccessorMarketConnection) GetPageInfo() *PageInfo { if x != nil { - return x.Cursor + return x.PageInfo } - return "" + return nil } -// Page of profile data per party and corresponding page information. -type PartiesProfilesConnection struct { +// Response from a list successor markets request. +type ListSuccessorMarketsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of profiles and their corresponding cursors. - Edges []*PartyProfileEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + // List of markets in the succession line. + SuccessorMarkets *SuccessorMarketConnection `protobuf:"bytes,1,opt,name=successor_markets,json=successorMarkets,proto3" json:"successor_markets,omitempty"` } -func (x *PartiesProfilesConnection) Reset() { - *x = PartiesProfilesConnection{} +func (x *ListSuccessorMarketsResponse) Reset() { + *x = ListSuccessorMarketsResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[158] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10129,13 +10158,13 @@ func (x *PartiesProfilesConnection) Reset() { } } -func (x *PartiesProfilesConnection) String() string { +func (x *ListSuccessorMarketsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PartiesProfilesConnection) ProtoMessage() {} +func (*ListSuccessorMarketsResponse) ProtoMessage() {} -func (x *PartiesProfilesConnection) ProtoReflect() protoreflect.Message { +func (x *ListSuccessorMarketsResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[158] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10147,39 +10176,30 @@ func (x *PartiesProfilesConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PartiesProfilesConnection.ProtoReflect.Descriptor instead. -func (*PartiesProfilesConnection) Descriptor() ([]byte, []int) { +// Deprecated: Use ListSuccessorMarketsResponse.ProtoReflect.Descriptor instead. +func (*ListSuccessorMarketsResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{158} } -func (x *PartiesProfilesConnection) GetEdges() []*PartyProfileEdge { - if x != nil { - return x.Edges - } - return nil -} - -func (x *PartiesProfilesConnection) GetPageInfo() *PageInfo { +func (x *ListSuccessorMarketsResponse) GetSuccessorMarkets() *SuccessorMarketConnection { if x != nil { - return x.PageInfo + return x.SuccessorMarkets } return nil } -// Order data with the corresponding cursor. -type OrderEdge struct { +// Request to get party by ID +type GetPartyRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Data associated with an order submitted to a Vega node. - Node *vega.Order `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Party ID to retrieve party information for. + PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` } -func (x *OrderEdge) Reset() { - *x = OrderEdge{} +func (x *GetPartyRequest) Reset() { + *x = GetPartyRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[159] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10187,13 +10207,13 @@ func (x *OrderEdge) Reset() { } } -func (x *OrderEdge) String() string { +func (x *GetPartyRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*OrderEdge) ProtoMessage() {} +func (*GetPartyRequest) ProtoMessage() {} -func (x *OrderEdge) ProtoReflect() protoreflect.Message { +func (x *GetPartyRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[159] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10205,41 +10225,30 @@ func (x *OrderEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use OrderEdge.ProtoReflect.Descriptor instead. -func (*OrderEdge) Descriptor() ([]byte, []int) { +// Deprecated: Use GetPartyRequest.ProtoReflect.Descriptor instead. +func (*GetPartyRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{159} } -func (x *OrderEdge) GetNode() *vega.Order { - if x != nil { - return x.Node - } - return nil -} - -func (x *OrderEdge) GetCursor() string { +func (x *GetPartyRequest) GetPartyId() string { if x != nil { - return x.Cursor + return x.PartyId } return "" } -// Request for listing margin levels -type ListMarginLevelsRequest struct { +// Response from getting party by ID +type GetPartyResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Party ID for which to list the margin levels - PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` - // Market ID for which to list the margin levels - MarketId string `protobuf:"bytes,2,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` - // Pagination control - Pagination *Pagination `protobuf:"bytes,3,opt,name=pagination,proto3" json:"pagination,omitempty"` + // Data for the party requested. + Party *vega.Party `protobuf:"bytes,1,opt,name=party,proto3" json:"party,omitempty"` } -func (x *ListMarginLevelsRequest) Reset() { - *x = ListMarginLevelsRequest{} +func (x *GetPartyResponse) Reset() { + *x = GetPartyResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[160] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10247,13 +10256,13 @@ func (x *ListMarginLevelsRequest) Reset() { } } -func (x *ListMarginLevelsRequest) String() string { +func (x *GetPartyResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListMarginLevelsRequest) ProtoMessage() {} +func (*GetPartyResponse) ProtoMessage() {} -func (x *ListMarginLevelsRequest) ProtoReflect() protoreflect.Message { +func (x *GetPartyResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[160] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10265,44 +10274,32 @@ func (x *ListMarginLevelsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListMarginLevelsRequest.ProtoReflect.Descriptor instead. -func (*ListMarginLevelsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GetPartyResponse.ProtoReflect.Descriptor instead. +func (*GetPartyResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{160} } -func (x *ListMarginLevelsRequest) GetPartyId() string { - if x != nil { - return x.PartyId - } - return "" -} - -func (x *ListMarginLevelsRequest) GetMarketId() string { - if x != nil { - return x.MarketId - } - return "" -} - -func (x *ListMarginLevelsRequest) GetPagination() *Pagination { +func (x *GetPartyResponse) GetParty() *vega.Party { if x != nil { - return x.Pagination + return x.Party } return nil } -// Response from listing margin levels -type ListMarginLevelsResponse struct { +// Request to list parties by ID +type ListPartiesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of margin levels data and corresponding page information. - MarginLevels *MarginConnection `protobuf:"bytes,1,opt,name=margin_levels,json=marginLevels,proto3" json:"margin_levels,omitempty"` + // Restrict the returned party to only the given party ID. If not set, all parties will be returned. + PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` + // Pagination control. + Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` } -func (x *ListMarginLevelsResponse) Reset() { - *x = ListMarginLevelsResponse{} +func (x *ListPartiesRequest) Reset() { + *x = ListPartiesRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[161] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10310,13 +10307,13 @@ func (x *ListMarginLevelsResponse) Reset() { } } -func (x *ListMarginLevelsResponse) String() string { +func (x *ListPartiesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListMarginLevelsResponse) ProtoMessage() {} +func (*ListPartiesRequest) ProtoMessage() {} -func (x *ListMarginLevelsResponse) ProtoReflect() protoreflect.Message { +func (x *ListPartiesRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[161] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10328,34 +10325,37 @@ func (x *ListMarginLevelsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListMarginLevelsResponse.ProtoReflect.Descriptor instead. -func (*ListMarginLevelsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListPartiesRequest.ProtoReflect.Descriptor instead. +func (*ListPartiesRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{161} } -func (x *ListMarginLevelsResponse) GetMarginLevels() *MarginConnection { +func (x *ListPartiesRequest) GetPartyId() string { if x != nil { - return x.MarginLevels + return x.PartyId + } + return "" +} + +func (x *ListPartiesRequest) GetPagination() *Pagination { + if x != nil { + return x.Pagination } return nil } -// Request to subscribe to a stream of MarginLevels data. -// If a party ID is provided, the stream will contain margin levels for that party only. -// Optionally, the list can be additionally filtered by market -type ObserveMarginLevelsRequest struct { +// Response from listing parties +type ListPartiesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Restrict margin level updates to those relating to the given party. - PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` - // Restrict margin level updates to those relating to the given market. - MarketId *string `protobuf:"bytes,2,opt,name=market_id,json=marketId,proto3,oneof" json:"market_id,omitempty"` + // Page of parties data and corresponding page information. + Parties *PartyConnection `protobuf:"bytes,1,opt,name=parties,proto3" json:"parties,omitempty"` } -func (x *ObserveMarginLevelsRequest) Reset() { - *x = ObserveMarginLevelsRequest{} +func (x *ListPartiesResponse) Reset() { + *x = ListPartiesResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[162] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10363,13 +10363,13 @@ func (x *ObserveMarginLevelsRequest) Reset() { } } -func (x *ObserveMarginLevelsRequest) String() string { +func (x *ListPartiesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ObserveMarginLevelsRequest) ProtoMessage() {} +func (*ListPartiesResponse) ProtoMessage() {} -func (x *ObserveMarginLevelsRequest) ProtoReflect() protoreflect.Message { +func (x *ListPartiesResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[162] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10381,37 +10381,32 @@ func (x *ObserveMarginLevelsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ObserveMarginLevelsRequest.ProtoReflect.Descriptor instead. -func (*ObserveMarginLevelsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListPartiesResponse.ProtoReflect.Descriptor instead. +func (*ListPartiesResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{162} } -func (x *ObserveMarginLevelsRequest) GetPartyId() string { +func (x *ListPartiesResponse) GetParties() *PartyConnection { if x != nil { - return x.PartyId - } - return "" -} - -func (x *ObserveMarginLevelsRequest) GetMarketId() string { - if x != nil && x.MarketId != nil { - return *x.MarketId + return x.Parties } - return "" + return nil } -// Response from subscribing to margin levels data -type ObserveMarginLevelsResponse struct { +// Party data with the corresponding cursor. +type PartyEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Margin levels data that match the subscription request filters. - MarginLevels *vega.MarginLevels `protobuf:"bytes,1,opt,name=margin_levels,json=marginLevels,proto3" json:"margin_levels,omitempty"` + // Data associated with a party. + Node *vega.Party `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *ObserveMarginLevelsResponse) Reset() { - *x = ObserveMarginLevelsResponse{} +func (x *PartyEdge) Reset() { + *x = PartyEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[163] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10419,13 +10414,13 @@ func (x *ObserveMarginLevelsResponse) Reset() { } } -func (x *ObserveMarginLevelsResponse) String() string { +func (x *PartyEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ObserveMarginLevelsResponse) ProtoMessage() {} +func (*PartyEdge) ProtoMessage() {} -func (x *ObserveMarginLevelsResponse) ProtoReflect() protoreflect.Message { +func (x *PartyEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[163] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10437,32 +10432,39 @@ func (x *ObserveMarginLevelsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ObserveMarginLevelsResponse.ProtoReflect.Descriptor instead. -func (*ObserveMarginLevelsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use PartyEdge.ProtoReflect.Descriptor instead. +func (*PartyEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{163} } -func (x *ObserveMarginLevelsResponse) GetMarginLevels() *vega.MarginLevels { +func (x *PartyEdge) GetNode() *vega.Party { if x != nil { - return x.MarginLevels + return x.Node } return nil } -// Page of orders data and corresponding page information. -type OrderConnection struct { +func (x *PartyEdge) GetCursor() string { + if x != nil { + return x.Cursor + } + return "" +} + +// Page of parties data and corresponding page information. +type PartyConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of orders and their corresponding cursors. - Edges []*OrderEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page of parties and their corresponding cursors. + Edges []*PartyEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` // Page information that is used for fetching further pages. PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *OrderConnection) Reset() { - *x = OrderConnection{} +func (x *PartyConnection) Reset() { + *x = PartyConnection{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[164] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10470,13 +10472,13 @@ func (x *OrderConnection) Reset() { } } -func (x *OrderConnection) String() string { +func (x *PartyConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*OrderConnection) ProtoMessage() {} +func (*PartyConnection) ProtoMessage() {} -func (x *OrderConnection) ProtoReflect() protoreflect.Message { +func (x *PartyConnection) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[164] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10488,39 +10490,40 @@ func (x *OrderConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use OrderConnection.ProtoReflect.Descriptor instead. -func (*OrderConnection) Descriptor() ([]byte, []int) { +// Deprecated: Use PartyConnection.ProtoReflect.Descriptor instead. +func (*PartyConnection) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{164} } -func (x *OrderConnection) GetEdges() []*OrderEdge { +func (x *PartyConnection) GetEdges() []*PartyEdge { if x != nil { return x.Edges } return nil } -func (x *OrderConnection) GetPageInfo() *PageInfo { +func (x *PartyConnection) GetPageInfo() *PageInfo { if x != nil { return x.PageInfo } return nil } -// Margin data with the corresponding cursor. -type MarginEdge struct { +// Request to list profiles by party ID. +type ListPartiesProfilesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Margin levels data that satisfy a list margin levels request. - Node *vega.MarginLevels `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Restrict the returned profiles to only the given party IDs. If not set, + // all parties' profiles will be returned. + Parties []string `protobuf:"bytes,1,rep,name=parties,proto3" json:"parties,omitempty"` + // Pagination control. + Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` } -func (x *MarginEdge) Reset() { - *x = MarginEdge{} +func (x *ListPartiesProfilesRequest) Reset() { + *x = ListPartiesProfilesRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[165] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10528,13 +10531,13 @@ func (x *MarginEdge) Reset() { } } -func (x *MarginEdge) String() string { +func (x *ListPartiesProfilesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MarginEdge) ProtoMessage() {} +func (*ListPartiesProfilesRequest) ProtoMessage() {} -func (x *MarginEdge) ProtoReflect() protoreflect.Message { +func (x *ListPartiesProfilesRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[165] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10546,39 +10549,37 @@ func (x *MarginEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use MarginEdge.ProtoReflect.Descriptor instead. -func (*MarginEdge) Descriptor() ([]byte, []int) { +// Deprecated: Use ListPartiesProfilesRequest.ProtoReflect.Descriptor instead. +func (*ListPartiesProfilesRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{165} } -func (x *MarginEdge) GetNode() *vega.MarginLevels { +func (x *ListPartiesProfilesRequest) GetParties() []string { if x != nil { - return x.Node + return x.Parties } return nil } -func (x *MarginEdge) GetCursor() string { +func (x *ListPartiesProfilesRequest) GetPagination() *Pagination { if x != nil { - return x.Cursor + return x.Pagination } - return "" + return nil } -// Page of margins data and corresponding page information. -type MarginConnection struct { +// Response from listing parties' profiles. +type ListPartiesProfilesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of margins data and their corresponding cursors. - Edges []*MarginEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + // Page of profile data and corresponding page information. + Profiles *PartiesProfilesConnection `protobuf:"bytes,1,opt,name=profiles,proto3" json:"profiles,omitempty"` } -func (x *MarginConnection) Reset() { - *x = MarginConnection{} +func (x *ListPartiesProfilesResponse) Reset() { + *x = ListPartiesProfilesResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[166] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10586,13 +10587,13 @@ func (x *MarginConnection) Reset() { } } -func (x *MarginConnection) String() string { +func (x *ListPartiesProfilesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MarginConnection) ProtoMessage() {} +func (*ListPartiesProfilesResponse) ProtoMessage() {} -func (x *MarginConnection) ProtoReflect() protoreflect.Message { +func (x *ListPartiesProfilesResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[166] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10604,49 +10605,32 @@ func (x *MarginConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use MarginConnection.ProtoReflect.Descriptor instead. -func (*MarginConnection) Descriptor() ([]byte, []int) { +// Deprecated: Use ListPartiesProfilesResponse.ProtoReflect.Descriptor instead. +func (*ListPartiesProfilesResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{166} } -func (x *MarginConnection) GetEdges() []*MarginEdge { - if x != nil { - return x.Edges - } - return nil -} - -func (x *MarginConnection) GetPageInfo() *PageInfo { +func (x *ListPartiesProfilesResponse) GetProfiles() *PartiesProfilesConnection { if x != nil { - return x.PageInfo + return x.Profiles } return nil } -// Request to get reward details for a party -type ListRewardsRequest struct { +// Party's profile data with the corresponding cursor. +type PartyProfileEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Restrict rewards data to those that were received by the given party. - PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` - // Restrict rewards data to those that were paid with the given asset ID. - AssetId *string `protobuf:"bytes,2,opt,name=asset_id,json=assetId,proto3,oneof" json:"asset_id,omitempty"` - // Pagination control. - Pagination *Pagination `protobuf:"bytes,3,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` - // Restrict rewards data to those that were paid after and including the given epoch ID. - FromEpoch *uint64 `protobuf:"varint,4,opt,name=from_epoch,json=fromEpoch,proto3,oneof" json:"from_epoch,omitempty"` - // Restrict rewards data to those that were paid up to and including the given epoch ID. - ToEpoch *uint64 `protobuf:"varint,5,opt,name=to_epoch,json=toEpoch,proto3,oneof" json:"to_epoch,omitempty"` - // Filter for rewards paid if the party is a member of the given team - TeamId *string `protobuf:"bytes,6,opt,name=team_id,json=teamId,proto3,oneof" json:"team_id,omitempty"` - // Filter for rewards paid if the party participated in the given game - GameId *string `protobuf:"bytes,7,opt,name=game_id,json=gameId,proto3,oneof" json:"game_id,omitempty"` + // Data associated with a party's profile. + Node *vega.PartyProfile `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *ListRewardsRequest) Reset() { - *x = ListRewardsRequest{} +func (x *PartyProfileEdge) Reset() { + *x = PartyProfileEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[167] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10654,13 +10638,13 @@ func (x *ListRewardsRequest) Reset() { } } -func (x *ListRewardsRequest) String() string { +func (x *PartyProfileEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListRewardsRequest) ProtoMessage() {} +func (*PartyProfileEdge) ProtoMessage() {} -func (x *ListRewardsRequest) ProtoReflect() protoreflect.Message { +func (x *PartyProfileEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[167] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10672,72 +10656,39 @@ func (x *ListRewardsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListRewardsRequest.ProtoReflect.Descriptor instead. -func (*ListRewardsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use PartyProfileEdge.ProtoReflect.Descriptor instead. +func (*PartyProfileEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{167} } -func (x *ListRewardsRequest) GetPartyId() string { - if x != nil { - return x.PartyId - } - return "" -} - -func (x *ListRewardsRequest) GetAssetId() string { - if x != nil && x.AssetId != nil { - return *x.AssetId - } - return "" -} - -func (x *ListRewardsRequest) GetPagination() *Pagination { +func (x *PartyProfileEdge) GetNode() *vega.PartyProfile { if x != nil { - return x.Pagination + return x.Node } return nil } -func (x *ListRewardsRequest) GetFromEpoch() uint64 { - if x != nil && x.FromEpoch != nil { - return *x.FromEpoch - } - return 0 -} - -func (x *ListRewardsRequest) GetToEpoch() uint64 { - if x != nil && x.ToEpoch != nil { - return *x.ToEpoch - } - return 0 -} - -func (x *ListRewardsRequest) GetTeamId() string { - if x != nil && x.TeamId != nil { - return *x.TeamId - } - return "" -} - -func (x *ListRewardsRequest) GetGameId() string { - if x != nil && x.GameId != nil { - return *x.GameId +func (x *PartyProfileEdge) GetCursor() string { + if x != nil { + return x.Cursor } return "" } -// Response for listing reward details for a single party -type ListRewardsResponse struct { +// Page of profile data per party and corresponding page information. +type PartiesProfilesConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of rewards data and corresponding page information. - Rewards *RewardsConnection `protobuf:"bytes,1,opt,name=rewards,proto3" json:"rewards,omitempty"` + // Page of profiles and their corresponding cursors. + Edges []*PartyProfileEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *ListRewardsResponse) Reset() { - *x = ListRewardsResponse{} +func (x *PartiesProfilesConnection) Reset() { + *x = PartiesProfilesConnection{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[168] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10745,13 +10696,13 @@ func (x *ListRewardsResponse) Reset() { } } -func (x *ListRewardsResponse) String() string { +func (x *PartiesProfilesConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListRewardsResponse) ProtoMessage() {} +func (*PartiesProfilesConnection) ProtoMessage() {} -func (x *ListRewardsResponse) ProtoReflect() protoreflect.Message { +func (x *PartiesProfilesConnection) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[168] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10763,32 +10714,39 @@ func (x *ListRewardsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListRewardsResponse.ProtoReflect.Descriptor instead. -func (*ListRewardsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use PartiesProfilesConnection.ProtoReflect.Descriptor instead. +func (*PartiesProfilesConnection) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{168} } -func (x *ListRewardsResponse) GetRewards() *RewardsConnection { +func (x *PartiesProfilesConnection) GetEdges() []*PartyProfileEdge { if x != nil { - return x.Rewards + return x.Edges } return nil } -// Rewards data with the corresponding cursor. -type RewardEdge struct { +func (x *PartiesProfilesConnection) GetPageInfo() *PageInfo { + if x != nil { + return x.PageInfo + } + return nil +} + +// Order data with the corresponding cursor. +type OrderEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Details for a single reward payment. - Node *vega.Reward `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Data associated with an order submitted to a Vega node. + Node *vega.Order `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` // Cursor that can be used to fetch further pages. Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *RewardEdge) Reset() { - *x = RewardEdge{} +func (x *OrderEdge) Reset() { + *x = OrderEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[169] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10796,13 +10754,13 @@ func (x *RewardEdge) Reset() { } } -func (x *RewardEdge) String() string { +func (x *OrderEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RewardEdge) ProtoMessage() {} +func (*OrderEdge) ProtoMessage() {} -func (x *RewardEdge) ProtoReflect() protoreflect.Message { +func (x *OrderEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[169] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10814,39 +10772,41 @@ func (x *RewardEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RewardEdge.ProtoReflect.Descriptor instead. -func (*RewardEdge) Descriptor() ([]byte, []int) { +// Deprecated: Use OrderEdge.ProtoReflect.Descriptor instead. +func (*OrderEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{169} } -func (x *RewardEdge) GetNode() *vega.Reward { +func (x *OrderEdge) GetNode() *vega.Order { if x != nil { return x.Node } return nil } -func (x *RewardEdge) GetCursor() string { +func (x *OrderEdge) GetCursor() string { if x != nil { return x.Cursor } return "" } -// Page of rewards data and corresponding page information. -type RewardsConnection struct { +// Request for listing margin levels +type ListMarginLevelsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of rewards data items and their corresponding cursors. - Edges []*RewardEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + // Party ID for which to list the margin levels + PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` + // Market ID for which to list the margin levels + MarketId string `protobuf:"bytes,2,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` + // Pagination control + Pagination *Pagination `protobuf:"bytes,3,opt,name=pagination,proto3" json:"pagination,omitempty"` } -func (x *RewardsConnection) Reset() { - *x = RewardsConnection{} +func (x *ListMarginLevelsRequest) Reset() { + *x = ListMarginLevelsRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[170] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10854,13 +10814,13 @@ func (x *RewardsConnection) Reset() { } } -func (x *RewardsConnection) String() string { +func (x *ListMarginLevelsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RewardsConnection) ProtoMessage() {} +func (*ListMarginLevelsRequest) ProtoMessage() {} -func (x *RewardsConnection) ProtoReflect() protoreflect.Message { +func (x *ListMarginLevelsRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[170] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10872,41 +10832,44 @@ func (x *RewardsConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RewardsConnection.ProtoReflect.Descriptor instead. -func (*RewardsConnection) Descriptor() ([]byte, []int) { +// Deprecated: Use ListMarginLevelsRequest.ProtoReflect.Descriptor instead. +func (*ListMarginLevelsRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{170} } -func (x *RewardsConnection) GetEdges() []*RewardEdge { +func (x *ListMarginLevelsRequest) GetPartyId() string { if x != nil { - return x.Edges + return x.PartyId } - return nil + return "" } -func (x *RewardsConnection) GetPageInfo() *PageInfo { +func (x *ListMarginLevelsRequest) GetMarketId() string { if x != nil { - return x.PageInfo + return x.MarketId + } + return "" +} + +func (x *ListMarginLevelsRequest) GetPagination() *Pagination { + if x != nil { + return x.Pagination } return nil } -// Request to get reward details for a party -type ListRewardSummariesRequest struct { +// Response from listing margin levels +type ListMarginLevelsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Restrict the reward summary to rewards paid to the given parties. - PartyId *string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3,oneof" json:"party_id,omitempty"` - // Restrict the reward summary to rewards paid in the given assets. - AssetId *string `protobuf:"bytes,2,opt,name=asset_id,json=assetId,proto3,oneof" json:"asset_id,omitempty"` - // Pagination controls. - Pagination *Pagination `protobuf:"bytes,3,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + // Page of margin levels data and corresponding page information. + MarginLevels *MarginConnection `protobuf:"bytes,1,opt,name=margin_levels,json=marginLevels,proto3" json:"margin_levels,omitempty"` } -func (x *ListRewardSummariesRequest) Reset() { - *x = ListRewardSummariesRequest{} +func (x *ListMarginLevelsResponse) Reset() { + *x = ListMarginLevelsResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[171] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10914,13 +10877,13 @@ func (x *ListRewardSummariesRequest) Reset() { } } -func (x *ListRewardSummariesRequest) String() string { +func (x *ListMarginLevelsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListRewardSummariesRequest) ProtoMessage() {} +func (*ListMarginLevelsResponse) ProtoMessage() {} -func (x *ListRewardSummariesRequest) ProtoReflect() protoreflect.Message { +func (x *ListMarginLevelsResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[171] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10932,44 +10895,34 @@ func (x *ListRewardSummariesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListRewardSummariesRequest.ProtoReflect.Descriptor instead. -func (*ListRewardSummariesRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListMarginLevelsResponse.ProtoReflect.Descriptor instead. +func (*ListMarginLevelsResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{171} } -func (x *ListRewardSummariesRequest) GetPartyId() string { - if x != nil && x.PartyId != nil { - return *x.PartyId - } - return "" -} - -func (x *ListRewardSummariesRequest) GetAssetId() string { - if x != nil && x.AssetId != nil { - return *x.AssetId - } - return "" -} - -func (x *ListRewardSummariesRequest) GetPagination() *Pagination { +func (x *ListMarginLevelsResponse) GetMarginLevels() *MarginConnection { if x != nil { - return x.Pagination + return x.MarginLevels } return nil } -// Response from listing reward details in for a single party -type ListRewardSummariesResponse struct { +// Request to subscribe to a stream of MarginLevels data. +// If a party ID is provided, the stream will contain margin levels for that party only. +// Optionally, the list can be additionally filtered by market +type ObserveMarginLevelsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of rewards details data and corresponding page information. - Summaries []*vega.RewardSummary `protobuf:"bytes,1,rep,name=summaries,proto3" json:"summaries,omitempty"` + // Restrict margin level updates to those relating to the given party. + PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` + // Restrict margin level updates to those relating to the given market. + MarketId *string `protobuf:"bytes,2,opt,name=market_id,json=marketId,proto3,oneof" json:"market_id,omitempty"` } -func (x *ListRewardSummariesResponse) Reset() { - *x = ListRewardSummariesResponse{} +func (x *ObserveMarginLevelsRequest) Reset() { + *x = ObserveMarginLevelsRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[172] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10977,13 +10930,13 @@ func (x *ListRewardSummariesResponse) Reset() { } } -func (x *ListRewardSummariesResponse) String() string { +func (x *ObserveMarginLevelsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListRewardSummariesResponse) ProtoMessage() {} +func (*ObserveMarginLevelsRequest) ProtoMessage() {} -func (x *ListRewardSummariesResponse) ProtoReflect() protoreflect.Message { +func (x *ObserveMarginLevelsRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[172] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -10995,36 +10948,37 @@ func (x *ListRewardSummariesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListRewardSummariesResponse.ProtoReflect.Descriptor instead. -func (*ListRewardSummariesResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ObserveMarginLevelsRequest.ProtoReflect.Descriptor instead. +func (*ObserveMarginLevelsRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{172} } -func (x *ListRewardSummariesResponse) GetSummaries() []*vega.RewardSummary { +func (x *ObserveMarginLevelsRequest) GetPartyId() string { if x != nil { - return x.Summaries + return x.PartyId } - return nil + return "" } -// Filter to restrict the results returned by the ListEpochRewardSummaries -type RewardSummaryFilter struct { +func (x *ObserveMarginLevelsRequest) GetMarketId() string { + if x != nil && x.MarketId != nil { + return *x.MarketId + } + return "" +} + +// Response from subscribing to margin levels data +type ObserveMarginLevelsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Restrict reward summaries to those connected to the assets in the given list. - AssetIds []string `protobuf:"bytes,1,rep,name=asset_ids,json=assetIds,proto3" json:"asset_ids,omitempty"` - // Restrict reward summaries to those connected to the markets in the given list. - MarketIds []string `protobuf:"bytes,2,rep,name=market_ids,json=marketIds,proto3" json:"market_ids,omitempty"` - // Restrict rewards summaries to those that were paid after and including the given epoch ID. - FromEpoch *uint64 `protobuf:"varint,3,opt,name=from_epoch,json=fromEpoch,proto3,oneof" json:"from_epoch,omitempty"` - // Restrict rewards summaries to those that were paid up to and including the given epoch ID. - ToEpoch *uint64 `protobuf:"varint,4,opt,name=to_epoch,json=toEpoch,proto3,oneof" json:"to_epoch,omitempty"` + // Margin levels data that match the subscription request filters. + MarginLevels *vega.MarginLevels `protobuf:"bytes,1,opt,name=margin_levels,json=marginLevels,proto3" json:"margin_levels,omitempty"` } -func (x *RewardSummaryFilter) Reset() { - *x = RewardSummaryFilter{} +func (x *ObserveMarginLevelsResponse) Reset() { + *x = ObserveMarginLevelsResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[173] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11032,13 +10986,13 @@ func (x *RewardSummaryFilter) Reset() { } } -func (x *RewardSummaryFilter) String() string { +func (x *ObserveMarginLevelsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*RewardSummaryFilter) ProtoMessage() {} +func (*ObserveMarginLevelsResponse) ProtoMessage() {} -func (x *RewardSummaryFilter) ProtoReflect() protoreflect.Message { +func (x *ObserveMarginLevelsResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[173] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11050,53 +11004,32 @@ func (x *RewardSummaryFilter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use RewardSummaryFilter.ProtoReflect.Descriptor instead. -func (*RewardSummaryFilter) Descriptor() ([]byte, []int) { +// Deprecated: Use ObserveMarginLevelsResponse.ProtoReflect.Descriptor instead. +func (*ObserveMarginLevelsResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{173} } -func (x *RewardSummaryFilter) GetAssetIds() []string { - if x != nil { - return x.AssetIds - } - return nil -} - -func (x *RewardSummaryFilter) GetMarketIds() []string { +func (x *ObserveMarginLevelsResponse) GetMarginLevels() *vega.MarginLevels { if x != nil { - return x.MarketIds + return x.MarginLevels } return nil } -func (x *RewardSummaryFilter) GetFromEpoch() uint64 { - if x != nil && x.FromEpoch != nil { - return *x.FromEpoch - } - return 0 -} - -func (x *RewardSummaryFilter) GetToEpoch() uint64 { - if x != nil && x.ToEpoch != nil { - return *x.ToEpoch - } - return 0 -} - -// Request to get summary of reward per epoch for a given range of epochs -type ListEpochRewardSummariesRequest struct { +// Page of orders data and corresponding page information. +type OrderConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Limit the results considered according to the filter supplied. - Filter *RewardSummaryFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"` - // Optional pagination information to limit the data that is returned. - Pagination *Pagination `protobuf:"bytes,4,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + // Page of orders and their corresponding cursors. + Edges []*OrderEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *ListEpochRewardSummariesRequest) Reset() { - *x = ListEpochRewardSummariesRequest{} +func (x *OrderConnection) Reset() { + *x = OrderConnection{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[174] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11104,13 +11037,13 @@ func (x *ListEpochRewardSummariesRequest) Reset() { } } -func (x *ListEpochRewardSummariesRequest) String() string { +func (x *OrderConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListEpochRewardSummariesRequest) ProtoMessage() {} +func (*OrderConnection) ProtoMessage() {} -func (x *ListEpochRewardSummariesRequest) ProtoReflect() protoreflect.Message { +func (x *OrderConnection) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[174] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11122,37 +11055,39 @@ func (x *ListEpochRewardSummariesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListEpochRewardSummariesRequest.ProtoReflect.Descriptor instead. -func (*ListEpochRewardSummariesRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use OrderConnection.ProtoReflect.Descriptor instead. +func (*OrderConnection) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{174} } -func (x *ListEpochRewardSummariesRequest) GetFilter() *RewardSummaryFilter { +func (x *OrderConnection) GetEdges() []*OrderEdge { if x != nil { - return x.Filter + return x.Edges } return nil } -func (x *ListEpochRewardSummariesRequest) GetPagination() *Pagination { +func (x *OrderConnection) GetPageInfo() *PageInfo { if x != nil { - return x.Pagination + return x.PageInfo } return nil } -// Return message with reward details in for a single party -type ListEpochRewardSummariesResponse struct { +// Margin data with the corresponding cursor. +type MarginEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of rewards details for a single party and corresponding page information. - Summaries *EpochRewardSummaryConnection `protobuf:"bytes,1,opt,name=summaries,proto3" json:"summaries,omitempty"` + // Margin levels data that satisfy a list margin levels request. + Node *vega.MarginLevels `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *ListEpochRewardSummariesResponse) Reset() { - *x = ListEpochRewardSummariesResponse{} +func (x *MarginEdge) Reset() { + *x = MarginEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[175] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11160,13 +11095,13 @@ func (x *ListEpochRewardSummariesResponse) Reset() { } } -func (x *ListEpochRewardSummariesResponse) String() string { +func (x *MarginEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListEpochRewardSummariesResponse) ProtoMessage() {} +func (*MarginEdge) ProtoMessage() {} -func (x *ListEpochRewardSummariesResponse) ProtoReflect() protoreflect.Message { +func (x *MarginEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[175] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11178,32 +11113,39 @@ func (x *ListEpochRewardSummariesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListEpochRewardSummariesResponse.ProtoReflect.Descriptor instead. -func (*ListEpochRewardSummariesResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use MarginEdge.ProtoReflect.Descriptor instead. +func (*MarginEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{175} } -func (x *ListEpochRewardSummariesResponse) GetSummaries() *EpochRewardSummaryConnection { +func (x *MarginEdge) GetNode() *vega.MarginLevels { if x != nil { - return x.Summaries + return x.Node } return nil } -// Page of rewards summary data for epoch and corresponding page information -type EpochRewardSummaryConnection struct { +func (x *MarginEdge) GetCursor() string { + if x != nil { + return x.Cursor + } + return "" +} + +// Page of margins data and corresponding page information. +type MarginConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of rewards summary data for epochs and their corresponding cursors. - Edges []*EpochRewardSummaryEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page of margins data and their corresponding cursors. + Edges []*MarginEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` // Page information that is used for fetching further pages. PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *EpochRewardSummaryConnection) Reset() { - *x = EpochRewardSummaryConnection{} +func (x *MarginConnection) Reset() { + *x = MarginConnection{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[176] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11211,13 +11153,13 @@ func (x *EpochRewardSummaryConnection) Reset() { } } -func (x *EpochRewardSummaryConnection) String() string { +func (x *MarginConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*EpochRewardSummaryConnection) ProtoMessage() {} +func (*MarginConnection) ProtoMessage() {} -func (x *EpochRewardSummaryConnection) ProtoReflect() protoreflect.Message { +func (x *MarginConnection) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[176] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11229,39 +11171,49 @@ func (x *EpochRewardSummaryConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use EpochRewardSummaryConnection.ProtoReflect.Descriptor instead. -func (*EpochRewardSummaryConnection) Descriptor() ([]byte, []int) { +// Deprecated: Use MarginConnection.ProtoReflect.Descriptor instead. +func (*MarginConnection) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{176} } -func (x *EpochRewardSummaryConnection) GetEdges() []*EpochRewardSummaryEdge { +func (x *MarginConnection) GetEdges() []*MarginEdge { if x != nil { return x.Edges } return nil } -func (x *EpochRewardSummaryConnection) GetPageInfo() *PageInfo { +func (x *MarginConnection) GetPageInfo() *PageInfo { if x != nil { return x.PageInfo } return nil } -// Rewards summary data for epoch with the corresponding cursor. -type EpochRewardSummaryEdge struct { +// Request to get reward details for a party +type ListRewardsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Rewards summary data for epoch. - Node *vega.EpochRewardSummary `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Restrict rewards data to those that were received by the given party. + PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` + // Restrict rewards data to those that were paid with the given asset ID. + AssetId *string `protobuf:"bytes,2,opt,name=asset_id,json=assetId,proto3,oneof" json:"asset_id,omitempty"` + // Pagination control. + Pagination *Pagination `protobuf:"bytes,3,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + // Restrict rewards data to those that were paid after and including the given epoch ID. + FromEpoch *uint64 `protobuf:"varint,4,opt,name=from_epoch,json=fromEpoch,proto3,oneof" json:"from_epoch,omitempty"` + // Restrict rewards data to those that were paid up to and including the given epoch ID. + ToEpoch *uint64 `protobuf:"varint,5,opt,name=to_epoch,json=toEpoch,proto3,oneof" json:"to_epoch,omitempty"` + // Filter for rewards paid if the party is a member of the given team + TeamId *string `protobuf:"bytes,6,opt,name=team_id,json=teamId,proto3,oneof" json:"team_id,omitempty"` + // Filter for rewards paid if the party participated in the given game + GameId *string `protobuf:"bytes,7,opt,name=game_id,json=gameId,proto3,oneof" json:"game_id,omitempty"` } -func (x *EpochRewardSummaryEdge) Reset() { - *x = EpochRewardSummaryEdge{} +func (x *ListRewardsRequest) Reset() { + *x = ListRewardsRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[177] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11269,13 +11221,13 @@ func (x *EpochRewardSummaryEdge) Reset() { } } -func (x *EpochRewardSummaryEdge) String() string { +func (x *ListRewardsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*EpochRewardSummaryEdge) ProtoMessage() {} +func (*ListRewardsRequest) ProtoMessage() {} -func (x *EpochRewardSummaryEdge) ProtoReflect() protoreflect.Message { +func (x *ListRewardsRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[177] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11287,39 +11239,72 @@ func (x *EpochRewardSummaryEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use EpochRewardSummaryEdge.ProtoReflect.Descriptor instead. -func (*EpochRewardSummaryEdge) Descriptor() ([]byte, []int) { +// Deprecated: Use ListRewardsRequest.ProtoReflect.Descriptor instead. +func (*ListRewardsRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{177} } -func (x *EpochRewardSummaryEdge) GetNode() *vega.EpochRewardSummary { +func (x *ListRewardsRequest) GetPartyId() string { if x != nil { - return x.Node + return x.PartyId } - return nil + return "" } -func (x *EpochRewardSummaryEdge) GetCursor() string { +func (x *ListRewardsRequest) GetAssetId() string { + if x != nil && x.AssetId != nil { + return *x.AssetId + } + return "" +} + +func (x *ListRewardsRequest) GetPagination() *Pagination { if x != nil { - return x.Cursor + return x.Pagination + } + return nil +} + +func (x *ListRewardsRequest) GetFromEpoch() uint64 { + if x != nil && x.FromEpoch != nil { + return *x.FromEpoch + } + return 0 +} + +func (x *ListRewardsRequest) GetToEpoch() uint64 { + if x != nil && x.ToEpoch != nil { + return *x.ToEpoch + } + return 0 +} + +func (x *ListRewardsRequest) GetTeamId() string { + if x != nil && x.TeamId != nil { + return *x.TeamId } return "" } -// Request sent for subscribing to rewards -type ObserveRewardsRequest struct { +func (x *ListRewardsRequest) GetGameId() string { + if x != nil && x.GameId != nil { + return *x.GameId + } + return "" +} + +// Response for listing reward details for a single party +type ListRewardsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Asset ID to get rewards data for, if provided. - AssetId *string `protobuf:"bytes,1,opt,name=asset_id,json=assetId,proto3,oneof" json:"asset_id,omitempty"` - // Party ID to get rewards data for, if provided. - PartyId *string `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3,oneof" json:"party_id,omitempty"` + // Page of rewards data and corresponding page information. + Rewards *RewardsConnection `protobuf:"bytes,1,opt,name=rewards,proto3" json:"rewards,omitempty"` } -func (x *ObserveRewardsRequest) Reset() { - *x = ObserveRewardsRequest{} +func (x *ListRewardsResponse) Reset() { + *x = ListRewardsResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[178] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11327,13 +11312,13 @@ func (x *ObserveRewardsRequest) Reset() { } } -func (x *ObserveRewardsRequest) String() string { +func (x *ListRewardsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ObserveRewardsRequest) ProtoMessage() {} +func (*ListRewardsResponse) ProtoMessage() {} -func (x *ObserveRewardsRequest) ProtoReflect() protoreflect.Message { +func (x *ListRewardsResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[178] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11345,37 +11330,32 @@ func (x *ObserveRewardsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ObserveRewardsRequest.ProtoReflect.Descriptor instead. -func (*ObserveRewardsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListRewardsResponse.ProtoReflect.Descriptor instead. +func (*ListRewardsResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{178} } -func (x *ObserveRewardsRequest) GetAssetId() string { - if x != nil && x.AssetId != nil { - return *x.AssetId - } - return "" -} - -func (x *ObserveRewardsRequest) GetPartyId() string { - if x != nil && x.PartyId != nil { - return *x.PartyId +func (x *ListRewardsResponse) GetRewards() *RewardsConnection { + if x != nil { + return x.Rewards } - return "" + return nil } -// Response that is received from subscribing to rewards data -type ObserveRewardsResponse struct { +// Rewards data with the corresponding cursor. +type RewardEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Rewards data received. - Reward *vega.Reward `protobuf:"bytes,1,opt,name=reward,proto3" json:"reward,omitempty"` + // Details for a single reward payment. + Node *vega.Reward `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *ObserveRewardsResponse) Reset() { - *x = ObserveRewardsResponse{} +func (x *RewardEdge) Reset() { + *x = RewardEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[179] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11383,13 +11363,13 @@ func (x *ObserveRewardsResponse) Reset() { } } -func (x *ObserveRewardsResponse) String() string { +func (x *RewardEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ObserveRewardsResponse) ProtoMessage() {} +func (*RewardEdge) ProtoMessage() {} -func (x *ObserveRewardsResponse) ProtoReflect() protoreflect.Message { +func (x *RewardEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[179] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11401,30 +11381,39 @@ func (x *ObserveRewardsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ObserveRewardsResponse.ProtoReflect.Descriptor instead. -func (*ObserveRewardsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use RewardEdge.ProtoReflect.Descriptor instead. +func (*RewardEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{179} } -func (x *ObserveRewardsResponse) GetReward() *vega.Reward { +func (x *RewardEdge) GetNode() *vega.Reward { if x != nil { - return x.Reward + return x.Node } return nil } -// Request to get data about a specific deposit by ID -type GetDepositRequest struct { +func (x *RewardEdge) GetCursor() string { + if x != nil { + return x.Cursor + } + return "" +} + +// Page of rewards data and corresponding page information. +type RewardsConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Deposit ID to return data for. - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // Page of rewards data items and their corresponding cursors. + Edges []*RewardEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *GetDepositRequest) Reset() { - *x = GetDepositRequest{} +func (x *RewardsConnection) Reset() { + *x = RewardsConnection{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[180] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11432,13 +11421,13 @@ func (x *GetDepositRequest) Reset() { } } -func (x *GetDepositRequest) String() string { +func (x *RewardsConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetDepositRequest) ProtoMessage() {} +func (*RewardsConnection) ProtoMessage() {} -func (x *GetDepositRequest) ProtoReflect() protoreflect.Message { +func (x *RewardsConnection) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[180] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11450,30 +11439,41 @@ func (x *GetDepositRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetDepositRequest.ProtoReflect.Descriptor instead. -func (*GetDepositRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use RewardsConnection.ProtoReflect.Descriptor instead. +func (*RewardsConnection) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{180} } -func (x *GetDepositRequest) GetId() string { +func (x *RewardsConnection) GetEdges() []*RewardEdge { if x != nil { - return x.Id + return x.Edges } - return "" + return nil } -// Response that is received from getting deposit data -type GetDepositResponse struct { +func (x *RewardsConnection) GetPageInfo() *PageInfo { + if x != nil { + return x.PageInfo + } + return nil +} + +// Request to get reward details for a party +type ListRewardSummariesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Deposit matching the ID from the request. - Deposit *vega.Deposit `protobuf:"bytes,1,opt,name=deposit,proto3" json:"deposit,omitempty"` + // Restrict the reward summary to rewards paid to the given parties. + PartyId *string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3,oneof" json:"party_id,omitempty"` + // Restrict the reward summary to rewards paid in the given assets. + AssetId *string `protobuf:"bytes,2,opt,name=asset_id,json=assetId,proto3,oneof" json:"asset_id,omitempty"` + // Pagination controls. + Pagination *Pagination `protobuf:"bytes,3,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` } -func (x *GetDepositResponse) Reset() { - *x = GetDepositResponse{} +func (x *ListRewardSummariesRequest) Reset() { + *x = ListRewardSummariesRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[181] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11481,13 +11481,13 @@ func (x *GetDepositResponse) Reset() { } } -func (x *GetDepositResponse) String() string { +func (x *ListRewardSummariesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetDepositResponse) ProtoMessage() {} +func (*ListRewardSummariesRequest) ProtoMessage() {} -func (x *GetDepositResponse) ProtoReflect() protoreflect.Message { +func (x *ListRewardSummariesRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[181] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11499,34 +11499,44 @@ func (x *GetDepositResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetDepositResponse.ProtoReflect.Descriptor instead. -func (*GetDepositResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListRewardSummariesRequest.ProtoReflect.Descriptor instead. +func (*ListRewardSummariesRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{181} } -func (x *GetDepositResponse) GetDeposit() *vega.Deposit { +func (x *ListRewardSummariesRequest) GetPartyId() string { + if x != nil && x.PartyId != nil { + return *x.PartyId + } + return "" +} + +func (x *ListRewardSummariesRequest) GetAssetId() string { + if x != nil && x.AssetId != nil { + return *x.AssetId + } + return "" +} + +func (x *ListRewardSummariesRequest) GetPagination() *Pagination { if x != nil { - return x.Deposit + return x.Pagination } return nil } -// Request to list all deposits for a given party -type ListDepositsRequest struct { +// Response from listing reward details in for a single party +type ListRewardSummariesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Restrict deposits to those made by the given party ID. - PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` - // Pagination controls. - Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` - // Date range of the requested data, if provided. - DateRange *DateRange `protobuf:"bytes,3,opt,name=date_range,json=dateRange,proto3,oneof" json:"date_range,omitempty"` + // Page of rewards details data and corresponding page information. + Summaries []*vega.RewardSummary `protobuf:"bytes,1,rep,name=summaries,proto3" json:"summaries,omitempty"` } -func (x *ListDepositsRequest) Reset() { - *x = ListDepositsRequest{} +func (x *ListRewardSummariesResponse) Reset() { + *x = ListRewardSummariesResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[182] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11534,13 +11544,13 @@ func (x *ListDepositsRequest) Reset() { } } -func (x *ListDepositsRequest) String() string { +func (x *ListRewardSummariesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListDepositsRequest) ProtoMessage() {} +func (*ListRewardSummariesResponse) ProtoMessage() {} -func (x *ListDepositsRequest) ProtoReflect() protoreflect.Message { +func (x *ListRewardSummariesResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[182] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11552,44 +11562,36 @@ func (x *ListDepositsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListDepositsRequest.ProtoReflect.Descriptor instead. -func (*ListDepositsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListRewardSummariesResponse.ProtoReflect.Descriptor instead. +func (*ListRewardSummariesResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{182} } -func (x *ListDepositsRequest) GetPartyId() string { - if x != nil { - return x.PartyId - } - return "" -} - -func (x *ListDepositsRequest) GetPagination() *Pagination { - if x != nil { - return x.Pagination - } - return nil -} - -func (x *ListDepositsRequest) GetDateRange() *DateRange { +func (x *ListRewardSummariesResponse) GetSummaries() []*vega.RewardSummary { if x != nil { - return x.DateRange + return x.Summaries } return nil } -// Response from listing deposits -type ListDepositsResponse struct { +// Filter to restrict the results returned by the ListEpochRewardSummaries +type RewardSummaryFilter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of deposits data and corresponding page information. - Deposits *DepositsConnection `protobuf:"bytes,1,opt,name=deposits,proto3" json:"deposits,omitempty"` + // Restrict reward summaries to those connected to the assets in the given list. + AssetIds []string `protobuf:"bytes,1,rep,name=asset_ids,json=assetIds,proto3" json:"asset_ids,omitempty"` + // Restrict reward summaries to those connected to the markets in the given list. + MarketIds []string `protobuf:"bytes,2,rep,name=market_ids,json=marketIds,proto3" json:"market_ids,omitempty"` + // Restrict rewards summaries to those that were paid after and including the given epoch ID. + FromEpoch *uint64 `protobuf:"varint,3,opt,name=from_epoch,json=fromEpoch,proto3,oneof" json:"from_epoch,omitempty"` + // Restrict rewards summaries to those that were paid up to and including the given epoch ID. + ToEpoch *uint64 `protobuf:"varint,4,opt,name=to_epoch,json=toEpoch,proto3,oneof" json:"to_epoch,omitempty"` } -func (x *ListDepositsResponse) Reset() { - *x = ListDepositsResponse{} +func (x *RewardSummaryFilter) Reset() { + *x = RewardSummaryFilter{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[183] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11597,13 +11599,13 @@ func (x *ListDepositsResponse) Reset() { } } -func (x *ListDepositsResponse) String() string { +func (x *RewardSummaryFilter) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListDepositsResponse) ProtoMessage() {} +func (*RewardSummaryFilter) ProtoMessage() {} -func (x *ListDepositsResponse) ProtoReflect() protoreflect.Message { +func (x *RewardSummaryFilter) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[183] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11615,32 +11617,53 @@ func (x *ListDepositsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListDepositsResponse.ProtoReflect.Descriptor instead. -func (*ListDepositsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use RewardSummaryFilter.ProtoReflect.Descriptor instead. +func (*RewardSummaryFilter) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{183} } -func (x *ListDepositsResponse) GetDeposits() *DepositsConnection { +func (x *RewardSummaryFilter) GetAssetIds() []string { if x != nil { - return x.Deposits + return x.AssetIds } return nil } -// Deposits data with the corresponding cursor. -type DepositEdge struct { +func (x *RewardSummaryFilter) GetMarketIds() []string { + if x != nil { + return x.MarketIds + } + return nil +} + +func (x *RewardSummaryFilter) GetFromEpoch() uint64 { + if x != nil && x.FromEpoch != nil { + return *x.FromEpoch + } + return 0 +} + +func (x *RewardSummaryFilter) GetToEpoch() uint64 { + if x != nil && x.ToEpoch != nil { + return *x.ToEpoch + } + return 0 +} + +// Request to get summary of reward per epoch for a given range of epochs +type ListEpochRewardSummariesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Data associated with a single deposit made on the Vega network. - Node *vega.Deposit `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Limit the results considered according to the filter supplied. + Filter *RewardSummaryFilter `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"` + // Optional pagination information to limit the data that is returned. + Pagination *Pagination `protobuf:"bytes,4,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` } -func (x *DepositEdge) Reset() { - *x = DepositEdge{} +func (x *ListEpochRewardSummariesRequest) Reset() { + *x = ListEpochRewardSummariesRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[184] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11648,13 +11671,13 @@ func (x *DepositEdge) Reset() { } } -func (x *DepositEdge) String() string { +func (x *ListEpochRewardSummariesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DepositEdge) ProtoMessage() {} +func (*ListEpochRewardSummariesRequest) ProtoMessage() {} -func (x *DepositEdge) ProtoReflect() protoreflect.Message { +func (x *ListEpochRewardSummariesRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[184] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11666,39 +11689,37 @@ func (x *DepositEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DepositEdge.ProtoReflect.Descriptor instead. -func (*DepositEdge) Descriptor() ([]byte, []int) { +// Deprecated: Use ListEpochRewardSummariesRequest.ProtoReflect.Descriptor instead. +func (*ListEpochRewardSummariesRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{184} } -func (x *DepositEdge) GetNode() *vega.Deposit { +func (x *ListEpochRewardSummariesRequest) GetFilter() *RewardSummaryFilter { if x != nil { - return x.Node + return x.Filter } return nil } -func (x *DepositEdge) GetCursor() string { +func (x *ListEpochRewardSummariesRequest) GetPagination() *Pagination { if x != nil { - return x.Cursor + return x.Pagination } - return "" + return nil } -// Page of deposits data received and corresponding page information -type DepositsConnection struct { +// Return message with reward details in for a single party +type ListEpochRewardSummariesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of deposits data and their corresponding cursors. - Edges []*DepositEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + // Page of rewards details for a single party and corresponding page information. + Summaries *EpochRewardSummaryConnection `protobuf:"bytes,1,opt,name=summaries,proto3" json:"summaries,omitempty"` } -func (x *DepositsConnection) Reset() { - *x = DepositsConnection{} +func (x *ListEpochRewardSummariesResponse) Reset() { + *x = ListEpochRewardSummariesResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[185] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11706,13 +11727,13 @@ func (x *DepositsConnection) Reset() { } } -func (x *DepositsConnection) String() string { +func (x *ListEpochRewardSummariesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DepositsConnection) ProtoMessage() {} +func (*ListEpochRewardSummariesResponse) ProtoMessage() {} -func (x *DepositsConnection) ProtoReflect() protoreflect.Message { +func (x *ListEpochRewardSummariesResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[185] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11724,37 +11745,32 @@ func (x *DepositsConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DepositsConnection.ProtoReflect.Descriptor instead. -func (*DepositsConnection) Descriptor() ([]byte, []int) { +// Deprecated: Use ListEpochRewardSummariesResponse.ProtoReflect.Descriptor instead. +func (*ListEpochRewardSummariesResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{185} } -func (x *DepositsConnection) GetEdges() []*DepositEdge { - if x != nil { - return x.Edges - } - return nil -} - -func (x *DepositsConnection) GetPageInfo() *PageInfo { +func (x *ListEpochRewardSummariesResponse) GetSummaries() *EpochRewardSummaryConnection { if x != nil { - return x.PageInfo + return x.Summaries } return nil } -// Request to get a specific withdrawal by ID -type GetWithdrawalRequest struct { +// Page of rewards summary data for epoch and corresponding page information +type EpochRewardSummaryConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Withdrawal ID to retrieve data for. - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // Page of rewards summary data for epochs and their corresponding cursors. + Edges []*EpochRewardSummaryEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *GetWithdrawalRequest) Reset() { - *x = GetWithdrawalRequest{} +func (x *EpochRewardSummaryConnection) Reset() { + *x = EpochRewardSummaryConnection{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[186] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11762,13 +11778,13 @@ func (x *GetWithdrawalRequest) Reset() { } } -func (x *GetWithdrawalRequest) String() string { +func (x *EpochRewardSummaryConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetWithdrawalRequest) ProtoMessage() {} +func (*EpochRewardSummaryConnection) ProtoMessage() {} -func (x *GetWithdrawalRequest) ProtoReflect() protoreflect.Message { +func (x *EpochRewardSummaryConnection) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[186] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11780,30 +11796,39 @@ func (x *GetWithdrawalRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetWithdrawalRequest.ProtoReflect.Descriptor instead. -func (*GetWithdrawalRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use EpochRewardSummaryConnection.ProtoReflect.Descriptor instead. +func (*EpochRewardSummaryConnection) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{186} } -func (x *GetWithdrawalRequest) GetId() string { +func (x *EpochRewardSummaryConnection) GetEdges() []*EpochRewardSummaryEdge { if x != nil { - return x.Id + return x.Edges } - return "" + return nil } -// Response for a withdrawal request -type GetWithdrawalResponse struct { +func (x *EpochRewardSummaryConnection) GetPageInfo() *PageInfo { + if x != nil { + return x.PageInfo + } + return nil +} + +// Rewards summary data for epoch with the corresponding cursor. +type EpochRewardSummaryEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Withdrawal matching the ID from the request. - Withdrawal *vega.Withdrawal `protobuf:"bytes,1,opt,name=withdrawal,proto3" json:"withdrawal,omitempty"` + // Rewards summary data for epoch. + Node *vega.EpochRewardSummary `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *GetWithdrawalResponse) Reset() { - *x = GetWithdrawalResponse{} +func (x *EpochRewardSummaryEdge) Reset() { + *x = EpochRewardSummaryEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[187] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11811,13 +11836,13 @@ func (x *GetWithdrawalResponse) Reset() { } } -func (x *GetWithdrawalResponse) String() string { +func (x *EpochRewardSummaryEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetWithdrawalResponse) ProtoMessage() {} +func (*EpochRewardSummaryEdge) ProtoMessage() {} -func (x *GetWithdrawalResponse) ProtoReflect() protoreflect.Message { +func (x *EpochRewardSummaryEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[187] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11829,34 +11854,39 @@ func (x *GetWithdrawalResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetWithdrawalResponse.ProtoReflect.Descriptor instead. -func (*GetWithdrawalResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use EpochRewardSummaryEdge.ProtoReflect.Descriptor instead. +func (*EpochRewardSummaryEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{187} } -func (x *GetWithdrawalResponse) GetWithdrawal() *vega.Withdrawal { +func (x *EpochRewardSummaryEdge) GetNode() *vega.EpochRewardSummary { if x != nil { - return x.Withdrawal + return x.Node } return nil } -// List all withdrawals for a given party -type ListWithdrawalsRequest struct { +func (x *EpochRewardSummaryEdge) GetCursor() string { + if x != nil { + return x.Cursor + } + return "" +} + +// Request sent for subscribing to rewards +type ObserveRewardsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Restrict withdrawals to those made by this party ID. - PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` - // Pagination controls. - Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` - // Date range of the requested data, if provided. - DateRange *DateRange `protobuf:"bytes,3,opt,name=date_range,json=dateRange,proto3,oneof" json:"date_range,omitempty"` + // Asset ID to get rewards data for, if provided. + AssetId *string `protobuf:"bytes,1,opt,name=asset_id,json=assetId,proto3,oneof" json:"asset_id,omitempty"` + // Party ID to get rewards data for, if provided. + PartyId *string `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3,oneof" json:"party_id,omitempty"` } -func (x *ListWithdrawalsRequest) Reset() { - *x = ListWithdrawalsRequest{} +func (x *ObserveRewardsRequest) Reset() { + *x = ObserveRewardsRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[188] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11864,13 +11894,13 @@ func (x *ListWithdrawalsRequest) Reset() { } } -func (x *ListWithdrawalsRequest) String() string { +func (x *ObserveRewardsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListWithdrawalsRequest) ProtoMessage() {} +func (*ObserveRewardsRequest) ProtoMessage() {} -func (x *ListWithdrawalsRequest) ProtoReflect() protoreflect.Message { +func (x *ObserveRewardsRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[188] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11882,44 +11912,37 @@ func (x *ListWithdrawalsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListWithdrawalsRequest.ProtoReflect.Descriptor instead. -func (*ListWithdrawalsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ObserveRewardsRequest.ProtoReflect.Descriptor instead. +func (*ObserveRewardsRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{188} } -func (x *ListWithdrawalsRequest) GetPartyId() string { - if x != nil { - return x.PartyId +func (x *ObserveRewardsRequest) GetAssetId() string { + if x != nil && x.AssetId != nil { + return *x.AssetId } return "" } -func (x *ListWithdrawalsRequest) GetPagination() *Pagination { - if x != nil { - return x.Pagination - } - return nil -} - -func (x *ListWithdrawalsRequest) GetDateRange() *DateRange { - if x != nil { - return x.DateRange +func (x *ObserveRewardsRequest) GetPartyId() string { + if x != nil && x.PartyId != nil { + return *x.PartyId } - return nil + return "" } -// Response from listing withdrawals data -type ListWithdrawalsResponse struct { +// Response that is received from subscribing to rewards data +type ObserveRewardsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of withdrawals data and corresponding page information. - Withdrawals *WithdrawalsConnection `protobuf:"bytes,1,opt,name=withdrawals,proto3" json:"withdrawals,omitempty"` + // Rewards data received. + Reward *vega.Reward `protobuf:"bytes,1,opt,name=reward,proto3" json:"reward,omitempty"` } -func (x *ListWithdrawalsResponse) Reset() { - *x = ListWithdrawalsResponse{} +func (x *ObserveRewardsResponse) Reset() { + *x = ObserveRewardsResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[189] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11927,13 +11950,13 @@ func (x *ListWithdrawalsResponse) Reset() { } } -func (x *ListWithdrawalsResponse) String() string { +func (x *ObserveRewardsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListWithdrawalsResponse) ProtoMessage() {} +func (*ObserveRewardsResponse) ProtoMessage() {} -func (x *ListWithdrawalsResponse) ProtoReflect() protoreflect.Message { +func (x *ObserveRewardsResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[189] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11945,32 +11968,30 @@ func (x *ListWithdrawalsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListWithdrawalsResponse.ProtoReflect.Descriptor instead. -func (*ListWithdrawalsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ObserveRewardsResponse.ProtoReflect.Descriptor instead. +func (*ObserveRewardsResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{189} } -func (x *ListWithdrawalsResponse) GetWithdrawals() *WithdrawalsConnection { +func (x *ObserveRewardsResponse) GetReward() *vega.Reward { if x != nil { - return x.Withdrawals + return x.Reward } return nil } -// Withdrawals data with the corresponding cursor. -type WithdrawalEdge struct { +// Request to get data about a specific deposit by ID +type GetDepositRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Data associated with a single withdrawal made from the Vega network. - Node *vega.Withdrawal `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Deposit ID to return data for. + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } -func (x *WithdrawalEdge) Reset() { - *x = WithdrawalEdge{} +func (x *GetDepositRequest) Reset() { + *x = GetDepositRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[190] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11978,13 +11999,13 @@ func (x *WithdrawalEdge) Reset() { } } -func (x *WithdrawalEdge) String() string { +func (x *GetDepositRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*WithdrawalEdge) ProtoMessage() {} +func (*GetDepositRequest) ProtoMessage() {} -func (x *WithdrawalEdge) ProtoReflect() protoreflect.Message { +func (x *GetDepositRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[190] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -11996,39 +12017,30 @@ func (x *WithdrawalEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use WithdrawalEdge.ProtoReflect.Descriptor instead. -func (*WithdrawalEdge) Descriptor() ([]byte, []int) { +// Deprecated: Use GetDepositRequest.ProtoReflect.Descriptor instead. +func (*GetDepositRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{190} } -func (x *WithdrawalEdge) GetNode() *vega.Withdrawal { - if x != nil { - return x.Node - } - return nil -} - -func (x *WithdrawalEdge) GetCursor() string { +func (x *GetDepositRequest) GetId() string { if x != nil { - return x.Cursor + return x.Id } return "" } -// Page of withdrawals data and corresponding page information -type WithdrawalsConnection struct { +// Response that is received from getting deposit data +type GetDepositResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of withdrawals data and their corresponding cursors. - Edges []*WithdrawalEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + // Deposit matching the ID from the request. + Deposit *vega.Deposit `protobuf:"bytes,1,opt,name=deposit,proto3" json:"deposit,omitempty"` } -func (x *WithdrawalsConnection) Reset() { - *x = WithdrawalsConnection{} +func (x *GetDepositResponse) Reset() { + *x = GetDepositResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[191] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -12036,13 +12048,13 @@ func (x *WithdrawalsConnection) Reset() { } } -func (x *WithdrawalsConnection) String() string { +func (x *GetDepositResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*WithdrawalsConnection) ProtoMessage() {} +func (*GetDepositResponse) ProtoMessage() {} -func (x *WithdrawalsConnection) ProtoReflect() protoreflect.Message { +func (x *GetDepositResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[191] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -12054,37 +12066,34 @@ func (x *WithdrawalsConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use WithdrawalsConnection.ProtoReflect.Descriptor instead. -func (*WithdrawalsConnection) Descriptor() ([]byte, []int) { +// Deprecated: Use GetDepositResponse.ProtoReflect.Descriptor instead. +func (*GetDepositResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{191} } -func (x *WithdrawalsConnection) GetEdges() []*WithdrawalEdge { - if x != nil { - return x.Edges - } - return nil -} - -func (x *WithdrawalsConnection) GetPageInfo() *PageInfo { +func (x *GetDepositResponse) GetDeposit() *vega.Deposit { if x != nil { - return x.PageInfo + return x.Deposit } return nil } -// Request for obtaining asset -type GetAssetRequest struct { +// Request to list all deposits for a given party +type ListDepositsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Asset ID to get data for. - AssetId string `protobuf:"bytes,1,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty"` + // Restrict deposits to those made by the given party ID. + PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` + // Pagination controls. + Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + // Date range of the requested data, if provided. + DateRange *DateRange `protobuf:"bytes,3,opt,name=date_range,json=dateRange,proto3,oneof" json:"date_range,omitempty"` } -func (x *GetAssetRequest) Reset() { - *x = GetAssetRequest{} +func (x *ListDepositsRequest) Reset() { + *x = ListDepositsRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[192] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -12092,13 +12101,13 @@ func (x *GetAssetRequest) Reset() { } } -func (x *GetAssetRequest) String() string { +func (x *ListDepositsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetAssetRequest) ProtoMessage() {} +func (*ListDepositsRequest) ProtoMessage() {} -func (x *GetAssetRequest) ProtoReflect() protoreflect.Message { +func (x *ListDepositsRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[192] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -12110,30 +12119,44 @@ func (x *GetAssetRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetAssetRequest.ProtoReflect.Descriptor instead. -func (*GetAssetRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListDepositsRequest.ProtoReflect.Descriptor instead. +func (*ListDepositsRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{192} } -func (x *GetAssetRequest) GetAssetId() string { +func (x *ListDepositsRequest) GetPartyId() string { if x != nil { - return x.AssetId + return x.PartyId } return "" } -// Response from getting an asset -type GetAssetResponse struct { +func (x *ListDepositsRequest) GetPagination() *Pagination { + if x != nil { + return x.Pagination + } + return nil +} + +func (x *ListDepositsRequest) GetDateRange() *DateRange { + if x != nil { + return x.DateRange + } + return nil +} + +// Response from listing deposits +type ListDepositsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Asset information that is returned. - Asset *vega.Asset `protobuf:"bytes,1,opt,name=asset,proto3" json:"asset,omitempty"` + // Page of deposits data and corresponding page information. + Deposits *DepositsConnection `protobuf:"bytes,1,opt,name=deposits,proto3" json:"deposits,omitempty"` } -func (x *GetAssetResponse) Reset() { - *x = GetAssetResponse{} +func (x *ListDepositsResponse) Reset() { + *x = ListDepositsResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[193] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -12141,13 +12164,13 @@ func (x *GetAssetResponse) Reset() { } } -func (x *GetAssetResponse) String() string { +func (x *ListDepositsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetAssetResponse) ProtoMessage() {} +func (*ListDepositsResponse) ProtoMessage() {} -func (x *GetAssetResponse) ProtoReflect() protoreflect.Message { +func (x *ListDepositsResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[193] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -12159,32 +12182,32 @@ func (x *GetAssetResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetAssetResponse.ProtoReflect.Descriptor instead. -func (*GetAssetResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListDepositsResponse.ProtoReflect.Descriptor instead. +func (*ListDepositsResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{193} } -func (x *GetAssetResponse) GetAsset() *vega.Asset { +func (x *ListDepositsResponse) GetDeposits() *DepositsConnection { if x != nil { - return x.Asset + return x.Deposits } return nil } -// Request for listing assets data -type ListAssetsRequest struct { +// Deposits data with the corresponding cursor. +type DepositEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Optional asset ID to list data for. - AssetId *string `protobuf:"bytes,1,opt,name=asset_id,json=assetId,proto3,oneof" json:"asset_id,omitempty"` - // Optional pagination information to limit the data that is returned. - Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + // Data associated with a single deposit made on the Vega network. + Node *vega.Deposit `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *ListAssetsRequest) Reset() { - *x = ListAssetsRequest{} +func (x *DepositEdge) Reset() { + *x = DepositEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[194] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -12192,13 +12215,13 @@ func (x *ListAssetsRequest) Reset() { } } -func (x *ListAssetsRequest) String() string { +func (x *DepositEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListAssetsRequest) ProtoMessage() {} +func (*DepositEdge) ProtoMessage() {} -func (x *ListAssetsRequest) ProtoReflect() protoreflect.Message { +func (x *DepositEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[194] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -12210,37 +12233,39 @@ func (x *ListAssetsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListAssetsRequest.ProtoReflect.Descriptor instead. -func (*ListAssetsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use DepositEdge.ProtoReflect.Descriptor instead. +func (*DepositEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{194} } -func (x *ListAssetsRequest) GetAssetId() string { - if x != nil && x.AssetId != nil { - return *x.AssetId +func (x *DepositEdge) GetNode() *vega.Deposit { + if x != nil { + return x.Node } - return "" + return nil } -func (x *ListAssetsRequest) GetPagination() *Pagination { +func (x *DepositEdge) GetCursor() string { if x != nil { - return x.Pagination + return x.Cursor } - return nil + return "" } -// Response from listing assets -type ListAssetsResponse struct { +// Page of deposits data received and corresponding page information +type DepositsConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of assets data and corresponding page information. - Assets *AssetsConnection `protobuf:"bytes,1,opt,name=assets,proto3" json:"assets,omitempty"` + // Page of deposits data and their corresponding cursors. + Edges []*DepositEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *ListAssetsResponse) Reset() { - *x = ListAssetsResponse{} +func (x *DepositsConnection) Reset() { + *x = DepositsConnection{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[195] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -12248,13 +12273,13 @@ func (x *ListAssetsResponse) Reset() { } } -func (x *ListAssetsResponse) String() string { +func (x *DepositsConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListAssetsResponse) ProtoMessage() {} +func (*DepositsConnection) ProtoMessage() {} -func (x *ListAssetsResponse) ProtoReflect() protoreflect.Message { +func (x *DepositsConnection) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[195] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -12266,32 +12291,37 @@ func (x *ListAssetsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListAssetsResponse.ProtoReflect.Descriptor instead. -func (*ListAssetsResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{195} +// Deprecated: Use DepositsConnection.ProtoReflect.Descriptor instead. +func (*DepositsConnection) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{195} } -func (x *ListAssetsResponse) GetAssets() *AssetsConnection { +func (x *DepositsConnection) GetEdges() []*DepositEdge { if x != nil { - return x.Assets + return x.Edges } return nil } -// Assets data with the corresponding cursor. -type AssetEdge struct { +func (x *DepositsConnection) GetPageInfo() *PageInfo { + if x != nil { + return x.PageInfo + } + return nil +} + +// Request to get a specific withdrawal by ID +type GetWithdrawalRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Asset data returned. - Node *vega.Asset `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Withdrawal ID to retrieve data for. + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } -func (x *AssetEdge) Reset() { - *x = AssetEdge{} +func (x *GetWithdrawalRequest) Reset() { + *x = GetWithdrawalRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[196] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -12299,13 +12329,13 @@ func (x *AssetEdge) Reset() { } } -func (x *AssetEdge) String() string { +func (x *GetWithdrawalRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AssetEdge) ProtoMessage() {} +func (*GetWithdrawalRequest) ProtoMessage() {} -func (x *AssetEdge) ProtoReflect() protoreflect.Message { +func (x *GetWithdrawalRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[196] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -12317,39 +12347,30 @@ func (x *AssetEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AssetEdge.ProtoReflect.Descriptor instead. -func (*AssetEdge) Descriptor() ([]byte, []int) { +// Deprecated: Use GetWithdrawalRequest.ProtoReflect.Descriptor instead. +func (*GetWithdrawalRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{196} } -func (x *AssetEdge) GetNode() *vega.Asset { - if x != nil { - return x.Node - } - return nil -} - -func (x *AssetEdge) GetCursor() string { +func (x *GetWithdrawalRequest) GetId() string { if x != nil { - return x.Cursor + return x.Id } return "" } -// Page of asset data and corresponding page information -type AssetsConnection struct { +// Response for a withdrawal request +type GetWithdrawalResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of assets data and their corresponding cursors. - Edges []*AssetEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + // Withdrawal matching the ID from the request. + Withdrawal *vega.Withdrawal `protobuf:"bytes,1,opt,name=withdrawal,proto3" json:"withdrawal,omitempty"` } -func (x *AssetsConnection) Reset() { - *x = AssetsConnection{} +func (x *GetWithdrawalResponse) Reset() { + *x = GetWithdrawalResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[197] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -12357,13 +12378,13 @@ func (x *AssetsConnection) Reset() { } } -func (x *AssetsConnection) String() string { +func (x *GetWithdrawalResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AssetsConnection) ProtoMessage() {} +func (*GetWithdrawalResponse) ProtoMessage() {} -func (x *AssetsConnection) ProtoReflect() protoreflect.Message { +func (x *GetWithdrawalResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[197] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -12375,45 +12396,34 @@ func (x *AssetsConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AssetsConnection.ProtoReflect.Descriptor instead. -func (*AssetsConnection) Descriptor() ([]byte, []int) { +// Deprecated: Use GetWithdrawalResponse.ProtoReflect.Descriptor instead. +func (*GetWithdrawalResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{197} } -func (x *AssetsConnection) GetEdges() []*AssetEdge { - if x != nil { - return x.Edges - } - return nil -} - -func (x *AssetsConnection) GetPageInfo() *PageInfo { +func (x *GetWithdrawalResponse) GetWithdrawal() *vega.Withdrawal { if x != nil { - return x.PageInfo + return x.Withdrawal } return nil } -// Request for listing liquidity provisions -type ListLiquidityProvisionsRequest struct { +// List all withdrawals for a given party +type ListWithdrawalsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Restrict liquidity provisions to those placed on the given market. - MarketId *string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3,oneof" json:"market_id,omitempty"` - // Restrict liquidity provisions to those placed by the given party. - PartyId *string `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3,oneof" json:"party_id,omitempty"` - // Restrict liquidity provisions to those with the given order reference. - Reference *string `protobuf:"bytes,3,opt,name=reference,proto3,oneof" json:"reference,omitempty"` - // Whether to include live liquidity provisions. If not set, live orders will not be included. - Live *bool `protobuf:"varint,4,opt,name=live,proto3,oneof" json:"live,omitempty"` + // Restrict withdrawals to those made by this party ID. + PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` // Pagination controls. - Pagination *Pagination `protobuf:"bytes,5,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + // Date range of the requested data, if provided. + DateRange *DateRange `protobuf:"bytes,3,opt,name=date_range,json=dateRange,proto3,oneof" json:"date_range,omitempty"` } -func (x *ListLiquidityProvisionsRequest) Reset() { - *x = ListLiquidityProvisionsRequest{} +func (x *ListWithdrawalsRequest) Reset() { + *x = ListWithdrawalsRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[198] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -12421,13 +12431,13 @@ func (x *ListLiquidityProvisionsRequest) Reset() { } } -func (x *ListLiquidityProvisionsRequest) String() string { +func (x *ListWithdrawalsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListLiquidityProvisionsRequest) ProtoMessage() {} +func (*ListWithdrawalsRequest) ProtoMessage() {} -func (x *ListLiquidityProvisionsRequest) ProtoReflect() protoreflect.Message { +func (x *ListWithdrawalsRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[198] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -12439,66 +12449,44 @@ func (x *ListLiquidityProvisionsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListLiquidityProvisionsRequest.ProtoReflect.Descriptor instead. -func (*ListLiquidityProvisionsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListWithdrawalsRequest.ProtoReflect.Descriptor instead. +func (*ListWithdrawalsRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{198} } -func (x *ListLiquidityProvisionsRequest) GetMarketId() string { - if x != nil && x.MarketId != nil { - return *x.MarketId - } - return "" -} - -func (x *ListLiquidityProvisionsRequest) GetPartyId() string { - if x != nil && x.PartyId != nil { - return *x.PartyId - } - return "" -} - -func (x *ListLiquidityProvisionsRequest) GetReference() string { - if x != nil && x.Reference != nil { - return *x.Reference +func (x *ListWithdrawalsRequest) GetPartyId() string { + if x != nil { + return x.PartyId } return "" } -func (x *ListLiquidityProvisionsRequest) GetLive() bool { - if x != nil && x.Live != nil { - return *x.Live +func (x *ListWithdrawalsRequest) GetPagination() *Pagination { + if x != nil { + return x.Pagination } - return false + return nil } -func (x *ListLiquidityProvisionsRequest) GetPagination() *Pagination { +func (x *ListWithdrawalsRequest) GetDateRange() *DateRange { if x != nil { - return x.Pagination + return x.DateRange } return nil } -// Request for listing liquidity provisions -type ListAllLiquidityProvisionsRequest struct { +// Response from listing withdrawals data +type ListWithdrawalsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Restrict liquidity provisions to those placed on the given market. - MarketId *string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3,oneof" json:"market_id,omitempty"` - // Restrict liquidity provisions to those placed by the given party. - PartyId *string `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3,oneof" json:"party_id,omitempty"` - // Restrict liquidity provisions to those with the given order reference. - Reference *string `protobuf:"bytes,3,opt,name=reference,proto3,oneof" json:"reference,omitempty"` - // Whether to include live liquidity provisions. If not set, live orders will not be included. - Live *bool `protobuf:"varint,4,opt,name=live,proto3,oneof" json:"live,omitempty"` - // Pagination controls. - Pagination *Pagination `protobuf:"bytes,5,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + // Page of withdrawals data and corresponding page information. + Withdrawals *WithdrawalsConnection `protobuf:"bytes,1,opt,name=withdrawals,proto3" json:"withdrawals,omitempty"` } -func (x *ListAllLiquidityProvisionsRequest) Reset() { - *x = ListAllLiquidityProvisionsRequest{} +func (x *ListWithdrawalsResponse) Reset() { + *x = ListWithdrawalsResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[199] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -12506,13 +12494,13 @@ func (x *ListAllLiquidityProvisionsRequest) Reset() { } } -func (x *ListAllLiquidityProvisionsRequest) String() string { +func (x *ListWithdrawalsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListAllLiquidityProvisionsRequest) ProtoMessage() {} +func (*ListWithdrawalsResponse) ProtoMessage() {} -func (x *ListAllLiquidityProvisionsRequest) ProtoReflect() protoreflect.Message { +func (x *ListWithdrawalsResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[199] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -12524,58 +12512,32 @@ func (x *ListAllLiquidityProvisionsRequest) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use ListAllLiquidityProvisionsRequest.ProtoReflect.Descriptor instead. -func (*ListAllLiquidityProvisionsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListWithdrawalsResponse.ProtoReflect.Descriptor instead. +func (*ListWithdrawalsResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{199} } -func (x *ListAllLiquidityProvisionsRequest) GetMarketId() string { - if x != nil && x.MarketId != nil { - return *x.MarketId - } - return "" -} - -func (x *ListAllLiquidityProvisionsRequest) GetPartyId() string { - if x != nil && x.PartyId != nil { - return *x.PartyId - } - return "" -} - -func (x *ListAllLiquidityProvisionsRequest) GetReference() string { - if x != nil && x.Reference != nil { - return *x.Reference - } - return "" -} - -func (x *ListAllLiquidityProvisionsRequest) GetLive() bool { - if x != nil && x.Live != nil { - return *x.Live - } - return false -} - -func (x *ListAllLiquidityProvisionsRequest) GetPagination() *Pagination { +func (x *ListWithdrawalsResponse) GetWithdrawals() *WithdrawalsConnection { if x != nil { - return x.Pagination + return x.Withdrawals } return nil } -// Response from listing liquidity provisions -type ListLiquidityProvisionsResponse struct { +// Withdrawals data with the corresponding cursor. +type WithdrawalEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of liquidity provisions data and corresponding page information. - LiquidityProvisions *LiquidityProvisionsConnection `protobuf:"bytes,1,opt,name=liquidity_provisions,json=liquidityProvisions,proto3" json:"liquidity_provisions,omitempty"` + // Data associated with a single withdrawal made from the Vega network. + Node *vega.Withdrawal `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *ListLiquidityProvisionsResponse) Reset() { - *x = ListLiquidityProvisionsResponse{} +func (x *WithdrawalEdge) Reset() { + *x = WithdrawalEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[200] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -12583,13 +12545,13 @@ func (x *ListLiquidityProvisionsResponse) Reset() { } } -func (x *ListLiquidityProvisionsResponse) String() string { +func (x *WithdrawalEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListLiquidityProvisionsResponse) ProtoMessage() {} +func (*WithdrawalEdge) ProtoMessage() {} -func (x *ListLiquidityProvisionsResponse) ProtoReflect() protoreflect.Message { +func (x *WithdrawalEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[200] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -12601,30 +12563,39 @@ func (x *ListLiquidityProvisionsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListLiquidityProvisionsResponse.ProtoReflect.Descriptor instead. -func (*ListLiquidityProvisionsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use WithdrawalEdge.ProtoReflect.Descriptor instead. +func (*WithdrawalEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{200} } -func (x *ListLiquidityProvisionsResponse) GetLiquidityProvisions() *LiquidityProvisionsConnection { +func (x *WithdrawalEdge) GetNode() *vega.Withdrawal { if x != nil { - return x.LiquidityProvisions + return x.Node } return nil } -// Response from listing liquidity provisions -type ListAllLiquidityProvisionsResponse struct { +func (x *WithdrawalEdge) GetCursor() string { + if x != nil { + return x.Cursor + } + return "" +} + +// Page of withdrawals data and corresponding page information +type WithdrawalsConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of liquidity provisions data and corresponding page information. - LiquidityProvisions *LiquidityProvisionsWithPendingConnection `protobuf:"bytes,1,opt,name=liquidity_provisions,json=liquidityProvisions,proto3" json:"liquidity_provisions,omitempty"` + // Page of withdrawals data and their corresponding cursors. + Edges []*WithdrawalEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *ListAllLiquidityProvisionsResponse) Reset() { - *x = ListAllLiquidityProvisionsResponse{} +func (x *WithdrawalsConnection) Reset() { + *x = WithdrawalsConnection{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[201] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -12632,13 +12603,13 @@ func (x *ListAllLiquidityProvisionsResponse) Reset() { } } -func (x *ListAllLiquidityProvisionsResponse) String() string { +func (x *WithdrawalsConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListAllLiquidityProvisionsResponse) ProtoMessage() {} +func (*WithdrawalsConnection) ProtoMessage() {} -func (x *ListAllLiquidityProvisionsResponse) ProtoReflect() protoreflect.Message { +func (x *WithdrawalsConnection) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[201] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -12650,34 +12621,37 @@ func (x *ListAllLiquidityProvisionsResponse) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use ListAllLiquidityProvisionsResponse.ProtoReflect.Descriptor instead. -func (*ListAllLiquidityProvisionsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use WithdrawalsConnection.ProtoReflect.Descriptor instead. +func (*WithdrawalsConnection) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{201} } -func (x *ListAllLiquidityProvisionsResponse) GetLiquidityProvisions() *LiquidityProvisionsWithPendingConnection { +func (x *WithdrawalsConnection) GetEdges() []*WithdrawalEdge { if x != nil { - return x.LiquidityProvisions + return x.Edges } return nil } -// Liquidity provider commitment. For API purposes this can report a pending liquidity provision, -// the current live provision or both in the event that an update has been accepted on the network, but has yet -// to go live and thus there is still a pending provision that will become active in the next epoch. -type LiquidityProvision struct { +func (x *WithdrawalsConnection) GetPageInfo() *PageInfo { + if x != nil { + return x.PageInfo + } + return nil +} + +// Request for obtaining asset +type GetAssetRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Liquidity provision that is currently live. - Current *vega.LiquidityProvision `protobuf:"bytes,1,opt,name=current,proto3" json:"current,omitempty"` - // Liquidity provision that is currently pending and will go live in the next epoch. - Pending *vega.LiquidityProvision `protobuf:"bytes,2,opt,name=pending,proto3,oneof" json:"pending,omitempty"` + // Asset ID to get data for. + AssetId string `protobuf:"bytes,1,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty"` } -func (x *LiquidityProvision) Reset() { - *x = LiquidityProvision{} +func (x *GetAssetRequest) Reset() { + *x = GetAssetRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[202] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -12685,13 +12659,13 @@ func (x *LiquidityProvision) Reset() { } } -func (x *LiquidityProvision) String() string { +func (x *GetAssetRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LiquidityProvision) ProtoMessage() {} +func (*GetAssetRequest) ProtoMessage() {} -func (x *LiquidityProvision) ProtoReflect() protoreflect.Message { +func (x *GetAssetRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[202] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -12703,39 +12677,30 @@ func (x *LiquidityProvision) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LiquidityProvision.ProtoReflect.Descriptor instead. -func (*LiquidityProvision) Descriptor() ([]byte, []int) { +// Deprecated: Use GetAssetRequest.ProtoReflect.Descriptor instead. +func (*GetAssetRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{202} } -func (x *LiquidityProvision) GetCurrent() *vega.LiquidityProvision { - if x != nil { - return x.Current - } - return nil -} - -func (x *LiquidityProvision) GetPending() *vega.LiquidityProvision { +func (x *GetAssetRequest) GetAssetId() string { if x != nil { - return x.Pending + return x.AssetId } - return nil + return "" } -// Liquidity provision data with the corresponding cursor. -type LiquidityProvisionsEdge struct { +// Response from getting an asset +type GetAssetResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Data corresponding to a liquidity provider's commitment. - Node *vega.LiquidityProvision `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Asset information that is returned. + Asset *vega.Asset `protobuf:"bytes,1,opt,name=asset,proto3" json:"asset,omitempty"` } -func (x *LiquidityProvisionsEdge) Reset() { - *x = LiquidityProvisionsEdge{} +func (x *GetAssetResponse) Reset() { + *x = GetAssetResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[203] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -12743,13 +12708,13 @@ func (x *LiquidityProvisionsEdge) Reset() { } } -func (x *LiquidityProvisionsEdge) String() string { +func (x *GetAssetResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LiquidityProvisionsEdge) ProtoMessage() {} +func (*GetAssetResponse) ProtoMessage() {} -func (x *LiquidityProvisionsEdge) ProtoReflect() protoreflect.Message { +func (x *GetAssetResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[203] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -12761,39 +12726,32 @@ func (x *LiquidityProvisionsEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LiquidityProvisionsEdge.ProtoReflect.Descriptor instead. -func (*LiquidityProvisionsEdge) Descriptor() ([]byte, []int) { +// Deprecated: Use GetAssetResponse.ProtoReflect.Descriptor instead. +func (*GetAssetResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{203} } -func (x *LiquidityProvisionsEdge) GetNode() *vega.LiquidityProvision { +func (x *GetAssetResponse) GetAsset() *vega.Asset { if x != nil { - return x.Node + return x.Asset } return nil } -func (x *LiquidityProvisionsEdge) GetCursor() string { - if x != nil { - return x.Cursor - } - return "" -} - -// Liquidity provision data with the corresponding cursor. -type LiquidityProvisionWithPendingEdge struct { +// Request for listing assets data +type ListAssetsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Data corresponding to a liquidity provider's commitment. - Node *LiquidityProvision `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Optional asset ID to list data for. + AssetId *string `protobuf:"bytes,1,opt,name=asset_id,json=assetId,proto3,oneof" json:"asset_id,omitempty"` + // Optional pagination information to limit the data that is returned. + Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` } -func (x *LiquidityProvisionWithPendingEdge) Reset() { - *x = LiquidityProvisionWithPendingEdge{} +func (x *ListAssetsRequest) Reset() { + *x = ListAssetsRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[204] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -12801,13 +12759,13 @@ func (x *LiquidityProvisionWithPendingEdge) Reset() { } } -func (x *LiquidityProvisionWithPendingEdge) String() string { +func (x *ListAssetsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LiquidityProvisionWithPendingEdge) ProtoMessage() {} +func (*ListAssetsRequest) ProtoMessage() {} -func (x *LiquidityProvisionWithPendingEdge) ProtoReflect() protoreflect.Message { +func (x *ListAssetsRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[204] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -12819,39 +12777,37 @@ func (x *LiquidityProvisionWithPendingEdge) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use LiquidityProvisionWithPendingEdge.ProtoReflect.Descriptor instead. -func (*LiquidityProvisionWithPendingEdge) Descriptor() ([]byte, []int) { +// Deprecated: Use ListAssetsRequest.ProtoReflect.Descriptor instead. +func (*ListAssetsRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{204} } -func (x *LiquidityProvisionWithPendingEdge) GetNode() *LiquidityProvision { - if x != nil { - return x.Node +func (x *ListAssetsRequest) GetAssetId() string { + if x != nil && x.AssetId != nil { + return *x.AssetId } - return nil + return "" } -func (x *LiquidityProvisionWithPendingEdge) GetCursor() string { +func (x *ListAssetsRequest) GetPagination() *Pagination { if x != nil { - return x.Cursor + return x.Pagination } - return "" + return nil } -// Page of liquidity provisions data and corresponding page information -type LiquidityProvisionsConnection struct { +// Response from listing assets +type ListAssetsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of liquidity provisions data and their corresponding cursors. - Edges []*LiquidityProvisionsEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + // Page of assets data and corresponding page information. + Assets *AssetsConnection `protobuf:"bytes,1,opt,name=assets,proto3" json:"assets,omitempty"` } -func (x *LiquidityProvisionsConnection) Reset() { - *x = LiquidityProvisionsConnection{} +func (x *ListAssetsResponse) Reset() { + *x = ListAssetsResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[205] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -12859,13 +12815,13 @@ func (x *LiquidityProvisionsConnection) Reset() { } } -func (x *LiquidityProvisionsConnection) String() string { +func (x *ListAssetsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LiquidityProvisionsConnection) ProtoMessage() {} +func (*ListAssetsResponse) ProtoMessage() {} -func (x *LiquidityProvisionsConnection) ProtoReflect() protoreflect.Message { +func (x *ListAssetsResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[205] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -12877,39 +12833,32 @@ func (x *LiquidityProvisionsConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LiquidityProvisionsConnection.ProtoReflect.Descriptor instead. -func (*LiquidityProvisionsConnection) Descriptor() ([]byte, []int) { +// Deprecated: Use ListAssetsResponse.ProtoReflect.Descriptor instead. +func (*ListAssetsResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{205} } -func (x *LiquidityProvisionsConnection) GetEdges() []*LiquidityProvisionsEdge { - if x != nil { - return x.Edges - } - return nil -} - -func (x *LiquidityProvisionsConnection) GetPageInfo() *PageInfo { +func (x *ListAssetsResponse) GetAssets() *AssetsConnection { if x != nil { - return x.PageInfo + return x.Assets } return nil } -// Page of liquidity provisions data and corresponding page information -type LiquidityProvisionsWithPendingConnection struct { +// Assets data with the corresponding cursor. +type AssetEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of liquidity provisions data and their corresponding cursors. - Edges []*LiquidityProvisionWithPendingEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used to fetch further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + // Asset data returned. + Node *vega.Asset `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *LiquidityProvisionsWithPendingConnection) Reset() { - *x = LiquidityProvisionsWithPendingConnection{} +func (x *AssetEdge) Reset() { + *x = AssetEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[206] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -12917,13 +12866,13 @@ func (x *LiquidityProvisionsWithPendingConnection) Reset() { } } -func (x *LiquidityProvisionsWithPendingConnection) String() string { +func (x *AssetEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LiquidityProvisionsWithPendingConnection) ProtoMessage() {} +func (*AssetEdge) ProtoMessage() {} -func (x *LiquidityProvisionsWithPendingConnection) ProtoReflect() protoreflect.Message { +func (x *AssetEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[206] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -12935,39 +12884,39 @@ func (x *LiquidityProvisionsWithPendingConnection) ProtoReflect() protoreflect.M return mi.MessageOf(x) } -// Deprecated: Use LiquidityProvisionsWithPendingConnection.ProtoReflect.Descriptor instead. -func (*LiquidityProvisionsWithPendingConnection) Descriptor() ([]byte, []int) { +// Deprecated: Use AssetEdge.ProtoReflect.Descriptor instead. +func (*AssetEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{206} } -func (x *LiquidityProvisionsWithPendingConnection) GetEdges() []*LiquidityProvisionWithPendingEdge { +func (x *AssetEdge) GetNode() *vega.Asset { if x != nil { - return x.Edges + return x.Node } return nil } -func (x *LiquidityProvisionsWithPendingConnection) GetPageInfo() *PageInfo { +func (x *AssetEdge) GetCursor() string { if x != nil { - return x.PageInfo + return x.Cursor } - return nil + return "" } -// Request sent to subscribe to liquidity provisions -type ObserveLiquidityProvisionsRequest struct { +// Page of asset data and corresponding page information +type AssetsConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Target market to observe for liquidity provisions. - MarketId *string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3,oneof" json:"market_id,omitempty"` - // Target party to observe for submitted liquidity provisions. - PartyId *string `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3,oneof" json:"party_id,omitempty"` + // Page of assets data and their corresponding cursors. + Edges []*AssetEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *ObserveLiquidityProvisionsRequest) Reset() { - *x = ObserveLiquidityProvisionsRequest{} +func (x *AssetsConnection) Reset() { + *x = AssetsConnection{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[207] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -12975,13 +12924,13 @@ func (x *ObserveLiquidityProvisionsRequest) Reset() { } } -func (x *ObserveLiquidityProvisionsRequest) String() string { +func (x *AssetsConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ObserveLiquidityProvisionsRequest) ProtoMessage() {} +func (*AssetsConnection) ProtoMessage() {} -func (x *ObserveLiquidityProvisionsRequest) ProtoReflect() protoreflect.Message { +func (x *AssetsConnection) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[207] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -12993,36 +12942,45 @@ func (x *ObserveLiquidityProvisionsRequest) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use ObserveLiquidityProvisionsRequest.ProtoReflect.Descriptor instead. -func (*ObserveLiquidityProvisionsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use AssetsConnection.ProtoReflect.Descriptor instead. +func (*AssetsConnection) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{207} } -func (x *ObserveLiquidityProvisionsRequest) GetMarketId() string { - if x != nil && x.MarketId != nil { - return *x.MarketId +func (x *AssetsConnection) GetEdges() []*AssetEdge { + if x != nil { + return x.Edges } - return "" + return nil } -func (x *ObserveLiquidityProvisionsRequest) GetPartyId() string { - if x != nil && x.PartyId != nil { - return *x.PartyId +func (x *AssetsConnection) GetPageInfo() *PageInfo { + if x != nil { + return x.PageInfo } - return "" + return nil } -// Response from liquidity provisions subscription -type ObserveLiquidityProvisionsResponse struct { +// Request for listing liquidity provisions +type ListLiquidityProvisionsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - LiquidityProvisions []*vega.LiquidityProvision `protobuf:"bytes,1,rep,name=liquidity_provisions,json=liquidityProvisions,proto3" json:"liquidity_provisions,omitempty"` + // Restrict liquidity provisions to those placed on the given market. + MarketId *string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3,oneof" json:"market_id,omitempty"` + // Restrict liquidity provisions to those placed by the given party. + PartyId *string `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3,oneof" json:"party_id,omitempty"` + // Restrict liquidity provisions to those with the given order reference. + Reference *string `protobuf:"bytes,3,opt,name=reference,proto3,oneof" json:"reference,omitempty"` + // Whether to include live liquidity provisions. If not set, live orders will not be included. + Live *bool `protobuf:"varint,4,opt,name=live,proto3,oneof" json:"live,omitempty"` + // Pagination controls. + Pagination *Pagination `protobuf:"bytes,5,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` } -func (x *ObserveLiquidityProvisionsResponse) Reset() { - *x = ObserveLiquidityProvisionsResponse{} +func (x *ListLiquidityProvisionsRequest) Reset() { + *x = ListLiquidityProvisionsRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[208] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -13030,13 +12988,13 @@ func (x *ObserveLiquidityProvisionsResponse) Reset() { } } -func (x *ObserveLiquidityProvisionsResponse) String() string { +func (x *ListLiquidityProvisionsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ObserveLiquidityProvisionsResponse) ProtoMessage() {} +func (*ListLiquidityProvisionsRequest) ProtoMessage() {} -func (x *ObserveLiquidityProvisionsResponse) ProtoReflect() protoreflect.Message { +func (x *ListLiquidityProvisionsRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[208] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -13048,35 +13006,66 @@ func (x *ObserveLiquidityProvisionsResponse) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use ObserveLiquidityProvisionsResponse.ProtoReflect.Descriptor instead. -func (*ObserveLiquidityProvisionsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListLiquidityProvisionsRequest.ProtoReflect.Descriptor instead. +func (*ListLiquidityProvisionsRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{208} } -func (x *ObserveLiquidityProvisionsResponse) GetLiquidityProvisions() []*vega.LiquidityProvision { +func (x *ListLiquidityProvisionsRequest) GetMarketId() string { + if x != nil && x.MarketId != nil { + return *x.MarketId + } + return "" +} + +func (x *ListLiquidityProvisionsRequest) GetPartyId() string { + if x != nil && x.PartyId != nil { + return *x.PartyId + } + return "" +} + +func (x *ListLiquidityProvisionsRequest) GetReference() string { + if x != nil && x.Reference != nil { + return *x.Reference + } + return "" +} + +func (x *ListLiquidityProvisionsRequest) GetLive() bool { + if x != nil && x.Live != nil { + return *x.Live + } + return false +} + +func (x *ListLiquidityProvisionsRequest) GetPagination() *Pagination { if x != nil { - return x.LiquidityProvisions + return x.Pagination } return nil } -// Request for listing active liquidity providers for a given market. -// Either market ID or party ID or both, must be provided. -type ListLiquidityProvidersRequest struct { +// Request for listing liquidity provisions +type ListAllLiquidityProvisionsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Market ID to retrieve liquidity providers for. If omitted, you must provide a party ID. + // Restrict liquidity provisions to those placed on the given market. MarketId *string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3,oneof" json:"market_id,omitempty"` - // Party ID to retrieve data for. If omitted, you must provide a market ID. + // Restrict liquidity provisions to those placed by the given party. PartyId *string `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3,oneof" json:"party_id,omitempty"` + // Restrict liquidity provisions to those with the given order reference. + Reference *string `protobuf:"bytes,3,opt,name=reference,proto3,oneof" json:"reference,omitempty"` + // Whether to include live liquidity provisions. If not set, live orders will not be included. + Live *bool `protobuf:"varint,4,opt,name=live,proto3,oneof" json:"live,omitempty"` // Pagination controls. - Pagination *Pagination `protobuf:"bytes,3,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + Pagination *Pagination `protobuf:"bytes,5,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` } -func (x *ListLiquidityProvidersRequest) Reset() { - *x = ListLiquidityProvidersRequest{} +func (x *ListAllLiquidityProvisionsRequest) Reset() { + *x = ListAllLiquidityProvisionsRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[209] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -13084,13 +13073,13 @@ func (x *ListLiquidityProvidersRequest) Reset() { } } -func (x *ListLiquidityProvidersRequest) String() string { +func (x *ListAllLiquidityProvisionsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListLiquidityProvidersRequest) ProtoMessage() {} +func (*ListAllLiquidityProvisionsRequest) ProtoMessage() {} -func (x *ListLiquidityProvidersRequest) ProtoReflect() protoreflect.Message { +func (x *ListAllLiquidityProvisionsRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[209] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -13102,51 +13091,58 @@ func (x *ListLiquidityProvidersRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListLiquidityProvidersRequest.ProtoReflect.Descriptor instead. -func (*ListLiquidityProvidersRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListAllLiquidityProvisionsRequest.ProtoReflect.Descriptor instead. +func (*ListAllLiquidityProvisionsRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{209} } -func (x *ListLiquidityProvidersRequest) GetMarketId() string { +func (x *ListAllLiquidityProvisionsRequest) GetMarketId() string { if x != nil && x.MarketId != nil { return *x.MarketId } return "" } -func (x *ListLiquidityProvidersRequest) GetPartyId() string { +func (x *ListAllLiquidityProvisionsRequest) GetPartyId() string { if x != nil && x.PartyId != nil { return *x.PartyId } return "" } -func (x *ListLiquidityProvidersRequest) GetPagination() *Pagination { +func (x *ListAllLiquidityProvisionsRequest) GetReference() string { + if x != nil && x.Reference != nil { + return *x.Reference + } + return "" +} + +func (x *ListAllLiquidityProvisionsRequest) GetLive() bool { + if x != nil && x.Live != nil { + return *x.Live + } + return false +} + +func (x *ListAllLiquidityProvisionsRequest) GetPagination() *Pagination { if x != nil { return x.Pagination } return nil } -// Liquidity provider information. -type LiquidityProvider struct { +// Response from listing liquidity provisions +type ListLiquidityProvisionsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Party ID of the liquidity provider. - PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` - // ID of the market the liquidity provider is active in. - MarketId string `protobuf:"bytes,2,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` - // Information used for calculating an LP's fee share, such as the equity like share, - // average entry valuation and liquidity score for the liquidity provider for the specified market. - FeeShare *vega.LiquidityProviderFeeShare `protobuf:"bytes,3,opt,name=fee_share,json=feeShare,proto3" json:"fee_share,omitempty"` - // Information about LP's SLA performance. - Sla *vega.LiquidityProviderSLA `protobuf:"bytes,4,opt,name=sla,proto3" json:"sla,omitempty"` + // Page of liquidity provisions data and corresponding page information. + LiquidityProvisions *LiquidityProvisionsConnection `protobuf:"bytes,1,opt,name=liquidity_provisions,json=liquidityProvisions,proto3" json:"liquidity_provisions,omitempty"` } -func (x *LiquidityProvider) Reset() { - *x = LiquidityProvider{} +func (x *ListLiquidityProvisionsResponse) Reset() { + *x = ListLiquidityProvisionsResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[210] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -13154,13 +13150,13 @@ func (x *LiquidityProvider) Reset() { } } -func (x *LiquidityProvider) String() string { +func (x *ListLiquidityProvisionsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LiquidityProvider) ProtoMessage() {} +func (*ListLiquidityProvisionsResponse) ProtoMessage() {} -func (x *LiquidityProvider) ProtoReflect() protoreflect.Message { +func (x *ListLiquidityProvisionsResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[210] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -13172,53 +13168,30 @@ func (x *LiquidityProvider) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LiquidityProvider.ProtoReflect.Descriptor instead. -func (*LiquidityProvider) Descriptor() ([]byte, []int) { +// Deprecated: Use ListLiquidityProvisionsResponse.ProtoReflect.Descriptor instead. +func (*ListLiquidityProvisionsResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{210} } -func (x *LiquidityProvider) GetPartyId() string { - if x != nil { - return x.PartyId - } - return "" -} - -func (x *LiquidityProvider) GetMarketId() string { - if x != nil { - return x.MarketId - } - return "" -} - -func (x *LiquidityProvider) GetFeeShare() *vega.LiquidityProviderFeeShare { - if x != nil { - return x.FeeShare - } - return nil -} - -func (x *LiquidityProvider) GetSla() *vega.LiquidityProviderSLA { +func (x *ListLiquidityProvisionsResponse) GetLiquidityProvisions() *LiquidityProvisionsConnection { if x != nil { - return x.Sla + return x.LiquidityProvisions } return nil } -// Liquidity provider data with the corresponding cursor. -type LiquidityProviderEdge struct { +// Response from listing liquidity provisions +type ListAllLiquidityProvisionsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Liquidity provider information returned by the API. - Node *LiquidityProvider `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further data. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Page of liquidity provisions data and corresponding page information. + LiquidityProvisions *LiquidityProvisionsWithPendingConnection `protobuf:"bytes,1,opt,name=liquidity_provisions,json=liquidityProvisions,proto3" json:"liquidity_provisions,omitempty"` } -func (x *LiquidityProviderEdge) Reset() { - *x = LiquidityProviderEdge{} +func (x *ListAllLiquidityProvisionsResponse) Reset() { + *x = ListAllLiquidityProvisionsResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[211] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -13226,13 +13199,13 @@ func (x *LiquidityProviderEdge) Reset() { } } -func (x *LiquidityProviderEdge) String() string { +func (x *ListAllLiquidityProvisionsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LiquidityProviderEdge) ProtoMessage() {} +func (*ListAllLiquidityProvisionsResponse) ProtoMessage() {} -func (x *LiquidityProviderEdge) ProtoReflect() protoreflect.Message { +func (x *ListAllLiquidityProvisionsResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[211] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -13244,39 +13217,34 @@ func (x *LiquidityProviderEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LiquidityProviderEdge.ProtoReflect.Descriptor instead. -func (*LiquidityProviderEdge) Descriptor() ([]byte, []int) { +// Deprecated: Use ListAllLiquidityProvisionsResponse.ProtoReflect.Descriptor instead. +func (*ListAllLiquidityProvisionsResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{211} } -func (x *LiquidityProviderEdge) GetNode() *LiquidityProvider { +func (x *ListAllLiquidityProvisionsResponse) GetLiquidityProvisions() *LiquidityProvisionsWithPendingConnection { if x != nil { - return x.Node + return x.LiquidityProvisions } return nil } -func (x *LiquidityProviderEdge) GetCursor() string { - if x != nil { - return x.Cursor - } - return "" -} - -// Page of liquidity provider data and corresponding page information. -type LiquidityProviderConnection struct { +// Liquidity provider commitment. For API purposes this can report a pending liquidity provision, +// the current live provision or both in the event that an update has been accepted on the network, but has yet +// to go live and thus there is still a pending provision that will become active in the next epoch. +type LiquidityProvision struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of liquidity provider data. - Edges []*LiquidityProviderEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + // Liquidity provision that is currently live. + Current *vega.LiquidityProvision `protobuf:"bytes,1,opt,name=current,proto3" json:"current,omitempty"` + // Liquidity provision that is currently pending and will go live in the next epoch. + Pending *vega.LiquidityProvision `protobuf:"bytes,2,opt,name=pending,proto3,oneof" json:"pending,omitempty"` } -func (x *LiquidityProviderConnection) Reset() { - *x = LiquidityProviderConnection{} +func (x *LiquidityProvision) Reset() { + *x = LiquidityProvision{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[212] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -13284,13 +13252,13 @@ func (x *LiquidityProviderConnection) Reset() { } } -func (x *LiquidityProviderConnection) String() string { +func (x *LiquidityProvision) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LiquidityProviderConnection) ProtoMessage() {} +func (*LiquidityProvision) ProtoMessage() {} -func (x *LiquidityProviderConnection) ProtoReflect() protoreflect.Message { +func (x *LiquidityProvision) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[212] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -13302,37 +13270,39 @@ func (x *LiquidityProviderConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LiquidityProviderConnection.ProtoReflect.Descriptor instead. -func (*LiquidityProviderConnection) Descriptor() ([]byte, []int) { +// Deprecated: Use LiquidityProvision.ProtoReflect.Descriptor instead. +func (*LiquidityProvision) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{212} } -func (x *LiquidityProviderConnection) GetEdges() []*LiquidityProviderEdge { +func (x *LiquidityProvision) GetCurrent() *vega.LiquidityProvision { if x != nil { - return x.Edges + return x.Current } return nil } -func (x *LiquidityProviderConnection) GetPageInfo() *PageInfo { +func (x *LiquidityProvision) GetPending() *vega.LiquidityProvision { if x != nil { - return x.PageInfo + return x.Pending } return nil } -// Response for listing liquidity providers. -type ListLiquidityProvidersResponse struct { +// Liquidity provision data with the corresponding cursor. +type LiquidityProvisionsEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of liquidity providers and corresponding page information. - LiquidityProviders *LiquidityProviderConnection `protobuf:"bytes,1,opt,name=liquidity_providers,json=liquidityProviders,proto3" json:"liquidity_providers,omitempty"` + // Data corresponding to a liquidity provider's commitment. + Node *vega.LiquidityProvision `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *ListLiquidityProvidersResponse) Reset() { - *x = ListLiquidityProvidersResponse{} +func (x *LiquidityProvisionsEdge) Reset() { + *x = LiquidityProvisionsEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[213] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -13340,13 +13310,13 @@ func (x *ListLiquidityProvidersResponse) Reset() { } } -func (x *ListLiquidityProvidersResponse) String() string { +func (x *LiquidityProvisionsEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListLiquidityProvidersResponse) ProtoMessage() {} +func (*LiquidityProvisionsEdge) ProtoMessage() {} -func (x *ListLiquidityProvidersResponse) ProtoReflect() protoreflect.Message { +func (x *LiquidityProvisionsEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[213] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -13358,38 +13328,39 @@ func (x *ListLiquidityProvidersResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListLiquidityProvidersResponse.ProtoReflect.Descriptor instead. -func (*ListLiquidityProvidersResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use LiquidityProvisionsEdge.ProtoReflect.Descriptor instead. +func (*LiquidityProvisionsEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{213} } -func (x *ListLiquidityProvidersResponse) GetLiquidityProviders() *LiquidityProviderConnection { +func (x *LiquidityProvisionsEdge) GetNode() *vega.LiquidityProvision { if x != nil { - return x.LiquidityProviders + return x.Node } return nil } -// Paid liquidity fees request. -type ListPaidLiquidityFeesRequest struct { +func (x *LiquidityProvisionsEdge) GetCursor() string { + if x != nil { + return x.Cursor + } + return "" +} + +// Liquidity provision data with the corresponding cursor. +type LiquidityProvisionWithPendingEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Restrict fee data to those fees generated in the given market. - MarketId *string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3,oneof" json:"market_id,omitempty"` - // Restrict fee statistics to those paid in the given asset. - AssetId *string `protobuf:"bytes,2,opt,name=asset_id,json=assetId,proto3,oneof" json:"asset_id,omitempty"` - // Epoch to get paid liquidity fee statistics for. If omitted, the last complete epoch is used. - EpochSeq *uint64 `protobuf:"varint,3,opt,name=epoch_seq,json=epochSeq,proto3,oneof" json:"epoch_seq,omitempty"` - // Restrict fee data to those fees paid to the given parties. - PartyIds []string `protobuf:"bytes,4,rep,name=party_ids,json=partyIds,proto3" json:"party_ids,omitempty"` - // Pagination controls. - Pagination *Pagination `protobuf:"bytes,5,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + // Data corresponding to a liquidity provider's commitment. + Node *LiquidityProvision `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *ListPaidLiquidityFeesRequest) Reset() { - *x = ListPaidLiquidityFeesRequest{} +func (x *LiquidityProvisionWithPendingEdge) Reset() { + *x = LiquidityProvisionWithPendingEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[214] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -13397,13 +13368,13 @@ func (x *ListPaidLiquidityFeesRequest) Reset() { } } -func (x *ListPaidLiquidityFeesRequest) String() string { +func (x *LiquidityProvisionWithPendingEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListPaidLiquidityFeesRequest) ProtoMessage() {} +func (*LiquidityProvisionWithPendingEdge) ProtoMessage() {} -func (x *ListPaidLiquidityFeesRequest) ProtoReflect() protoreflect.Message { +func (x *LiquidityProvisionWithPendingEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[214] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -13415,58 +13386,39 @@ func (x *ListPaidLiquidityFeesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListPaidLiquidityFeesRequest.ProtoReflect.Descriptor instead. -func (*ListPaidLiquidityFeesRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use LiquidityProvisionWithPendingEdge.ProtoReflect.Descriptor instead. +func (*LiquidityProvisionWithPendingEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{214} } -func (x *ListPaidLiquidityFeesRequest) GetMarketId() string { - if x != nil && x.MarketId != nil { - return *x.MarketId - } - return "" -} - -func (x *ListPaidLiquidityFeesRequest) GetAssetId() string { - if x != nil && x.AssetId != nil { - return *x.AssetId - } - return "" -} - -func (x *ListPaidLiquidityFeesRequest) GetEpochSeq() uint64 { - if x != nil && x.EpochSeq != nil { - return *x.EpochSeq - } - return 0 -} - -func (x *ListPaidLiquidityFeesRequest) GetPartyIds() []string { +func (x *LiquidityProvisionWithPendingEdge) GetNode() *LiquidityProvision { if x != nil { - return x.PartyIds + return x.Node } return nil } -func (x *ListPaidLiquidityFeesRequest) GetPagination() *Pagination { +func (x *LiquidityProvisionWithPendingEdge) GetCursor() string { if x != nil { - return x.Pagination + return x.Cursor } - return nil + return "" } -// Paid liquidity fees response. -type ListPaidLiquidityFeesResponse struct { +// Page of liquidity provisions data and corresponding page information +type LiquidityProvisionsConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of paid liquidity fees and corresponding page information. - PaidLiquidityFees *PaidLiquidityFeesConnection `protobuf:"bytes,1,opt,name=paid_liquidity_fees,json=paidLiquidityFees,proto3" json:"paid_liquidity_fees,omitempty"` + // Page of liquidity provisions data and their corresponding cursors. + Edges []*LiquidityProvisionsEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *ListPaidLiquidityFeesResponse) Reset() { - *x = ListPaidLiquidityFeesResponse{} +func (x *LiquidityProvisionsConnection) Reset() { + *x = LiquidityProvisionsConnection{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[215] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -13474,13 +13426,13 @@ func (x *ListPaidLiquidityFeesResponse) Reset() { } } -func (x *ListPaidLiquidityFeesResponse) String() string { +func (x *LiquidityProvisionsConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListPaidLiquidityFeesResponse) ProtoMessage() {} +func (*LiquidityProvisionsConnection) ProtoMessage() {} -func (x *ListPaidLiquidityFeesResponse) ProtoReflect() protoreflect.Message { +func (x *LiquidityProvisionsConnection) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[215] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -13492,32 +13444,39 @@ func (x *ListPaidLiquidityFeesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListPaidLiquidityFeesResponse.ProtoReflect.Descriptor instead. -func (*ListPaidLiquidityFeesResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use LiquidityProvisionsConnection.ProtoReflect.Descriptor instead. +func (*LiquidityProvisionsConnection) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{215} } -func (x *ListPaidLiquidityFeesResponse) GetPaidLiquidityFees() *PaidLiquidityFeesConnection { +func (x *LiquidityProvisionsConnection) GetEdges() []*LiquidityProvisionsEdge { if x != nil { - return x.PaidLiquidityFees + return x.Edges } return nil } -// Paid liquidity fees data with the corresponding cursor. -type PaidLiquidityFeesEdge struct { +func (x *LiquidityProvisionsConnection) GetPageInfo() *PageInfo { + if x != nil { + return x.PageInfo + } + return nil +} + +// Page of liquidity provisions data and corresponding page information +type LiquidityProvisionsWithPendingConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Paid liquidity fees data returned by the API. - Node *v1.PaidLiquidityFeesStats `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further data. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Page of liquidity provisions data and their corresponding cursors. + Edges []*LiquidityProvisionWithPendingEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used to fetch further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *PaidLiquidityFeesEdge) Reset() { - *x = PaidLiquidityFeesEdge{} +func (x *LiquidityProvisionsWithPendingConnection) Reset() { + *x = LiquidityProvisionsWithPendingConnection{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[216] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -13525,13 +13484,13 @@ func (x *PaidLiquidityFeesEdge) Reset() { } } -func (x *PaidLiquidityFeesEdge) String() string { +func (x *LiquidityProvisionsWithPendingConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PaidLiquidityFeesEdge) ProtoMessage() {} +func (*LiquidityProvisionsWithPendingConnection) ProtoMessage() {} -func (x *PaidLiquidityFeesEdge) ProtoReflect() protoreflect.Message { +func (x *LiquidityProvisionsWithPendingConnection) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[216] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -13543,39 +13502,39 @@ func (x *PaidLiquidityFeesEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PaidLiquidityFeesEdge.ProtoReflect.Descriptor instead. -func (*PaidLiquidityFeesEdge) Descriptor() ([]byte, []int) { +// Deprecated: Use LiquidityProvisionsWithPendingConnection.ProtoReflect.Descriptor instead. +func (*LiquidityProvisionsWithPendingConnection) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{216} } -func (x *PaidLiquidityFeesEdge) GetNode() *v1.PaidLiquidityFeesStats { +func (x *LiquidityProvisionsWithPendingConnection) GetEdges() []*LiquidityProvisionWithPendingEdge { if x != nil { - return x.Node + return x.Edges } return nil } -func (x *PaidLiquidityFeesEdge) GetCursor() string { +func (x *LiquidityProvisionsWithPendingConnection) GetPageInfo() *PageInfo { if x != nil { - return x.Cursor + return x.PageInfo } - return "" + return nil } -// Paid liquidity fees data and corresponding page information. -type PaidLiquidityFeesConnection struct { +// Request sent to subscribe to liquidity provisions +type ObserveLiquidityProvisionsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of paid liquidity fees data. - Edges []*PaidLiquidityFeesEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + // Target market to observe for liquidity provisions. + MarketId *string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3,oneof" json:"market_id,omitempty"` + // Target party to observe for submitted liquidity provisions. + PartyId *string `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3,oneof" json:"party_id,omitempty"` } -func (x *PaidLiquidityFeesConnection) Reset() { - *x = PaidLiquidityFeesConnection{} +func (x *ObserveLiquidityProvisionsRequest) Reset() { + *x = ObserveLiquidityProvisionsRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[217] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -13583,13 +13542,13 @@ func (x *PaidLiquidityFeesConnection) Reset() { } } -func (x *PaidLiquidityFeesConnection) String() string { +func (x *ObserveLiquidityProvisionsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PaidLiquidityFeesConnection) ProtoMessage() {} +func (*ObserveLiquidityProvisionsRequest) ProtoMessage() {} -func (x *PaidLiquidityFeesConnection) ProtoReflect() protoreflect.Message { +func (x *ObserveLiquidityProvisionsRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[217] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -13601,39 +13560,36 @@ func (x *PaidLiquidityFeesConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PaidLiquidityFeesConnection.ProtoReflect.Descriptor instead. -func (*PaidLiquidityFeesConnection) Descriptor() ([]byte, []int) { +// Deprecated: Use ObserveLiquidityProvisionsRequest.ProtoReflect.Descriptor instead. +func (*ObserveLiquidityProvisionsRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{217} } -func (x *PaidLiquidityFeesConnection) GetEdges() []*PaidLiquidityFeesEdge { - if x != nil { - return x.Edges +func (x *ObserveLiquidityProvisionsRequest) GetMarketId() string { + if x != nil && x.MarketId != nil { + return *x.MarketId } - return nil + return "" } -func (x *PaidLiquidityFeesConnection) GetPageInfo() *PageInfo { - if x != nil { - return x.PageInfo +func (x *ObserveLiquidityProvisionsRequest) GetPartyId() string { + if x != nil && x.PartyId != nil { + return *x.PartyId } - return nil + return "" } -// Request to get governance data -type GetGovernanceDataRequest struct { +// Response from liquidity provisions subscription +type ObserveLiquidityProvisionsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Proposal ID to get governance data for, if provided. - ProposalId *string `protobuf:"bytes,1,opt,name=proposal_id,json=proposalId,proto3,oneof" json:"proposal_id,omitempty"` - // Reference to get proposal data for, if provided. - Reference *string `protobuf:"bytes,2,opt,name=reference,proto3,oneof" json:"reference,omitempty"` + LiquidityProvisions []*vega.LiquidityProvision `protobuf:"bytes,1,rep,name=liquidity_provisions,json=liquidityProvisions,proto3" json:"liquidity_provisions,omitempty"` } -func (x *GetGovernanceDataRequest) Reset() { - *x = GetGovernanceDataRequest{} +func (x *ObserveLiquidityProvisionsResponse) Reset() { + *x = ObserveLiquidityProvisionsResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[218] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -13641,13 +13597,13 @@ func (x *GetGovernanceDataRequest) Reset() { } } -func (x *GetGovernanceDataRequest) String() string { +func (x *ObserveLiquidityProvisionsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetGovernanceDataRequest) ProtoMessage() {} +func (*ObserveLiquidityProvisionsResponse) ProtoMessage() {} -func (x *GetGovernanceDataRequest) ProtoReflect() protoreflect.Message { +func (x *ObserveLiquidityProvisionsResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[218] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -13659,37 +13615,35 @@ func (x *GetGovernanceDataRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetGovernanceDataRequest.ProtoReflect.Descriptor instead. -func (*GetGovernanceDataRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ObserveLiquidityProvisionsResponse.ProtoReflect.Descriptor instead. +func (*ObserveLiquidityProvisionsResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{218} } -func (x *GetGovernanceDataRequest) GetProposalId() string { - if x != nil && x.ProposalId != nil { - return *x.ProposalId - } - return "" -} - -func (x *GetGovernanceDataRequest) GetReference() string { - if x != nil && x.Reference != nil { - return *x.Reference +func (x *ObserveLiquidityProvisionsResponse) GetLiquidityProvisions() []*vega.LiquidityProvision { + if x != nil { + return x.LiquidityProvisions } - return "" + return nil } -// Response from getting governance data -type GetGovernanceDataResponse struct { +// Request for listing active liquidity providers for a given market. +// Either market ID or party ID or both, must be provided. +type ListLiquidityProvidersRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Governance data content, i.e. proposal and votes for and against. - Data *vega.GovernanceData `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` + // Market ID to retrieve liquidity providers for. If omitted, you must provide a party ID. + MarketId *string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3,oneof" json:"market_id,omitempty"` + // Party ID to retrieve data for. If omitted, you must provide a market ID. + PartyId *string `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3,oneof" json:"party_id,omitempty"` + // Pagination controls. + Pagination *Pagination `protobuf:"bytes,3,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` } -func (x *GetGovernanceDataResponse) Reset() { - *x = GetGovernanceDataResponse{} +func (x *ListLiquidityProvidersRequest) Reset() { + *x = ListLiquidityProvidersRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[219] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -13697,13 +13651,13 @@ func (x *GetGovernanceDataResponse) Reset() { } } -func (x *GetGovernanceDataResponse) String() string { +func (x *ListLiquidityProvidersRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetGovernanceDataResponse) ProtoMessage() {} +func (*ListLiquidityProvidersRequest) ProtoMessage() {} -func (x *GetGovernanceDataResponse) ProtoReflect() protoreflect.Message { +func (x *ListLiquidityProvidersRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[219] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -13715,38 +13669,51 @@ func (x *GetGovernanceDataResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetGovernanceDataResponse.ProtoReflect.Descriptor instead. -func (*GetGovernanceDataResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListLiquidityProvidersRequest.ProtoReflect.Descriptor instead. +func (*ListLiquidityProvidersRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{219} } -func (x *GetGovernanceDataResponse) GetData() *vega.GovernanceData { - if x != nil { - return x.Data +func (x *ListLiquidityProvidersRequest) GetMarketId() string { + if x != nil && x.MarketId != nil { + return *x.MarketId + } + return "" +} + +func (x *ListLiquidityProvidersRequest) GetPartyId() string { + if x != nil && x.PartyId != nil { + return *x.PartyId + } + return "" +} + +func (x *ListLiquidityProvidersRequest) GetPagination() *Pagination { + if x != nil { + return x.Pagination } return nil } -// Request to list governance data -type ListGovernanceDataRequest struct { +// Liquidity provider information. +type LiquidityProvider struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Restrict proposals to those with the given state. - ProposalState *vega.Proposal_State `protobuf:"varint,1,opt,name=proposal_state,json=proposalState,proto3,enum=vega.Proposal_State,oneof" json:"proposal_state,omitempty"` - // Restrict proposals to those with the given type. - ProposalType *ListGovernanceDataRequest_Type `protobuf:"varint,2,opt,name=proposal_type,json=proposalType,proto3,enum=datanode.api.v2.ListGovernanceDataRequest_Type,oneof" json:"proposal_type,omitempty"` - // Restrict proposals to those proposed by the given party ID. - ProposerPartyId *string `protobuf:"bytes,3,opt,name=proposer_party_id,json=proposerPartyId,proto3,oneof" json:"proposer_party_id,omitempty"` - // Restrict proposals to those with the given reference. - ProposalReference *string `protobuf:"bytes,4,opt,name=proposal_reference,json=proposalReference,proto3,oneof" json:"proposal_reference,omitempty"` - // Pagination controls. - Pagination *Pagination `protobuf:"bytes,5,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + // Party ID of the liquidity provider. + PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` + // ID of the market the liquidity provider is active in. + MarketId string `protobuf:"bytes,2,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` + // Information used for calculating an LP's fee share, such as the equity like share, + // average entry valuation and liquidity score for the liquidity provider for the specified market. + FeeShare *vega.LiquidityProviderFeeShare `protobuf:"bytes,3,opt,name=fee_share,json=feeShare,proto3" json:"fee_share,omitempty"` + // Information about LP's SLA performance. + Sla *vega.LiquidityProviderSLA `protobuf:"bytes,4,opt,name=sla,proto3" json:"sla,omitempty"` } -func (x *ListGovernanceDataRequest) Reset() { - *x = ListGovernanceDataRequest{} +func (x *LiquidityProvider) Reset() { + *x = LiquidityProvider{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[220] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -13754,13 +13721,13 @@ func (x *ListGovernanceDataRequest) Reset() { } } -func (x *ListGovernanceDataRequest) String() string { +func (x *LiquidityProvider) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListGovernanceDataRequest) ProtoMessage() {} +func (*LiquidityProvider) ProtoMessage() {} -func (x *ListGovernanceDataRequest) ProtoReflect() protoreflect.Message { +func (x *LiquidityProvider) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[220] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -13772,58 +13739,53 @@ func (x *ListGovernanceDataRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListGovernanceDataRequest.ProtoReflect.Descriptor instead. -func (*ListGovernanceDataRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use LiquidityProvider.ProtoReflect.Descriptor instead. +func (*LiquidityProvider) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{220} } -func (x *ListGovernanceDataRequest) GetProposalState() vega.Proposal_State { - if x != nil && x.ProposalState != nil { - return *x.ProposalState - } - return vega.Proposal_State(0) -} - -func (x *ListGovernanceDataRequest) GetProposalType() ListGovernanceDataRequest_Type { - if x != nil && x.ProposalType != nil { - return *x.ProposalType +func (x *LiquidityProvider) GetPartyId() string { + if x != nil { + return x.PartyId } - return ListGovernanceDataRequest_TYPE_UNSPECIFIED + return "" } -func (x *ListGovernanceDataRequest) GetProposerPartyId() string { - if x != nil && x.ProposerPartyId != nil { - return *x.ProposerPartyId +func (x *LiquidityProvider) GetMarketId() string { + if x != nil { + return x.MarketId } return "" } -func (x *ListGovernanceDataRequest) GetProposalReference() string { - if x != nil && x.ProposalReference != nil { - return *x.ProposalReference +func (x *LiquidityProvider) GetFeeShare() *vega.LiquidityProviderFeeShare { + if x != nil { + return x.FeeShare } - return "" + return nil } -func (x *ListGovernanceDataRequest) GetPagination() *Pagination { +func (x *LiquidityProvider) GetSla() *vega.LiquidityProviderSLA { if x != nil { - return x.Pagination + return x.Sla } return nil } -// Response from listing governance data -type ListGovernanceDataResponse struct { +// Liquidity provider data with the corresponding cursor. +type LiquidityProviderEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of governance data and corresponding page information. - Connection *GovernanceDataConnection `protobuf:"bytes,1,opt,name=connection,proto3" json:"connection,omitempty"` + // Liquidity provider information returned by the API. + Node *LiquidityProvider `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further data. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *ListGovernanceDataResponse) Reset() { - *x = ListGovernanceDataResponse{} +func (x *LiquidityProviderEdge) Reset() { + *x = LiquidityProviderEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[221] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -13831,13 +13793,13 @@ func (x *ListGovernanceDataResponse) Reset() { } } -func (x *ListGovernanceDataResponse) String() string { +func (x *LiquidityProviderEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListGovernanceDataResponse) ProtoMessage() {} +func (*LiquidityProviderEdge) ProtoMessage() {} -func (x *ListGovernanceDataResponse) ProtoReflect() protoreflect.Message { +func (x *LiquidityProviderEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[221] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -13849,32 +13811,39 @@ func (x *ListGovernanceDataResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListGovernanceDataResponse.ProtoReflect.Descriptor instead. -func (*ListGovernanceDataResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use LiquidityProviderEdge.ProtoReflect.Descriptor instead. +func (*LiquidityProviderEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{221} } -func (x *ListGovernanceDataResponse) GetConnection() *GovernanceDataConnection { +func (x *LiquidityProviderEdge) GetNode() *LiquidityProvider { if x != nil { - return x.Connection + return x.Node } return nil } -// Governance data with the corresponding cursor. -type GovernanceDataEdge struct { +func (x *LiquidityProviderEdge) GetCursor() string { + if x != nil { + return x.Cursor + } + return "" +} + +// Page of liquidity provider data and corresponding page information. +type LiquidityProviderConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Governance data content, i.e. proposal and votes for and against. - Node *vega.GovernanceData `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Page of liquidity provider data. + Edges []*LiquidityProviderEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *GovernanceDataEdge) Reset() { - *x = GovernanceDataEdge{} +func (x *LiquidityProviderConnection) Reset() { + *x = LiquidityProviderConnection{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[222] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -13882,13 +13851,13 @@ func (x *GovernanceDataEdge) Reset() { } } -func (x *GovernanceDataEdge) String() string { +func (x *LiquidityProviderConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GovernanceDataEdge) ProtoMessage() {} +func (*LiquidityProviderConnection) ProtoMessage() {} -func (x *GovernanceDataEdge) ProtoReflect() protoreflect.Message { +func (x *LiquidityProviderConnection) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[222] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -13900,39 +13869,37 @@ func (x *GovernanceDataEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GovernanceDataEdge.ProtoReflect.Descriptor instead. -func (*GovernanceDataEdge) Descriptor() ([]byte, []int) { +// Deprecated: Use LiquidityProviderConnection.ProtoReflect.Descriptor instead. +func (*LiquidityProviderConnection) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{222} } -func (x *GovernanceDataEdge) GetNode() *vega.GovernanceData { +func (x *LiquidityProviderConnection) GetEdges() []*LiquidityProviderEdge { if x != nil { - return x.Node + return x.Edges } return nil } -func (x *GovernanceDataEdge) GetCursor() string { +func (x *LiquidityProviderConnection) GetPageInfo() *PageInfo { if x != nil { - return x.Cursor + return x.PageInfo } - return "" + return nil } -// Page of governance data and corresponding page information -type GovernanceDataConnection struct { +// Response for listing liquidity providers. +type ListLiquidityProvidersResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of governance data and their corresponding cursors. - Edges []*GovernanceDataEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + // Page of liquidity providers and corresponding page information. + LiquidityProviders *LiquidityProviderConnection `protobuf:"bytes,1,opt,name=liquidity_providers,json=liquidityProviders,proto3" json:"liquidity_providers,omitempty"` } -func (x *GovernanceDataConnection) Reset() { - *x = GovernanceDataConnection{} +func (x *ListLiquidityProvidersResponse) Reset() { + *x = ListLiquidityProvidersResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[223] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -13940,13 +13907,13 @@ func (x *GovernanceDataConnection) Reset() { } } -func (x *GovernanceDataConnection) String() string { +func (x *ListLiquidityProvidersResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GovernanceDataConnection) ProtoMessage() {} +func (*ListLiquidityProvidersResponse) ProtoMessage() {} -func (x *GovernanceDataConnection) ProtoReflect() protoreflect.Message { +func (x *ListLiquidityProvidersResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[223] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -13958,37 +13925,38 @@ func (x *GovernanceDataConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GovernanceDataConnection.ProtoReflect.Descriptor instead. -func (*GovernanceDataConnection) Descriptor() ([]byte, []int) { +// Deprecated: Use ListLiquidityProvidersResponse.ProtoReflect.Descriptor instead. +func (*ListLiquidityProvidersResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{223} } -func (x *GovernanceDataConnection) GetEdges() []*GovernanceDataEdge { - if x != nil { - return x.Edges - } - return nil -} - -func (x *GovernanceDataConnection) GetPageInfo() *PageInfo { +func (x *ListLiquidityProvidersResponse) GetLiquidityProviders() *LiquidityProviderConnection { if x != nil { - return x.PageInfo + return x.LiquidityProviders } return nil } -// Request for governance subscription -type ObserveGovernanceRequest struct { +// Paid liquidity fees request. +type ListPaidLiquidityFeesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Restrict proposal updates to those proposed by the given party ID. - PartyId *string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3,oneof" json:"party_id,omitempty"` + // Restrict fee data to those fees generated in the given market. + MarketId *string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3,oneof" json:"market_id,omitempty"` + // Restrict fee statistics to those paid in the given asset. + AssetId *string `protobuf:"bytes,2,opt,name=asset_id,json=assetId,proto3,oneof" json:"asset_id,omitempty"` + // Epoch to get paid liquidity fee statistics for. If omitted, the last complete epoch is used. + EpochSeq *uint64 `protobuf:"varint,3,opt,name=epoch_seq,json=epochSeq,proto3,oneof" json:"epoch_seq,omitempty"` + // Restrict fee data to those fees paid to the given parties. + PartyIds []string `protobuf:"bytes,4,rep,name=party_ids,json=partyIds,proto3" json:"party_ids,omitempty"` + // Pagination controls. + Pagination *Pagination `protobuf:"bytes,5,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` } -func (x *ObserveGovernanceRequest) Reset() { - *x = ObserveGovernanceRequest{} +func (x *ListPaidLiquidityFeesRequest) Reset() { + *x = ListPaidLiquidityFeesRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[224] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -13996,13 +13964,13 @@ func (x *ObserveGovernanceRequest) Reset() { } } -func (x *ObserveGovernanceRequest) String() string { +func (x *ListPaidLiquidityFeesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ObserveGovernanceRequest) ProtoMessage() {} +func (*ListPaidLiquidityFeesRequest) ProtoMessage() {} -func (x *ObserveGovernanceRequest) ProtoReflect() protoreflect.Message { +func (x *ListPaidLiquidityFeesRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[224] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -14014,44 +13982,72 @@ func (x *ObserveGovernanceRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ObserveGovernanceRequest.ProtoReflect.Descriptor instead. -func (*ObserveGovernanceRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListPaidLiquidityFeesRequest.ProtoReflect.Descriptor instead. +func (*ListPaidLiquidityFeesRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{224} } -func (x *ObserveGovernanceRequest) GetPartyId() string { - if x != nil && x.PartyId != nil { - return *x.PartyId +func (x *ListPaidLiquidityFeesRequest) GetMarketId() string { + if x != nil && x.MarketId != nil { + return *x.MarketId } return "" } -// Response from governance subscription -type ObserveGovernanceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Governance data, i.e. proposal and votes for and against. - Data *vega.GovernanceData `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` +func (x *ListPaidLiquidityFeesRequest) GetAssetId() string { + if x != nil && x.AssetId != nil { + return *x.AssetId + } + return "" } -func (x *ObserveGovernanceResponse) Reset() { - *x = ObserveGovernanceResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[225] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *ListPaidLiquidityFeesRequest) GetEpochSeq() uint64 { + if x != nil && x.EpochSeq != nil { + return *x.EpochSeq } + return 0 } -func (x *ObserveGovernanceResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *ListPaidLiquidityFeesRequest) GetPartyIds() []string { + if x != nil { + return x.PartyIds + } + return nil } -func (*ObserveGovernanceResponse) ProtoMessage() {} +func (x *ListPaidLiquidityFeesRequest) GetPagination() *Pagination { + if x != nil { + return x.Pagination + } + return nil +} -func (x *ObserveGovernanceResponse) ProtoReflect() protoreflect.Message { +// Paid liquidity fees response. +type ListPaidLiquidityFeesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Page of paid liquidity fees and corresponding page information. + PaidLiquidityFees *PaidLiquidityFeesConnection `protobuf:"bytes,1,opt,name=paid_liquidity_fees,json=paidLiquidityFees,proto3" json:"paid_liquidity_fees,omitempty"` +} + +func (x *ListPaidLiquidityFeesResponse) Reset() { + *x = ListPaidLiquidityFeesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[225] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListPaidLiquidityFeesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListPaidLiquidityFeesResponse) ProtoMessage() {} + +func (x *ListPaidLiquidityFeesResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[225] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -14063,36 +14059,32 @@ func (x *ObserveGovernanceResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ObserveGovernanceResponse.ProtoReflect.Descriptor instead. -func (*ObserveGovernanceResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListPaidLiquidityFeesResponse.ProtoReflect.Descriptor instead. +func (*ListPaidLiquidityFeesResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{225} } -func (x *ObserveGovernanceResponse) GetData() *vega.GovernanceData { +func (x *ListPaidLiquidityFeesResponse) GetPaidLiquidityFees() *PaidLiquidityFeesConnection { if x != nil { - return x.Data + return x.PaidLiquidityFees } return nil } -// Request for listing delegations -type ListDelegationsRequest struct { +// Paid liquidity fees data with the corresponding cursor. +type PaidLiquidityFeesEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Restrict delegations to those made by the given party ID. - PartyId *string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3,oneof" json:"party_id,omitempty"` - // Restrict delegations to those made to the given node ID. - NodeId *string `protobuf:"bytes,2,opt,name=node_id,json=nodeId,proto3,oneof" json:"node_id,omitempty"` - // Return delegations made in the given epoch. If not set, delegations for the current epoch will be returned. - EpochId *string `protobuf:"bytes,3,opt,name=epoch_id,json=epochId,proto3,oneof" json:"epoch_id,omitempty"` - // Pagination controls. - Pagination *Pagination `protobuf:"bytes,4,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + // Paid liquidity fees data returned by the API. + Node *v1.PaidLiquidityFeesStats `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further data. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *ListDelegationsRequest) Reset() { - *x = ListDelegationsRequest{} +func (x *PaidLiquidityFeesEdge) Reset() { + *x = PaidLiquidityFeesEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[226] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -14100,13 +14092,13 @@ func (x *ListDelegationsRequest) Reset() { } } -func (x *ListDelegationsRequest) String() string { +func (x *PaidLiquidityFeesEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListDelegationsRequest) ProtoMessage() {} +func (*PaidLiquidityFeesEdge) ProtoMessage() {} -func (x *ListDelegationsRequest) ProtoReflect() protoreflect.Message { +func (x *PaidLiquidityFeesEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[226] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -14118,51 +14110,39 @@ func (x *ListDelegationsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListDelegationsRequest.ProtoReflect.Descriptor instead. -func (*ListDelegationsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use PaidLiquidityFeesEdge.ProtoReflect.Descriptor instead. +func (*PaidLiquidityFeesEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{226} } -func (x *ListDelegationsRequest) GetPartyId() string { - if x != nil && x.PartyId != nil { - return *x.PartyId - } - return "" -} - -func (x *ListDelegationsRequest) GetNodeId() string { - if x != nil && x.NodeId != nil { - return *x.NodeId - } - return "" -} - -func (x *ListDelegationsRequest) GetEpochId() string { - if x != nil && x.EpochId != nil { - return *x.EpochId +func (x *PaidLiquidityFeesEdge) GetNode() *v1.PaidLiquidityFeesStats { + if x != nil { + return x.Node } - return "" + return nil } -func (x *ListDelegationsRequest) GetPagination() *Pagination { +func (x *PaidLiquidityFeesEdge) GetCursor() string { if x != nil { - return x.Pagination + return x.Cursor } - return nil + return "" } -// Response from listing delegations -type ListDelegationsResponse struct { +// Paid liquidity fees data and corresponding page information. +type PaidLiquidityFeesConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of delegations data and corresponding page information. - Delegations *DelegationsConnection `protobuf:"bytes,1,opt,name=delegations,proto3" json:"delegations,omitempty"` + // Page of paid liquidity fees data. + Edges []*PaidLiquidityFeesEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *ListDelegationsResponse) Reset() { - *x = ListDelegationsResponse{} +func (x *PaidLiquidityFeesConnection) Reset() { + *x = PaidLiquidityFeesConnection{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[227] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -14170,13 +14150,13 @@ func (x *ListDelegationsResponse) Reset() { } } -func (x *ListDelegationsResponse) String() string { +func (x *PaidLiquidityFeesConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListDelegationsResponse) ProtoMessage() {} +func (*PaidLiquidityFeesConnection) ProtoMessage() {} -func (x *ListDelegationsResponse) ProtoReflect() protoreflect.Message { +func (x *PaidLiquidityFeesConnection) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[227] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -14188,32 +14168,39 @@ func (x *ListDelegationsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListDelegationsResponse.ProtoReflect.Descriptor instead. -func (*ListDelegationsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use PaidLiquidityFeesConnection.ProtoReflect.Descriptor instead. +func (*PaidLiquidityFeesConnection) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{227} } -func (x *ListDelegationsResponse) GetDelegations() *DelegationsConnection { +func (x *PaidLiquidityFeesConnection) GetEdges() []*PaidLiquidityFeesEdge { if x != nil { - return x.Delegations + return x.Edges } return nil } -// Delegation data with the corresponding cursor. -type DelegationEdge struct { +func (x *PaidLiquidityFeesConnection) GetPageInfo() *PageInfo { + if x != nil { + return x.PageInfo + } + return nil +} + +// Request to get governance data +type GetGovernanceDataRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // How much a party is delegating to a node and when. - Node *vega.Delegation `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Proposal ID to get governance data for, if provided. + ProposalId *string `protobuf:"bytes,1,opt,name=proposal_id,json=proposalId,proto3,oneof" json:"proposal_id,omitempty"` + // Reference to get proposal data for, if provided. + Reference *string `protobuf:"bytes,2,opt,name=reference,proto3,oneof" json:"reference,omitempty"` } -func (x *DelegationEdge) Reset() { - *x = DelegationEdge{} +func (x *GetGovernanceDataRequest) Reset() { + *x = GetGovernanceDataRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[228] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -14221,13 +14208,13 @@ func (x *DelegationEdge) Reset() { } } -func (x *DelegationEdge) String() string { +func (x *GetGovernanceDataRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DelegationEdge) ProtoMessage() {} +func (*GetGovernanceDataRequest) ProtoMessage() {} -func (x *DelegationEdge) ProtoReflect() protoreflect.Message { +func (x *GetGovernanceDataRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[228] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -14239,39 +14226,37 @@ func (x *DelegationEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DelegationEdge.ProtoReflect.Descriptor instead. -func (*DelegationEdge) Descriptor() ([]byte, []int) { +// Deprecated: Use GetGovernanceDataRequest.ProtoReflect.Descriptor instead. +func (*GetGovernanceDataRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{228} } -func (x *DelegationEdge) GetNode() *vega.Delegation { - if x != nil { - return x.Node +func (x *GetGovernanceDataRequest) GetProposalId() string { + if x != nil && x.ProposalId != nil { + return *x.ProposalId } - return nil + return "" } -func (x *DelegationEdge) GetCursor() string { - if x != nil { - return x.Cursor +func (x *GetGovernanceDataRequest) GetReference() string { + if x != nil && x.Reference != nil { + return *x.Reference } return "" } -// Page of delegations data and corresponding page information -type DelegationsConnection struct { +// Response from getting governance data +type GetGovernanceDataResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of delegations data and their corresponding cursors. - Edges []*DelegationEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + // Governance data content, i.e. proposal and votes for and against. + Data *vega.GovernanceData `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` } -func (x *DelegationsConnection) Reset() { - *x = DelegationsConnection{} +func (x *GetGovernanceDataResponse) Reset() { + *x = GetGovernanceDataResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[229] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -14279,13 +14264,13 @@ func (x *DelegationsConnection) Reset() { } } -func (x *DelegationsConnection) String() string { +func (x *GetGovernanceDataResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DelegationsConnection) ProtoMessage() {} +func (*GetGovernanceDataResponse) ProtoMessage() {} -func (x *DelegationsConnection) ProtoReflect() protoreflect.Message { +func (x *GetGovernanceDataResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[229] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -14297,39 +14282,38 @@ func (x *DelegationsConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DelegationsConnection.ProtoReflect.Descriptor instead. -func (*DelegationsConnection) Descriptor() ([]byte, []int) { +// Deprecated: Use GetGovernanceDataResponse.ProtoReflect.Descriptor instead. +func (*GetGovernanceDataResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{229} } -func (x *DelegationsConnection) GetEdges() []*DelegationEdge { - if x != nil { - return x.Edges - } - return nil -} - -func (x *DelegationsConnection) GetPageInfo() *PageInfo { +func (x *GetGovernanceDataResponse) GetData() *vega.GovernanceData { if x != nil { - return x.PageInfo + return x.Data } return nil } -// Request to subscribe to all event related to delegations, with the given filters -type ObserveDelegationsRequest struct { +// Request to list governance data +type ListGovernanceDataRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Party ID to get delegations for, if provided. - PartyId *string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3,oneof" json:"party_id,omitempty"` - // Node ID to get delegations for, if provided. - NodeId *string `protobuf:"bytes,2,opt,name=node_id,json=nodeId,proto3,oneof" json:"node_id,omitempty"` + // Restrict proposals to those with the given state. + ProposalState *vega.Proposal_State `protobuf:"varint,1,opt,name=proposal_state,json=proposalState,proto3,enum=vega.Proposal_State,oneof" json:"proposal_state,omitempty"` + // Restrict proposals to those with the given type. + ProposalType *ListGovernanceDataRequest_Type `protobuf:"varint,2,opt,name=proposal_type,json=proposalType,proto3,enum=datanode.api.v2.ListGovernanceDataRequest_Type,oneof" json:"proposal_type,omitempty"` + // Restrict proposals to those proposed by the given party ID. + ProposerPartyId *string `protobuf:"bytes,3,opt,name=proposer_party_id,json=proposerPartyId,proto3,oneof" json:"proposer_party_id,omitempty"` + // Restrict proposals to those with the given reference. + ProposalReference *string `protobuf:"bytes,4,opt,name=proposal_reference,json=proposalReference,proto3,oneof" json:"proposal_reference,omitempty"` + // Pagination controls. + Pagination *Pagination `protobuf:"bytes,5,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` } -func (x *ObserveDelegationsRequest) Reset() { - *x = ObserveDelegationsRequest{} +func (x *ListGovernanceDataRequest) Reset() { + *x = ListGovernanceDataRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[230] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -14337,13 +14321,13 @@ func (x *ObserveDelegationsRequest) Reset() { } } -func (x *ObserveDelegationsRequest) String() string { +func (x *ListGovernanceDataRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ObserveDelegationsRequest) ProtoMessage() {} +func (*ListGovernanceDataRequest) ProtoMessage() {} -func (x *ObserveDelegationsRequest) ProtoReflect() protoreflect.Message { +func (x *ListGovernanceDataRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[230] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -14355,37 +14339,58 @@ func (x *ObserveDelegationsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ObserveDelegationsRequest.ProtoReflect.Descriptor instead. -func (*ObserveDelegationsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListGovernanceDataRequest.ProtoReflect.Descriptor instead. +func (*ListGovernanceDataRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{230} } -func (x *ObserveDelegationsRequest) GetPartyId() string { - if x != nil && x.PartyId != nil { - return *x.PartyId +func (x *ListGovernanceDataRequest) GetProposalState() vega.Proposal_State { + if x != nil && x.ProposalState != nil { + return *x.ProposalState } - return "" + return vega.Proposal_State(0) } -func (x *ObserveDelegationsRequest) GetNodeId() string { - if x != nil && x.NodeId != nil { - return *x.NodeId +func (x *ListGovernanceDataRequest) GetProposalType() ListGovernanceDataRequest_Type { + if x != nil && x.ProposalType != nil { + return *x.ProposalType + } + return ListGovernanceDataRequest_TYPE_UNSPECIFIED +} + +func (x *ListGovernanceDataRequest) GetProposerPartyId() string { + if x != nil && x.ProposerPartyId != nil { + return *x.ProposerPartyId } return "" } -// Response with all events related to delegations, with the given filters -type ObserveDelegationsResponse struct { +func (x *ListGovernanceDataRequest) GetProposalReference() string { + if x != nil && x.ProposalReference != nil { + return *x.ProposalReference + } + return "" +} + +func (x *ListGovernanceDataRequest) GetPagination() *Pagination { + if x != nil { + return x.Pagination + } + return nil +} + +// Response from listing governance data +type ListGovernanceDataResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // How much a party is delegating to a node and when. - Delegation *vega.Delegation `protobuf:"bytes,1,opt,name=delegation,proto3" json:"delegation,omitempty"` + // Page of governance data and corresponding page information. + Connection *GovernanceDataConnection `protobuf:"bytes,1,opt,name=connection,proto3" json:"connection,omitempty"` } -func (x *ObserveDelegationsResponse) Reset() { - *x = ObserveDelegationsResponse{} +func (x *ListGovernanceDataResponse) Reset() { + *x = ListGovernanceDataResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[231] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -14393,13 +14398,13 @@ func (x *ObserveDelegationsResponse) Reset() { } } -func (x *ObserveDelegationsResponse) String() string { +func (x *ListGovernanceDataResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ObserveDelegationsResponse) ProtoMessage() {} +func (*ListGovernanceDataResponse) ProtoMessage() {} -func (x *ObserveDelegationsResponse) ProtoReflect() protoreflect.Message { +func (x *ListGovernanceDataResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[231] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -14411,46 +14416,32 @@ func (x *ObserveDelegationsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ObserveDelegationsResponse.ProtoReflect.Descriptor instead. -func (*ObserveDelegationsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListGovernanceDataResponse.ProtoReflect.Descriptor instead. +func (*ListGovernanceDataResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{231} } -func (x *ObserveDelegationsResponse) GetDelegation() *vega.Delegation { +func (x *ListGovernanceDataResponse) GetConnection() *GovernanceDataConnection { if x != nil { - return x.Delegation + return x.Connection } return nil } -// Represents a basic node without any epoch specific details like delegations, staking, rewards etc. -type NodeBasic struct { +// Governance data with the corresponding cursor. +type GovernanceDataEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Unique ID identifying the node. - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - // Node operator's public key. - PubKey string `protobuf:"bytes,2,opt,name=pub_key,json=pubKey,proto3" json:"pub_key,omitempty"` - // Tendermint public key of the node. - TmPubKey string `protobuf:"bytes,3,opt,name=tm_pub_key,json=tmPubKey,proto3" json:"tm_pub_key,omitempty"` - // Ethereum public key of the node. - EthereumAddress string `protobuf:"bytes,4,opt,name=ethereum_address,json=ethereumAddress,proto3" json:"ethereum_address,omitempty"` - // URL that provides more information about the node. - InfoUrl string `protobuf:"bytes,5,opt,name=info_url,json=infoUrl,proto3" json:"info_url,omitempty"` - // Country code for the location of the node. - Location string `protobuf:"bytes,6,opt,name=location,proto3" json:"location,omitempty"` - // Node status. - Status vega.NodeStatus `protobuf:"varint,13,opt,name=status,proto3,enum=vega.NodeStatus" json:"status,omitempty"` - // Node name. - Name string `protobuf:"bytes,17,opt,name=name,proto3" json:"name,omitempty"` - // Avatar URL. - AvatarUrl string `protobuf:"bytes,18,opt,name=avatar_url,json=avatarUrl,proto3" json:"avatar_url,omitempty"` + // Governance data content, i.e. proposal and votes for and against. + Node *vega.GovernanceData `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *NodeBasic) Reset() { - *x = NodeBasic{} +func (x *GovernanceDataEdge) Reset() { + *x = GovernanceDataEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[232] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -14458,13 +14449,13 @@ func (x *NodeBasic) Reset() { } } -func (x *NodeBasic) String() string { +func (x *GovernanceDataEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*NodeBasic) ProtoMessage() {} +func (*GovernanceDataEdge) ProtoMessage() {} -func (x *NodeBasic) ProtoReflect() protoreflect.Message { +func (x *GovernanceDataEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[232] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -14476,83 +14467,39 @@ func (x *NodeBasic) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use NodeBasic.ProtoReflect.Descriptor instead. -func (*NodeBasic) Descriptor() ([]byte, []int) { +// Deprecated: Use GovernanceDataEdge.ProtoReflect.Descriptor instead. +func (*GovernanceDataEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{232} } -func (x *NodeBasic) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *NodeBasic) GetPubKey() string { - if x != nil { - return x.PubKey - } - return "" -} - -func (x *NodeBasic) GetTmPubKey() string { - if x != nil { - return x.TmPubKey - } - return "" -} - -func (x *NodeBasic) GetEthereumAddress() string { - if x != nil { - return x.EthereumAddress - } - return "" -} - -func (x *NodeBasic) GetInfoUrl() string { - if x != nil { - return x.InfoUrl - } - return "" -} - -func (x *NodeBasic) GetLocation() string { - if x != nil { - return x.Location - } - return "" -} - -func (x *NodeBasic) GetStatus() vega.NodeStatus { - if x != nil { - return x.Status - } - return vega.NodeStatus(0) -} - -func (x *NodeBasic) GetName() string { +func (x *GovernanceDataEdge) GetNode() *vega.GovernanceData { if x != nil { - return x.Name + return x.Node } - return "" + return nil } -func (x *NodeBasic) GetAvatarUrl() string { +func (x *GovernanceDataEdge) GetCursor() string { if x != nil { - return x.AvatarUrl + return x.Cursor } return "" } -// Request to get network data -type GetNetworkDataRequest struct { +// Page of governance data and corresponding page information +type GovernanceDataConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Page of governance data and their corresponding cursors. + Edges []*GovernanceDataEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *GetNetworkDataRequest) Reset() { - *x = GetNetworkDataRequest{} +func (x *GovernanceDataConnection) Reset() { + *x = GovernanceDataConnection{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[233] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -14560,13 +14507,13 @@ func (x *GetNetworkDataRequest) Reset() { } } -func (x *GetNetworkDataRequest) String() string { +func (x *GovernanceDataConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetNetworkDataRequest) ProtoMessage() {} +func (*GovernanceDataConnection) ProtoMessage() {} -func (x *GetNetworkDataRequest) ProtoReflect() protoreflect.Message { +func (x *GovernanceDataConnection) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[233] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -14578,23 +14525,37 @@ func (x *GetNetworkDataRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetNetworkDataRequest.ProtoReflect.Descriptor instead. -func (*GetNetworkDataRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GovernanceDataConnection.ProtoReflect.Descriptor instead. +func (*GovernanceDataConnection) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{233} } -// Response from getting network data -type GetNetworkDataResponse struct { +func (x *GovernanceDataConnection) GetEdges() []*GovernanceDataEdge { + if x != nil { + return x.Edges + } + return nil +} + +func (x *GovernanceDataConnection) GetPageInfo() *PageInfo { + if x != nil { + return x.PageInfo + } + return nil +} + +// Request for governance subscription +type ObserveGovernanceRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Summary of information with respect to nodes on the Vega network. - NodeData *vega.NodeData `protobuf:"bytes,1,opt,name=node_data,json=nodeData,proto3" json:"node_data,omitempty"` + // Restrict proposal updates to those proposed by the given party ID. + PartyId *string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3,oneof" json:"party_id,omitempty"` } -func (x *GetNetworkDataResponse) Reset() { - *x = GetNetworkDataResponse{} +func (x *ObserveGovernanceRequest) Reset() { + *x = ObserveGovernanceRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[234] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -14602,13 +14563,13 @@ func (x *GetNetworkDataResponse) Reset() { } } -func (x *GetNetworkDataResponse) String() string { +func (x *ObserveGovernanceRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetNetworkDataResponse) ProtoMessage() {} +func (*ObserveGovernanceRequest) ProtoMessage() {} -func (x *GetNetworkDataResponse) ProtoReflect() protoreflect.Message { +func (x *ObserveGovernanceRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[234] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -14620,30 +14581,30 @@ func (x *GetNetworkDataResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetNetworkDataResponse.ProtoReflect.Descriptor instead. -func (*GetNetworkDataResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ObserveGovernanceRequest.ProtoReflect.Descriptor instead. +func (*ObserveGovernanceRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{234} } -func (x *GetNetworkDataResponse) GetNodeData() *vega.NodeData { - if x != nil { - return x.NodeData +func (x *ObserveGovernanceRequest) GetPartyId() string { + if x != nil && x.PartyId != nil { + return *x.PartyId } - return nil + return "" } -// Request to get node data -type GetNodeRequest struct { +// Response from governance subscription +type ObserveGovernanceResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Node ID to get data for. - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // Governance data, i.e. proposal and votes for and against. + Data *vega.GovernanceData `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` } -func (x *GetNodeRequest) Reset() { - *x = GetNodeRequest{} +func (x *ObserveGovernanceResponse) Reset() { + *x = ObserveGovernanceResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[235] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -14651,13 +14612,13 @@ func (x *GetNodeRequest) Reset() { } } -func (x *GetNodeRequest) String() string { +func (x *ObserveGovernanceResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetNodeRequest) ProtoMessage() {} +func (*ObserveGovernanceResponse) ProtoMessage() {} -func (x *GetNodeRequest) ProtoReflect() protoreflect.Message { +func (x *ObserveGovernanceResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[235] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -14669,30 +14630,36 @@ func (x *GetNodeRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetNodeRequest.ProtoReflect.Descriptor instead. -func (*GetNodeRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ObserveGovernanceResponse.ProtoReflect.Descriptor instead. +func (*ObserveGovernanceResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{235} } -func (x *GetNodeRequest) GetId() string { +func (x *ObserveGovernanceResponse) GetData() *vega.GovernanceData { if x != nil { - return x.Id + return x.Data } - return "" + return nil } -// Response from getting node -type GetNodeResponse struct { +// Request for listing delegations +type ListDelegationsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Data specific to a single node on the Vega network. - Node *vega.Node `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Restrict delegations to those made by the given party ID. + PartyId *string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3,oneof" json:"party_id,omitempty"` + // Restrict delegations to those made to the given node ID. + NodeId *string `protobuf:"bytes,2,opt,name=node_id,json=nodeId,proto3,oneof" json:"node_id,omitempty"` + // Return delegations made in the given epoch. If not set, delegations for the current epoch will be returned. + EpochId *string `protobuf:"bytes,3,opt,name=epoch_id,json=epochId,proto3,oneof" json:"epoch_id,omitempty"` + // Pagination controls. + Pagination *Pagination `protobuf:"bytes,4,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` } -func (x *GetNodeResponse) Reset() { - *x = GetNodeResponse{} +func (x *ListDelegationsRequest) Reset() { + *x = ListDelegationsRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[236] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -14700,13 +14667,13 @@ func (x *GetNodeResponse) Reset() { } } -func (x *GetNodeResponse) String() string { +func (x *ListDelegationsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetNodeResponse) ProtoMessage() {} +func (*ListDelegationsRequest) ProtoMessage() {} -func (x *GetNodeResponse) ProtoReflect() protoreflect.Message { +func (x *ListDelegationsRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[236] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -14718,32 +14685,51 @@ func (x *GetNodeResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetNodeResponse.ProtoReflect.Descriptor instead. -func (*GetNodeResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListDelegationsRequest.ProtoReflect.Descriptor instead. +func (*ListDelegationsRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{236} } -func (x *GetNodeResponse) GetNode() *vega.Node { +func (x *ListDelegationsRequest) GetPartyId() string { + if x != nil && x.PartyId != nil { + return *x.PartyId + } + return "" +} + +func (x *ListDelegationsRequest) GetNodeId() string { + if x != nil && x.NodeId != nil { + return *x.NodeId + } + return "" +} + +func (x *ListDelegationsRequest) GetEpochId() string { + if x != nil && x.EpochId != nil { + return *x.EpochId + } + return "" +} + +func (x *ListDelegationsRequest) GetPagination() *Pagination { if x != nil { - return x.Node + return x.Pagination } return nil } -// Request to list nodes -type ListNodesRequest struct { +// Response from listing delegations +type ListDelegationsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Return the node list for the given epoch. If not set, the node list for the current epoch will be returned. - EpochSeq *uint64 `protobuf:"varint,1,opt,name=epoch_seq,json=epochSeq,proto3,oneof" json:"epoch_seq,omitempty"` - // Pagination controls. - Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + // Page of delegations data and corresponding page information. + Delegations *DelegationsConnection `protobuf:"bytes,1,opt,name=delegations,proto3" json:"delegations,omitempty"` } -func (x *ListNodesRequest) Reset() { - *x = ListNodesRequest{} +func (x *ListDelegationsResponse) Reset() { + *x = ListDelegationsResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[237] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -14751,13 +14737,13 @@ func (x *ListNodesRequest) Reset() { } } -func (x *ListNodesRequest) String() string { +func (x *ListDelegationsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListNodesRequest) ProtoMessage() {} +func (*ListDelegationsResponse) ProtoMessage() {} -func (x *ListNodesRequest) ProtoReflect() protoreflect.Message { +func (x *ListDelegationsResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[237] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -14769,37 +14755,32 @@ func (x *ListNodesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListNodesRequest.ProtoReflect.Descriptor instead. -func (*ListNodesRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListDelegationsResponse.ProtoReflect.Descriptor instead. +func (*ListDelegationsResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{237} } -func (x *ListNodesRequest) GetEpochSeq() uint64 { - if x != nil && x.EpochSeq != nil { - return *x.EpochSeq - } - return 0 -} - -func (x *ListNodesRequest) GetPagination() *Pagination { +func (x *ListDelegationsResponse) GetDelegations() *DelegationsConnection { if x != nil { - return x.Pagination + return x.Delegations } return nil } -// Response from listing nodes -type ListNodesResponse struct { +// Delegation data with the corresponding cursor. +type DelegationEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of node data and corresponding page information. - Nodes *NodesConnection `protobuf:"bytes,1,opt,name=nodes,proto3" json:"nodes,omitempty"` + // How much a party is delegating to a node and when. + Node *vega.Delegation `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *ListNodesResponse) Reset() { - *x = ListNodesResponse{} +func (x *DelegationEdge) Reset() { + *x = DelegationEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[238] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -14807,13 +14788,13 @@ func (x *ListNodesResponse) Reset() { } } -func (x *ListNodesResponse) String() string { +func (x *DelegationEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListNodesResponse) ProtoMessage() {} +func (*DelegationEdge) ProtoMessage() {} -func (x *ListNodesResponse) ProtoReflect() protoreflect.Message { +func (x *DelegationEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[238] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -14825,32 +14806,39 @@ func (x *ListNodesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListNodesResponse.ProtoReflect.Descriptor instead. -func (*ListNodesResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use DelegationEdge.ProtoReflect.Descriptor instead. +func (*DelegationEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{238} } -func (x *ListNodesResponse) GetNodes() *NodesConnection { +func (x *DelegationEdge) GetNode() *vega.Delegation { if x != nil { - return x.Nodes + return x.Node } return nil } -// Node data with the corresponding cursor. -type NodeEdge struct { +func (x *DelegationEdge) GetCursor() string { + if x != nil { + return x.Cursor + } + return "" +} + +// Page of delegations data and corresponding page information +type DelegationsConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Data specific to a single node on the Vega network. - Node *vega.Node `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Page of delegations data and their corresponding cursors. + Edges []*DelegationEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *NodeEdge) Reset() { - *x = NodeEdge{} +func (x *DelegationsConnection) Reset() { + *x = DelegationsConnection{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[239] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -14858,13 +14846,13 @@ func (x *NodeEdge) Reset() { } } -func (x *NodeEdge) String() string { +func (x *DelegationsConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*NodeEdge) ProtoMessage() {} +func (*DelegationsConnection) ProtoMessage() {} -func (x *NodeEdge) ProtoReflect() protoreflect.Message { +func (x *DelegationsConnection) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[239] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -14876,39 +14864,39 @@ func (x *NodeEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use NodeEdge.ProtoReflect.Descriptor instead. -func (*NodeEdge) Descriptor() ([]byte, []int) { +// Deprecated: Use DelegationsConnection.ProtoReflect.Descriptor instead. +func (*DelegationsConnection) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{239} } -func (x *NodeEdge) GetNode() *vega.Node { +func (x *DelegationsConnection) GetEdges() []*DelegationEdge { if x != nil { - return x.Node + return x.Edges } return nil } -func (x *NodeEdge) GetCursor() string { +func (x *DelegationsConnection) GetPageInfo() *PageInfo { if x != nil { - return x.Cursor + return x.PageInfo } - return "" + return nil } -// Page of node data and corresponding page information -type NodesConnection struct { +// Request to subscribe to all event related to delegations, with the given filters +type ObserveDelegationsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of node data and their corresponding cursors. - Edges []*NodeEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + // Party ID to get delegations for, if provided. + PartyId *string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3,oneof" json:"party_id,omitempty"` + // Node ID to get delegations for, if provided. + NodeId *string `protobuf:"bytes,2,opt,name=node_id,json=nodeId,proto3,oneof" json:"node_id,omitempty"` } -func (x *NodesConnection) Reset() { - *x = NodesConnection{} +func (x *ObserveDelegationsRequest) Reset() { + *x = ObserveDelegationsRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[240] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -14916,13 +14904,13 @@ func (x *NodesConnection) Reset() { } } -func (x *NodesConnection) String() string { +func (x *ObserveDelegationsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*NodesConnection) ProtoMessage() {} +func (*ObserveDelegationsRequest) ProtoMessage() {} -func (x *NodesConnection) ProtoReflect() protoreflect.Message { +func (x *ObserveDelegationsRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[240] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -14934,39 +14922,37 @@ func (x *NodesConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use NodesConnection.ProtoReflect.Descriptor instead. -func (*NodesConnection) Descriptor() ([]byte, []int) { +// Deprecated: Use ObserveDelegationsRequest.ProtoReflect.Descriptor instead. +func (*ObserveDelegationsRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{240} } -func (x *NodesConnection) GetEdges() []*NodeEdge { - if x != nil { - return x.Edges +func (x *ObserveDelegationsRequest) GetPartyId() string { + if x != nil && x.PartyId != nil { + return *x.PartyId } - return nil + return "" } -func (x *NodesConnection) GetPageInfo() *PageInfo { - if x != nil { - return x.PageInfo +func (x *ObserveDelegationsRequest) GetNodeId() string { + if x != nil && x.NodeId != nil { + return *x.NodeId } - return nil + return "" } -// Request to specify the ID of the resource to retrieve aggregated signatures for -type ListNodeSignaturesRequest struct { +// Response with all events related to delegations, with the given filters +type ObserveDelegationsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Resource ID to list signatures for. - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - // Optional pagination information to limit the data that is returned. - Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + // How much a party is delegating to a node and when. + Delegation *vega.Delegation `protobuf:"bytes,1,opt,name=delegation,proto3" json:"delegation,omitempty"` } -func (x *ListNodeSignaturesRequest) Reset() { - *x = ListNodeSignaturesRequest{} +func (x *ObserveDelegationsResponse) Reset() { + *x = ObserveDelegationsResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[241] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -14974,13 +14960,13 @@ func (x *ListNodeSignaturesRequest) Reset() { } } -func (x *ListNodeSignaturesRequest) String() string { +func (x *ObserveDelegationsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListNodeSignaturesRequest) ProtoMessage() {} +func (*ObserveDelegationsResponse) ProtoMessage() {} -func (x *ListNodeSignaturesRequest) ProtoReflect() protoreflect.Message { +func (x *ObserveDelegationsResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[241] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -14992,37 +14978,46 @@ func (x *ListNodeSignaturesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListNodeSignaturesRequest.ProtoReflect.Descriptor instead. -func (*ListNodeSignaturesRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ObserveDelegationsResponse.ProtoReflect.Descriptor instead. +func (*ObserveDelegationsResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{241} } -func (x *ListNodeSignaturesRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *ListNodeSignaturesRequest) GetPagination() *Pagination { +func (x *ObserveDelegationsResponse) GetDelegation() *vega.Delegation { if x != nil { - return x.Pagination + return x.Delegation } return nil } -// Response to specify the ID of the resource to retrieve aggregated signatures for -type ListNodeSignaturesResponse struct { +// Represents a basic node without any epoch specific details like delegations, staking, rewards etc. +type NodeBasic struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of nodes signatures and corresponding page information. - Signatures *NodeSignaturesConnection `protobuf:"bytes,1,opt,name=signatures,proto3" json:"signatures,omitempty"` + // Unique ID identifying the node. + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // Node operator's public key. + PubKey string `protobuf:"bytes,2,opt,name=pub_key,json=pubKey,proto3" json:"pub_key,omitempty"` + // Tendermint public key of the node. + TmPubKey string `protobuf:"bytes,3,opt,name=tm_pub_key,json=tmPubKey,proto3" json:"tm_pub_key,omitempty"` + // Ethereum public key of the node. + EthereumAddress string `protobuf:"bytes,4,opt,name=ethereum_address,json=ethereumAddress,proto3" json:"ethereum_address,omitempty"` + // URL that provides more information about the node. + InfoUrl string `protobuf:"bytes,5,opt,name=info_url,json=infoUrl,proto3" json:"info_url,omitempty"` + // Country code for the location of the node. + Location string `protobuf:"bytes,6,opt,name=location,proto3" json:"location,omitempty"` + // Node status. + Status vega.NodeStatus `protobuf:"varint,13,opt,name=status,proto3,enum=vega.NodeStatus" json:"status,omitempty"` + // Node name. + Name string `protobuf:"bytes,17,opt,name=name,proto3" json:"name,omitempty"` + // Avatar URL. + AvatarUrl string `protobuf:"bytes,18,opt,name=avatar_url,json=avatarUrl,proto3" json:"avatar_url,omitempty"` } -func (x *ListNodeSignaturesResponse) Reset() { - *x = ListNodeSignaturesResponse{} +func (x *NodeBasic) Reset() { + *x = NodeBasic{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[242] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -15030,13 +15025,13 @@ func (x *ListNodeSignaturesResponse) Reset() { } } -func (x *ListNodeSignaturesResponse) String() string { +func (x *NodeBasic) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListNodeSignaturesResponse) ProtoMessage() {} +func (*NodeBasic) ProtoMessage() {} -func (x *ListNodeSignaturesResponse) ProtoReflect() protoreflect.Message { +func (x *NodeBasic) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[242] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -15048,32 +15043,83 @@ func (x *ListNodeSignaturesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListNodeSignaturesResponse.ProtoReflect.Descriptor instead. -func (*ListNodeSignaturesResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use NodeBasic.ProtoReflect.Descriptor instead. +func (*NodeBasic) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{242} } -func (x *ListNodeSignaturesResponse) GetSignatures() *NodeSignaturesConnection { +func (x *NodeBasic) GetId() string { if x != nil { - return x.Signatures + return x.Id } - return nil + return "" } -// Nodes signature edge with the corresponding cursor. -type NodeSignatureEdge struct { +func (x *NodeBasic) GetPubKey() string { + if x != nil { + return x.PubKey + } + return "" +} + +func (x *NodeBasic) GetTmPubKey() string { + if x != nil { + return x.TmPubKey + } + return "" +} + +func (x *NodeBasic) GetEthereumAddress() string { + if x != nil { + return x.EthereumAddress + } + return "" +} + +func (x *NodeBasic) GetInfoUrl() string { + if x != nil { + return x.InfoUrl + } + return "" +} + +func (x *NodeBasic) GetLocation() string { + if x != nil { + return x.Location + } + return "" +} + +func (x *NodeBasic) GetStatus() vega.NodeStatus { + if x != nil { + return x.Status + } + return vega.NodeStatus(0) +} + +func (x *NodeBasic) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *NodeBasic) GetAvatarUrl() string { + if x != nil { + return x.AvatarUrl + } + return "" +} + +// Request to get network data +type GetNetworkDataRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // Node signature data. - Node *v11.NodeSignature `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *NodeSignatureEdge) Reset() { - *x = NodeSignatureEdge{} +func (x *GetNetworkDataRequest) Reset() { + *x = GetNetworkDataRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[243] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -15081,13 +15127,13 @@ func (x *NodeSignatureEdge) Reset() { } } -func (x *NodeSignatureEdge) String() string { +func (x *GetNetworkDataRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*NodeSignatureEdge) ProtoMessage() {} +func (*GetNetworkDataRequest) ProtoMessage() {} -func (x *NodeSignatureEdge) ProtoReflect() protoreflect.Message { +func (x *GetNetworkDataRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[243] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -15099,39 +15145,23 @@ func (x *NodeSignatureEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use NodeSignatureEdge.ProtoReflect.Descriptor instead. -func (*NodeSignatureEdge) Descriptor() ([]byte, []int) { +// Deprecated: Use GetNetworkDataRequest.ProtoReflect.Descriptor instead. +func (*GetNetworkDataRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{243} } -func (x *NodeSignatureEdge) GetNode() *v11.NodeSignature { - if x != nil { - return x.Node - } - return nil -} - -func (x *NodeSignatureEdge) GetCursor() string { - if x != nil { - return x.Cursor - } - return "" -} - -// Page of node signatures and corresponding page information. -type NodeSignaturesConnection struct { +// Response from getting network data +type GetNetworkDataResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of node signatures and their corresponding cursors. - Edges []*NodeSignatureEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + // Summary of information with respect to nodes on the Vega network. + NodeData *vega.NodeData `protobuf:"bytes,1,opt,name=node_data,json=nodeData,proto3" json:"node_data,omitempty"` } -func (x *NodeSignaturesConnection) Reset() { - *x = NodeSignaturesConnection{} +func (x *GetNetworkDataResponse) Reset() { + *x = GetNetworkDataResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[244] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -15139,13 +15169,13 @@ func (x *NodeSignaturesConnection) Reset() { } } -func (x *NodeSignaturesConnection) String() string { +func (x *GetNetworkDataResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*NodeSignaturesConnection) ProtoMessage() {} +func (*GetNetworkDataResponse) ProtoMessage() {} -func (x *NodeSignaturesConnection) ProtoReflect() protoreflect.Message { +func (x *GetNetworkDataResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[244] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -15157,41 +15187,30 @@ func (x *NodeSignaturesConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use NodeSignaturesConnection.ProtoReflect.Descriptor instead. -func (*NodeSignaturesConnection) Descriptor() ([]byte, []int) { +// Deprecated: Use GetNetworkDataResponse.ProtoReflect.Descriptor instead. +func (*GetNetworkDataResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{244} } -func (x *NodeSignaturesConnection) GetEdges() []*NodeSignatureEdge { - if x != nil { - return x.Edges - } - return nil -} - -func (x *NodeSignaturesConnection) GetPageInfo() *PageInfo { +func (x *GetNetworkDataResponse) GetNodeData() *vega.NodeData { if x != nil { - return x.PageInfo + return x.NodeData } return nil } -// Request to fetch epoch data -// Provide either the epoch ID or the block height to get the epoch for. If both are provided, the epoch ID will be used. -// If both are omitted, the current epoch will be returned. -type GetEpochRequest struct { +// Request to get node data +type GetNodeRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Epoch ID. If provided, returns the epoch with the given ID. - Id *uint64 `protobuf:"varint,1,opt,name=id,proto3,oneof" json:"id,omitempty"` - // Block height. If provided, returns the epoch that the given block is in. - Block *uint64 `protobuf:"varint,2,opt,name=block,proto3,oneof" json:"block,omitempty"` + // Node ID to get data for. + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } -func (x *GetEpochRequest) Reset() { - *x = GetEpochRequest{} +func (x *GetNodeRequest) Reset() { + *x = GetNodeRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[245] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -15199,13 +15218,13 @@ func (x *GetEpochRequest) Reset() { } } -func (x *GetEpochRequest) String() string { +func (x *GetNodeRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetEpochRequest) ProtoMessage() {} +func (*GetNodeRequest) ProtoMessage() {} -func (x *GetEpochRequest) ProtoReflect() protoreflect.Message { +func (x *GetNodeRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[245] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -15217,38 +15236,30 @@ func (x *GetEpochRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetEpochRequest.ProtoReflect.Descriptor instead. -func (*GetEpochRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GetNodeRequest.ProtoReflect.Descriptor instead. +func (*GetNodeRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{245} } -func (x *GetEpochRequest) GetId() uint64 { - if x != nil && x.Id != nil { - return *x.Id - } - return 0 -} - -func (x *GetEpochRequest) GetBlock() uint64 { - if x != nil && x.Block != nil { - return *x.Block +func (x *GetNodeRequest) GetId() string { + if x != nil { + return x.Id } - return 0 + return "" } -// Response from getting epoch -type GetEpochResponse struct { +// Response from getting node +type GetNodeResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Data specific to a single epoch on the Vega network. This includes the epoch number, - // start and end times, and the nodes that participated in the epoch. - Epoch *vega.Epoch `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` + // Data specific to a single node on the Vega network. + Node *vega.Node `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` } -func (x *GetEpochResponse) Reset() { - *x = GetEpochResponse{} +func (x *GetNodeResponse) Reset() { + *x = GetNodeResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[246] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -15256,13 +15267,13 @@ func (x *GetEpochResponse) Reset() { } } -func (x *GetEpochResponse) String() string { +func (x *GetNodeResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetEpochResponse) ProtoMessage() {} +func (*GetNodeResponse) ProtoMessage() {} -func (x *GetEpochResponse) ProtoReflect() protoreflect.Message { +func (x *GetNodeResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[246] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -15274,34 +15285,32 @@ func (x *GetEpochResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetEpochResponse.ProtoReflect.Descriptor instead. -func (*GetEpochResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GetNodeResponse.ProtoReflect.Descriptor instead. +func (*GetNodeResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{246} } -func (x *GetEpochResponse) GetEpoch() *vega.Epoch { +func (x *GetNodeResponse) GetNode() *vega.Node { if x != nil { - return x.Epoch + return x.Node } return nil } -// Request to fetch the estimated fee if an order were to trade immediately -type EstimateFeeRequest struct { +// Request to list nodes +type ListNodesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Market ID, used to specify the fee factors. - MarketId string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` - // Price at which the potential order is expected to trade. - Price string `protobuf:"bytes,2,opt,name=price,proto3" json:"price,omitempty"` - // Size at which the potential order is expected to trade. - Size uint64 `protobuf:"varint,3,opt,name=size,proto3" json:"size,omitempty"` + // Return the node list for the given epoch. If not set, the node list for the current epoch will be returned. + EpochSeq *uint64 `protobuf:"varint,1,opt,name=epoch_seq,json=epochSeq,proto3,oneof" json:"epoch_seq,omitempty"` + // Pagination controls. + Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` } -func (x *EstimateFeeRequest) Reset() { - *x = EstimateFeeRequest{} +func (x *ListNodesRequest) Reset() { + *x = ListNodesRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[247] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -15309,13 +15318,13 @@ func (x *EstimateFeeRequest) Reset() { } } -func (x *EstimateFeeRequest) String() string { +func (x *ListNodesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*EstimateFeeRequest) ProtoMessage() {} +func (*ListNodesRequest) ProtoMessage() {} -func (x *EstimateFeeRequest) ProtoReflect() protoreflect.Message { +func (x *ListNodesRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[247] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -15327,44 +15336,37 @@ func (x *EstimateFeeRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use EstimateFeeRequest.ProtoReflect.Descriptor instead. -func (*EstimateFeeRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListNodesRequest.ProtoReflect.Descriptor instead. +func (*ListNodesRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{247} } -func (x *EstimateFeeRequest) GetMarketId() string { - if x != nil { - return x.MarketId - } - return "" -} - -func (x *EstimateFeeRequest) GetPrice() string { - if x != nil { - return x.Price +func (x *ListNodesRequest) GetEpochSeq() uint64 { + if x != nil && x.EpochSeq != nil { + return *x.EpochSeq } - return "" + return 0 } -func (x *EstimateFeeRequest) GetSize() uint64 { +func (x *ListNodesRequest) GetPagination() *Pagination { if x != nil { - return x.Size + return x.Pagination } - return 0 + return nil } -// Response that is received from EstimateFeeRequest, contains the estimated fees for a given order -type EstimateFeeResponse struct { +// Response from listing nodes +type ListNodesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Summary of the estimated fees for this order if it were to trade now. - Fee *vega.Fee `protobuf:"bytes,2,opt,name=fee,proto3" json:"fee,omitempty"` + // Page of node data and corresponding page information. + Nodes *NodesConnection `protobuf:"bytes,1,opt,name=nodes,proto3" json:"nodes,omitempty"` } -func (x *EstimateFeeResponse) Reset() { - *x = EstimateFeeResponse{} +func (x *ListNodesResponse) Reset() { + *x = ListNodesResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[248] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -15372,13 +15374,13 @@ func (x *EstimateFeeResponse) Reset() { } } -func (x *EstimateFeeResponse) String() string { +func (x *ListNodesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*EstimateFeeResponse) ProtoMessage() {} +func (*ListNodesResponse) ProtoMessage() {} -func (x *EstimateFeeResponse) ProtoReflect() protoreflect.Message { +func (x *ListNodesResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[248] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -15390,42 +15392,32 @@ func (x *EstimateFeeResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use EstimateFeeResponse.ProtoReflect.Descriptor instead. -func (*EstimateFeeResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListNodesResponse.ProtoReflect.Descriptor instead. +func (*ListNodesResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{248} } -func (x *EstimateFeeResponse) GetFee() *vega.Fee { +func (x *ListNodesResponse) GetNodes() *NodesConnection { if x != nil { - return x.Fee + return x.Nodes } return nil } -// Request to fetch the estimated MarginLevels if an order were to trade immediately -// -// Deprecated: Do not use. -type EstimateMarginRequest struct { +// Node data with the corresponding cursor. +type NodeEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Market ID for the order. - MarketId string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` - // Party ID of the order. - PartyId string `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` - // Order side - indicator for Seller or Buyer side. - Side vega.Side `protobuf:"varint,3,opt,name=side,proto3,enum=vega.Side" json:"side,omitempty"` - // Type of the order. - Type vega.Order_Type `protobuf:"varint,4,opt,name=type,proto3,enum=vega.Order_Type" json:"type,omitempty"` - // Size of order. - Size uint64 `protobuf:"varint,5,opt,name=size,proto3" json:"size,omitempty"` - // Price of the asset. - Price string `protobuf:"bytes,6,opt,name=price,proto3" json:"price,omitempty"` + // Data specific to a single node on the Vega network. + Node *vega.Node `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *EstimateMarginRequest) Reset() { - *x = EstimateMarginRequest{} +func (x *NodeEdge) Reset() { + *x = NodeEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[249] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -15433,13 +15425,13 @@ func (x *EstimateMarginRequest) Reset() { } } -func (x *EstimateMarginRequest) String() string { +func (x *NodeEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*EstimateMarginRequest) ProtoMessage() {} +func (*NodeEdge) ProtoMessage() {} -func (x *EstimateMarginRequest) ProtoReflect() protoreflect.Message { +func (x *NodeEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[249] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -15451,67 +15443,39 @@ func (x *EstimateMarginRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use EstimateMarginRequest.ProtoReflect.Descriptor instead. -func (*EstimateMarginRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use NodeEdge.ProtoReflect.Descriptor instead. +func (*NodeEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{249} } -func (x *EstimateMarginRequest) GetMarketId() string { - if x != nil { - return x.MarketId - } - return "" -} - -func (x *EstimateMarginRequest) GetPartyId() string { - if x != nil { - return x.PartyId - } - return "" -} - -func (x *EstimateMarginRequest) GetSide() vega.Side { - if x != nil { - return x.Side - } - return vega.Side(0) -} - -func (x *EstimateMarginRequest) GetType() vega.Order_Type { - if x != nil { - return x.Type - } - return vega.Order_Type(0) -} - -func (x *EstimateMarginRequest) GetSize() uint64 { +func (x *NodeEdge) GetNode() *vega.Node { if x != nil { - return x.Size + return x.Node } - return 0 + return nil } -func (x *EstimateMarginRequest) GetPrice() string { +func (x *NodeEdge) GetCursor() string { if x != nil { - return x.Price + return x.Cursor } return "" } -// Response to an estimate margin request, containing the estimated margin levels for a given order -// -// Deprecated: Do not use. -type EstimateMarginResponse struct { +// Page of node data and corresponding page information +type NodesConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Summary of the estimated margins for this order if it were to trade now. - MarginLevels *vega.MarginLevels `protobuf:"bytes,2,opt,name=margin_levels,json=marginLevels,proto3" json:"margin_levels,omitempty"` + // Page of node data and their corresponding cursors. + Edges []*NodeEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *EstimateMarginResponse) Reset() { - *x = EstimateMarginResponse{} +func (x *NodesConnection) Reset() { + *x = NodesConnection{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[250] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -15519,13 +15483,13 @@ func (x *EstimateMarginResponse) Reset() { } } -func (x *EstimateMarginResponse) String() string { +func (x *NodesConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*EstimateMarginResponse) ProtoMessage() {} +func (*NodesConnection) ProtoMessage() {} -func (x *EstimateMarginResponse) ProtoReflect() protoreflect.Message { +func (x *NodesConnection) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[250] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -15537,30 +15501,39 @@ func (x *EstimateMarginResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use EstimateMarginResponse.ProtoReflect.Descriptor instead. -func (*EstimateMarginResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use NodesConnection.ProtoReflect.Descriptor instead. +func (*NodesConnection) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{250} } -func (x *EstimateMarginResponse) GetMarginLevels() *vega.MarginLevels { +func (x *NodesConnection) GetEdges() []*NodeEdge { if x != nil { - return x.MarginLevels + return x.Edges } return nil } -// Message requesting for the list of all network parameters -type ListNetworkParametersRequest struct { +func (x *NodesConnection) GetPageInfo() *PageInfo { + if x != nil { + return x.PageInfo + } + return nil +} + +// Request to specify the ID of the resource to retrieve aggregated signatures for +type ListNodeSignaturesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + // Resource ID to list signatures for. + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Optional pagination information to limit the data that is returned. - Pagination *Pagination `protobuf:"bytes,1,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` } -func (x *ListNetworkParametersRequest) Reset() { - *x = ListNetworkParametersRequest{} +func (x *ListNodeSignaturesRequest) Reset() { + *x = ListNodeSignaturesRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[251] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -15568,13 +15541,13 @@ func (x *ListNetworkParametersRequest) Reset() { } } -func (x *ListNetworkParametersRequest) String() string { +func (x *ListNodeSignaturesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListNetworkParametersRequest) ProtoMessage() {} +func (*ListNodeSignaturesRequest) ProtoMessage() {} -func (x *ListNetworkParametersRequest) ProtoReflect() protoreflect.Message { +func (x *ListNodeSignaturesRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[251] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -15586,30 +15559,37 @@ func (x *ListNetworkParametersRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListNetworkParametersRequest.ProtoReflect.Descriptor instead. -func (*ListNetworkParametersRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListNodeSignaturesRequest.ProtoReflect.Descriptor instead. +func (*ListNodeSignaturesRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{251} } -func (x *ListNetworkParametersRequest) GetPagination() *Pagination { +func (x *ListNodeSignaturesRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *ListNodeSignaturesRequest) GetPagination() *Pagination { if x != nil { return x.Pagination } return nil } -// Response containing all of the Vega network parameters -type ListNetworkParametersResponse struct { +// Response to specify the ID of the resource to retrieve aggregated signatures for +type ListNodeSignaturesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of network parameters and corresponding page information. - NetworkParameters *NetworkParameterConnection `protobuf:"bytes,1,opt,name=network_parameters,json=networkParameters,proto3" json:"network_parameters,omitempty"` + // Page of nodes signatures and corresponding page information. + Signatures *NodeSignaturesConnection `protobuf:"bytes,1,opt,name=signatures,proto3" json:"signatures,omitempty"` } -func (x *ListNetworkParametersResponse) Reset() { - *x = ListNetworkParametersResponse{} +func (x *ListNodeSignaturesResponse) Reset() { + *x = ListNodeSignaturesResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[252] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -15617,13 +15597,13 @@ func (x *ListNetworkParametersResponse) Reset() { } } -func (x *ListNetworkParametersResponse) String() string { +func (x *ListNodeSignaturesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListNetworkParametersResponse) ProtoMessage() {} +func (*ListNodeSignaturesResponse) ProtoMessage() {} -func (x *ListNetworkParametersResponse) ProtoReflect() protoreflect.Message { +func (x *ListNodeSignaturesResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[252] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -15635,30 +15615,32 @@ func (x *ListNetworkParametersResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListNetworkParametersResponse.ProtoReflect.Descriptor instead. -func (*ListNetworkParametersResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListNodeSignaturesResponse.ProtoReflect.Descriptor instead. +func (*ListNodeSignaturesResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{252} } -func (x *ListNetworkParametersResponse) GetNetworkParameters() *NetworkParameterConnection { +func (x *ListNodeSignaturesResponse) GetSignatures() *NodeSignaturesConnection { if x != nil { - return x.NetworkParameters + return x.Signatures } return nil } -// Request for a single network parameter -type GetNetworkParameterRequest struct { +// Nodes signature edge with the corresponding cursor. +type NodeSignatureEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Key identifying the network parameter. - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + // Node signature data. + Node *v11.NodeSignature `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *GetNetworkParameterRequest) Reset() { - *x = GetNetworkParameterRequest{} +func (x *NodeSignatureEdge) Reset() { + *x = NodeSignatureEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[253] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -15666,13 +15648,13 @@ func (x *GetNetworkParameterRequest) Reset() { } } -func (x *GetNetworkParameterRequest) String() string { +func (x *NodeSignatureEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetNetworkParameterRequest) ProtoMessage() {} +func (*NodeSignatureEdge) ProtoMessage() {} -func (x *GetNetworkParameterRequest) ProtoReflect() protoreflect.Message { +func (x *NodeSignatureEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[253] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -15684,30 +15666,39 @@ func (x *GetNetworkParameterRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetNetworkParameterRequest.ProtoReflect.Descriptor instead. -func (*GetNetworkParameterRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use NodeSignatureEdge.ProtoReflect.Descriptor instead. +func (*NodeSignatureEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{253} } -func (x *GetNetworkParameterRequest) GetKey() string { +func (x *NodeSignatureEdge) GetNode() *v11.NodeSignature { if x != nil { - return x.Key + return x.Node + } + return nil +} + +func (x *NodeSignatureEdge) GetCursor() string { + if x != nil { + return x.Cursor } return "" } -// Response that is received when getting a network parameter -type GetNetworkParameterResponse struct { +// Page of node signatures and corresponding page information. +type NodeSignaturesConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Network parameter key and value. - NetworkParameter *vega.NetworkParameter `protobuf:"bytes,1,opt,name=network_parameter,json=networkParameter,proto3" json:"network_parameter,omitempty"` + // Page of node signatures and their corresponding cursors. + Edges []*NodeSignatureEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *GetNetworkParameterResponse) Reset() { - *x = GetNetworkParameterResponse{} +func (x *NodeSignaturesConnection) Reset() { + *x = NodeSignaturesConnection{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[254] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -15715,13 +15706,13 @@ func (x *GetNetworkParameterResponse) Reset() { } } -func (x *GetNetworkParameterResponse) String() string { +func (x *NodeSignaturesConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetNetworkParameterResponse) ProtoMessage() {} +func (*NodeSignaturesConnection) ProtoMessage() {} -func (x *GetNetworkParameterResponse) ProtoReflect() protoreflect.Message { +func (x *NodeSignaturesConnection) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[254] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -15733,32 +15724,41 @@ func (x *GetNetworkParameterResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetNetworkParameterResponse.ProtoReflect.Descriptor instead. -func (*GetNetworkParameterResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use NodeSignaturesConnection.ProtoReflect.Descriptor instead. +func (*NodeSignaturesConnection) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{254} } -func (x *GetNetworkParameterResponse) GetNetworkParameter() *vega.NetworkParameter { +func (x *NodeSignaturesConnection) GetEdges() []*NodeSignatureEdge { if x != nil { - return x.NetworkParameter + return x.Edges } return nil } -// Network parameter with the corresponding cursor. -type NetworkParameterEdge struct { +func (x *NodeSignaturesConnection) GetPageInfo() *PageInfo { + if x != nil { + return x.PageInfo + } + return nil +} + +// Request to fetch epoch data +// Provide either the epoch ID or the block height to get the epoch for. If both are provided, the epoch ID will be used. +// If both are omitted, the current epoch will be returned. +type GetEpochRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Name and associated value of a network parameter. - Node *vega.NetworkParameter `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Epoch ID. If provided, returns the epoch with the given ID. + Id *uint64 `protobuf:"varint,1,opt,name=id,proto3,oneof" json:"id,omitempty"` + // Block height. If provided, returns the epoch that the given block is in. + Block *uint64 `protobuf:"varint,2,opt,name=block,proto3,oneof" json:"block,omitempty"` } -func (x *NetworkParameterEdge) Reset() { - *x = NetworkParameterEdge{} +func (x *GetEpochRequest) Reset() { + *x = GetEpochRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[255] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -15766,13 +15766,13 @@ func (x *NetworkParameterEdge) Reset() { } } -func (x *NetworkParameterEdge) String() string { +func (x *GetEpochRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*NetworkParameterEdge) ProtoMessage() {} +func (*GetEpochRequest) ProtoMessage() {} -func (x *NetworkParameterEdge) ProtoReflect() protoreflect.Message { +func (x *GetEpochRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[255] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -15784,39 +15784,38 @@ func (x *NetworkParameterEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use NetworkParameterEdge.ProtoReflect.Descriptor instead. -func (*NetworkParameterEdge) Descriptor() ([]byte, []int) { +// Deprecated: Use GetEpochRequest.ProtoReflect.Descriptor instead. +func (*GetEpochRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{255} } -func (x *NetworkParameterEdge) GetNode() *vega.NetworkParameter { - if x != nil { - return x.Node +func (x *GetEpochRequest) GetId() uint64 { + if x != nil && x.Id != nil { + return *x.Id } - return nil + return 0 } -func (x *NetworkParameterEdge) GetCursor() string { - if x != nil { - return x.Cursor +func (x *GetEpochRequest) GetBlock() uint64 { + if x != nil && x.Block != nil { + return *x.Block } - return "" + return 0 } -// Page of network parameters and corresponding page information -type NetworkParameterConnection struct { +// Response from getting epoch +type GetEpochResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of network parameters data and their corresponding cursors. - Edges []*NetworkParameterEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + // Data specific to a single epoch on the Vega network. This includes the epoch number, + // start and end times, and the nodes that participated in the epoch. + Epoch *vega.Epoch `protobuf:"bytes,1,opt,name=epoch,proto3" json:"epoch,omitempty"` } -func (x *NetworkParameterConnection) Reset() { - *x = NetworkParameterConnection{} +func (x *GetEpochResponse) Reset() { + *x = GetEpochResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[256] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -15824,13 +15823,13 @@ func (x *NetworkParameterConnection) Reset() { } } -func (x *NetworkParameterConnection) String() string { +func (x *GetEpochResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*NetworkParameterConnection) ProtoMessage() {} +func (*GetEpochResponse) ProtoMessage() {} -func (x *NetworkParameterConnection) ProtoReflect() protoreflect.Message { +func (x *GetEpochResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[256] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -15842,41 +15841,34 @@ func (x *NetworkParameterConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use NetworkParameterConnection.ProtoReflect.Descriptor instead. -func (*NetworkParameterConnection) Descriptor() ([]byte, []int) { +// Deprecated: Use GetEpochResponse.ProtoReflect.Descriptor instead. +func (*GetEpochResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{256} } -func (x *NetworkParameterConnection) GetEdges() []*NetworkParameterEdge { - if x != nil { - return x.Edges - } - return nil -} - -func (x *NetworkParameterConnection) GetPageInfo() *PageInfo { +func (x *GetEpochResponse) GetEpoch() *vega.Epoch { if x != nil { - return x.PageInfo + return x.Epoch } return nil } -// Actual data regarding a checkpoint -type Checkpoint struct { +// Request to fetch the estimated fee if an order were to trade immediately +type EstimateFeeRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Hash of the checkpoint. - Hash string `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` - // Block hash at which the checkpoint is made. - BlockHash string `protobuf:"bytes,2,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` - // Block number at which the checkpoint is made. - AtBlock uint64 `protobuf:"varint,3,opt,name=at_block,json=atBlock,proto3" json:"at_block,omitempty"` + // Market ID, used to specify the fee factors. + MarketId string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` + // Price at which the potential order is expected to trade. + Price string `protobuf:"bytes,2,opt,name=price,proto3" json:"price,omitempty"` + // Size at which the potential order is expected to trade. + Size uint64 `protobuf:"varint,3,opt,name=size,proto3" json:"size,omitempty"` } -func (x *Checkpoint) Reset() { - *x = Checkpoint{} +func (x *EstimateFeeRequest) Reset() { + *x = EstimateFeeRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[257] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -15884,13 +15876,13 @@ func (x *Checkpoint) Reset() { } } -func (x *Checkpoint) String() string { +func (x *EstimateFeeRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Checkpoint) ProtoMessage() {} +func (*EstimateFeeRequest) ProtoMessage() {} -func (x *Checkpoint) ProtoReflect() protoreflect.Message { +func (x *EstimateFeeRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[257] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -15902,44 +15894,44 @@ func (x *Checkpoint) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Checkpoint.ProtoReflect.Descriptor instead. -func (*Checkpoint) Descriptor() ([]byte, []int) { +// Deprecated: Use EstimateFeeRequest.ProtoReflect.Descriptor instead. +func (*EstimateFeeRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{257} } -func (x *Checkpoint) GetHash() string { +func (x *EstimateFeeRequest) GetMarketId() string { if x != nil { - return x.Hash + return x.MarketId } return "" } -func (x *Checkpoint) GetBlockHash() string { +func (x *EstimateFeeRequest) GetPrice() string { if x != nil { - return x.BlockHash + return x.Price } return "" } -func (x *Checkpoint) GetAtBlock() uint64 { +func (x *EstimateFeeRequest) GetSize() uint64 { if x != nil { - return x.AtBlock + return x.Size } return 0 } -// Request to get all checkpoints. Currently no fields, probably will be expanded to allow filtering data -type ListCheckpointsRequest struct { +// Response that is received from EstimateFeeRequest, contains the estimated fees for a given order +type EstimateFeeResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Optional pagination information to limit the data that is returned. - Pagination *Pagination `protobuf:"bytes,1,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + // Summary of the estimated fees for this order if it were to trade now. + Fee *vega.Fee `protobuf:"bytes,2,opt,name=fee,proto3" json:"fee,omitempty"` } -func (x *ListCheckpointsRequest) Reset() { - *x = ListCheckpointsRequest{} +func (x *EstimateFeeResponse) Reset() { + *x = EstimateFeeResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[258] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -15947,13 +15939,13 @@ func (x *ListCheckpointsRequest) Reset() { } } -func (x *ListCheckpointsRequest) String() string { +func (x *EstimateFeeResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListCheckpointsRequest) ProtoMessage() {} +func (*EstimateFeeResponse) ProtoMessage() {} -func (x *ListCheckpointsRequest) ProtoReflect() protoreflect.Message { +func (x *EstimateFeeResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[258] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -15965,30 +15957,42 @@ func (x *ListCheckpointsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListCheckpointsRequest.ProtoReflect.Descriptor instead. -func (*ListCheckpointsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use EstimateFeeResponse.ProtoReflect.Descriptor instead. +func (*EstimateFeeResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{258} } -func (x *ListCheckpointsRequest) GetPagination() *Pagination { +func (x *EstimateFeeResponse) GetFee() *vega.Fee { if x != nil { - return x.Pagination + return x.Fee } return nil } -// Response message containing all checkpoints requested -type ListCheckpointsResponse struct { +// Request to fetch the estimated MarginLevels if an order were to trade immediately +// +// Deprecated: Do not use. +type EstimateMarginRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of checkpoints data and corresponding page information. - Checkpoints *CheckpointsConnection `protobuf:"bytes,1,opt,name=checkpoints,proto3" json:"checkpoints,omitempty"` + // Market ID for the order. + MarketId string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` + // Party ID of the order. + PartyId string `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` + // Order side - indicator for Seller or Buyer side. + Side vega.Side `protobuf:"varint,3,opt,name=side,proto3,enum=vega.Side" json:"side,omitempty"` + // Type of the order. + Type vega.Order_Type `protobuf:"varint,4,opt,name=type,proto3,enum=vega.Order_Type" json:"type,omitempty"` + // Size of order. + Size uint64 `protobuf:"varint,5,opt,name=size,proto3" json:"size,omitempty"` + // Price of the asset. + Price string `protobuf:"bytes,6,opt,name=price,proto3" json:"price,omitempty"` } -func (x *ListCheckpointsResponse) Reset() { - *x = ListCheckpointsResponse{} +func (x *EstimateMarginRequest) Reset() { + *x = EstimateMarginRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[259] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -15996,13 +16000,13 @@ func (x *ListCheckpointsResponse) Reset() { } } -func (x *ListCheckpointsResponse) String() string { +func (x *EstimateMarginRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListCheckpointsResponse) ProtoMessage() {} +func (*EstimateMarginRequest) ProtoMessage() {} -func (x *ListCheckpointsResponse) ProtoReflect() protoreflect.Message { +func (x *EstimateMarginRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[259] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -16014,32 +16018,67 @@ func (x *ListCheckpointsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListCheckpointsResponse.ProtoReflect.Descriptor instead. -func (*ListCheckpointsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use EstimateMarginRequest.ProtoReflect.Descriptor instead. +func (*EstimateMarginRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{259} } -func (x *ListCheckpointsResponse) GetCheckpoints() *CheckpointsConnection { +func (x *EstimateMarginRequest) GetMarketId() string { if x != nil { - return x.Checkpoints + return x.MarketId } - return nil + return "" } -// Checkpoint data with the corresponding cursor. -type CheckpointEdge struct { +func (x *EstimateMarginRequest) GetPartyId() string { + if x != nil { + return x.PartyId + } + return "" +} + +func (x *EstimateMarginRequest) GetSide() vega.Side { + if x != nil { + return x.Side + } + return vega.Side(0) +} + +func (x *EstimateMarginRequest) GetType() vega.Order_Type { + if x != nil { + return x.Type + } + return vega.Order_Type(0) +} + +func (x *EstimateMarginRequest) GetSize() uint64 { + if x != nil { + return x.Size + } + return 0 +} + +func (x *EstimateMarginRequest) GetPrice() string { + if x != nil { + return x.Price + } + return "" +} + +// Response to an estimate margin request, containing the estimated margin levels for a given order +// +// Deprecated: Do not use. +type EstimateMarginResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Data relating to a single checkpoint generated by the Vega network. - Node *Checkpoint `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Summary of the estimated margins for this order if it were to trade now. + MarginLevels *vega.MarginLevels `protobuf:"bytes,2,opt,name=margin_levels,json=marginLevels,proto3" json:"margin_levels,omitempty"` } -func (x *CheckpointEdge) Reset() { - *x = CheckpointEdge{} +func (x *EstimateMarginResponse) Reset() { + *x = EstimateMarginResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[260] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -16047,13 +16086,13 @@ func (x *CheckpointEdge) Reset() { } } -func (x *CheckpointEdge) String() string { +func (x *EstimateMarginResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CheckpointEdge) ProtoMessage() {} +func (*EstimateMarginResponse) ProtoMessage() {} -func (x *CheckpointEdge) ProtoReflect() protoreflect.Message { +func (x *EstimateMarginResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[260] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -16065,39 +16104,30 @@ func (x *CheckpointEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CheckpointEdge.ProtoReflect.Descriptor instead. -func (*CheckpointEdge) Descriptor() ([]byte, []int) { +// Deprecated: Use EstimateMarginResponse.ProtoReflect.Descriptor instead. +func (*EstimateMarginResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{260} } -func (x *CheckpointEdge) GetNode() *Checkpoint { +func (x *EstimateMarginResponse) GetMarginLevels() *vega.MarginLevels { if x != nil { - return x.Node + return x.MarginLevels } return nil } -func (x *CheckpointEdge) GetCursor() string { - if x != nil { - return x.Cursor - } - return "" -} - -// Page of checkpoints data and corresponding page information -type CheckpointsConnection struct { +// Message requesting for the list of all network parameters +type ListNetworkParametersRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of checkpoints data and their corresponding cursors. - Edges []*CheckpointEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + // Optional pagination information to limit the data that is returned. + Pagination *Pagination `protobuf:"bytes,1,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` } -func (x *CheckpointsConnection) Reset() { - *x = CheckpointsConnection{} +func (x *ListNetworkParametersRequest) Reset() { + *x = ListNetworkParametersRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[261] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -16105,13 +16135,13 @@ func (x *CheckpointsConnection) Reset() { } } -func (x *CheckpointsConnection) String() string { +func (x *ListNetworkParametersRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CheckpointsConnection) ProtoMessage() {} +func (*ListNetworkParametersRequest) ProtoMessage() {} -func (x *CheckpointsConnection) ProtoReflect() protoreflect.Message { +func (x *ListNetworkParametersRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[261] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -16123,39 +16153,30 @@ func (x *CheckpointsConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CheckpointsConnection.ProtoReflect.Descriptor instead. -func (*CheckpointsConnection) Descriptor() ([]byte, []int) { +// Deprecated: Use ListNetworkParametersRequest.ProtoReflect.Descriptor instead. +func (*ListNetworkParametersRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{261} } -func (x *CheckpointsConnection) GetEdges() []*CheckpointEdge { - if x != nil { - return x.Edges - } - return nil -} - -func (x *CheckpointsConnection) GetPageInfo() *PageInfo { +func (x *ListNetworkParametersRequest) GetPagination() *Pagination { if x != nil { - return x.PageInfo + return x.Pagination } return nil } -// Request to get stake -type GetStakeRequest struct { +// Response containing all of the Vega network parameters +type ListNetworkParametersResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Party ID for which the stake information is requested. - PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` - // Optional pagination information to limit the data that is returned. - Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + // Page of network parameters and corresponding page information. + NetworkParameters *NetworkParameterConnection `protobuf:"bytes,1,opt,name=network_parameters,json=networkParameters,proto3" json:"network_parameters,omitempty"` } -func (x *GetStakeRequest) Reset() { - *x = GetStakeRequest{} +func (x *ListNetworkParametersResponse) Reset() { + *x = ListNetworkParametersResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[262] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -16163,13 +16184,13 @@ func (x *GetStakeRequest) Reset() { } } -func (x *GetStakeRequest) String() string { +func (x *ListNetworkParametersResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetStakeRequest) ProtoMessage() {} +func (*ListNetworkParametersResponse) ProtoMessage() {} -func (x *GetStakeRequest) ProtoReflect() protoreflect.Message { +func (x *ListNetworkParametersResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[262] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -16181,39 +16202,30 @@ func (x *GetStakeRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetStakeRequest.ProtoReflect.Descriptor instead. -func (*GetStakeRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListNetworkParametersResponse.ProtoReflect.Descriptor instead. +func (*ListNetworkParametersResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{262} } -func (x *GetStakeRequest) GetPartyId() string { - if x != nil { - return x.PartyId - } - return "" -} - -func (x *GetStakeRequest) GetPagination() *Pagination { +func (x *ListNetworkParametersResponse) GetNetworkParameters() *NetworkParameterConnection { if x != nil { - return x.Pagination + return x.NetworkParameters } return nil } -// Response that is received from requesting stake information -type GetStakeResponse struct { +// Request for a single network parameter +type GetNetworkParameterRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Current stake available information. - CurrentStakeAvailable string `protobuf:"bytes,1,opt,name=current_stake_available,json=currentStakeAvailable,proto3" json:"current_stake_available,omitempty"` - // Paged list of stake data with corresponding page information. - StakeLinkings *StakesConnection `protobuf:"bytes,2,opt,name=stake_linkings,json=stakeLinkings,proto3" json:"stake_linkings,omitempty"` + // Key identifying the network parameter. + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` } -func (x *GetStakeResponse) Reset() { - *x = GetStakeResponse{} +func (x *GetNetworkParameterRequest) Reset() { + *x = GetNetworkParameterRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[263] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -16221,13 +16233,13 @@ func (x *GetStakeResponse) Reset() { } } -func (x *GetStakeResponse) String() string { +func (x *GetNetworkParameterRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetStakeResponse) ProtoMessage() {} +func (*GetNetworkParameterRequest) ProtoMessage() {} -func (x *GetStakeResponse) ProtoReflect() protoreflect.Message { +func (x *GetNetworkParameterRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[263] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -16239,39 +16251,30 @@ func (x *GetStakeResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetStakeResponse.ProtoReflect.Descriptor instead. -func (*GetStakeResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GetNetworkParameterRequest.ProtoReflect.Descriptor instead. +func (*GetNetworkParameterRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{263} } -func (x *GetStakeResponse) GetCurrentStakeAvailable() string { +func (x *GetNetworkParameterRequest) GetKey() string { if x != nil { - return x.CurrentStakeAvailable + return x.Key } return "" } -func (x *GetStakeResponse) GetStakeLinkings() *StakesConnection { - if x != nil { - return x.StakeLinkings - } - return nil -} - -// Stake linking data with the corresponding cursor. -type StakeLinkingEdge struct { +// Response that is received when getting a network parameter +type GetNetworkParameterResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Stake linking representing the intent from a party to deposit. - Node *v1.StakeLinking `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Network parameter key and value. + NetworkParameter *vega.NetworkParameter `protobuf:"bytes,1,opt,name=network_parameter,json=networkParameter,proto3" json:"network_parameter,omitempty"` } -func (x *StakeLinkingEdge) Reset() { - *x = StakeLinkingEdge{} +func (x *GetNetworkParameterResponse) Reset() { + *x = GetNetworkParameterResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[264] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -16279,13 +16282,13 @@ func (x *StakeLinkingEdge) Reset() { } } -func (x *StakeLinkingEdge) String() string { +func (x *GetNetworkParameterResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StakeLinkingEdge) ProtoMessage() {} +func (*GetNetworkParameterResponse) ProtoMessage() {} -func (x *StakeLinkingEdge) ProtoReflect() protoreflect.Message { +func (x *GetNetworkParameterResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[264] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -16297,39 +16300,32 @@ func (x *StakeLinkingEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StakeLinkingEdge.ProtoReflect.Descriptor instead. -func (*StakeLinkingEdge) Descriptor() ([]byte, []int) { +// Deprecated: Use GetNetworkParameterResponse.ProtoReflect.Descriptor instead. +func (*GetNetworkParameterResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{264} } -func (x *StakeLinkingEdge) GetNode() *v1.StakeLinking { +func (x *GetNetworkParameterResponse) GetNetworkParameter() *vega.NetworkParameter { if x != nil { - return x.Node + return x.NetworkParameter } return nil } -func (x *StakeLinkingEdge) GetCursor() string { - if x != nil { - return x.Cursor - } - return "" -} - -// Page of stake data and corresponding page information. -type StakesConnection struct { +// Network parameter with the corresponding cursor. +type NetworkParameterEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of stake data and their corresponding cursors. - Edges []*StakeLinkingEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + // Name and associated value of a network parameter. + Node *vega.NetworkParameter `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *StakesConnection) Reset() { - *x = StakesConnection{} +func (x *NetworkParameterEdge) Reset() { + *x = NetworkParameterEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[265] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -16337,13 +16333,13 @@ func (x *StakesConnection) Reset() { } } -func (x *StakesConnection) String() string { +func (x *NetworkParameterEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StakesConnection) ProtoMessage() {} +func (*NetworkParameterEdge) ProtoMessage() {} -func (x *StakesConnection) ProtoReflect() protoreflect.Message { +func (x *NetworkParameterEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[265] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -16355,37 +16351,39 @@ func (x *StakesConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StakesConnection.ProtoReflect.Descriptor instead. -func (*StakesConnection) Descriptor() ([]byte, []int) { +// Deprecated: Use NetworkParameterEdge.ProtoReflect.Descriptor instead. +func (*NetworkParameterEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{265} } -func (x *StakesConnection) GetEdges() []*StakeLinkingEdge { +func (x *NetworkParameterEdge) GetNode() *vega.NetworkParameter { if x != nil { - return x.Edges + return x.Node } return nil } -func (x *StakesConnection) GetPageInfo() *PageInfo { +func (x *NetworkParameterEdge) GetCursor() string { if x != nil { - return x.PageInfo + return x.Cursor } - return nil + return "" } -// Request to get risk factor -type GetRiskFactorsRequest struct { +// Page of network parameters and corresponding page information +type NetworkParameterConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Market ID to get the risk factor for. - MarketId string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` + // Page of network parameters data and their corresponding cursors. + Edges []*NetworkParameterEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *GetRiskFactorsRequest) Reset() { - *x = GetRiskFactorsRequest{} +func (x *NetworkParameterConnection) Reset() { + *x = NetworkParameterConnection{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[266] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -16393,13 +16391,13 @@ func (x *GetRiskFactorsRequest) Reset() { } } -func (x *GetRiskFactorsRequest) String() string { +func (x *NetworkParameterConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetRiskFactorsRequest) ProtoMessage() {} +func (*NetworkParameterConnection) ProtoMessage() {} -func (x *GetRiskFactorsRequest) ProtoReflect() protoreflect.Message { +func (x *NetworkParameterConnection) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[266] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -16411,30 +16409,41 @@ func (x *GetRiskFactorsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetRiskFactorsRequest.ProtoReflect.Descriptor instead. -func (*GetRiskFactorsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use NetworkParameterConnection.ProtoReflect.Descriptor instead. +func (*NetworkParameterConnection) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{266} } -func (x *GetRiskFactorsRequest) GetMarketId() string { +func (x *NetworkParameterConnection) GetEdges() []*NetworkParameterEdge { if x != nil { - return x.MarketId + return x.Edges } - return "" + return nil } -// Response that is received from getting a risk factor -type GetRiskFactorsResponse struct { +func (x *NetworkParameterConnection) GetPageInfo() *PageInfo { + if x != nil { + return x.PageInfo + } + return nil +} + +// Actual data regarding a checkpoint +type Checkpoint struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Risk factor emitted by the risk model for a given market. - RiskFactor *vega.RiskFactor `protobuf:"bytes,1,opt,name=risk_factor,json=riskFactor,proto3" json:"risk_factor,omitempty"` + // Hash of the checkpoint. + Hash string `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` + // Block hash at which the checkpoint is made. + BlockHash string `protobuf:"bytes,2,opt,name=block_hash,json=blockHash,proto3" json:"block_hash,omitempty"` + // Block number at which the checkpoint is made. + AtBlock uint64 `protobuf:"varint,3,opt,name=at_block,json=atBlock,proto3" json:"at_block,omitempty"` } -func (x *GetRiskFactorsResponse) Reset() { - *x = GetRiskFactorsResponse{} +func (x *Checkpoint) Reset() { + *x = Checkpoint{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[267] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -16442,13 +16451,13 @@ func (x *GetRiskFactorsResponse) Reset() { } } -func (x *GetRiskFactorsResponse) String() string { +func (x *Checkpoint) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetRiskFactorsResponse) ProtoMessage() {} +func (*Checkpoint) ProtoMessage() {} -func (x *GetRiskFactorsResponse) ProtoReflect() protoreflect.Message { +func (x *Checkpoint) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[267] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -16460,42 +16469,44 @@ func (x *GetRiskFactorsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetRiskFactorsResponse.ProtoReflect.Descriptor instead. -func (*GetRiskFactorsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use Checkpoint.ProtoReflect.Descriptor instead. +func (*Checkpoint) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{267} } -func (x *GetRiskFactorsResponse) GetRiskFactor() *vega.RiskFactor { +func (x *Checkpoint) GetHash() string { if x != nil { - return x.RiskFactor + return x.Hash } - return nil + return "" } -// Request to subscribe to a stream of one or more event types from the Vega event bus -type ObserveEventBusRequest struct { +func (x *Checkpoint) GetBlockHash() string { + if x != nil { + return x.BlockHash + } + return "" +} + +func (x *Checkpoint) GetAtBlock() uint64 { + if x != nil { + return x.AtBlock + } + return 0 +} + +// Request to get all checkpoints. Currently no fields, probably will be expanded to allow filtering data +type ListCheckpointsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // One or more types of event, required field. - Type []v1.BusEventType `protobuf:"varint,1,rep,packed,name=type,proto3,enum=vega.events.v1.BusEventType" json:"type,omitempty"` - // Market ID to filter for, optional field. If empty, no markets will be excluded from the stream. - MarketId string `protobuf:"bytes,2,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` - // Party ID to filter for, optional field. If empty, no parties will be excluded from the stream. - PartyId string `protobuf:"bytes,3,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` - // Batch size, - // If not specified, any events received will be sent immediately. If the client is not ready - // for the next data-set, data may be dropped a number of times, and eventually the stream is closed. - // if specified, the first batch will be sent when ready. To receive the next set of events, the client - // must write an `ObserveEventBatch` message on the stream to flush the buffer. - // If no message is received in 5 seconds, the stream is closed. - // Default: 0, send any and all events when they are available. - BatchSize int64 `protobuf:"varint,4,opt,name=batch_size,json=batchSize,proto3" json:"batch_size,omitempty"` + // Optional pagination information to limit the data that is returned. + Pagination *Pagination `protobuf:"bytes,1,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` } -func (x *ObserveEventBusRequest) Reset() { - *x = ObserveEventBusRequest{} +func (x *ListCheckpointsRequest) Reset() { + *x = ListCheckpointsRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[268] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -16503,13 +16514,13 @@ func (x *ObserveEventBusRequest) Reset() { } } -func (x *ObserveEventBusRequest) String() string { +func (x *ListCheckpointsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ObserveEventBusRequest) ProtoMessage() {} +func (*ListCheckpointsRequest) ProtoMessage() {} -func (x *ObserveEventBusRequest) ProtoReflect() protoreflect.Message { +func (x *ListCheckpointsRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[268] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -16521,51 +16532,30 @@ func (x *ObserveEventBusRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ObserveEventBusRequest.ProtoReflect.Descriptor instead. -func (*ObserveEventBusRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListCheckpointsRequest.ProtoReflect.Descriptor instead. +func (*ListCheckpointsRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{268} } -func (x *ObserveEventBusRequest) GetType() []v1.BusEventType { +func (x *ListCheckpointsRequest) GetPagination() *Pagination { if x != nil { - return x.Type + return x.Pagination } return nil } -func (x *ObserveEventBusRequest) GetMarketId() string { - if x != nil { - return x.MarketId - } - return "" -} - -func (x *ObserveEventBusRequest) GetPartyId() string { - if x != nil { - return x.PartyId - } - return "" -} - -func (x *ObserveEventBusRequest) GetBatchSize() int64 { - if x != nil { - return x.BatchSize - } - return 0 -} - -// Response to a subscribed stream of events from the Vega event bus -type ObserveEventBusResponse struct { +// Response message containing all checkpoints requested +type ListCheckpointsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // List of events that occurred on the Vega event bus. - Events []*v1.BusEvent `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"` + // Page of checkpoints data and corresponding page information. + Checkpoints *CheckpointsConnection `protobuf:"bytes,1,opt,name=checkpoints,proto3" json:"checkpoints,omitempty"` } -func (x *ObserveEventBusResponse) Reset() { - *x = ObserveEventBusResponse{} +func (x *ListCheckpointsResponse) Reset() { + *x = ListCheckpointsResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[269] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -16573,13 +16563,13 @@ func (x *ObserveEventBusResponse) Reset() { } } -func (x *ObserveEventBusResponse) String() string { +func (x *ListCheckpointsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ObserveEventBusResponse) ProtoMessage() {} +func (*ListCheckpointsResponse) ProtoMessage() {} -func (x *ObserveEventBusResponse) ProtoReflect() protoreflect.Message { +func (x *ListCheckpointsResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[269] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -16591,27 +16581,32 @@ func (x *ObserveEventBusResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ObserveEventBusResponse.ProtoReflect.Descriptor instead. -func (*ObserveEventBusResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListCheckpointsResponse.ProtoReflect.Descriptor instead. +func (*ListCheckpointsResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{269} } -func (x *ObserveEventBusResponse) GetEvents() []*v1.BusEvent { +func (x *ListCheckpointsResponse) GetCheckpoints() *CheckpointsConnection { if x != nil { - return x.Events + return x.Checkpoints } return nil } -// Request to subscribe to ledger movements -type ObserveLedgerMovementsRequest struct { +// Checkpoint data with the corresponding cursor. +type CheckpointEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Data relating to a single checkpoint generated by the Vega network. + Node *Checkpoint `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *ObserveLedgerMovementsRequest) Reset() { - *x = ObserveLedgerMovementsRequest{} +func (x *CheckpointEdge) Reset() { + *x = CheckpointEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[270] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -16619,13 +16614,13 @@ func (x *ObserveLedgerMovementsRequest) Reset() { } } -func (x *ObserveLedgerMovementsRequest) String() string { +func (x *CheckpointEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ObserveLedgerMovementsRequest) ProtoMessage() {} +func (*CheckpointEdge) ProtoMessage() {} -func (x *ObserveLedgerMovementsRequest) ProtoReflect() protoreflect.Message { +func (x *CheckpointEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[270] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -16637,23 +16632,39 @@ func (x *ObserveLedgerMovementsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ObserveLedgerMovementsRequest.ProtoReflect.Descriptor instead. -func (*ObserveLedgerMovementsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use CheckpointEdge.ProtoReflect.Descriptor instead. +func (*CheckpointEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{270} } -// Response from ledger movements subscription -type ObserveLedgerMovementsResponse struct { +func (x *CheckpointEdge) GetNode() *Checkpoint { + if x != nil { + return x.Node + } + return nil +} + +func (x *CheckpointEdge) GetCursor() string { + if x != nil { + return x.Cursor + } + return "" +} + +// Page of checkpoints data and corresponding page information +type CheckpointsConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Ledger movements data with list of ledger entries and post-transfer balances. - LedgerMovement *vega.LedgerMovement `protobuf:"bytes,1,opt,name=ledger_movement,json=ledgerMovement,proto3" json:"ledger_movement,omitempty"` + // Page of checkpoints data and their corresponding cursors. + Edges []*CheckpointEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *ObserveLedgerMovementsResponse) Reset() { - *x = ObserveLedgerMovementsResponse{} +func (x *CheckpointsConnection) Reset() { + *x = CheckpointsConnection{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[271] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -16661,13 +16672,13 @@ func (x *ObserveLedgerMovementsResponse) Reset() { } } -func (x *ObserveLedgerMovementsResponse) String() string { +func (x *CheckpointsConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ObserveLedgerMovementsResponse) ProtoMessage() {} +func (*CheckpointsConnection) ProtoMessage() {} -func (x *ObserveLedgerMovementsResponse) ProtoReflect() protoreflect.Message { +func (x *CheckpointsConnection) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[271] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -16679,32 +16690,39 @@ func (x *ObserveLedgerMovementsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ObserveLedgerMovementsResponse.ProtoReflect.Descriptor instead. -func (*ObserveLedgerMovementsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use CheckpointsConnection.ProtoReflect.Descriptor instead. +func (*CheckpointsConnection) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{271} } -func (x *ObserveLedgerMovementsResponse) GetLedgerMovement() *vega.LedgerMovement { +func (x *CheckpointsConnection) GetEdges() []*CheckpointEdge { if x != nil { - return x.LedgerMovement + return x.Edges } return nil } -// Request to list all key rotations -type ListKeyRotationsRequest struct { +func (x *CheckpointsConnection) GetPageInfo() *PageInfo { + if x != nil { + return x.PageInfo + } + return nil +} + +// Request to get stake +type GetStakeRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Node ID to get key rotations for, if provided. - NodeId *string `protobuf:"bytes,1,opt,name=node_id,json=nodeId,proto3,oneof" json:"node_id,omitempty"` + // Party ID for which the stake information is requested. + PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` // Optional pagination information to limit the data that is returned. Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` } -func (x *ListKeyRotationsRequest) Reset() { - *x = ListKeyRotationsRequest{} +func (x *GetStakeRequest) Reset() { + *x = GetStakeRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[272] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -16712,13 +16730,13 @@ func (x *ListKeyRotationsRequest) Reset() { } } -func (x *ListKeyRotationsRequest) String() string { +func (x *GetStakeRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListKeyRotationsRequest) ProtoMessage() {} +func (*GetStakeRequest) ProtoMessage() {} -func (x *ListKeyRotationsRequest) ProtoReflect() protoreflect.Message { +func (x *GetStakeRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[272] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -16730,37 +16748,39 @@ func (x *ListKeyRotationsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListKeyRotationsRequest.ProtoReflect.Descriptor instead. -func (*ListKeyRotationsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GetStakeRequest.ProtoReflect.Descriptor instead. +func (*GetStakeRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{272} } -func (x *ListKeyRotationsRequest) GetNodeId() string { - if x != nil && x.NodeId != nil { - return *x.NodeId +func (x *GetStakeRequest) GetPartyId() string { + if x != nil { + return x.PartyId } return "" } -func (x *ListKeyRotationsRequest) GetPagination() *Pagination { +func (x *GetStakeRequest) GetPagination() *Pagination { if x != nil { return x.Pagination } return nil } -// Response message containing Vega key rotations -type ListKeyRotationsResponse struct { +// Response that is received from requesting stake information +type GetStakeResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of key rotations data and corresponding page information. - Rotations *KeyRotationConnection `protobuf:"bytes,1,opt,name=rotations,proto3" json:"rotations,omitempty"` + // Current stake available information. + CurrentStakeAvailable string `protobuf:"bytes,1,opt,name=current_stake_available,json=currentStakeAvailable,proto3" json:"current_stake_available,omitempty"` + // Paged list of stake data with corresponding page information. + StakeLinkings *StakesConnection `protobuf:"bytes,2,opt,name=stake_linkings,json=stakeLinkings,proto3" json:"stake_linkings,omitempty"` } -func (x *ListKeyRotationsResponse) Reset() { - *x = ListKeyRotationsResponse{} +func (x *GetStakeResponse) Reset() { + *x = GetStakeResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[273] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -16768,13 +16788,13 @@ func (x *ListKeyRotationsResponse) Reset() { } } -func (x *ListKeyRotationsResponse) String() string { +func (x *GetStakeResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListKeyRotationsResponse) ProtoMessage() {} +func (*GetStakeResponse) ProtoMessage() {} -func (x *ListKeyRotationsResponse) ProtoReflect() protoreflect.Message { +func (x *GetStakeResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[273] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -16786,32 +16806,39 @@ func (x *ListKeyRotationsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListKeyRotationsResponse.ProtoReflect.Descriptor instead. -func (*ListKeyRotationsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GetStakeResponse.ProtoReflect.Descriptor instead. +func (*GetStakeResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{273} } -func (x *ListKeyRotationsResponse) GetRotations() *KeyRotationConnection { +func (x *GetStakeResponse) GetCurrentStakeAvailable() string { if x != nil { - return x.Rotations + return x.CurrentStakeAvailable + } + return "" +} + +func (x *GetStakeResponse) GetStakeLinkings() *StakesConnection { + if x != nil { + return x.StakeLinkings } return nil } -// Key rotation data with the corresponding cursor. -type KeyRotationEdge struct { +// Stake linking data with the corresponding cursor. +type StakeLinkingEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Data relating to a key rotation that was performed by a node on the Vega network. - Node *v1.KeyRotation `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Stake linking representing the intent from a party to deposit. + Node *v1.StakeLinking `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` // Cursor that can be used to fetch further pages. Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *KeyRotationEdge) Reset() { - *x = KeyRotationEdge{} +func (x *StakeLinkingEdge) Reset() { + *x = StakeLinkingEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[274] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -16819,13 +16846,13 @@ func (x *KeyRotationEdge) Reset() { } } -func (x *KeyRotationEdge) String() string { +func (x *StakeLinkingEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*KeyRotationEdge) ProtoMessage() {} +func (*StakeLinkingEdge) ProtoMessage() {} -func (x *KeyRotationEdge) ProtoReflect() protoreflect.Message { +func (x *StakeLinkingEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[274] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -16837,39 +16864,39 @@ func (x *KeyRotationEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use KeyRotationEdge.ProtoReflect.Descriptor instead. -func (*KeyRotationEdge) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{274} +// Deprecated: Use StakeLinkingEdge.ProtoReflect.Descriptor instead. +func (*StakeLinkingEdge) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{274} } -func (x *KeyRotationEdge) GetNode() *v1.KeyRotation { +func (x *StakeLinkingEdge) GetNode() *v1.StakeLinking { if x != nil { return x.Node } return nil } -func (x *KeyRotationEdge) GetCursor() string { +func (x *StakeLinkingEdge) GetCursor() string { if x != nil { return x.Cursor } return "" } -// Page of key rotations data and corresponding page information -type KeyRotationConnection struct { +// Page of stake data and corresponding page information. +type StakesConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of key rotation data and their corresponding cursors. - Edges []*KeyRotationEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page of stake data and their corresponding cursors. + Edges []*StakeLinkingEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` // Page information that is used for fetching further pages. PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *KeyRotationConnection) Reset() { - *x = KeyRotationConnection{} +func (x *StakesConnection) Reset() { + *x = StakesConnection{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[275] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -16877,13 +16904,13 @@ func (x *KeyRotationConnection) Reset() { } } -func (x *KeyRotationConnection) String() string { +func (x *StakesConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*KeyRotationConnection) ProtoMessage() {} +func (*StakesConnection) ProtoMessage() {} -func (x *KeyRotationConnection) ProtoReflect() protoreflect.Message { +func (x *StakesConnection) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[275] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -16895,39 +16922,37 @@ func (x *KeyRotationConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use KeyRotationConnection.ProtoReflect.Descriptor instead. -func (*KeyRotationConnection) Descriptor() ([]byte, []int) { +// Deprecated: Use StakesConnection.ProtoReflect.Descriptor instead. +func (*StakesConnection) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{275} } -func (x *KeyRotationConnection) GetEdges() []*KeyRotationEdge { +func (x *StakesConnection) GetEdges() []*StakeLinkingEdge { if x != nil { return x.Edges } return nil } -func (x *KeyRotationConnection) GetPageInfo() *PageInfo { +func (x *StakesConnection) GetPageInfo() *PageInfo { if x != nil { return x.PageInfo } return nil } -// Request to list ethereum key rotations for nodes, optionally filtered by node -type ListEthereumKeyRotationsRequest struct { +// Request to get risk factor +type GetRiskFactorsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Node ID to get the rotation for, if provided. - NodeId *string `protobuf:"bytes,1,opt,name=node_id,json=nodeId,proto3,oneof" json:"node_id,omitempty"` - // Optional pagination information to limit the data that is returned. - Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + // Market ID to get the risk factor for. + MarketId string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` } -func (x *ListEthereumKeyRotationsRequest) Reset() { - *x = ListEthereumKeyRotationsRequest{} +func (x *GetRiskFactorsRequest) Reset() { + *x = GetRiskFactorsRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[276] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -16935,13 +16960,13 @@ func (x *ListEthereumKeyRotationsRequest) Reset() { } } -func (x *ListEthereumKeyRotationsRequest) String() string { +func (x *GetRiskFactorsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListEthereumKeyRotationsRequest) ProtoMessage() {} +func (*GetRiskFactorsRequest) ProtoMessage() {} -func (x *ListEthereumKeyRotationsRequest) ProtoReflect() protoreflect.Message { +func (x *GetRiskFactorsRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[276] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -16953,37 +16978,30 @@ func (x *ListEthereumKeyRotationsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListEthereumKeyRotationsRequest.ProtoReflect.Descriptor instead. -func (*ListEthereumKeyRotationsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GetRiskFactorsRequest.ProtoReflect.Descriptor instead. +func (*GetRiskFactorsRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{276} } -func (x *ListEthereumKeyRotationsRequest) GetNodeId() string { - if x != nil && x.NodeId != nil { - return *x.NodeId - } - return "" -} - -func (x *ListEthereumKeyRotationsRequest) GetPagination() *Pagination { +func (x *GetRiskFactorsRequest) GetMarketId() string { if x != nil { - return x.Pagination + return x.MarketId } - return nil + return "" } -// Response message containing Ethereum key rotations -type ListEthereumKeyRotationsResponse struct { +// Response that is received from getting a risk factor +type GetRiskFactorsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of Ethereum key rotations data and corresponding page information. - KeyRotations *EthereumKeyRotationsConnection `protobuf:"bytes,1,opt,name=key_rotations,json=keyRotations,proto3" json:"key_rotations,omitempty"` + // Risk factor emitted by the risk model for a given market. + RiskFactor *vega.RiskFactor `protobuf:"bytes,1,opt,name=risk_factor,json=riskFactor,proto3" json:"risk_factor,omitempty"` } -func (x *ListEthereumKeyRotationsResponse) Reset() { - *x = ListEthereumKeyRotationsResponse{} +func (x *GetRiskFactorsResponse) Reset() { + *x = GetRiskFactorsResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[277] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -16991,13 +17009,13 @@ func (x *ListEthereumKeyRotationsResponse) Reset() { } } -func (x *ListEthereumKeyRotationsResponse) String() string { +func (x *GetRiskFactorsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListEthereumKeyRotationsResponse) ProtoMessage() {} +func (*GetRiskFactorsResponse) ProtoMessage() {} -func (x *ListEthereumKeyRotationsResponse) ProtoReflect() protoreflect.Message { +func (x *GetRiskFactorsResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[277] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -17009,32 +17027,42 @@ func (x *ListEthereumKeyRotationsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListEthereumKeyRotationsResponse.ProtoReflect.Descriptor instead. -func (*ListEthereumKeyRotationsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GetRiskFactorsResponse.ProtoReflect.Descriptor instead. +func (*GetRiskFactorsResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{277} } -func (x *ListEthereumKeyRotationsResponse) GetKeyRotations() *EthereumKeyRotationsConnection { +func (x *GetRiskFactorsResponse) GetRiskFactor() *vega.RiskFactor { if x != nil { - return x.KeyRotations + return x.RiskFactor } return nil } -// Page of Ethereum key rotations data and corresponding page information -type EthereumKeyRotationsConnection struct { +// Request to subscribe to a stream of one or more event types from the Vega event bus +type ObserveEventBusRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of Ethereum key rotations data and their corresponding cursors. - Edges []*EthereumKeyRotationEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + // One or more types of event, required field. + Type []v1.BusEventType `protobuf:"varint,1,rep,packed,name=type,proto3,enum=vega.events.v1.BusEventType" json:"type,omitempty"` + // Market ID to filter for, optional field. If empty, no markets will be excluded from the stream. + MarketId string `protobuf:"bytes,2,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` + // Party ID to filter for, optional field. If empty, no parties will be excluded from the stream. + PartyId string `protobuf:"bytes,3,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` + // Batch size, + // If not specified, any events received will be sent immediately. If the client is not ready + // for the next data-set, data may be dropped a number of times, and eventually the stream is closed. + // if specified, the first batch will be sent when ready. To receive the next set of events, the client + // must write an `ObserveEventBatch` message on the stream to flush the buffer. + // If no message is received in 5 seconds, the stream is closed. + // Default: 0, send any and all events when they are available. + BatchSize int64 `protobuf:"varint,4,opt,name=batch_size,json=batchSize,proto3" json:"batch_size,omitempty"` } -func (x *EthereumKeyRotationsConnection) Reset() { - *x = EthereumKeyRotationsConnection{} +func (x *ObserveEventBusRequest) Reset() { + *x = ObserveEventBusRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[278] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -17042,13 +17070,13 @@ func (x *EthereumKeyRotationsConnection) Reset() { } } -func (x *EthereumKeyRotationsConnection) String() string { +func (x *ObserveEventBusRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*EthereumKeyRotationsConnection) ProtoMessage() {} +func (*ObserveEventBusRequest) ProtoMessage() {} -func (x *EthereumKeyRotationsConnection) ProtoReflect() protoreflect.Message { +func (x *ObserveEventBusRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[278] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -17060,39 +17088,51 @@ func (x *EthereumKeyRotationsConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use EthereumKeyRotationsConnection.ProtoReflect.Descriptor instead. -func (*EthereumKeyRotationsConnection) Descriptor() ([]byte, []int) { +// Deprecated: Use ObserveEventBusRequest.ProtoReflect.Descriptor instead. +func (*ObserveEventBusRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{278} } -func (x *EthereumKeyRotationsConnection) GetEdges() []*EthereumKeyRotationEdge { +func (x *ObserveEventBusRequest) GetType() []v1.BusEventType { if x != nil { - return x.Edges + return x.Type } return nil } -func (x *EthereumKeyRotationsConnection) GetPageInfo() *PageInfo { +func (x *ObserveEventBusRequest) GetMarketId() string { if x != nil { - return x.PageInfo + return x.MarketId } - return nil + return "" } -// Ethereum key rotation data with the corresponding cursor. -type EthereumKeyRotationEdge struct { +func (x *ObserveEventBusRequest) GetPartyId() string { + if x != nil { + return x.PartyId + } + return "" +} + +func (x *ObserveEventBusRequest) GetBatchSize() int64 { + if x != nil { + return x.BatchSize + } + return 0 +} + +// Response to a subscribed stream of events from the Vega event bus +type ObserveEventBusResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Data relating to an Ethereum key rotation performed by a node on the Vega network. - Node *v1.EthereumKeyRotation `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // List of events that occurred on the Vega event bus. + Events []*v1.BusEvent `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"` } -func (x *EthereumKeyRotationEdge) Reset() { - *x = EthereumKeyRotationEdge{} +func (x *ObserveEventBusResponse) Reset() { + *x = ObserveEventBusResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[279] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -17100,13 +17140,13 @@ func (x *EthereumKeyRotationEdge) Reset() { } } -func (x *EthereumKeyRotationEdge) String() string { +func (x *ObserveEventBusResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*EthereumKeyRotationEdge) ProtoMessage() {} +func (*ObserveEventBusResponse) ProtoMessage() {} -func (x *EthereumKeyRotationEdge) ProtoReflect() protoreflect.Message { +func (x *ObserveEventBusResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[279] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -17118,34 +17158,27 @@ func (x *EthereumKeyRotationEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use EthereumKeyRotationEdge.ProtoReflect.Descriptor instead. -func (*EthereumKeyRotationEdge) Descriptor() ([]byte, []int) { +// Deprecated: Use ObserveEventBusResponse.ProtoReflect.Descriptor instead. +func (*ObserveEventBusResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{279} } -func (x *EthereumKeyRotationEdge) GetNode() *v1.EthereumKeyRotation { +func (x *ObserveEventBusResponse) GetEvents() []*v1.BusEvent { if x != nil { - return x.Node + return x.Events } return nil } -func (x *EthereumKeyRotationEdge) GetCursor() string { - if x != nil { - return x.Cursor - } - return "" -} - -// Request to get the current time of the Vega network -type GetVegaTimeRequest struct { +// Request to subscribe to ledger movements +type ObserveLedgerMovementsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *GetVegaTimeRequest) Reset() { - *x = GetVegaTimeRequest{} +func (x *ObserveLedgerMovementsRequest) Reset() { + *x = ObserveLedgerMovementsRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[280] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -17153,13 +17186,13 @@ func (x *GetVegaTimeRequest) Reset() { } } -func (x *GetVegaTimeRequest) String() string { +func (x *ObserveLedgerMovementsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetVegaTimeRequest) ProtoMessage() {} +func (*ObserveLedgerMovementsRequest) ProtoMessage() {} -func (x *GetVegaTimeRequest) ProtoReflect() protoreflect.Message { +func (x *ObserveLedgerMovementsRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[280] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -17171,24 +17204,23 @@ func (x *GetVegaTimeRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetVegaTimeRequest.ProtoReflect.Descriptor instead. -func (*GetVegaTimeRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ObserveLedgerMovementsRequest.ProtoReflect.Descriptor instead. +func (*ObserveLedgerMovementsRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{280} } -// Response for the current consensus coordinated time on the Vega network, referred to as "VegaTime" -type GetVegaTimeResponse struct { +// Response from ledger movements subscription +type ObserveLedgerMovementsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Timestamp representation of current VegaTime as represented in Unix nanoseconds, for example - // `1580473859111222333` corresponds to `2020-01-31T12:30:59.111222333Z`. - Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + // Ledger movements data with list of ledger entries and post-transfer balances. + LedgerMovement *vega.LedgerMovement `protobuf:"bytes,1,opt,name=ledger_movement,json=ledgerMovement,proto3" json:"ledger_movement,omitempty"` } -func (x *GetVegaTimeResponse) Reset() { - *x = GetVegaTimeResponse{} +func (x *ObserveLedgerMovementsResponse) Reset() { + *x = ObserveLedgerMovementsResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[281] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -17196,13 +17228,13 @@ func (x *GetVegaTimeResponse) Reset() { } } -func (x *GetVegaTimeResponse) String() string { +func (x *ObserveLedgerMovementsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetVegaTimeResponse) ProtoMessage() {} +func (*ObserveLedgerMovementsResponse) ProtoMessage() {} -func (x *GetVegaTimeResponse) ProtoReflect() protoreflect.Message { +func (x *ObserveLedgerMovementsResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[281] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -17214,33 +17246,32 @@ func (x *GetVegaTimeResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetVegaTimeResponse.ProtoReflect.Descriptor instead. -func (*GetVegaTimeResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ObserveLedgerMovementsResponse.ProtoReflect.Descriptor instead. +func (*ObserveLedgerMovementsResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{281} } -func (x *GetVegaTimeResponse) GetTimestamp() int64 { +func (x *ObserveLedgerMovementsResponse) GetLedgerMovement() *vega.LedgerMovement { if x != nil { - return x.Timestamp + return x.LedgerMovement } - return 0 + return nil } -// Date range for queries that can return historical data -// Timestamps should be provided as unix time in Unix nanoseconds and are inclusive. -type DateRange struct { +// Request to list all key rotations +type ListKeyRotationsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Timestamp in Unix nanoseconds indicating the start of the date range. - StartTimestamp *int64 `protobuf:"varint,1,opt,name=start_timestamp,json=startTimestamp,proto3,oneof" json:"start_timestamp,omitempty"` - // Timestamp in Unix nanoseconds indicating the end of the date range. - EndTimestamp *int64 `protobuf:"varint,2,opt,name=end_timestamp,json=endTimestamp,proto3,oneof" json:"end_timestamp,omitempty"` + // Node ID to get key rotations for, if provided. + NodeId *string `protobuf:"bytes,1,opt,name=node_id,json=nodeId,proto3,oneof" json:"node_id,omitempty"` + // Optional pagination information to limit the data that is returned. + Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` } -func (x *DateRange) Reset() { - *x = DateRange{} +func (x *ListKeyRotationsRequest) Reset() { + *x = ListKeyRotationsRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[282] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -17248,13 +17279,13 @@ func (x *DateRange) Reset() { } } -func (x *DateRange) String() string { +func (x *ListKeyRotationsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DateRange) ProtoMessage() {} +func (*ListKeyRotationsRequest) ProtoMessage() {} -func (x *DateRange) ProtoReflect() protoreflect.Message { +func (x *ListKeyRotationsRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[282] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -17266,34 +17297,37 @@ func (x *DateRange) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DateRange.ProtoReflect.Descriptor instead. -func (*DateRange) Descriptor() ([]byte, []int) { +// Deprecated: Use ListKeyRotationsRequest.ProtoReflect.Descriptor instead. +func (*ListKeyRotationsRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{282} } -func (x *DateRange) GetStartTimestamp() int64 { - if x != nil && x.StartTimestamp != nil { - return *x.StartTimestamp +func (x *ListKeyRotationsRequest) GetNodeId() string { + if x != nil && x.NodeId != nil { + return *x.NodeId } - return 0 + return "" } -func (x *DateRange) GetEndTimestamp() int64 { - if x != nil && x.EndTimestamp != nil { - return *x.EndTimestamp +func (x *ListKeyRotationsRequest) GetPagination() *Pagination { + if x != nil { + return x.Pagination } - return 0 + return nil } -// Request to get protocol upgrade status -type GetProtocolUpgradeStatusRequest struct { +// Response message containing Vega key rotations +type ListKeyRotationsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Page of key rotations data and corresponding page information. + Rotations *KeyRotationConnection `protobuf:"bytes,1,opt,name=rotations,proto3" json:"rotations,omitempty"` } -func (x *GetProtocolUpgradeStatusRequest) Reset() { - *x = GetProtocolUpgradeStatusRequest{} +func (x *ListKeyRotationsResponse) Reset() { + *x = ListKeyRotationsResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[283] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -17301,13 +17335,13 @@ func (x *GetProtocolUpgradeStatusRequest) Reset() { } } -func (x *GetProtocolUpgradeStatusRequest) String() string { +func (x *ListKeyRotationsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetProtocolUpgradeStatusRequest) ProtoMessage() {} +func (*ListKeyRotationsResponse) ProtoMessage() {} -func (x *GetProtocolUpgradeStatusRequest) ProtoReflect() protoreflect.Message { +func (x *ListKeyRotationsResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[283] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -17319,23 +17353,32 @@ func (x *GetProtocolUpgradeStatusRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetProtocolUpgradeStatusRequest.ProtoReflect.Descriptor instead. -func (*GetProtocolUpgradeStatusRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListKeyRotationsResponse.ProtoReflect.Descriptor instead. +func (*ListKeyRotationsResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{283} } -// Response from getting protocol upgrade status -type GetProtocolUpgradeStatusResponse struct { +func (x *ListKeyRotationsResponse) GetRotations() *KeyRotationConnection { + if x != nil { + return x.Rotations + } + return nil +} + +// Key rotation data with the corresponding cursor. +type KeyRotationEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Indicator if the upgrade is ready or not. - Ready bool `protobuf:"varint,1,opt,name=ready,proto3" json:"ready,omitempty"` + // Data relating to a key rotation that was performed by a node on the Vega network. + Node *v1.KeyRotation `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *GetProtocolUpgradeStatusResponse) Reset() { - *x = GetProtocolUpgradeStatusResponse{} +func (x *KeyRotationEdge) Reset() { + *x = KeyRotationEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[284] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -17343,13 +17386,13 @@ func (x *GetProtocolUpgradeStatusResponse) Reset() { } } -func (x *GetProtocolUpgradeStatusResponse) String() string { +func (x *KeyRotationEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetProtocolUpgradeStatusResponse) ProtoMessage() {} +func (*KeyRotationEdge) ProtoMessage() {} -func (x *GetProtocolUpgradeStatusResponse) ProtoReflect() protoreflect.Message { +func (x *KeyRotationEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[284] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -17361,34 +17404,39 @@ func (x *GetProtocolUpgradeStatusResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetProtocolUpgradeStatusResponse.ProtoReflect.Descriptor instead. -func (*GetProtocolUpgradeStatusResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use KeyRotationEdge.ProtoReflect.Descriptor instead. +func (*KeyRotationEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{284} } -func (x *GetProtocolUpgradeStatusResponse) GetReady() bool { +func (x *KeyRotationEdge) GetNode() *v1.KeyRotation { if x != nil { - return x.Ready + return x.Node } - return false + return nil } -// Request type for ListProtocolUpgradeProposals; fetches a paginated list of protocol upgrade proposals -type ListProtocolUpgradeProposalsRequest struct { +func (x *KeyRotationEdge) GetCursor() string { + if x != nil { + return x.Cursor + } + return "" +} + +// Page of key rotations data and corresponding page information +type KeyRotationConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Restrict protocol upgrade proposals to those with the given status. - Status *v1.ProtocolUpgradeProposalStatus `protobuf:"varint,1,opt,name=status,proto3,enum=vega.events.v1.ProtocolUpgradeProposalStatus,oneof" json:"status,omitempty"` - // Restrict protocol upgrade proposals to those approved by the given node ID. - ApprovedBy *string `protobuf:"bytes,2,opt,name=approved_by,json=approvedBy,proto3,oneof" json:"approved_by,omitempty"` - // Pagination controls. - Pagination *Pagination `protobuf:"bytes,3,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + // Page of key rotation data and their corresponding cursors. + Edges []*KeyRotationEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *ListProtocolUpgradeProposalsRequest) Reset() { - *x = ListProtocolUpgradeProposalsRequest{} +func (x *KeyRotationConnection) Reset() { + *x = KeyRotationConnection{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[285] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -17396,13 +17444,13 @@ func (x *ListProtocolUpgradeProposalsRequest) Reset() { } } -func (x *ListProtocolUpgradeProposalsRequest) String() string { +func (x *KeyRotationConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListProtocolUpgradeProposalsRequest) ProtoMessage() {} +func (*KeyRotationConnection) ProtoMessage() {} -func (x *ListProtocolUpgradeProposalsRequest) ProtoReflect() protoreflect.Message { +func (x *KeyRotationConnection) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[285] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -17414,44 +17462,39 @@ func (x *ListProtocolUpgradeProposalsRequest) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use ListProtocolUpgradeProposalsRequest.ProtoReflect.Descriptor instead. -func (*ListProtocolUpgradeProposalsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use KeyRotationConnection.ProtoReflect.Descriptor instead. +func (*KeyRotationConnection) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{285} } -func (x *ListProtocolUpgradeProposalsRequest) GetStatus() v1.ProtocolUpgradeProposalStatus { - if x != nil && x.Status != nil { - return *x.Status - } - return v1.ProtocolUpgradeProposalStatus(0) -} - -func (x *ListProtocolUpgradeProposalsRequest) GetApprovedBy() string { - if x != nil && x.ApprovedBy != nil { - return *x.ApprovedBy +func (x *KeyRotationConnection) GetEdges() []*KeyRotationEdge { + if x != nil { + return x.Edges } - return "" + return nil } -func (x *ListProtocolUpgradeProposalsRequest) GetPagination() *Pagination { +func (x *KeyRotationConnection) GetPageInfo() *PageInfo { if x != nil { - return x.Pagination + return x.PageInfo } return nil } -// Response type from a ListProtocolUpgradeProposals RPC call; a paginated list of protocol upgrade proposals -type ListProtocolUpgradeProposalsResponse struct { +// Request to list ethereum key rotations for nodes, optionally filtered by node +type ListEthereumKeyRotationsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of protocol upgrade proposals and corresponding page information. - ProtocolUpgradeProposals *ProtocolUpgradeProposalConnection `protobuf:"bytes,1,opt,name=protocol_upgrade_proposals,json=protocolUpgradeProposals,proto3" json:"protocol_upgrade_proposals,omitempty"` + // Node ID to get the rotation for, if provided. + NodeId *string `protobuf:"bytes,1,opt,name=node_id,json=nodeId,proto3,oneof" json:"node_id,omitempty"` + // Optional pagination information to limit the data that is returned. + Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` } -func (x *ListProtocolUpgradeProposalsResponse) Reset() { - *x = ListProtocolUpgradeProposalsResponse{} +func (x *ListEthereumKeyRotationsRequest) Reset() { + *x = ListEthereumKeyRotationsRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[286] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -17459,13 +17502,13 @@ func (x *ListProtocolUpgradeProposalsResponse) Reset() { } } -func (x *ListProtocolUpgradeProposalsResponse) String() string { +func (x *ListEthereumKeyRotationsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListProtocolUpgradeProposalsResponse) ProtoMessage() {} +func (*ListEthereumKeyRotationsRequest) ProtoMessage() {} -func (x *ListProtocolUpgradeProposalsResponse) ProtoReflect() protoreflect.Message { +func (x *ListEthereumKeyRotationsRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[286] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -17477,32 +17520,37 @@ func (x *ListProtocolUpgradeProposalsResponse) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use ListProtocolUpgradeProposalsResponse.ProtoReflect.Descriptor instead. -func (*ListProtocolUpgradeProposalsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListEthereumKeyRotationsRequest.ProtoReflect.Descriptor instead. +func (*ListEthereumKeyRotationsRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{286} } -func (x *ListProtocolUpgradeProposalsResponse) GetProtocolUpgradeProposals() *ProtocolUpgradeProposalConnection { +func (x *ListEthereumKeyRotationsRequest) GetNodeId() string { + if x != nil && x.NodeId != nil { + return *x.NodeId + } + return "" +} + +func (x *ListEthereumKeyRotationsRequest) GetPagination() *Pagination { if x != nil { - return x.ProtocolUpgradeProposals + return x.Pagination } return nil } -// Page of protocol upgrade proposals and corresponding page information -type ProtocolUpgradeProposalConnection struct { +// Response message containing Ethereum key rotations +type ListEthereumKeyRotationsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of protocol upgrade proposals data and their corresponding cursors. - Edges []*ProtocolUpgradeProposalEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + // Page of Ethereum key rotations data and corresponding page information. + KeyRotations *EthereumKeyRotationsConnection `protobuf:"bytes,1,opt,name=key_rotations,json=keyRotations,proto3" json:"key_rotations,omitempty"` } -func (x *ProtocolUpgradeProposalConnection) Reset() { - *x = ProtocolUpgradeProposalConnection{} +func (x *ListEthereumKeyRotationsResponse) Reset() { + *x = ListEthereumKeyRotationsResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[287] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -17510,13 +17558,13 @@ func (x *ProtocolUpgradeProposalConnection) Reset() { } } -func (x *ProtocolUpgradeProposalConnection) String() string { +func (x *ListEthereumKeyRotationsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ProtocolUpgradeProposalConnection) ProtoMessage() {} +func (*ListEthereumKeyRotationsResponse) ProtoMessage() {} -func (x *ProtocolUpgradeProposalConnection) ProtoReflect() protoreflect.Message { +func (x *ListEthereumKeyRotationsResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[287] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -17528,39 +17576,32 @@ func (x *ProtocolUpgradeProposalConnection) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use ProtocolUpgradeProposalConnection.ProtoReflect.Descriptor instead. -func (*ProtocolUpgradeProposalConnection) Descriptor() ([]byte, []int) { +// Deprecated: Use ListEthereumKeyRotationsResponse.ProtoReflect.Descriptor instead. +func (*ListEthereumKeyRotationsResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{287} } -func (x *ProtocolUpgradeProposalConnection) GetEdges() []*ProtocolUpgradeProposalEdge { - if x != nil { - return x.Edges - } - return nil -} - -func (x *ProtocolUpgradeProposalConnection) GetPageInfo() *PageInfo { +func (x *ListEthereumKeyRotationsResponse) GetKeyRotations() *EthereumKeyRotationsConnection { if x != nil { - return x.PageInfo + return x.KeyRotations } return nil } -// Protocol upgrade proposal data with the corresponding cursor. -type ProtocolUpgradeProposalEdge struct { +// Page of Ethereum key rotations data and corresponding page information +type EthereumKeyRotationsConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Protocol upgrade proposal data. - Node *v1.ProtocolUpgradeEvent `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Page of Ethereum key rotations data and their corresponding cursors. + Edges []*EthereumKeyRotationEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *ProtocolUpgradeProposalEdge) Reset() { - *x = ProtocolUpgradeProposalEdge{} +func (x *EthereumKeyRotationsConnection) Reset() { + *x = EthereumKeyRotationsConnection{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[288] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -17568,13 +17609,13 @@ func (x *ProtocolUpgradeProposalEdge) Reset() { } } -func (x *ProtocolUpgradeProposalEdge) String() string { +func (x *EthereumKeyRotationsConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ProtocolUpgradeProposalEdge) ProtoMessage() {} +func (*EthereumKeyRotationsConnection) ProtoMessage() {} -func (x *ProtocolUpgradeProposalEdge) ProtoReflect() protoreflect.Message { +func (x *EthereumKeyRotationsConnection) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[288] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -17586,51 +17627,53 @@ func (x *ProtocolUpgradeProposalEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ProtocolUpgradeProposalEdge.ProtoReflect.Descriptor instead. -func (*ProtocolUpgradeProposalEdge) Descriptor() ([]byte, []int) { +// Deprecated: Use EthereumKeyRotationsConnection.ProtoReflect.Descriptor instead. +func (*EthereumKeyRotationsConnection) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{288} } -func (x *ProtocolUpgradeProposalEdge) GetNode() *v1.ProtocolUpgradeEvent { +func (x *EthereumKeyRotationsConnection) GetEdges() []*EthereumKeyRotationEdge { if x != nil { - return x.Node + return x.Edges } return nil } -func (x *ProtocolUpgradeProposalEdge) GetCursor() string { +func (x *EthereumKeyRotationsConnection) GetPageInfo() *PageInfo { if x != nil { - return x.Cursor + return x.PageInfo } - return "" + return nil } -// Request type for ListCoreSnapshots; fetches a paginated list of the core snapshots. -type ListCoreSnapshotsRequest struct { +// Ethereum key rotation data with the corresponding cursor. +type EthereumKeyRotationEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Optional pagination information to limit the data that is returned. - Pagination *Pagination `protobuf:"bytes,1,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + // Data relating to an Ethereum key rotation performed by a node on the Vega network. + Node *v1.EthereumKeyRotation `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *ListCoreSnapshotsRequest) Reset() { - *x = ListCoreSnapshotsRequest{} - if protoimpl.UnsafeEnabled { +func (x *EthereumKeyRotationEdge) Reset() { + *x = EthereumKeyRotationEdge{} + if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[289] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListCoreSnapshotsRequest) String() string { +func (x *EthereumKeyRotationEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListCoreSnapshotsRequest) ProtoMessage() {} +func (*EthereumKeyRotationEdge) ProtoMessage() {} -func (x *ListCoreSnapshotsRequest) ProtoReflect() protoreflect.Message { +func (x *EthereumKeyRotationEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[289] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -17642,30 +17685,34 @@ func (x *ListCoreSnapshotsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListCoreSnapshotsRequest.ProtoReflect.Descriptor instead. -func (*ListCoreSnapshotsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use EthereumKeyRotationEdge.ProtoReflect.Descriptor instead. +func (*EthereumKeyRotationEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{289} } -func (x *ListCoreSnapshotsRequest) GetPagination() *Pagination { +func (x *EthereumKeyRotationEdge) GetNode() *v1.EthereumKeyRotation { if x != nil { - return x.Pagination + return x.Node } return nil } -// Response from a ListCoreSnapshots RPC call; a paginated list of the core snapshots. -type ListCoreSnapshotsResponse struct { +func (x *EthereumKeyRotationEdge) GetCursor() string { + if x != nil { + return x.Cursor + } + return "" +} + +// Request to get the current time of the Vega network +type GetVegaTimeRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // Page of core snapshot data and corresponding page information. - CoreSnapshots *CoreSnapshotConnection `protobuf:"bytes,1,opt,name=core_snapshots,json=coreSnapshots,proto3" json:"core_snapshots,omitempty"` } -func (x *ListCoreSnapshotsResponse) Reset() { - *x = ListCoreSnapshotsResponse{} +func (x *GetVegaTimeRequest) Reset() { + *x = GetVegaTimeRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[290] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -17673,13 +17720,13 @@ func (x *ListCoreSnapshotsResponse) Reset() { } } -func (x *ListCoreSnapshotsResponse) String() string { +func (x *GetVegaTimeRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListCoreSnapshotsResponse) ProtoMessage() {} +func (*GetVegaTimeRequest) ProtoMessage() {} -func (x *ListCoreSnapshotsResponse) ProtoReflect() protoreflect.Message { +func (x *GetVegaTimeRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[290] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -17691,32 +17738,24 @@ func (x *ListCoreSnapshotsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListCoreSnapshotsResponse.ProtoReflect.Descriptor instead. -func (*ListCoreSnapshotsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use GetVegaTimeRequest.ProtoReflect.Descriptor instead. +func (*GetVegaTimeRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{290} } -func (x *ListCoreSnapshotsResponse) GetCoreSnapshots() *CoreSnapshotConnection { - if x != nil { - return x.CoreSnapshots - } - return nil -} - -// Page of core snapshot data and corresponding page information. -type CoreSnapshotConnection struct { +// Response for the current consensus coordinated time on the Vega network, referred to as "VegaTime" +type GetVegaTimeResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of core snapshot data and their corresponding cursors. - Edges []*CoreSnapshotEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + // Timestamp representation of current VegaTime as represented in Unix nanoseconds, for example + // `1580473859111222333` corresponds to `2020-01-31T12:30:59.111222333Z`. + Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` } -func (x *CoreSnapshotConnection) Reset() { - *x = CoreSnapshotConnection{} +func (x *GetVegaTimeResponse) Reset() { + *x = GetVegaTimeResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[291] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -17724,13 +17763,13 @@ func (x *CoreSnapshotConnection) Reset() { } } -func (x *CoreSnapshotConnection) String() string { +func (x *GetVegaTimeResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CoreSnapshotConnection) ProtoMessage() {} +func (*GetVegaTimeResponse) ProtoMessage() {} -func (x *CoreSnapshotConnection) ProtoReflect() protoreflect.Message { +func (x *GetVegaTimeResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[291] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -17742,39 +17781,33 @@ func (x *CoreSnapshotConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CoreSnapshotConnection.ProtoReflect.Descriptor instead. -func (*CoreSnapshotConnection) Descriptor() ([]byte, []int) { +// Deprecated: Use GetVegaTimeResponse.ProtoReflect.Descriptor instead. +func (*GetVegaTimeResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{291} } -func (x *CoreSnapshotConnection) GetEdges() []*CoreSnapshotEdge { - if x != nil { - return x.Edges - } - return nil -} - -func (x *CoreSnapshotConnection) GetPageInfo() *PageInfo { +func (x *GetVegaTimeResponse) GetTimestamp() int64 { if x != nil { - return x.PageInfo + return x.Timestamp } - return nil + return 0 } -// Core snapshot data with the corresponding cursor. -type CoreSnapshotEdge struct { +// Date range for queries that can return historical data +// Timestamps should be provided as unix time in Unix nanoseconds and are inclusive. +type DateRange struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Core snapshot data. - Node *v1.CoreSnapshotData `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Timestamp in Unix nanoseconds indicating the start of the date range. + StartTimestamp *int64 `protobuf:"varint,1,opt,name=start_timestamp,json=startTimestamp,proto3,oneof" json:"start_timestamp,omitempty"` + // Timestamp in Unix nanoseconds indicating the end of the date range. + EndTimestamp *int64 `protobuf:"varint,2,opt,name=end_timestamp,json=endTimestamp,proto3,oneof" json:"end_timestamp,omitempty"` } -func (x *CoreSnapshotEdge) Reset() { - *x = CoreSnapshotEdge{} +func (x *DateRange) Reset() { + *x = DateRange{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[292] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -17782,13 +17815,13 @@ func (x *CoreSnapshotEdge) Reset() { } } -func (x *CoreSnapshotEdge) String() string { +func (x *DateRange) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CoreSnapshotEdge) ProtoMessage() {} +func (*DateRange) ProtoMessage() {} -func (x *CoreSnapshotEdge) ProtoReflect() protoreflect.Message { +func (x *DateRange) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[292] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -17800,47 +17833,34 @@ func (x *CoreSnapshotEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CoreSnapshotEdge.ProtoReflect.Descriptor instead. -func (*CoreSnapshotEdge) Descriptor() ([]byte, []int) { +// Deprecated: Use DateRange.ProtoReflect.Descriptor instead. +func (*DateRange) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{292} } -func (x *CoreSnapshotEdge) GetNode() *v1.CoreSnapshotData { - if x != nil { - return x.Node +func (x *DateRange) GetStartTimestamp() int64 { + if x != nil && x.StartTimestamp != nil { + return *x.StartTimestamp } - return nil + return 0 } -func (x *CoreSnapshotEdge) GetCursor() string { - if x != nil { - return x.Cursor +func (x *DateRange) GetEndTimestamp() int64 { + if x != nil && x.EndTimestamp != nil { + return *x.EndTimestamp } - return "" + return 0 } -// Describes a network history segment -type HistorySegment struct { +// Request to get protocol upgrade status +type GetProtocolUpgradeStatusRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // Starting height of the history segment. - FromHeight int64 `protobuf:"varint,1,opt,name=from_height,json=fromHeight,proto3" json:"from_height,omitempty"` - // Ending height of the history segment. - ToHeight int64 `protobuf:"varint,2,opt,name=to_height,json=toHeight,proto3" json:"to_height,omitempty"` - // History segment ID. - HistorySegmentId string `protobuf:"bytes,3,opt,name=history_segment_id,json=historySegmentId,proto3" json:"history_segment_id,omitempty"` - // Previous history segment ID. - PreviousHistorySegmentId string `protobuf:"bytes,4,opt,name=previous_history_segment_id,json=previousHistorySegmentId,proto3" json:"previous_history_segment_id,omitempty"` - // Database schema version of the history segment. - DatabaseVersion int64 `protobuf:"varint,5,opt,name=database_version,json=databaseVersion,proto3" json:"database_version,omitempty"` - // Chain ID of the history segment. - ChainId string `protobuf:"bytes,6,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` } -func (x *HistorySegment) Reset() { - *x = HistorySegment{} +func (x *GetProtocolUpgradeStatusRequest) Reset() { + *x = GetProtocolUpgradeStatusRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[293] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -17848,13 +17868,13 @@ func (x *HistorySegment) Reset() { } } -func (x *HistorySegment) String() string { +func (x *GetProtocolUpgradeStatusRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*HistorySegment) ProtoMessage() {} +func (*GetProtocolUpgradeStatusRequest) ProtoMessage() {} -func (x *HistorySegment) ProtoReflect() protoreflect.Message { +func (x *GetProtocolUpgradeStatusRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[293] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -17866,62 +17886,23 @@ func (x *HistorySegment) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use HistorySegment.ProtoReflect.Descriptor instead. -func (*HistorySegment) Descriptor() ([]byte, []int) { +// Deprecated: Use GetProtocolUpgradeStatusRequest.ProtoReflect.Descriptor instead. +func (*GetProtocolUpgradeStatusRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{293} } -func (x *HistorySegment) GetFromHeight() int64 { - if x != nil { - return x.FromHeight - } - return 0 -} - -func (x *HistorySegment) GetToHeight() int64 { - if x != nil { - return x.ToHeight - } - return 0 -} - -func (x *HistorySegment) GetHistorySegmentId() string { - if x != nil { - return x.HistorySegmentId - } - return "" -} - -func (x *HistorySegment) GetPreviousHistorySegmentId() string { - if x != nil { - return x.PreviousHistorySegmentId - } - return "" -} - -func (x *HistorySegment) GetDatabaseVersion() int64 { - if x != nil { - return x.DatabaseVersion - } - return 0 -} - -func (x *HistorySegment) GetChainId() string { - if x != nil { - return x.ChainId - } - return "" -} - -// Request to get the most recent history segment -type GetMostRecentNetworkHistorySegmentRequest struct { +// Response from getting protocol upgrade status +type GetProtocolUpgradeStatusResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Indicator if the upgrade is ready or not. + Ready bool `protobuf:"varint,1,opt,name=ready,proto3" json:"ready,omitempty"` } -func (x *GetMostRecentNetworkHistorySegmentRequest) Reset() { - *x = GetMostRecentNetworkHistorySegmentRequest{} +func (x *GetProtocolUpgradeStatusResponse) Reset() { + *x = GetProtocolUpgradeStatusResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[294] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -17929,13 +17910,13 @@ func (x *GetMostRecentNetworkHistorySegmentRequest) Reset() { } } -func (x *GetMostRecentNetworkHistorySegmentRequest) String() string { +func (x *GetProtocolUpgradeStatusResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetMostRecentNetworkHistorySegmentRequest) ProtoMessage() {} +func (*GetProtocolUpgradeStatusResponse) ProtoMessage() {} -func (x *GetMostRecentNetworkHistorySegmentRequest) ProtoReflect() protoreflect.Message { +func (x *GetProtocolUpgradeStatusResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[294] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -17947,25 +17928,34 @@ func (x *GetMostRecentNetworkHistorySegmentRequest) ProtoReflect() protoreflect. return mi.MessageOf(x) } -// Deprecated: Use GetMostRecentNetworkHistorySegmentRequest.ProtoReflect.Descriptor instead. -func (*GetMostRecentNetworkHistorySegmentRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GetProtocolUpgradeStatusResponse.ProtoReflect.Descriptor instead. +func (*GetProtocolUpgradeStatusResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{294} } -// Response from getting most recent history segment -type GetMostRecentNetworkHistorySegmentResponse struct { +func (x *GetProtocolUpgradeStatusResponse) GetReady() bool { + if x != nil { + return x.Ready + } + return false +} + +// Request type for ListProtocolUpgradeProposals; fetches a paginated list of protocol upgrade proposals +type ListProtocolUpgradeProposalsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Data relating to a history segment created by a Vega data node. - Segment *HistorySegment `protobuf:"bytes,1,opt,name=segment,proto3" json:"segment,omitempty"` - // Key seed for the swarm section. - SwarmKeySeed string `protobuf:"bytes,2,opt,name=swarm_key_seed,json=swarmKeySeed,proto3" json:"swarm_key_seed,omitempty"` + // Restrict protocol upgrade proposals to those with the given status. + Status *v1.ProtocolUpgradeProposalStatus `protobuf:"varint,1,opt,name=status,proto3,enum=vega.events.v1.ProtocolUpgradeProposalStatus,oneof" json:"status,omitempty"` + // Restrict protocol upgrade proposals to those approved by the given node ID. + ApprovedBy *string `protobuf:"bytes,2,opt,name=approved_by,json=approvedBy,proto3,oneof" json:"approved_by,omitempty"` + // Pagination controls. + Pagination *Pagination `protobuf:"bytes,3,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` } -func (x *GetMostRecentNetworkHistorySegmentResponse) Reset() { - *x = GetMostRecentNetworkHistorySegmentResponse{} +func (x *ListProtocolUpgradeProposalsRequest) Reset() { + *x = ListProtocolUpgradeProposalsRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[295] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -17973,13 +17963,13 @@ func (x *GetMostRecentNetworkHistorySegmentResponse) Reset() { } } -func (x *GetMostRecentNetworkHistorySegmentResponse) String() string { +func (x *ListProtocolUpgradeProposalsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetMostRecentNetworkHistorySegmentResponse) ProtoMessage() {} +func (*ListProtocolUpgradeProposalsRequest) ProtoMessage() {} -func (x *GetMostRecentNetworkHistorySegmentResponse) ProtoReflect() protoreflect.Message { +func (x *ListProtocolUpgradeProposalsRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[295] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -17991,34 +17981,44 @@ func (x *GetMostRecentNetworkHistorySegmentResponse) ProtoReflect() protoreflect return mi.MessageOf(x) } -// Deprecated: Use GetMostRecentNetworkHistorySegmentResponse.ProtoReflect.Descriptor instead. -func (*GetMostRecentNetworkHistorySegmentResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListProtocolUpgradeProposalsRequest.ProtoReflect.Descriptor instead. +func (*ListProtocolUpgradeProposalsRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{295} } -func (x *GetMostRecentNetworkHistorySegmentResponse) GetSegment() *HistorySegment { - if x != nil { - return x.Segment +func (x *ListProtocolUpgradeProposalsRequest) GetStatus() v1.ProtocolUpgradeProposalStatus { + if x != nil && x.Status != nil { + return *x.Status } - return nil + return v1.ProtocolUpgradeProposalStatus(0) } -func (x *GetMostRecentNetworkHistorySegmentResponse) GetSwarmKeySeed() string { - if x != nil { - return x.SwarmKeySeed +func (x *ListProtocolUpgradeProposalsRequest) GetApprovedBy() string { + if x != nil && x.ApprovedBy != nil { + return *x.ApprovedBy } return "" } -// Request to list all the nodes history segments -type ListAllNetworkHistorySegmentsRequest struct { +func (x *ListProtocolUpgradeProposalsRequest) GetPagination() *Pagination { + if x != nil { + return x.Pagination + } + return nil +} + +// Response type from a ListProtocolUpgradeProposals RPC call; a paginated list of protocol upgrade proposals +type ListProtocolUpgradeProposalsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Page of protocol upgrade proposals and corresponding page information. + ProtocolUpgradeProposals *ProtocolUpgradeProposalConnection `protobuf:"bytes,1,opt,name=protocol_upgrade_proposals,json=protocolUpgradeProposals,proto3" json:"protocol_upgrade_proposals,omitempty"` } -func (x *ListAllNetworkHistorySegmentsRequest) Reset() { - *x = ListAllNetworkHistorySegmentsRequest{} +func (x *ListProtocolUpgradeProposalsResponse) Reset() { + *x = ListProtocolUpgradeProposalsResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[296] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18026,13 +18026,13 @@ func (x *ListAllNetworkHistorySegmentsRequest) Reset() { } } -func (x *ListAllNetworkHistorySegmentsRequest) String() string { +func (x *ListProtocolUpgradeProposalsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListAllNetworkHistorySegmentsRequest) ProtoMessage() {} +func (*ListProtocolUpgradeProposalsResponse) ProtoMessage() {} -func (x *ListAllNetworkHistorySegmentsRequest) ProtoReflect() protoreflect.Message { +func (x *ListProtocolUpgradeProposalsResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[296] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18044,23 +18044,32 @@ func (x *ListAllNetworkHistorySegmentsRequest) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use ListAllNetworkHistorySegmentsRequest.ProtoReflect.Descriptor instead. -func (*ListAllNetworkHistorySegmentsRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListProtocolUpgradeProposalsResponse.ProtoReflect.Descriptor instead. +func (*ListProtocolUpgradeProposalsResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{296} } -// Response with a list of all the nodes history segments -type ListAllNetworkHistorySegmentsResponse struct { +func (x *ListProtocolUpgradeProposalsResponse) GetProtocolUpgradeProposals() *ProtocolUpgradeProposalConnection { + if x != nil { + return x.ProtocolUpgradeProposals + } + return nil +} + +// Page of protocol upgrade proposals and corresponding page information +type ProtocolUpgradeProposalConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of history segments data and corresponding page information. - Segments []*HistorySegment `protobuf:"bytes,1,rep,name=segments,proto3" json:"segments,omitempty"` + // Page of protocol upgrade proposals data and their corresponding cursors. + Edges []*ProtocolUpgradeProposalEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *ListAllNetworkHistorySegmentsResponse) Reset() { - *x = ListAllNetworkHistorySegmentsResponse{} +func (x *ProtocolUpgradeProposalConnection) Reset() { + *x = ProtocolUpgradeProposalConnection{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[297] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18068,13 +18077,13 @@ func (x *ListAllNetworkHistorySegmentsResponse) Reset() { } } -func (x *ListAllNetworkHistorySegmentsResponse) String() string { +func (x *ProtocolUpgradeProposalConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListAllNetworkHistorySegmentsResponse) ProtoMessage() {} +func (*ProtocolUpgradeProposalConnection) ProtoMessage() {} -func (x *ListAllNetworkHistorySegmentsResponse) ProtoReflect() protoreflect.Message { +func (x *ProtocolUpgradeProposalConnection) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[297] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18086,27 +18095,39 @@ func (x *ListAllNetworkHistorySegmentsResponse) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use ListAllNetworkHistorySegmentsResponse.ProtoReflect.Descriptor instead. -func (*ListAllNetworkHistorySegmentsResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ProtocolUpgradeProposalConnection.ProtoReflect.Descriptor instead. +func (*ProtocolUpgradeProposalConnection) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{297} } -func (x *ListAllNetworkHistorySegmentsResponse) GetSegments() []*HistorySegment { +func (x *ProtocolUpgradeProposalConnection) GetEdges() []*ProtocolUpgradeProposalEdge { if x != nil { - return x.Segments + return x.Edges } return nil } -// Request to get the addresses of active network history peers -type GetActiveNetworkHistoryPeerAddressesRequest struct { +func (x *ProtocolUpgradeProposalConnection) GetPageInfo() *PageInfo { + if x != nil { + return x.PageInfo + } + return nil +} + +// Protocol upgrade proposal data with the corresponding cursor. +type ProtocolUpgradeProposalEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Protocol upgrade proposal data. + Node *v1.ProtocolUpgradeEvent `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *GetActiveNetworkHistoryPeerAddressesRequest) Reset() { - *x = GetActiveNetworkHistoryPeerAddressesRequest{} +func (x *ProtocolUpgradeProposalEdge) Reset() { + *x = ProtocolUpgradeProposalEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[298] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18114,13 +18135,13 @@ func (x *GetActiveNetworkHistoryPeerAddressesRequest) Reset() { } } -func (x *GetActiveNetworkHistoryPeerAddressesRequest) String() string { +func (x *ProtocolUpgradeProposalEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetActiveNetworkHistoryPeerAddressesRequest) ProtoMessage() {} +func (*ProtocolUpgradeProposalEdge) ProtoMessage() {} -func (x *GetActiveNetworkHistoryPeerAddressesRequest) ProtoReflect() protoreflect.Message { +func (x *ProtocolUpgradeProposalEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[298] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18132,23 +18153,37 @@ func (x *GetActiveNetworkHistoryPeerAddressesRequest) ProtoReflect() protoreflec return mi.MessageOf(x) } -// Deprecated: Use GetActiveNetworkHistoryPeerAddressesRequest.ProtoReflect.Descriptor instead. -func (*GetActiveNetworkHistoryPeerAddressesRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ProtocolUpgradeProposalEdge.ProtoReflect.Descriptor instead. +func (*ProtocolUpgradeProposalEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{298} } -// Response containing the addresses of active network history peers -type GetActiveNetworkHistoryPeerAddressesResponse struct { +func (x *ProtocolUpgradeProposalEdge) GetNode() *v1.ProtocolUpgradeEvent { + if x != nil { + return x.Node + } + return nil +} + +func (x *ProtocolUpgradeProposalEdge) GetCursor() string { + if x != nil { + return x.Cursor + } + return "" +} + +// Request type for ListCoreSnapshots; fetches a paginated list of the core snapshots. +type ListCoreSnapshotsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // List of IP addresses for the active peers. - IpAddresses []string `protobuf:"bytes,1,rep,name=ip_addresses,json=ipAddresses,proto3" json:"ip_addresses,omitempty"` + // Optional pagination information to limit the data that is returned. + Pagination *Pagination `protobuf:"bytes,1,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` } -func (x *GetActiveNetworkHistoryPeerAddressesResponse) Reset() { - *x = GetActiveNetworkHistoryPeerAddressesResponse{} +func (x *ListCoreSnapshotsRequest) Reset() { + *x = ListCoreSnapshotsRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[299] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18156,13 +18191,13 @@ func (x *GetActiveNetworkHistoryPeerAddressesResponse) Reset() { } } -func (x *GetActiveNetworkHistoryPeerAddressesResponse) String() string { +func (x *ListCoreSnapshotsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetActiveNetworkHistoryPeerAddressesResponse) ProtoMessage() {} +func (*ListCoreSnapshotsRequest) ProtoMessage() {} -func (x *GetActiveNetworkHistoryPeerAddressesResponse) ProtoReflect() protoreflect.Message { +func (x *ListCoreSnapshotsRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[299] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18174,27 +18209,30 @@ func (x *GetActiveNetworkHistoryPeerAddressesResponse) ProtoReflect() protorefle return mi.MessageOf(x) } -// Deprecated: Use GetActiveNetworkHistoryPeerAddressesResponse.ProtoReflect.Descriptor instead. -func (*GetActiveNetworkHistoryPeerAddressesResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListCoreSnapshotsRequest.ProtoReflect.Descriptor instead. +func (*ListCoreSnapshotsRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{299} } -func (x *GetActiveNetworkHistoryPeerAddressesResponse) GetIpAddresses() []string { +func (x *ListCoreSnapshotsRequest) GetPagination() *Pagination { if x != nil { - return x.IpAddresses + return x.Pagination } return nil } -// Request to get the status of network history -type GetNetworkHistoryStatusRequest struct { +// Response from a ListCoreSnapshots RPC call; a paginated list of the core snapshots. +type ListCoreSnapshotsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Page of core snapshot data and corresponding page information. + CoreSnapshots *CoreSnapshotConnection `protobuf:"bytes,1,opt,name=core_snapshots,json=coreSnapshots,proto3" json:"core_snapshots,omitempty"` } -func (x *GetNetworkHistoryStatusRequest) Reset() { - *x = GetNetworkHistoryStatusRequest{} +func (x *ListCoreSnapshotsResponse) Reset() { + *x = ListCoreSnapshotsResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[300] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18202,13 +18240,13 @@ func (x *GetNetworkHistoryStatusRequest) Reset() { } } -func (x *GetNetworkHistoryStatusRequest) String() string { +func (x *ListCoreSnapshotsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetNetworkHistoryStatusRequest) ProtoMessage() {} +func (*ListCoreSnapshotsResponse) ProtoMessage() {} -func (x *GetNetworkHistoryStatusRequest) ProtoReflect() protoreflect.Message { +func (x *ListCoreSnapshotsResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[300] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18220,29 +18258,32 @@ func (x *GetNetworkHistoryStatusRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetNetworkHistoryStatusRequest.ProtoReflect.Descriptor instead. -func (*GetNetworkHistoryStatusRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use ListCoreSnapshotsResponse.ProtoReflect.Descriptor instead. +func (*ListCoreSnapshotsResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{300} } -// Response containing the status of network history -type GetNetworkHistoryStatusResponse struct { +func (x *ListCoreSnapshotsResponse) GetCoreSnapshots() *CoreSnapshotConnection { + if x != nil { + return x.CoreSnapshots + } + return nil +} + +// Page of core snapshot data and corresponding page information. +type CoreSnapshotConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // IPFS address of the data node currently connected to. - IpfsAddress string `protobuf:"bytes,1,opt,name=ipfs_address,json=ipfsAddress,proto3" json:"ipfs_address,omitempty"` - // Swarm key used by the IPFS swarm. - SwarmKey string `protobuf:"bytes,2,opt,name=swarm_key,json=swarmKey,proto3" json:"swarm_key,omitempty"` - // Swarm key seed used by the IPFS swarm. - SwarmKeySeed string `protobuf:"bytes,3,opt,name=swarm_key_seed,json=swarmKeySeed,proto3" json:"swarm_key_seed,omitempty"` - // List of peers connected to the IPFS swarm. - ConnectedPeers []string `protobuf:"bytes,5,rep,name=connected_peers,json=connectedPeers,proto3" json:"connected_peers,omitempty"` + // Page of core snapshot data and their corresponding cursors. + Edges []*CoreSnapshotEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *GetNetworkHistoryStatusResponse) Reset() { - *x = GetNetworkHistoryStatusResponse{} +func (x *CoreSnapshotConnection) Reset() { + *x = CoreSnapshotConnection{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[301] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18250,13 +18291,13 @@ func (x *GetNetworkHistoryStatusResponse) Reset() { } } -func (x *GetNetworkHistoryStatusResponse) String() string { +func (x *CoreSnapshotConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetNetworkHistoryStatusResponse) ProtoMessage() {} +func (*CoreSnapshotConnection) ProtoMessage() {} -func (x *GetNetworkHistoryStatusResponse) ProtoReflect() protoreflect.Message { +func (x *CoreSnapshotConnection) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[301] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18268,48 +18309,39 @@ func (x *GetNetworkHistoryStatusResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetNetworkHistoryStatusResponse.ProtoReflect.Descriptor instead. -func (*GetNetworkHistoryStatusResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use CoreSnapshotConnection.ProtoReflect.Descriptor instead. +func (*CoreSnapshotConnection) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{301} } -func (x *GetNetworkHistoryStatusResponse) GetIpfsAddress() string { - if x != nil { - return x.IpfsAddress - } - return "" -} - -func (x *GetNetworkHistoryStatusResponse) GetSwarmKey() string { - if x != nil { - return x.SwarmKey - } - return "" -} - -func (x *GetNetworkHistoryStatusResponse) GetSwarmKeySeed() string { +func (x *CoreSnapshotConnection) GetEdges() []*CoreSnapshotEdge { if x != nil { - return x.SwarmKeySeed + return x.Edges } - return "" + return nil } -func (x *GetNetworkHistoryStatusResponse) GetConnectedPeers() []string { +func (x *CoreSnapshotConnection) GetPageInfo() *PageInfo { if x != nil { - return x.ConnectedPeers + return x.PageInfo } return nil } -// Request to get the nodes network history bootstrap peers -type GetNetworkHistoryBootstrapPeersRequest struct { +// Core snapshot data with the corresponding cursor. +type CoreSnapshotEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Core snapshot data. + Node *v1.CoreSnapshotData `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *GetNetworkHistoryBootstrapPeersRequest) Reset() { - *x = GetNetworkHistoryBootstrapPeersRequest{} +func (x *CoreSnapshotEdge) Reset() { + *x = CoreSnapshotEdge{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[302] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18317,13 +18349,13 @@ func (x *GetNetworkHistoryBootstrapPeersRequest) Reset() { } } -func (x *GetNetworkHistoryBootstrapPeersRequest) String() string { +func (x *CoreSnapshotEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetNetworkHistoryBootstrapPeersRequest) ProtoMessage() {} +func (*CoreSnapshotEdge) ProtoMessage() {} -func (x *GetNetworkHistoryBootstrapPeersRequest) ProtoReflect() protoreflect.Message { +func (x *CoreSnapshotEdge) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[302] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18335,23 +18367,47 @@ func (x *GetNetworkHistoryBootstrapPeersRequest) ProtoReflect() protoreflect.Mes return mi.MessageOf(x) } -// Deprecated: Use GetNetworkHistoryBootstrapPeersRequest.ProtoReflect.Descriptor instead. -func (*GetNetworkHistoryBootstrapPeersRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use CoreSnapshotEdge.ProtoReflect.Descriptor instead. +func (*CoreSnapshotEdge) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{302} } -// Response containing the nodes network history bootstrap peers -type GetNetworkHistoryBootstrapPeersResponse struct { +func (x *CoreSnapshotEdge) GetNode() *v1.CoreSnapshotData { + if x != nil { + return x.Node + } + return nil +} + +func (x *CoreSnapshotEdge) GetCursor() string { + if x != nil { + return x.Cursor + } + return "" +} + +// Describes a network history segment +type HistorySegment struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // List of peers that can be used to bootstrap a Vega data node. - BootstrapPeers []string `protobuf:"bytes,1,rep,name=bootstrap_peers,json=bootstrapPeers,proto3" json:"bootstrap_peers,omitempty"` + // Starting height of the history segment. + FromHeight int64 `protobuf:"varint,1,opt,name=from_height,json=fromHeight,proto3" json:"from_height,omitempty"` + // Ending height of the history segment. + ToHeight int64 `protobuf:"varint,2,opt,name=to_height,json=toHeight,proto3" json:"to_height,omitempty"` + // History segment ID. + HistorySegmentId string `protobuf:"bytes,3,opt,name=history_segment_id,json=historySegmentId,proto3" json:"history_segment_id,omitempty"` + // Previous history segment ID. + PreviousHistorySegmentId string `protobuf:"bytes,4,opt,name=previous_history_segment_id,json=previousHistorySegmentId,proto3" json:"previous_history_segment_id,omitempty"` + // Database schema version of the history segment. + DatabaseVersion int64 `protobuf:"varint,5,opt,name=database_version,json=databaseVersion,proto3" json:"database_version,omitempty"` + // Chain ID of the history segment. + ChainId string `protobuf:"bytes,6,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` } -func (x *GetNetworkHistoryBootstrapPeersResponse) Reset() { - *x = GetNetworkHistoryBootstrapPeersResponse{} +func (x *HistorySegment) Reset() { + *x = HistorySegment{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[303] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18359,13 +18415,13 @@ func (x *GetNetworkHistoryBootstrapPeersResponse) Reset() { } } -func (x *GetNetworkHistoryBootstrapPeersResponse) String() string { +func (x *HistorySegment) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetNetworkHistoryBootstrapPeersResponse) ProtoMessage() {} +func (*HistorySegment) ProtoMessage() {} -func (x *GetNetworkHistoryBootstrapPeersResponse) ProtoReflect() protoreflect.Message { +func (x *HistorySegment) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[303] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18377,38 +18433,62 @@ func (x *GetNetworkHistoryBootstrapPeersResponse) ProtoReflect() protoreflect.Me return mi.MessageOf(x) } -// Deprecated: Use GetNetworkHistoryBootstrapPeersResponse.ProtoReflect.Descriptor instead. -func (*GetNetworkHistoryBootstrapPeersResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use HistorySegment.ProtoReflect.Descriptor instead. +func (*HistorySegment) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{303} } -func (x *GetNetworkHistoryBootstrapPeersResponse) GetBootstrapPeers() []string { +func (x *HistorySegment) GetFromHeight() int64 { if x != nil { - return x.BootstrapPeers + return x.FromHeight } - return nil + return 0 } -// Request to export network history data in CSV format -type ExportNetworkHistoryRequest struct { +func (x *HistorySegment) GetToHeight() int64 { + if x != nil { + return x.ToHeight + } + return 0 +} + +func (x *HistorySegment) GetHistorySegmentId() string { + if x != nil { + return x.HistorySegmentId + } + return "" +} + +func (x *HistorySegment) GetPreviousHistorySegmentId() string { + if x != nil { + return x.PreviousHistorySegmentId + } + return "" +} + +func (x *HistorySegment) GetDatabaseVersion() int64 { + if x != nil { + return x.DatabaseVersion + } + return 0 +} + +func (x *HistorySegment) GetChainId() string { + if x != nil { + return x.ChainId + } + return "" +} + +// Request to get the most recent history segment +type GetMostRecentNetworkHistorySegmentRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // Block to begin exporting from. Must be the first block of a history segment, - // which by default are 1000 blocks each; in that case - 1, 1001, 2001 etc. are valid values. - // This can be checked by first calling the API to list all network history segments. - FromBlock int64 `protobuf:"varint,1,opt,name=from_block,json=fromBlock,proto3" json:"from_block,omitempty"` - // Last block to export up to and including. Must be the last block of a history segment - // which by default are 1000 blocks each; in that case - 1000, 2000, 3000 etc. are valid values. - // This can be checked by first calling the API to list all network history segments. - ToBlock int64 `protobuf:"varint,2,opt,name=to_block,json=toBlock,proto3" json:"to_block,omitempty"` - // Table to export data from. - Table Table `protobuf:"varint,3,opt,name=table,proto3,enum=datanode.api.v2.Table" json:"table,omitempty"` } -func (x *ExportNetworkHistoryRequest) Reset() { - *x = ExportNetworkHistoryRequest{} +func (x *GetMostRecentNetworkHistorySegmentRequest) Reset() { + *x = GetMostRecentNetworkHistorySegmentRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[304] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18416,13 +18496,13 @@ func (x *ExportNetworkHistoryRequest) Reset() { } } -func (x *ExportNetworkHistoryRequest) String() string { +func (x *GetMostRecentNetworkHistorySegmentRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ExportNetworkHistoryRequest) ProtoMessage() {} +func (*GetMostRecentNetworkHistorySegmentRequest) ProtoMessage() {} -func (x *ExportNetworkHistoryRequest) ProtoReflect() protoreflect.Message { +func (x *GetMostRecentNetworkHistorySegmentRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[304] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18434,44 +18514,25 @@ func (x *ExportNetworkHistoryRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ExportNetworkHistoryRequest.ProtoReflect.Descriptor instead. -func (*ExportNetworkHistoryRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GetMostRecentNetworkHistorySegmentRequest.ProtoReflect.Descriptor instead. +func (*GetMostRecentNetworkHistorySegmentRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{304} } -func (x *ExportNetworkHistoryRequest) GetFromBlock() int64 { - if x != nil { - return x.FromBlock - } - return 0 -} - -func (x *ExportNetworkHistoryRequest) GetToBlock() int64 { - if x != nil { - return x.ToBlock - } - return 0 -} - -func (x *ExportNetworkHistoryRequest) GetTable() Table { - if x != nil { - return x.Table - } - return Table_TABLE_UNSPECIFIED -} - -// Request to list all entities that were created by the given transaction hash -type ListEntitiesRequest struct { +// Response from getting most recent history segment +type GetMostRecentNetworkHistorySegmentResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Transaction hash to match against - TransactionHash string `protobuf:"bytes,1,opt,name=transaction_hash,json=transactionHash,proto3" json:"transaction_hash,omitempty"` + // Data relating to a history segment created by a Vega data node. + Segment *HistorySegment `protobuf:"bytes,1,opt,name=segment,proto3" json:"segment,omitempty"` + // Key seed for the swarm section. + SwarmKeySeed string `protobuf:"bytes,2,opt,name=swarm_key_seed,json=swarmKeySeed,proto3" json:"swarm_key_seed,omitempty"` } -func (x *ListEntitiesRequest) Reset() { - *x = ListEntitiesRequest{} +func (x *GetMostRecentNetworkHistorySegmentResponse) Reset() { + *x = GetMostRecentNetworkHistorySegmentResponse{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[305] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18479,13 +18540,13 @@ func (x *ListEntitiesRequest) Reset() { } } -func (x *ListEntitiesRequest) String() string { +func (x *GetMostRecentNetworkHistorySegmentResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListEntitiesRequest) ProtoMessage() {} +func (*GetMostRecentNetworkHistorySegmentResponse) ProtoMessage() {} -func (x *ListEntitiesRequest) ProtoReflect() protoreflect.Message { +func (x *GetMostRecentNetworkHistorySegmentResponse) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[305] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18497,56 +18558,34 @@ func (x *ListEntitiesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListEntitiesRequest.ProtoReflect.Descriptor instead. -func (*ListEntitiesRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use GetMostRecentNetworkHistorySegmentResponse.ProtoReflect.Descriptor instead. +func (*GetMostRecentNetworkHistorySegmentResponse) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{305} } -func (x *ListEntitiesRequest) GetTransactionHash() string { +func (x *GetMostRecentNetworkHistorySegmentResponse) GetSegment() *HistorySegment { if x != nil { - return x.TransactionHash + return x.Segment + } + return nil +} + +func (x *GetMostRecentNetworkHistorySegmentResponse) GetSwarmKeySeed() string { + if x != nil { + return x.SwarmKeySeed } return "" } -// Response from listing entities that were created for a given transaction hash -type ListEntitiesResponse struct { +// Request to list all the nodes history segments +type ListAllNetworkHistorySegmentsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - Accounts []*vega.Account `protobuf:"bytes,1,rep,name=accounts,proto3" json:"accounts,omitempty"` - Orders []*vega.Order `protobuf:"bytes,2,rep,name=orders,proto3" json:"orders,omitempty"` - Positions []*vega.Position `protobuf:"bytes,3,rep,name=positions,proto3" json:"positions,omitempty"` - LedgerEntries []*vega.LedgerEntry `protobuf:"bytes,4,rep,name=ledger_entries,json=ledgerEntries,proto3" json:"ledger_entries,omitempty"` - BalanceChanges []*AccountBalance `protobuf:"bytes,5,rep,name=balance_changes,json=balanceChanges,proto3" json:"balance_changes,omitempty"` - Transfers []*v1.Transfer `protobuf:"bytes,6,rep,name=transfers,proto3" json:"transfers,omitempty"` - Votes []*vega.Vote `protobuf:"bytes,7,rep,name=votes,proto3" json:"votes,omitempty"` - Erc20MultiSigSignerAddedBundles []*ERC20MultiSigSignerAddedBundle `protobuf:"bytes,8,rep,name=erc20_multi_sig_signer_added_bundles,json=erc20MultiSigSignerAddedBundles,proto3" json:"erc20_multi_sig_signer_added_bundles,omitempty"` - Erc20MultiSigSignerRemovedBundles []*ERC20MultiSigSignerRemovedBundle `protobuf:"bytes,9,rep,name=erc20_multi_sig_signer_removed_bundles,json=erc20MultiSigSignerRemovedBundles,proto3" json:"erc20_multi_sig_signer_removed_bundles,omitempty"` - Trades []*vega.Trade `protobuf:"bytes,10,rep,name=trades,proto3" json:"trades,omitempty"` - OracleSpecs []*vega.OracleSpec `protobuf:"bytes,11,rep,name=oracle_specs,json=oracleSpecs,proto3" json:"oracle_specs,omitempty"` - OracleData []*vega.OracleData `protobuf:"bytes,12,rep,name=oracle_data,json=oracleData,proto3" json:"oracle_data,omitempty"` - Markets []*vega.Market `protobuf:"bytes,13,rep,name=markets,proto3" json:"markets,omitempty"` - Parties []*vega.Party `protobuf:"bytes,14,rep,name=parties,proto3" json:"parties,omitempty"` - MarginLevels []*vega.MarginLevels `protobuf:"bytes,15,rep,name=margin_levels,json=marginLevels,proto3" json:"margin_levels,omitempty"` - Rewards []*vega.Reward `protobuf:"bytes,16,rep,name=rewards,proto3" json:"rewards,omitempty"` - Deposits []*vega.Deposit `protobuf:"bytes,17,rep,name=deposits,proto3" json:"deposits,omitempty"` - Withdrawals []*vega.Withdrawal `protobuf:"bytes,18,rep,name=withdrawals,proto3" json:"withdrawals,omitempty"` - Assets []*vega.Asset `protobuf:"bytes,19,rep,name=assets,proto3" json:"assets,omitempty"` - LiquidityProvisions []*vega.LiquidityProvision `protobuf:"bytes,20,rep,name=liquidity_provisions,json=liquidityProvisions,proto3" json:"liquidity_provisions,omitempty"` - Proposals []*vega.Proposal `protobuf:"bytes,21,rep,name=proposals,proto3" json:"proposals,omitempty"` - Delegations []*vega.Delegation `protobuf:"bytes,22,rep,name=delegations,proto3" json:"delegations,omitempty"` - Nodes []*NodeBasic `protobuf:"bytes,23,rep,name=nodes,proto3" json:"nodes,omitempty"` - NodeSignatures []*v11.NodeSignature `protobuf:"bytes,24,rep,name=node_signatures,json=nodeSignatures,proto3" json:"node_signatures,omitempty"` - NetworkParameters []*vega.NetworkParameter `protobuf:"bytes,25,rep,name=network_parameters,json=networkParameters,proto3" json:"network_parameters,omitempty"` - KeyRotations []*v1.KeyRotation `protobuf:"bytes,26,rep,name=key_rotations,json=keyRotations,proto3" json:"key_rotations,omitempty"` - EthereumKeyRotations []*v1.EthereumKeyRotation `protobuf:"bytes,27,rep,name=ethereum_key_rotations,json=ethereumKeyRotations,proto3" json:"ethereum_key_rotations,omitempty"` - ProtocolUpgradeProposals []*v1.ProtocolUpgradeEvent `protobuf:"bytes,28,rep,name=protocol_upgrade_proposals,json=protocolUpgradeProposals,proto3" json:"protocol_upgrade_proposals,omitempty"` } -func (x *ListEntitiesResponse) Reset() { - *x = ListEntitiesResponse{} +func (x *ListAllNetworkHistorySegmentsRequest) Reset() { + *x = ListAllNetworkHistorySegmentsRequest{} if protoimpl.UnsafeEnabled { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[306] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18554,13 +18593,13 @@ func (x *ListEntitiesResponse) Reset() { } } -func (x *ListEntitiesResponse) String() string { +func (x *ListAllNetworkHistorySegmentsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListEntitiesResponse) ProtoMessage() {} +func (*ListAllNetworkHistorySegmentsRequest) ProtoMessage() {} -func (x *ListEntitiesResponse) ProtoReflect() protoreflect.Message { +func (x *ListAllNetworkHistorySegmentsRequest) ProtoReflect() protoreflect.Message { mi := &file_data_node_api_v2_trading_data_proto_msgTypes[306] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -18572,236 +18611,220 @@ func (x *ListEntitiesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListEntitiesResponse.ProtoReflect.Descriptor instead. -func (*ListEntitiesResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use ListAllNetworkHistorySegmentsRequest.ProtoReflect.Descriptor instead. +func (*ListAllNetworkHistorySegmentsRequest) Descriptor() ([]byte, []int) { return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{306} } -func (x *ListEntitiesResponse) GetAccounts() []*vega.Account { - if x != nil { - return x.Accounts - } - return nil -} +// Response with a list of all the nodes history segments +type ListAllNetworkHistorySegmentsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *ListEntitiesResponse) GetOrders() []*vega.Order { - if x != nil { - return x.Orders - } - return nil + // Page of history segments data and corresponding page information. + Segments []*HistorySegment `protobuf:"bytes,1,rep,name=segments,proto3" json:"segments,omitempty"` } -func (x *ListEntitiesResponse) GetPositions() []*vega.Position { - if x != nil { - return x.Positions +func (x *ListAllNetworkHistorySegmentsResponse) Reset() { + *x = ListAllNetworkHistorySegmentsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[307] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *ListEntitiesResponse) GetLedgerEntries() []*vega.LedgerEntry { - if x != nil { - return x.LedgerEntries - } - return nil +func (x *ListAllNetworkHistorySegmentsResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *ListEntitiesResponse) GetBalanceChanges() []*AccountBalance { - if x != nil { - return x.BalanceChanges - } - return nil -} +func (*ListAllNetworkHistorySegmentsResponse) ProtoMessage() {} -func (x *ListEntitiesResponse) GetTransfers() []*v1.Transfer { - if x != nil { - return x.Transfers +func (x *ListAllNetworkHistorySegmentsResponse) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[307] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *ListEntitiesResponse) GetVotes() []*vega.Vote { - if x != nil { - return x.Votes - } - return nil +// Deprecated: Use ListAllNetworkHistorySegmentsResponse.ProtoReflect.Descriptor instead. +func (*ListAllNetworkHistorySegmentsResponse) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{307} } -func (x *ListEntitiesResponse) GetErc20MultiSigSignerAddedBundles() []*ERC20MultiSigSignerAddedBundle { +func (x *ListAllNetworkHistorySegmentsResponse) GetSegments() []*HistorySegment { if x != nil { - return x.Erc20MultiSigSignerAddedBundles + return x.Segments } return nil } -func (x *ListEntitiesResponse) GetErc20MultiSigSignerRemovedBundles() []*ERC20MultiSigSignerRemovedBundle { - if x != nil { - return x.Erc20MultiSigSignerRemovedBundles - } - return nil +// Request to get the addresses of active network history peers +type GetActiveNetworkHistoryPeerAddressesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (x *ListEntitiesResponse) GetTrades() []*vega.Trade { - if x != nil { - return x.Trades +func (x *GetActiveNetworkHistoryPeerAddressesRequest) Reset() { + *x = GetActiveNetworkHistoryPeerAddressesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[308] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *ListEntitiesResponse) GetOracleSpecs() []*vega.OracleSpec { - if x != nil { - return x.OracleSpecs - } - return nil +func (x *GetActiveNetworkHistoryPeerAddressesRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *ListEntitiesResponse) GetOracleData() []*vega.OracleData { - if x != nil { - return x.OracleData - } - return nil -} +func (*GetActiveNetworkHistoryPeerAddressesRequest) ProtoMessage() {} -func (x *ListEntitiesResponse) GetMarkets() []*vega.Market { - if x != nil { - return x.Markets +func (x *GetActiveNetworkHistoryPeerAddressesRequest) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[308] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *ListEntitiesResponse) GetParties() []*vega.Party { - if x != nil { - return x.Parties - } - return nil +// Deprecated: Use GetActiveNetworkHistoryPeerAddressesRequest.ProtoReflect.Descriptor instead. +func (*GetActiveNetworkHistoryPeerAddressesRequest) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{308} } -func (x *ListEntitiesResponse) GetMarginLevels() []*vega.MarginLevels { - if x != nil { - return x.MarginLevels - } - return nil -} +// Response containing the addresses of active network history peers +type GetActiveNetworkHistoryPeerAddressesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *ListEntitiesResponse) GetRewards() []*vega.Reward { - if x != nil { - return x.Rewards - } - return nil + // List of IP addresses for the active peers. + IpAddresses []string `protobuf:"bytes,1,rep,name=ip_addresses,json=ipAddresses,proto3" json:"ip_addresses,omitempty"` } -func (x *ListEntitiesResponse) GetDeposits() []*vega.Deposit { - if x != nil { - return x.Deposits +func (x *GetActiveNetworkHistoryPeerAddressesResponse) Reset() { + *x = GetActiveNetworkHistoryPeerAddressesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[309] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *ListEntitiesResponse) GetWithdrawals() []*vega.Withdrawal { - if x != nil { - return x.Withdrawals - } - return nil +func (x *GetActiveNetworkHistoryPeerAddressesResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *ListEntitiesResponse) GetAssets() []*vega.Asset { - if x != nil { - return x.Assets - } - return nil -} +func (*GetActiveNetworkHistoryPeerAddressesResponse) ProtoMessage() {} -func (x *ListEntitiesResponse) GetLiquidityProvisions() []*vega.LiquidityProvision { - if x != nil { - return x.LiquidityProvisions +func (x *GetActiveNetworkHistoryPeerAddressesResponse) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[309] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *ListEntitiesResponse) GetProposals() []*vega.Proposal { - if x != nil { - return x.Proposals - } - return nil +// Deprecated: Use GetActiveNetworkHistoryPeerAddressesResponse.ProtoReflect.Descriptor instead. +func (*GetActiveNetworkHistoryPeerAddressesResponse) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{309} } -func (x *ListEntitiesResponse) GetDelegations() []*vega.Delegation { +func (x *GetActiveNetworkHistoryPeerAddressesResponse) GetIpAddresses() []string { if x != nil { - return x.Delegations + return x.IpAddresses } return nil } -func (x *ListEntitiesResponse) GetNodes() []*NodeBasic { - if x != nil { - return x.Nodes - } - return nil +// Request to get the status of network history +type GetNetworkHistoryStatusRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (x *ListEntitiesResponse) GetNodeSignatures() []*v11.NodeSignature { - if x != nil { - return x.NodeSignatures +func (x *GetNetworkHistoryStatusRequest) Reset() { + *x = GetNetworkHistoryStatusRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[310] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return nil } -func (x *ListEntitiesResponse) GetNetworkParameters() []*vega.NetworkParameter { - if x != nil { - return x.NetworkParameters - } - return nil +func (x *GetNetworkHistoryStatusRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *ListEntitiesResponse) GetKeyRotations() []*v1.KeyRotation { - if x != nil { - return x.KeyRotations - } - return nil -} +func (*GetNetworkHistoryStatusRequest) ProtoMessage() {} -func (x *ListEntitiesResponse) GetEthereumKeyRotations() []*v1.EthereumKeyRotation { - if x != nil { - return x.EthereumKeyRotations +func (x *GetNetworkHistoryStatusRequest) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[310] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -func (x *ListEntitiesResponse) GetProtocolUpgradeProposals() []*v1.ProtocolUpgradeEvent { - if x != nil { - return x.ProtocolUpgradeProposals - } - return nil +// Deprecated: Use GetNetworkHistoryStatusRequest.ProtoReflect.Descriptor instead. +func (*GetNetworkHistoryStatusRequest) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{310} } -// Request to get a party's activity streaks across epochs -type GetPartyActivityStreakRequest struct { +// Response containing the status of network history +type GetNetworkHistoryStatusResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Party ID to get the activity streak for. - PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` - // Epoch to get the activity streak for. If not set, the last complete epoch is used. - Epoch *uint64 `protobuf:"varint,2,opt,name=epoch,proto3,oneof" json:"epoch,omitempty"` + // IPFS address of the data node currently connected to. + IpfsAddress string `protobuf:"bytes,1,opt,name=ipfs_address,json=ipfsAddress,proto3" json:"ipfs_address,omitempty"` + // Swarm key used by the IPFS swarm. + SwarmKey string `protobuf:"bytes,2,opt,name=swarm_key,json=swarmKey,proto3" json:"swarm_key,omitempty"` + // Swarm key seed used by the IPFS swarm. + SwarmKeySeed string `protobuf:"bytes,3,opt,name=swarm_key_seed,json=swarmKeySeed,proto3" json:"swarm_key_seed,omitempty"` + // List of peers connected to the IPFS swarm. + ConnectedPeers []string `protobuf:"bytes,5,rep,name=connected_peers,json=connectedPeers,proto3" json:"connected_peers,omitempty"` } -func (x *GetPartyActivityStreakRequest) Reset() { - *x = GetPartyActivityStreakRequest{} +func (x *GetNetworkHistoryStatusResponse) Reset() { + *x = GetNetworkHistoryStatusResponse{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[307] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[311] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetPartyActivityStreakRequest) String() string { +func (x *GetNetworkHistoryStatusResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetPartyActivityStreakRequest) ProtoMessage() {} +func (*GetNetworkHistoryStatusResponse) ProtoMessage() {} -func (x *GetPartyActivityStreakRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[307] +func (x *GetNetworkHistoryStatusResponse) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[311] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18812,52 +18835,63 @@ func (x *GetPartyActivityStreakRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetPartyActivityStreakRequest.ProtoReflect.Descriptor instead. -func (*GetPartyActivityStreakRequest) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{307} +// Deprecated: Use GetNetworkHistoryStatusResponse.ProtoReflect.Descriptor instead. +func (*GetNetworkHistoryStatusResponse) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{311} } -func (x *GetPartyActivityStreakRequest) GetPartyId() string { +func (x *GetNetworkHistoryStatusResponse) GetIpfsAddress() string { if x != nil { - return x.PartyId + return x.IpfsAddress } return "" } -func (x *GetPartyActivityStreakRequest) GetEpoch() uint64 { - if x != nil && x.Epoch != nil { - return *x.Epoch +func (x *GetNetworkHistoryStatusResponse) GetSwarmKey() string { + if x != nil { + return x.SwarmKey } - return 0 + return "" } -// Response when getting a party's activity streaks across epochs -type GetPartyActivityStreakResponse struct { +func (x *GetNetworkHistoryStatusResponse) GetSwarmKeySeed() string { + if x != nil { + return x.SwarmKeySeed + } + return "" +} + +func (x *GetNetworkHistoryStatusResponse) GetConnectedPeers() []string { + if x != nil { + return x.ConnectedPeers + } + return nil +} + +// Request to get the nodes network history bootstrap peers +type GetNetworkHistoryBootstrapPeersRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // Party's activity streak in a given epoch. - ActivityStreak *v1.PartyActivityStreak `protobuf:"bytes,1,opt,name=activity_streak,json=activityStreak,proto3" json:"activity_streak,omitempty"` } -func (x *GetPartyActivityStreakResponse) Reset() { - *x = GetPartyActivityStreakResponse{} +func (x *GetNetworkHistoryBootstrapPeersRequest) Reset() { + *x = GetNetworkHistoryBootstrapPeersRequest{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[308] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[312] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetPartyActivityStreakResponse) String() string { +func (x *GetNetworkHistoryBootstrapPeersRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetPartyActivityStreakResponse) ProtoMessage() {} +func (*GetNetworkHistoryBootstrapPeersRequest) ProtoMessage() {} -func (x *GetPartyActivityStreakResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[308] +func (x *GetNetworkHistoryBootstrapPeersRequest) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[312] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18868,53 +18902,38 @@ func (x *GetPartyActivityStreakResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetPartyActivityStreakResponse.ProtoReflect.Descriptor instead. -func (*GetPartyActivityStreakResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{308} -} - -func (x *GetPartyActivityStreakResponse) GetActivityStreak() *v1.PartyActivityStreak { - if x != nil { - return x.ActivityStreak - } - return nil +// Deprecated: Use GetNetworkHistoryBootstrapPeersRequest.ProtoReflect.Descriptor instead. +func (*GetNetworkHistoryBootstrapPeersRequest) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{312} } -// A funding payment for a party on a perpetual market -type FundingPayment struct { +// Response containing the nodes network history bootstrap peers +type GetNetworkHistoryBootstrapPeersResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Party that received the funding payment. - PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` - // Market that produced the funding payment. - MarketId string `protobuf:"bytes,2,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` - // Funding period sequence this payment was calculated from. - FundingPeriodSeq uint64 `protobuf:"varint,3,opt,name=funding_period_seq,json=fundingPeriodSeq,proto3" json:"funding_period_seq,omitempty"` - // Timestamp, in Unix nanoseconds, at which this funding payment occurred. - Timestamp int64 `protobuf:"varint,4,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - // Funding payment amount, where a positive value indicates an earned payment received and a negative value a loss. - Amount string `protobuf:"bytes,5,opt,name=amount,proto3" json:"amount,omitempty"` + // List of peers that can be used to bootstrap a Vega data node. + BootstrapPeers []string `protobuf:"bytes,1,rep,name=bootstrap_peers,json=bootstrapPeers,proto3" json:"bootstrap_peers,omitempty"` } -func (x *FundingPayment) Reset() { - *x = FundingPayment{} +func (x *GetNetworkHistoryBootstrapPeersResponse) Reset() { + *x = GetNetworkHistoryBootstrapPeersResponse{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[309] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[313] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FundingPayment) String() string { +func (x *GetNetworkHistoryBootstrapPeersResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FundingPayment) ProtoMessage() {} +func (*GetNetworkHistoryBootstrapPeersResponse) ProtoMessage() {} -func (x *FundingPayment) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[309] +func (x *GetNetworkHistoryBootstrapPeersResponse) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[313] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -18925,77 +18944,53 @@ func (x *FundingPayment) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FundingPayment.ProtoReflect.Descriptor instead. -func (*FundingPayment) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{309} -} - -func (x *FundingPayment) GetPartyId() string { - if x != nil { - return x.PartyId - } - return "" -} - -func (x *FundingPayment) GetMarketId() string { - if x != nil { - return x.MarketId - } - return "" -} - -func (x *FundingPayment) GetFundingPeriodSeq() uint64 { - if x != nil { - return x.FundingPeriodSeq - } - return 0 -} - -func (x *FundingPayment) GetTimestamp() int64 { - if x != nil { - return x.Timestamp - } - return 0 +// Deprecated: Use GetNetworkHistoryBootstrapPeersResponse.ProtoReflect.Descriptor instead. +func (*GetNetworkHistoryBootstrapPeersResponse) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{313} } -func (x *FundingPayment) GetAmount() string { +func (x *GetNetworkHistoryBootstrapPeersResponse) GetBootstrapPeers() []string { if x != nil { - return x.Amount + return x.BootstrapPeers } - return "" + return nil } -// Request to list a a party's funding payments -type ListFundingPaymentsRequest struct { +// Request to export network history data in CSV format +type ExportNetworkHistoryRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Party ID to get funding payment for. - PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` - // Restrict funding payments returned to those generated by the given market. - MarketId *string `protobuf:"bytes,2,opt,name=market_id,json=marketId,proto3,oneof" json:"market_id,omitempty"` - // Pagination controls. - Pagination *Pagination `protobuf:"bytes,3,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + // Block to begin exporting from. Must be the first block of a history segment, + // which by default are 1000 blocks each; in that case - 1, 1001, 2001 etc. are valid values. + // This can be checked by first calling the API to list all network history segments. + FromBlock int64 `protobuf:"varint,1,opt,name=from_block,json=fromBlock,proto3" json:"from_block,omitempty"` + // Last block to export up to and including. Must be the last block of a history segment + // which by default are 1000 blocks each; in that case - 1000, 2000, 3000 etc. are valid values. + // This can be checked by first calling the API to list all network history segments. + ToBlock int64 `protobuf:"varint,2,opt,name=to_block,json=toBlock,proto3" json:"to_block,omitempty"` + // Table to export data from. + Table Table `protobuf:"varint,3,opt,name=table,proto3,enum=datanode.api.v2.Table" json:"table,omitempty"` } -func (x *ListFundingPaymentsRequest) Reset() { - *x = ListFundingPaymentsRequest{} +func (x *ExportNetworkHistoryRequest) Reset() { + *x = ExportNetworkHistoryRequest{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[310] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[314] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListFundingPaymentsRequest) String() string { +func (x *ExportNetworkHistoryRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListFundingPaymentsRequest) ProtoMessage() {} +func (*ExportNetworkHistoryRequest) ProtoMessage() {} -func (x *ListFundingPaymentsRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[310] +func (x *ExportNetworkHistoryRequest) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[314] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19006,61 +19001,59 @@ func (x *ListFundingPaymentsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListFundingPaymentsRequest.ProtoReflect.Descriptor instead. -func (*ListFundingPaymentsRequest) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{310} +// Deprecated: Use ExportNetworkHistoryRequest.ProtoReflect.Descriptor instead. +func (*ExportNetworkHistoryRequest) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{314} } -func (x *ListFundingPaymentsRequest) GetPartyId() string { +func (x *ExportNetworkHistoryRequest) GetFromBlock() int64 { if x != nil { - return x.PartyId + return x.FromBlock } - return "" + return 0 } -func (x *ListFundingPaymentsRequest) GetMarketId() string { - if x != nil && x.MarketId != nil { - return *x.MarketId +func (x *ExportNetworkHistoryRequest) GetToBlock() int64 { + if x != nil { + return x.ToBlock } - return "" + return 0 } -func (x *ListFundingPaymentsRequest) GetPagination() *Pagination { +func (x *ExportNetworkHistoryRequest) GetTable() Table { if x != nil { - return x.Pagination + return x.Table } - return nil + return Table_TABLE_UNSPECIFIED } -// Funding payment data with the corresponding cursor. -type FundingPaymentEdge struct { +// Request to list all entities that were created by the given transaction hash +type ListEntitiesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Funding payment data. - Node *FundingPayment `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Transaction hash to match against + TransactionHash string `protobuf:"bytes,1,opt,name=transaction_hash,json=transactionHash,proto3" json:"transaction_hash,omitempty"` } -func (x *FundingPaymentEdge) Reset() { - *x = FundingPaymentEdge{} +func (x *ListEntitiesRequest) Reset() { + *x = ListEntitiesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[311] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[315] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FundingPaymentEdge) String() string { +func (x *ListEntitiesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FundingPaymentEdge) ProtoMessage() {} +func (*ListEntitiesRequest) ProtoMessage() {} -func (x *FundingPaymentEdge) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[311] +func (x *ListEntitiesRequest) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[315] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19071,54 +19064,71 @@ func (x *FundingPaymentEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FundingPaymentEdge.ProtoReflect.Descriptor instead. -func (*FundingPaymentEdge) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{311} -} - -func (x *FundingPaymentEdge) GetNode() *FundingPayment { - if x != nil { - return x.Node - } - return nil +// Deprecated: Use ListEntitiesRequest.ProtoReflect.Descriptor instead. +func (*ListEntitiesRequest) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{315} } -func (x *FundingPaymentEdge) GetCursor() string { +func (x *ListEntitiesRequest) GetTransactionHash() string { if x != nil { - return x.Cursor + return x.TransactionHash } return "" } -// Page of funding payment data and corresponding page information. -type FundingPaymentConnection struct { +// Response from listing entities that were created for a given transaction hash +type ListEntitiesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of funding payment data and their corresponding cursors. - Edges []*FundingPaymentEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + Accounts []*vega.Account `protobuf:"bytes,1,rep,name=accounts,proto3" json:"accounts,omitempty"` + Orders []*vega.Order `protobuf:"bytes,2,rep,name=orders,proto3" json:"orders,omitempty"` + Positions []*vega.Position `protobuf:"bytes,3,rep,name=positions,proto3" json:"positions,omitempty"` + LedgerEntries []*vega.LedgerEntry `protobuf:"bytes,4,rep,name=ledger_entries,json=ledgerEntries,proto3" json:"ledger_entries,omitempty"` + BalanceChanges []*AccountBalance `protobuf:"bytes,5,rep,name=balance_changes,json=balanceChanges,proto3" json:"balance_changes,omitempty"` + Transfers []*v1.Transfer `protobuf:"bytes,6,rep,name=transfers,proto3" json:"transfers,omitempty"` + Votes []*vega.Vote `protobuf:"bytes,7,rep,name=votes,proto3" json:"votes,omitempty"` + Erc20MultiSigSignerAddedBundles []*ERC20MultiSigSignerAddedBundle `protobuf:"bytes,8,rep,name=erc20_multi_sig_signer_added_bundles,json=erc20MultiSigSignerAddedBundles,proto3" json:"erc20_multi_sig_signer_added_bundles,omitempty"` + Erc20MultiSigSignerRemovedBundles []*ERC20MultiSigSignerRemovedBundle `protobuf:"bytes,9,rep,name=erc20_multi_sig_signer_removed_bundles,json=erc20MultiSigSignerRemovedBundles,proto3" json:"erc20_multi_sig_signer_removed_bundles,omitempty"` + Trades []*vega.Trade `protobuf:"bytes,10,rep,name=trades,proto3" json:"trades,omitempty"` + OracleSpecs []*vega.OracleSpec `protobuf:"bytes,11,rep,name=oracle_specs,json=oracleSpecs,proto3" json:"oracle_specs,omitempty"` + OracleData []*vega.OracleData `protobuf:"bytes,12,rep,name=oracle_data,json=oracleData,proto3" json:"oracle_data,omitempty"` + Markets []*vega.Market `protobuf:"bytes,13,rep,name=markets,proto3" json:"markets,omitempty"` + Parties []*vega.Party `protobuf:"bytes,14,rep,name=parties,proto3" json:"parties,omitempty"` + MarginLevels []*vega.MarginLevels `protobuf:"bytes,15,rep,name=margin_levels,json=marginLevels,proto3" json:"margin_levels,omitempty"` + Rewards []*vega.Reward `protobuf:"bytes,16,rep,name=rewards,proto3" json:"rewards,omitempty"` + Deposits []*vega.Deposit `protobuf:"bytes,17,rep,name=deposits,proto3" json:"deposits,omitempty"` + Withdrawals []*vega.Withdrawal `protobuf:"bytes,18,rep,name=withdrawals,proto3" json:"withdrawals,omitempty"` + Assets []*vega.Asset `protobuf:"bytes,19,rep,name=assets,proto3" json:"assets,omitempty"` + LiquidityProvisions []*vega.LiquidityProvision `protobuf:"bytes,20,rep,name=liquidity_provisions,json=liquidityProvisions,proto3" json:"liquidity_provisions,omitempty"` + Proposals []*vega.Proposal `protobuf:"bytes,21,rep,name=proposals,proto3" json:"proposals,omitempty"` + Delegations []*vega.Delegation `protobuf:"bytes,22,rep,name=delegations,proto3" json:"delegations,omitempty"` + Nodes []*NodeBasic `protobuf:"bytes,23,rep,name=nodes,proto3" json:"nodes,omitempty"` + NodeSignatures []*v11.NodeSignature `protobuf:"bytes,24,rep,name=node_signatures,json=nodeSignatures,proto3" json:"node_signatures,omitempty"` + NetworkParameters []*vega.NetworkParameter `protobuf:"bytes,25,rep,name=network_parameters,json=networkParameters,proto3" json:"network_parameters,omitempty"` + KeyRotations []*v1.KeyRotation `protobuf:"bytes,26,rep,name=key_rotations,json=keyRotations,proto3" json:"key_rotations,omitempty"` + EthereumKeyRotations []*v1.EthereumKeyRotation `protobuf:"bytes,27,rep,name=ethereum_key_rotations,json=ethereumKeyRotations,proto3" json:"ethereum_key_rotations,omitempty"` + ProtocolUpgradeProposals []*v1.ProtocolUpgradeEvent `protobuf:"bytes,28,rep,name=protocol_upgrade_proposals,json=protocolUpgradeProposals,proto3" json:"protocol_upgrade_proposals,omitempty"` } -func (x *FundingPaymentConnection) Reset() { - *x = FundingPaymentConnection{} +func (x *ListEntitiesResponse) Reset() { + *x = ListEntitiesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[312] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[316] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FundingPaymentConnection) String() string { +func (x *ListEntitiesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FundingPaymentConnection) ProtoMessage() {} +func (*ListEntitiesResponse) ProtoMessage() {} -func (x *FundingPaymentConnection) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[312] +func (x *ListEntitiesResponse) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[316] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19129,228 +19139,236 @@ func (x *FundingPaymentConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FundingPaymentConnection.ProtoReflect.Descriptor instead. -func (*FundingPaymentConnection) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{312} +// Deprecated: Use ListEntitiesResponse.ProtoReflect.Descriptor instead. +func (*ListEntitiesResponse) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{316} } -func (x *FundingPaymentConnection) GetEdges() []*FundingPaymentEdge { +func (x *ListEntitiesResponse) GetAccounts() []*vega.Account { if x != nil { - return x.Edges + return x.Accounts } return nil } -func (x *FundingPaymentConnection) GetPageInfo() *PageInfo { +func (x *ListEntitiesResponse) GetOrders() []*vega.Order { if x != nil { - return x.PageInfo + return x.Orders } return nil } -// Response from listing funding payments -type ListFundingPaymentsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Page of funding period data and corresponding page information. - FundingPayments *FundingPaymentConnection `protobuf:"bytes,1,opt,name=funding_payments,json=fundingPayments,proto3" json:"funding_payments,omitempty"` +func (x *ListEntitiesResponse) GetPositions() []*vega.Position { + if x != nil { + return x.Positions + } + return nil } -func (x *ListFundingPaymentsResponse) Reset() { - *x = ListFundingPaymentsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[313] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *ListEntitiesResponse) GetLedgerEntries() []*vega.LedgerEntry { + if x != nil { + return x.LedgerEntries } + return nil } -func (x *ListFundingPaymentsResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *ListEntitiesResponse) GetBalanceChanges() []*AccountBalance { + if x != nil { + return x.BalanceChanges + } + return nil } -func (*ListFundingPaymentsResponse) ProtoMessage() {} +func (x *ListEntitiesResponse) GetTransfers() []*v1.Transfer { + if x != nil { + return x.Transfers + } + return nil +} -func (x *ListFundingPaymentsResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[313] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *ListEntitiesResponse) GetVotes() []*vega.Vote { + if x != nil { + return x.Votes } - return mi.MessageOf(x) + return nil } -// Deprecated: Use ListFundingPaymentsResponse.ProtoReflect.Descriptor instead. -func (*ListFundingPaymentsResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{313} +func (x *ListEntitiesResponse) GetErc20MultiSigSignerAddedBundles() []*ERC20MultiSigSignerAddedBundle { + if x != nil { + return x.Erc20MultiSigSignerAddedBundles + } + return nil } -func (x *ListFundingPaymentsResponse) GetFundingPayments() *FundingPaymentConnection { +func (x *ListEntitiesResponse) GetErc20MultiSigSignerRemovedBundles() []*ERC20MultiSigSignerRemovedBundle { if x != nil { - return x.FundingPayments + return x.Erc20MultiSigSignerRemovedBundles } return nil } -// Request to list a perpetual market's funding periods -type ListFundingPeriodsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *ListEntitiesResponse) GetTrades() []*vega.Trade { + if x != nil { + return x.Trades + } + return nil +} - // Market ID to get funding periods for. - MarketId string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` - // Restrict the funding periods to those within the given date range. - DateRange *DateRange `protobuf:"bytes,2,opt,name=date_range,json=dateRange,proto3,oneof" json:"date_range,omitempty"` - // Pagination controls. - Pagination *Pagination `protobuf:"bytes,3,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` +func (x *ListEntitiesResponse) GetOracleSpecs() []*vega.OracleSpec { + if x != nil { + return x.OracleSpecs + } + return nil } -func (x *ListFundingPeriodsRequest) Reset() { - *x = ListFundingPeriodsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[314] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *ListEntitiesResponse) GetOracleData() []*vega.OracleData { + if x != nil { + return x.OracleData } + return nil } -func (x *ListFundingPeriodsRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *ListEntitiesResponse) GetMarkets() []*vega.Market { + if x != nil { + return x.Markets + } + return nil } -func (*ListFundingPeriodsRequest) ProtoMessage() {} +func (x *ListEntitiesResponse) GetParties() []*vega.Party { + if x != nil { + return x.Parties + } + return nil +} -func (x *ListFundingPeriodsRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[314] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *ListEntitiesResponse) GetMarginLevels() []*vega.MarginLevels { + if x != nil { + return x.MarginLevels } - return mi.MessageOf(x) + return nil } -// Deprecated: Use ListFundingPeriodsRequest.ProtoReflect.Descriptor instead. -func (*ListFundingPeriodsRequest) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{314} +func (x *ListEntitiesResponse) GetRewards() []*vega.Reward { + if x != nil { + return x.Rewards + } + return nil } -func (x *ListFundingPeriodsRequest) GetMarketId() string { +func (x *ListEntitiesResponse) GetDeposits() []*vega.Deposit { if x != nil { - return x.MarketId + return x.Deposits } - return "" + return nil } -func (x *ListFundingPeriodsRequest) GetDateRange() *DateRange { +func (x *ListEntitiesResponse) GetWithdrawals() []*vega.Withdrawal { if x != nil { - return x.DateRange + return x.Withdrawals } return nil } -func (x *ListFundingPeriodsRequest) GetPagination() *Pagination { +func (x *ListEntitiesResponse) GetAssets() []*vega.Asset { if x != nil { - return x.Pagination + return x.Assets } return nil } -// Funding period data with the corresponding cursor. -type FundingPeriodEdge struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *ListEntitiesResponse) GetLiquidityProvisions() []*vega.LiquidityProvision { + if x != nil { + return x.LiquidityProvisions + } + return nil +} - // Funding period data. - Node *v1.FundingPeriod `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` +func (x *ListEntitiesResponse) GetProposals() []*vega.Proposal { + if x != nil { + return x.Proposals + } + return nil } -func (x *FundingPeriodEdge) Reset() { - *x = FundingPeriodEdge{} - if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[315] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *ListEntitiesResponse) GetDelegations() []*vega.Delegation { + if x != nil { + return x.Delegations } + return nil } -func (x *FundingPeriodEdge) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *ListEntitiesResponse) GetNodes() []*NodeBasic { + if x != nil { + return x.Nodes + } + return nil } -func (*FundingPeriodEdge) ProtoMessage() {} +func (x *ListEntitiesResponse) GetNodeSignatures() []*v11.NodeSignature { + if x != nil { + return x.NodeSignatures + } + return nil +} -func (x *FundingPeriodEdge) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[315] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *ListEntitiesResponse) GetNetworkParameters() []*vega.NetworkParameter { + if x != nil { + return x.NetworkParameters } - return mi.MessageOf(x) + return nil } -// Deprecated: Use FundingPeriodEdge.ProtoReflect.Descriptor instead. -func (*FundingPeriodEdge) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{315} +func (x *ListEntitiesResponse) GetKeyRotations() []*v1.KeyRotation { + if x != nil { + return x.KeyRotations + } + return nil } -func (x *FundingPeriodEdge) GetNode() *v1.FundingPeriod { +func (x *ListEntitiesResponse) GetEthereumKeyRotations() []*v1.EthereumKeyRotation { if x != nil { - return x.Node + return x.EthereumKeyRotations } return nil } -func (x *FundingPeriodEdge) GetCursor() string { +func (x *ListEntitiesResponse) GetProtocolUpgradeProposals() []*v1.ProtocolUpgradeEvent { if x != nil { - return x.Cursor + return x.ProtocolUpgradeProposals } - return "" + return nil } -// Page of funding period data and corresponding page information. -type FundingPeriodConnection struct { +// Request to get a party's activity streaks across epochs +type GetPartyActivityStreakRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of funding period data and their corresponding cursors. - Edges []*FundingPeriodEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` -} - -func (x *FundingPeriodConnection) Reset() { - *x = FundingPeriodConnection{} + // Party ID to get the activity streak for. + PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` + // Epoch to get the activity streak for. If not set, the last complete epoch is used. + Epoch *uint64 `protobuf:"varint,2,opt,name=epoch,proto3,oneof" json:"epoch,omitempty"` +} + +func (x *GetPartyActivityStreakRequest) Reset() { + *x = GetPartyActivityStreakRequest{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[316] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[317] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FundingPeriodConnection) String() string { +func (x *GetPartyActivityStreakRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FundingPeriodConnection) ProtoMessage() {} +func (*GetPartyActivityStreakRequest) ProtoMessage() {} -func (x *FundingPeriodConnection) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[316] +func (x *GetPartyActivityStreakRequest) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[317] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19361,52 +19379,52 @@ func (x *FundingPeriodConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FundingPeriodConnection.ProtoReflect.Descriptor instead. -func (*FundingPeriodConnection) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{316} +// Deprecated: Use GetPartyActivityStreakRequest.ProtoReflect.Descriptor instead. +func (*GetPartyActivityStreakRequest) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{317} } -func (x *FundingPeriodConnection) GetEdges() []*FundingPeriodEdge { +func (x *GetPartyActivityStreakRequest) GetPartyId() string { if x != nil { - return x.Edges + return x.PartyId } - return nil + return "" } -func (x *FundingPeriodConnection) GetPageInfo() *PageInfo { - if x != nil { - return x.PageInfo +func (x *GetPartyActivityStreakRequest) GetEpoch() uint64 { + if x != nil && x.Epoch != nil { + return *x.Epoch } - return nil + return 0 } -// Response from listing funding periods -type ListFundingPeriodsResponse struct { +// Response when getting a party's activity streaks across epochs +type GetPartyActivityStreakResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of funding period data and corresponding page information. - FundingPeriods *FundingPeriodConnection `protobuf:"bytes,1,opt,name=funding_periods,json=fundingPeriods,proto3" json:"funding_periods,omitempty"` + // Party's activity streak in a given epoch. + ActivityStreak *v1.PartyActivityStreak `protobuf:"bytes,1,opt,name=activity_streak,json=activityStreak,proto3" json:"activity_streak,omitempty"` } -func (x *ListFundingPeriodsResponse) Reset() { - *x = ListFundingPeriodsResponse{} +func (x *GetPartyActivityStreakResponse) Reset() { + *x = GetPartyActivityStreakResponse{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[317] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[318] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListFundingPeriodsResponse) String() string { +func (x *GetPartyActivityStreakResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListFundingPeriodsResponse) ProtoMessage() {} +func (*GetPartyActivityStreakResponse) ProtoMessage() {} -func (x *ListFundingPeriodsResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[317] +func (x *GetPartyActivityStreakResponse) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[318] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19417,52 +19435,53 @@ func (x *ListFundingPeriodsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListFundingPeriodsResponse.ProtoReflect.Descriptor instead. -func (*ListFundingPeriodsResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{317} +// Deprecated: Use GetPartyActivityStreakResponse.ProtoReflect.Descriptor instead. +func (*GetPartyActivityStreakResponse) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{318} } -func (x *ListFundingPeriodsResponse) GetFundingPeriods() *FundingPeriodConnection { +func (x *GetPartyActivityStreakResponse) GetActivityStreak() *v1.PartyActivityStreak { if x != nil { - return x.FundingPeriods + return x.ActivityStreak } return nil } -type ListFundingPeriodDataPointsRequest struct { +// A funding payment for a party on a perpetual market +type FundingPayment struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Market ID to get funding period data points for. - MarketId string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` - // Restrict the data points to those within the given date range. - DateRange *DateRange `protobuf:"bytes,2,opt,name=date_range,json=dateRange,proto3,oneof" json:"date_range,omitempty"` - // Restrict the data points to those with the given source type. - Source *v1.FundingPeriodDataPoint_Source `protobuf:"varint,3,opt,name=source,proto3,enum=vega.events.v1.FundingPeriodDataPoint_Source,oneof" json:"source,omitempty"` - // Restrict the data points to those that contributed to the given funding period sequence. - Seq *uint64 `protobuf:"varint,4,opt,name=seq,proto3,oneof" json:"seq,omitempty"` - // Pagination controls. - Pagination *Pagination `protobuf:"bytes,5,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + // Party that received the funding payment. + PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` + // Market that produced the funding payment. + MarketId string `protobuf:"bytes,2,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` + // Funding period sequence this payment was calculated from. + FundingPeriodSeq uint64 `protobuf:"varint,3,opt,name=funding_period_seq,json=fundingPeriodSeq,proto3" json:"funding_period_seq,omitempty"` + // Timestamp, in Unix nanoseconds, at which this funding payment occurred. + Timestamp int64 `protobuf:"varint,4,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + // Funding payment amount, where a positive value indicates an earned payment received and a negative value a loss. + Amount string `protobuf:"bytes,5,opt,name=amount,proto3" json:"amount,omitempty"` } -func (x *ListFundingPeriodDataPointsRequest) Reset() { - *x = ListFundingPeriodDataPointsRequest{} +func (x *FundingPayment) Reset() { + *x = FundingPayment{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[318] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[319] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListFundingPeriodDataPointsRequest) String() string { +func (x *FundingPayment) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListFundingPeriodDataPointsRequest) ProtoMessage() {} +func (*FundingPayment) ProtoMessage() {} -func (x *ListFundingPeriodDataPointsRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[318] +func (x *FundingPayment) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[319] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19473,75 +19492,77 @@ func (x *ListFundingPeriodDataPointsRequest) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use ListFundingPeriodDataPointsRequest.ProtoReflect.Descriptor instead. -func (*ListFundingPeriodDataPointsRequest) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{318} +// Deprecated: Use FundingPayment.ProtoReflect.Descriptor instead. +func (*FundingPayment) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{319} } -func (x *ListFundingPeriodDataPointsRequest) GetMarketId() string { +func (x *FundingPayment) GetPartyId() string { if x != nil { - return x.MarketId + return x.PartyId } return "" } -func (x *ListFundingPeriodDataPointsRequest) GetDateRange() *DateRange { +func (x *FundingPayment) GetMarketId() string { if x != nil { - return x.DateRange + return x.MarketId } - return nil + return "" } -func (x *ListFundingPeriodDataPointsRequest) GetSource() v1.FundingPeriodDataPoint_Source { - if x != nil && x.Source != nil { - return *x.Source +func (x *FundingPayment) GetFundingPeriodSeq() uint64 { + if x != nil { + return x.FundingPeriodSeq } - return v1.FundingPeriodDataPoint_Source(0) + return 0 } -func (x *ListFundingPeriodDataPointsRequest) GetSeq() uint64 { - if x != nil && x.Seq != nil { - return *x.Seq +func (x *FundingPayment) GetTimestamp() int64 { + if x != nil { + return x.Timestamp } return 0 } -func (x *ListFundingPeriodDataPointsRequest) GetPagination() *Pagination { +func (x *FundingPayment) GetAmount() string { if x != nil { - return x.Pagination + return x.Amount } - return nil + return "" } -// Funding period data point with the corresponding cursor. -type FundingPeriodDataPointEdge struct { +// Request to list a a party's funding payments +type ListFundingPaymentsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Funding period data point. - Node *v1.FundingPeriodDataPoint `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Party ID to get funding payment for. + PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` + // Restrict funding payments returned to those generated by the given market. + MarketId *string `protobuf:"bytes,2,opt,name=market_id,json=marketId,proto3,oneof" json:"market_id,omitempty"` + // Pagination controls. + Pagination *Pagination `protobuf:"bytes,3,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` } -func (x *FundingPeriodDataPointEdge) Reset() { - *x = FundingPeriodDataPointEdge{} +func (x *ListFundingPaymentsRequest) Reset() { + *x = ListFundingPaymentsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[319] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[320] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FundingPeriodDataPointEdge) String() string { +func (x *ListFundingPaymentsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FundingPeriodDataPointEdge) ProtoMessage() {} +func (*ListFundingPaymentsRequest) ProtoMessage() {} -func (x *FundingPeriodDataPointEdge) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[319] +func (x *ListFundingPaymentsRequest) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[320] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19552,54 +19573,61 @@ func (x *FundingPeriodDataPointEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FundingPeriodDataPointEdge.ProtoReflect.Descriptor instead. -func (*FundingPeriodDataPointEdge) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{319} +// Deprecated: Use ListFundingPaymentsRequest.ProtoReflect.Descriptor instead. +func (*ListFundingPaymentsRequest) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{320} } -func (x *FundingPeriodDataPointEdge) GetNode() *v1.FundingPeriodDataPoint { +func (x *ListFundingPaymentsRequest) GetPartyId() string { if x != nil { - return x.Node + return x.PartyId } - return nil + return "" } -func (x *FundingPeriodDataPointEdge) GetCursor() string { - if x != nil { - return x.Cursor +func (x *ListFundingPaymentsRequest) GetMarketId() string { + if x != nil && x.MarketId != nil { + return *x.MarketId } return "" } -// Page of funding period data points and corresponding page information. -type FundingPeriodDataPointConnection struct { +func (x *ListFundingPaymentsRequest) GetPagination() *Pagination { + if x != nil { + return x.Pagination + } + return nil +} + +// Funding payment data with the corresponding cursor. +type FundingPaymentEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of funding period data points and their corresponding cursors. - Edges []*FundingPeriodDataPointEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + // Funding payment data. + Node *FundingPayment `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *FundingPeriodDataPointConnection) Reset() { - *x = FundingPeriodDataPointConnection{} +func (x *FundingPaymentEdge) Reset() { + *x = FundingPaymentEdge{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[320] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[321] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FundingPeriodDataPointConnection) String() string { +func (x *FundingPaymentEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FundingPeriodDataPointConnection) ProtoMessage() {} +func (*FundingPaymentEdge) ProtoMessage() {} -func (x *FundingPeriodDataPointConnection) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[320] +func (x *FundingPaymentEdge) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[321] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19610,52 +19638,54 @@ func (x *FundingPeriodDataPointConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FundingPeriodDataPointConnection.ProtoReflect.Descriptor instead. -func (*FundingPeriodDataPointConnection) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{320} +// Deprecated: Use FundingPaymentEdge.ProtoReflect.Descriptor instead. +func (*FundingPaymentEdge) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{321} } -func (x *FundingPeriodDataPointConnection) GetEdges() []*FundingPeriodDataPointEdge { +func (x *FundingPaymentEdge) GetNode() *FundingPayment { if x != nil { - return x.Edges + return x.Node } return nil } -func (x *FundingPeriodDataPointConnection) GetPageInfo() *PageInfo { +func (x *FundingPaymentEdge) GetCursor() string { if x != nil { - return x.PageInfo + return x.Cursor } - return nil + return "" } -// Response from listing funding period data points. -type ListFundingPeriodDataPointsResponse struct { +// Page of funding payment data and corresponding page information. +type FundingPaymentConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of funding period data points and corresponding page information. - FundingPeriodDataPoints *FundingPeriodDataPointConnection `protobuf:"bytes,1,opt,name=funding_period_data_points,json=fundingPeriodDataPoints,proto3" json:"funding_period_data_points,omitempty"` + // Page of funding payment data and their corresponding cursors. + Edges []*FundingPaymentEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *ListFundingPeriodDataPointsResponse) Reset() { - *x = ListFundingPeriodDataPointsResponse{} +func (x *FundingPaymentConnection) Reset() { + *x = FundingPaymentConnection{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[321] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[322] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListFundingPeriodDataPointsResponse) String() string { +func (x *FundingPaymentConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListFundingPeriodDataPointsResponse) ProtoMessage() {} +func (*FundingPaymentConnection) ProtoMessage() {} -func (x *ListFundingPeriodDataPointsResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[321] +func (x *FundingPaymentConnection) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[322] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19666,42 +19696,52 @@ func (x *ListFundingPeriodDataPointsResponse) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use ListFundingPeriodDataPointsResponse.ProtoReflect.Descriptor instead. -func (*ListFundingPeriodDataPointsResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{321} +// Deprecated: Use FundingPaymentConnection.ProtoReflect.Descriptor instead. +func (*FundingPaymentConnection) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{322} } -func (x *ListFundingPeriodDataPointsResponse) GetFundingPeriodDataPoints() *FundingPeriodDataPointConnection { +func (x *FundingPaymentConnection) GetEdges() []*FundingPaymentEdge { if x != nil { - return x.FundingPeriodDataPoints + return x.Edges } return nil } -// Request to ping the data node -type PingRequest struct { +func (x *FundingPaymentConnection) GetPageInfo() *PageInfo { + if x != nil { + return x.PageInfo + } + return nil +} + +// Response from listing funding payments +type ListFundingPaymentsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Page of funding period data and corresponding page information. + FundingPayments *FundingPaymentConnection `protobuf:"bytes,1,opt,name=funding_payments,json=fundingPayments,proto3" json:"funding_payments,omitempty"` } -func (x *PingRequest) Reset() { - *x = PingRequest{} +func (x *ListFundingPaymentsResponse) Reset() { + *x = ListFundingPaymentsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[322] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[323] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PingRequest) String() string { +func (x *ListFundingPaymentsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PingRequest) ProtoMessage() {} +func (*ListFundingPaymentsResponse) ProtoMessage() {} -func (x *PingRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[322] +func (x *ListFundingPaymentsResponse) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[323] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19712,35 +19752,49 @@ func (x *PingRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PingRequest.ProtoReflect.Descriptor instead. -func (*PingRequest) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{322} +// Deprecated: Use ListFundingPaymentsResponse.ProtoReflect.Descriptor instead. +func (*ListFundingPaymentsResponse) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{323} } -// Ping response from the data node -type PingResponse struct { +func (x *ListFundingPaymentsResponse) GetFundingPayments() *FundingPaymentConnection { + if x != nil { + return x.FundingPayments + } + return nil +} + +// Request to list a perpetual market's funding periods +type ListFundingPeriodsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Market ID to get funding periods for. + MarketId string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` + // Restrict the funding periods to those within the given date range. + DateRange *DateRange `protobuf:"bytes,2,opt,name=date_range,json=dateRange,proto3,oneof" json:"date_range,omitempty"` + // Pagination controls. + Pagination *Pagination `protobuf:"bytes,3,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` } -func (x *PingResponse) Reset() { - *x = PingResponse{} +func (x *ListFundingPeriodsRequest) Reset() { + *x = ListFundingPeriodsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[323] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[324] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PingResponse) String() string { +func (x *ListFundingPeriodsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PingResponse) ProtoMessage() {} +func (*ListFundingPeriodsRequest) ProtoMessage() {} -func (x *PingResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[323] +func (x *ListFundingPeriodsRequest) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[324] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19751,45 +19805,61 @@ func (x *PingResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PingResponse.ProtoReflect.Descriptor instead. -func (*PingResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{323} +// Deprecated: Use ListFundingPeriodsRequest.ProtoReflect.Descriptor instead. +func (*ListFundingPeriodsRequest) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{324} } -// Basic description of an order. -type OrderInfo struct { +func (x *ListFundingPeriodsRequest) GetMarketId() string { + if x != nil { + return x.MarketId + } + return "" +} + +func (x *ListFundingPeriodsRequest) GetDateRange() *DateRange { + if x != nil { + return x.DateRange + } + return nil +} + +func (x *ListFundingPeriodsRequest) GetPagination() *Pagination { + if x != nil { + return x.Pagination + } + return nil +} + +// Funding period data with the corresponding cursor. +type FundingPeriodEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Side for the order, e.g. buy or sell. - Side vega.Side `protobuf:"varint,1,opt,name=side,proto3,enum=vega.Side" json:"side,omitempty"` - // Price for the order. The price is an unsigned integer. For example `123456` is a correctly - // formatted price of `1.23456` assuming market configured to 5 decimal places. - Price string `protobuf:"bytes,2,opt,name=price,proto3" json:"price,omitempty"` - // Size remaining. - Remaining uint64 `protobuf:"varint,3,opt,name=remaining,proto3" json:"remaining,omitempty"` - // Boolean that indicates if it is a market order. - IsMarketOrder bool `protobuf:"varint,4,opt,name=is_market_order,json=isMarketOrder,proto3" json:"is_market_order,omitempty"` + // Funding period data. + Node *v1.FundingPeriod `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *OrderInfo) Reset() { - *x = OrderInfo{} +func (x *FundingPeriodEdge) Reset() { + *x = FundingPeriodEdge{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[324] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[325] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *OrderInfo) String() string { +func (x *FundingPeriodEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*OrderInfo) ProtoMessage() {} +func (*FundingPeriodEdge) ProtoMessage() {} -func (x *OrderInfo) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[324] +func (x *FundingPeriodEdge) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[325] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19800,88 +19870,54 @@ func (x *OrderInfo) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use OrderInfo.ProtoReflect.Descriptor instead. -func (*OrderInfo) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{324} +// Deprecated: Use FundingPeriodEdge.ProtoReflect.Descriptor instead. +func (*FundingPeriodEdge) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{325} } -func (x *OrderInfo) GetSide() vega.Side { +func (x *FundingPeriodEdge) GetNode() *v1.FundingPeriod { if x != nil { - return x.Side + return x.Node } - return vega.Side(0) + return nil } -func (x *OrderInfo) GetPrice() string { +func (x *FundingPeriodEdge) GetCursor() string { if x != nil { - return x.Price + return x.Cursor } return "" } -func (x *OrderInfo) GetRemaining() uint64 { - if x != nil { - return x.Remaining - } - return 0 -} - -func (x *OrderInfo) GetIsMarketOrder() bool { - if x != nil { - return x.IsMarketOrder - } - return false -} - -// Request for the estimated margin level, margin account balance change, and liquidation price for the specified position. -type EstimatePositionRequest struct { +// Page of funding period data and corresponding page information. +type FundingPeriodConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Market ID to estimate position for. - MarketId string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` - // Open volume. This field is a signed integer scaled to the market's position decimal places. - // A negative number denotes a short position. - OpenVolume int64 `protobuf:"varint,2,opt,name=open_volume,json=openVolume,proto3" json:"open_volume,omitempty"` - // Average entry price corresponding to the open volume. The price is an unsigned integer. For example `123456` is a correctly - // formatted price of `1.23456` assuming market configured to 5 decimal places. - AverageEntryPrice string `protobuf:"bytes,3,opt,name=average_entry_price,json=averageEntryPrice,proto3" json:"average_entry_price,omitempty"` - // Open and/or hypothetical orders. - Orders []*OrderInfo `protobuf:"bytes,4,rep,name=orders,proto3" json:"orders,omitempty"` - // Margin account balance. Needs to scaled by asset decimal places. - MarginAccountBalance string `protobuf:"bytes,5,opt,name=margin_account_balance,json=marginAccountBalance,proto3" json:"margin_account_balance,omitempty"` - // General account balance. Needs to scaled by asset decimal places. - GeneralAccountBalance string `protobuf:"bytes,6,opt,name=general_account_balance,json=generalAccountBalance,proto3" json:"general_account_balance,omitempty"` - // Order margin account balance. Needs to be scaled by asset decimal places. - OrderMarginAccountBalance string `protobuf:"bytes,7,opt,name=order_margin_account_balance,json=orderMarginAccountBalance,proto3" json:"order_margin_account_balance,omitempty"` - // Margin mode for the party, cross margin or isolated margin. - MarginMode vega.MarginMode `protobuf:"varint,8,opt,name=margin_mode,json=marginMode,proto3,enum=vega.MarginMode" json:"margin_mode,omitempty"` - // Margin factor to be used along with isolated margin mode - MarginFactor *string `protobuf:"bytes,9,opt,name=margin_factor,json=marginFactor,proto3,oneof" json:"margin_factor,omitempty"` - // Whether the estimated position margin increase should be included in available collateral for liquidation price calculation in isolated margin mode. - IncludeRequiredPositionMarginInAvailableCollateral *bool `protobuf:"varint,10,opt,name=include_required_position_margin_in_available_collateral,json=includeRequiredPositionMarginInAvailableCollateral,proto3,oneof" json:"include_required_position_margin_in_available_collateral,omitempty"` - // Whether the liquidation price estimates should be scaled to market decimal places or by asset decimal places. If not set, asset decimal places are used. - ScaleLiquidationPriceToMarketDecimals *bool `protobuf:"varint,11,opt,name=scale_liquidation_price_to_market_decimals,json=scaleLiquidationPriceToMarketDecimals,proto3,oneof" json:"scale_liquidation_price_to_market_decimals,omitempty"` + // Page of funding period data and their corresponding cursors. + Edges []*FundingPeriodEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *EstimatePositionRequest) Reset() { - *x = EstimatePositionRequest{} +func (x *FundingPeriodConnection) Reset() { + *x = FundingPeriodConnection{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[325] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[326] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *EstimatePositionRequest) String() string { +func (x *FundingPeriodConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*EstimatePositionRequest) ProtoMessage() {} +func (*FundingPeriodConnection) ProtoMessage() {} -func (x *EstimatePositionRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[325] +func (x *FundingPeriodConnection) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[326] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -19892,119 +19928,108 @@ func (x *EstimatePositionRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use EstimatePositionRequest.ProtoReflect.Descriptor instead. -func (*EstimatePositionRequest) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{325} +// Deprecated: Use FundingPeriodConnection.ProtoReflect.Descriptor instead. +func (*FundingPeriodConnection) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{326} } -func (x *EstimatePositionRequest) GetMarketId() string { +func (x *FundingPeriodConnection) GetEdges() []*FundingPeriodEdge { if x != nil { - return x.MarketId + return x.Edges } - return "" + return nil } -func (x *EstimatePositionRequest) GetOpenVolume() int64 { +func (x *FundingPeriodConnection) GetPageInfo() *PageInfo { if x != nil { - return x.OpenVolume + return x.PageInfo } - return 0 + return nil } -func (x *EstimatePositionRequest) GetAverageEntryPrice() string { - if x != nil { - return x.AverageEntryPrice - } - return "" -} +// Response from listing funding periods +type ListFundingPeriodsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *EstimatePositionRequest) GetOrders() []*OrderInfo { - if x != nil { - return x.Orders - } - return nil + // Page of funding period data and corresponding page information. + FundingPeriods *FundingPeriodConnection `protobuf:"bytes,1,opt,name=funding_periods,json=fundingPeriods,proto3" json:"funding_periods,omitempty"` } -func (x *EstimatePositionRequest) GetMarginAccountBalance() string { - if x != nil { - return x.MarginAccountBalance - } - return "" -} - -func (x *EstimatePositionRequest) GetGeneralAccountBalance() string { - if x != nil { - return x.GeneralAccountBalance +func (x *ListFundingPeriodsResponse) Reset() { + *x = ListFundingPeriodsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[327] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *EstimatePositionRequest) GetOrderMarginAccountBalance() string { - if x != nil { - return x.OrderMarginAccountBalance - } - return "" +func (x *ListFundingPeriodsResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *EstimatePositionRequest) GetMarginMode() vega.MarginMode { - if x != nil { - return x.MarginMode - } - return vega.MarginMode(0) -} +func (*ListFundingPeriodsResponse) ProtoMessage() {} -func (x *EstimatePositionRequest) GetMarginFactor() string { - if x != nil && x.MarginFactor != nil { - return *x.MarginFactor +func (x *ListFundingPeriodsResponse) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[327] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (x *EstimatePositionRequest) GetIncludeRequiredPositionMarginInAvailableCollateral() bool { - if x != nil && x.IncludeRequiredPositionMarginInAvailableCollateral != nil { - return *x.IncludeRequiredPositionMarginInAvailableCollateral - } - return false +// Deprecated: Use ListFundingPeriodsResponse.ProtoReflect.Descriptor instead. +func (*ListFundingPeriodsResponse) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{327} } -func (x *EstimatePositionRequest) GetScaleLiquidationPriceToMarketDecimals() bool { - if x != nil && x.ScaleLiquidationPriceToMarketDecimals != nil { - return *x.ScaleLiquidationPriceToMarketDecimals +func (x *ListFundingPeriodsResponse) GetFundingPeriods() *FundingPeriodConnection { + if x != nil { + return x.FundingPeriods } - return false + return nil } -// Response for the estimated margin level, margin account balance change, and liquidation price for the specified position. -type EstimatePositionResponse struct { +type ListFundingPeriodDataPointsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Margin level range estimate for the specified position. - Margin *MarginEstimate `protobuf:"bytes,1,opt,name=margin,proto3" json:"margin,omitempty"` - // Estimated margin account balance increase. - CollateralIncreaseEstimate *CollateralIncreaseEstimate `protobuf:"bytes,2,opt,name=collateral_increase_estimate,json=collateralIncreaseEstimate,proto3" json:"collateral_increase_estimate,omitempty"` - // Liquidation price range estimate for the specified position. Only populated if available collateral was specified in the request. - Liquidation *LiquidationEstimate `protobuf:"bytes,3,opt,name=liquidation,proto3" json:"liquidation,omitempty"` + // Market ID to get funding period data points for. + MarketId string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` + // Restrict the data points to those within the given date range. + DateRange *DateRange `protobuf:"bytes,2,opt,name=date_range,json=dateRange,proto3,oneof" json:"date_range,omitempty"` + // Restrict the data points to those with the given source type. + Source *v1.FundingPeriodDataPoint_Source `protobuf:"varint,3,opt,name=source,proto3,enum=vega.events.v1.FundingPeriodDataPoint_Source,oneof" json:"source,omitempty"` + // Restrict the data points to those that contributed to the given funding period sequence. + Seq *uint64 `protobuf:"varint,4,opt,name=seq,proto3,oneof" json:"seq,omitempty"` + // Pagination controls. + Pagination *Pagination `protobuf:"bytes,5,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` } -func (x *EstimatePositionResponse) Reset() { - *x = EstimatePositionResponse{} +func (x *ListFundingPeriodDataPointsRequest) Reset() { + *x = ListFundingPeriodDataPointsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[326] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[328] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *EstimatePositionResponse) String() string { +func (x *ListFundingPeriodDataPointsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*EstimatePositionResponse) ProtoMessage() {} +func (*ListFundingPeriodDataPointsRequest) ProtoMessage() {} -func (x *EstimatePositionResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[326] +func (x *ListFundingPeriodDataPointsRequest) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[328] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20015,61 +20040,75 @@ func (x *EstimatePositionResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use EstimatePositionResponse.ProtoReflect.Descriptor instead. -func (*EstimatePositionResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{326} +// Deprecated: Use ListFundingPeriodDataPointsRequest.ProtoReflect.Descriptor instead. +func (*ListFundingPeriodDataPointsRequest) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{328} } -func (x *EstimatePositionResponse) GetMargin() *MarginEstimate { +func (x *ListFundingPeriodDataPointsRequest) GetMarketId() string { if x != nil { - return x.Margin + return x.MarketId } - return nil + return "" } -func (x *EstimatePositionResponse) GetCollateralIncreaseEstimate() *CollateralIncreaseEstimate { +func (x *ListFundingPeriodDataPointsRequest) GetDateRange() *DateRange { if x != nil { - return x.CollateralIncreaseEstimate + return x.DateRange } return nil } -func (x *EstimatePositionResponse) GetLiquidation() *LiquidationEstimate { +func (x *ListFundingPeriodDataPointsRequest) GetSource() v1.FundingPeriodDataPoint_Source { + if x != nil && x.Source != nil { + return *x.Source + } + return v1.FundingPeriodDataPoint_Source(0) +} + +func (x *ListFundingPeriodDataPointsRequest) GetSeq() uint64 { + if x != nil && x.Seq != nil { + return *x.Seq + } + return 0 +} + +func (x *ListFundingPeriodDataPointsRequest) GetPagination() *Pagination { if x != nil { - return x.Liquidation + return x.Pagination } return nil } -// Estimates the additional funds needed to support the specified position -type CollateralIncreaseEstimate struct { +// Funding period data point with the corresponding cursor. +type FundingPeriodDataPointEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Estimate assuming slippage cap is applied - WorstCase string `protobuf:"bytes,1,opt,name=worst_case,json=worstCase,proto3" json:"worst_case,omitempty"` - // Estimate assuming no slippage - BestCase string `protobuf:"bytes,2,opt,name=best_case,json=bestCase,proto3" json:"best_case,omitempty"` + // Funding period data point. + Node *v1.FundingPeriodDataPoint `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *CollateralIncreaseEstimate) Reset() { - *x = CollateralIncreaseEstimate{} +func (x *FundingPeriodDataPointEdge) Reset() { + *x = FundingPeriodDataPointEdge{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[327] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[329] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *CollateralIncreaseEstimate) String() string { +func (x *FundingPeriodDataPointEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*CollateralIncreaseEstimate) ProtoMessage() {} +func (*FundingPeriodDataPointEdge) ProtoMessage() {} -func (x *CollateralIncreaseEstimate) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[327] +func (x *FundingPeriodDataPointEdge) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[329] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20080,54 +20119,54 @@ func (x *CollateralIncreaseEstimate) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use CollateralIncreaseEstimate.ProtoReflect.Descriptor instead. -func (*CollateralIncreaseEstimate) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{327} +// Deprecated: Use FundingPeriodDataPointEdge.ProtoReflect.Descriptor instead. +func (*FundingPeriodDataPointEdge) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{329} } -func (x *CollateralIncreaseEstimate) GetWorstCase() string { +func (x *FundingPeriodDataPointEdge) GetNode() *v1.FundingPeriodDataPoint { if x != nil { - return x.WorstCase + return x.Node } - return "" + return nil } -func (x *CollateralIncreaseEstimate) GetBestCase() string { +func (x *FundingPeriodDataPointEdge) GetCursor() string { if x != nil { - return x.BestCase + return x.Cursor } return "" } -// Margin level estimate for both worst and best case possible. -type MarginEstimate struct { +// Page of funding period data points and corresponding page information. +type FundingPeriodDataPointConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Margin level estimate assuming slippage cap is applied. - WorstCase *vega.MarginLevels `protobuf:"bytes,1,opt,name=worst_case,json=worstCase,proto3" json:"worst_case,omitempty"` - // Margin level estimate assuming no slippage. - BestCase *vega.MarginLevels `protobuf:"bytes,2,opt,name=best_case,json=bestCase,proto3" json:"best_case,omitempty"` + // Page of funding period data points and their corresponding cursors. + Edges []*FundingPeriodDataPointEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *MarginEstimate) Reset() { - *x = MarginEstimate{} +func (x *FundingPeriodDataPointConnection) Reset() { + *x = FundingPeriodDataPointConnection{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[328] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[330] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *MarginEstimate) String() string { +func (x *FundingPeriodDataPointConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MarginEstimate) ProtoMessage() {} +func (*FundingPeriodDataPointConnection) ProtoMessage() {} -func (x *MarginEstimate) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[328] +func (x *FundingPeriodDataPointConnection) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[330] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20138,54 +20177,52 @@ func (x *MarginEstimate) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use MarginEstimate.ProtoReflect.Descriptor instead. -func (*MarginEstimate) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{328} +// Deprecated: Use FundingPeriodDataPointConnection.ProtoReflect.Descriptor instead. +func (*FundingPeriodDataPointConnection) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{330} } -func (x *MarginEstimate) GetWorstCase() *vega.MarginLevels { +func (x *FundingPeriodDataPointConnection) GetEdges() []*FundingPeriodDataPointEdge { if x != nil { - return x.WorstCase + return x.Edges } return nil } -func (x *MarginEstimate) GetBestCase() *vega.MarginLevels { +func (x *FundingPeriodDataPointConnection) GetPageInfo() *PageInfo { if x != nil { - return x.BestCase + return x.PageInfo } return nil } -// Liquidation estimate for both worst and best case possible. -type LiquidationEstimate struct { +// Response from listing funding period data points. +type ListFundingPeriodDataPointsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Liquidation price estimate assuming slippage cap is applied. - WorstCase *LiquidationPrice `protobuf:"bytes,1,opt,name=worst_case,json=worstCase,proto3" json:"worst_case,omitempty"` - // Liquidation price estimate assuming no slippage. - BestCase *LiquidationPrice `protobuf:"bytes,2,opt,name=best_case,json=bestCase,proto3" json:"best_case,omitempty"` + // Page of funding period data points and corresponding page information. + FundingPeriodDataPoints *FundingPeriodDataPointConnection `protobuf:"bytes,1,opt,name=funding_period_data_points,json=fundingPeriodDataPoints,proto3" json:"funding_period_data_points,omitempty"` } -func (x *LiquidationEstimate) Reset() { - *x = LiquidationEstimate{} +func (x *ListFundingPeriodDataPointsResponse) Reset() { + *x = ListFundingPeriodDataPointsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[329] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[331] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *LiquidationEstimate) String() string { +func (x *ListFundingPeriodDataPointsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LiquidationEstimate) ProtoMessage() {} +func (*ListFundingPeriodDataPointsResponse) ProtoMessage() {} -func (x *LiquidationEstimate) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[329] +func (x *ListFundingPeriodDataPointsResponse) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[331] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20196,56 +20233,42 @@ func (x *LiquidationEstimate) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LiquidationEstimate.ProtoReflect.Descriptor instead. -func (*LiquidationEstimate) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{329} -} - -func (x *LiquidationEstimate) GetWorstCase() *LiquidationPrice { - if x != nil { - return x.WorstCase - } - return nil +// Deprecated: Use ListFundingPeriodDataPointsResponse.ProtoReflect.Descriptor instead. +func (*ListFundingPeriodDataPointsResponse) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{331} } -func (x *LiquidationEstimate) GetBestCase() *LiquidationPrice { +func (x *ListFundingPeriodDataPointsResponse) GetFundingPeriodDataPoints() *FundingPeriodDataPointConnection { if x != nil { - return x.BestCase + return x.FundingPeriodDataPoints } return nil } -// Liquidation price estimate for either only the current open volume and position given some or all buy orders get filled, or position given some or all sell orders get filled. -type LiquidationPrice struct { +// Request to ping the data node +type PingRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields +} - // Liquidation price for current open volume ignoring any active orders. - OpenVolumeOnly string `protobuf:"bytes,1,opt,name=open_volume_only,json=openVolumeOnly,proto3" json:"open_volume_only,omitempty"` - // Liquidation price assuming buy orders start getting filled. - IncludingBuyOrders string `protobuf:"bytes,2,opt,name=including_buy_orders,json=includingBuyOrders,proto3" json:"including_buy_orders,omitempty"` - // Liquidation price assuming sell orders start getting filled. - IncludingSellOrders string `protobuf:"bytes,3,opt,name=including_sell_orders,json=includingSellOrders,proto3" json:"including_sell_orders,omitempty"` -} - -func (x *LiquidationPrice) Reset() { - *x = LiquidationPrice{} +func (x *PingRequest) Reset() { + *x = PingRequest{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[330] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[332] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *LiquidationPrice) String() string { +func (x *PingRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LiquidationPrice) ProtoMessage() {} +func (*PingRequest) ProtoMessage() {} -func (x *LiquidationPrice) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[330] +func (x *PingRequest) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[332] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20256,56 +20279,35 @@ func (x *LiquidationPrice) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LiquidationPrice.ProtoReflect.Descriptor instead. -func (*LiquidationPrice) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{330} -} - -func (x *LiquidationPrice) GetOpenVolumeOnly() string { - if x != nil { - return x.OpenVolumeOnly - } - return "" -} - -func (x *LiquidationPrice) GetIncludingBuyOrders() string { - if x != nil { - return x.IncludingBuyOrders - } - return "" -} - -func (x *LiquidationPrice) GetIncludingSellOrders() string { - if x != nil { - return x.IncludingSellOrders - } - return "" +// Deprecated: Use PingRequest.ProtoReflect.Descriptor instead. +func (*PingRequest) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{332} } -// Request to get the current referral program -type GetCurrentReferralProgramRequest struct { +// Ping response from the data node +type PingResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *GetCurrentReferralProgramRequest) Reset() { - *x = GetCurrentReferralProgramRequest{} +func (x *PingResponse) Reset() { + *x = PingResponse{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[331] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[333] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetCurrentReferralProgramRequest) String() string { +func (x *PingResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetCurrentReferralProgramRequest) ProtoMessage() {} +func (*PingResponse) ProtoMessage() {} -func (x *GetCurrentReferralProgramRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[331] +func (x *PingResponse) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[333] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20316,38 +20318,45 @@ func (x *GetCurrentReferralProgramRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetCurrentReferralProgramRequest.ProtoReflect.Descriptor instead. -func (*GetCurrentReferralProgramRequest) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{331} +// Deprecated: Use PingResponse.ProtoReflect.Descriptor instead. +func (*PingResponse) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{333} } -// Response containing the current referral program -type GetCurrentReferralProgramResponse struct { +// Basic description of an order. +type OrderInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Referral program currently activated on the network. - CurrentReferralProgram *ReferralProgram `protobuf:"bytes,1,opt,name=current_referral_program,json=currentReferralProgram,proto3" json:"current_referral_program,omitempty"` + // Side for the order, e.g. buy or sell. + Side vega.Side `protobuf:"varint,1,opt,name=side,proto3,enum=vega.Side" json:"side,omitempty"` + // Price for the order. The price is an unsigned integer. For example `123456` is a correctly + // formatted price of `1.23456` assuming market configured to 5 decimal places. + Price string `protobuf:"bytes,2,opt,name=price,proto3" json:"price,omitempty"` + // Size remaining. + Remaining uint64 `protobuf:"varint,3,opt,name=remaining,proto3" json:"remaining,omitempty"` + // Boolean that indicates if it is a market order. + IsMarketOrder bool `protobuf:"varint,4,opt,name=is_market_order,json=isMarketOrder,proto3" json:"is_market_order,omitempty"` } -func (x *GetCurrentReferralProgramResponse) Reset() { - *x = GetCurrentReferralProgramResponse{} +func (x *OrderInfo) Reset() { + *x = OrderInfo{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[332] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[334] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetCurrentReferralProgramResponse) String() string { +func (x *OrderInfo) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetCurrentReferralProgramResponse) ProtoMessage() {} +func (*OrderInfo) ProtoMessage() {} -func (x *GetCurrentReferralProgramResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[332] +func (x *OrderInfo) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[334] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20358,61 +20367,88 @@ func (x *GetCurrentReferralProgramResponse) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use GetCurrentReferralProgramResponse.ProtoReflect.Descriptor instead. -func (*GetCurrentReferralProgramResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{332} +// Deprecated: Use OrderInfo.ProtoReflect.Descriptor instead. +func (*OrderInfo) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{334} } -func (x *GetCurrentReferralProgramResponse) GetCurrentReferralProgram() *ReferralProgram { +func (x *OrderInfo) GetSide() vega.Side { if x != nil { - return x.CurrentReferralProgram + return x.Side } - return nil + return vega.Side(0) } -// Referral program details. -type ReferralProgram struct { +func (x *OrderInfo) GetPrice() string { + if x != nil { + return x.Price + } + return "" +} + +func (x *OrderInfo) GetRemaining() uint64 { + if x != nil { + return x.Remaining + } + return 0 +} + +func (x *OrderInfo) GetIsMarketOrder() bool { + if x != nil { + return x.IsMarketOrder + } + return false +} + +// Request for the estimated margin level, margin account balance change, and liquidation price for the specified position. +type EstimatePositionRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Incremental version of the program. It is incremented after each program - // update. - Version uint64 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` - // Unique ID generated from the proposal that created this program. - Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - // Defined tiers in increasing order. First element will give Tier 1, second - // element will give Tier 2, and so on. - BenefitTiers []*vega.BenefitTier `protobuf:"bytes,3,rep,name=benefit_tiers,json=benefitTiers,proto3" json:"benefit_tiers,omitempty"` - // Timestamp in Unix nanoseconds, after which when the current epoch ends, the - // program will end and benefits will be disabled. - EndOfProgramTimestamp int64 `protobuf:"varint,4,opt,name=end_of_program_timestamp,json=endOfProgramTimestamp,proto3" json:"end_of_program_timestamp,omitempty"` - // Number of epochs over which the referral set's running volume is evaluated. - WindowLength uint64 `protobuf:"varint,5,opt,name=window_length,json=windowLength,proto3" json:"window_length,omitempty"` - // Defined benefit tiers ordered by increasing reward multiplier. Determines the level of - // benefit a party can expect based on their staking. - StakingTiers []*vega.StakingTier `protobuf:"bytes,6,rep,name=staking_tiers,json=stakingTiers,proto3" json:"staking_tiers,omitempty"` - // Timestamp, in Unix nanoseconds, when the program ended. - EndedAt *int64 `protobuf:"varint,7,opt,name=ended_at,json=endedAt,proto3,oneof" json:"ended_at,omitempty"` + // Market ID to estimate position for. + MarketId string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` + // Open volume. This field is a signed integer scaled to the market's position decimal places. + // A negative number denotes a short position. + OpenVolume int64 `protobuf:"varint,2,opt,name=open_volume,json=openVolume,proto3" json:"open_volume,omitempty"` + // Average entry price corresponding to the open volume. The price is an unsigned integer. For example `123456` is a correctly + // formatted price of `1.23456` assuming market configured to 5 decimal places. + AverageEntryPrice string `protobuf:"bytes,3,opt,name=average_entry_price,json=averageEntryPrice,proto3" json:"average_entry_price,omitempty"` + // Open and/or hypothetical orders. + Orders []*OrderInfo `protobuf:"bytes,4,rep,name=orders,proto3" json:"orders,omitempty"` + // Margin account balance. Needs to scaled by asset decimal places. + MarginAccountBalance string `protobuf:"bytes,5,opt,name=margin_account_balance,json=marginAccountBalance,proto3" json:"margin_account_balance,omitempty"` + // General account balance. Needs to scaled by asset decimal places. + GeneralAccountBalance string `protobuf:"bytes,6,opt,name=general_account_balance,json=generalAccountBalance,proto3" json:"general_account_balance,omitempty"` + // Order margin account balance. Needs to be scaled by asset decimal places. + OrderMarginAccountBalance string `protobuf:"bytes,7,opt,name=order_margin_account_balance,json=orderMarginAccountBalance,proto3" json:"order_margin_account_balance,omitempty"` + // Margin mode for the party, cross margin or isolated margin. + MarginMode vega.MarginMode `protobuf:"varint,8,opt,name=margin_mode,json=marginMode,proto3,enum=vega.MarginMode" json:"margin_mode,omitempty"` + // Margin factor to be used along with isolated margin mode + MarginFactor *string `protobuf:"bytes,9,opt,name=margin_factor,json=marginFactor,proto3,oneof" json:"margin_factor,omitempty"` + // Whether the estimated position margin increase should be included in available collateral for liquidation price calculation in isolated margin mode. + IncludeRequiredPositionMarginInAvailableCollateral *bool `protobuf:"varint,10,opt,name=include_required_position_margin_in_available_collateral,json=includeRequiredPositionMarginInAvailableCollateral,proto3,oneof" json:"include_required_position_margin_in_available_collateral,omitempty"` + // Whether the liquidation price estimates should be scaled to market decimal places or by asset decimal places. If not set, asset decimal places are used. + ScaleLiquidationPriceToMarketDecimals *bool `protobuf:"varint,11,opt,name=scale_liquidation_price_to_market_decimals,json=scaleLiquidationPriceToMarketDecimals,proto3,oneof" json:"scale_liquidation_price_to_market_decimals,omitempty"` } -func (x *ReferralProgram) Reset() { - *x = ReferralProgram{} +func (x *EstimatePositionRequest) Reset() { + *x = EstimatePositionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[333] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[335] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ReferralProgram) String() string { +func (x *EstimatePositionRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ReferralProgram) ProtoMessage() {} +func (*EstimatePositionRequest) ProtoMessage() {} -func (x *ReferralProgram) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[333] +func (x *EstimatePositionRequest) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[335] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20423,95 +20459,119 @@ func (x *ReferralProgram) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ReferralProgram.ProtoReflect.Descriptor instead. -func (*ReferralProgram) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{333} +// Deprecated: Use EstimatePositionRequest.ProtoReflect.Descriptor instead. +func (*EstimatePositionRequest) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{335} } -func (x *ReferralProgram) GetVersion() uint64 { +func (x *EstimatePositionRequest) GetMarketId() string { if x != nil { - return x.Version + return x.MarketId + } + return "" +} + +func (x *EstimatePositionRequest) GetOpenVolume() int64 { + if x != nil { + return x.OpenVolume } return 0 } -func (x *ReferralProgram) GetId() string { +func (x *EstimatePositionRequest) GetAverageEntryPrice() string { if x != nil { - return x.Id + return x.AverageEntryPrice } return "" } -func (x *ReferralProgram) GetBenefitTiers() []*vega.BenefitTier { +func (x *EstimatePositionRequest) GetOrders() []*OrderInfo { if x != nil { - return x.BenefitTiers + return x.Orders } return nil } -func (x *ReferralProgram) GetEndOfProgramTimestamp() int64 { +func (x *EstimatePositionRequest) GetMarginAccountBalance() string { if x != nil { - return x.EndOfProgramTimestamp + return x.MarginAccountBalance } - return 0 + return "" } -func (x *ReferralProgram) GetWindowLength() uint64 { +func (x *EstimatePositionRequest) GetGeneralAccountBalance() string { if x != nil { - return x.WindowLength + return x.GeneralAccountBalance } - return 0 + return "" } -func (x *ReferralProgram) GetStakingTiers() []*vega.StakingTier { +func (x *EstimatePositionRequest) GetOrderMarginAccountBalance() string { if x != nil { - return x.StakingTiers + return x.OrderMarginAccountBalance } - return nil + return "" } -func (x *ReferralProgram) GetEndedAt() int64 { - if x != nil && x.EndedAt != nil { - return *x.EndedAt +func (x *EstimatePositionRequest) GetMarginMode() vega.MarginMode { + if x != nil { + return x.MarginMode } - return 0 + return vega.MarginMode(0) } -// Data relating to a referral set. -type ReferralSet struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +func (x *EstimatePositionRequest) GetMarginFactor() string { + if x != nil && x.MarginFactor != nil { + return *x.MarginFactor + } + return "" +} - // Unique ID of the created set. - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - // Party that created the set. - Referrer string `protobuf:"bytes,2,opt,name=referrer,proto3" json:"referrer,omitempty"` - // Timestamp, in Unix nanoseconds, when the set was created. - CreatedAt int64 `protobuf:"varint,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - // Timestamp, in Unix nanoseconds, when the set was updated. - UpdatedAt int64 `protobuf:"varint,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - // Current number of members in the referral set. - TotalMembers uint64 `protobuf:"varint,5,opt,name=total_members,json=totalMembers,proto3" json:"total_members,omitempty"` +func (x *EstimatePositionRequest) GetIncludeRequiredPositionMarginInAvailableCollateral() bool { + if x != nil && x.IncludeRequiredPositionMarginInAvailableCollateral != nil { + return *x.IncludeRequiredPositionMarginInAvailableCollateral + } + return false } -func (x *ReferralSet) Reset() { - *x = ReferralSet{} +func (x *EstimatePositionRequest) GetScaleLiquidationPriceToMarketDecimals() bool { + if x != nil && x.ScaleLiquidationPriceToMarketDecimals != nil { + return *x.ScaleLiquidationPriceToMarketDecimals + } + return false +} + +// Response for the estimated margin level, margin account balance change, and liquidation price for the specified position. +type EstimatePositionResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Margin level range estimate for the specified position. + Margin *MarginEstimate `protobuf:"bytes,1,opt,name=margin,proto3" json:"margin,omitempty"` + // Estimated margin account balance increase. + CollateralIncreaseEstimate *CollateralIncreaseEstimate `protobuf:"bytes,2,opt,name=collateral_increase_estimate,json=collateralIncreaseEstimate,proto3" json:"collateral_increase_estimate,omitempty"` + // Liquidation price range estimate for the specified position. Only populated if available collateral was specified in the request. + Liquidation *LiquidationEstimate `protobuf:"bytes,3,opt,name=liquidation,proto3" json:"liquidation,omitempty"` +} + +func (x *EstimatePositionResponse) Reset() { + *x = EstimatePositionResponse{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[334] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[336] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ReferralSet) String() string { +func (x *EstimatePositionResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ReferralSet) ProtoMessage() {} +func (*EstimatePositionResponse) ProtoMessage() {} -func (x *ReferralSet) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[334] +func (x *EstimatePositionResponse) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[336] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20522,75 +20582,61 @@ func (x *ReferralSet) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ReferralSet.ProtoReflect.Descriptor instead. -func (*ReferralSet) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{334} -} - -func (x *ReferralSet) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *ReferralSet) GetReferrer() string { - if x != nil { - return x.Referrer - } - return "" +// Deprecated: Use EstimatePositionResponse.ProtoReflect.Descriptor instead. +func (*EstimatePositionResponse) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{336} } -func (x *ReferralSet) GetCreatedAt() int64 { +func (x *EstimatePositionResponse) GetMargin() *MarginEstimate { if x != nil { - return x.CreatedAt + return x.Margin } - return 0 + return nil } -func (x *ReferralSet) GetUpdatedAt() int64 { +func (x *EstimatePositionResponse) GetCollateralIncreaseEstimate() *CollateralIncreaseEstimate { if x != nil { - return x.UpdatedAt + return x.CollateralIncreaseEstimate } - return 0 + return nil } -func (x *ReferralSet) GetTotalMembers() uint64 { +func (x *EstimatePositionResponse) GetLiquidation() *LiquidationEstimate { if x != nil { - return x.TotalMembers + return x.Liquidation } - return 0 + return nil } -// Referral set data with the corresponding cursor. -type ReferralSetEdge struct { +// Estimates the additional funds needed to support the specified position +type CollateralIncreaseEstimate struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Referral set data. - Node *ReferralSet `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Estimate assuming slippage cap is applied + WorstCase string `protobuf:"bytes,1,opt,name=worst_case,json=worstCase,proto3" json:"worst_case,omitempty"` + // Estimate assuming no slippage + BestCase string `protobuf:"bytes,2,opt,name=best_case,json=bestCase,proto3" json:"best_case,omitempty"` } -func (x *ReferralSetEdge) Reset() { - *x = ReferralSetEdge{} +func (x *CollateralIncreaseEstimate) Reset() { + *x = CollateralIncreaseEstimate{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[335] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[337] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ReferralSetEdge) String() string { +func (x *CollateralIncreaseEstimate) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ReferralSetEdge) ProtoMessage() {} +func (*CollateralIncreaseEstimate) ProtoMessage() {} -func (x *ReferralSetEdge) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[335] +func (x *CollateralIncreaseEstimate) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[337] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20601,54 +20647,54 @@ func (x *ReferralSetEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ReferralSetEdge.ProtoReflect.Descriptor instead. -func (*ReferralSetEdge) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{335} +// Deprecated: Use CollateralIncreaseEstimate.ProtoReflect.Descriptor instead. +func (*CollateralIncreaseEstimate) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{337} } -func (x *ReferralSetEdge) GetNode() *ReferralSet { +func (x *CollateralIncreaseEstimate) GetWorstCase() string { if x != nil { - return x.Node + return x.WorstCase } - return nil + return "" } -func (x *ReferralSetEdge) GetCursor() string { +func (x *CollateralIncreaseEstimate) GetBestCase() string { if x != nil { - return x.Cursor + return x.BestCase } return "" } -// Page of referral set data and corresponding page information. -type ReferralSetConnection struct { +// Margin level estimate for both worst and best case possible. +type MarginEstimate struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of referral set data and their corresponding cursors. - Edges []*ReferralSetEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + // Margin level estimate assuming slippage cap is applied. + WorstCase *vega.MarginLevels `protobuf:"bytes,1,opt,name=worst_case,json=worstCase,proto3" json:"worst_case,omitempty"` + // Margin level estimate assuming no slippage. + BestCase *vega.MarginLevels `protobuf:"bytes,2,opt,name=best_case,json=bestCase,proto3" json:"best_case,omitempty"` } -func (x *ReferralSetConnection) Reset() { - *x = ReferralSetConnection{} +func (x *MarginEstimate) Reset() { + *x = MarginEstimate{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[336] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[338] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ReferralSetConnection) String() string { +func (x *MarginEstimate) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ReferralSetConnection) ProtoMessage() {} +func (*MarginEstimate) ProtoMessage() {} -func (x *ReferralSetConnection) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[336] +func (x *MarginEstimate) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[338] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20659,58 +20705,54 @@ func (x *ReferralSetConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ReferralSetConnection.ProtoReflect.Descriptor instead. -func (*ReferralSetConnection) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{336} +// Deprecated: Use MarginEstimate.ProtoReflect.Descriptor instead. +func (*MarginEstimate) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{338} } -func (x *ReferralSetConnection) GetEdges() []*ReferralSetEdge { +func (x *MarginEstimate) GetWorstCase() *vega.MarginLevels { if x != nil { - return x.Edges + return x.WorstCase } return nil } -func (x *ReferralSetConnection) GetPageInfo() *PageInfo { +func (x *MarginEstimate) GetBestCase() *vega.MarginLevels { if x != nil { - return x.PageInfo + return x.BestCase } return nil } -// Request to retrieve information about a referral set or sets -type ListReferralSetsRequest struct { +// Liquidation estimate for both worst and best case possible. +type LiquidationEstimate struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Referral set ID to retrieve information for - ReferralSetId *string `protobuf:"bytes,1,opt,name=referral_set_id,json=referralSetId,proto3,oneof" json:"referral_set_id,omitempty"` - // Pagination controls. - Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` - // Referrer to filter by. If referrer set ID is provided, this field is ignored. - Referrer *string `protobuf:"bytes,3,opt,name=referrer,proto3,oneof" json:"referrer,omitempty"` - // Referee to filter by. If referrer set ID or referrer is provided, this field is ignored. - Referee *string `protobuf:"bytes,4,opt,name=referee,proto3,oneof" json:"referee,omitempty"` + // Liquidation price estimate assuming slippage cap is applied. + WorstCase *LiquidationPrice `protobuf:"bytes,1,opt,name=worst_case,json=worstCase,proto3" json:"worst_case,omitempty"` + // Liquidation price estimate assuming no slippage. + BestCase *LiquidationPrice `protobuf:"bytes,2,opt,name=best_case,json=bestCase,proto3" json:"best_case,omitempty"` } -func (x *ListReferralSetsRequest) Reset() { - *x = ListReferralSetsRequest{} +func (x *LiquidationEstimate) Reset() { + *x = LiquidationEstimate{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[337] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[339] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListReferralSetsRequest) String() string { +func (x *LiquidationEstimate) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListReferralSetsRequest) ProtoMessage() {} +func (*LiquidationEstimate) ProtoMessage() {} -func (x *ListReferralSetsRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[337] +func (x *LiquidationEstimate) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[339] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20721,66 +20763,56 @@ func (x *ListReferralSetsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListReferralSetsRequest.ProtoReflect.Descriptor instead. -func (*ListReferralSetsRequest) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{337} -} - -func (x *ListReferralSetsRequest) GetReferralSetId() string { - if x != nil && x.ReferralSetId != nil { - return *x.ReferralSetId - } - return "" +// Deprecated: Use LiquidationEstimate.ProtoReflect.Descriptor instead. +func (*LiquidationEstimate) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{339} } -func (x *ListReferralSetsRequest) GetPagination() *Pagination { +func (x *LiquidationEstimate) GetWorstCase() *LiquidationPrice { if x != nil { - return x.Pagination + return x.WorstCase } return nil } -func (x *ListReferralSetsRequest) GetReferrer() string { - if x != nil && x.Referrer != nil { - return *x.Referrer - } - return "" -} - -func (x *ListReferralSetsRequest) GetReferee() string { - if x != nil && x.Referee != nil { - return *x.Referee +func (x *LiquidationEstimate) GetBestCase() *LiquidationPrice { + if x != nil { + return x.BestCase } - return "" + return nil } -// Response containing information about a referral set or sets -type ListReferralSetsResponse struct { +// Liquidation price estimate for either only the current open volume and position given some or all buy orders get filled, or position given some or all sell orders get filled. +type LiquidationPrice struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of referral set data and corresponding page information. - ReferralSets *ReferralSetConnection `protobuf:"bytes,1,opt,name=referral_sets,json=referralSets,proto3" json:"referral_sets,omitempty"` + // Liquidation price for current open volume ignoring any active orders. + OpenVolumeOnly string `protobuf:"bytes,1,opt,name=open_volume_only,json=openVolumeOnly,proto3" json:"open_volume_only,omitempty"` + // Liquidation price assuming buy orders start getting filled. + IncludingBuyOrders string `protobuf:"bytes,2,opt,name=including_buy_orders,json=includingBuyOrders,proto3" json:"including_buy_orders,omitempty"` + // Liquidation price assuming sell orders start getting filled. + IncludingSellOrders string `protobuf:"bytes,3,opt,name=including_sell_orders,json=includingSellOrders,proto3" json:"including_sell_orders,omitempty"` } -func (x *ListReferralSetsResponse) Reset() { - *x = ListReferralSetsResponse{} +func (x *LiquidationPrice) Reset() { + *x = LiquidationPrice{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[338] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[340] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListReferralSetsResponse) String() string { +func (x *LiquidationPrice) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListReferralSetsResponse) ProtoMessage() {} +func (*LiquidationPrice) ProtoMessage() {} -func (x *ListReferralSetsResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[338] +func (x *LiquidationPrice) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[340] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20791,55 +20823,56 @@ func (x *ListReferralSetsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListReferralSetsResponse.ProtoReflect.Descriptor instead. -func (*ListReferralSetsResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{338} +// Deprecated: Use LiquidationPrice.ProtoReflect.Descriptor instead. +func (*LiquidationPrice) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{340} } -func (x *ListReferralSetsResponse) GetReferralSets() *ReferralSetConnection { +func (x *LiquidationPrice) GetOpenVolumeOnly() string { if x != nil { - return x.ReferralSets + return x.OpenVolumeOnly } - return nil + return "" } -// Data relating to referees that have joined a referral set -type ReferralSetReferee struct { +func (x *LiquidationPrice) GetIncludingBuyOrders() string { + if x != nil { + return x.IncludingBuyOrders + } + return "" +} + +func (x *LiquidationPrice) GetIncludingSellOrders() string { + if x != nil { + return x.IncludingSellOrders + } + return "" +} + +// Request to get the current referral program +type GetCurrentReferralProgramRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - // Unique ID of the referral set the referee joined. - ReferralSetId string `protobuf:"bytes,1,opt,name=referral_set_id,json=referralSetId,proto3" json:"referral_set_id,omitempty"` - // Party that joined the set. - Referee string `protobuf:"bytes,2,opt,name=referee,proto3" json:"referee,omitempty"` - // Timestamp, in Unix nanoseconds, when the party joined the set. - JoinedAt int64 `protobuf:"varint,3,opt,name=joined_at,json=joinedAt,proto3" json:"joined_at,omitempty"` - // Epoch at which the party joined the set. - AtEpoch uint64 `protobuf:"varint,4,opt,name=at_epoch,json=atEpoch,proto3" json:"at_epoch,omitempty"` - // Total notional volume of the referee's aggressive trades over the aggregation period. - TotalRefereeNotionalTakerVolume string `protobuf:"bytes,5,opt,name=total_referee_notional_taker_volume,json=totalRefereeNotionalTakerVolume,proto3" json:"total_referee_notional_taker_volume,omitempty"` - // Total rewards generated by the referee over the aggregation period. - TotalRefereeGeneratedRewards string `protobuf:"bytes,6,opt,name=total_referee_generated_rewards,json=totalRefereeGeneratedRewards,proto3" json:"total_referee_generated_rewards,omitempty"` } -func (x *ReferralSetReferee) Reset() { - *x = ReferralSetReferee{} +func (x *GetCurrentReferralProgramRequest) Reset() { + *x = GetCurrentReferralProgramRequest{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[339] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[341] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ReferralSetReferee) String() string { +func (x *GetCurrentReferralProgramRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ReferralSetReferee) ProtoMessage() {} +func (*GetCurrentReferralProgramRequest) ProtoMessage() {} -func (x *ReferralSetReferee) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[339] +func (x *GetCurrentReferralProgramRequest) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[341] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20850,82 +20883,103 @@ func (x *ReferralSetReferee) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ReferralSetReferee.ProtoReflect.Descriptor instead. -func (*ReferralSetReferee) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{339} +// Deprecated: Use GetCurrentReferralProgramRequest.ProtoReflect.Descriptor instead. +func (*GetCurrentReferralProgramRequest) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{341} } -func (x *ReferralSetReferee) GetReferralSetId() string { - if x != nil { - return x.ReferralSetId - } - return "" +// Response containing the current referral program +type GetCurrentReferralProgramResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Referral program currently activated on the network. + CurrentReferralProgram *ReferralProgram `protobuf:"bytes,1,opt,name=current_referral_program,json=currentReferralProgram,proto3" json:"current_referral_program,omitempty"` } -func (x *ReferralSetReferee) GetReferee() string { - if x != nil { - return x.Referee +func (x *GetCurrentReferralProgramResponse) Reset() { + *x = GetCurrentReferralProgramResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[342] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *ReferralSetReferee) GetJoinedAt() int64 { - if x != nil { - return x.JoinedAt - } - return 0 +func (x *GetCurrentReferralProgramResponse) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *ReferralSetReferee) GetAtEpoch() uint64 { - if x != nil { - return x.AtEpoch +func (*GetCurrentReferralProgramResponse) ProtoMessage() {} + +func (x *GetCurrentReferralProgramResponse) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[342] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return 0 + return mi.MessageOf(x) } -func (x *ReferralSetReferee) GetTotalRefereeNotionalTakerVolume() string { - if x != nil { - return x.TotalRefereeNotionalTakerVolume - } - return "" +// Deprecated: Use GetCurrentReferralProgramResponse.ProtoReflect.Descriptor instead. +func (*GetCurrentReferralProgramResponse) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{342} } -func (x *ReferralSetReferee) GetTotalRefereeGeneratedRewards() string { +func (x *GetCurrentReferralProgramResponse) GetCurrentReferralProgram() *ReferralProgram { if x != nil { - return x.TotalRefereeGeneratedRewards + return x.CurrentReferralProgram } - return "" + return nil } -// Data about the Referral set's referees with the corresponding cursor. -type ReferralSetRefereeEdge struct { +// Referral program details. +type ReferralProgram struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Referral set referee data. - Node *ReferralSetReferee `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Incremental version of the program. It is incremented after each program + // update. + Version uint64 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` + // Unique ID generated from the proposal that created this program. + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` + // Defined tiers in increasing order. First element will give Tier 1, second + // element will give Tier 2, and so on. + BenefitTiers []*vega.BenefitTier `protobuf:"bytes,3,rep,name=benefit_tiers,json=benefitTiers,proto3" json:"benefit_tiers,omitempty"` + // Timestamp in Unix nanoseconds, after which when the current epoch ends, the + // program will end and benefits will be disabled. + EndOfProgramTimestamp int64 `protobuf:"varint,4,opt,name=end_of_program_timestamp,json=endOfProgramTimestamp,proto3" json:"end_of_program_timestamp,omitempty"` + // Number of epochs over which the referral set's running volume is evaluated. + WindowLength uint64 `protobuf:"varint,5,opt,name=window_length,json=windowLength,proto3" json:"window_length,omitempty"` + // Defined benefit tiers ordered by increasing reward multiplier. Determines the level of + // benefit a party can expect based on their staking. + StakingTiers []*vega.StakingTier `protobuf:"bytes,6,rep,name=staking_tiers,json=stakingTiers,proto3" json:"staking_tiers,omitempty"` + // Timestamp, in Unix nanoseconds, when the program ended. + EndedAt *int64 `protobuf:"varint,7,opt,name=ended_at,json=endedAt,proto3,oneof" json:"ended_at,omitempty"` } -func (x *ReferralSetRefereeEdge) Reset() { - *x = ReferralSetRefereeEdge{} +func (x *ReferralProgram) Reset() { + *x = ReferralProgram{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[340] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[343] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ReferralSetRefereeEdge) String() string { +func (x *ReferralProgram) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ReferralSetRefereeEdge) ProtoMessage() {} +func (*ReferralProgram) ProtoMessage() {} -func (x *ReferralSetRefereeEdge) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[340] +func (x *ReferralProgram) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[343] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20936,54 +20990,95 @@ func (x *ReferralSetRefereeEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ReferralSetRefereeEdge.ProtoReflect.Descriptor instead. -func (*ReferralSetRefereeEdge) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{340} +// Deprecated: Use ReferralProgram.ProtoReflect.Descriptor instead. +func (*ReferralProgram) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{343} } -func (x *ReferralSetRefereeEdge) GetNode() *ReferralSetReferee { +func (x *ReferralProgram) GetVersion() uint64 { if x != nil { - return x.Node + return x.Version } - return nil + return 0 } -func (x *ReferralSetRefereeEdge) GetCursor() string { +func (x *ReferralProgram) GetId() string { if x != nil { - return x.Cursor + return x.Id } return "" } -// Page of data about the referral set's referees and corresponding page information. -type ReferralSetRefereeConnection struct { +func (x *ReferralProgram) GetBenefitTiers() []*vega.BenefitTier { + if x != nil { + return x.BenefitTiers + } + return nil +} + +func (x *ReferralProgram) GetEndOfProgramTimestamp() int64 { + if x != nil { + return x.EndOfProgramTimestamp + } + return 0 +} + +func (x *ReferralProgram) GetWindowLength() uint64 { + if x != nil { + return x.WindowLength + } + return 0 +} + +func (x *ReferralProgram) GetStakingTiers() []*vega.StakingTier { + if x != nil { + return x.StakingTiers + } + return nil +} + +func (x *ReferralProgram) GetEndedAt() int64 { + if x != nil && x.EndedAt != nil { + return *x.EndedAt + } + return 0 +} + +// Data relating to a referral set. +type ReferralSet struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of referral set referee data and their corresponding cursors. - Edges []*ReferralSetRefereeEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + // Unique ID of the created set. + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // Party that created the set. + Referrer string `protobuf:"bytes,2,opt,name=referrer,proto3" json:"referrer,omitempty"` + // Timestamp, in Unix nanoseconds, when the set was created. + CreatedAt int64 `protobuf:"varint,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + // Timestamp, in Unix nanoseconds, when the set was updated. + UpdatedAt int64 `protobuf:"varint,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + // Current number of members in the referral set. + TotalMembers uint64 `protobuf:"varint,5,opt,name=total_members,json=totalMembers,proto3" json:"total_members,omitempty"` } -func (x *ReferralSetRefereeConnection) Reset() { - *x = ReferralSetRefereeConnection{} +func (x *ReferralSet) Reset() { + *x = ReferralSet{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[341] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[344] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ReferralSetRefereeConnection) String() string { +func (x *ReferralSet) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ReferralSetRefereeConnection) ProtoMessage() {} +func (*ReferralSet) ProtoMessage() {} -func (x *ReferralSetRefereeConnection) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[341] +func (x *ReferralSet) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[344] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -20994,60 +21089,75 @@ func (x *ReferralSetRefereeConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ReferralSetRefereeConnection.ProtoReflect.Descriptor instead. -func (*ReferralSetRefereeConnection) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{341} +// Deprecated: Use ReferralSet.ProtoReflect.Descriptor instead. +func (*ReferralSet) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{344} } -func (x *ReferralSetRefereeConnection) GetEdges() []*ReferralSetRefereeEdge { +func (x *ReferralSet) GetId() string { if x != nil { - return x.Edges + return x.Id } - return nil + return "" } -func (x *ReferralSetRefereeConnection) GetPageInfo() *PageInfo { +func (x *ReferralSet) GetReferrer() string { if x != nil { - return x.PageInfo + return x.Referrer } - return nil + return "" } -// Request to retrieve information about a referral set's referees -type ListReferralSetRefereesRequest struct { +func (x *ReferralSet) GetCreatedAt() int64 { + if x != nil { + return x.CreatedAt + } + return 0 +} + +func (x *ReferralSet) GetUpdatedAt() int64 { + if x != nil { + return x.UpdatedAt + } + return 0 +} + +func (x *ReferralSet) GetTotalMembers() uint64 { + if x != nil { + return x.TotalMembers + } + return 0 +} + +// Referral set data with the corresponding cursor. +type ReferralSetEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Referral set ID to retrieve information for - ReferralSetId *string `protobuf:"bytes,1,opt,name=referral_set_id,json=referralSetId,proto3,oneof" json:"referral_set_id,omitempty"` - // Pagination controls. - Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` - // Referrer to filter by. If referrer set ID is provided, this field is ignored. - Referrer *string `protobuf:"bytes,3,opt,name=referrer,proto3,oneof" json:"referrer,omitempty"` - // Referee to filter by. If referrer set ID or referrer is provided, this field is ignored. - Referee *string `protobuf:"bytes,4,opt,name=referee,proto3,oneof" json:"referee,omitempty"` - // Epochs to aggregate party volume and rewards over. If omitted, 30 epochs will be used. - AggregationEpochs *uint32 `protobuf:"varint,5,opt,name=aggregation_epochs,json=aggregationEpochs,proto3,oneof" json:"aggregation_epochs,omitempty"` + // Referral set data. + Node *ReferralSet `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *ListReferralSetRefereesRequest) Reset() { - *x = ListReferralSetRefereesRequest{} +func (x *ReferralSetEdge) Reset() { + *x = ReferralSetEdge{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[342] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[345] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListReferralSetRefereesRequest) String() string { +func (x *ReferralSetEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListReferralSetRefereesRequest) ProtoMessage() {} +func (*ReferralSetEdge) ProtoMessage() {} -func (x *ListReferralSetRefereesRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[342] +func (x *ReferralSetEdge) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[345] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21058,73 +21168,54 @@ func (x *ListReferralSetRefereesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListReferralSetRefereesRequest.ProtoReflect.Descriptor instead. -func (*ListReferralSetRefereesRequest) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{342} -} - -func (x *ListReferralSetRefereesRequest) GetReferralSetId() string { - if x != nil && x.ReferralSetId != nil { - return *x.ReferralSetId - } - return "" +// Deprecated: Use ReferralSetEdge.ProtoReflect.Descriptor instead. +func (*ReferralSetEdge) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{345} } -func (x *ListReferralSetRefereesRequest) GetPagination() *Pagination { +func (x *ReferralSetEdge) GetNode() *ReferralSet { if x != nil { - return x.Pagination + return x.Node } return nil } -func (x *ListReferralSetRefereesRequest) GetReferrer() string { - if x != nil && x.Referrer != nil { - return *x.Referrer - } - return "" -} - -func (x *ListReferralSetRefereesRequest) GetReferee() string { - if x != nil && x.Referee != nil { - return *x.Referee +func (x *ReferralSetEdge) GetCursor() string { + if x != nil { + return x.Cursor } return "" } -func (x *ListReferralSetRefereesRequest) GetAggregationEpochs() uint32 { - if x != nil && x.AggregationEpochs != nil { - return *x.AggregationEpochs - } - return 0 -} - -// Response containing information about a referral set's referees -type ListReferralSetRefereesResponse struct { +// Page of referral set data and corresponding page information. +type ReferralSetConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of referral set referee data and corresponding page information. - ReferralSetReferees *ReferralSetRefereeConnection `protobuf:"bytes,1,opt,name=referral_set_referees,json=referralSetReferees,proto3" json:"referral_set_referees,omitempty"` + // Page of referral set data and their corresponding cursors. + Edges []*ReferralSetEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *ListReferralSetRefereesResponse) Reset() { - *x = ListReferralSetRefereesResponse{} +func (x *ReferralSetConnection) Reset() { + *x = ReferralSetConnection{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[343] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[346] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListReferralSetRefereesResponse) String() string { +func (x *ReferralSetConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListReferralSetRefereesResponse) ProtoMessage() {} +func (*ReferralSetConnection) ProtoMessage() {} -func (x *ListReferralSetRefereesResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[343] +func (x *ReferralSetConnection) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[346] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21135,51 +21226,58 @@ func (x *ListReferralSetRefereesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListReferralSetRefereesResponse.ProtoReflect.Descriptor instead. -func (*ListReferralSetRefereesResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{343} +// Deprecated: Use ReferralSetConnection.ProtoReflect.Descriptor instead. +func (*ReferralSetConnection) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{346} } -func (x *ListReferralSetRefereesResponse) GetReferralSetReferees() *ReferralSetRefereeConnection { +func (x *ReferralSetConnection) GetEdges() []*ReferralSetEdge { if x != nil { - return x.ReferralSetReferees + return x.Edges } return nil } -// Request to get a referral set's stats -type GetReferralSetStatsRequest struct { +func (x *ReferralSetConnection) GetPageInfo() *PageInfo { + if x != nil { + return x.PageInfo + } + return nil +} + +// Request to retrieve information about a referral set or sets +type ListReferralSetsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Restrict referral set statistics to those for the given referral set. + // Referral set ID to retrieve information for ReferralSetId *string `protobuf:"bytes,1,opt,name=referral_set_id,json=referralSetId,proto3,oneof" json:"referral_set_id,omitempty"` - // Epoch to get referral set statistics for. If not set, the last complete epoch is used. - AtEpoch *uint64 `protobuf:"varint,2,opt,name=at_epoch,json=atEpoch,proto3,oneof" json:"at_epoch,omitempty"` - // Restrict referral set statistics to those for the given referee. - Referee *string `protobuf:"bytes,3,opt,name=referee,proto3,oneof" json:"referee,omitempty"` // Pagination controls. - Pagination *Pagination `protobuf:"bytes,4,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + // Referrer to filter by. If referrer set ID is provided, this field is ignored. + Referrer *string `protobuf:"bytes,3,opt,name=referrer,proto3,oneof" json:"referrer,omitempty"` + // Referee to filter by. If referrer set ID or referrer is provided, this field is ignored. + Referee *string `protobuf:"bytes,4,opt,name=referee,proto3,oneof" json:"referee,omitempty"` } -func (x *GetReferralSetStatsRequest) Reset() { - *x = GetReferralSetStatsRequest{} +func (x *ListReferralSetsRequest) Reset() { + *x = ListReferralSetsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[344] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[347] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetReferralSetStatsRequest) String() string { +func (x *ListReferralSetsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetReferralSetStatsRequest) ProtoMessage() {} +func (*ListReferralSetsRequest) ProtoMessage() {} -func (x *GetReferralSetStatsRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[344] +func (x *ListReferralSetsRequest) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[347] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21190,66 +21288,66 @@ func (x *GetReferralSetStatsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetReferralSetStatsRequest.ProtoReflect.Descriptor instead. -func (*GetReferralSetStatsRequest) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{344} +// Deprecated: Use ListReferralSetsRequest.ProtoReflect.Descriptor instead. +func (*ListReferralSetsRequest) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{347} } -func (x *GetReferralSetStatsRequest) GetReferralSetId() string { +func (x *ListReferralSetsRequest) GetReferralSetId() string { if x != nil && x.ReferralSetId != nil { return *x.ReferralSetId } return "" } -func (x *GetReferralSetStatsRequest) GetAtEpoch() uint64 { - if x != nil && x.AtEpoch != nil { - return *x.AtEpoch +func (x *ListReferralSetsRequest) GetPagination() *Pagination { + if x != nil { + return x.Pagination } - return 0 + return nil } -func (x *GetReferralSetStatsRequest) GetReferee() string { - if x != nil && x.Referee != nil { - return *x.Referee +func (x *ListReferralSetsRequest) GetReferrer() string { + if x != nil && x.Referrer != nil { + return *x.Referrer } return "" } -func (x *GetReferralSetStatsRequest) GetPagination() *Pagination { - if x != nil { - return x.Pagination +func (x *ListReferralSetsRequest) GetReferee() string { + if x != nil && x.Referee != nil { + return *x.Referee } - return nil + return "" } -// Response containing the volume discount statistics for the given epoch. -type GetReferralSetStatsResponse struct { +// Response containing information about a referral set or sets +type ListReferralSetsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Referral set statistics for the epoch. - Stats *ReferralSetStatsConnection `protobuf:"bytes,1,opt,name=stats,proto3" json:"stats,omitempty"` + // Page of referral set data and corresponding page information. + ReferralSets *ReferralSetConnection `protobuf:"bytes,1,opt,name=referral_sets,json=referralSets,proto3" json:"referral_sets,omitempty"` } -func (x *GetReferralSetStatsResponse) Reset() { - *x = GetReferralSetStatsResponse{} +func (x *ListReferralSetsResponse) Reset() { + *x = ListReferralSetsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[345] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[348] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetReferralSetStatsResponse) String() string { +func (x *ListReferralSetsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetReferralSetStatsResponse) ProtoMessage() {} +func (*ListReferralSetsResponse) ProtoMessage() {} -func (x *GetReferralSetStatsResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[345] +func (x *ListReferralSetsResponse) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[348] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21260,47 +21358,55 @@ func (x *GetReferralSetStatsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetReferralSetStatsResponse.ProtoReflect.Descriptor instead. -func (*GetReferralSetStatsResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{345} +// Deprecated: Use ListReferralSetsResponse.ProtoReflect.Descriptor instead. +func (*ListReferralSetsResponse) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{348} } -func (x *GetReferralSetStatsResponse) GetStats() *ReferralSetStatsConnection { +func (x *ListReferralSetsResponse) GetReferralSets() *ReferralSetConnection { if x != nil { - return x.Stats + return x.ReferralSets } return nil } -// Page of volume discount stats data and corresponding page information. -type ReferralSetStatsConnection struct { +// Data relating to referees that have joined a referral set +type ReferralSetReferee struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of volume discount statistics data and their corresponding cursors. - Edges []*ReferralSetStatsEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + // Unique ID of the referral set the referee joined. + ReferralSetId string `protobuf:"bytes,1,opt,name=referral_set_id,json=referralSetId,proto3" json:"referral_set_id,omitempty"` + // Party that joined the set. + Referee string `protobuf:"bytes,2,opt,name=referee,proto3" json:"referee,omitempty"` + // Timestamp, in Unix nanoseconds, when the party joined the set. + JoinedAt int64 `protobuf:"varint,3,opt,name=joined_at,json=joinedAt,proto3" json:"joined_at,omitempty"` + // Epoch at which the party joined the set. + AtEpoch uint64 `protobuf:"varint,4,opt,name=at_epoch,json=atEpoch,proto3" json:"at_epoch,omitempty"` + // Total notional volume of the referee's aggressive trades over the aggregation period. + TotalRefereeNotionalTakerVolume string `protobuf:"bytes,5,opt,name=total_referee_notional_taker_volume,json=totalRefereeNotionalTakerVolume,proto3" json:"total_referee_notional_taker_volume,omitempty"` + // Total rewards generated by the referee over the aggregation period. + TotalRefereeGeneratedRewards string `protobuf:"bytes,6,opt,name=total_referee_generated_rewards,json=totalRefereeGeneratedRewards,proto3" json:"total_referee_generated_rewards,omitempty"` } -func (x *ReferralSetStatsConnection) Reset() { - *x = ReferralSetStatsConnection{} +func (x *ReferralSetReferee) Reset() { + *x = ReferralSetReferee{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[346] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[349] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ReferralSetStatsConnection) String() string { +func (x *ReferralSetReferee) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ReferralSetStatsConnection) ProtoMessage() {} +func (*ReferralSetReferee) ProtoMessage() {} -func (x *ReferralSetStatsConnection) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[346] +func (x *ReferralSetReferee) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[349] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21311,54 +21417,82 @@ func (x *ReferralSetStatsConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ReferralSetStatsConnection.ProtoReflect.Descriptor instead. -func (*ReferralSetStatsConnection) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{346} +// Deprecated: Use ReferralSetReferee.ProtoReflect.Descriptor instead. +func (*ReferralSetReferee) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{349} } -func (x *ReferralSetStatsConnection) GetEdges() []*ReferralSetStatsEdge { +func (x *ReferralSetReferee) GetReferralSetId() string { if x != nil { - return x.Edges + return x.ReferralSetId } - return nil + return "" } -func (x *ReferralSetStatsConnection) GetPageInfo() *PageInfo { +func (x *ReferralSetReferee) GetReferee() string { if x != nil { - return x.PageInfo + return x.Referee } - return nil + return "" } -// Referral set stats data with the corresponding cursor. -type ReferralSetStatsEdge struct { +func (x *ReferralSetReferee) GetJoinedAt() int64 { + if x != nil { + return x.JoinedAt + } + return 0 +} + +func (x *ReferralSetReferee) GetAtEpoch() uint64 { + if x != nil { + return x.AtEpoch + } + return 0 +} + +func (x *ReferralSetReferee) GetTotalRefereeNotionalTakerVolume() string { + if x != nil { + return x.TotalRefereeNotionalTakerVolume + } + return "" +} + +func (x *ReferralSetReferee) GetTotalRefereeGeneratedRewards() string { + if x != nil { + return x.TotalRefereeGeneratedRewards + } + return "" +} + +// Data about the Referral set's referees with the corresponding cursor. +type ReferralSetRefereeEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Referral set stats data. - Node *ReferralSetStats `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Referral set referee data. + Node *ReferralSetReferee `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` // Cursor that can be used to fetch further pages. Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *ReferralSetStatsEdge) Reset() { - *x = ReferralSetStatsEdge{} +func (x *ReferralSetRefereeEdge) Reset() { + *x = ReferralSetRefereeEdge{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[347] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[350] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ReferralSetStatsEdge) String() string { +func (x *ReferralSetRefereeEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ReferralSetStatsEdge) ProtoMessage() {} +func (*ReferralSetRefereeEdge) ProtoMessage() {} -func (x *ReferralSetStatsEdge) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[347] +func (x *ReferralSetRefereeEdge) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[350] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21369,71 +21503,54 @@ func (x *ReferralSetStatsEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ReferralSetStatsEdge.ProtoReflect.Descriptor instead. -func (*ReferralSetStatsEdge) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{347} +// Deprecated: Use ReferralSetRefereeEdge.ProtoReflect.Descriptor instead. +func (*ReferralSetRefereeEdge) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{350} } -func (x *ReferralSetStatsEdge) GetNode() *ReferralSetStats { +func (x *ReferralSetRefereeEdge) GetNode() *ReferralSetReferee { if x != nil { return x.Node } return nil } -func (x *ReferralSetStatsEdge) GetCursor() string { +func (x *ReferralSetRefereeEdge) GetCursor() string { if x != nil { return x.Cursor } return "" } -// Referral set statistics for a given epoch for a party. -type ReferralSetStats struct { +// Page of data about the referral set's referees and corresponding page information. +type ReferralSetRefereeConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Epoch at which the set's statistics were updated. - AtEpoch uint64 `protobuf:"varint,1,opt,name=at_epoch,json=atEpoch,proto3" json:"at_epoch,omitempty"` - // Running volume for the set based on the window length of the current - // referral program. - ReferralSetRunningNotionalTakerVolume string `protobuf:"bytes,2,opt,name=referral_set_running_notional_taker_volume,json=referralSetRunningNotionalTakerVolume,proto3" json:"referral_set_running_notional_taker_volume,omitempty"` - // Party ID. - PartyId string `protobuf:"bytes,3,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` - // Discount factor applied to the party. - DiscountFactor string `protobuf:"bytes,4,opt,name=discount_factor,json=discountFactor,proto3" json:"discount_factor,omitempty"` - // Reward factor applied to the party. - RewardFactor string `protobuf:"bytes,5,opt,name=reward_factor,json=rewardFactor,proto3" json:"reward_factor,omitempty"` - // Current referee notional taker volume. - EpochNotionalTakerVolume string `protobuf:"bytes,6,opt,name=epoch_notional_taker_volume,json=epochNotionalTakerVolume,proto3" json:"epoch_notional_taker_volume,omitempty"` - // Multiplier applied to the referral reward factor when calculating referral rewards due to the referrer. - RewardsMultiplier string `protobuf:"bytes,7,opt,name=rewards_multiplier,json=rewardsMultiplier,proto3" json:"rewards_multiplier,omitempty"` - // Proportion of the referee's taker fees to be rewarded to the referrer. - RewardsFactorMultiplier string `protobuf:"bytes,8,opt,name=rewards_factor_multiplier,json=rewardsFactorMultiplier,proto3" json:"rewards_factor_multiplier,omitempty"` - // Indicates if the referral set was eligible to be part of the referral program. - WasEligible bool `protobuf:"varint,9,opt,name=was_eligible,json=wasEligible,proto3" json:"was_eligible,omitempty"` - // Referrer's taker volume - ReferrerTakerVolume string `protobuf:"bytes,10,opt,name=referrer_taker_volume,json=referrerTakerVolume,proto3" json:"referrer_taker_volume,omitempty"` + // Page of referral set referee data and their corresponding cursors. + Edges []*ReferralSetRefereeEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *ReferralSetStats) Reset() { - *x = ReferralSetStats{} +func (x *ReferralSetRefereeConnection) Reset() { + *x = ReferralSetRefereeConnection{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[348] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[351] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ReferralSetStats) String() string { +func (x *ReferralSetRefereeConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ReferralSetStats) ProtoMessage() {} +func (*ReferralSetRefereeConnection) ProtoMessage() {} -func (x *ReferralSetStats) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[348] +func (x *ReferralSetRefereeConnection) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[351] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21444,128 +21561,137 @@ func (x *ReferralSetStats) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ReferralSetStats.ProtoReflect.Descriptor instead. -func (*ReferralSetStats) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{348} +// Deprecated: Use ReferralSetRefereeConnection.ProtoReflect.Descriptor instead. +func (*ReferralSetRefereeConnection) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{351} } -func (x *ReferralSetStats) GetAtEpoch() uint64 { +func (x *ReferralSetRefereeConnection) GetEdges() []*ReferralSetRefereeEdge { if x != nil { - return x.AtEpoch + return x.Edges } - return 0 + return nil } -func (x *ReferralSetStats) GetReferralSetRunningNotionalTakerVolume() string { +func (x *ReferralSetRefereeConnection) GetPageInfo() *PageInfo { if x != nil { - return x.ReferralSetRunningNotionalTakerVolume + return x.PageInfo } - return "" + return nil } -func (x *ReferralSetStats) GetPartyId() string { - if x != nil { - return x.PartyId - } - return "" +// Request to retrieve information about a referral set's referees +type ListReferralSetRefereesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Referral set ID to retrieve information for + ReferralSetId *string `protobuf:"bytes,1,opt,name=referral_set_id,json=referralSetId,proto3,oneof" json:"referral_set_id,omitempty"` + // Pagination controls. + Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + // Referrer to filter by. If referrer set ID is provided, this field is ignored. + Referrer *string `protobuf:"bytes,3,opt,name=referrer,proto3,oneof" json:"referrer,omitempty"` + // Referee to filter by. If referrer set ID or referrer is provided, this field is ignored. + Referee *string `protobuf:"bytes,4,opt,name=referee,proto3,oneof" json:"referee,omitempty"` + // Epochs to aggregate party volume and rewards over. If omitted, 30 epochs will be used. + AggregationEpochs *uint32 `protobuf:"varint,5,opt,name=aggregation_epochs,json=aggregationEpochs,proto3,oneof" json:"aggregation_epochs,omitempty"` } -func (x *ReferralSetStats) GetDiscountFactor() string { - if x != nil { - return x.DiscountFactor +func (x *ListReferralSetRefereesRequest) Reset() { + *x = ListReferralSetRefereesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[352] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *ReferralSetStats) GetRewardFactor() string { - if x != nil { - return x.RewardFactor +func (x *ListReferralSetRefereesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListReferralSetRefereesRequest) ProtoMessage() {} + +func (x *ListReferralSetRefereesRequest) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[352] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (x *ReferralSetStats) GetEpochNotionalTakerVolume() string { - if x != nil { - return x.EpochNotionalTakerVolume +// Deprecated: Use ListReferralSetRefereesRequest.ProtoReflect.Descriptor instead. +func (*ListReferralSetRefereesRequest) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{352} +} + +func (x *ListReferralSetRefereesRequest) GetReferralSetId() string { + if x != nil && x.ReferralSetId != nil { + return *x.ReferralSetId } return "" } -func (x *ReferralSetStats) GetRewardsMultiplier() string { +func (x *ListReferralSetRefereesRequest) GetPagination() *Pagination { if x != nil { - return x.RewardsMultiplier + return x.Pagination } - return "" + return nil } -func (x *ReferralSetStats) GetRewardsFactorMultiplier() string { - if x != nil { - return x.RewardsFactorMultiplier +func (x *ListReferralSetRefereesRequest) GetReferrer() string { + if x != nil && x.Referrer != nil { + return *x.Referrer } return "" } -func (x *ReferralSetStats) GetWasEligible() bool { - if x != nil { - return x.WasEligible +func (x *ListReferralSetRefereesRequest) GetReferee() string { + if x != nil && x.Referee != nil { + return *x.Referee } - return false + return "" } -func (x *ReferralSetStats) GetReferrerTakerVolume() string { - if x != nil { - return x.ReferrerTakerVolume +func (x *ListReferralSetRefereesRequest) GetAggregationEpochs() uint32 { + if x != nil && x.AggregationEpochs != nil { + return *x.AggregationEpochs } - return "" + return 0 } -// Team record containing the team information. -type Team struct { +// Response containing information about a referral set's referees +type ListReferralSetRefereesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // ID of the created team. - TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` - // Party ID that created the team. - Referrer string `protobuf:"bytes,2,opt,name=referrer,proto3" json:"referrer,omitempty"` - // Name of the team. - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` - // Link to the team's homepage. - TeamUrl *string `protobuf:"bytes,4,opt,name=team_url,json=teamUrl,proto3,oneof" json:"team_url,omitempty"` - // Link to an image of the team's avatar. - AvatarUrl *string `protobuf:"bytes,5,opt,name=avatar_url,json=avatarUrl,proto3,oneof" json:"avatar_url,omitempty"` - // Timestamp in Unix nanoseconds when the team was created. - CreatedAt int64 `protobuf:"varint,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - // Whether or not the team is closed to new party members. When closed, only parties specified in the allow list can - // join the team. - Closed bool `protobuf:"varint,7,opt,name=closed,proto3" json:"closed,omitempty"` - // Epoch at which the team was created. - CreatedAtEpoch uint64 `protobuf:"varint,8,opt,name=created_at_epoch,json=createdAtEpoch,proto3" json:"created_at_epoch,omitempty"` - // List of public keys that are allowed to join the team. - // Only applicable to closed teams. - AllowList []string `protobuf:"bytes,9,rep,name=allow_list,json=allowList,proto3" json:"allow_list,omitempty"` - // Current number of members in the team. - TotalMembers uint64 `protobuf:"varint,10,opt,name=total_members,json=totalMembers,proto3" json:"total_members,omitempty"` + // Page of referral set referee data and corresponding page information. + ReferralSetReferees *ReferralSetRefereeConnection `protobuf:"bytes,1,opt,name=referral_set_referees,json=referralSetReferees,proto3" json:"referral_set_referees,omitempty"` } -func (x *Team) Reset() { - *x = Team{} +func (x *ListReferralSetRefereesResponse) Reset() { + *x = ListReferralSetRefereesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[349] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[353] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Team) String() string { +func (x *ListReferralSetRefereesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Team) ProtoMessage() {} +func (*ListReferralSetRefereesResponse) ProtoMessage() {} -func (x *Team) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[349] +func (x *ListReferralSetRefereesResponse) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[353] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21576,110 +21702,121 @@ func (x *Team) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Team.ProtoReflect.Descriptor instead. -func (*Team) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{349} +// Deprecated: Use ListReferralSetRefereesResponse.ProtoReflect.Descriptor instead. +func (*ListReferralSetRefereesResponse) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{353} } -func (x *Team) GetTeamId() string { +func (x *ListReferralSetRefereesResponse) GetReferralSetReferees() *ReferralSetRefereeConnection { if x != nil { - return x.TeamId + return x.ReferralSetReferees } - return "" + return nil } -func (x *Team) GetReferrer() string { - if x != nil { - return x.Referrer - } - return "" +// Request to get a referral set's stats +type GetReferralSetStatsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Restrict referral set statistics to those for the given referral set. + ReferralSetId *string `protobuf:"bytes,1,opt,name=referral_set_id,json=referralSetId,proto3,oneof" json:"referral_set_id,omitempty"` + // Epoch to get referral set statistics for. If not set, the last complete epoch is used. + AtEpoch *uint64 `protobuf:"varint,2,opt,name=at_epoch,json=atEpoch,proto3,oneof" json:"at_epoch,omitempty"` + // Restrict referral set statistics to those for the given referee. + Referee *string `protobuf:"bytes,3,opt,name=referee,proto3,oneof" json:"referee,omitempty"` + // Pagination controls. + Pagination *Pagination `protobuf:"bytes,4,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` } -func (x *Team) GetName() string { - if x != nil { - return x.Name +func (x *GetReferralSetStatsRequest) Reset() { + *x = GetReferralSetStatsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[354] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *Team) GetTeamUrl() string { - if x != nil && x.TeamUrl != nil { - return *x.TeamUrl - } - return "" +func (x *GetReferralSetStatsRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *Team) GetAvatarUrl() string { - if x != nil && x.AvatarUrl != nil { - return *x.AvatarUrl +func (*GetReferralSetStatsRequest) ProtoMessage() {} + +func (x *GetReferralSetStatsRequest) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[354] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) } -func (x *Team) GetCreatedAt() int64 { - if x != nil { - return x.CreatedAt - } - return 0 +// Deprecated: Use GetReferralSetStatsRequest.ProtoReflect.Descriptor instead. +func (*GetReferralSetStatsRequest) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{354} } -func (x *Team) GetClosed() bool { - if x != nil { - return x.Closed +func (x *GetReferralSetStatsRequest) GetReferralSetId() string { + if x != nil && x.ReferralSetId != nil { + return *x.ReferralSetId } - return false + return "" } -func (x *Team) GetCreatedAtEpoch() uint64 { - if x != nil { - return x.CreatedAtEpoch +func (x *GetReferralSetStatsRequest) GetAtEpoch() uint64 { + if x != nil && x.AtEpoch != nil { + return *x.AtEpoch } return 0 } -func (x *Team) GetAllowList() []string { - if x != nil { - return x.AllowList +func (x *GetReferralSetStatsRequest) GetReferee() string { + if x != nil && x.Referee != nil { + return *x.Referee } - return nil + return "" } -func (x *Team) GetTotalMembers() uint64 { +func (x *GetReferralSetStatsRequest) GetPagination() *Pagination { if x != nil { - return x.TotalMembers + return x.Pagination } - return 0 + return nil } -// Team data item with the corresponding cursor. -type TeamEdge struct { +// Response containing the volume discount statistics for the given epoch. +type GetReferralSetStatsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Team data. - Node *Team `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Referral set statistics for the epoch. + Stats *ReferralSetStatsConnection `protobuf:"bytes,1,opt,name=stats,proto3" json:"stats,omitempty"` } -func (x *TeamEdge) Reset() { - *x = TeamEdge{} +func (x *GetReferralSetStatsResponse) Reset() { + *x = GetReferralSetStatsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[350] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[355] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *TeamEdge) String() string { +func (x *GetReferralSetStatsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TeamEdge) ProtoMessage() {} +func (*GetReferralSetStatsResponse) ProtoMessage() {} -func (x *TeamEdge) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[350] +func (x *GetReferralSetStatsResponse) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[355] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21690,54 +21827,47 @@ func (x *TeamEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TeamEdge.ProtoReflect.Descriptor instead. -func (*TeamEdge) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{350} +// Deprecated: Use GetReferralSetStatsResponse.ProtoReflect.Descriptor instead. +func (*GetReferralSetStatsResponse) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{355} } -func (x *TeamEdge) GetNode() *Team { +func (x *GetReferralSetStatsResponse) GetStats() *ReferralSetStatsConnection { if x != nil { - return x.Node + return x.Stats } return nil } -func (x *TeamEdge) GetCursor() string { - if x != nil { - return x.Cursor - } - return "" -} - -// Page of team data and corresponding page information. -type TeamConnection struct { +// Page of volume discount stats data and corresponding page information. +type ReferralSetStatsConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of team data and their corresponding cursors. - Edges []*TeamEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page of volume discount statistics data and their corresponding cursors. + Edges []*ReferralSetStatsEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` // Page information that is used for fetching further pages. PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *TeamConnection) Reset() { - *x = TeamConnection{} +func (x *ReferralSetStatsConnection) Reset() { + *x = ReferralSetStatsConnection{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[351] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[356] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *TeamConnection) String() string { +func (x *ReferralSetStatsConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TeamConnection) ProtoMessage() {} +func (*ReferralSetStatsConnection) ProtoMessage() {} -func (x *TeamConnection) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[351] +func (x *ReferralSetStatsConnection) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[356] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21748,56 +21878,54 @@ func (x *TeamConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TeamConnection.ProtoReflect.Descriptor instead. -func (*TeamConnection) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{351} +// Deprecated: Use ReferralSetStatsConnection.ProtoReflect.Descriptor instead. +func (*ReferralSetStatsConnection) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{356} } -func (x *TeamConnection) GetEdges() []*TeamEdge { +func (x *ReferralSetStatsConnection) GetEdges() []*ReferralSetStatsEdge { if x != nil { return x.Edges } return nil } -func (x *TeamConnection) GetPageInfo() *PageInfo { +func (x *ReferralSetStatsConnection) GetPageInfo() *PageInfo { if x != nil { return x.PageInfo } return nil } -// Request to list all teams -type ListTeamsRequest struct { +// Referral set stats data with the corresponding cursor. +type ReferralSetStatsEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Restrict teams to those with the given team ID. - TeamId *string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3,oneof" json:"team_id,omitempty"` - // Restrict teams to those where the given party is a referrer or a referee. - PartyId *string `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3,oneof" json:"party_id,omitempty"` - // Pagination controls. - Pagination *Pagination `protobuf:"bytes,3,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + // Referral set stats data. + Node *ReferralSetStats `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *ListTeamsRequest) Reset() { - *x = ListTeamsRequest{} +func (x *ReferralSetStatsEdge) Reset() { + *x = ReferralSetStatsEdge{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[352] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[357] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListTeamsRequest) String() string { +func (x *ReferralSetStatsEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListTeamsRequest) ProtoMessage() {} +func (*ReferralSetStatsEdge) ProtoMessage() {} -func (x *ListTeamsRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[352] +func (x *ReferralSetStatsEdge) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[357] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21808,59 +21936,71 @@ func (x *ListTeamsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListTeamsRequest.ProtoReflect.Descriptor instead. -func (*ListTeamsRequest) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{352} -} - -func (x *ListTeamsRequest) GetTeamId() string { - if x != nil && x.TeamId != nil { - return *x.TeamId - } - return "" +// Deprecated: Use ReferralSetStatsEdge.ProtoReflect.Descriptor instead. +func (*ReferralSetStatsEdge) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{357} } -func (x *ListTeamsRequest) GetPartyId() string { - if x != nil && x.PartyId != nil { - return *x.PartyId +func (x *ReferralSetStatsEdge) GetNode() *ReferralSetStats { + if x != nil { + return x.Node } - return "" + return nil } -func (x *ListTeamsRequest) GetPagination() *Pagination { +func (x *ReferralSetStatsEdge) GetCursor() string { if x != nil { - return x.Pagination + return x.Cursor } - return nil + return "" } -// Response for the list teams request containing the team information. -type ListTeamsResponse struct { +// Referral set statistics for a given epoch for a party. +type ReferralSetStats struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of team data and corresponding page information. - Teams *TeamConnection `protobuf:"bytes,1,opt,name=teams,proto3" json:"teams,omitempty"` -} + // Epoch at which the set's statistics were updated. + AtEpoch uint64 `protobuf:"varint,1,opt,name=at_epoch,json=atEpoch,proto3" json:"at_epoch,omitempty"` + // Running volume for the set based on the window length of the current + // referral program. + ReferralSetRunningNotionalTakerVolume string `protobuf:"bytes,2,opt,name=referral_set_running_notional_taker_volume,json=referralSetRunningNotionalTakerVolume,proto3" json:"referral_set_running_notional_taker_volume,omitempty"` + // Party ID. + PartyId string `protobuf:"bytes,3,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` + // Discount factor applied to the party. + DiscountFactor string `protobuf:"bytes,4,opt,name=discount_factor,json=discountFactor,proto3" json:"discount_factor,omitempty"` + // Reward factor applied to the party. + RewardFactor string `protobuf:"bytes,5,opt,name=reward_factor,json=rewardFactor,proto3" json:"reward_factor,omitempty"` + // Current referee notional taker volume. + EpochNotionalTakerVolume string `protobuf:"bytes,6,opt,name=epoch_notional_taker_volume,json=epochNotionalTakerVolume,proto3" json:"epoch_notional_taker_volume,omitempty"` + // Multiplier applied to the referral reward factor when calculating referral rewards due to the referrer. + RewardsMultiplier string `protobuf:"bytes,7,opt,name=rewards_multiplier,json=rewardsMultiplier,proto3" json:"rewards_multiplier,omitempty"` + // Proportion of the referee's taker fees to be rewarded to the referrer. + RewardsFactorMultiplier string `protobuf:"bytes,8,opt,name=rewards_factor_multiplier,json=rewardsFactorMultiplier,proto3" json:"rewards_factor_multiplier,omitempty"` + // Indicates if the referral set was eligible to be part of the referral program. + WasEligible bool `protobuf:"varint,9,opt,name=was_eligible,json=wasEligible,proto3" json:"was_eligible,omitempty"` + // Referrer's taker volume + ReferrerTakerVolume string `protobuf:"bytes,10,opt,name=referrer_taker_volume,json=referrerTakerVolume,proto3" json:"referrer_taker_volume,omitempty"` +} -func (x *ListTeamsResponse) Reset() { - *x = ListTeamsResponse{} +func (x *ReferralSetStats) Reset() { + *x = ReferralSetStats{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[353] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[358] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListTeamsResponse) String() string { +func (x *ReferralSetStats) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListTeamsResponse) ProtoMessage() {} +func (*ReferralSetStats) ProtoMessage() {} -func (x *ListTeamsResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[353] +func (x *ReferralSetStats) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[358] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21871,113 +22011,128 @@ func (x *ListTeamsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListTeamsResponse.ProtoReflect.Descriptor instead. -func (*ListTeamsResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{353} +// Deprecated: Use ReferralSetStats.ProtoReflect.Descriptor instead. +func (*ReferralSetStats) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{358} } -func (x *ListTeamsResponse) GetTeams() *TeamConnection { +func (x *ReferralSetStats) GetAtEpoch() uint64 { if x != nil { - return x.Teams + return x.AtEpoch } - return nil + return 0 } -// Request to list all teams' statistics. -type ListTeamsStatisticsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Restrict team statistics to those with the given team ID. - TeamId *string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3,oneof" json:"team_id,omitempty"` - // Defines the number of past epochs to aggregate data from. By default, it takes - // the last 10 epochs. - AggregationEpochs *uint64 `protobuf:"varint,2,opt,name=aggregation_epochs,json=aggregationEpochs,proto3,oneof" json:"aggregation_epochs,omitempty"` - // Pagination controls. - Pagination *Pagination `protobuf:"bytes,3,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` +func (x *ReferralSetStats) GetReferralSetRunningNotionalTakerVolume() string { + if x != nil { + return x.ReferralSetRunningNotionalTakerVolume + } + return "" } -func (x *ListTeamsStatisticsRequest) Reset() { - *x = ListTeamsStatisticsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[354] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *ReferralSetStats) GetPartyId() string { + if x != nil { + return x.PartyId } + return "" } -func (x *ListTeamsStatisticsRequest) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *ReferralSetStats) GetDiscountFactor() string { + if x != nil { + return x.DiscountFactor + } + return "" } -func (*ListTeamsStatisticsRequest) ProtoMessage() {} +func (x *ReferralSetStats) GetRewardFactor() string { + if x != nil { + return x.RewardFactor + } + return "" +} -func (x *ListTeamsStatisticsRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[354] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *ReferralSetStats) GetEpochNotionalTakerVolume() string { + if x != nil { + return x.EpochNotionalTakerVolume } - return mi.MessageOf(x) + return "" } -// Deprecated: Use ListTeamsStatisticsRequest.ProtoReflect.Descriptor instead. -func (*ListTeamsStatisticsRequest) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{354} +func (x *ReferralSetStats) GetRewardsMultiplier() string { + if x != nil { + return x.RewardsMultiplier + } + return "" } -func (x *ListTeamsStatisticsRequest) GetTeamId() string { - if x != nil && x.TeamId != nil { - return *x.TeamId +func (x *ReferralSetStats) GetRewardsFactorMultiplier() string { + if x != nil { + return x.RewardsFactorMultiplier } return "" } -func (x *ListTeamsStatisticsRequest) GetAggregationEpochs() uint64 { - if x != nil && x.AggregationEpochs != nil { - return *x.AggregationEpochs +func (x *ReferralSetStats) GetWasEligible() bool { + if x != nil { + return x.WasEligible } - return 0 + return false } -func (x *ListTeamsStatisticsRequest) GetPagination() *Pagination { +func (x *ReferralSetStats) GetReferrerTakerVolume() string { if x != nil { - return x.Pagination + return x.ReferrerTakerVolume } - return nil + return "" } -// Response for the list teams' statistics request containing the statistics. -type ListTeamsStatisticsResponse struct { +// Team record containing the team information. +type Team struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of teams' statistics data and corresponding page information. - Statistics *TeamsStatisticsConnection `protobuf:"bytes,1,opt,name=statistics,proto3" json:"statistics,omitempty"` + // ID of the created team. + TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` + // Party ID that created the team. + Referrer string `protobuf:"bytes,2,opt,name=referrer,proto3" json:"referrer,omitempty"` + // Name of the team. + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + // Link to the team's homepage. + TeamUrl *string `protobuf:"bytes,4,opt,name=team_url,json=teamUrl,proto3,oneof" json:"team_url,omitempty"` + // Link to an image of the team's avatar. + AvatarUrl *string `protobuf:"bytes,5,opt,name=avatar_url,json=avatarUrl,proto3,oneof" json:"avatar_url,omitempty"` + // Timestamp in Unix nanoseconds when the team was created. + CreatedAt int64 `protobuf:"varint,6,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + // Whether or not the team is closed to new party members. When closed, only parties specified in the allow list can + // join the team. + Closed bool `protobuf:"varint,7,opt,name=closed,proto3" json:"closed,omitempty"` + // Epoch at which the team was created. + CreatedAtEpoch uint64 `protobuf:"varint,8,opt,name=created_at_epoch,json=createdAtEpoch,proto3" json:"created_at_epoch,omitempty"` + // List of public keys that are allowed to join the team. + // Only applicable to closed teams. + AllowList []string `protobuf:"bytes,9,rep,name=allow_list,json=allowList,proto3" json:"allow_list,omitempty"` + // Current number of members in the team. + TotalMembers uint64 `protobuf:"varint,10,opt,name=total_members,json=totalMembers,proto3" json:"total_members,omitempty"` } -func (x *ListTeamsStatisticsResponse) Reset() { - *x = ListTeamsStatisticsResponse{} +func (x *Team) Reset() { + *x = Team{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[355] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[359] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListTeamsStatisticsResponse) String() string { +func (x *Team) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListTeamsStatisticsResponse) ProtoMessage() {} +func (*Team) ProtoMessage() {} -func (x *ListTeamsStatisticsResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[355] +func (x *Team) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[359] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21988,105 +22143,110 @@ func (x *ListTeamsStatisticsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListTeamsStatisticsResponse.ProtoReflect.Descriptor instead. -func (*ListTeamsStatisticsResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{355} +// Deprecated: Use Team.ProtoReflect.Descriptor instead. +func (*Team) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{359} } -func (x *ListTeamsStatisticsResponse) GetStatistics() *TeamsStatisticsConnection { +func (x *Team) GetTeamId() string { if x != nil { - return x.Statistics + return x.TeamId } - return nil + return "" } -// Page of teams' statistics and corresponding page information. -type TeamsStatisticsConnection struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Page of team data and their corresponding cursors. - Edges []*TeamStatisticsEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` +func (x *Team) GetReferrer() string { + if x != nil { + return x.Referrer + } + return "" } -func (x *TeamsStatisticsConnection) Reset() { - *x = TeamsStatisticsConnection{} - if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[356] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *Team) GetName() string { + if x != nil { + return x.Name } + return "" } -func (x *TeamsStatisticsConnection) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *Team) GetTeamUrl() string { + if x != nil && x.TeamUrl != nil { + return *x.TeamUrl + } + return "" } -func (*TeamsStatisticsConnection) ProtoMessage() {} +func (x *Team) GetAvatarUrl() string { + if x != nil && x.AvatarUrl != nil { + return *x.AvatarUrl + } + return "" +} -func (x *TeamsStatisticsConnection) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[356] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *Team) GetCreatedAt() int64 { + if x != nil { + return x.CreatedAt } - return mi.MessageOf(x) + return 0 } -// Deprecated: Use TeamsStatisticsConnection.ProtoReflect.Descriptor instead. -func (*TeamsStatisticsConnection) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{356} +func (x *Team) GetClosed() bool { + if x != nil { + return x.Closed + } + return false } -func (x *TeamsStatisticsConnection) GetEdges() []*TeamStatisticsEdge { +func (x *Team) GetCreatedAtEpoch() uint64 { if x != nil { - return x.Edges + return x.CreatedAtEpoch } - return nil + return 0 } -func (x *TeamsStatisticsConnection) GetPageInfo() *PageInfo { +func (x *Team) GetAllowList() []string { if x != nil { - return x.PageInfo + return x.AllowList } return nil } -// Team data item with the corresponding cursor. -type TeamStatisticsEdge struct { +func (x *Team) GetTotalMembers() uint64 { + if x != nil { + return x.TotalMembers + } + return 0 +} + +// Team data item with the corresponding cursor. +type TeamEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Team's statistics data. - Node *TeamStatistics `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Team data. + Node *Team `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` // Cursor that can be used to fetch further pages. Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *TeamStatisticsEdge) Reset() { - *x = TeamStatisticsEdge{} +func (x *TeamEdge) Reset() { + *x = TeamEdge{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[357] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[360] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *TeamStatisticsEdge) String() string { +func (x *TeamEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TeamStatisticsEdge) ProtoMessage() {} +func (*TeamEdge) ProtoMessage() {} -func (x *TeamStatisticsEdge) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[357] +func (x *TeamEdge) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[360] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22097,68 +22257,54 @@ func (x *TeamStatisticsEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TeamStatisticsEdge.ProtoReflect.Descriptor instead. -func (*TeamStatisticsEdge) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{357} +// Deprecated: Use TeamEdge.ProtoReflect.Descriptor instead. +func (*TeamEdge) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{360} } -func (x *TeamStatisticsEdge) GetNode() *TeamStatistics { +func (x *TeamEdge) GetNode() *Team { if x != nil { return x.Node } return nil } -func (x *TeamStatisticsEdge) GetCursor() string { +func (x *TeamEdge) GetCursor() string { if x != nil { return x.Cursor } return "" } -// Team's statistics record containing the team information. -type TeamStatistics struct { +// Page of team data and corresponding page information. +type TeamConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Team ID the statistics are related to. - TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` - // Total of volume accumulated over the requested epoch period, expressed in - // quantum value. - TotalQuantumVolume string `protobuf:"bytes,2,opt,name=total_quantum_volume,json=totalQuantumVolume,proto3" json:"total_quantum_volume,omitempty"` - // Total of rewards accumulated over the requested epoch period, expressed in - // quantum value. - TotalQuantumRewards string `protobuf:"bytes,3,opt,name=total_quantum_rewards,json=totalQuantumRewards,proto3" json:"total_quantum_rewards,omitempty"` - // List of rewards over the requested epoch period, expressed in quantum - // value for each epoch. - QuantumRewards []*QuantumRewardsPerEpoch `protobuf:"bytes,4,rep,name=quantum_rewards,json=quantumRewards,proto3" json:"quantum_rewards,omitempty"` - // Total of games played. - TotalGamesPlayed uint64 `protobuf:"varint,5,opt,name=total_games_played,json=totalGamesPlayed,proto3" json:"total_games_played,omitempty"` - // List of games played over the requested epoch period. - GamesPlayed []string `protobuf:"bytes,6,rep,name=games_played,json=gamesPlayed,proto3" json:"games_played,omitempty"` - // List of volumes over the requested epoch period, expressed in quantum - // value for each epoch. - QuantumVolumes []*QuantumVolumesPerEpoch `protobuf:"bytes,7,rep,name=quantum_volumes,json=quantumVolumes,proto3" json:"quantum_volumes,omitempty"` + // Page of team data and their corresponding cursors. + Edges []*TeamEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *TeamStatistics) Reset() { - *x = TeamStatistics{} +func (x *TeamConnection) Reset() { + *x = TeamConnection{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[358] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[361] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *TeamStatistics) String() string { +func (x *TeamConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TeamStatistics) ProtoMessage() {} +func (*TeamConnection) ProtoMessage() {} -func (x *TeamStatistics) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[358] +func (x *TeamConnection) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[361] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22169,88 +22315,56 @@ func (x *TeamStatistics) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TeamStatistics.ProtoReflect.Descriptor instead. -func (*TeamStatistics) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{358} -} - -func (x *TeamStatistics) GetTeamId() string { - if x != nil { - return x.TeamId - } - return "" -} - -func (x *TeamStatistics) GetTotalQuantumVolume() string { - if x != nil { - return x.TotalQuantumVolume - } - return "" -} - -func (x *TeamStatistics) GetTotalQuantumRewards() string { - if x != nil { - return x.TotalQuantumRewards - } - return "" -} - -func (x *TeamStatistics) GetQuantumRewards() []*QuantumRewardsPerEpoch { - if x != nil { - return x.QuantumRewards - } - return nil -} - -func (x *TeamStatistics) GetTotalGamesPlayed() uint64 { - if x != nil { - return x.TotalGamesPlayed - } - return 0 +// Deprecated: Use TeamConnection.ProtoReflect.Descriptor instead. +func (*TeamConnection) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{361} } -func (x *TeamStatistics) GetGamesPlayed() []string { +func (x *TeamConnection) GetEdges() []*TeamEdge { if x != nil { - return x.GamesPlayed + return x.Edges } return nil } -func (x *TeamStatistics) GetQuantumVolumes() []*QuantumVolumesPerEpoch { +func (x *TeamConnection) GetPageInfo() *PageInfo { if x != nil { - return x.QuantumVolumes + return x.PageInfo } return nil } -type QuantumRewardsPerEpoch struct { +// Request to list all teams +type ListTeamsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Epoch for which this information is valid. - Epoch uint64 `protobuf:"varint,1,opt,name=epoch,proto3" json:"epoch,omitempty"` - // Total rewards accumulated over the epoch period, expressed in quantum value. - TotalQuantumRewards string `protobuf:"bytes,2,opt,name=total_quantum_rewards,json=totalQuantumRewards,proto3" json:"total_quantum_rewards,omitempty"` + // Restrict teams to those with the given team ID. + TeamId *string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3,oneof" json:"team_id,omitempty"` + // Restrict teams to those where the given party is a referrer or a referee. + PartyId *string `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3,oneof" json:"party_id,omitempty"` + // Pagination controls. + Pagination *Pagination `protobuf:"bytes,3,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` } -func (x *QuantumRewardsPerEpoch) Reset() { - *x = QuantumRewardsPerEpoch{} +func (x *ListTeamsRequest) Reset() { + *x = ListTeamsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[359] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[362] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *QuantumRewardsPerEpoch) String() string { +func (x *ListTeamsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QuantumRewardsPerEpoch) ProtoMessage() {} +func (*ListTeamsRequest) ProtoMessage() {} -func (x *QuantumRewardsPerEpoch) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[359] +func (x *ListTeamsRequest) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[362] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22261,53 +22375,59 @@ func (x *QuantumRewardsPerEpoch) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use QuantumRewardsPerEpoch.ProtoReflect.Descriptor instead. -func (*QuantumRewardsPerEpoch) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{359} +// Deprecated: Use ListTeamsRequest.ProtoReflect.Descriptor instead. +func (*ListTeamsRequest) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{362} } -func (x *QuantumRewardsPerEpoch) GetEpoch() uint64 { - if x != nil { - return x.Epoch +func (x *ListTeamsRequest) GetTeamId() string { + if x != nil && x.TeamId != nil { + return *x.TeamId } - return 0 + return "" } -func (x *QuantumRewardsPerEpoch) GetTotalQuantumRewards() string { - if x != nil { - return x.TotalQuantumRewards +func (x *ListTeamsRequest) GetPartyId() string { + if x != nil && x.PartyId != nil { + return *x.PartyId } return "" } -type QuantumVolumesPerEpoch struct { +func (x *ListTeamsRequest) GetPagination() *Pagination { + if x != nil { + return x.Pagination + } + return nil +} + +// Response for the list teams request containing the team information. +type ListTeamsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Epoch for which this information is valid. - Epoch uint64 `protobuf:"varint,1,opt,name=epoch,proto3" json:"epoch,omitempty"` - // Total volumes accumulated over the epoch period, expressed in quantum value. - TotalQuantumVolumes string `protobuf:"bytes,2,opt,name=total_quantum_volumes,json=totalQuantumVolumes,proto3" json:"total_quantum_volumes,omitempty"` + // Page of team data and corresponding page information. + Teams *TeamConnection `protobuf:"bytes,1,opt,name=teams,proto3" json:"teams,omitempty"` } -func (x *QuantumVolumesPerEpoch) Reset() { - *x = QuantumVolumesPerEpoch{} +func (x *ListTeamsResponse) Reset() { + *x = ListTeamsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[360] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[363] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *QuantumVolumesPerEpoch) String() string { +func (x *ListTeamsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*QuantumVolumesPerEpoch) ProtoMessage() {} +func (*ListTeamsResponse) ProtoMessage() {} -func (x *QuantumVolumesPerEpoch) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[360] +func (x *ListTeamsResponse) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[363] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22318,59 +22438,50 @@ func (x *QuantumVolumesPerEpoch) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use QuantumVolumesPerEpoch.ProtoReflect.Descriptor instead. -func (*QuantumVolumesPerEpoch) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{360} -} - -func (x *QuantumVolumesPerEpoch) GetEpoch() uint64 { - if x != nil { - return x.Epoch - } - return 0 +// Deprecated: Use ListTeamsResponse.ProtoReflect.Descriptor instead. +func (*ListTeamsResponse) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{363} } -func (x *QuantumVolumesPerEpoch) GetTotalQuantumVolumes() string { +func (x *ListTeamsResponse) GetTeams() *TeamConnection { if x != nil { - return x.TotalQuantumVolumes + return x.Teams } - return "" + return nil } -// Request to list all team members' statistics. -type ListTeamMembersStatisticsRequest struct { +// Request to list all teams' statistics. +type ListTeamsStatisticsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // Restrict team statistics to those with the given team ID. - TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` - // Restrict team members' statistics to those with the given party ID. - PartyId *string `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3,oneof" json:"party_id,omitempty"` + TeamId *string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3,oneof" json:"team_id,omitempty"` // Defines the number of past epochs to aggregate data from. By default, it takes // the last 10 epochs. - AggregationEpochs *uint64 `protobuf:"varint,3,opt,name=aggregation_epochs,json=aggregationEpochs,proto3,oneof" json:"aggregation_epochs,omitempty"` + AggregationEpochs *uint64 `protobuf:"varint,2,opt,name=aggregation_epochs,json=aggregationEpochs,proto3,oneof" json:"aggregation_epochs,omitempty"` // Pagination controls. - Pagination *Pagination `protobuf:"bytes,4,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + Pagination *Pagination `protobuf:"bytes,3,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` } -func (x *ListTeamMembersStatisticsRequest) Reset() { - *x = ListTeamMembersStatisticsRequest{} +func (x *ListTeamsStatisticsRequest) Reset() { + *x = ListTeamsStatisticsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[361] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[364] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListTeamMembersStatisticsRequest) String() string { +func (x *ListTeamsStatisticsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListTeamMembersStatisticsRequest) ProtoMessage() {} +func (*ListTeamsStatisticsRequest) ProtoMessage() {} -func (x *ListTeamMembersStatisticsRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[361] +func (x *ListTeamsStatisticsRequest) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[364] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22381,66 +22492,59 @@ func (x *ListTeamMembersStatisticsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListTeamMembersStatisticsRequest.ProtoReflect.Descriptor instead. -func (*ListTeamMembersStatisticsRequest) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{361} +// Deprecated: Use ListTeamsStatisticsRequest.ProtoReflect.Descriptor instead. +func (*ListTeamsStatisticsRequest) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{364} } -func (x *ListTeamMembersStatisticsRequest) GetTeamId() string { - if x != nil { - return x.TeamId - } - return "" -} - -func (x *ListTeamMembersStatisticsRequest) GetPartyId() string { - if x != nil && x.PartyId != nil { - return *x.PartyId +func (x *ListTeamsStatisticsRequest) GetTeamId() string { + if x != nil && x.TeamId != nil { + return *x.TeamId } return "" } -func (x *ListTeamMembersStatisticsRequest) GetAggregationEpochs() uint64 { +func (x *ListTeamsStatisticsRequest) GetAggregationEpochs() uint64 { if x != nil && x.AggregationEpochs != nil { return *x.AggregationEpochs } return 0 } -func (x *ListTeamMembersStatisticsRequest) GetPagination() *Pagination { +func (x *ListTeamsStatisticsRequest) GetPagination() *Pagination { if x != nil { return x.Pagination } return nil } -// Response for the list team members' statistics request containing the statistics. -type ListTeamMembersStatisticsResponse struct { +// Response for the list teams' statistics request containing the statistics. +type ListTeamsStatisticsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of team members' statistics data and corresponding page information. - Statistics *TeamMembersStatisticsConnection `protobuf:"bytes,1,opt,name=statistics,proto3" json:"statistics,omitempty"` + // Page of teams' statistics data and corresponding page information. + Statistics *TeamsStatisticsConnection `protobuf:"bytes,1,opt,name=statistics,proto3" json:"statistics,omitempty"` } -func (x *ListTeamMembersStatisticsResponse) Reset() { - *x = ListTeamMembersStatisticsResponse{} +func (x *ListTeamsStatisticsResponse) Reset() { + *x = ListTeamsStatisticsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[362] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[365] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListTeamMembersStatisticsResponse) String() string { +func (x *ListTeamsStatisticsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListTeamMembersStatisticsResponse) ProtoMessage() {} +func (*ListTeamsStatisticsResponse) ProtoMessage() {} -func (x *ListTeamMembersStatisticsResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[362] +func (x *ListTeamsStatisticsResponse) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[365] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22451,47 +22555,47 @@ func (x *ListTeamMembersStatisticsResponse) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use ListTeamMembersStatisticsResponse.ProtoReflect.Descriptor instead. -func (*ListTeamMembersStatisticsResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{362} +// Deprecated: Use ListTeamsStatisticsResponse.ProtoReflect.Descriptor instead. +func (*ListTeamsStatisticsResponse) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{365} } -func (x *ListTeamMembersStatisticsResponse) GetStatistics() *TeamMembersStatisticsConnection { +func (x *ListTeamsStatisticsResponse) GetStatistics() *TeamsStatisticsConnection { if x != nil { return x.Statistics } return nil } -// Page of team members' statistics and corresponding page information. -type TeamMembersStatisticsConnection struct { +// Page of teams' statistics and corresponding page information. +type TeamsStatisticsConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of team member data and their corresponding cursors. - Edges []*TeamMemberStatisticsEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page of team data and their corresponding cursors. + Edges []*TeamStatisticsEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` // Page information that is used for fetching further pages. PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *TeamMembersStatisticsConnection) Reset() { - *x = TeamMembersStatisticsConnection{} +func (x *TeamsStatisticsConnection) Reset() { + *x = TeamsStatisticsConnection{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[363] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[366] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *TeamMembersStatisticsConnection) String() string { +func (x *TeamsStatisticsConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TeamMembersStatisticsConnection) ProtoMessage() {} +func (*TeamsStatisticsConnection) ProtoMessage() {} -func (x *TeamMembersStatisticsConnection) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[363] +func (x *TeamsStatisticsConnection) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[366] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22502,54 +22606,54 @@ func (x *TeamMembersStatisticsConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TeamMembersStatisticsConnection.ProtoReflect.Descriptor instead. -func (*TeamMembersStatisticsConnection) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{363} +// Deprecated: Use TeamsStatisticsConnection.ProtoReflect.Descriptor instead. +func (*TeamsStatisticsConnection) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{366} } -func (x *TeamMembersStatisticsConnection) GetEdges() []*TeamMemberStatisticsEdge { +func (x *TeamsStatisticsConnection) GetEdges() []*TeamStatisticsEdge { if x != nil { return x.Edges } return nil } -func (x *TeamMembersStatisticsConnection) GetPageInfo() *PageInfo { +func (x *TeamsStatisticsConnection) GetPageInfo() *PageInfo { if x != nil { return x.PageInfo } return nil } -// Team member data item with the corresponding cursor. -type TeamMemberStatisticsEdge struct { +// Team data item with the corresponding cursor. +type TeamStatisticsEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Team member's statistics data. - Node *TeamMemberStatistics `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Team's statistics data. + Node *TeamStatistics `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` // Cursor that can be used to fetch further pages. Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *TeamMemberStatisticsEdge) Reset() { - *x = TeamMemberStatisticsEdge{} +func (x *TeamStatisticsEdge) Reset() { + *x = TeamStatisticsEdge{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[364] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[367] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *TeamMemberStatisticsEdge) String() string { +func (x *TeamStatisticsEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TeamMemberStatisticsEdge) ProtoMessage() {} +func (*TeamStatisticsEdge) ProtoMessage() {} -func (x *TeamMemberStatisticsEdge) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[364] +func (x *TeamStatisticsEdge) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[367] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22560,33 +22664,33 @@ func (x *TeamMemberStatisticsEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TeamMemberStatisticsEdge.ProtoReflect.Descriptor instead. -func (*TeamMemberStatisticsEdge) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{364} +// Deprecated: Use TeamStatisticsEdge.ProtoReflect.Descriptor instead. +func (*TeamStatisticsEdge) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{367} } -func (x *TeamMemberStatisticsEdge) GetNode() *TeamMemberStatistics { +func (x *TeamStatisticsEdge) GetNode() *TeamStatistics { if x != nil { return x.Node } return nil } -func (x *TeamMemberStatisticsEdge) GetCursor() string { +func (x *TeamStatisticsEdge) GetCursor() string { if x != nil { return x.Cursor } return "" } -// Team member's statistics record containing the team member's information. -type TeamMemberStatistics struct { +// Team's statistics record containing the team information. +type TeamStatistics struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Party ID the statistics are related to. - PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` + // Team ID the statistics are related to. + TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` // Total of volume accumulated over the requested epoch period, expressed in // quantum value. TotalQuantumVolume string `protobuf:"bytes,2,opt,name=total_quantum_volume,json=totalQuantumVolume,proto3" json:"total_quantum_volume,omitempty"` @@ -22596,7 +22700,7 @@ type TeamMemberStatistics struct { // List of rewards over the requested epoch period, expressed in quantum // value for each epoch. QuantumRewards []*QuantumRewardsPerEpoch `protobuf:"bytes,4,rep,name=quantum_rewards,json=quantumRewards,proto3" json:"quantum_rewards,omitempty"` - // Total number of games played. + // Total of games played. TotalGamesPlayed uint64 `protobuf:"varint,5,opt,name=total_games_played,json=totalGamesPlayed,proto3" json:"total_games_played,omitempty"` // List of games played over the requested epoch period. GamesPlayed []string `protobuf:"bytes,6,rep,name=games_played,json=gamesPlayed,proto3" json:"games_played,omitempty"` @@ -22605,23 +22709,23 @@ type TeamMemberStatistics struct { QuantumVolumes []*QuantumVolumesPerEpoch `protobuf:"bytes,7,rep,name=quantum_volumes,json=quantumVolumes,proto3" json:"quantum_volumes,omitempty"` } -func (x *TeamMemberStatistics) Reset() { - *x = TeamMemberStatistics{} +func (x *TeamStatistics) Reset() { + *x = TeamStatistics{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[365] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[368] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *TeamMemberStatistics) String() string { +func (x *TeamStatistics) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TeamMemberStatistics) ProtoMessage() {} +func (*TeamStatistics) ProtoMessage() {} -func (x *TeamMemberStatistics) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[365] +func (x *TeamStatistics) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[368] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22632,89 +22736,88 @@ func (x *TeamMemberStatistics) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TeamMemberStatistics.ProtoReflect.Descriptor instead. -func (*TeamMemberStatistics) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{365} +// Deprecated: Use TeamStatistics.ProtoReflect.Descriptor instead. +func (*TeamStatistics) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{368} } -func (x *TeamMemberStatistics) GetPartyId() string { +func (x *TeamStatistics) GetTeamId() string { if x != nil { - return x.PartyId + return x.TeamId } return "" } -func (x *TeamMemberStatistics) GetTotalQuantumVolume() string { +func (x *TeamStatistics) GetTotalQuantumVolume() string { if x != nil { return x.TotalQuantumVolume } return "" } -func (x *TeamMemberStatistics) GetTotalQuantumRewards() string { +func (x *TeamStatistics) GetTotalQuantumRewards() string { if x != nil { return x.TotalQuantumRewards } return "" } -func (x *TeamMemberStatistics) GetQuantumRewards() []*QuantumRewardsPerEpoch { +func (x *TeamStatistics) GetQuantumRewards() []*QuantumRewardsPerEpoch { if x != nil { return x.QuantumRewards } return nil } -func (x *TeamMemberStatistics) GetTotalGamesPlayed() uint64 { +func (x *TeamStatistics) GetTotalGamesPlayed() uint64 { if x != nil { return x.TotalGamesPlayed } return 0 } -func (x *TeamMemberStatistics) GetGamesPlayed() []string { +func (x *TeamStatistics) GetGamesPlayed() []string { if x != nil { return x.GamesPlayed } return nil } -func (x *TeamMemberStatistics) GetQuantumVolumes() []*QuantumVolumesPerEpoch { +func (x *TeamStatistics) GetQuantumVolumes() []*QuantumVolumesPerEpoch { if x != nil { return x.QuantumVolumes } return nil } -// Request that is sent when listing the referees for a given team. -type ListTeamRefereesRequest struct { +type QuantumRewardsPerEpoch struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Team ID to list referees for. - TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` - // Pagination controls. - Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + // Epoch for which this information is valid. + Epoch uint64 `protobuf:"varint,1,opt,name=epoch,proto3" json:"epoch,omitempty"` + // Total rewards accumulated over the epoch period, expressed in quantum value. + TotalQuantumRewards string `protobuf:"bytes,2,opt,name=total_quantum_rewards,json=totalQuantumRewards,proto3" json:"total_quantum_rewards,omitempty"` } -func (x *ListTeamRefereesRequest) Reset() { - *x = ListTeamRefereesRequest{} +func (x *QuantumRewardsPerEpoch) Reset() { + *x = QuantumRewardsPerEpoch{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[366] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[369] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListTeamRefereesRequest) String() string { +func (x *QuantumRewardsPerEpoch) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListTeamRefereesRequest) ProtoMessage() {} +func (*QuantumRewardsPerEpoch) ProtoMessage() {} -func (x *ListTeamRefereesRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[366] +func (x *QuantumRewardsPerEpoch) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[369] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22725,58 +22828,53 @@ func (x *ListTeamRefereesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListTeamRefereesRequest.ProtoReflect.Descriptor instead. -func (*ListTeamRefereesRequest) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{366} +// Deprecated: Use QuantumRewardsPerEpoch.ProtoReflect.Descriptor instead. +func (*QuantumRewardsPerEpoch) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{369} } -func (x *ListTeamRefereesRequest) GetTeamId() string { +func (x *QuantumRewardsPerEpoch) GetEpoch() uint64 { if x != nil { - return x.TeamId + return x.Epoch } - return "" + return 0 } -func (x *ListTeamRefereesRequest) GetPagination() *Pagination { +func (x *QuantumRewardsPerEpoch) GetTotalQuantumRewards() string { if x != nil { - return x.Pagination + return x.TotalQuantumRewards } - return nil + return "" } -// A team's referee info -type TeamReferee struct { +type QuantumVolumesPerEpoch struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // ID of the team the referee joined. - TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` - // Party that joined the team. - Referee string `protobuf:"bytes,2,opt,name=referee,proto3" json:"referee,omitempty"` - // Timestamp in Unix nanoseconds when the party joined the team. - JoinedAt int64 `protobuf:"varint,3,opt,name=joined_at,json=joinedAt,proto3" json:"joined_at,omitempty"` - // Epoch at which the party joined the team. - JoinedAtEpoch uint64 `protobuf:"varint,4,opt,name=joined_at_epoch,json=joinedAtEpoch,proto3" json:"joined_at_epoch,omitempty"` + // Epoch for which this information is valid. + Epoch uint64 `protobuf:"varint,1,opt,name=epoch,proto3" json:"epoch,omitempty"` + // Total volumes accumulated over the epoch period, expressed in quantum value. + TotalQuantumVolumes string `protobuf:"bytes,2,opt,name=total_quantum_volumes,json=totalQuantumVolumes,proto3" json:"total_quantum_volumes,omitempty"` } -func (x *TeamReferee) Reset() { - *x = TeamReferee{} +func (x *QuantumVolumesPerEpoch) Reset() { + *x = QuantumVolumesPerEpoch{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[367] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[370] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *TeamReferee) String() string { +func (x *QuantumVolumesPerEpoch) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TeamReferee) ProtoMessage() {} +func (*QuantumVolumesPerEpoch) ProtoMessage() {} -func (x *TeamReferee) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[367] +func (x *QuantumVolumesPerEpoch) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[370] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22787,68 +22885,59 @@ func (x *TeamReferee) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TeamReferee.ProtoReflect.Descriptor instead. -func (*TeamReferee) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{367} +// Deprecated: Use QuantumVolumesPerEpoch.ProtoReflect.Descriptor instead. +func (*QuantumVolumesPerEpoch) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{370} } -func (x *TeamReferee) GetTeamId() string { +func (x *QuantumVolumesPerEpoch) GetEpoch() uint64 { if x != nil { - return x.TeamId + return x.Epoch } - return "" + return 0 } -func (x *TeamReferee) GetReferee() string { +func (x *QuantumVolumesPerEpoch) GetTotalQuantumVolumes() string { if x != nil { - return x.Referee + return x.TotalQuantumVolumes } return "" } -func (x *TeamReferee) GetJoinedAt() int64 { - if x != nil { - return x.JoinedAt - } - return 0 -} +// Request to list all team members' statistics. +type ListTeamMembersStatisticsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -func (x *TeamReferee) GetJoinedAtEpoch() uint64 { - if x != nil { - return x.JoinedAtEpoch - } - return 0 -} - -// Team referee data item with the corresponding cursor. -type TeamRefereeEdge struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Team referee data. - Node *TeamReferee `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Restrict team statistics to those with the given team ID. + TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` + // Restrict team members' statistics to those with the given party ID. + PartyId *string `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3,oneof" json:"party_id,omitempty"` + // Defines the number of past epochs to aggregate data from. By default, it takes + // the last 10 epochs. + AggregationEpochs *uint64 `protobuf:"varint,3,opt,name=aggregation_epochs,json=aggregationEpochs,proto3,oneof" json:"aggregation_epochs,omitempty"` + // Pagination controls. + Pagination *Pagination `protobuf:"bytes,4,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` } -func (x *TeamRefereeEdge) Reset() { - *x = TeamRefereeEdge{} +func (x *ListTeamMembersStatisticsRequest) Reset() { + *x = ListTeamMembersStatisticsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[368] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[371] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *TeamRefereeEdge) String() string { +func (x *ListTeamMembersStatisticsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TeamRefereeEdge) ProtoMessage() {} +func (*ListTeamMembersStatisticsRequest) ProtoMessage() {} -func (x *TeamRefereeEdge) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[368] +func (x *ListTeamMembersStatisticsRequest) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[371] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22859,54 +22948,66 @@ func (x *TeamRefereeEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TeamRefereeEdge.ProtoReflect.Descriptor instead. -func (*TeamRefereeEdge) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{368} +// Deprecated: Use ListTeamMembersStatisticsRequest.ProtoReflect.Descriptor instead. +func (*ListTeamMembersStatisticsRequest) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{371} } -func (x *TeamRefereeEdge) GetNode() *TeamReferee { +func (x *ListTeamMembersStatisticsRequest) GetTeamId() string { if x != nil { - return x.Node + return x.TeamId } - return nil + return "" } -func (x *TeamRefereeEdge) GetCursor() string { - if x != nil { - return x.Cursor +func (x *ListTeamMembersStatisticsRequest) GetPartyId() string { + if x != nil && x.PartyId != nil { + return *x.PartyId } return "" } -// Page of team referee data and corresponding page information. -type TeamRefereeConnection struct { +func (x *ListTeamMembersStatisticsRequest) GetAggregationEpochs() uint64 { + if x != nil && x.AggregationEpochs != nil { + return *x.AggregationEpochs + } + return 0 +} + +func (x *ListTeamMembersStatisticsRequest) GetPagination() *Pagination { + if x != nil { + return x.Pagination + } + return nil +} + +// Response for the list team members' statistics request containing the statistics. +type ListTeamMembersStatisticsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of team referee data and their corresponding cursors. - Edges []*TeamRefereeEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + // Page of team members' statistics data and corresponding page information. + Statistics *TeamMembersStatisticsConnection `protobuf:"bytes,1,opt,name=statistics,proto3" json:"statistics,omitempty"` } -func (x *TeamRefereeConnection) Reset() { - *x = TeamRefereeConnection{} +func (x *ListTeamMembersStatisticsResponse) Reset() { + *x = ListTeamMembersStatisticsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[369] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[372] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *TeamRefereeConnection) String() string { +func (x *ListTeamMembersStatisticsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TeamRefereeConnection) ProtoMessage() {} +func (*ListTeamMembersStatisticsResponse) ProtoMessage() {} -func (x *TeamRefereeConnection) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[369] +func (x *ListTeamMembersStatisticsResponse) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[372] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22917,52 +23018,47 @@ func (x *TeamRefereeConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TeamRefereeConnection.ProtoReflect.Descriptor instead. -func (*TeamRefereeConnection) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{369} -} - -func (x *TeamRefereeConnection) GetEdges() []*TeamRefereeEdge { - if x != nil { - return x.Edges - } - return nil +// Deprecated: Use ListTeamMembersStatisticsResponse.ProtoReflect.Descriptor instead. +func (*ListTeamMembersStatisticsResponse) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{372} } -func (x *TeamRefereeConnection) GetPageInfo() *PageInfo { +func (x *ListTeamMembersStatisticsResponse) GetStatistics() *TeamMembersStatisticsConnection { if x != nil { - return x.PageInfo + return x.Statistics } return nil } -// Response that is sent when listing the referees for a given team. -type ListTeamRefereesResponse struct { +// Page of team members' statistics and corresponding page information. +type TeamMembersStatisticsConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of team referee data and corresponding page information. - TeamReferees *TeamRefereeConnection `protobuf:"bytes,1,opt,name=team_referees,json=teamReferees,proto3" json:"team_referees,omitempty"` + // Page of team member data and their corresponding cursors. + Edges []*TeamMemberStatisticsEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *ListTeamRefereesResponse) Reset() { - *x = ListTeamRefereesResponse{} +func (x *TeamMembersStatisticsConnection) Reset() { + *x = TeamMembersStatisticsConnection{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[370] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[373] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListTeamRefereesResponse) String() string { +func (x *TeamMembersStatisticsConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListTeamRefereesResponse) ProtoMessage() {} +func (*TeamMembersStatisticsConnection) ProtoMessage() {} -func (x *ListTeamRefereesResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[370] +func (x *TeamMembersStatisticsConnection) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[373] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22973,49 +23069,54 @@ func (x *ListTeamRefereesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListTeamRefereesResponse.ProtoReflect.Descriptor instead. -func (*ListTeamRefereesResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{370} +// Deprecated: Use TeamMembersStatisticsConnection.ProtoReflect.Descriptor instead. +func (*TeamMembersStatisticsConnection) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{373} } -func (x *ListTeamRefereesResponse) GetTeamReferees() *TeamRefereeConnection { +func (x *TeamMembersStatisticsConnection) GetEdges() []*TeamMemberStatisticsEdge { if x != nil { - return x.TeamReferees + return x.Edges } return nil } -// A referee's team change information -type TeamRefereeHistory struct { +func (x *TeamMembersStatisticsConnection) GetPageInfo() *PageInfo { + if x != nil { + return x.PageInfo + } + return nil +} + +// Team member data item with the corresponding cursor. +type TeamMemberStatisticsEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // ID of the team the referee joined. - TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` - // Timestamp in Unix nanoseconds when the party joined the team. - JoinedAt int64 `protobuf:"varint,2,opt,name=joined_at,json=joinedAt,proto3" json:"joined_at,omitempty"` - // Epoch at which the party joined the team. - JoinedAtEpoch uint64 `protobuf:"varint,3,opt,name=joined_at_epoch,json=joinedAtEpoch,proto3" json:"joined_at_epoch,omitempty"` + // Team member's statistics data. + Node *TeamMemberStatistics `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *TeamRefereeHistory) Reset() { - *x = TeamRefereeHistory{} +func (x *TeamMemberStatisticsEdge) Reset() { + *x = TeamMemberStatisticsEdge{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[371] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[374] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *TeamRefereeHistory) String() string { +func (x *TeamMemberStatisticsEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TeamRefereeHistory) ProtoMessage() {} +func (*TeamMemberStatisticsEdge) ProtoMessage() {} -func (x *TeamRefereeHistory) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[371] +func (x *TeamMemberStatisticsEdge) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[374] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23026,61 +23127,68 @@ func (x *TeamRefereeHistory) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TeamRefereeHistory.ProtoReflect.Descriptor instead. -func (*TeamRefereeHistory) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{371} -} - -func (x *TeamRefereeHistory) GetTeamId() string { - if x != nil { - return x.TeamId - } - return "" +// Deprecated: Use TeamMemberStatisticsEdge.ProtoReflect.Descriptor instead. +func (*TeamMemberStatisticsEdge) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{374} } -func (x *TeamRefereeHistory) GetJoinedAt() int64 { +func (x *TeamMemberStatisticsEdge) GetNode() *TeamMemberStatistics { if x != nil { - return x.JoinedAt + return x.Node } - return 0 + return nil } -func (x *TeamRefereeHistory) GetJoinedAtEpoch() uint64 { +func (x *TeamMemberStatisticsEdge) GetCursor() string { if x != nil { - return x.JoinedAtEpoch + return x.Cursor } - return 0 + return "" } -// Team referee history data item with the corresponding cursor. -type TeamRefereeHistoryEdge struct { +// Team member's statistics record containing the team member's information. +type TeamMemberStatistics struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Team referee data. - Node *TeamRefereeHistory `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Party ID the statistics are related to. + PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` + // Total of volume accumulated over the requested epoch period, expressed in + // quantum value. + TotalQuantumVolume string `protobuf:"bytes,2,opt,name=total_quantum_volume,json=totalQuantumVolume,proto3" json:"total_quantum_volume,omitempty"` + // Total of rewards accumulated over the requested epoch period, expressed in + // quantum value. + TotalQuantumRewards string `protobuf:"bytes,3,opt,name=total_quantum_rewards,json=totalQuantumRewards,proto3" json:"total_quantum_rewards,omitempty"` + // List of rewards over the requested epoch period, expressed in quantum + // value for each epoch. + QuantumRewards []*QuantumRewardsPerEpoch `protobuf:"bytes,4,rep,name=quantum_rewards,json=quantumRewards,proto3" json:"quantum_rewards,omitempty"` + // Total number of games played. + TotalGamesPlayed uint64 `protobuf:"varint,5,opt,name=total_games_played,json=totalGamesPlayed,proto3" json:"total_games_played,omitempty"` + // List of games played over the requested epoch period. + GamesPlayed []string `protobuf:"bytes,6,rep,name=games_played,json=gamesPlayed,proto3" json:"games_played,omitempty"` + // List of volumes over the requested epoch period, expressed in quantum + // value for each epoch. + QuantumVolumes []*QuantumVolumesPerEpoch `protobuf:"bytes,7,rep,name=quantum_volumes,json=quantumVolumes,proto3" json:"quantum_volumes,omitempty"` } -func (x *TeamRefereeHistoryEdge) Reset() { - *x = TeamRefereeHistoryEdge{} +func (x *TeamMemberStatistics) Reset() { + *x = TeamMemberStatistics{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[372] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[375] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *TeamRefereeHistoryEdge) String() string { +func (x *TeamMemberStatistics) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TeamRefereeHistoryEdge) ProtoMessage() {} +func (*TeamMemberStatistics) ProtoMessage() {} -func (x *TeamRefereeHistoryEdge) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[372] +func (x *TeamMemberStatistics) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[375] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23091,112 +23199,89 @@ func (x *TeamRefereeHistoryEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TeamRefereeHistoryEdge.ProtoReflect.Descriptor instead. -func (*TeamRefereeHistoryEdge) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{372} +// Deprecated: Use TeamMemberStatistics.ProtoReflect.Descriptor instead. +func (*TeamMemberStatistics) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{375} } -func (x *TeamRefereeHistoryEdge) GetNode() *TeamRefereeHistory { +func (x *TeamMemberStatistics) GetPartyId() string { if x != nil { - return x.Node + return x.PartyId } - return nil + return "" } -func (x *TeamRefereeHistoryEdge) GetCursor() string { +func (x *TeamMemberStatistics) GetTotalQuantumVolume() string { if x != nil { - return x.Cursor + return x.TotalQuantumVolume } return "" } -// Page of history data about a referee's team membership and corresponding page information. -type TeamRefereeHistoryConnection struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Page of team referee history data and their corresponding cursors. - Edges []*TeamRefereeHistoryEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` -} - -func (x *TeamRefereeHistoryConnection) Reset() { - *x = TeamRefereeHistoryConnection{} - if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[373] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *TeamMemberStatistics) GetTotalQuantumRewards() string { + if x != nil { + return x.TotalQuantumRewards } + return "" } -func (x *TeamRefereeHistoryConnection) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TeamRefereeHistoryConnection) ProtoMessage() {} - -func (x *TeamRefereeHistoryConnection) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[373] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *TeamMemberStatistics) GetQuantumRewards() []*QuantumRewardsPerEpoch { + if x != nil { + return x.QuantumRewards } - return mi.MessageOf(x) + return nil } -// Deprecated: Use TeamRefereeHistoryConnection.ProtoReflect.Descriptor instead. -func (*TeamRefereeHistoryConnection) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{373} +func (x *TeamMemberStatistics) GetTotalGamesPlayed() uint64 { + if x != nil { + return x.TotalGamesPlayed + } + return 0 } -func (x *TeamRefereeHistoryConnection) GetEdges() []*TeamRefereeHistoryEdge { +func (x *TeamMemberStatistics) GetGamesPlayed() []string { if x != nil { - return x.Edges + return x.GamesPlayed } return nil } -func (x *TeamRefereeHistoryConnection) GetPageInfo() *PageInfo { +func (x *TeamMemberStatistics) GetQuantumVolumes() []*QuantumVolumesPerEpoch { if x != nil { - return x.PageInfo + return x.QuantumVolumes } return nil } -// Request that is sent when listing the referee history for a given team. -type ListTeamRefereeHistoryRequest struct { +// Request that is sent when listing the referees for a given team. +type ListTeamRefereesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Party ID to list referee history for. - Referee string `protobuf:"bytes,1,opt,name=referee,proto3" json:"referee,omitempty"` + // Team ID to list referees for. + TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` // Pagination controls. Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` } -func (x *ListTeamRefereeHistoryRequest) Reset() { - *x = ListTeamRefereeHistoryRequest{} +func (x *ListTeamRefereesRequest) Reset() { + *x = ListTeamRefereesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[374] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[376] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListTeamRefereeHistoryRequest) String() string { +func (x *ListTeamRefereesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListTeamRefereeHistoryRequest) ProtoMessage() {} +func (*ListTeamRefereesRequest) ProtoMessage() {} -func (x *ListTeamRefereeHistoryRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[374] +func (x *ListTeamRefereesRequest) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[376] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23207,52 +23292,58 @@ func (x *ListTeamRefereeHistoryRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListTeamRefereeHistoryRequest.ProtoReflect.Descriptor instead. -func (*ListTeamRefereeHistoryRequest) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{374} +// Deprecated: Use ListTeamRefereesRequest.ProtoReflect.Descriptor instead. +func (*ListTeamRefereesRequest) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{376} } -func (x *ListTeamRefereeHistoryRequest) GetReferee() string { +func (x *ListTeamRefereesRequest) GetTeamId() string { if x != nil { - return x.Referee + return x.TeamId } return "" } -func (x *ListTeamRefereeHistoryRequest) GetPagination() *Pagination { +func (x *ListTeamRefereesRequest) GetPagination() *Pagination { if x != nil { return x.Pagination } return nil } -// Response that is sent when listing the referee history for a given team. -type ListTeamRefereeHistoryResponse struct { +// A team's referee info +type TeamReferee struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of team referee history data and corresponding page information. - TeamRefereeHistory *TeamRefereeHistoryConnection `protobuf:"bytes,1,opt,name=team_referee_history,json=teamRefereeHistory,proto3" json:"team_referee_history,omitempty"` + // ID of the team the referee joined. + TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` + // Party that joined the team. + Referee string `protobuf:"bytes,2,opt,name=referee,proto3" json:"referee,omitempty"` + // Timestamp in Unix nanoseconds when the party joined the team. + JoinedAt int64 `protobuf:"varint,3,opt,name=joined_at,json=joinedAt,proto3" json:"joined_at,omitempty"` + // Epoch at which the party joined the team. + JoinedAtEpoch uint64 `protobuf:"varint,4,opt,name=joined_at_epoch,json=joinedAtEpoch,proto3" json:"joined_at_epoch,omitempty"` } -func (x *ListTeamRefereeHistoryResponse) Reset() { - *x = ListTeamRefereeHistoryResponse{} +func (x *TeamReferee) Reset() { + *x = TeamReferee{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[375] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[377] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListTeamRefereeHistoryResponse) String() string { +func (x *TeamReferee) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListTeamRefereeHistoryResponse) ProtoMessage() {} +func (*TeamReferee) ProtoMessage() {} -func (x *ListTeamRefereeHistoryResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[375] +func (x *TeamReferee) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[377] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23263,51 +23354,68 @@ func (x *ListTeamRefereeHistoryResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListTeamRefereeHistoryResponse.ProtoReflect.Descriptor instead. -func (*ListTeamRefereeHistoryResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{375} +// Deprecated: Use TeamReferee.ProtoReflect.Descriptor instead. +func (*TeamReferee) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{377} } -func (x *ListTeamRefereeHistoryResponse) GetTeamRefereeHistory() *TeamRefereeHistoryConnection { +func (x *TeamReferee) GetTeamId() string { if x != nil { - return x.TeamRefereeHistory + return x.TeamId } - return nil + return "" } -// Request that is sent to retrieve fees statistics. -type GetFeesStatsRequest struct { +func (x *TeamReferee) GetReferee() string { + if x != nil { + return x.Referee + } + return "" +} + +func (x *TeamReferee) GetJoinedAt() int64 { + if x != nil { + return x.JoinedAt + } + return 0 +} + +func (x *TeamReferee) GetJoinedAtEpoch() uint64 { + if x != nil { + return x.JoinedAtEpoch + } + return 0 +} + +// Team referee data item with the corresponding cursor. +type TeamRefereeEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Restrict fee statistics to those related to the given market. - MarketId *string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3,oneof" json:"market_id,omitempty"` - // Restrict fee statistics to those related to the given asset. - AssetId *string `protobuf:"bytes,2,opt,name=asset_id,json=assetId,proto3,oneof" json:"asset_id,omitempty"` - // Epoch to get referral fee statistics for. If not set, the last complete epoch is used. - EpochSeq *uint64 `protobuf:"varint,3,opt,name=epoch_seq,json=epochSeq,proto3,oneof" json:"epoch_seq,omitempty"` - // Restrict fee statistics to those for the given party. - PartyId *string `protobuf:"bytes,4,opt,name=party_id,json=partyId,proto3,oneof" json:"party_id,omitempty"` + // Team referee data. + Node *TeamReferee `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *GetFeesStatsRequest) Reset() { - *x = GetFeesStatsRequest{} +func (x *TeamRefereeEdge) Reset() { + *x = TeamRefereeEdge{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[376] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[378] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetFeesStatsRequest) String() string { +func (x *TeamRefereeEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetFeesStatsRequest) ProtoMessage() {} +func (*TeamRefereeEdge) ProtoMessage() {} -func (x *GetFeesStatsRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[376] +func (x *TeamRefereeEdge) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[378] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23318,66 +23426,54 @@ func (x *GetFeesStatsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetFeesStatsRequest.ProtoReflect.Descriptor instead. -func (*GetFeesStatsRequest) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{376} -} - -func (x *GetFeesStatsRequest) GetMarketId() string { - if x != nil && x.MarketId != nil { - return *x.MarketId - } - return "" -} - -func (x *GetFeesStatsRequest) GetAssetId() string { - if x != nil && x.AssetId != nil { - return *x.AssetId - } - return "" +// Deprecated: Use TeamRefereeEdge.ProtoReflect.Descriptor instead. +func (*TeamRefereeEdge) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{378} } -func (x *GetFeesStatsRequest) GetEpochSeq() uint64 { - if x != nil && x.EpochSeq != nil { - return *x.EpochSeq +func (x *TeamRefereeEdge) GetNode() *TeamReferee { + if x != nil { + return x.Node } - return 0 + return nil } -func (x *GetFeesStatsRequest) GetPartyId() string { - if x != nil && x.PartyId != nil { - return *x.PartyId +func (x *TeamRefereeEdge) GetCursor() string { + if x != nil { + return x.Cursor } return "" } -// Response that is sent when requesting fees statistics. -type GetFeesStatsResponse struct { +// Page of team referee data and corresponding page information. +type TeamRefereeConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Fees statistics for the given request. - FeesStats *v1.FeesStats `protobuf:"bytes,1,opt,name=fees_stats,json=feesStats,proto3" json:"fees_stats,omitempty"` + // Page of team referee data and their corresponding cursors. + Edges []*TeamRefereeEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *GetFeesStatsResponse) Reset() { - *x = GetFeesStatsResponse{} +func (x *TeamRefereeConnection) Reset() { + *x = TeamRefereeConnection{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[377] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[379] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetFeesStatsResponse) String() string { +func (x *TeamRefereeConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetFeesStatsResponse) ProtoMessage() {} +func (*TeamRefereeConnection) ProtoMessage() {} -func (x *GetFeesStatsResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[377] +func (x *TeamRefereeConnection) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[379] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23388,51 +23484,52 @@ func (x *GetFeesStatsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetFeesStatsResponse.ProtoReflect.Descriptor instead. -func (*GetFeesStatsResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{377} +// Deprecated: Use TeamRefereeConnection.ProtoReflect.Descriptor instead. +func (*TeamRefereeConnection) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{379} } -func (x *GetFeesStatsResponse) GetFeesStats() *v1.FeesStats { +func (x *TeamRefereeConnection) GetEdges() []*TeamRefereeEdge { if x != nil { - return x.FeesStats + return x.Edges } return nil } -// Request that is sent to retrieve fees statistics for a given party. -type GetFeesStatsForPartyRequest struct { +func (x *TeamRefereeConnection) GetPageInfo() *PageInfo { + if x != nil { + return x.PageInfo + } + return nil +} + +// Response that is sent when listing the referees for a given team. +type ListTeamRefereesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Restrict fees statistics to those for the given party. - PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` - // Restrict fees statistics to those related to the given asset. - AssetId *string `protobuf:"bytes,2,opt,name=asset_id,json=assetId,proto3,oneof" json:"asset_id,omitempty"` - // Epoch to filter from (included). If omitted, the range goes from the oldest epoch to the `to epoch`. - FromEpoch *uint64 `protobuf:"varint,3,opt,name=from_epoch,json=fromEpoch,proto3,oneof" json:"from_epoch,omitempty"` - // Epoch to filter to (included). If omitted, the range goes from `from epoch` to the most recent epoch. - ToEpoch *uint64 `protobuf:"varint,4,opt,name=to_epoch,json=toEpoch,proto3,oneof" json:"to_epoch,omitempty"` + // Page of team referee data and corresponding page information. + TeamReferees *TeamRefereeConnection `protobuf:"bytes,1,opt,name=team_referees,json=teamReferees,proto3" json:"team_referees,omitempty"` } -func (x *GetFeesStatsForPartyRequest) Reset() { - *x = GetFeesStatsForPartyRequest{} +func (x *ListTeamRefereesResponse) Reset() { + *x = ListTeamRefereesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[378] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[380] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetFeesStatsForPartyRequest) String() string { +func (x *ListTeamRefereesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetFeesStatsForPartyRequest) ProtoMessage() {} +func (*ListTeamRefereesResponse) ProtoMessage() {} -func (x *GetFeesStatsForPartyRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[378] +func (x *ListTeamRefereesResponse) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[380] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23443,66 +23540,49 @@ func (x *GetFeesStatsForPartyRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetFeesStatsForPartyRequest.ProtoReflect.Descriptor instead. -func (*GetFeesStatsForPartyRequest) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{378} +// Deprecated: Use ListTeamRefereesResponse.ProtoReflect.Descriptor instead. +func (*ListTeamRefereesResponse) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{380} } -func (x *GetFeesStatsForPartyRequest) GetPartyId() string { +func (x *ListTeamRefereesResponse) GetTeamReferees() *TeamRefereeConnection { if x != nil { - return x.PartyId - } - return "" -} - -func (x *GetFeesStatsForPartyRequest) GetAssetId() string { - if x != nil && x.AssetId != nil { - return *x.AssetId - } - return "" -} - -func (x *GetFeesStatsForPartyRequest) GetFromEpoch() uint64 { - if x != nil && x.FromEpoch != nil { - return *x.FromEpoch - } - return 0 -} - -func (x *GetFeesStatsForPartyRequest) GetToEpoch() uint64 { - if x != nil && x.ToEpoch != nil { - return *x.ToEpoch + return x.TeamReferees } - return 0 + return nil } -// Response that is sent when requesting fees statistics for a given party. -type GetFeesStatsForPartyResponse struct { +// A referee's team change information +type TeamRefereeHistory struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Fees statistics for the given request. - FeesStatsForParty []*FeesStatsForParty `protobuf:"bytes,1,rep,name=fees_stats_for_party,json=feesStatsForParty,proto3" json:"fees_stats_for_party,omitempty"` + // ID of the team the referee joined. + TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` + // Timestamp in Unix nanoseconds when the party joined the team. + JoinedAt int64 `protobuf:"varint,2,opt,name=joined_at,json=joinedAt,proto3" json:"joined_at,omitempty"` + // Epoch at which the party joined the team. + JoinedAtEpoch uint64 `protobuf:"varint,3,opt,name=joined_at_epoch,json=joinedAtEpoch,proto3" json:"joined_at_epoch,omitempty"` } -func (x *GetFeesStatsForPartyResponse) Reset() { - *x = GetFeesStatsForPartyResponse{} +func (x *TeamRefereeHistory) Reset() { + *x = TeamRefereeHistory{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[379] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[381] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetFeesStatsForPartyResponse) String() string { +func (x *TeamRefereeHistory) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetFeesStatsForPartyResponse) ProtoMessage() {} +func (*TeamRefereeHistory) ProtoMessage() {} -func (x *GetFeesStatsForPartyResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[379] +func (x *TeamRefereeHistory) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[381] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23513,42 +23593,61 @@ func (x *GetFeesStatsForPartyResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetFeesStatsForPartyResponse.ProtoReflect.Descriptor instead. -func (*GetFeesStatsForPartyResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{379} +// Deprecated: Use TeamRefereeHistory.ProtoReflect.Descriptor instead. +func (*TeamRefereeHistory) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{381} } -func (x *GetFeesStatsForPartyResponse) GetFeesStatsForParty() []*FeesStatsForParty { +func (x *TeamRefereeHistory) GetTeamId() string { if x != nil { - return x.FeesStatsForParty + return x.TeamId } - return nil + return "" } -// Request to get the current referral program -type GetCurrentVolumeDiscountProgramRequest struct { +func (x *TeamRefereeHistory) GetJoinedAt() int64 { + if x != nil { + return x.JoinedAt + } + return 0 +} + +func (x *TeamRefereeHistory) GetJoinedAtEpoch() uint64 { + if x != nil { + return x.JoinedAtEpoch + } + return 0 +} + +// Team referee history data item with the corresponding cursor. +type TeamRefereeHistoryEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // Team referee data. + Node *TeamRefereeHistory `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *GetCurrentVolumeDiscountProgramRequest) Reset() { - *x = GetCurrentVolumeDiscountProgramRequest{} +func (x *TeamRefereeHistoryEdge) Reset() { + *x = TeamRefereeHistoryEdge{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[380] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[382] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetCurrentVolumeDiscountProgramRequest) String() string { +func (x *TeamRefereeHistoryEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetCurrentVolumeDiscountProgramRequest) ProtoMessage() {} +func (*TeamRefereeHistoryEdge) ProtoMessage() {} -func (x *GetCurrentVolumeDiscountProgramRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[380] +func (x *TeamRefereeHistoryEdge) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[382] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23559,38 +23658,54 @@ func (x *GetCurrentVolumeDiscountProgramRequest) ProtoReflect() protoreflect.Mes return mi.MessageOf(x) } -// Deprecated: Use GetCurrentVolumeDiscountProgramRequest.ProtoReflect.Descriptor instead. -func (*GetCurrentVolumeDiscountProgramRequest) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{380} +// Deprecated: Use TeamRefereeHistoryEdge.ProtoReflect.Descriptor instead. +func (*TeamRefereeHistoryEdge) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{382} } -// Response containing the current referral program -type GetCurrentVolumeDiscountProgramResponse struct { +func (x *TeamRefereeHistoryEdge) GetNode() *TeamRefereeHistory { + if x != nil { + return x.Node + } + return nil +} + +func (x *TeamRefereeHistoryEdge) GetCursor() string { + if x != nil { + return x.Cursor + } + return "" +} + +// Page of history data about a referee's team membership and corresponding page information. +type TeamRefereeHistoryConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Volume discount program currently activated on the network. - CurrentVolumeDiscountProgram *VolumeDiscountProgram `protobuf:"bytes,1,opt,name=current_volume_discount_program,json=currentVolumeDiscountProgram,proto3" json:"current_volume_discount_program,omitempty"` + // Page of team referee history data and their corresponding cursors. + Edges []*TeamRefereeHistoryEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *GetCurrentVolumeDiscountProgramResponse) Reset() { - *x = GetCurrentVolumeDiscountProgramResponse{} +func (x *TeamRefereeHistoryConnection) Reset() { + *x = TeamRefereeHistoryConnection{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[381] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[383] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetCurrentVolumeDiscountProgramResponse) String() string { +func (x *TeamRefereeHistoryConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetCurrentVolumeDiscountProgramResponse) ProtoMessage() {} +func (*TeamRefereeHistoryConnection) ProtoMessage() {} -func (x *GetCurrentVolumeDiscountProgramResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[381] +func (x *TeamRefereeHistoryConnection) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[383] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23601,49 +23716,54 @@ func (x *GetCurrentVolumeDiscountProgramResponse) ProtoReflect() protoreflect.Me return mi.MessageOf(x) } -// Deprecated: Use GetCurrentVolumeDiscountProgramResponse.ProtoReflect.Descriptor instead. -func (*GetCurrentVolumeDiscountProgramResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{381} +// Deprecated: Use TeamRefereeHistoryConnection.ProtoReflect.Descriptor instead. +func (*TeamRefereeHistoryConnection) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{383} } -func (x *GetCurrentVolumeDiscountProgramResponse) GetCurrentVolumeDiscountProgram() *VolumeDiscountProgram { +func (x *TeamRefereeHistoryConnection) GetEdges() []*TeamRefereeHistoryEdge { if x != nil { - return x.CurrentVolumeDiscountProgram + return x.Edges } return nil } -// Request to get the volume discount statistics for a given epoch. -type GetVolumeDiscountStatsRequest struct { +func (x *TeamRefereeHistoryConnection) GetPageInfo() *PageInfo { + if x != nil { + return x.PageInfo + } + return nil +} + +// Request that is sent when listing the referee history for a given team. +type ListTeamRefereeHistoryRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Epoch to get volume discount statistics for. If not set, last epoch is used. - AtEpoch *uint64 `protobuf:"varint,1,opt,name=at_epoch,json=atEpoch,proto3,oneof" json:"at_epoch,omitempty"` - // Restrict volume discount statistics to those for the given party. - PartyId *string `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3,oneof" json:"party_id,omitempty"` + // Party ID to list referee history for. + Referee string `protobuf:"bytes,1,opt,name=referee,proto3" json:"referee,omitempty"` // Pagination controls. - Pagination *Pagination `protobuf:"bytes,3,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + Pagination *Pagination `protobuf:"bytes,2,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` } -func (x *GetVolumeDiscountStatsRequest) Reset() { - *x = GetVolumeDiscountStatsRequest{} +func (x *ListTeamRefereeHistoryRequest) Reset() { + *x = ListTeamRefereeHistoryRequest{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[382] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[384] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetVolumeDiscountStatsRequest) String() string { +func (x *ListTeamRefereeHistoryRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetVolumeDiscountStatsRequest) ProtoMessage() {} +func (*ListTeamRefereeHistoryRequest) ProtoMessage() {} -func (x *GetVolumeDiscountStatsRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[382] +func (x *ListTeamRefereeHistoryRequest) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[384] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23654,59 +23774,52 @@ func (x *GetVolumeDiscountStatsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetVolumeDiscountStatsRequest.ProtoReflect.Descriptor instead. -func (*GetVolumeDiscountStatsRequest) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{382} -} - -func (x *GetVolumeDiscountStatsRequest) GetAtEpoch() uint64 { - if x != nil && x.AtEpoch != nil { - return *x.AtEpoch - } - return 0 +// Deprecated: Use ListTeamRefereeHistoryRequest.ProtoReflect.Descriptor instead. +func (*ListTeamRefereeHistoryRequest) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{384} } -func (x *GetVolumeDiscountStatsRequest) GetPartyId() string { - if x != nil && x.PartyId != nil { - return *x.PartyId +func (x *ListTeamRefereeHistoryRequest) GetReferee() string { + if x != nil { + return x.Referee } return "" } -func (x *GetVolumeDiscountStatsRequest) GetPagination() *Pagination { +func (x *ListTeamRefereeHistoryRequest) GetPagination() *Pagination { if x != nil { return x.Pagination } return nil } -// Response containing the volume discount statistics for the given epoch. -type GetVolumeDiscountStatsResponse struct { +// Response that is sent when listing the referee history for a given team. +type ListTeamRefereeHistoryResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Volume discount statistics for an epoch. - Stats *VolumeDiscountStatsConnection `protobuf:"bytes,1,opt,name=stats,proto3" json:"stats,omitempty"` + // Page of team referee history data and corresponding page information. + TeamRefereeHistory *TeamRefereeHistoryConnection `protobuf:"bytes,1,opt,name=team_referee_history,json=teamRefereeHistory,proto3" json:"team_referee_history,omitempty"` } -func (x *GetVolumeDiscountStatsResponse) Reset() { - *x = GetVolumeDiscountStatsResponse{} +func (x *ListTeamRefereeHistoryResponse) Reset() { + *x = ListTeamRefereeHistoryResponse{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[383] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[385] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetVolumeDiscountStatsResponse) String() string { +func (x *ListTeamRefereeHistoryResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetVolumeDiscountStatsResponse) ProtoMessage() {} +func (*ListTeamRefereeHistoryResponse) ProtoMessage() {} -func (x *GetVolumeDiscountStatsResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[383] +func (x *ListTeamRefereeHistoryResponse) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[385] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23717,47 +23830,51 @@ func (x *GetVolumeDiscountStatsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetVolumeDiscountStatsResponse.ProtoReflect.Descriptor instead. -func (*GetVolumeDiscountStatsResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{383} +// Deprecated: Use ListTeamRefereeHistoryResponse.ProtoReflect.Descriptor instead. +func (*ListTeamRefereeHistoryResponse) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{385} } -func (x *GetVolumeDiscountStatsResponse) GetStats() *VolumeDiscountStatsConnection { +func (x *ListTeamRefereeHistoryResponse) GetTeamRefereeHistory() *TeamRefereeHistoryConnection { if x != nil { - return x.Stats + return x.TeamRefereeHistory } return nil } -// Page of volume discount stats data and corresponding page information. -type VolumeDiscountStatsConnection struct { +// Request that is sent to retrieve fees statistics. +type GetFeesStatsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of volume discount statistics data and their corresponding cursors. - Edges []*VolumeDiscountStatsEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + // Restrict fee statistics to those related to the given market. + MarketId *string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3,oneof" json:"market_id,omitempty"` + // Restrict fee statistics to those related to the given asset. + AssetId *string `protobuf:"bytes,2,opt,name=asset_id,json=assetId,proto3,oneof" json:"asset_id,omitempty"` + // Epoch to get referral fee statistics for. If not set, the last complete epoch is used. + EpochSeq *uint64 `protobuf:"varint,3,opt,name=epoch_seq,json=epochSeq,proto3,oneof" json:"epoch_seq,omitempty"` + // Restrict fee statistics to those for the given party. + PartyId *string `protobuf:"bytes,4,opt,name=party_id,json=partyId,proto3,oneof" json:"party_id,omitempty"` } -func (x *VolumeDiscountStatsConnection) Reset() { - *x = VolumeDiscountStatsConnection{} +func (x *GetFeesStatsRequest) Reset() { + *x = GetFeesStatsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[384] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[386] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *VolumeDiscountStatsConnection) String() string { +func (x *GetFeesStatsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VolumeDiscountStatsConnection) ProtoMessage() {} +func (*GetFeesStatsRequest) ProtoMessage() {} -func (x *VolumeDiscountStatsConnection) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[384] +func (x *GetFeesStatsRequest) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[386] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23768,54 +23885,66 @@ func (x *VolumeDiscountStatsConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VolumeDiscountStatsConnection.ProtoReflect.Descriptor instead. -func (*VolumeDiscountStatsConnection) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{384} +// Deprecated: Use GetFeesStatsRequest.ProtoReflect.Descriptor instead. +func (*GetFeesStatsRequest) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{386} } -func (x *VolumeDiscountStatsConnection) GetEdges() []*VolumeDiscountStatsEdge { - if x != nil { - return x.Edges +func (x *GetFeesStatsRequest) GetMarketId() string { + if x != nil && x.MarketId != nil { + return *x.MarketId } - return nil + return "" } -func (x *VolumeDiscountStatsConnection) GetPageInfo() *PageInfo { - if x != nil { - return x.PageInfo +func (x *GetFeesStatsRequest) GetAssetId() string { + if x != nil && x.AssetId != nil { + return *x.AssetId } - return nil + return "" } -// Volume discount stats data with the corresponding cursor. -type VolumeDiscountStatsEdge struct { +func (x *GetFeesStatsRequest) GetEpochSeq() uint64 { + if x != nil && x.EpochSeq != nil { + return *x.EpochSeq + } + return 0 +} + +func (x *GetFeesStatsRequest) GetPartyId() string { + if x != nil && x.PartyId != nil { + return *x.PartyId + } + return "" +} + +// Response that is sent when requesting fees statistics. +type GetFeesStatsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Volume discount stats data. - Node *VolumeDiscountStats `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Fees statistics for the given request. + FeesStats *v1.FeesStats `protobuf:"bytes,1,opt,name=fees_stats,json=feesStats,proto3" json:"fees_stats,omitempty"` } -func (x *VolumeDiscountStatsEdge) Reset() { - *x = VolumeDiscountStatsEdge{} +func (x *GetFeesStatsResponse) Reset() { + *x = GetFeesStatsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[385] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[387] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *VolumeDiscountStatsEdge) String() string { +func (x *GetFeesStatsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VolumeDiscountStatsEdge) ProtoMessage() {} +func (*GetFeesStatsResponse) ProtoMessage() {} -func (x *VolumeDiscountStatsEdge) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[385] +func (x *GetFeesStatsResponse) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[387] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23826,58 +23955,51 @@ func (x *VolumeDiscountStatsEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VolumeDiscountStatsEdge.ProtoReflect.Descriptor instead. -func (*VolumeDiscountStatsEdge) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{385} +// Deprecated: Use GetFeesStatsResponse.ProtoReflect.Descriptor instead. +func (*GetFeesStatsResponse) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{387} } -func (x *VolumeDiscountStatsEdge) GetNode() *VolumeDiscountStats { +func (x *GetFeesStatsResponse) GetFeesStats() *v1.FeesStats { if x != nil { - return x.Node + return x.FeesStats } return nil } -func (x *VolumeDiscountStatsEdge) GetCursor() string { - if x != nil { - return x.Cursor - } - return "" -} - -// Volume discount statistics for a given epoch for all parties. -type VolumeDiscountStats struct { +// Request that is sent to retrieve fees statistics for a given party. +type GetFeesStatsForPartyRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Epoch at which the statistics apply. - AtEpoch uint64 `protobuf:"varint,1,opt,name=at_epoch,json=atEpoch,proto3" json:"at_epoch,omitempty"` - // Party ID for which the statistics apply. - PartyId string `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` - // Discount factor applied given the party's running volume. - DiscountFactor string `protobuf:"bytes,3,opt,name=discount_factor,json=discountFactor,proto3" json:"discount_factor,omitempty"` - // The party's running volume. - RunningVolume string `protobuf:"bytes,4,opt,name=running_volume,json=runningVolume,proto3" json:"running_volume,omitempty"` + // Restrict fees statistics to those for the given party. + PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` + // Restrict fees statistics to those related to the given asset. + AssetId *string `protobuf:"bytes,2,opt,name=asset_id,json=assetId,proto3,oneof" json:"asset_id,omitempty"` + // Epoch to filter from (included). If omitted, the range goes from the oldest epoch to the `to epoch`. + FromEpoch *uint64 `protobuf:"varint,3,opt,name=from_epoch,json=fromEpoch,proto3,oneof" json:"from_epoch,omitempty"` + // Epoch to filter to (included). If omitted, the range goes from `from epoch` to the most recent epoch. + ToEpoch *uint64 `protobuf:"varint,4,opt,name=to_epoch,json=toEpoch,proto3,oneof" json:"to_epoch,omitempty"` } -func (x *VolumeDiscountStats) Reset() { - *x = VolumeDiscountStats{} +func (x *GetFeesStatsForPartyRequest) Reset() { + *x = GetFeesStatsForPartyRequest{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[386] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[388] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *VolumeDiscountStats) String() string { +func (x *GetFeesStatsForPartyRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VolumeDiscountStats) ProtoMessage() {} +func (*GetFeesStatsForPartyRequest) ProtoMessage() {} -func (x *VolumeDiscountStats) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[386] +func (x *GetFeesStatsForPartyRequest) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[388] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23888,79 +24010,66 @@ func (x *VolumeDiscountStats) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VolumeDiscountStats.ProtoReflect.Descriptor instead. -func (*VolumeDiscountStats) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{386} +// Deprecated: Use GetFeesStatsForPartyRequest.ProtoReflect.Descriptor instead. +func (*GetFeesStatsForPartyRequest) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{388} } -func (x *VolumeDiscountStats) GetAtEpoch() uint64 { +func (x *GetFeesStatsForPartyRequest) GetPartyId() string { if x != nil { - return x.AtEpoch + return x.PartyId } - return 0 + return "" } -func (x *VolumeDiscountStats) GetPartyId() string { - if x != nil { - return x.PartyId +func (x *GetFeesStatsForPartyRequest) GetAssetId() string { + if x != nil && x.AssetId != nil { + return *x.AssetId } return "" } -func (x *VolumeDiscountStats) GetDiscountFactor() string { - if x != nil { - return x.DiscountFactor +func (x *GetFeesStatsForPartyRequest) GetFromEpoch() uint64 { + if x != nil && x.FromEpoch != nil { + return *x.FromEpoch } - return "" + return 0 } -func (x *VolumeDiscountStats) GetRunningVolume() string { - if x != nil { - return x.RunningVolume +func (x *GetFeesStatsForPartyRequest) GetToEpoch() uint64 { + if x != nil && x.ToEpoch != nil { + return *x.ToEpoch } - return "" + return 0 } -// Volume discount program details. -type VolumeDiscountProgram struct { +// Response that is sent when requesting fees statistics for a given party. +type GetFeesStatsForPartyResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Incremental version of the program. It is incremented after each program - // update. - Version uint64 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` - // Unique ID generated from the proposal that created this program. - Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - // Defined benefit tiers ordered by increasing discounts. Determines the level of - // benefit a party can expect based on performance criteria. - BenefitTiers []*vega.VolumeBenefitTier `protobuf:"bytes,3,rep,name=benefit_tiers,json=benefitTiers,proto3" json:"benefit_tiers,omitempty"` - // Timestamp in Unix nanoseconds, after which when the current epoch - // ends, the program will end and benefits will be disabled. - EndOfProgramTimestamp int64 `protobuf:"varint,4,opt,name=end_of_program_timestamp,json=endOfProgramTimestamp,proto3" json:"end_of_program_timestamp,omitempty"` - // Number of epochs over which a volume discount statistics' running volume is evaluated. - WindowLength uint64 `protobuf:"varint,5,opt,name=window_length,json=windowLength,proto3" json:"window_length,omitempty"` - // Timestamp in Unix nanoseconds, at which the program ended. - EndedAt *int64 `protobuf:"varint,6,opt,name=ended_at,json=endedAt,proto3,oneof" json:"ended_at,omitempty"` + // Fees statistics for the given request. + FeesStatsForParty []*FeesStatsForParty `protobuf:"bytes,1,rep,name=fees_stats_for_party,json=feesStatsForParty,proto3" json:"fees_stats_for_party,omitempty"` } -func (x *VolumeDiscountProgram) Reset() { - *x = VolumeDiscountProgram{} +func (x *GetFeesStatsForPartyResponse) Reset() { + *x = GetFeesStatsForPartyResponse{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[387] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[389] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *VolumeDiscountProgram) String() string { +func (x *GetFeesStatsForPartyResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VolumeDiscountProgram) ProtoMessage() {} +func (*GetFeesStatsForPartyResponse) ProtoMessage() {} -func (x *VolumeDiscountProgram) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[387] +func (x *GetFeesStatsForPartyResponse) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[389] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23971,87 +24080,84 @@ func (x *VolumeDiscountProgram) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VolumeDiscountProgram.ProtoReflect.Descriptor instead. -func (*VolumeDiscountProgram) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{387} -} - -func (x *VolumeDiscountProgram) GetVersion() uint64 { - if x != nil { - return x.Version - } - return 0 +// Deprecated: Use GetFeesStatsForPartyResponse.ProtoReflect.Descriptor instead. +func (*GetFeesStatsForPartyResponse) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{389} } -func (x *VolumeDiscountProgram) GetId() string { +func (x *GetFeesStatsForPartyResponse) GetFeesStatsForParty() []*FeesStatsForParty { if x != nil { - return x.Id + return x.FeesStatsForParty } - return "" + return nil } -func (x *VolumeDiscountProgram) GetBenefitTiers() []*vega.VolumeBenefitTier { - if x != nil { - return x.BenefitTiers - } - return nil +// Request to get the current referral program +type GetCurrentVolumeDiscountProgramRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (x *VolumeDiscountProgram) GetEndOfProgramTimestamp() int64 { - if x != nil { - return x.EndOfProgramTimestamp +func (x *GetCurrentVolumeDiscountProgramRequest) Reset() { + *x = GetCurrentVolumeDiscountProgramRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[390] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return 0 } -func (x *VolumeDiscountProgram) GetWindowLength() uint64 { - if x != nil { - return x.WindowLength - } - return 0 +func (x *GetCurrentVolumeDiscountProgramRequest) String() string { + return protoimpl.X.MessageStringOf(x) } -func (x *VolumeDiscountProgram) GetEndedAt() int64 { - if x != nil && x.EndedAt != nil { - return *x.EndedAt +func (*GetCurrentVolumeDiscountProgramRequest) ProtoMessage() {} + +func (x *GetCurrentVolumeDiscountProgramRequest) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[390] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return 0 + return mi.MessageOf(x) } -type FeesStatsForParty struct { +// Deprecated: Use GetCurrentVolumeDiscountProgramRequest.ProtoReflect.Descriptor instead. +func (*GetCurrentVolumeDiscountProgramRequest) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{390} +} + +// Response containing the current referral program +type GetCurrentVolumeDiscountProgramResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Settlement asset of the market. - AssetId string `protobuf:"bytes,1,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty"` - // Total referral rewards received by referrer of the referral set. - TotalRewardsReceived string `protobuf:"bytes,2,opt,name=total_rewards_received,json=totalRewardsReceived,proto3" json:"total_rewards_received,omitempty"` - // Total referral discounts applied to referee fees. - RefereesDiscountApplied string `protobuf:"bytes,3,opt,name=referees_discount_applied,json=refereesDiscountApplied,proto3" json:"referees_discount_applied,omitempty"` - // Total volume discounts applied to referee fees. - VolumeDiscountApplied string `protobuf:"bytes,4,opt,name=volume_discount_applied,json=volumeDiscountApplied,proto3" json:"volume_discount_applied,omitempty"` - // Total maker fees received by the maker side. - TotalMakerFeesReceived string `protobuf:"bytes,5,opt,name=total_maker_fees_received,json=totalMakerFeesReceived,proto3" json:"total_maker_fees_received,omitempty"` + // Volume discount program currently activated on the network. + CurrentVolumeDiscountProgram *VolumeDiscountProgram `protobuf:"bytes,1,opt,name=current_volume_discount_program,json=currentVolumeDiscountProgram,proto3" json:"current_volume_discount_program,omitempty"` } -func (x *FeesStatsForParty) Reset() { - *x = FeesStatsForParty{} +func (x *GetCurrentVolumeDiscountProgramResponse) Reset() { + *x = GetCurrentVolumeDiscountProgramResponse{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[388] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[391] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *FeesStatsForParty) String() string { +func (x *GetCurrentVolumeDiscountProgramResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*FeesStatsForParty) ProtoMessage() {} +func (*GetCurrentVolumeDiscountProgramResponse) ProtoMessage() {} -func (x *FeesStatsForParty) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[388] +func (x *GetCurrentVolumeDiscountProgramResponse) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[391] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24062,77 +24168,49 @@ func (x *FeesStatsForParty) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use FeesStatsForParty.ProtoReflect.Descriptor instead. -func (*FeesStatsForParty) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{388} -} - -func (x *FeesStatsForParty) GetAssetId() string { - if x != nil { - return x.AssetId - } - return "" -} - -func (x *FeesStatsForParty) GetTotalRewardsReceived() string { - if x != nil { - return x.TotalRewardsReceived - } - return "" -} - -func (x *FeesStatsForParty) GetRefereesDiscountApplied() string { - if x != nil { - return x.RefereesDiscountApplied - } - return "" -} - -func (x *FeesStatsForParty) GetVolumeDiscountApplied() string { - if x != nil { - return x.VolumeDiscountApplied - } - return "" +// Deprecated: Use GetCurrentVolumeDiscountProgramResponse.ProtoReflect.Descriptor instead. +func (*GetCurrentVolumeDiscountProgramResponse) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{391} } -func (x *FeesStatsForParty) GetTotalMakerFeesReceived() string { +func (x *GetCurrentVolumeDiscountProgramResponse) GetCurrentVolumeDiscountProgram() *VolumeDiscountProgram { if x != nil { - return x.TotalMakerFeesReceived + return x.CurrentVolumeDiscountProgram } - return "" + return nil } -// Request to subscribe to a stream of users' transaction results -type ObserveTransactionResultsRequest struct { +// Request to get the volume discount statistics for a given epoch. +type GetVolumeDiscountStatsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Restrict the transaction results streamed to those made by the given parties. - PartyIds []string `protobuf:"bytes,1,rep,name=party_ids,json=partyIds,proto3" json:"party_ids,omitempty"` - // Restrict the transaction results streamed to those with given hashes. - Hashes []string `protobuf:"bytes,2,rep,name=hashes,proto3" json:"hashes,omitempty"` - // Restrict the transaction results streamed to those with given status true/false (success/failure). - Status *bool `protobuf:"varint,3,opt,name=status,proto3,oneof" json:"status,omitempty"` + // Epoch to get volume discount statistics for. If not set, last epoch is used. + AtEpoch *uint64 `protobuf:"varint,1,opt,name=at_epoch,json=atEpoch,proto3,oneof" json:"at_epoch,omitempty"` + // Restrict volume discount statistics to those for the given party. + PartyId *string `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3,oneof" json:"party_id,omitempty"` + // Pagination controls. + Pagination *Pagination `protobuf:"bytes,3,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` } -func (x *ObserveTransactionResultsRequest) Reset() { - *x = ObserveTransactionResultsRequest{} +func (x *GetVolumeDiscountStatsRequest) Reset() { + *x = GetVolumeDiscountStatsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[389] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[392] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ObserveTransactionResultsRequest) String() string { +func (x *GetVolumeDiscountStatsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ObserveTransactionResultsRequest) ProtoMessage() {} +func (*GetVolumeDiscountStatsRequest) ProtoMessage() {} -func (x *ObserveTransactionResultsRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[389] +func (x *GetVolumeDiscountStatsRequest) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[392] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24143,59 +24221,59 @@ func (x *ObserveTransactionResultsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ObserveTransactionResultsRequest.ProtoReflect.Descriptor instead. -func (*ObserveTransactionResultsRequest) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{389} +// Deprecated: Use GetVolumeDiscountStatsRequest.ProtoReflect.Descriptor instead. +func (*GetVolumeDiscountStatsRequest) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{392} } -func (x *ObserveTransactionResultsRequest) GetPartyIds() []string { - if x != nil { - return x.PartyIds +func (x *GetVolumeDiscountStatsRequest) GetAtEpoch() uint64 { + if x != nil && x.AtEpoch != nil { + return *x.AtEpoch } - return nil + return 0 } -func (x *ObserveTransactionResultsRequest) GetHashes() []string { - if x != nil { - return x.Hashes +func (x *GetVolumeDiscountStatsRequest) GetPartyId() string { + if x != nil && x.PartyId != nil { + return *x.PartyId } - return nil + return "" } -func (x *ObserveTransactionResultsRequest) GetStatus() bool { - if x != nil && x.Status != nil { - return *x.Status +func (x *GetVolumeDiscountStatsRequest) GetPagination() *Pagination { + if x != nil { + return x.Pagination } - return false + return nil } -// Stream of transaction results -type ObserveTransactionResultsResponse struct { +// Response containing the volume discount statistics for the given epoch. +type GetVolumeDiscountStatsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // List of 0 or more transaction results. - TransactionResults []*v1.TransactionResult `protobuf:"bytes,1,rep,name=transaction_results,json=transactionResults,proto3" json:"transaction_results,omitempty"` + // Volume discount statistics for an epoch. + Stats *VolumeDiscountStatsConnection `protobuf:"bytes,1,opt,name=stats,proto3" json:"stats,omitempty"` } -func (x *ObserveTransactionResultsResponse) Reset() { - *x = ObserveTransactionResultsResponse{} +func (x *GetVolumeDiscountStatsResponse) Reset() { + *x = GetVolumeDiscountStatsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[390] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[393] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ObserveTransactionResultsResponse) String() string { +func (x *GetVolumeDiscountStatsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ObserveTransactionResultsResponse) ProtoMessage() {} +func (*GetVolumeDiscountStatsResponse) ProtoMessage() {} -func (x *ObserveTransactionResultsResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[390] +func (x *GetVolumeDiscountStatsResponse) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[393] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24206,53 +24284,47 @@ func (x *ObserveTransactionResultsResponse) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use ObserveTransactionResultsResponse.ProtoReflect.Descriptor instead. -func (*ObserveTransactionResultsResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{390} +// Deprecated: Use GetVolumeDiscountStatsResponse.ProtoReflect.Descriptor instead. +func (*GetVolumeDiscountStatsResponse) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{393} } -func (x *ObserveTransactionResultsResponse) GetTransactionResults() []*v1.TransactionResult { +func (x *GetVolumeDiscountStatsResponse) GetStats() *VolumeDiscountStatsConnection { if x != nil { - return x.TransactionResults + return x.Stats } return nil } -// Request an estimation of transfer fee and discount -type EstimateTransferFeeRequest struct { +// Page of volume discount stats data and corresponding page information. +type VolumeDiscountStatsConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Sender's ID. - FromAccount string `protobuf:"bytes,1,opt,name=from_account,json=fromAccount,proto3" json:"from_account,omitempty"` - // Type of account sent from. - FromAccountType vega.AccountType `protobuf:"varint,2,opt,name=from_account_type,json=fromAccountType,proto3,enum=vega.AccountType" json:"from_account_type,omitempty"` - // Receiver's ID. - ToAccount string `protobuf:"bytes,3,opt,name=to_account,json=toAccount,proto3" json:"to_account,omitempty"` - // Amount to be transferred. - Amount string `protobuf:"bytes,4,opt,name=amount,proto3" json:"amount,omitempty"` - // Asset ID for the asset associated with the transaction. - AssetId string `protobuf:"bytes,5,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty"` + // Page of volume discount statistics data and their corresponding cursors. + Edges []*VolumeDiscountStatsEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *EstimateTransferFeeRequest) Reset() { - *x = EstimateTransferFeeRequest{} +func (x *VolumeDiscountStatsConnection) Reset() { + *x = VolumeDiscountStatsConnection{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[391] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[394] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *EstimateTransferFeeRequest) String() string { +func (x *VolumeDiscountStatsConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*EstimateTransferFeeRequest) ProtoMessage() {} +func (*VolumeDiscountStatsConnection) ProtoMessage() {} -func (x *EstimateTransferFeeRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[391] +func (x *VolumeDiscountStatsConnection) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[394] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24263,75 +24335,54 @@ func (x *EstimateTransferFeeRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use EstimateTransferFeeRequest.ProtoReflect.Descriptor instead. -func (*EstimateTransferFeeRequest) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{391} +// Deprecated: Use VolumeDiscountStatsConnection.ProtoReflect.Descriptor instead. +func (*VolumeDiscountStatsConnection) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{394} } -func (x *EstimateTransferFeeRequest) GetFromAccount() string { +func (x *VolumeDiscountStatsConnection) GetEdges() []*VolumeDiscountStatsEdge { if x != nil { - return x.FromAccount + return x.Edges } - return "" + return nil } -func (x *EstimateTransferFeeRequest) GetFromAccountType() vega.AccountType { +func (x *VolumeDiscountStatsConnection) GetPageInfo() *PageInfo { if x != nil { - return x.FromAccountType + return x.PageInfo } - return vega.AccountType(0) -} - -func (x *EstimateTransferFeeRequest) GetToAccount() string { - if x != nil { - return x.ToAccount - } - return "" -} - -func (x *EstimateTransferFeeRequest) GetAmount() string { - if x != nil { - return x.Amount - } - return "" -} - -func (x *EstimateTransferFeeRequest) GetAssetId() string { - if x != nil { - return x.AssetId - } - return "" + return nil } -// Results of estimation of transfer fee and the fee discount -type EstimateTransferFeeResponse struct { +// Volume discount stats data with the corresponding cursor. +type VolumeDiscountStatsEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Estimated fee for the transfer. - Fee string `protobuf:"bytes,1,opt,name=fee,proto3" json:"fee,omitempty"` - // Discount applied to the fee. - Discount string `protobuf:"bytes,2,opt,name=discount,proto3" json:"discount,omitempty"` + // Volume discount stats data. + Node *VolumeDiscountStats `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *EstimateTransferFeeResponse) Reset() { - *x = EstimateTransferFeeResponse{} +func (x *VolumeDiscountStatsEdge) Reset() { + *x = VolumeDiscountStatsEdge{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[392] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[395] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *EstimateTransferFeeResponse) String() string { +func (x *VolumeDiscountStatsEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*EstimateTransferFeeResponse) ProtoMessage() {} +func (*VolumeDiscountStatsEdge) ProtoMessage() {} -func (x *EstimateTransferFeeResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[392] +func (x *VolumeDiscountStatsEdge) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[395] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24342,54 +24393,58 @@ func (x *EstimateTransferFeeResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use EstimateTransferFeeResponse.ProtoReflect.Descriptor instead. -func (*EstimateTransferFeeResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{392} +// Deprecated: Use VolumeDiscountStatsEdge.ProtoReflect.Descriptor instead. +func (*VolumeDiscountStatsEdge) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{395} } -func (x *EstimateTransferFeeResponse) GetFee() string { +func (x *VolumeDiscountStatsEdge) GetNode() *VolumeDiscountStats { if x != nil { - return x.Fee + return x.Node } - return "" + return nil } -func (x *EstimateTransferFeeResponse) GetDiscount() string { +func (x *VolumeDiscountStatsEdge) GetCursor() string { if x != nil { - return x.Discount + return x.Cursor } return "" } -// Get total transfer fee discount available -type GetTotalTransferFeeDiscountRequest struct { +// Volume discount statistics for a given epoch for all parties. +type VolumeDiscountStats struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // ID of party eligible for the discount. - PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` - // ID of asset associated with the discount. - AssetId string `protobuf:"bytes,5,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty"` + // Epoch at which the statistics apply. + AtEpoch uint64 `protobuf:"varint,1,opt,name=at_epoch,json=atEpoch,proto3" json:"at_epoch,omitempty"` + // Party ID for which the statistics apply. + PartyId string `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` + // Discount factor applied given the party's running volume. + DiscountFactor string `protobuf:"bytes,3,opt,name=discount_factor,json=discountFactor,proto3" json:"discount_factor,omitempty"` + // The party's running volume. + RunningVolume string `protobuf:"bytes,4,opt,name=running_volume,json=runningVolume,proto3" json:"running_volume,omitempty"` } -func (x *GetTotalTransferFeeDiscountRequest) Reset() { - *x = GetTotalTransferFeeDiscountRequest{} +func (x *VolumeDiscountStats) Reset() { + *x = VolumeDiscountStats{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[393] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[396] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetTotalTransferFeeDiscountRequest) String() string { +func (x *VolumeDiscountStats) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetTotalTransferFeeDiscountRequest) ProtoMessage() {} +func (*VolumeDiscountStats) ProtoMessage() {} -func (x *GetTotalTransferFeeDiscountRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[393] +func (x *VolumeDiscountStats) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[396] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24400,52 +24455,79 @@ func (x *GetTotalTransferFeeDiscountRequest) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use GetTotalTransferFeeDiscountRequest.ProtoReflect.Descriptor instead. -func (*GetTotalTransferFeeDiscountRequest) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{393} +// Deprecated: Use VolumeDiscountStats.ProtoReflect.Descriptor instead. +func (*VolumeDiscountStats) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{396} } -func (x *GetTotalTransferFeeDiscountRequest) GetPartyId() string { +func (x *VolumeDiscountStats) GetAtEpoch() uint64 { + if x != nil { + return x.AtEpoch + } + return 0 +} + +func (x *VolumeDiscountStats) GetPartyId() string { if x != nil { return x.PartyId } return "" } -func (x *GetTotalTransferFeeDiscountRequest) GetAssetId() string { +func (x *VolumeDiscountStats) GetDiscountFactor() string { if x != nil { - return x.AssetId + return x.DiscountFactor } return "" } -// Returns total transfer fee discount available -type GetTotalTransferFeeDiscountResponse struct { +func (x *VolumeDiscountStats) GetRunningVolume() string { + if x != nil { + return x.RunningVolume + } + return "" +} + +// Volume discount program details. +type VolumeDiscountProgram struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Total per party per asset discount available. - TotalDiscount string `protobuf:"bytes,2,opt,name=total_discount,json=totalDiscount,proto3" json:"total_discount,omitempty"` + // Incremental version of the program. It is incremented after each program + // update. + Version uint64 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` + // Unique ID generated from the proposal that created this program. + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` + // Defined benefit tiers ordered by increasing discounts. Determines the level of + // benefit a party can expect based on performance criteria. + BenefitTiers []*vega.VolumeBenefitTier `protobuf:"bytes,3,rep,name=benefit_tiers,json=benefitTiers,proto3" json:"benefit_tiers,omitempty"` + // Timestamp in Unix nanoseconds, after which when the current epoch + // ends, the program will end and benefits will be disabled. + EndOfProgramTimestamp int64 `protobuf:"varint,4,opt,name=end_of_program_timestamp,json=endOfProgramTimestamp,proto3" json:"end_of_program_timestamp,omitempty"` + // Number of epochs over which a volume discount statistics' running volume is evaluated. + WindowLength uint64 `protobuf:"varint,5,opt,name=window_length,json=windowLength,proto3" json:"window_length,omitempty"` + // Timestamp in Unix nanoseconds, at which the program ended. + EndedAt *int64 `protobuf:"varint,6,opt,name=ended_at,json=endedAt,proto3,oneof" json:"ended_at,omitempty"` } -func (x *GetTotalTransferFeeDiscountResponse) Reset() { - *x = GetTotalTransferFeeDiscountResponse{} +func (x *VolumeDiscountProgram) Reset() { + *x = VolumeDiscountProgram{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[394] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[397] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetTotalTransferFeeDiscountResponse) String() string { +func (x *VolumeDiscountProgram) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetTotalTransferFeeDiscountResponse) ProtoMessage() {} +func (*VolumeDiscountProgram) ProtoMessage() {} -func (x *GetTotalTransferFeeDiscountResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[394] +func (x *VolumeDiscountProgram) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[397] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24456,63 +24538,87 @@ func (x *GetTotalTransferFeeDiscountResponse) ProtoReflect() protoreflect.Messag return mi.MessageOf(x) } -// Deprecated: Use GetTotalTransferFeeDiscountResponse.ProtoReflect.Descriptor instead. -func (*GetTotalTransferFeeDiscountResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{394} +// Deprecated: Use VolumeDiscountProgram.ProtoReflect.Descriptor instead. +func (*VolumeDiscountProgram) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{397} } -func (x *GetTotalTransferFeeDiscountResponse) GetTotalDiscount() string { +func (x *VolumeDiscountProgram) GetVersion() uint64 { if x != nil { - return x.TotalDiscount + return x.Version + } + return 0 +} + +func (x *VolumeDiscountProgram) GetId() string { + if x != nil { + return x.Id } return "" } -// Request to retrieve games data. -type ListGamesRequest struct { +func (x *VolumeDiscountProgram) GetBenefitTiers() []*vega.VolumeBenefitTier { + if x != nil { + return x.BenefitTiers + } + return nil +} + +func (x *VolumeDiscountProgram) GetEndOfProgramTimestamp() int64 { + if x != nil { + return x.EndOfProgramTimestamp + } + return 0 +} + +func (x *VolumeDiscountProgram) GetWindowLength() uint64 { + if x != nil { + return x.WindowLength + } + return 0 +} + +func (x *VolumeDiscountProgram) GetEndedAt() int64 { + if x != nil && x.EndedAt != nil { + return *x.EndedAt + } + return 0 +} + +type FeesStatsForParty struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Game ID to filter for. - GameId *string `protobuf:"bytes,1,opt,name=game_id,json=gameId,proto3,oneof" json:"game_id,omitempty"` - // Oldest epoch to retrieve game data from, inclusive. The maximum range of epochs that can be fetched at once is 30. - // If not provided, defaults to the 'to' epoch minus 29, or the first epoch available if not enough epochs have passed. - // If the 'to' epoch is not specified, it will be set to the chosen 'from' epoch + 29. - EpochFrom *uint64 `protobuf:"varint,2,opt,name=epoch_from,json=epochFrom,proto3,oneof" json:"epoch_from,omitempty"` - // Most recent epoch to retrieve game data to, inclusive. If not provided, defaults to the latest epoch. The maximum range of epochs that can be fetched at once is 30. - // If no 'from' epoch is provided, or the 'from' epoch is out of range, i.e., the 'to' epoch - 'from' epoch > 29, - // the 'from' epoch will be set to the 'to' epoch - 29. - EpochTo *uint64 `protobuf:"varint,3,opt,name=epoch_to,json=epochTo,proto3,oneof" json:"epoch_to,omitempty"` - // Entity scope to filter games for, i.e. team games or individual games only - EntityScope *vega.EntityScope `protobuf:"varint,4,opt,name=entity_scope,json=entityScope,proto3,enum=vega.EntityScope,oneof" json:"entity_scope,omitempty"` - // Pagination controls. - Pagination *Pagination `protobuf:"bytes,5,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` - // Team ID to filter for. This filter will only be applied if entity scope is not specified - // in the request, or the entity scope is set to teams. - TeamId *string `protobuf:"bytes,6,opt,name=team_id,json=teamId,proto3,oneof" json:"team_id,omitempty"` - // Party ID to filter for. This filter will apply regardless of the entity scope. - // If the entity scope filter is teams, then the party ID filter will apply to team members. - PartyId *string `protobuf:"bytes,7,opt,name=party_id,json=partyId,proto3,oneof" json:"party_id,omitempty"` + // Settlement asset of the market. + AssetId string `protobuf:"bytes,1,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty"` + // Total referral rewards received by referrer of the referral set. + TotalRewardsReceived string `protobuf:"bytes,2,opt,name=total_rewards_received,json=totalRewardsReceived,proto3" json:"total_rewards_received,omitempty"` + // Total referral discounts applied to referee fees. + RefereesDiscountApplied string `protobuf:"bytes,3,opt,name=referees_discount_applied,json=refereesDiscountApplied,proto3" json:"referees_discount_applied,omitempty"` + // Total volume discounts applied to referee fees. + VolumeDiscountApplied string `protobuf:"bytes,4,opt,name=volume_discount_applied,json=volumeDiscountApplied,proto3" json:"volume_discount_applied,omitempty"` + // Total maker fees received by the maker side. + TotalMakerFeesReceived string `protobuf:"bytes,5,opt,name=total_maker_fees_received,json=totalMakerFeesReceived,proto3" json:"total_maker_fees_received,omitempty"` } -func (x *ListGamesRequest) Reset() { - *x = ListGamesRequest{} +func (x *FeesStatsForParty) Reset() { + *x = FeesStatsForParty{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[395] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[398] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListGamesRequest) String() string { +func (x *FeesStatsForParty) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListGamesRequest) ProtoMessage() {} +func (*FeesStatsForParty) ProtoMessage() {} -func (x *ListGamesRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[395] +func (x *FeesStatsForParty) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[398] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24523,87 +24629,77 @@ func (x *ListGamesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListGamesRequest.ProtoReflect.Descriptor instead. -func (*ListGamesRequest) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{395} +// Deprecated: Use FeesStatsForParty.ProtoReflect.Descriptor instead. +func (*FeesStatsForParty) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{398} } -func (x *ListGamesRequest) GetGameId() string { - if x != nil && x.GameId != nil { - return *x.GameId +func (x *FeesStatsForParty) GetAssetId() string { + if x != nil { + return x.AssetId } return "" } -func (x *ListGamesRequest) GetEpochFrom() uint64 { - if x != nil && x.EpochFrom != nil { - return *x.EpochFrom - } - return 0 -} - -func (x *ListGamesRequest) GetEpochTo() uint64 { - if x != nil && x.EpochTo != nil { - return *x.EpochTo - } - return 0 -} - -func (x *ListGamesRequest) GetEntityScope() vega.EntityScope { - if x != nil && x.EntityScope != nil { - return *x.EntityScope +func (x *FeesStatsForParty) GetTotalRewardsReceived() string { + if x != nil { + return x.TotalRewardsReceived } - return vega.EntityScope(0) + return "" } -func (x *ListGamesRequest) GetPagination() *Pagination { +func (x *FeesStatsForParty) GetRefereesDiscountApplied() string { if x != nil { - return x.Pagination + return x.RefereesDiscountApplied } - return nil + return "" } -func (x *ListGamesRequest) GetTeamId() string { - if x != nil && x.TeamId != nil { - return *x.TeamId +func (x *FeesStatsForParty) GetVolumeDiscountApplied() string { + if x != nil { + return x.VolumeDiscountApplied } return "" } -func (x *ListGamesRequest) GetPartyId() string { - if x != nil && x.PartyId != nil { - return *x.PartyId +func (x *FeesStatsForParty) GetTotalMakerFeesReceived() string { + if x != nil { + return x.TotalMakerFeesReceived } return "" } -// Response containing games data. -type ListGamesResponse struct { +// Request to subscribe to a stream of users' transaction results +type ObserveTransactionResultsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of games data and corresponding page information. - Games *GamesConnection `protobuf:"bytes,1,opt,name=games,proto3" json:"games,omitempty"` + // Restrict the transaction results streamed to those made by the given parties. + PartyIds []string `protobuf:"bytes,1,rep,name=party_ids,json=partyIds,proto3" json:"party_ids,omitempty"` + // Restrict the transaction results streamed to those with given hashes. + Hashes []string `protobuf:"bytes,2,rep,name=hashes,proto3" json:"hashes,omitempty"` + // Restrict the transaction results streamed to those with given status true/false (success/failure). + Status *bool `protobuf:"varint,3,opt,name=status,proto3,oneof" json:"status,omitempty"` } -func (x *ListGamesResponse) Reset() { - *x = ListGamesResponse{} +func (x *ObserveTransactionResultsRequest) Reset() { + *x = ObserveTransactionResultsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[396] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[399] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListGamesResponse) String() string { +func (x *ObserveTransactionResultsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListGamesResponse) ProtoMessage() {} +func (*ObserveTransactionResultsRequest) ProtoMessage() {} -func (x *ListGamesResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[396] +func (x *ObserveTransactionResultsRequest) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[399] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24614,47 +24710,59 @@ func (x *ListGamesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListGamesResponse.ProtoReflect.Descriptor instead. -func (*ListGamesResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{396} +// Deprecated: Use ObserveTransactionResultsRequest.ProtoReflect.Descriptor instead. +func (*ObserveTransactionResultsRequest) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{399} } -func (x *ListGamesResponse) GetGames() *GamesConnection { +func (x *ObserveTransactionResultsRequest) GetPartyIds() []string { if x != nil { - return x.Games + return x.PartyIds } return nil } -// Page of games data and corresponding page information. -type GamesConnection struct { +func (x *ObserveTransactionResultsRequest) GetHashes() []string { + if x != nil { + return x.Hashes + } + return nil +} + +func (x *ObserveTransactionResultsRequest) GetStatus() bool { + if x != nil && x.Status != nil { + return *x.Status + } + return false +} + +// Stream of transaction results +type ObserveTransactionResultsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of games data and their corresponding cursors. - Edges []*GameEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` + // List of 0 or more transaction results. + TransactionResults []*v1.TransactionResult `protobuf:"bytes,1,rep,name=transaction_results,json=transactionResults,proto3" json:"transaction_results,omitempty"` } -func (x *GamesConnection) Reset() { - *x = GamesConnection{} +func (x *ObserveTransactionResultsResponse) Reset() { + *x = ObserveTransactionResultsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[397] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[400] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GamesConnection) String() string { +func (x *ObserveTransactionResultsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GamesConnection) ProtoMessage() {} +func (*ObserveTransactionResultsResponse) ProtoMessage() {} -func (x *GamesConnection) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[397] +func (x *ObserveTransactionResultsResponse) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[400] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24665,54 +24773,53 @@ func (x *GamesConnection) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GamesConnection.ProtoReflect.Descriptor instead. -func (*GamesConnection) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{397} -} - -func (x *GamesConnection) GetEdges() []*GameEdge { - if x != nil { - return x.Edges - } - return nil +// Deprecated: Use ObserveTransactionResultsResponse.ProtoReflect.Descriptor instead. +func (*ObserveTransactionResultsResponse) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{400} } -func (x *GamesConnection) GetPageInfo() *PageInfo { +func (x *ObserveTransactionResultsResponse) GetTransactionResults() []*v1.TransactionResult { if x != nil { - return x.PageInfo + return x.TransactionResults } return nil } -// Game information and corresponding cursor. -type GameEdge struct { +// Request an estimation of transfer fee and discount +type EstimateTransferFeeRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Game data. - Node *Game `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // Sender's ID. + FromAccount string `protobuf:"bytes,1,opt,name=from_account,json=fromAccount,proto3" json:"from_account,omitempty"` + // Type of account sent from. + FromAccountType vega.AccountType `protobuf:"varint,2,opt,name=from_account_type,json=fromAccountType,proto3,enum=vega.AccountType" json:"from_account_type,omitempty"` + // Receiver's ID. + ToAccount string `protobuf:"bytes,3,opt,name=to_account,json=toAccount,proto3" json:"to_account,omitempty"` + // Amount to be transferred. + Amount string `protobuf:"bytes,4,opt,name=amount,proto3" json:"amount,omitempty"` + // Asset ID for the asset associated with the transaction. + AssetId string `protobuf:"bytes,5,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty"` } -func (x *GameEdge) Reset() { - *x = GameEdge{} +func (x *EstimateTransferFeeRequest) Reset() { + *x = EstimateTransferFeeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[398] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[401] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GameEdge) String() string { +func (x *EstimateTransferFeeRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GameEdge) ProtoMessage() {} +func (*EstimateTransferFeeRequest) ProtoMessage() {} -func (x *GameEdge) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[398] +func (x *EstimateTransferFeeRequest) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[401] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24723,65 +24830,75 @@ func (x *GameEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GameEdge.ProtoReflect.Descriptor instead. -func (*GameEdge) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{398} +// Deprecated: Use EstimateTransferFeeRequest.ProtoReflect.Descriptor instead. +func (*EstimateTransferFeeRequest) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{401} } -func (x *GameEdge) GetNode() *Game { +func (x *EstimateTransferFeeRequest) GetFromAccount() string { if x != nil { - return x.Node + return x.FromAccount } - return nil + return "" } -func (x *GameEdge) GetCursor() string { +func (x *EstimateTransferFeeRequest) GetFromAccountType() vega.AccountType { if x != nil { - return x.Cursor + return x.FromAccountType + } + return vega.AccountType(0) +} + +func (x *EstimateTransferFeeRequest) GetToAccount() string { + if x != nil { + return x.ToAccount } return "" } -// Data relating to a game. -type Game struct { +func (x *EstimateTransferFeeRequest) GetAmount() string { + if x != nil { + return x.Amount + } + return "" +} + +func (x *EstimateTransferFeeRequest) GetAssetId() string { + if x != nil { + return x.AssetId + } + return "" +} + +// Results of estimation of transfer fee and the fee discount +type EstimateTransferFeeResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Unique ID of the game - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - // Epoch at which the last game metrics were captured. - Epoch uint64 `protobuf:"varint,2,opt,name=epoch,proto3" json:"epoch,omitempty"` - // The number of participants in the game. - Participants uint64 `protobuf:"varint,3,opt,name=participants,proto3" json:"participants,omitempty"` - // Entities participating in a game and their corresponding metrics. - // - // Types that are assignable to Entities: - // - // *Game_Team - // *Game_Individual - Entities isGame_Entities `protobuf_oneof:"entities"` - // ID of the asset rewarded for involvement in the game. - RewardAssetId string `protobuf:"bytes,6,opt,name=reward_asset_id,json=rewardAssetId,proto3" json:"reward_asset_id,omitempty"` + // Estimated fee for the transfer. + Fee string `protobuf:"bytes,1,opt,name=fee,proto3" json:"fee,omitempty"` + // Discount applied to the fee. + Discount string `protobuf:"bytes,2,opt,name=discount,proto3" json:"discount,omitempty"` } -func (x *Game) Reset() { - *x = Game{} +func (x *EstimateTransferFeeResponse) Reset() { + *x = EstimateTransferFeeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[399] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[402] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Game) String() string { +func (x *EstimateTransferFeeResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Game) ProtoMessage() {} +func (*EstimateTransferFeeResponse) ProtoMessage() {} -func (x *Game) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[399] +func (x *EstimateTransferFeeResponse) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[402] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24792,105 +24909,54 @@ func (x *Game) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Game.ProtoReflect.Descriptor instead. -func (*Game) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{399} +// Deprecated: Use EstimateTransferFeeResponse.ProtoReflect.Descriptor instead. +func (*EstimateTransferFeeResponse) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{402} } -func (x *Game) GetId() string { +func (x *EstimateTransferFeeResponse) GetFee() string { if x != nil { - return x.Id + return x.Fee } return "" } -func (x *Game) GetEpoch() uint64 { +func (x *EstimateTransferFeeResponse) GetDiscount() string { if x != nil { - return x.Epoch - } - return 0 -} - -func (x *Game) GetParticipants() uint64 { - if x != nil { - return x.Participants - } - return 0 -} - -func (m *Game) GetEntities() isGame_Entities { - if m != nil { - return m.Entities - } - return nil -} - -func (x *Game) GetTeam() *TeamGameEntities { - if x, ok := x.GetEntities().(*Game_Team); ok { - return x.Team - } - return nil -} - -func (x *Game) GetIndividual() *IndividualGameEntities { - if x, ok := x.GetEntities().(*Game_Individual); ok { - return x.Individual - } - return nil -} - -func (x *Game) GetRewardAssetId() string { - if x != nil { - return x.RewardAssetId + return x.Discount } return "" } -type isGame_Entities interface { - isGame_Entities() -} - -type Game_Team struct { - // Team entities that are participating in the game - Team *TeamGameEntities `protobuf:"bytes,4,opt,name=team,proto3,oneof"` -} - -type Game_Individual struct { - // Individual entities that are participating in the game - Individual *IndividualGameEntities `protobuf:"bytes,5,opt,name=individual,proto3,oneof"` -} - -func (*Game_Team) isGame_Entities() {} - -func (*Game_Individual) isGame_Entities() {} - -// List of teams that are participating in a game -type TeamGameEntities struct { +// Get total transfer fee discount available +type GetTotalTransferFeeDiscountRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // List of teams, the participant members of a team, and the metrics associated with each participant. - Team []*TeamGameEntity `protobuf:"bytes,1,rep,name=team,proto3" json:"team,omitempty"` + // ID of party eligible for the discount. + PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` + // ID of asset associated with the discount. + AssetId string `protobuf:"bytes,5,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty"` } -func (x *TeamGameEntities) Reset() { - *x = TeamGameEntities{} +func (x *GetTotalTransferFeeDiscountRequest) Reset() { + *x = GetTotalTransferFeeDiscountRequest{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[400] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[403] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *TeamGameEntities) String() string { +func (x *GetTotalTransferFeeDiscountRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TeamGameEntities) ProtoMessage() {} +func (*GetTotalTransferFeeDiscountRequest) ProtoMessage() {} -func (x *TeamGameEntities) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[400] +func (x *GetTotalTransferFeeDiscountRequest) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[403] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24901,45 +24967,52 @@ func (x *TeamGameEntities) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TeamGameEntities.ProtoReflect.Descriptor instead. -func (*TeamGameEntities) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{400} +// Deprecated: Use GetTotalTransferFeeDiscountRequest.ProtoReflect.Descriptor instead. +func (*GetTotalTransferFeeDiscountRequest) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{403} } -func (x *TeamGameEntities) GetTeam() []*TeamGameEntity { +func (x *GetTotalTransferFeeDiscountRequest) GetPartyId() string { if x != nil { - return x.Team + return x.PartyId } - return nil + return "" } -// List of individuals that are participating in a game -type IndividualGameEntities struct { +func (x *GetTotalTransferFeeDiscountRequest) GetAssetId() string { + if x != nil { + return x.AssetId + } + return "" +} + +// Returns total transfer fee discount available +type GetTotalTransferFeeDiscountResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // List of individual party IDs, and the metrics associated with each participant. - Individual []*IndividualGameEntity `protobuf:"bytes,1,rep,name=individual,proto3" json:"individual,omitempty"` + // Total per party per asset discount available. + TotalDiscount string `protobuf:"bytes,2,opt,name=total_discount,json=totalDiscount,proto3" json:"total_discount,omitempty"` } -func (x *IndividualGameEntities) Reset() { - *x = IndividualGameEntities{} +func (x *GetTotalTransferFeeDiscountResponse) Reset() { + *x = GetTotalTransferFeeDiscountResponse{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[401] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[404] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IndividualGameEntities) String() string { +func (x *GetTotalTransferFeeDiscountResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IndividualGameEntities) ProtoMessage() {} +func (*GetTotalTransferFeeDiscountResponse) ProtoMessage() {} -func (x *IndividualGameEntities) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[401] +func (x *GetTotalTransferFeeDiscountResponse) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[404] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24950,59 +25023,63 @@ func (x *IndividualGameEntities) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IndividualGameEntities.ProtoReflect.Descriptor instead. -func (*IndividualGameEntities) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{401} +// Deprecated: Use GetTotalTransferFeeDiscountResponse.ProtoReflect.Descriptor instead. +func (*GetTotalTransferFeeDiscountResponse) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{404} } -func (x *IndividualGameEntities) GetIndividual() []*IndividualGameEntity { +func (x *GetTotalTransferFeeDiscountResponse) GetTotalDiscount() string { if x != nil { - return x.Individual + return x.TotalDiscount } - return nil + return "" } -// Data relating to a team participating in a game. -type TeamGameEntity struct { +// Request to retrieve games data. +type ListGamesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Team participation breakdown - Team *TeamGameParticipation `protobuf:"bytes,1,opt,name=team,proto3" json:"team,omitempty"` - // Rank of the team in the game - Rank uint64 `protobuf:"varint,2,opt,name=rank,proto3" json:"rank,omitempty"` - // Volume traded by the team - Volume string `protobuf:"bytes,3,opt,name=volume,proto3" json:"volume,omitempty"` - // Reward metric applied to the team - RewardMetric vega.DispatchMetric `protobuf:"varint,4,opt,name=reward_metric,json=rewardMetric,proto3,enum=vega.DispatchMetric" json:"reward_metric,omitempty"` - // Reward earned by the team - RewardEarned string `protobuf:"bytes,5,opt,name=reward_earned,json=rewardEarned,proto3" json:"reward_earned,omitempty"` - // Total rewards earned by the individual for the team - TotalRewardsEarned string `protobuf:"bytes,6,opt,name=total_rewards_earned,json=totalRewardsEarned,proto3" json:"total_rewards_earned,omitempty"` - // Rewards earned by the team in quantum value - RewardEarnedQuantum string `protobuf:"bytes,7,opt,name=reward_earned_quantum,json=rewardEarnedQuantum,proto3" json:"reward_earned_quantum,omitempty"` - // Total rewards earned by the team in quantum value - TotalRewardsEarnedQuantum string `protobuf:"bytes,8,opt,name=total_rewards_earned_quantum,json=totalRewardsEarnedQuantum,proto3" json:"total_rewards_earned_quantum,omitempty"` + // Game ID to filter for. + GameId *string `protobuf:"bytes,1,opt,name=game_id,json=gameId,proto3,oneof" json:"game_id,omitempty"` + // Oldest epoch to retrieve game data from, inclusive. The maximum range of epochs that can be fetched at once is 30. + // If not provided, defaults to the 'to' epoch minus 29, or the first epoch available if not enough epochs have passed. + // If the 'to' epoch is not specified, it will be set to the chosen 'from' epoch + 29. + EpochFrom *uint64 `protobuf:"varint,2,opt,name=epoch_from,json=epochFrom,proto3,oneof" json:"epoch_from,omitempty"` + // Most recent epoch to retrieve game data to, inclusive. If not provided, defaults to the latest epoch. The maximum range of epochs that can be fetched at once is 30. + // If no 'from' epoch is provided, or the 'from' epoch is out of range, i.e., the 'to' epoch - 'from' epoch > 29, + // the 'from' epoch will be set to the 'to' epoch - 29. + EpochTo *uint64 `protobuf:"varint,3,opt,name=epoch_to,json=epochTo,proto3,oneof" json:"epoch_to,omitempty"` + // Entity scope to filter games for, i.e. team games or individual games only + EntityScope *vega.EntityScope `protobuf:"varint,4,opt,name=entity_scope,json=entityScope,proto3,enum=vega.EntityScope,oneof" json:"entity_scope,omitempty"` + // Pagination controls. + Pagination *Pagination `protobuf:"bytes,5,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + // Team ID to filter for. This filter will only be applied if entity scope is not specified + // in the request, or the entity scope is set to teams. + TeamId *string `protobuf:"bytes,6,opt,name=team_id,json=teamId,proto3,oneof" json:"team_id,omitempty"` + // Party ID to filter for. This filter will apply regardless of the entity scope. + // If the entity scope filter is teams, then the party ID filter will apply to team members. + PartyId *string `protobuf:"bytes,7,opt,name=party_id,json=partyId,proto3,oneof" json:"party_id,omitempty"` } -func (x *TeamGameEntity) Reset() { - *x = TeamGameEntity{} +func (x *ListGamesRequest) Reset() { + *x = ListGamesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[402] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[405] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *TeamGameEntity) String() string { +func (x *ListGamesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TeamGameEntity) ProtoMessage() {} +func (*ListGamesRequest) ProtoMessage() {} -func (x *TeamGameEntity) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[402] +func (x *ListGamesRequest) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[405] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25013,96 +25090,87 @@ func (x *TeamGameEntity) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TeamGameEntity.ProtoReflect.Descriptor instead. -func (*TeamGameEntity) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{402} +// Deprecated: Use ListGamesRequest.ProtoReflect.Descriptor instead. +func (*ListGamesRequest) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{405} } -func (x *TeamGameEntity) GetTeam() *TeamGameParticipation { - if x != nil { - return x.Team +func (x *ListGamesRequest) GetGameId() string { + if x != nil && x.GameId != nil { + return *x.GameId } - return nil + return "" } -func (x *TeamGameEntity) GetRank() uint64 { - if x != nil { - return x.Rank +func (x *ListGamesRequest) GetEpochFrom() uint64 { + if x != nil && x.EpochFrom != nil { + return *x.EpochFrom } return 0 } -func (x *TeamGameEntity) GetVolume() string { - if x != nil { - return x.Volume - } - return "" -} - -func (x *TeamGameEntity) GetRewardMetric() vega.DispatchMetric { - if x != nil { - return x.RewardMetric +func (x *ListGamesRequest) GetEpochTo() uint64 { + if x != nil && x.EpochTo != nil { + return *x.EpochTo } - return vega.DispatchMetric(0) + return 0 } -func (x *TeamGameEntity) GetRewardEarned() string { - if x != nil { - return x.RewardEarned +func (x *ListGamesRequest) GetEntityScope() vega.EntityScope { + if x != nil && x.EntityScope != nil { + return *x.EntityScope } - return "" + return vega.EntityScope(0) } -func (x *TeamGameEntity) GetTotalRewardsEarned() string { +func (x *ListGamesRequest) GetPagination() *Pagination { if x != nil { - return x.TotalRewardsEarned + return x.Pagination } - return "" + return nil } -func (x *TeamGameEntity) GetRewardEarnedQuantum() string { - if x != nil { - return x.RewardEarnedQuantum +func (x *ListGamesRequest) GetTeamId() string { + if x != nil && x.TeamId != nil { + return *x.TeamId } return "" } -func (x *TeamGameEntity) GetTotalRewardsEarnedQuantum() string { - if x != nil { - return x.TotalRewardsEarnedQuantum +func (x *ListGamesRequest) GetPartyId() string { + if x != nil && x.PartyId != nil { + return *x.PartyId } return "" } -// Breakdown of a team's participation in a game. -type TeamGameParticipation struct { +// Response containing games data. +type ListGamesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // ID of the team participating - TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` - // Individual team member metrics for their participation in the game - MembersParticipating []*IndividualGameEntity `protobuf:"bytes,2,rep,name=members_participating,json=membersParticipating,proto3" json:"members_participating,omitempty"` + // Page of games data and corresponding page information. + Games *GamesConnection `protobuf:"bytes,1,opt,name=games,proto3" json:"games,omitempty"` } -func (x *TeamGameParticipation) Reset() { - *x = TeamGameParticipation{} +func (x *ListGamesResponse) Reset() { + *x = ListGamesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[403] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[406] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *TeamGameParticipation) String() string { +func (x *ListGamesResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TeamGameParticipation) ProtoMessage() {} +func (*ListGamesResponse) ProtoMessage() {} -func (x *TeamGameParticipation) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[403] +func (x *ListGamesResponse) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[406] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25113,68 +25181,47 @@ func (x *TeamGameParticipation) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TeamGameParticipation.ProtoReflect.Descriptor instead. -func (*TeamGameParticipation) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{403} -} - -func (x *TeamGameParticipation) GetTeamId() string { - if x != nil { - return x.TeamId - } - return "" +// Deprecated: Use ListGamesResponse.ProtoReflect.Descriptor instead. +func (*ListGamesResponse) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{406} } -func (x *TeamGameParticipation) GetMembersParticipating() []*IndividualGameEntity { +func (x *ListGamesResponse) GetGames() *GamesConnection { if x != nil { - return x.MembersParticipating + return x.Games } return nil } -// Data relating to an individual participating in a game. -// This can be used for both team members who are participating in a team game, -// or individuals participating in an individual entity game. -type IndividualGameEntity struct { +// Page of games data and corresponding page information. +type GamesConnection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Party ID of the individual participating - Individual string `protobuf:"bytes,1,opt,name=individual,proto3" json:"individual,omitempty"` - // Rank of the individual either in the game or within their team. - Rank uint64 `protobuf:"varint,2,opt,name=rank,proto3" json:"rank,omitempty"` - // Volume traded by the individual - Volume string `protobuf:"bytes,3,opt,name=volume,proto3" json:"volume,omitempty"` - // Reward metric applied to the individual - RewardMetric vega.DispatchMetric `protobuf:"varint,4,opt,name=reward_metric,json=rewardMetric,proto3,enum=vega.DispatchMetric" json:"reward_metric,omitempty"` - // Reward earned by the individual during the epoch - RewardEarned string `protobuf:"bytes,5,opt,name=reward_earned,json=rewardEarned,proto3" json:"reward_earned,omitempty"` - // Total rewards earned by the individual for the game - TotalRewardsEarned string `protobuf:"bytes,6,opt,name=total_rewards_earned,json=totalRewardsEarned,proto3" json:"total_rewards_earned,omitempty"` - // Rewards earned by the individual in quantum value - RewardEarnedQuantum string `protobuf:"bytes,7,opt,name=reward_earned_quantum,json=rewardEarnedQuantum,proto3" json:"reward_earned_quantum,omitempty"` - // Total rewards earned by the individual in quantum value - TotalRewardsEarnedQuantum string `protobuf:"bytes,8,opt,name=total_rewards_earned_quantum,json=totalRewardsEarnedQuantum,proto3" json:"total_rewards_earned_quantum,omitempty"` + // Page of games data and their corresponding cursors. + Edges []*GameEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` } -func (x *IndividualGameEntity) Reset() { - *x = IndividualGameEntity{} +func (x *GamesConnection) Reset() { + *x = GamesConnection{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[404] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[407] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *IndividualGameEntity) String() string { +func (x *GamesConnection) String() string { return protoimpl.X.MessageStringOf(x) } -func (*IndividualGameEntity) ProtoMessage() {} +func (*GamesConnection) ProtoMessage() {} -func (x *IndividualGameEntity) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[404] +func (x *GamesConnection) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[407] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25185,98 +25232,54 @@ func (x *IndividualGameEntity) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use IndividualGameEntity.ProtoReflect.Descriptor instead. -func (*IndividualGameEntity) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{404} -} - -func (x *IndividualGameEntity) GetIndividual() string { - if x != nil { - return x.Individual - } - return "" -} - -func (x *IndividualGameEntity) GetRank() uint64 { - if x != nil { - return x.Rank - } - return 0 -} - -func (x *IndividualGameEntity) GetVolume() string { - if x != nil { - return x.Volume - } - return "" -} - -func (x *IndividualGameEntity) GetRewardMetric() vega.DispatchMetric { - if x != nil { - return x.RewardMetric - } - return vega.DispatchMetric(0) -} - -func (x *IndividualGameEntity) GetRewardEarned() string { - if x != nil { - return x.RewardEarned - } - return "" -} - -func (x *IndividualGameEntity) GetTotalRewardsEarned() string { - if x != nil { - return x.TotalRewardsEarned - } - return "" +// Deprecated: Use GamesConnection.ProtoReflect.Descriptor instead. +func (*GamesConnection) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{407} } -func (x *IndividualGameEntity) GetRewardEarnedQuantum() string { +func (x *GamesConnection) GetEdges() []*GameEdge { if x != nil { - return x.RewardEarnedQuantum + return x.Edges } - return "" + return nil } -func (x *IndividualGameEntity) GetTotalRewardsEarnedQuantum() string { +func (x *GamesConnection) GetPageInfo() *PageInfo { if x != nil { - return x.TotalRewardsEarnedQuantum + return x.PageInfo } - return "" + return nil } -// Request to retrieve party margin modes. -type ListPartyMarginModesRequest struct { +// Game information and corresponding cursor. +type GameEdge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Market ID to filter for. - MarketId *string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3,oneof" json:"market_id,omitempty"` - // Party ID to filter for. - PartyId *string `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3,oneof" json:"party_id,omitempty"` - // Pagination controls. - Pagination *Pagination `protobuf:"bytes,5,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + // Game data. + Node *Game `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` } -func (x *ListPartyMarginModesRequest) Reset() { - *x = ListPartyMarginModesRequest{} +func (x *GameEdge) Reset() { + *x = GameEdge{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[405] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[408] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListPartyMarginModesRequest) String() string { +func (x *GameEdge) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListPartyMarginModesRequest) ProtoMessage() {} +func (*GameEdge) ProtoMessage() {} -func (x *ListPartyMarginModesRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[405] +func (x *GameEdge) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[408] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25287,59 +25290,65 @@ func (x *ListPartyMarginModesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListPartyMarginModesRequest.ProtoReflect.Descriptor instead. -func (*ListPartyMarginModesRequest) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{405} -} - -func (x *ListPartyMarginModesRequest) GetMarketId() string { - if x != nil && x.MarketId != nil { - return *x.MarketId - } - return "" +// Deprecated: Use GameEdge.ProtoReflect.Descriptor instead. +func (*GameEdge) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{408} } -func (x *ListPartyMarginModesRequest) GetPartyId() string { - if x != nil && x.PartyId != nil { - return *x.PartyId +func (x *GameEdge) GetNode() *Game { + if x != nil { + return x.Node } - return "" + return nil } -func (x *ListPartyMarginModesRequest) GetPagination() *Pagination { +func (x *GameEdge) GetCursor() string { if x != nil { - return x.Pagination + return x.Cursor } - return nil + return "" } -// Response containing party margin modes. -type ListPartyMarginModesResponse struct { +// Data relating to a game. +type Game struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Page of party margin modes data and corresponding page information. - PartyMarginModes *PartyMarginModesConnection `protobuf:"bytes,1,opt,name=party_margin_modes,json=partyMarginModes,proto3" json:"party_margin_modes,omitempty"` + // Unique ID of the game + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // Epoch at which the last game metrics were captured. + Epoch uint64 `protobuf:"varint,2,opt,name=epoch,proto3" json:"epoch,omitempty"` + // The number of participants in the game. + Participants uint64 `protobuf:"varint,3,opt,name=participants,proto3" json:"participants,omitempty"` + // Entities participating in a game and their corresponding metrics. + // + // Types that are assignable to Entities: + // + // *Game_Team + // *Game_Individual + Entities isGame_Entities `protobuf_oneof:"entities"` + // ID of the asset rewarded for involvement in the game. + RewardAssetId string `protobuf:"bytes,6,opt,name=reward_asset_id,json=rewardAssetId,proto3" json:"reward_asset_id,omitempty"` } -func (x *ListPartyMarginModesResponse) Reset() { - *x = ListPartyMarginModesResponse{} +func (x *Game) Reset() { + *x = Game{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[406] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[409] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListPartyMarginModesResponse) String() string { +func (x *Game) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListPartyMarginModesResponse) ProtoMessage() {} +func (*Game) ProtoMessage() {} -func (x *ListPartyMarginModesResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[406] +func (x *Game) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[409] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25350,105 +25359,105 @@ func (x *ListPartyMarginModesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListPartyMarginModesResponse.ProtoReflect.Descriptor instead. -func (*ListPartyMarginModesResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{406} +// Deprecated: Use Game.ProtoReflect.Descriptor instead. +func (*Game) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{409} } -func (x *ListPartyMarginModesResponse) GetPartyMarginModes() *PartyMarginModesConnection { +func (x *Game) GetId() string { if x != nil { - return x.PartyMarginModes + return x.Id } - return nil + return "" } -// Page of party margin modes data and corresponding page information. -type PartyMarginModesConnection struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Page of party margin modes data and their corresponding cursors. - Edges []*PartyMarginModeEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` - // Page information that is used for fetching further pages. - PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` +func (x *Game) GetEpoch() uint64 { + if x != nil { + return x.Epoch + } + return 0 } -func (x *PartyMarginModesConnection) Reset() { - *x = PartyMarginModesConnection{} - if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[407] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *Game) GetParticipants() uint64 { + if x != nil { + return x.Participants } + return 0 } -func (x *PartyMarginModesConnection) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PartyMarginModesConnection) ProtoMessage() {} - -func (x *PartyMarginModesConnection) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[407] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (m *Game) GetEntities() isGame_Entities { + if m != nil { + return m.Entities } - return mi.MessageOf(x) + return nil } -// Deprecated: Use PartyMarginModesConnection.ProtoReflect.Descriptor instead. -func (*PartyMarginModesConnection) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{407} +func (x *Game) GetTeam() *TeamGameEntities { + if x, ok := x.GetEntities().(*Game_Team); ok { + return x.Team + } + return nil } -func (x *PartyMarginModesConnection) GetEdges() []*PartyMarginModeEdge { - if x != nil { - return x.Edges +func (x *Game) GetIndividual() *IndividualGameEntities { + if x, ok := x.GetEntities().(*Game_Individual); ok { + return x.Individual } return nil } -func (x *PartyMarginModesConnection) GetPageInfo() *PageInfo { +func (x *Game) GetRewardAssetId() string { if x != nil { - return x.PageInfo + return x.RewardAssetId } - return nil + return "" } -// Party margin mode information and corresponding cursor. -type PartyMarginModeEdge struct { +type isGame_Entities interface { + isGame_Entities() +} + +type Game_Team struct { + // Team entities that are participating in the game + Team *TeamGameEntities `protobuf:"bytes,4,opt,name=team,proto3,oneof"` +} + +type Game_Individual struct { + // Individual entities that are participating in the game + Individual *IndividualGameEntities `protobuf:"bytes,5,opt,name=individual,proto3,oneof"` +} + +func (*Game_Team) isGame_Entities() {} + +func (*Game_Individual) isGame_Entities() {} + +// List of teams that are participating in a game +type TeamGameEntities struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Party margin mode data. - Node *PartyMarginMode `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` - // Cursor that can be used to fetch further pages. - Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` + // List of teams, the participant members of a team, and the metrics associated with each participant. + Team []*TeamGameEntity `protobuf:"bytes,1,rep,name=team,proto3" json:"team,omitempty"` } -func (x *PartyMarginModeEdge) Reset() { - *x = PartyMarginModeEdge{} +func (x *TeamGameEntities) Reset() { + *x = TeamGameEntities{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[408] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[410] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PartyMarginModeEdge) String() string { +func (x *TeamGameEntities) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PartyMarginModeEdge) ProtoMessage() {} +func (*TeamGameEntities) ProtoMessage() {} -func (x *PartyMarginModeEdge) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[408] +func (x *TeamGameEntities) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[410] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25459,64 +25468,45 @@ func (x *PartyMarginModeEdge) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PartyMarginModeEdge.ProtoReflect.Descriptor instead. -func (*PartyMarginModeEdge) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{408} +// Deprecated: Use TeamGameEntities.ProtoReflect.Descriptor instead. +func (*TeamGameEntities) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{410} } -func (x *PartyMarginModeEdge) GetNode() *PartyMarginMode { +func (x *TeamGameEntities) GetTeam() []*TeamGameEntity { if x != nil { - return x.Node + return x.Team } return nil } -func (x *PartyMarginModeEdge) GetCursor() string { - if x != nil { - return x.Cursor - } - return "" -} - -// Margin mode selected for the given party and market. -type PartyMarginMode struct { +// List of individuals that are participating in a game +type IndividualGameEntities struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Unique ID of the market. - MarketId string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` - // Unique ID of the party. - PartyId string `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` - // Selected margin mode. - MarginMode vega.MarginMode `protobuf:"varint,3,opt,name=margin_mode,json=marginMode,proto3,enum=vega.MarginMode" json:"margin_mode,omitempty"` - // Margin factor for the market. Isolated mode only. - MarginFactor *string `protobuf:"bytes,4,opt,name=margin_factor,json=marginFactor,proto3,oneof" json:"margin_factor,omitempty"` - // Minimum theoretical margin factor for the market. Isolated mode only. - MinTheoreticalMarginFactor *string `protobuf:"bytes,5,opt,name=min_theoretical_margin_factor,json=minTheoreticalMarginFactor,proto3,oneof" json:"min_theoretical_margin_factor,omitempty"` - // Maximum theoretical leverage for the market. Isolated mode only. - MaxTheoreticalLeverage *string `protobuf:"bytes,6,opt,name=max_theoretical_leverage,json=maxTheoreticalLeverage,proto3,oneof" json:"max_theoretical_leverage,omitempty"` - // Epoch at which the update happened. - AtEpoch uint64 `protobuf:"varint,7,opt,name=at_epoch,json=atEpoch,proto3" json:"at_epoch,omitempty"` + // List of individual party IDs, and the metrics associated with each participant. + Individual []*IndividualGameEntity `protobuf:"bytes,1,rep,name=individual,proto3" json:"individual,omitempty"` } -func (x *PartyMarginMode) Reset() { - *x = PartyMarginMode{} +func (x *IndividualGameEntities) Reset() { + *x = IndividualGameEntities{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[409] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[411] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PartyMarginMode) String() string { +func (x *IndividualGameEntities) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PartyMarginMode) ProtoMessage() {} +func (*IndividualGameEntities) ProtoMessage() {} -func (x *PartyMarginMode) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[409] +func (x *IndividualGameEntities) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[411] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25527,98 +25517,59 @@ func (x *PartyMarginMode) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PartyMarginMode.ProtoReflect.Descriptor instead. -func (*PartyMarginMode) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{409} -} - -func (x *PartyMarginMode) GetMarketId() string { - if x != nil { - return x.MarketId - } - return "" -} - -func (x *PartyMarginMode) GetPartyId() string { - if x != nil { - return x.PartyId - } - return "" -} - -func (x *PartyMarginMode) GetMarginMode() vega.MarginMode { - if x != nil { - return x.MarginMode - } - return vega.MarginMode(0) -} - -func (x *PartyMarginMode) GetMarginFactor() string { - if x != nil && x.MarginFactor != nil { - return *x.MarginFactor - } - return "" -} - -func (x *PartyMarginMode) GetMinTheoreticalMarginFactor() string { - if x != nil && x.MinTheoreticalMarginFactor != nil { - return *x.MinTheoreticalMarginFactor - } - return "" -} - -func (x *PartyMarginMode) GetMaxTheoreticalLeverage() string { - if x != nil && x.MaxTheoreticalLeverage != nil { - return *x.MaxTheoreticalLeverage - } - return "" +// Deprecated: Use IndividualGameEntities.ProtoReflect.Descriptor instead. +func (*IndividualGameEntities) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{411} } -func (x *PartyMarginMode) GetAtEpoch() uint64 { +func (x *IndividualGameEntities) GetIndividual() []*IndividualGameEntity { if x != nil { - return x.AtEpoch + return x.Individual } - return 0 + return nil } -// Time weighted notional position for a party and asset at a given epoch. It is used as a metric to calculate whether -// the party is eligible for receiving a reward. -type TimeWeightedNotionalPosition struct { +// Data relating to a team participating in a game. +type TeamGameEntity struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Asset ID for the settlement asset associated with the position. - AssetId string `protobuf:"bytes,1,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty"` - // Party ID for the party associated with the position. - PartyId string `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` - // Game ID for the game associated with the position. - GameId string `protobuf:"bytes,3,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` - // Epoch at which the time weighted notional position is calculated. - AtEpoch uint64 `protobuf:"varint,4,opt,name=at_epoch,json=atEpoch,proto3" json:"at_epoch,omitempty"` - // Time weighted notional position for the party and asset. - TimeWeightedNotionalPosition string `protobuf:"bytes,5,opt,name=time_weighted_notional_position,json=timeWeightedNotionalPosition,proto3" json:"time_weighted_notional_position,omitempty"` - // Vega time of the block in which the last position update occurred. - LastUpdated int64 `protobuf:"varint,6,opt,name=last_updated,json=lastUpdated,proto3" json:"last_updated,omitempty"` + // Team participation breakdown + Team *TeamGameParticipation `protobuf:"bytes,1,opt,name=team,proto3" json:"team,omitempty"` + // Rank of the team in the game + Rank uint64 `protobuf:"varint,2,opt,name=rank,proto3" json:"rank,omitempty"` + // Volume traded by the team + Volume string `protobuf:"bytes,3,opt,name=volume,proto3" json:"volume,omitempty"` + // Reward metric applied to the team + RewardMetric vega.DispatchMetric `protobuf:"varint,4,opt,name=reward_metric,json=rewardMetric,proto3,enum=vega.DispatchMetric" json:"reward_metric,omitempty"` + // Reward earned by the team + RewardEarned string `protobuf:"bytes,5,opt,name=reward_earned,json=rewardEarned,proto3" json:"reward_earned,omitempty"` + // Total rewards earned by the individual for the team + TotalRewardsEarned string `protobuf:"bytes,6,opt,name=total_rewards_earned,json=totalRewardsEarned,proto3" json:"total_rewards_earned,omitempty"` + // Rewards earned by the team in quantum value + RewardEarnedQuantum string `protobuf:"bytes,7,opt,name=reward_earned_quantum,json=rewardEarnedQuantum,proto3" json:"reward_earned_quantum,omitempty"` + // Total rewards earned by the team in quantum value + TotalRewardsEarnedQuantum string `protobuf:"bytes,8,opt,name=total_rewards_earned_quantum,json=totalRewardsEarnedQuantum,proto3" json:"total_rewards_earned_quantum,omitempty"` } -func (x *TimeWeightedNotionalPosition) Reset() { - *x = TimeWeightedNotionalPosition{} +func (x *TeamGameEntity) Reset() { + *x = TeamGameEntity{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[410] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[412] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *TimeWeightedNotionalPosition) String() string { +func (x *TeamGameEntity) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TimeWeightedNotionalPosition) ProtoMessage() {} +func (*TeamGameEntity) ProtoMessage() {} -func (x *TimeWeightedNotionalPosition) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[410] +func (x *TeamGameEntity) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[412] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25629,88 +25580,96 @@ func (x *TimeWeightedNotionalPosition) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TimeWeightedNotionalPosition.ProtoReflect.Descriptor instead. -func (*TimeWeightedNotionalPosition) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{410} +// Deprecated: Use TeamGameEntity.ProtoReflect.Descriptor instead. +func (*TeamGameEntity) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{412} } -func (x *TimeWeightedNotionalPosition) GetAssetId() string { +func (x *TeamGameEntity) GetTeam() *TeamGameParticipation { if x != nil { - return x.AssetId + return x.Team } - return "" + return nil } -func (x *TimeWeightedNotionalPosition) GetPartyId() string { +func (x *TeamGameEntity) GetRank() uint64 { if x != nil { - return x.PartyId + return x.Rank } - return "" + return 0 } -func (x *TimeWeightedNotionalPosition) GetGameId() string { +func (x *TeamGameEntity) GetVolume() string { if x != nil { - return x.GameId + return x.Volume } return "" } -func (x *TimeWeightedNotionalPosition) GetAtEpoch() uint64 { +func (x *TeamGameEntity) GetRewardMetric() vega.DispatchMetric { if x != nil { - return x.AtEpoch + return x.RewardMetric } - return 0 + return vega.DispatchMetric(0) } -func (x *TimeWeightedNotionalPosition) GetTimeWeightedNotionalPosition() string { +func (x *TeamGameEntity) GetRewardEarned() string { if x != nil { - return x.TimeWeightedNotionalPosition + return x.RewardEarned } return "" } -func (x *TimeWeightedNotionalPosition) GetLastUpdated() int64 { +func (x *TeamGameEntity) GetTotalRewardsEarned() string { if x != nil { - return x.LastUpdated + return x.TotalRewardsEarned } - return 0 + return "" } -// Request to retrieve the time weighted notional position for a party and asset. -// If no epoch is given, the time weighted notional position at the end of the most recently completed epoch will be returned. -// If an epoch is given, the time weighted notional position achieved by the end of the given epoch will be returned. -type GetTimeWeightedNotionalPositionRequest struct { +func (x *TeamGameEntity) GetRewardEarnedQuantum() string { + if x != nil { + return x.RewardEarnedQuantum + } + return "" +} + +func (x *TeamGameEntity) GetTotalRewardsEarnedQuantum() string { + if x != nil { + return x.TotalRewardsEarnedQuantum + } + return "" +} + +// Breakdown of a team's participation in a game. +type TeamGameParticipation struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Asset ID to filter for. - AssetId string `protobuf:"bytes,1,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty"` - // Party ID to filter for. - PartyId string `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` - // Game ID to filter for. - GameId string `protobuf:"bytes,3,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` - // Epoch to filter for. - AtEpoch *uint64 `protobuf:"varint,4,opt,name=at_epoch,json=atEpoch,proto3,oneof" json:"at_epoch,omitempty"` + // ID of the team participating + TeamId string `protobuf:"bytes,1,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` + // Individual team member metrics for their participation in the game + MembersParticipating []*IndividualGameEntity `protobuf:"bytes,2,rep,name=members_participating,json=membersParticipating,proto3" json:"members_participating,omitempty"` } -func (x *GetTimeWeightedNotionalPositionRequest) Reset() { - *x = GetTimeWeightedNotionalPositionRequest{} +func (x *TeamGameParticipation) Reset() { + *x = TeamGameParticipation{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[411] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[413] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetTimeWeightedNotionalPositionRequest) String() string { +func (x *TeamGameParticipation) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetTimeWeightedNotionalPositionRequest) ProtoMessage() {} +func (*TeamGameParticipation) ProtoMessage() {} -func (x *GetTimeWeightedNotionalPositionRequest) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[411] +func (x *TeamGameParticipation) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[413] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25721,66 +25680,170 @@ func (x *GetTimeWeightedNotionalPositionRequest) ProtoReflect() protoreflect.Mes return mi.MessageOf(x) } -// Deprecated: Use GetTimeWeightedNotionalPositionRequest.ProtoReflect.Descriptor instead. -func (*GetTimeWeightedNotionalPositionRequest) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{411} +// Deprecated: Use TeamGameParticipation.ProtoReflect.Descriptor instead. +func (*TeamGameParticipation) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{413} } -func (x *GetTimeWeightedNotionalPositionRequest) GetAssetId() string { +func (x *TeamGameParticipation) GetTeamId() string { if x != nil { - return x.AssetId + return x.TeamId } return "" } -func (x *GetTimeWeightedNotionalPositionRequest) GetPartyId() string { +func (x *TeamGameParticipation) GetMembersParticipating() []*IndividualGameEntity { if x != nil { - return x.PartyId + return x.MembersParticipating } - return "" + return nil } -func (x *GetTimeWeightedNotionalPositionRequest) GetGameId() string { +// Data relating to an individual participating in a game. +// This can be used for both team members who are participating in a team game, +// or individuals participating in an individual entity game. +type IndividualGameEntity struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Party ID of the individual participating + Individual string `protobuf:"bytes,1,opt,name=individual,proto3" json:"individual,omitempty"` + // Rank of the individual either in the game or within their team. + Rank uint64 `protobuf:"varint,2,opt,name=rank,proto3" json:"rank,omitempty"` + // Volume traded by the individual + Volume string `protobuf:"bytes,3,opt,name=volume,proto3" json:"volume,omitempty"` + // Reward metric applied to the individual + RewardMetric vega.DispatchMetric `protobuf:"varint,4,opt,name=reward_metric,json=rewardMetric,proto3,enum=vega.DispatchMetric" json:"reward_metric,omitempty"` + // Reward earned by the individual during the epoch + RewardEarned string `protobuf:"bytes,5,opt,name=reward_earned,json=rewardEarned,proto3" json:"reward_earned,omitempty"` + // Total rewards earned by the individual for the game + TotalRewardsEarned string `protobuf:"bytes,6,opt,name=total_rewards_earned,json=totalRewardsEarned,proto3" json:"total_rewards_earned,omitempty"` + // Rewards earned by the individual in quantum value + RewardEarnedQuantum string `protobuf:"bytes,7,opt,name=reward_earned_quantum,json=rewardEarnedQuantum,proto3" json:"reward_earned_quantum,omitempty"` + // Total rewards earned by the individual in quantum value + TotalRewardsEarnedQuantum string `protobuf:"bytes,8,opt,name=total_rewards_earned_quantum,json=totalRewardsEarnedQuantum,proto3" json:"total_rewards_earned_quantum,omitempty"` +} + +func (x *IndividualGameEntity) Reset() { + *x = IndividualGameEntity{} + if protoimpl.UnsafeEnabled { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[414] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *IndividualGameEntity) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IndividualGameEntity) ProtoMessage() {} + +func (x *IndividualGameEntity) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[414] + 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 IndividualGameEntity.ProtoReflect.Descriptor instead. +func (*IndividualGameEntity) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{414} +} + +func (x *IndividualGameEntity) GetIndividual() string { if x != nil { - return x.GameId + return x.Individual } return "" } -func (x *GetTimeWeightedNotionalPositionRequest) GetAtEpoch() uint64 { - if x != nil && x.AtEpoch != nil { - return *x.AtEpoch +func (x *IndividualGameEntity) GetRank() uint64 { + if x != nil { + return x.Rank } return 0 } -// Response containing the time weighted notional position for a party and asset. -type GetTimeWeightedNotionalPositionResponse struct { +func (x *IndividualGameEntity) GetVolume() string { + if x != nil { + return x.Volume + } + return "" +} + +func (x *IndividualGameEntity) GetRewardMetric() vega.DispatchMetric { + if x != nil { + return x.RewardMetric + } + return vega.DispatchMetric(0) +} + +func (x *IndividualGameEntity) GetRewardEarned() string { + if x != nil { + return x.RewardEarned + } + return "" +} + +func (x *IndividualGameEntity) GetTotalRewardsEarned() string { + if x != nil { + return x.TotalRewardsEarned + } + return "" +} + +func (x *IndividualGameEntity) GetRewardEarnedQuantum() string { + if x != nil { + return x.RewardEarnedQuantum + } + return "" +} + +func (x *IndividualGameEntity) GetTotalRewardsEarnedQuantum() string { + if x != nil { + return x.TotalRewardsEarnedQuantum + } + return "" +} + +// Request to retrieve party margin modes. +type ListPartyMarginModesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Time weighted notional position for the party and asset. - TimeWeightedNotionalPosition *TimeWeightedNotionalPosition `protobuf:"bytes,1,opt,name=time_weighted_notional_position,json=timeWeightedNotionalPosition,proto3" json:"time_weighted_notional_position,omitempty"` + // Market ID to filter for. + MarketId *string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3,oneof" json:"market_id,omitempty"` + // Party ID to filter for. + PartyId *string `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3,oneof" json:"party_id,omitempty"` + // Pagination controls. + Pagination *Pagination `protobuf:"bytes,5,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` } -func (x *GetTimeWeightedNotionalPositionResponse) Reset() { - *x = GetTimeWeightedNotionalPositionResponse{} +func (x *ListPartyMarginModesRequest) Reset() { + *x = ListPartyMarginModesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[412] + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[415] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetTimeWeightedNotionalPositionResponse) String() string { +func (x *ListPartyMarginModesRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetTimeWeightedNotionalPositionResponse) ProtoMessage() {} +func (*ListPartyMarginModesRequest) ProtoMessage() {} -func (x *GetTimeWeightedNotionalPositionResponse) ProtoReflect() protoreflect.Message { - mi := &file_data_node_api_v2_trading_data_proto_msgTypes[412] +func (x *ListPartyMarginModesRequest) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[415] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25791,42 +25854,546 @@ func (x *GetTimeWeightedNotionalPositionResponse) ProtoReflect() protoreflect.Me return mi.MessageOf(x) } -// Deprecated: Use GetTimeWeightedNotionalPositionResponse.ProtoReflect.Descriptor instead. -func (*GetTimeWeightedNotionalPositionResponse) Descriptor() ([]byte, []int) { - return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{412} +// Deprecated: Use ListPartyMarginModesRequest.ProtoReflect.Descriptor instead. +func (*ListPartyMarginModesRequest) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{415} } -func (x *GetTimeWeightedNotionalPositionResponse) GetTimeWeightedNotionalPosition() *TimeWeightedNotionalPosition { +func (x *ListPartyMarginModesRequest) GetMarketId() string { + if x != nil && x.MarketId != nil { + return *x.MarketId + } + return "" +} + +func (x *ListPartyMarginModesRequest) GetPartyId() string { + if x != nil && x.PartyId != nil { + return *x.PartyId + } + return "" +} + +func (x *ListPartyMarginModesRequest) GetPagination() *Pagination { if x != nil { - return x.TimeWeightedNotionalPosition + return x.Pagination } return nil } -var File_data_node_api_v2_trading_data_proto protoreflect.FileDescriptor +// Response containing party margin modes. +type ListPartyMarginModesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -var file_data_node_api_v2_trading_data_proto_rawDesc = []byte{ - 0x0a, 0x23, 0x64, 0x61, 0x74, 0x61, 0x2d, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x76, 0x32, 0x2f, 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, - 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x62, 0x6f, 0x64, 0x79, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, - 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x11, 0x76, 0x65, 0x67, 0x61, 0x2f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x29, 0x76, 0x65, 0x67, 0x61, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, - 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, - 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x1b, 0x76, 0x65, 0x67, 0x61, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x76, 0x31, - 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x15, 0x76, - 0x65, 0x67, 0x61, 0x2f, 0x67, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x76, 0x65, 0x67, 0x61, 0x2f, 0x6d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x11, 0x76, 0x65, 0x67, 0x61, 0x2f, 0x6f, - 0x72, 0x61, 0x63, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0f, 0x76, 0x65, 0x67, - 0x61, 0x2f, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd9, 0x01, 0x0a, + // Page of party margin modes data and corresponding page information. + PartyMarginModes *PartyMarginModesConnection `protobuf:"bytes,1,opt,name=party_margin_modes,json=partyMarginModes,proto3" json:"party_margin_modes,omitempty"` +} + +func (x *ListPartyMarginModesResponse) Reset() { + *x = ListPartyMarginModesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[416] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListPartyMarginModesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListPartyMarginModesResponse) ProtoMessage() {} + +func (x *ListPartyMarginModesResponse) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[416] + 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 ListPartyMarginModesResponse.ProtoReflect.Descriptor instead. +func (*ListPartyMarginModesResponse) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{416} +} + +func (x *ListPartyMarginModesResponse) GetPartyMarginModes() *PartyMarginModesConnection { + if x != nil { + return x.PartyMarginModes + } + return nil +} + +// Page of party margin modes data and corresponding page information. +type PartyMarginModesConnection struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Page of party margin modes data and their corresponding cursors. + Edges []*PartyMarginModeEdge `protobuf:"bytes,1,rep,name=edges,proto3" json:"edges,omitempty"` + // Page information that is used for fetching further pages. + PageInfo *PageInfo `protobuf:"bytes,2,opt,name=page_info,json=pageInfo,proto3" json:"page_info,omitempty"` +} + +func (x *PartyMarginModesConnection) Reset() { + *x = PartyMarginModesConnection{} + if protoimpl.UnsafeEnabled { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[417] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PartyMarginModesConnection) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PartyMarginModesConnection) ProtoMessage() {} + +func (x *PartyMarginModesConnection) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[417] + 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 PartyMarginModesConnection.ProtoReflect.Descriptor instead. +func (*PartyMarginModesConnection) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{417} +} + +func (x *PartyMarginModesConnection) GetEdges() []*PartyMarginModeEdge { + if x != nil { + return x.Edges + } + return nil +} + +func (x *PartyMarginModesConnection) GetPageInfo() *PageInfo { + if x != nil { + return x.PageInfo + } + return nil +} + +// Party margin mode information and corresponding cursor. +type PartyMarginModeEdge struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Party margin mode data. + Node *PartyMarginMode `protobuf:"bytes,1,opt,name=node,proto3" json:"node,omitempty"` + // Cursor that can be used to fetch further pages. + Cursor string `protobuf:"bytes,2,opt,name=cursor,proto3" json:"cursor,omitempty"` +} + +func (x *PartyMarginModeEdge) Reset() { + *x = PartyMarginModeEdge{} + if protoimpl.UnsafeEnabled { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[418] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PartyMarginModeEdge) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PartyMarginModeEdge) ProtoMessage() {} + +func (x *PartyMarginModeEdge) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[418] + 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 PartyMarginModeEdge.ProtoReflect.Descriptor instead. +func (*PartyMarginModeEdge) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{418} +} + +func (x *PartyMarginModeEdge) GetNode() *PartyMarginMode { + if x != nil { + return x.Node + } + return nil +} + +func (x *PartyMarginModeEdge) GetCursor() string { + if x != nil { + return x.Cursor + } + return "" +} + +// Margin mode selected for the given party and market. +type PartyMarginMode struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Unique ID of the market. + MarketId string `protobuf:"bytes,1,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` + // Unique ID of the party. + PartyId string `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` + // Selected margin mode. + MarginMode vega.MarginMode `protobuf:"varint,3,opt,name=margin_mode,json=marginMode,proto3,enum=vega.MarginMode" json:"margin_mode,omitempty"` + // Margin factor for the market. Isolated mode only. + MarginFactor *string `protobuf:"bytes,4,opt,name=margin_factor,json=marginFactor,proto3,oneof" json:"margin_factor,omitempty"` + // Minimum theoretical margin factor for the market. Isolated mode only. + MinTheoreticalMarginFactor *string `protobuf:"bytes,5,opt,name=min_theoretical_margin_factor,json=minTheoreticalMarginFactor,proto3,oneof" json:"min_theoretical_margin_factor,omitempty"` + // Maximum theoretical leverage for the market. Isolated mode only. + MaxTheoreticalLeverage *string `protobuf:"bytes,6,opt,name=max_theoretical_leverage,json=maxTheoreticalLeverage,proto3,oneof" json:"max_theoretical_leverage,omitempty"` + // Epoch at which the update happened. + AtEpoch uint64 `protobuf:"varint,7,opt,name=at_epoch,json=atEpoch,proto3" json:"at_epoch,omitempty"` +} + +func (x *PartyMarginMode) Reset() { + *x = PartyMarginMode{} + if protoimpl.UnsafeEnabled { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[419] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PartyMarginMode) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PartyMarginMode) ProtoMessage() {} + +func (x *PartyMarginMode) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[419] + 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 PartyMarginMode.ProtoReflect.Descriptor instead. +func (*PartyMarginMode) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{419} +} + +func (x *PartyMarginMode) GetMarketId() string { + if x != nil { + return x.MarketId + } + return "" +} + +func (x *PartyMarginMode) GetPartyId() string { + if x != nil { + return x.PartyId + } + return "" +} + +func (x *PartyMarginMode) GetMarginMode() vega.MarginMode { + if x != nil { + return x.MarginMode + } + return vega.MarginMode(0) +} + +func (x *PartyMarginMode) GetMarginFactor() string { + if x != nil && x.MarginFactor != nil { + return *x.MarginFactor + } + return "" +} + +func (x *PartyMarginMode) GetMinTheoreticalMarginFactor() string { + if x != nil && x.MinTheoreticalMarginFactor != nil { + return *x.MinTheoreticalMarginFactor + } + return "" +} + +func (x *PartyMarginMode) GetMaxTheoreticalLeverage() string { + if x != nil && x.MaxTheoreticalLeverage != nil { + return *x.MaxTheoreticalLeverage + } + return "" +} + +func (x *PartyMarginMode) GetAtEpoch() uint64 { + if x != nil { + return x.AtEpoch + } + return 0 +} + +// Time weighted notional position for a party and asset at a given epoch. It is used as a metric to calculate whether +// the party is eligible for receiving a reward. +type TimeWeightedNotionalPosition struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Asset ID for the settlement asset associated with the position. + AssetId string `protobuf:"bytes,1,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty"` + // Party ID for the party associated with the position. + PartyId string `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` + // Game ID for the game associated with the position. + GameId string `protobuf:"bytes,3,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` + // Epoch at which the time weighted notional position is calculated. + AtEpoch uint64 `protobuf:"varint,4,opt,name=at_epoch,json=atEpoch,proto3" json:"at_epoch,omitempty"` + // Time weighted notional position for the party and asset. + TimeWeightedNotionalPosition string `protobuf:"bytes,5,opt,name=time_weighted_notional_position,json=timeWeightedNotionalPosition,proto3" json:"time_weighted_notional_position,omitempty"` + // Vega time of the block in which the last position update occurred. + LastUpdated int64 `protobuf:"varint,6,opt,name=last_updated,json=lastUpdated,proto3" json:"last_updated,omitempty"` +} + +func (x *TimeWeightedNotionalPosition) Reset() { + *x = TimeWeightedNotionalPosition{} + if protoimpl.UnsafeEnabled { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[420] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TimeWeightedNotionalPosition) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TimeWeightedNotionalPosition) ProtoMessage() {} + +func (x *TimeWeightedNotionalPosition) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[420] + 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 TimeWeightedNotionalPosition.ProtoReflect.Descriptor instead. +func (*TimeWeightedNotionalPosition) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{420} +} + +func (x *TimeWeightedNotionalPosition) GetAssetId() string { + if x != nil { + return x.AssetId + } + return "" +} + +func (x *TimeWeightedNotionalPosition) GetPartyId() string { + if x != nil { + return x.PartyId + } + return "" +} + +func (x *TimeWeightedNotionalPosition) GetGameId() string { + if x != nil { + return x.GameId + } + return "" +} + +func (x *TimeWeightedNotionalPosition) GetAtEpoch() uint64 { + if x != nil { + return x.AtEpoch + } + return 0 +} + +func (x *TimeWeightedNotionalPosition) GetTimeWeightedNotionalPosition() string { + if x != nil { + return x.TimeWeightedNotionalPosition + } + return "" +} + +func (x *TimeWeightedNotionalPosition) GetLastUpdated() int64 { + if x != nil { + return x.LastUpdated + } + return 0 +} + +// Request to retrieve the time weighted notional position for a party and asset. +// If no epoch is given, the time weighted notional position at the end of the most recently completed epoch will be returned. +// If an epoch is given, the time weighted notional position achieved by the end of the given epoch will be returned. +type GetTimeWeightedNotionalPositionRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Asset ID to filter for. + AssetId string `protobuf:"bytes,1,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty"` + // Party ID to filter for. + PartyId string `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` + // Game ID to filter for. + GameId string `protobuf:"bytes,3,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` + // Epoch to filter for. + AtEpoch *uint64 `protobuf:"varint,4,opt,name=at_epoch,json=atEpoch,proto3,oneof" json:"at_epoch,omitempty"` +} + +func (x *GetTimeWeightedNotionalPositionRequest) Reset() { + *x = GetTimeWeightedNotionalPositionRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[421] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetTimeWeightedNotionalPositionRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTimeWeightedNotionalPositionRequest) ProtoMessage() {} + +func (x *GetTimeWeightedNotionalPositionRequest) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[421] + 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 GetTimeWeightedNotionalPositionRequest.ProtoReflect.Descriptor instead. +func (*GetTimeWeightedNotionalPositionRequest) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{421} +} + +func (x *GetTimeWeightedNotionalPositionRequest) GetAssetId() string { + if x != nil { + return x.AssetId + } + return "" +} + +func (x *GetTimeWeightedNotionalPositionRequest) GetPartyId() string { + if x != nil { + return x.PartyId + } + return "" +} + +func (x *GetTimeWeightedNotionalPositionRequest) GetGameId() string { + if x != nil { + return x.GameId + } + return "" +} + +func (x *GetTimeWeightedNotionalPositionRequest) GetAtEpoch() uint64 { + if x != nil && x.AtEpoch != nil { + return *x.AtEpoch + } + return 0 +} + +// Response containing the time weighted notional position for a party and asset. +type GetTimeWeightedNotionalPositionResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Time weighted notional position for the party and asset. + TimeWeightedNotionalPosition *TimeWeightedNotionalPosition `protobuf:"bytes,1,opt,name=time_weighted_notional_position,json=timeWeightedNotionalPosition,proto3" json:"time_weighted_notional_position,omitempty"` +} + +func (x *GetTimeWeightedNotionalPositionResponse) Reset() { + *x = GetTimeWeightedNotionalPositionResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[422] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetTimeWeightedNotionalPositionResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTimeWeightedNotionalPositionResponse) ProtoMessage() {} + +func (x *GetTimeWeightedNotionalPositionResponse) ProtoReflect() protoreflect.Message { + mi := &file_data_node_api_v2_trading_data_proto_msgTypes[422] + 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 GetTimeWeightedNotionalPositionResponse.ProtoReflect.Descriptor instead. +func (*GetTimeWeightedNotionalPositionResponse) Descriptor() ([]byte, []int) { + return file_data_node_api_v2_trading_data_proto_rawDescGZIP(), []int{422} +} + +func (x *GetTimeWeightedNotionalPositionResponse) GetTimeWeightedNotionalPosition() *TimeWeightedNotionalPosition { + if x != nil { + return x.TimeWeightedNotionalPosition + } + return nil +} + +var File_data_node_api_v2_trading_data_proto protoreflect.FileDescriptor + +var file_data_node_api_v2_trading_data_proto_rawDesc = []byte{ + 0x0a, 0x23, 0x64, 0x61, 0x74, 0x61, 0x2d, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x76, 0x32, 0x2f, 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, + 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x62, 0x6f, 0x64, 0x79, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, + 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x11, 0x76, 0x65, 0x67, 0x61, 0x2f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x29, 0x76, 0x65, 0x67, 0x61, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, + 0x61, 0x6e, 0x64, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, + 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x1b, 0x76, 0x65, 0x67, 0x61, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x76, 0x31, + 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x15, 0x76, + 0x65, 0x67, 0x61, 0x2f, 0x67, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x76, 0x65, 0x67, 0x61, 0x2f, 0x6d, 0x61, 0x72, 0x6b, 0x65, + 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x11, 0x76, 0x65, 0x67, 0x61, 0x2f, 0x6f, + 0x72, 0x61, 0x63, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0f, 0x76, 0x65, 0x67, + 0x61, 0x2f, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd9, 0x01, 0x0a, 0x0a, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x05, 0x66, 0x69, 0x72, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x05, 0x66, 0x69, 0x72, 0x73, 0x74, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, @@ -26071,4482 +26638,4577 @@ var file_data_node_api_v2_trading_data_proto_rawDesc = []byte{ 0x34, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, - 0x6f, 0x72, 0x64, 0x65, 0x72, 0x22, 0xb2, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, - 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, - 0x01, 0x12, 0x3d, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x46, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x48, 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, - 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x09, 0x0a, 0x07, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0xcd, 0x02, 0x0a, 0x0f, 0x53, - 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x32, - 0x0a, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, - 0x32, 0x16, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x65, 0x73, 0x12, 0x4b, 0x0a, 0x11, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x5f, 0x73, 0x74, 0x72, - 0x61, 0x74, 0x65, 0x67, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1e, 0x2e, - 0x76, 0x65, 0x67, 0x61, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x2e, 0x45, - 0x78, 0x70, 0x69, 0x72, 0x79, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x10, 0x65, - 0x78, 0x70, 0x69, 0x72, 0x79, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x65, 0x73, 0x12, - 0x3e, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, - 0x00, 0x52, 0x09, 0x64, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, - 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x20, 0x0a, 0x09, 0x6c, - 0x69, 0x76, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, - 0x52, 0x08, 0x6c, 0x69, 0x76, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, - 0x0b, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x0c, 0x0a, 0x0a, - 0x5f, 0x6c, 0x69, 0x76, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x22, 0x5b, 0x0a, 0x0d, 0x53, 0x74, - 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x45, 0x64, 0x67, 0x65, 0x12, 0x32, 0x0a, 0x04, 0x6e, - 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x76, 0x65, 0x67, 0x61, - 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x83, 0x01, 0x0a, 0x13, 0x53, 0x74, 0x6f, 0x70, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x34, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, - 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, - 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x56, 0x0a, - 0x16, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x73, 0x22, 0xa3, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, - 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x3a, 0x02, 0x18, 0x01, 0x42, 0x0d, 0x0a, 0x0b, - 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x5e, 0x0a, 0x15, 0x4c, - 0x69, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x09, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x02, 0x18, 0x01, 0x22, 0x4d, 0x0a, 0x0f, 0x50, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1b, - 0x0a, 0x09, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, 0x22, 0xa4, 0x01, 0x0a, 0x17, 0x4c, - 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, - 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x22, 0x5d, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x50, 0x6f, 0x73, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, - 0x09, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x22, 0x4a, 0x0a, 0x0c, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x64, 0x67, 0x65, - 0x12, 0x22, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, - 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x22, 0xbb, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, + 0x6d, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x65, 0x61, 0x6d, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x01, 0x52, 0x06, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, + 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x22, 0x4c, 0x0a, 0x14, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x53, + 0x63, 0x6f, 0x72, 0x65, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x67, + 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x67, + 0x61, 0x6d, 0x65, 0x49, 0x64, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, + 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, + 0x73, 0x22, 0x68, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x65, 0x61, + 0x6d, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x4a, 0x0a, 0x0b, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x53, + 0x63, 0x6f, 0x72, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x0a, 0x74, 0x65, 0x61, 0x6d, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x22, 0x8d, 0x01, 0x0a, 0x18, + 0x47, 0x61, 0x6d, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x65, + 0x61, 0x6d, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, + 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x5f, 0x0a, 0x12, 0x47, + 0x61, 0x6d, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x45, 0x64, 0x67, + 0x65, 0x12, 0x31, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x81, 0x01, 0x0a, - 0x12, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x64, 0x67, - 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, - 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, - 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, - 0x22, 0x76, 0x0a, 0x17, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x08, 0x70, - 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x6d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, - 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, - 0x09, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x22, 0xa9, 0x01, 0x0a, 0x18, 0x4f, 0x62, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x61, 0x67, 0x65, 0x48, 0x00, - 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x3c, 0x0a, 0x07, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x48, 0x00, 0x52, - 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x61, 0x0a, 0x14, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x61, 0x67, 0x65, 0x12, 0x2c, 0x0a, 0x09, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x0e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x09, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x61, - 0x73, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6c, - 0x61, 0x73, 0x74, 0x50, 0x61, 0x67, 0x65, 0x22, 0x3f, 0x0a, 0x0f, 0x50, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x09, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, - 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xd9, 0x02, 0x0a, 0x11, 0x4c, 0x65, 0x64, - 0x67, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x37, - 0x0a, 0x18, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x6f, 0x6e, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x15, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x4f, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x4e, 0x0a, 0x13, 0x66, 0x72, 0x6f, 0x6d, 0x5f, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, - 0x6c, 0x74, 0x65, 0x72, 0x52, 0x11, 0x66, 0x72, 0x6f, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x4a, 0x0a, 0x11, 0x74, 0x6f, 0x5f, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x52, 0x0f, 0x74, 0x6f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x12, 0x39, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x76, 0x65, - 0x67, 0x61, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x24, - 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x49, - 0x64, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, - 0x72, 0x5f, 0x69, 0x64, 0x22, 0xfa, 0x05, 0x0a, 0x15, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, - 0x74, 0x65, 0x64, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x1c, - 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1a, 0x0a, 0x08, - 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x37, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x12, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, - 0x79, 0x70, 0x65, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x1e, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x61, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, - 0x01, 0x12, 0x3d, 0x0a, 0x11, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x76, - 0x65, 0x67, 0x61, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x0f, 0x66, 0x72, 0x6f, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x39, 0x0a, 0x0f, 0x74, 0x6f, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x76, 0x65, 0x67, 0x61, - 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x74, 0x6f, - 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x36, 0x0a, 0x15, 0x66, - 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x74, - 0x79, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x12, 0x66, 0x72, - 0x6f, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, - 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x13, 0x74, 0x6f, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x02, 0x52, 0x10, 0x74, 0x6f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x61, 0x72, - 0x74, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x16, 0x66, 0x72, 0x6f, 0x6d, 0x5f, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x13, 0x66, 0x72, 0x6f, 0x6d, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, - 0x01, 0x12, 0x34, 0x0a, 0x14, 0x74, 0x6f, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, - 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x04, 0x52, 0x11, 0x74, 0x6f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x61, 0x72, 0x6b, - 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x14, 0x66, 0x72, 0x6f, 0x6d, 0x5f, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, - 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x66, 0x72, 0x6f, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x74, 0x6f, 0x5f, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, - 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x74, 0x6f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x66, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x49, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x73, 0x73, - 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x42, - 0x16, 0x0a, 0x14, 0x5f, 0x74, 0x6f, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x70, - 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x66, 0x72, 0x6f, 0x6d, - 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, - 0x69, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x74, 0x6f, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x4a, 0x04, 0x08, 0x01, 0x10, - 0x02, 0x22, 0xf6, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, - 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, - 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x46, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, - 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, - 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x0a, - 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x01, 0x52, 0x09, - 0x64, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, - 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, - 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x22, 0xb9, 0x01, 0x0a, 0x1a, 0x45, - 0x78, 0x70, 0x6f, 0x72, 0x74, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x69, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x08, 0x70, 0x61, 0x72, - 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, - 0x02, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x08, 0x61, 0x73, - 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, - 0x61, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x0a, 0x64, 0x61, - 0x74, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x01, 0x52, 0x09, 0x64, 0x61, - 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, - 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x64, 0x61, 0x74, 0x65, - 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x76, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x65, - 0x64, 0x67, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x59, 0x0a, 0x0e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x5f, 0x65, 0x6e, - 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x67, - 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x45, 0x6e, - 0x74, 0x72, 0x69, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x0d, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0x71, - 0x0a, 0x1b, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x4c, 0x65, 0x64, 0x67, - 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x45, 0x64, 0x67, 0x65, 0x12, 0x3a, 0x0a, - 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x67, - 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, - 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, - 0x72, 0x22, 0x9f, 0x01, 0x0a, 0x21, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, - 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, - 0x74, 0x65, 0x64, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0xbd, 0x01, 0x0a, + 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x79, 0x53, 0x63, + 0x6f, 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x0a, 0x70, + 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, + 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, + 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x47, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x46, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x88, + 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x6a, 0x0a, 0x15, + 0x47, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x46, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x73, + 0x12, 0x19, 0x0a, 0x08, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x70, + 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, + 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x73, 0x22, 0x6c, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, + 0x47, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x74, 0x79, + 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x47, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x79, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x22, 0x8f, 0x01, 0x0a, 0x19, 0x47, 0x61, 0x6d, 0x65, 0x50, + 0x61, 0x72, 0x74, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x79, 0x53, + 0x63, 0x6f, 0x72, 0x65, 0x73, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, + 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, + 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x61, 0x0a, 0x13, 0x47, 0x61, 0x6d, 0x65, + 0x50, 0x61, 0x72, 0x74, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x45, 0x64, 0x67, 0x65, 0x12, + 0x32, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, + 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x61, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x04, 0x6e, + 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0xb2, 0x01, 0x0a, 0x15, + 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x22, 0xcd, 0x02, 0x0a, 0x0f, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x46, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x53, 0x74, + 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x08, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x4b, 0x0a, 0x11, 0x65, 0x78, 0x70, 0x69, + 0x72, 0x79, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x2e, 0x45, 0x78, 0x70, 0x69, 0x72, 0x79, 0x53, 0x74, 0x72, 0x61, 0x74, + 0x65, 0x67, 0x79, 0x52, 0x10, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x53, 0x74, 0x72, 0x61, 0x74, + 0x65, 0x67, 0x69, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, + 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x65, + 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x09, 0x64, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, + 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, + 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, + 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, + 0x73, 0x12, 0x20, 0x0a, 0x09, 0x6c, 0x69, 0x76, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x08, 0x6c, 0x69, 0x76, 0x65, 0x4f, 0x6e, 0x6c, 0x79, + 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x6e, + 0x67, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6c, 0x69, 0x76, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, + 0x22, 0x5b, 0x0a, 0x0d, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x45, 0x64, 0x67, + 0x65, 0x12, 0x32, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, + 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x83, 0x01, + 0x0a, 0x13, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x22, 0xf3, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x6c, 0x61, - 0x6e, 0x63, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x36, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, - 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, - 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x0a, 0x64, - 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x01, 0x52, 0x09, 0x64, - 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, - 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x64, - 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x66, 0x0a, 0x1a, 0x4c, 0x69, 0x73, - 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x08, 0x62, 0x61, 0x6c, 0x61, 0x6e, - 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x67, 0x67, 0x72, - 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, - 0x73, 0x22, 0xac, 0x02, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, - 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, - 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, - 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, - 0x62, 0x79, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, + 0x6e, 0x66, 0x6f, 0x22, 0x56, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x70, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, + 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x22, 0xa3, 0x01, 0x0a, 0x14, + 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, + 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x0a, + 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, + 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x3a, 0x02, + 0x18, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x5e, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x09, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x09, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x02, 0x18, + 0x01, 0x22, 0x4d, 0x0a, 0x0f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x46, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, + 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, + 0x22, 0xa4, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x50, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x06, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x5d, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x41, + 0x6c, 0x6c, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x09, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x4a, 0x0a, 0x0c, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x45, 0x64, 0x67, 0x65, 0x12, 0x22, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, + 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, + 0x6f, 0x72, 0x22, 0x81, 0x01, 0x0a, 0x12, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x05, 0x65, 0x64, 0x67, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, + 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, + 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x76, 0x0a, 0x17, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x88, 0x01, + 0x01, 0x12, 0x20, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, + 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, + 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x22, 0xa9, + 0x01, 0x0a, 0x18, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x08, 0x73, + 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, + 0x50, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, + 0x12, 0x3c, 0x0a, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x73, 0x48, 0x00, 0x52, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x42, 0x0a, + 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x61, 0x0a, 0x14, 0x50, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x50, 0x61, + 0x67, 0x65, 0x12, 0x2c, 0x0a, 0x09, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50, 0x6f, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x61, 0x67, 0x65, 0x22, 0x3f, 0x0a, + 0x0f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, + 0x12, 0x2c, 0x0a, 0x09, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xd9, + 0x02, 0x0a, 0x11, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x46, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x12, 0x37, 0x0a, 0x18, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x6f, 0x6e, + 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x4f, 0x6e, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x4e, 0x0a, + 0x13, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x11, 0x66, 0x72, 0x6f, 0x6d, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x4a, 0x0a, + 0x11, 0x74, 0x6f, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x79, - 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, + 0x6e, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x0f, 0x74, 0x6f, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x39, 0x0a, 0x0e, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x0e, 0x32, 0x12, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, + 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, + 0x79, 0x70, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, + 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x22, 0xfa, 0x05, 0x0a, 0x15, 0x41, + 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x37, + 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x61, 0x73, 0x73, + 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x11, 0x66, 0x72, 0x6f, 0x6d, 0x5f, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0f, 0x66, 0x72, 0x6f, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x0f, 0x74, 0x6f, 0x5f, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x11, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x0d, 0x74, 0x6f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x36, 0x0a, 0x15, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x01, 0x52, 0x12, 0x66, 0x72, 0x6f, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, + 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x13, 0x74, 0x6f, 0x5f, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x10, 0x74, 0x6f, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, + 0x16, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, + 0x13, 0x66, 0x72, 0x6f, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x61, 0x72, 0x6b, + 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x14, 0x74, 0x6f, 0x5f, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x11, 0x74, 0x6f, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, + 0x14, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x62, 0x61, + 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x66, 0x72, 0x6f, + 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, + 0x2c, 0x0a, 0x12, 0x74, 0x6f, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x62, 0x61, + 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x74, 0x6f, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1f, 0x0a, + 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x49, 0x64, 0x42, 0x0b, + 0x0a, 0x09, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x18, 0x0a, 0x16, 0x5f, + 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x72, + 0x74, 0x79, 0x5f, 0x69, 0x64, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x74, 0x6f, 0x5f, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x42, 0x19, 0x0a, + 0x17, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x74, 0x6f, 0x5f, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, + 0x64, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x22, 0xf6, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, + 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x01, 0x52, 0x09, 0x64, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, - 0x22, 0x65, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x48, 0x69, - 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, + 0x22, 0xb9, 0x01, 0x0a, 0x1a, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x4c, 0x65, 0x64, 0x67, 0x65, + 0x72, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1f, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, + 0x12, 0x1e, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x61, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, + 0x12, 0x3e, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, + 0x48, 0x01, 0x52, 0x09, 0x64, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x88, 0x01, 0x01, + 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, + 0x0b, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x76, 0x0a, 0x19, + 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x59, 0x0a, 0x0e, 0x6c, 0x65, 0x64, + 0x67, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x4c, 0x65, + 0x64, 0x67, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x45, 0x6e, 0x74, + 0x72, 0x69, 0x65, 0x73, 0x22, 0x71, 0x0a, 0x1b, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, + 0x65, 0x64, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x45, + 0x64, 0x67, 0x65, 0x12, 0x3a, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x4c, 0x65, + 0x64, 0x67, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x9f, 0x01, 0x0a, 0x21, 0x41, 0x67, 0x67, 0x72, + 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, + 0x69, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, + 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x41, + 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x45, + 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, + 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xf3, 0x01, 0x0a, 0x19, 0x4c, 0x69, + 0x73, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, + 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, + 0x01, 0x12, 0x3e, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, + 0x65, 0x48, 0x01, 0x52, 0x09, 0x64, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x88, 0x01, + 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x22, + 0x66, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x08, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x62, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x67, 0x0a, 0x15, 0x41, 0x67, 0x67, 0x72, 0x65, - 0x67, 0x61, 0x74, 0x65, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x45, 0x64, 0x67, 0x65, - 0x12, 0x36, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, + 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x22, 0xac, 0x02, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x42, + 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x08, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x62, 0x79, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, - 0x63, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, - 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, - 0x22, 0x93, 0x01, 0x0a, 0x1b, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x42, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x3c, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x42, 0x61, 0x6c, 0x61, - 0x6e, 0x63, 0x65, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, - 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, - 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x9e, 0x01, 0x0a, 0x0d, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x65, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x73, 0x73, 0x65, - 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x73, - 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, - 0x36, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x41, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, 0xa1, 0x02, 0x0a, 0x11, 0x41, 0x67, 0x67, 0x72, - 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1c, 0x0a, - 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x62, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, - 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, - 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x61, 0x73, 0x73, 0x65, 0x74, - 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, - 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, - 0x76, 0x65, 0x67, 0x61, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x48, 0x03, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x88, - 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x42, - 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, - 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3b, 0x0a, 0x1a, 0x4f, - 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x44, 0x65, 0x70, - 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, 0x22, 0x53, 0x0a, 0x1b, 0x4f, 0x62, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x44, 0x65, 0x70, 0x74, 0x68, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x0c, 0x6d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x5f, 0x64, 0x65, 0x70, 0x74, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, + 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x07, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x42, 0x79, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x65, + 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x44, + 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x01, 0x52, 0x09, 0x64, 0x61, 0x74, 0x65, + 0x52, 0x61, 0x6e, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x64, 0x61, 0x74, 0x65, + 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x65, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6c, + 0x61, 0x6e, 0x63, 0x65, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x08, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, + 0x65, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x67, 0x0a, + 0x15, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, + 0x63, 0x65, 0x45, 0x64, 0x67, 0x65, 0x12, 0x36, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, + 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x93, 0x01, 0x0a, 0x1b, 0x41, 0x67, 0x67, 0x72, 0x65, + 0x67, 0x61, 0x74, 0x65, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, + 0x65, 0x64, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, + 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, + 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x9e, 0x01, 0x0a, + 0x0d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x19, + 0x0a, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x61, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x72, + 0x74, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, + 0x72, 0x74, 0x79, 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, + 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x72, 0x6b, + 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x36, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x76, + 0x65, 0x67, 0x61, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x0c, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, 0xa1, 0x02, + 0x0a, 0x11, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x64, 0x42, 0x61, 0x6c, 0x61, + 0x6e, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x08, 0x70, + 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x61, + 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, + 0x07, 0x61, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x6d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, + 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, + 0x0c, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x48, 0x03, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x61, 0x72, + 0x74, 0x79, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, + 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, + 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x22, 0x3b, 0x0a, 0x1a, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x6b, + 0x65, 0x74, 0x73, 0x44, 0x65, 0x70, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, 0x22, 0x53, + 0x0a, 0x1b, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, + 0x44, 0x65, 0x70, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, + 0x0c, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x70, 0x74, 0x68, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, + 0x74, 0x44, 0x65, 0x70, 0x74, 0x68, 0x52, 0x0b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x65, + 0x70, 0x74, 0x68, 0x22, 0x42, 0x0a, 0x21, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x73, 0x44, 0x65, 0x70, 0x74, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x72, 0x6b, + 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, 0x22, 0x55, 0x0a, 0x22, 0x4f, 0x62, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x44, 0x65, 0x70, 0x74, 0x68, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, + 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x65, 0x70, 0x74, 0x68, - 0x52, 0x0b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x65, 0x70, 0x74, 0x68, 0x22, 0x42, 0x0a, - 0x21, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x44, - 0x65, 0x70, 0x74, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, - 0x73, 0x22, 0x55, 0x0a, 0x22, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x6b, - 0x65, 0x74, 0x73, 0x44, 0x65, 0x70, 0x74, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x65, 0x70, 0x74, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x52, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x22, 0x3a, 0x0a, 0x19, 0x4f, 0x62, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, - 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x49, 0x64, 0x73, 0x22, 0x4f, 0x0a, 0x1a, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x31, 0x0a, 0x0b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x44, 0x61, 0x74, 0x61, 0x22, 0x70, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, - 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x65, 0x70, 0x74, 0x68, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x08, 0x6d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x64, - 0x65, 0x70, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x61, - 0x78, 0x44, 0x65, 0x70, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x61, - 0x78, 0x5f, 0x64, 0x65, 0x70, 0x74, 0x68, 0x22, 0xda, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x4c, - 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x65, 0x70, 0x74, 0x68, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, - 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x03, 0x62, 0x75, 0x79, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x52, 0x03, 0x62, 0x75, 0x79, 0x12, 0x24, 0x0a, 0x04, 0x73, 0x65, 0x6c, - 0x6c, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50, - 0x72, 0x69, 0x63, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x04, 0x73, 0x65, 0x6c, 0x6c, 0x12, - 0x2a, 0x0a, 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, - 0x52, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x73, - 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x22, 0x1d, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, 0x74, 0x65, - 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x22, 0x53, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, - 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x0c, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x5f, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, - 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x6d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x73, 0x44, 0x61, 0x74, 0x61, 0x22, 0x3f, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x4c, - 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, - 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x22, 0x50, 0x0a, 0x1b, 0x47, 0x65, 0x74, - 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x22, 0x3a, + 0x0a, 0x19, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, 0x22, 0x4f, 0x0a, 0x1a, 0x4f, 0x62, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x0b, 0x6d, 0x61, 0x72, 0x6b, - 0x65, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, + 0x65, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, - 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x22, 0x99, 0x02, 0x0a, 0x1f, - 0x47, 0x65, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, - 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x21, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0e, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x88, 0x01, 0x01, - 0x12, 0x28, 0x0a, 0x0d, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x0c, 0x65, 0x6e, 0x64, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, - 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x02, 0x52, 0x0a, 0x70, - 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, - 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0x6a, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x4d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x42, - 0x79, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x0b, 0x6d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, - 0x61, 0x74, 0x61, 0x22, 0x4e, 0x0a, 0x0e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, - 0x61, 0x45, 0x64, 0x67, 0x65, 0x12, 0x24, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, + 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x22, 0x70, 0x0a, 0x1b, 0x47, + 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x65, + 0x70, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x09, 0x6d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, + 0x41, 0x01, 0x02, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x20, 0x0a, + 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x65, 0x70, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, + 0x48, 0x00, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x44, 0x65, 0x70, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, + 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x65, 0x70, 0x74, 0x68, 0x22, 0xda, 0x01, + 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, + 0x74, 0x44, 0x65, 0x70, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, + 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x03, 0x62, + 0x75, 0x79, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, + 0x50, 0x72, 0x69, 0x63, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x03, 0x62, 0x75, 0x79, 0x12, + 0x24, 0x0a, 0x04, 0x73, 0x65, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, + 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, + 0x04, 0x73, 0x65, 0x6c, 0x6c, 0x12, 0x2a, 0x0a, 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x74, 0x72, + 0x61, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, 0x67, 0x61, + 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, + 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x73, 0x65, 0x71, 0x75, + 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x1d, 0x0a, 0x1b, 0x4c, 0x69, + 0x73, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x53, 0x0a, 0x1c, 0x4c, 0x69, 0x73, + 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x0c, 0x6d, 0x61, 0x72, + 0x6b, 0x65, 0x74, 0x73, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x0b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x44, 0x61, 0x74, 0x61, 0x22, 0x3f, + 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, + 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x09, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x22, + 0x50, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, + 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, + 0x0a, 0x0b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, - 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, - 0x73, 0x6f, 0x72, 0x22, 0x85, 0x01, 0x0a, 0x14, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, - 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x05, - 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, - 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x9a, 0x06, 0x0a, 0x14, - 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x88, 0x01, - 0x01, 0x12, 0x40, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x44, - 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x08, 0x69, 0x73, 0x52, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x5f, - 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x03, 0x52, 0x09, 0x66, - 0x72, 0x6f, 0x6d, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x74, - 0x6f, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, - 0x07, 0x74, 0x6f, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x06, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x76, 0x65, - 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x48, 0x05, 0x52, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x05, 0x73, 0x63, 0x6f, - 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x53, 0x63, 0x6f, 0x70, 0x65, 0x48, 0x06, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x07, 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, - 0x42, 0x0a, 0x11, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x76, 0x65, 0x67, - 0x61, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x48, 0x08, 0x52, - 0x0f, 0x66, 0x72, 0x6f, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x0f, 0x74, 0x6f, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x76, - 0x65, 0x67, 0x61, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x48, - 0x09, 0x52, 0x0d, 0x74, 0x6f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x88, 0x01, 0x01, 0x22, 0x44, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x11, - 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x44, - 0x49, 0x56, 0x49, 0x44, 0x55, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x43, 0x4f, - 0x50, 0x45, 0x5f, 0x54, 0x45, 0x41, 0x4d, 0x10, 0x02, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x70, 0x75, - 0x62, 0x6b, 0x65, 0x79, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, - 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x74, 0x6f, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x42, 0x09, 0x0a, - 0x07, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, - 0x70, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x14, - 0x0a, 0x12, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x74, 0x6f, 0x5f, 0x61, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x5a, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x41, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x66, 0x65, 0x72, 0x73, 0x22, 0x76, 0x0a, 0x0c, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, - 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x34, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, - 0x52, 0x08, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x30, 0x0a, 0x04, 0x66, 0x65, - 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, - 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x65, 0x72, 0x46, 0x65, 0x65, 0x73, 0x52, 0x04, 0x66, 0x65, 0x65, 0x73, 0x22, 0x59, 0x0a, 0x0c, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x45, 0x64, 0x67, 0x65, 0x12, 0x31, 0x0a, 0x04, - 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x81, 0x01, 0x0a, 0x12, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, - 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, - 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x3b, 0x0a, 0x12, 0x47, - 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x25, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x0a, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x49, 0x64, 0x22, 0x59, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x42, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x64, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, - 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x4e, - 0x6f, 0x64, 0x65, 0x22, 0x19, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x47, - 0x0a, 0x18, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x6d, 0x69, - 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x76, 0x65, 0x67, - 0x61, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, - 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x22, 0x3f, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x43, - 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x52, 0x65, + 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, + 0x61, 0x22, 0x99, 0x02, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, + 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x08, - 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x22, 0x4d, 0x0a, 0x12, 0x49, 0x6e, 0x74, 0x65, - 0x72, 0x76, 0x61, 0x6c, 0x54, 0x6f, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1a, - 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x61, - 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, - 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x75, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x43, - 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x15, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, - 0x61, 0x6c, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, - 0x54, 0x6f, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x64, 0x52, 0x12, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x76, 0x61, 0x6c, 0x54, 0x6f, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x64, 0x22, 0xc3, - 0x01, 0x0a, 0x06, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, - 0x1f, 0x0a, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x68, 0x69, 0x67, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x68, 0x69, 0x67, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x6f, 0x77, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6c, 0x6f, 0x77, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, - 0x6f, 0x73, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x73, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x6f, 0x74, 0x69, - 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6e, 0x6f, 0x74, 0x69, - 0x6f, 0x6e, 0x61, 0x6c, 0x22, 0x3d, 0x0a, 0x18, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x43, - 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x21, 0x0a, 0x09, 0x63, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x08, 0x63, 0x61, 0x6e, 0x64, 0x6c, - 0x65, 0x49, 0x64, 0x22, 0x4c, 0x0a, 0x19, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x43, 0x61, - 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x2f, 0x0a, 0x06, 0x63, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x06, 0x63, 0x61, 0x6e, 0x64, 0x6c, - 0x65, 0x22, 0xdb, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, - 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x09, 0x63, - 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, - 0xe2, 0x41, 0x01, 0x02, 0x52, 0x08, 0x63, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x25, - 0x0a, 0x0e, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x66, 0x72, 0x6f, 0x6d, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x6f, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x74, 0x6f, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x48, 0x00, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, + 0x0c, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x88, 0x01, 0x01, + 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x48, 0x02, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, + 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0x6a, 0x0a, + 0x20, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, + 0x73, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x46, 0x0a, 0x0b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, + 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x22, 0x4e, 0x0a, 0x0e, 0x4d, 0x61, 0x72, + 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x45, 0x64, 0x67, 0x65, 0x12, 0x24, 0x0a, 0x04, 0x6e, + 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, + 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x6e, 0x6f, 0x64, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x85, 0x01, 0x0a, 0x14, 0x4d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x45, 0x64, + 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, - 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, 0x67, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, - 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, - 0x59, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x61, 0x74, - 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x07, 0x63, 0x61, 0x6e, - 0x64, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x61, 0x6e, - 0x64, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x07, 0x63, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x22, 0x51, 0x0a, 0x0a, 0x43, 0x61, - 0x6e, 0x64, 0x6c, 0x65, 0x45, 0x64, 0x67, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x52, + 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x22, 0x9a, 0x06, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x70, 0x75, + 0x62, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x70, 0x75, + 0x62, 0x6b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x65, 0x72, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, + 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01, 0x52, 0x0a, 0x70, 0x61, + 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x69, + 0x73, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, + 0x52, 0x08, 0x69, 0x73, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, + 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x04, 0x48, 0x03, 0x52, 0x09, 0x66, 0x72, 0x6f, 0x6d, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x88, 0x01, + 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x74, 0x6f, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x07, 0x74, 0x6f, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x88, 0x01, + 0x01, 0x12, 0x3c, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x48, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, + 0x46, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x48, 0x06, 0x52, 0x05, 0x73, + 0x63, 0x6f, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x07, 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, + 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x11, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x11, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x48, 0x08, 0x52, 0x0f, 0x66, 0x72, 0x6f, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x0f, 0x74, 0x6f, 0x5f, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x48, 0x09, 0x52, 0x0d, 0x74, 0x6f, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x22, 0x44, 0x0a, 0x05, 0x53, 0x63, 0x6f, + 0x70, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x43, 0x4f, + 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x44, 0x49, 0x56, 0x49, 0x44, 0x55, 0x41, 0x4c, 0x10, 0x01, 0x12, + 0x0e, 0x0a, 0x0a, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x54, 0x45, 0x41, 0x4d, 0x10, 0x02, 0x42, + 0x09, 0x0a, 0x07, 0x5f, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, + 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x69, 0x73, + 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x66, 0x72, 0x6f, 0x6d, + 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x74, 0x6f, 0x5f, 0x65, 0x70, + 0x6f, 0x63, 0x68, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x08, + 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x67, 0x61, 0x6d, + 0x65, 0x5f, 0x69, 0x64, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x74, + 0x6f, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x5a, + 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x22, 0x76, 0x0a, 0x0c, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x34, 0x0a, 0x08, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, + 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x08, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, + 0x12, 0x30, 0x0a, 0x04, 0x66, 0x65, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x73, 0x52, 0x04, 0x66, 0x65, + 0x65, 0x73, 0x22, 0x59, 0x0a, 0x0c, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x45, 0x64, + 0x67, 0x65, 0x12, 0x31, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x81, 0x01, - 0x0a, 0x14, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x45, 0x64, + 0x0a, 0x12, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x22, 0xc6, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6f, 0x74, 0x65, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, - 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, - 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0a, 0x70, - 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0a, - 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x02, 0x52, - 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0b, - 0x0a, 0x09, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, - 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, - 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x4a, 0x0a, 0x11, 0x4c, 0x69, - 0x73, 0x74, 0x56, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x35, 0x0a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x56, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x05, 0x76, 0x6f, 0x74, 0x65, 0x73, 0x22, 0x42, 0x0a, 0x08, 0x56, 0x6f, 0x74, 0x65, 0x45, 0x64, - 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0a, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x56, 0x6f, 0x74, 0x65, 0x52, 0x04, 0x6e, 0x6f, - 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x79, 0x0a, 0x0e, 0x56, 0x6f, - 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x05, - 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x6f, - 0x74, 0x65, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, - 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x78, 0x0a, 0x13, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x6f, 0x22, 0x3b, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, + 0x01, 0x02, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x49, 0x64, 0x22, 0x59, + 0x0a, 0x13, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, + 0x72, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0c, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x22, 0x19, 0x0a, 0x17, 0x47, 0x65, 0x74, + 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x22, 0x47, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x2b, 0x0a, 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x06, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x22, 0x3f, 0x0a, + 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x76, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x09, 0x6d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, + 0xe2, 0x41, 0x01, 0x02, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x22, 0x4d, + 0x0a, 0x12, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x54, 0x6f, 0x43, 0x61, 0x6e, 0x64, + 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, + 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x75, 0x0a, + 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x76, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x15, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x61, 0x6e, 0x64, + 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x54, 0x6f, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x64, + 0x52, 0x12, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x54, 0x6f, 0x43, 0x61, 0x6e, 0x64, + 0x6c, 0x65, 0x49, 0x64, 0x22, 0xc3, 0x01, 0x0a, 0x06, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6c, 0x61, 0x73, 0x74, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x69, 0x67, 0x68, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x69, 0x67, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x6f, + 0x77, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6c, 0x6f, 0x77, 0x12, 0x12, 0x0a, 0x04, + 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6f, 0x70, 0x65, 0x6e, + 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x6e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x08, 0x6e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x22, 0x3d, 0x0a, 0x18, 0x4f, 0x62, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x09, 0x63, 0x61, 0x6e, 0x64, 0x6c, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, + 0x08, 0x63, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x4c, 0x0a, 0x19, 0x4f, 0x62, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x63, 0x61, 0x6e, 0x64, 0x6c, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x52, + 0x06, 0x63, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x22, 0xdb, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, + 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x21, 0x0a, 0x09, 0x63, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x08, 0x63, 0x61, 0x6e, 0x64, + 0x6c, 0x65, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x66, 0x72, + 0x6f, 0x6d, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x0c, 0x74, + 0x6f, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0b, 0x74, 0x6f, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x40, + 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, + 0x00, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, + 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4a, + 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, 0x59, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6e, + 0x64, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x3f, 0x0a, 0x07, 0x63, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x63, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x73, + 0x22, 0x51, 0x0a, 0x0a, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x45, 0x64, 0x67, 0x65, 0x12, 0x2b, + 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, + 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, + 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, + 0x73, 0x6f, 0x72, 0x22, 0x81, 0x01, 0x0a, 0x14, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x61, + 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x05, + 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x61, + 0x6e, 0x64, 0x6c, 0x65, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, + 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, + 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xc6, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, 0x88, - 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x42, - 0x0e, 0x0a, 0x0c, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x22, - 0x36, 0x0a, 0x14, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x56, 0x6f, 0x74, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x04, 0x76, 0x6f, 0x74, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x56, 0x6f, 0x74, - 0x65, 0x52, 0x04, 0x76, 0x6f, 0x74, 0x65, 0x22, 0xea, 0x01, 0x0a, 0x2a, 0x4c, 0x69, 0x73, 0x74, - 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, - 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 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, - 0x1c, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x12, 0x1b, 0x0a, - 0x09, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x53, 0x65, 0x71, 0x12, 0x3b, 0x0a, 0x0a, 0x70, 0x61, - 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x63, 0x68, 0x61, - 0x69, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x63, 0x68, 0x61, 0x69, - 0x6e, 0x5f, 0x69, 0x64, 0x22, 0x7c, 0x0a, 0x2b, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x52, 0x43, 0x32, + 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x48, 0x02, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, + 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, + 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x4a, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x73, 0x22, 0x42, 0x0a, 0x08, + 0x56, 0x6f, 0x74, 0x65, 0x45, 0x64, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x56, 0x6f, + 0x74, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, + 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, + 0x22, 0x79, 0x0a, 0x0e, 0x56, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x6f, 0x74, 0x65, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, + 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x78, 0x0a, 0x13, 0x4f, + 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x56, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x88, + 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, + 0x73, 0x61, 0x6c, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x61, 0x72, + 0x74, 0x79, 0x5f, 0x69, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x22, 0x36, 0x0a, 0x14, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x56, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, + 0x04, 0x76, 0x6f, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x76, 0x65, + 0x67, 0x61, 0x2e, 0x56, 0x6f, 0x74, 0x65, 0x52, 0x04, 0x76, 0x6f, 0x74, 0x65, 0x22, 0xea, 0x01, + 0x0a, 0x2a, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, + 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x65, 0x64, 0x42, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x73, 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, 0x1c, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, + 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, + 0x74, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x73, 0x65, 0x71, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x53, 0x65, 0x71, + 0x12, 0x3b, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, + 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, + 0x09, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x22, 0x7c, 0x0a, 0x2b, 0x4c, 0x69, + 0x73, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, + 0x69, 0x67, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x07, 0x62, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x52, 0x43, + 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, + 0x41, 0x64, 0x64, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x22, 0x74, 0x0a, 0x1c, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x41, - 0x64, 0x64, 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, + 0x64, 0x64, 0x65, 0x64, 0x45, 0x64, 0x67, 0x65, 0x12, 0x3c, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, + 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x65, 0x64, + 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x81, + 0x01, 0x0a, 0x22, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, + 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x45, 0x64, 0x67, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, + 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x65, 0x64, 0x42, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, + 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, + 0x6f, 0x72, 0x22, 0xa7, 0x01, 0x0a, 0x22, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x65, 0x64, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, - 0x65, 0x73, 0x22, 0x74, 0x0a, 0x1c, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, - 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x65, 0x64, 0x45, 0x64, - 0x67, 0x65, 0x12, 0x3c, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x28, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, - 0x69, 0x67, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x65, 0x64, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x81, 0x01, 0x0a, 0x22, 0x45, 0x52, 0x43, - 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, - 0x41, 0x64, 0x64, 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x45, 0x64, 0x67, 0x65, 0x12, - 0x43, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x49, 0x0a, 0x05, 0x65, 0x64, 0x67, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x52, 0x43, 0x32, 0x30, + 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x41, 0x64, + 0x64, 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, + 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, + 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xe9, 0x01, 0x0a, + 0x1e, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, + 0x67, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, + 0x1d, 0x0a, 0x0a, 0x6e, 0x65, 0x77, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x65, 0x77, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x12, 0x1c, + 0x0a, 0x09, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, + 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x6f, 0x6e, + 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, + 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x53, 0x65, 0x71, 0x12, 0x19, 0x0a, + 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x22, 0xec, 0x01, 0x0a, 0x2c, 0x4c, 0x69, 0x73, + 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, + 0x67, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x73, 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, 0x1c, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, + 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x53, 0x65, 0x71, 0x12, 0x3b, 0x0a, + 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, + 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x08, 0x63, 0x68, + 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, + 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x63, + 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x22, 0x80, 0x01, 0x0a, 0x2d, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, - 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x04, + 0x6e, 0x65, 0x72, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x07, 0x62, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x52, 0x43, + 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, + 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x22, 0x78, 0x0a, 0x1e, 0x45, 0x52, + 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, + 0x72, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x45, 0x64, 0x67, 0x65, 0x12, 0x3e, 0x0a, 0x04, + 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x76, 0x65, 0x67, + 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x52, 0x43, 0x32, + 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, + 0x72, 0x73, 0x6f, 0x72, 0x22, 0x85, 0x01, 0x0a, 0x24, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, + 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x45, 0x64, 0x67, 0x65, 0x12, 0x45, 0x0a, + 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x52, + 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, + 0x72, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0xa7, 0x01, 0x0a, - 0x22, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, - 0x67, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x49, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, - 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x65, 0x64, 0x42, 0x75, 0x6e, - 0x64, 0x6c, 0x65, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, - 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, - 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xe9, 0x01, 0x0a, 0x1e, 0x45, 0x52, 0x43, 0x32, 0x30, - 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x41, 0x64, - 0x64, 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x65, 0x77, - 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, - 0x65, 0x77, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x6d, - 0x69, 0x74, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x75, 0x62, - 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x69, - 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x70, - 0x6f, 0x63, 0x68, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, - 0x70, 0x6f, 0x63, 0x68, 0x53, 0x65, 0x71, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, - 0x49, 0x64, 0x22, 0xec, 0x01, 0x0a, 0x2c, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, - 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 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, 0x1c, 0x0a, 0x09, - 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x70, - 0x6f, 0x63, 0x68, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, - 0x70, 0x6f, 0x63, 0x68, 0x53, 0x65, 0x71, 0x12, 0x3b, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, - 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, - 0x64, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, - 0x64, 0x22, 0x80, 0x01, 0x0a, 0x2d, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, - 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x07, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0xab, 0x01, 0x0a, + 0x24, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, + 0x67, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4b, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x62, 0x75, 0x6e, - 0x64, 0x6c, 0x65, 0x73, 0x22, 0x78, 0x0a, 0x1e, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, - 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x64, 0x45, 0x64, 0x67, 0x65, 0x12, 0x3e, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, - 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, - 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x85, - 0x01, 0x0a, 0x24, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, - 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x42, 0x75, 0x6e, - 0x64, 0x6c, 0x65, 0x45, 0x64, 0x67, 0x65, 0x12, 0x45, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, - 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0xab, 0x01, 0x0a, 0x24, 0x45, 0x52, 0x43, 0x32, 0x30, - 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x4b, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, - 0x67, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, - 0x65, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, + 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, + 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xeb, 0x01, 0x0a, 0x20, 0x45, + 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, + 0x65, 0x72, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, + 0x1d, 0x0a, 0x0a, 0x6f, 0x6c, 0x64, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x6c, 0x64, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x12, 0x1c, + 0x0a, 0x09, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, + 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x6f, 0x6e, + 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, + 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x53, 0x65, 0x71, 0x12, 0x19, 0x0a, + 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x22, 0x41, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x45, + 0x52, 0x43, 0x32, 0x30, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x42, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x08, 0x61, 0x73, + 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, + 0x01, 0x02, 0x52, 0x07, 0x61, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x22, 0x9e, 0x01, 0x0a, 0x1f, + 0x47, 0x65, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x73, 0x73, 0x65, + 0x74, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x21, 0x0a, 0x0c, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x73, 0x73, 0x65, 0x74, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x76, 0x65, 0x67, 0x61, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x76, 0x65, 0x67, 0x61, 0x41, + 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, + 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x22, 0x4c, 0x0a, 0x23, + 0x47, 0x65, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x53, 0x65, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x0a, + 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, 0x22, 0xe8, 0x01, 0x0a, 0x24, 0x47, + 0x65, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x53, 0x65, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x73, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x73, 0x73, 0x65, 0x74, + 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x76, 0x65, 0x67, 0x61, 0x5f, 0x61, + 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x76, + 0x65, 0x67, 0x61, 0x41, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, + 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, + 0x12, 0x25, 0x0a, 0x0e, 0x6c, 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6c, 0x69, 0x66, 0x65, 0x74, 0x69, + 0x6d, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, + 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, + 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x73, 0x22, 0x4e, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x45, 0x52, 0x43, 0x32, + 0x30, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x41, 0x70, 0x70, 0x72, 0x6f, + 0x76, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0d, 0x77, 0x69, + 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, + 0x77, 0x61, 0x6c, 0x49, 0x64, 0x22, 0x86, 0x02, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x45, 0x52, 0x43, + 0x32, 0x30, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x41, 0x70, 0x70, 0x72, + 0x6f, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, + 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x61, 0x73, 0x73, 0x65, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x1e, 0x0a, + 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x25, 0x0a, + 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x26, 0x0a, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, + 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x38, + 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x08, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x22, 0x39, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4c, + 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x21, 0x0a, 0x05, 0x74, 0x72, 0x61, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x05, 0x74, 0x72, + 0x61, 0x64, 0x65, 0x22, 0x8c, 0x02, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x72, + 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, + 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, + 0x64, 0x73, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x6e, + 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, + 0x61, 0x6e, 0x67, 0x65, 0x48, 0x01, 0x52, 0x09, 0x64, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, + 0x65, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x6e, + 0x67, 0x65, 0x22, 0x4e, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x64, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x74, 0x72, 0x61, 0x64, + 0x65, 0x73, 0x22, 0x7b, 0x0a, 0x0f, 0x54, 0x72, 0x61, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x45, 0x64, 0x67, 0x65, + 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, + 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, + 0x44, 0x0a, 0x09, 0x54, 0x72, 0x61, 0x64, 0x65, 0x45, 0x64, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x04, + 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, 0x67, + 0x61, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, + 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x52, 0x0a, 0x14, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, + 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x1b, 0x0a, 0x09, + 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x73, 0x22, 0x3c, 0x0a, 0x15, 0x4f, 0x62, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x23, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, + 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x22, 0x42, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4f, 0x72, + 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x2a, 0x0a, 0x0e, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x0c, 0x6f, + 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x49, 0x64, 0x22, 0x4a, 0x0a, 0x15, 0x47, + 0x65, 0x74, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x0b, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x5f, 0x73, + 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, + 0x2e, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0a, 0x6f, 0x72, 0x61, + 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x22, 0x69, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x4f, + 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0x64, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, + 0x53, 0x70, 0x65, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, + 0x0c, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, + 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x6f, 0x72, 0x61, + 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x73, 0x22, 0xa6, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, + 0x74, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0e, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x5f, 0x73, 0x70, 0x65, + 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x6f, 0x72, + 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, + 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01, + 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, + 0x11, 0x0a, 0x0f, 0x5f, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x5f, + 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x60, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x0b, 0x6f, + 0x72, 0x61, 0x63, 0x6c, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x44, + 0x61, 0x74, 0x61, 0x22, 0x4e, 0x0a, 0x0e, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, + 0x63, 0x45, 0x64, 0x67, 0x65, 0x12, 0x24, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4f, 0x72, 0x61, 0x63, 0x6c, + 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, + 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, + 0x73, 0x6f, 0x72, 0x22, 0x86, 0x01, 0x0a, 0x15, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, + 0x65, 0x63, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, + 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, + 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, + 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, + 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x4e, 0x0a, 0x0e, + 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x45, 0x64, 0x67, 0x65, 0x12, 0x24, + 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, + 0x65, 0x67, 0x61, 0x2e, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, + 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x85, 0x01, 0x0a, + 0x14, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x44, 0x61, 0x74, + 0x61, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xeb, 0x01, 0x0a, 0x20, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, - 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x6c, 0x64, - 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, - 0x6c, 0x64, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x6d, - 0x69, 0x74, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x75, 0x62, - 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x69, - 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x70, - 0x6f, 0x63, 0x68, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, - 0x70, 0x6f, 0x63, 0x68, 0x53, 0x65, 0x71, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, - 0x49, 0x64, 0x22, 0x41, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4c, 0x69, - 0x73, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x07, 0x61, 0x73, - 0x73, 0x65, 0x74, 0x49, 0x64, 0x22, 0x9e, 0x01, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x45, 0x52, 0x43, - 0x32, 0x30, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x42, 0x75, 0x6e, 0x64, 0x6c, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x73, 0x73, - 0x65, 0x74, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x61, 0x73, 0x73, 0x65, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x0d, - 0x76, 0x65, 0x67, 0x61, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x76, 0x65, 0x67, 0x61, 0x41, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, - 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x22, 0x4c, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x45, 0x52, 0x43, - 0x32, 0x30, 0x53, 0x65, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, - 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, - 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, - 0x61, 0x6c, 0x49, 0x64, 0x22, 0xe8, 0x01, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x45, 0x52, 0x43, 0x32, - 0x30, 0x53, 0x65, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x42, - 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, - 0x0c, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x73, 0x73, 0x65, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x12, 0x22, 0x0a, 0x0d, 0x76, 0x65, 0x67, 0x61, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x76, 0x65, 0x67, 0x61, 0x41, 0x73, 0x73, - 0x65, 0x74, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6c, 0x69, - 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x6c, 0x69, 0x66, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x4c, 0x69, 0x6d, 0x69, - 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, - 0x1e, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x22, - 0x4e, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x57, 0x69, 0x74, 0x68, 0x64, - 0x72, 0x61, 0x77, 0x61, 0x6c, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0d, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, - 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, - 0x02, 0x52, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x49, 0x64, 0x22, - 0x86, 0x02, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x57, 0x69, 0x74, 0x68, - 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x73, - 0x73, 0x65, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x69, 0x67, - 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, - 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1a, - 0x0a, 0x08, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x08, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0f, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, - 0x49, 0x64, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0x38, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4c, - 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x21, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x49, 0x64, 0x22, 0x39, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, - 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x05, 0x74, 0x72, - 0x61, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, 0x67, 0x61, - 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x05, 0x74, 0x72, 0x61, 0x64, 0x65, 0x22, 0x8c, 0x02, - 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, - 0x64, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, - 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x73, 0x12, 0x40, 0x0a, 0x0a, - 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, - 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x3e, - 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x01, - 0x52, 0x09, 0x64, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0d, - 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0x0a, - 0x0b, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x4e, 0x0a, 0x12, - 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x38, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x22, 0x7b, 0x0a, 0x0f, - 0x54, 0x72, 0x61, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x35, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, + 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, + 0x02, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x22, 0x39, 0x0a, 0x11, 0x47, + 0x65, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x24, 0x0a, 0x06, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x06, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x22, 0xa7, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x4d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, + 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, + 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, + 0x2c, 0x0a, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x6c, + 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c, + 0x75, 0x64, 0x65, 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, + 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x12, 0x0a, 0x10, + 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x64, + 0x22, 0x52, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x07, 0x6d, 0x61, 0x72, 0x6b, 0x65, + 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, + 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6d, 0x61, 0x72, + 0x6b, 0x65, 0x74, 0x73, 0x22, 0x46, 0x0a, 0x0a, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x45, 0x64, + 0x67, 0x65, 0x12, 0x20, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x04, + 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x7d, 0x0a, 0x10, + 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x31, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, + 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xaf, 0x01, 0x0a, 0x1b, + 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x72, + 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x09, 0x6d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, + 0xe2, 0x41, 0x01, 0x02, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x30, + 0x0a, 0x14, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x68, + 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, 0x6e, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x46, 0x75, 0x6c, 0x6c, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, + 0x12, 0x3b, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6b, 0x0a, + 0x0f, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, + 0x12, 0x24, 0x0a, 0x06, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x06, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x32, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x61, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x76, 0x65, 0x67, 0x61, + 0x2e, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x09, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x22, 0x63, 0x0a, 0x13, 0x53, 0x75, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x45, 0x64, 0x67, + 0x65, 0x12, 0x34, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x72, 0x6b, 0x65, + 0x74, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, + 0x8f, 0x01, 0x0a, 0x19, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x72, + 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, + 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x53, + 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x45, 0x64, + 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, + 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x22, 0x77, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x6f, 0x72, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x57, 0x0a, 0x11, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x5f, 0x6d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x53, + 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x22, 0x32, 0x0a, 0x0f, 0x47, 0x65, + 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, + 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x22, 0x35, + 0x0a, 0x10, 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x21, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x52, 0x05, + 0x70, 0x61, 0x72, 0x74, 0x79, 0x22, 0x6c, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, + 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x70, + 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, + 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x3b, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0x51, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x70, 0x61, + 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, + 0x72, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x70, + 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x22, 0x44, 0x0a, 0x09, 0x50, 0x61, 0x72, 0x74, 0x79, 0x45, + 0x64, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x52, 0x04, + 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x7b, 0x0a, 0x0f, + 0x50, 0x61, 0x72, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, + 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x44, 0x0a, 0x09, 0x54, 0x72, 0x61, - 0x64, 0x65, 0x45, 0x64, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x54, 0x72, 0x61, 0x64, - 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, + 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x73, 0x0a, 0x1a, 0x4c, 0x69, 0x73, + 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x72, 0x74, 0x69, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x69, 0x65, + 0x73, 0x12, 0x3b, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x65, + 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, + 0x08, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x70, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x73, 0x22, 0x52, 0x0a, 0x10, 0x50, 0x61, 0x72, 0x74, 0x79, 0x50, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x64, 0x67, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x6e, 0x6f, 0x64, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50, + 0x61, 0x72, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x8c, 0x01, 0x0a, 0x19, 0x50, 0x61, + 0x72, 0x74, 0x69, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x50, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, + 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, + 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x44, 0x0a, 0x09, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x45, 0x64, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x8e, + 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, 0x76, + 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, + 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, + 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, + 0x49, 0x64, 0x12, 0x3b, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0x62, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, 0x76, + 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x0d, 0x6d, + 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, 0x76, + 0x65, 0x6c, 0x73, 0x22, 0x67, 0x0a, 0x1a, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, + 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x09, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0c, + 0x0a, 0x0a, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x22, 0x56, 0x0a, 0x1b, + 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, 0x76, + 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x0d, 0x6d, + 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x52, 0x0c, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, + 0x76, 0x65, 0x6c, 0x73, 0x22, 0x7b, 0x0a, 0x0f, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x45, 0x64, + 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, + 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x22, 0x4c, 0x0a, 0x0a, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x45, 0x64, 0x67, 0x65, 0x12, + 0x26, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, + 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 0x73, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, - 0x52, 0x0a, 0x14, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, - 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, - 0x49, 0x64, 0x73, 0x22, 0x3c, 0x0a, 0x15, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x54, 0x72, - 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x06, - 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, - 0x65, 0x67, 0x61, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, - 0x73, 0x22, 0x42, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, - 0x65, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x0e, 0x6f, 0x72, 0x61, - 0x63, 0x6c, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x0c, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, - 0x70, 0x65, 0x63, 0x49, 0x64, 0x22, 0x4a, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x61, 0x63, - 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, - 0x0a, 0x0b, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4f, 0x72, 0x61, 0x63, 0x6c, - 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0a, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, - 0x63, 0x22, 0x69, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, - 0x70, 0x65, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x0a, 0x70, - 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, - 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, - 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x64, 0x0a, 0x17, - 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x0c, 0x6f, 0x72, 0x61, 0x63, 0x6c, - 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, - 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, - 0x63, 0x73, 0x22, 0xa6, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x61, 0x63, 0x6c, - 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0e, - 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, - 0x65, 0x63, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, - 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6f, 0x72, - 0x61, 0x63, 0x6c, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, - 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x60, 0x0a, 0x16, 0x4c, - 0x69, 0x73, 0x74, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x0b, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x5f, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x72, 0x61, - 0x63, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x0a, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x22, 0x4e, 0x0a, - 0x0e, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x45, 0x64, 0x67, 0x65, 0x12, - 0x24, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, - 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, - 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x86, 0x01, - 0x0a, 0x15, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x73, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, - 0x70, 0x65, 0x63, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, - 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, - 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x4e, 0x0a, 0x0e, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, - 0x44, 0x61, 0x74, 0x61, 0x45, 0x64, 0x67, 0x65, 0x12, 0x24, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4f, 0x72, - 0x61, 0x63, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x85, 0x01, 0x0a, 0x14, 0x4f, 0x72, 0x61, 0x63, 0x6c, - 0x65, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x35, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x45, 0x64, 0x67, 0x65, 0x52, + 0x7d, 0x0a, 0x10, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x35, - 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x21, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x08, 0x6d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x49, 0x64, 0x22, 0x39, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x72, 0x6b, - 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x06, 0x6d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x76, 0x65, 0x67, - 0x61, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x22, 0xa7, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, - 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x69, 0x6e, 0x63, - 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x08, 0x48, 0x01, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x53, 0x65, 0x74, - 0x74, 0x6c, 0x65, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, - 0x64, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x22, 0x52, 0x0a, 0x13, 0x4c, 0x69, - 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x3b, 0x0a, 0x07, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x22, 0x46, - 0x0a, 0x0a, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x45, 0x64, 0x67, 0x65, 0x12, 0x20, 0x0a, 0x04, - 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x76, 0x65, 0x67, - 0x61, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x7d, 0x0a, 0x10, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x05, 0x65, 0x64, - 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x61, 0x72, 0x6b, - 0x65, 0x74, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, - 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xaf, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x08, - 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x6e, 0x63, 0x6c, - 0x75, 0x64, 0x65, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x46, - 0x75, 0x6c, 0x6c, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x3b, 0x0a, 0x0a, 0x70, 0x61, - 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6b, 0x0a, 0x0f, 0x53, 0x75, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x24, 0x0a, 0x06, 0x6d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x76, 0x65, 0x67, - 0x61, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x12, 0x32, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x47, 0x6f, 0x76, 0x65, 0x72, - 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x6f, - 0x73, 0x61, 0x6c, 0x73, 0x22, 0x63, 0x0a, 0x13, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, - 0x72, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x45, 0x64, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x04, 0x6e, - 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x75, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x04, 0x6e, 0x6f, 0x64, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x8f, 0x01, 0x0a, 0x19, 0x53, 0x75, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x6f, 0x72, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xe1, + 0x02, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, + 0x12, 0x1e, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x61, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, + 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x48, 0x01, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, + 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x09, 0x66, 0x72, 0x6f, 0x6d, 0x45, 0x70, + 0x6f, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x74, 0x6f, 0x5f, 0x65, 0x70, 0x6f, + 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x03, 0x52, 0x07, 0x74, 0x6f, 0x45, 0x70, + 0x6f, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, + 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, + 0x64, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x05, 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x88, + 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, + 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, + 0x0a, 0x0b, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x42, 0x0b, 0x0a, + 0x09, 0x5f, 0x74, 0x6f, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, + 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x5f, + 0x69, 0x64, 0x22, 0x53, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x07, 0x72, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, + 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x22, 0x46, 0x0a, 0x0a, 0x52, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x45, 0x64, 0x67, 0x65, 0x12, 0x20, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, + 0x7e, 0x0a, 0x11, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x45, 0x64, 0x67, 0x65, + 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, + 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, + 0xc7, 0x01, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x53, 0x75, + 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, + 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1e, + 0x0a, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x01, 0x52, 0x07, 0x61, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x40, + 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, + 0x02, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, + 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, + 0x09, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, + 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x50, 0x0a, 0x1b, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x09, 0x73, 0x75, 0x6d, 0x6d, + 0x61, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x76, 0x65, + 0x67, 0x61, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, + 0x52, 0x09, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x22, 0xb1, 0x01, 0x0a, 0x13, + 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x46, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x73, + 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, + 0x22, 0x0a, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x09, 0x66, 0x72, 0x6f, 0x6d, 0x45, 0x70, 0x6f, 0x63, 0x68, + 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x74, 0x6f, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x07, 0x74, 0x6f, 0x45, 0x70, 0x6f, 0x63, 0x68, + 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x65, 0x70, 0x6f, + 0x63, 0x68, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x74, 0x6f, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x22, + 0xb0, 0x01, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, + 0x61, 0x72, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0x6f, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x09, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, + 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x70, 0x6f, 0x63, + 0x68, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, + 0x69, 0x65, 0x73, 0x22, 0x95, 0x01, 0x0a, 0x1c, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x77, 0x0a, 0x1c, 0x4c, - 0x69, 0x73, 0x74, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x72, 0x6b, - 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, 0x11, 0x73, - 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x6f, 0x72, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x10, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x73, 0x22, 0x32, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, - 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x22, 0x35, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x50, - 0x61, 0x72, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x05, - 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, - 0x67, 0x61, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x22, - 0x6c, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, + 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x5e, 0x0a, 0x16, 0x45, + 0x70, 0x6f, 0x63, 0x68, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, + 0x79, 0x45, 0x64, 0x67, 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, + 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x04, 0x6e, + 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x71, 0x0a, 0x15, 0x4f, + 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x61, 0x73, 0x73, 0x65, 0x74, 0x49, + 0x64, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, + 0x64, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, + 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x22, 0x3e, + 0x0a, 0x16, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x06, 0x72, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, + 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, 0x29, + 0x0a, 0x11, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x02, 0x69, 0x64, 0x22, 0x3d, 0x0a, 0x12, 0x47, 0x65, 0x74, + 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x27, 0x0a, 0x07, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, + 0x07, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x22, 0xd0, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, + 0x74, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x0a, 0x70, + 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, + 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, + 0x0a, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x01, 0x52, + 0x09, 0x64, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, + 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, + 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x57, 0x0a, 0x14, 0x4c, + 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x64, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x73, 0x22, 0x48, 0x0a, 0x0b, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x45, + 0x64, 0x67, 0x65, 0x12, 0x21, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x80, + 0x01, 0x0a, 0x12, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x45, 0x64, + 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, + 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x22, 0x2c, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, + 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x02, 0x69, 0x64, 0x22, + 0x49, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x0a, 0x77, 0x69, 0x74, 0x68, + 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, + 0x65, 0x67, 0x61, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x52, 0x0a, + 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x22, 0xd3, 0x01, 0x0a, 0x16, 0x4c, + 0x69, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, - 0x12, 0x3b, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x51, 0x0a, - 0x13, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x70, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, - 0x22, 0x44, 0x0a, 0x09, 0x50, 0x61, 0x72, 0x74, 0x79, 0x45, 0x64, 0x67, 0x65, 0x12, 0x1f, 0x0a, - 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, - 0x67, 0x61, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x7b, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x74, 0x79, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x64, 0x67, - 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, - 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, - 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, + 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, + 0x67, 0x65, 0x48, 0x01, 0x52, 0x09, 0x64, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x88, + 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, + 0x22, 0x63, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, + 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x0b, 0x77, + 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, + 0x61, 0x77, 0x61, 0x6c, 0x73, 0x22, 0x4e, 0x0a, 0x0e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, + 0x77, 0x61, 0x6c, 0x45, 0x64, 0x67, 0x65, 0x12, 0x24, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x57, 0x69, 0x74, + 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, + 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x86, 0x01, 0x0a, 0x15, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, + 0x61, 0x77, 0x61, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x35, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x22, 0x73, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, - 0x65, 0x73, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x0a, 0x70, - 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, - 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x65, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, - 0x50, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x66, 0x69, - 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x72, 0x74, - 0x69, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x22, - 0x52, 0x0a, 0x10, 0x50, 0x61, 0x72, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x45, - 0x64, 0x67, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x12, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x50, 0x72, - 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, - 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, - 0x73, 0x6f, 0x72, 0x22, 0x8c, 0x01, 0x0a, 0x19, 0x50, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x50, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x37, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x45, + 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x64, 0x67, 0x65, 0x52, + 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, + 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x32, + 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1f, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x07, 0x61, 0x73, 0x73, 0x65, 0x74, + 0x49, 0x64, 0x22, 0x35, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x41, 0x73, 0x73, + 0x65, 0x74, 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x22, 0x91, 0x01, 0x0a, 0x11, 0x4c, 0x69, + 0x73, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1e, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x07, 0x61, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, + 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x48, 0x01, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, + 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0d, + 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x4f, 0x0a, + 0x12, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x22, 0x44, + 0x0a, 0x09, 0x41, 0x73, 0x73, 0x65, 0x74, 0x45, 0x64, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x04, 0x6e, + 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, 0x67, 0x61, + 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, + 0x72, 0x73, 0x6f, 0x72, 0x22, 0x7c, 0x0a, 0x10, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x22, 0x44, 0x0a, 0x09, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x45, 0x64, 0x67, 0x65, 0x12, - 0x1f, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, - 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x8e, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, - 0x74, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, - 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x3b, 0x0a, 0x0a, - 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x70, - 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x62, 0x0a, 0x18, 0x4c, 0x69, 0x73, - 0x74, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x0d, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, - 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4d, - 0x61, 0x72, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x0c, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x22, 0x67, 0x0a, - 0x1a, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x70, - 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, - 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x22, 0x56, 0x0a, 0x1b, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x0d, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, - 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x76, - 0x65, 0x67, 0x61, 0x2e, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, - 0x52, 0x0c, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x22, 0x7b, - 0x0a, 0x0f, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, - 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x4c, 0x0a, 0x0a, 0x4d, - 0x61, 0x72, 0x67, 0x69, 0x6e, 0x45, 0x64, 0x67, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x6e, 0x6f, 0x64, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4d, - 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x52, 0x04, 0x6e, 0x6f, 0x64, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x7d, 0x0a, 0x10, 0x4d, 0x61, 0x72, - 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, - 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4d, - 0x61, 0x72, 0x67, 0x69, 0x6e, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, - 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, - 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xe1, 0x02, 0x0a, 0x12, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x19, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x08, 0x61, 0x73, - 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, - 0x61, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, - 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, + 0x66, 0x6f, 0x22, 0xa1, 0x02, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x69, 0x71, 0x75, 0x69, + 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, + 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x70, 0x61, 0x72, + 0x74, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x09, 0x72, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x6c, 0x69, + 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, 0x52, 0x04, 0x6c, 0x69, 0x76, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x04, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, + 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, + 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x6c, 0x69, 0x76, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa4, 0x02, 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, 0x41, + 0x6c, 0x6c, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x09, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1e, + 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x01, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x21, + 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x02, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x17, 0x0a, 0x04, 0x6c, 0x69, 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, + 0x03, 0x52, 0x04, 0x6c, 0x69, 0x76, 0x65, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, + 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01, 0x52, 0x0a, 0x70, - 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, - 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, - 0x48, 0x02, 0x52, 0x09, 0x66, 0x72, 0x6f, 0x6d, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x88, 0x01, 0x01, - 0x12, 0x1e, 0x0a, 0x08, 0x74, 0x6f, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x04, 0x48, 0x03, 0x52, 0x07, 0x74, 0x6f, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x88, 0x01, 0x01, - 0x12, 0x1c, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x04, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1c, - 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x05, 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, - 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, - 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x66, 0x72, 0x6f, - 0x6d, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x74, 0x6f, 0x5f, 0x65, - 0x70, 0x6f, 0x63, 0x68, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, - 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x22, 0x53, 0x0a, 0x13, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x73, 0x22, 0x46, 0x0a, 0x0a, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x45, 0x64, 0x67, 0x65, 0x12, - 0x20, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, - 0x76, 0x65, 0x67, 0x61, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x04, 0x6e, 0x6f, 0x64, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x7e, 0x0a, 0x11, 0x52, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, - 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x04, 0x52, 0x0a, 0x70, + 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, + 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, + 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6c, 0x69, 0x76, 0x65, 0x42, 0x0d, + 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x84, 0x01, + 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, + 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x61, 0x0a, 0x14, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x5f, 0x70, + 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x13, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x92, 0x01, 0x0a, 0x22, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, + 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6c, 0x0a, 0x14, 0x6c, + 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x71, 0x75, + 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x57, + 0x69, 0x74, 0x68, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, + 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x8d, 0x01, 0x0a, 0x12, 0x4c, 0x69, + 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x32, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, + 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x12, 0x37, 0x0a, 0x07, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4c, 0x69, 0x71, + 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x48, + 0x00, 0x52, 0x07, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, + 0x08, 0x5f, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x5f, 0x0a, 0x17, 0x4c, 0x69, 0x71, + 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x45, 0x64, 0x67, 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, + 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6e, 0x6f, + 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x74, 0x0a, 0x21, 0x4c, 0x69, + 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x57, 0x69, 0x74, 0x68, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x64, 0x67, 0x65, 0x12, + 0x37, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, - 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, + 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, + 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, + 0x22, 0x97, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, + 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, + 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xac, 0x01, 0x0a, 0x28, 0x4c, + 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x57, 0x69, 0x74, 0x68, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x48, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, + 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x57, 0x69, 0x74, 0x68, 0x50, + 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xc7, 0x01, 0x0a, 0x1a, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, - 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x70, 0x61, - 0x72, 0x74, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x65, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x61, 0x73, - 0x73, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, - 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x02, 0x52, 0x0a, 0x70, 0x61, 0x67, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, - 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x73, 0x73, 0x65, - 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0x50, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x31, 0x0a, 0x09, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x52, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x09, 0x73, 0x75, 0x6d, 0x6d, - 0x61, 0x72, 0x69, 0x65, 0x73, 0x22, 0xb1, 0x01, 0x0a, 0x13, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1b, 0x0a, - 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, - 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, 0x22, 0x0a, 0x0a, 0x66, 0x72, 0x6f, - 0x6d, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, - 0x09, 0x66, 0x72, 0x6f, 0x6d, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, - 0x08, 0x74, 0x6f, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, - 0x01, 0x52, 0x07, 0x74, 0x6f, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, - 0x0b, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x42, 0x0b, 0x0a, 0x09, - 0x5f, 0x74, 0x6f, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x22, 0xb0, 0x01, 0x0a, 0x1f, 0x4c, 0x69, - 0x73, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, - 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, - 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, - 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x46, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x40, 0x0a, 0x0a, 0x70, - 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x80, 0x01, 0x0a, 0x21, 0x4f, 0x62, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, + 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x20, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, + 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x88, 0x01, + 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, + 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x22, 0x71, 0x0a, 0x22, + 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, + 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x14, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x5f, + 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x18, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, + 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x6c, 0x69, 0x71, 0x75, + 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, + 0xcd, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, + 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x20, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, + 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, + 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x02, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, + 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, + 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0xb7, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, + 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x3c, 0x0a, + 0x09, 0x66, 0x65, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, + 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x46, 0x65, 0x65, 0x53, 0x68, 0x61, 0x72, + 0x65, 0x52, 0x08, 0x66, 0x65, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x12, 0x2c, 0x0a, 0x03, 0x73, + 0x6c, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, + 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x53, 0x4c, 0x41, 0x52, 0x03, 0x73, 0x6c, 0x61, 0x22, 0x67, 0x0a, 0x15, 0x4c, 0x69, 0x71, + 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x45, 0x64, + 0x67, 0x65, 0x12, 0x36, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x22, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, + 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, + 0x6f, 0x72, 0x22, 0x93, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, + 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, + 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, + 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x7f, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, + 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x13, 0x6c, 0x69, + 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, + 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, + 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x22, 0x99, 0x02, 0x0a, 0x1c, 0x4c, 0x69, + 0x73, 0x74, 0x50, 0x61, 0x69, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x46, + 0x65, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x6d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, + 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, + 0x52, 0x07, 0x61, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, + 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, + 0x02, 0x52, 0x08, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x53, 0x65, 0x71, 0x88, 0x01, 0x01, 0x12, 0x1b, + 0x0a, 0x09, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x73, 0x12, 0x40, 0x0a, 0x0a, 0x70, + 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, - 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, - 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6f, 0x0a, 0x20, - 0x4c, 0x69, 0x73, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x53, - 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x4b, 0x0a, 0x09, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x09, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x22, 0x95, 0x01, - 0x0a, 0x1c, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, - 0x6d, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3d, - 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, + 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x03, 0x52, 0x0a, + 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, + 0x0a, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, + 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x65, 0x70, 0x6f, + 0x63, 0x68, 0x5f, 0x73, 0x65, 0x71, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x7d, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x69, + 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x13, 0x70, 0x61, 0x69, 0x64, 0x5f, 0x6c, + 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x5f, 0x66, 0x65, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x69, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, + 0x69, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x11, 0x70, 0x61, 0x69, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, + 0x46, 0x65, 0x65, 0x73, 0x22, 0x6b, 0x0a, 0x15, 0x50, 0x61, 0x69, 0x64, 0x4c, 0x69, 0x71, 0x75, + 0x69, 0x64, 0x69, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x45, 0x64, 0x67, 0x65, 0x12, 0x3a, 0x0a, + 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x76, 0x65, + 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x69, + 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, + 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, + 0x72, 0x22, 0x93, 0x01, 0x0a, 0x1b, 0x50, 0x61, 0x69, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, + 0x69, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x3c, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x50, 0x61, 0x69, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, + 0x46, 0x65, 0x65, 0x73, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, + 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, + 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x81, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x47, + 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x72, 0x6f, + 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, 0x09, 0x72, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, + 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, + 0x0c, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, + 0x0a, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x45, 0x0a, 0x19, 0x47, + 0x65, 0x74, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x47, 0x6f, + 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x22, 0xcb, 0x06, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x6f, 0x76, 0x65, 0x72, + 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x40, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, + 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x48, 0x00, + 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x59, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x48, 0x01, 0x52, 0x0c, 0x70, 0x72, + 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, + 0x11, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, + 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x70, + 0x6f, 0x73, 0x65, 0x72, 0x50, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x32, + 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x11, 0x70, 0x72, + 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x48, 0x04, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x88, 0x01, 0x01, 0x22, 0x88, 0x03, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, + 0x10, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x10, + 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x45, 0x57, 0x5f, 0x4d, 0x41, + 0x52, 0x4b, 0x45, 0x54, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, + 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x54, 0x10, 0x03, 0x12, 0x1b, + 0x0a, 0x17, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x50, + 0x41, 0x52, 0x41, 0x4d, 0x45, 0x54, 0x45, 0x52, 0x53, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x45, 0x57, 0x5f, 0x41, 0x53, 0x53, 0x45, 0x54, 0x10, 0x05, 0x12, + 0x16, 0x0a, 0x12, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x45, 0x57, 0x5f, 0x46, 0x52, 0x45, 0x45, + 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x10, 0x06, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x41, 0x53, 0x53, 0x45, 0x54, 0x10, 0x07, 0x12, 0x18, + 0x0a, 0x14, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x45, 0x57, 0x5f, 0x53, 0x50, 0x4f, 0x54, 0x5f, + 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x54, 0x10, 0x08, 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x50, 0x4f, 0x54, 0x5f, 0x4d, 0x41, 0x52, + 0x4b, 0x45, 0x54, 0x10, 0x09, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x45, + 0x57, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x10, 0x0a, 0x12, 0x18, 0x0a, 0x14, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x5f, 0x54, 0x52, 0x41, 0x4e, + 0x53, 0x46, 0x45, 0x52, 0x10, 0x0b, 0x12, 0x1c, 0x0a, 0x18, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, + 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x45, 0x10, 0x0c, 0x12, 0x20, 0x0a, 0x1c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x50, 0x44, + 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x52, 0x41, 0x4c, 0x5f, 0x50, 0x52, 0x4f, + 0x47, 0x52, 0x41, 0x4d, 0x10, 0x0d, 0x12, 0x27, 0x0a, 0x23, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, + 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x44, 0x49, 0x53, + 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x41, 0x4d, 0x10, 0x0e, 0x42, + 0x11, 0x0a, 0x0f, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, + 0x72, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x70, + 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, + 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x67, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, + 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, + 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x44, + 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x56, 0x0a, 0x12, 0x47, 0x6f, 0x76, + 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x45, 0x64, 0x67, 0x65, 0x12, + 0x28, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x76, 0x65, 0x67, 0x61, 0x2e, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, + 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, + 0x72, 0x22, 0x8d, 0x01, 0x0a, 0x18, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, + 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, + 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x45, 0x64, + 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, + 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x22, 0x47, 0x0a, 0x18, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x47, 0x6f, 0x76, 0x65, + 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, + 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, + 0x09, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x22, 0x45, 0x0a, 0x19, 0x4f, 0x62, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x47, 0x6f, 0x76, + 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x22, 0xed, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x08, + 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, + 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, + 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, + 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x65, 0x70, + 0x6f, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x07, + 0x65, 0x70, 0x6f, 0x63, 0x68, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, + 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, + 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x03, 0x52, 0x0a, 0x70, + 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, + 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6e, 0x6f, + 0x64, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, + 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x63, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x0b, + 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x67, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x4e, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x64, 0x67, 0x65, 0x12, 0x24, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x86, 0x01, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x67, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x35, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x64, 0x67, 0x65, + 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, + 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, + 0x72, 0x0a, 0x19, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x08, + 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, + 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, + 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, + 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, + 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6e, 0x6f, 0x64, 0x65, + 0x5f, 0x69, 0x64, 0x22, 0x4e, 0x0a, 0x1a, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x44, 0x65, + 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x30, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0x91, 0x02, 0x0a, 0x09, 0x4e, 0x6f, 0x64, 0x65, 0x42, 0x61, 0x73, 0x69, + 0x63, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x75, 0x62, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x70, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x0a, 0x74, 0x6d, + 0x5f, 0x70, 0x75, 0x62, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x74, 0x6d, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x12, 0x29, 0x0a, 0x10, 0x65, 0x74, 0x68, 0x65, + 0x72, 0x65, 0x75, 0x6d, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6e, 0x66, 0x6f, 0x55, 0x72, 0x6c, 0x12, 0x1a, + 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, + 0x61, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x76, 0x61, 0x74, + 0x61, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x76, + 0x61, 0x74, 0x61, 0x72, 0x55, 0x72, 0x6c, 0x22, 0x17, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x22, 0x45, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x09, 0x6e, 0x6f, + 0x64, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6e, + 0x6f, 0x64, 0x65, 0x44, 0x61, 0x74, 0x61, 0x22, 0x26, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4e, 0x6f, + 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x02, 0x69, 0x64, 0x22, + 0x31, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0a, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, + 0x64, 0x65, 0x22, 0x93, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x65, 0x70, 0x6f, 0x63, 0x68, + 0x5f, 0x73, 0x65, 0x71, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x08, 0x65, 0x70, + 0x6f, 0x63, 0x68, 0x53, 0x65, 0x71, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, - 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, - 0x72, 0x79, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, + 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01, 0x52, 0x0a, 0x70, 0x61, + 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, + 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x73, 0x65, 0x71, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, + 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x4b, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, + 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, + 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, + 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x42, 0x0a, 0x08, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x64, 0x67, + 0x65, 0x12, 0x1e, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0a, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x7a, 0x0a, 0x0f, 0x4e, 0x6f, 0x64, + 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x05, + 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x6f, + 0x64, 0x65, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x5e, 0x0a, 0x16, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x45, 0x64, 0x67, 0x65, 0x12, - 0x2c, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, - 0x76, 0x65, 0x67, 0x61, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x82, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, + 0x64, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x02, 0x69, 0x64, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, + 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, + 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x67, 0x0a, 0x1a, 0x4c, 0x69, + 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, + 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x73, 0x22, 0x60, 0x0a, 0x11, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x45, 0x64, 0x67, 0x65, 0x12, 0x33, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x6f, + 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x69, + 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, - 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x71, 0x0a, 0x15, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, - 0x0a, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x00, 0x52, 0x07, 0x61, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1e, - 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x01, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0b, - 0x0a, 0x09, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, - 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x22, 0x3e, 0x0a, 0x16, 0x4f, 0x62, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x24, 0x0a, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x52, 0x06, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, 0x29, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x44, - 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, - 0x02, 0x69, 0x64, 0x22, 0x3d, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x07, 0x64, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x76, 0x65, 0x67, - 0x61, 0x2e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x07, 0x64, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x22, 0xd0, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, - 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, - 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x65, 0x5f, - 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, - 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x01, 0x52, 0x09, 0x64, 0x61, 0x74, 0x65, 0x52, - 0x61, 0x6e, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, - 0x72, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x57, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, - 0x08, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, 0x22, 0x48, - 0x0a, 0x0b, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x45, 0x64, 0x67, 0x65, 0x12, 0x21, 0x0a, - 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x76, 0x65, - 0x67, 0x61, 0x2e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x80, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x32, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, + 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x8c, 0x01, 0x0a, 0x18, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x69, + 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, + 0x65, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, + 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, + 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x52, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x02, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x05, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, 0x64, 0x42, 0x08, + 0x0a, 0x06, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x35, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x45, + 0x70, 0x6f, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x05, + 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, + 0x67, 0x61, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x22, + 0x6d, 0x0a, 0x12, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x46, 0x65, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x08, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x05, 0x70, + 0x72, 0x69, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x04, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x32, + 0x0a, 0x13, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x46, 0x65, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x46, 0x65, 0x65, 0x52, 0x03, 0x66, + 0x65, 0x65, 0x22, 0xe7, 0x01, 0x0a, 0x15, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x4d, + 0x61, 0x72, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x09, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, + 0x1f, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, + 0x12, 0x24, 0x0a, 0x04, 0x73, 0x69, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0a, + 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x53, 0x69, 0x64, 0x65, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, + 0x52, 0x04, 0x73, 0x69, 0x64, 0x65, 0x12, 0x2a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x12, 0x18, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x1a, 0x0a, 0x05, + 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, + 0x02, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x3a, 0x02, 0x18, 0x01, 0x22, 0x55, 0x0a, 0x16, + 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x0d, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, + 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, + 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 0x73, 0x52, 0x0c, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x3a, + 0x02, 0x18, 0x01, 0x22, 0x6f, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x7b, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x12, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x73, 0x22, 0x34, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x16, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, + 0x01, 0x02, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x62, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x4e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x11, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x10, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x22, 0x5a, 0x0a, 0x14, 0x4e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x45, + 0x64, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x91, 0x01, 0x0a, 0x1a, 0x4e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x2c, 0x0a, 0x14, 0x47, - 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x02, 0x69, 0x64, 0x22, 0x49, 0x0a, 0x15, 0x47, 0x65, 0x74, - 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x30, 0x0a, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x57, 0x69, - 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x52, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, - 0x61, 0x77, 0x61, 0x6c, 0x22, 0xd3, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x69, 0x74, - 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x19, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, - 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, - 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x0a, - 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x01, 0x52, 0x09, - 0x64, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, - 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, - 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x63, 0x0a, 0x17, 0x4c, 0x69, - 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, - 0x77, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x57, 0x69, 0x74, - 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x22, - 0x4e, 0x0a, 0x0e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x64, 0x67, - 0x65, 0x12, 0x24, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, - 0x6c, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, - 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, - 0x86, 0x01, 0x0a, 0x15, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x05, 0x65, 0x64, 0x67, - 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, - 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, - 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, - 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x32, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x41, - 0x73, 0x73, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x08, 0x61, - 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, - 0x41, 0x01, 0x02, 0x52, 0x07, 0x61, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x22, 0x35, 0x0a, 0x10, - 0x47, 0x65, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x21, 0x0a, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x05, 0x61, 0x73, - 0x73, 0x65, 0x74, 0x22, 0x91, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x73, 0x73, 0x65, - 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x08, 0x61, 0x73, 0x73, - 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x61, - 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, - 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01, 0x52, 0x0a, 0x70, 0x61, - 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, - 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x4f, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x41, - 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, - 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, - 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x22, 0x44, 0x0a, 0x09, 0x41, 0x73, 0x73, 0x65, - 0x74, 0x45, 0x64, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, - 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x7c, - 0x0a, 0x10, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, + 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x5a, 0x0a, 0x0a, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, + 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x1d, 0x0a, + 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x19, 0x0a, 0x08, + 0x61, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, + 0x61, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x69, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0x63, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, + 0x0b, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x22, 0x59, 0x0a, 0x0e, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x45, 0x64, 0x67, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x6e, 0x6f, 0x64, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, + 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, + 0x6f, 0x72, 0x22, 0x86, 0x01, 0x0a, 0x15, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x05, + 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, + 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x83, 0x01, 0x0a, 0x0f, + 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1f, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, + 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, + 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x94, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x17, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x74, 0x5f, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, + 0x53, 0x74, 0x61, 0x6b, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x48, + 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x73, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x6b, 0x65, + 0x4c, 0x69, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x5c, 0x0a, 0x10, 0x53, 0x74, 0x61, 0x6b, + 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x45, 0x64, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x04, + 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, + 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x6b, + 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x83, 0x01, 0x0a, 0x10, 0x53, 0x74, 0x61, 0x6b, 0x65, + 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x05, 0x65, + 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, + 0x6b, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xa1, 0x02, 0x0a, - 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, - 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x20, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, - 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x88, 0x01, - 0x01, 0x12, 0x21, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x6c, 0x69, 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x08, 0x48, 0x03, 0x52, 0x04, 0x6c, 0x69, 0x76, 0x65, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, - 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x04, - 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, - 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, - 0x09, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6c, 0x69, 0x76, - 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x22, 0xa4, 0x02, 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x4c, 0x69, 0x71, 0x75, - 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, - 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x70, 0x61, - 0x72, 0x74, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x09, 0x72, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x6c, - 0x69, 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, 0x52, 0x04, 0x6c, 0x69, 0x76, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x04, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, - 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, - 0x07, 0x0a, 0x05, 0x5f, 0x6c, 0x69, 0x76, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x84, 0x01, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, - 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x61, 0x0a, 0x14, 0x6c, - 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x71, 0x75, - 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x6c, 0x69, 0x71, 0x75, 0x69, - 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x92, - 0x01, 0x0a, 0x22, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, - 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6c, 0x0a, 0x14, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, - 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, - 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x57, 0x69, 0x74, 0x68, 0x50, 0x65, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, - 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x22, 0x8d, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, - 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x07, 0x63, 0x75, - 0x72, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x65, - 0x67, 0x61, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x37, - 0x0a, 0x07, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x18, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, - 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x07, 0x70, 0x65, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x65, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x22, 0x5f, 0x0a, 0x17, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, - 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x64, 0x67, 0x65, 0x12, 0x2c, - 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, - 0x65, 0x67, 0x61, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, - 0x72, 0x73, 0x6f, 0x72, 0x22, 0x74, 0x0a, 0x21, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, - 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x57, 0x69, 0x74, 0x68, 0x50, 0x65, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x64, 0x67, 0x65, 0x12, 0x37, 0x0a, 0x04, 0x6e, 0x6f, 0x64, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, - 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6e, 0x6f, - 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x97, 0x01, 0x0a, 0x1d, 0x4c, - 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x05, - 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, - 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, - 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xac, 0x01, 0x0a, 0x28, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, - 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x57, 0x69, 0x74, 0x68, - 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x48, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x57, 0x69, 0x74, 0x68, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, - 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, - 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x22, 0x80, 0x01, 0x0a, 0x21, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4c, - 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x6d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, - 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x70, - 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, - 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, - 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x61, - 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x22, 0x71, 0x0a, 0x22, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x14, - 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x65, 0x67, - 0x61, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, - 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, - 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xcd, 0x01, 0x0a, 0x1d, 0x4c, 0x69, - 0x73, 0x74, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x6d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, - 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x01, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, - 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x02, - 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, - 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, - 0x09, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, - 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb7, 0x01, 0x0a, 0x11, 0x4c, 0x69, - 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, - 0x19, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x3c, 0x0a, 0x09, 0x66, 0x65, 0x65, 0x5f, 0x73, - 0x68, 0x61, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, - 0x61, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x72, 0x46, 0x65, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x08, 0x66, 0x65, 0x65, - 0x53, 0x68, 0x61, 0x72, 0x65, 0x12, 0x2c, 0x0a, 0x03, 0x73, 0x6c, 0x61, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, - 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x53, 0x4c, 0x41, 0x52, 0x03, - 0x73, 0x6c, 0x61, 0x22, 0x67, 0x0a, 0x15, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, - 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x45, 0x64, 0x67, 0x65, 0x12, 0x36, 0x0a, 0x04, - 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x71, - 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x04, - 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x93, 0x01, 0x0a, - 0x1b, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x05, - 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, - 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x45, - 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, - 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, - 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x22, 0x7f, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, - 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x13, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, - 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, - 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x12, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x73, 0x22, 0x99, 0x02, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x69, 0x64, - 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x61, 0x73, 0x73, 0x65, - 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, - 0x73, 0x65, 0x71, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x08, 0x65, 0x70, 0x6f, - 0x63, 0x68, 0x53, 0x65, 0x71, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x74, - 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x72, - 0x74, 0x79, 0x49, 0x64, 0x73, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x03, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x61, 0x72, 0x6b, - 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, - 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x73, 0x65, 0x71, + 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x3a, 0x0a, 0x15, + 0x47, 0x65, 0x74, 0x52, 0x69, 0x73, 0x6b, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x08, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x22, 0x4b, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x52, + 0x69, 0x73, 0x6b, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x31, 0x0a, 0x0b, 0x72, 0x69, 0x73, 0x6b, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x52, + 0x69, 0x73, 0x6b, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0a, 0x72, 0x69, 0x73, 0x6b, 0x46, + 0x61, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xa1, 0x01, 0x0a, 0x16, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x30, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1c, + 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x42, 0x75, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, + 0x19, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x61, + 0x74, 0x63, 0x68, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, + 0x62, 0x61, 0x74, 0x63, 0x68, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x4b, 0x0a, 0x17, 0x4f, 0x62, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x1f, 0x0a, 0x1d, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x4d, 0x6f, 0x76, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x5f, 0x0a, 0x1e, 0x4f, 0x62, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x4d, 0x6f, 0x76, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0f, 0x6c, 0x65, 0x64, + 0x67, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x76, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, + 0x4d, 0x6f, 0x76, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, + 0x4d, 0x6f, 0x76, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x94, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, + 0x74, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x88, + 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x48, 0x01, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, - 0x7d, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x69, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, - 0x64, 0x69, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x5c, 0x0a, 0x13, 0x70, 0x61, 0x69, 0x64, 0x5f, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, - 0x74, 0x79, 0x5f, 0x66, 0x65, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, + 0x60, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x09, 0x72, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, + 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x22, 0x5a, 0x0a, 0x0f, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x45, 0x64, 0x67, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x87, 0x01, + 0x0a, 0x15, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, + 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, + 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x9c, 0x01, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, + 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x07, 0x6e, + 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, + 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, - 0x50, 0x61, 0x69, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x46, 0x65, 0x65, - 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x70, 0x61, 0x69, - 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x22, 0x6b, - 0x0a, 0x15, 0x50, 0x61, 0x69, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x46, - 0x65, 0x65, 0x73, 0x45, 0x64, 0x67, 0x65, 0x12, 0x3a, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x69, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, - 0x64, 0x69, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x04, 0x6e, - 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x93, 0x01, 0x0a, 0x1b, - 0x50, 0x61, 0x69, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x46, 0x65, 0x65, - 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x05, 0x65, - 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x69, - 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x45, 0x64, - 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, - 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, - 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x22, 0x81, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, - 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x24, - 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x49, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x70, 0x72, 0x6f, 0x70, - 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x45, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x47, 0x6f, 0x76, 0x65, - 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x14, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, - 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xcb, 0x06, 0x0a, - 0x19, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x44, - 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x0e, 0x70, 0x72, - 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, - 0x61, 0x6c, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x70, - 0x6f, 0x73, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x59, 0x0a, 0x0d, - 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, - 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x54, 0x79, 0x70, 0x65, 0x48, 0x01, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, - 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x70, 0x6f, - 0x73, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x02, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x50, 0x61, - 0x72, 0x74, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x70, - 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x11, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, - 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0a, - 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x04, 0x52, - 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x22, 0x88, - 0x03, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, - 0x08, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x45, 0x57, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x54, 0x10, 0x02, - 0x12, 0x16, 0x0a, 0x12, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, - 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x54, 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x45, 0x54, - 0x45, 0x52, 0x53, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x45, - 0x57, 0x5f, 0x41, 0x53, 0x53, 0x45, 0x54, 0x10, 0x05, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x4e, 0x45, 0x57, 0x5f, 0x46, 0x52, 0x45, 0x45, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x10, - 0x06, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, - 0x5f, 0x41, 0x53, 0x53, 0x45, 0x54, 0x10, 0x07, 0x12, 0x18, 0x0a, 0x14, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x4e, 0x45, 0x57, 0x5f, 0x53, 0x50, 0x4f, 0x54, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x54, - 0x10, 0x08, 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, - 0x45, 0x5f, 0x53, 0x50, 0x4f, 0x54, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x54, 0x10, 0x09, 0x12, - 0x15, 0x0a, 0x11, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x45, 0x57, 0x5f, 0x54, 0x52, 0x41, 0x4e, - 0x53, 0x46, 0x45, 0x52, 0x10, 0x0a, 0x12, 0x18, 0x0a, 0x14, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, - 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x10, 0x0b, - 0x12, 0x1c, 0x0a, 0x18, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, - 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x0c, 0x12, 0x20, - 0x0a, 0x1c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45, - 0x46, 0x45, 0x52, 0x52, 0x41, 0x4c, 0x5f, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x41, 0x4d, 0x10, 0x0d, - 0x12, 0x27, 0x0a, 0x23, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, - 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, - 0x50, 0x52, 0x4f, 0x47, 0x52, 0x41, 0x4d, 0x10, 0x0e, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x70, 0x72, - 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x10, 0x0a, 0x0e, - 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x14, - 0x0a, 0x12, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x72, 0x74, - 0x79, 0x5f, 0x69, 0x64, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, - 0x6c, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, - 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x67, 0x0a, 0x1a, 0x4c, 0x69, - 0x73, 0x74, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, - 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0x56, 0x0a, 0x12, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, - 0x65, 0x44, 0x61, 0x74, 0x61, 0x45, 0x64, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x6e, 0x6f, 0x64, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x47, - 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x6e, - 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x8d, 0x01, 0x0a, 0x18, - 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, - 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, + 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01, 0x52, 0x0a, 0x70, 0x61, + 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, + 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x78, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x74, + 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x0d, 0x6b, 0x65, + 0x79, 0x5f, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x4b, 0x65, 0x79, 0x52, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x0c, 0x6b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x22, 0x98, 0x01, 0x0a, 0x1e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x4b, 0x65, 0x79, + 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x4b, 0x65, 0x79, + 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x47, 0x0a, 0x18, 0x4f, - 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x70, 0x61, 0x72, - 0x74, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x61, 0x72, 0x74, - 0x79, 0x5f, 0x69, 0x64, 0x22, 0x45, 0x0a, 0x19, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x47, - 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x14, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, - 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xed, 0x01, 0x0a, 0x16, - 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, - 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x69, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x07, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x49, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x03, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, - 0x5f, 0x69, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x42, - 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, - 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x63, 0x0a, 0x17, 0x4c, - 0x69, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x22, 0x4e, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x64, - 0x67, 0x65, 0x12, 0x24, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, - 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, - 0x22, 0x86, 0x01, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x05, 0x65, 0x64, - 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, - 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x72, 0x0a, 0x19, 0x4f, 0x62, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, - 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, - 0x64, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, - 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x22, 0x4e, 0x0a, - 0x1a, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x0a, 0x64, - 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x0a, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x91, 0x02, - 0x0a, 0x09, 0x4e, 0x6f, 0x64, 0x65, 0x42, 0x61, 0x73, 0x69, 0x63, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x70, - 0x75, 0x62, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x75, - 0x62, 0x4b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x0a, 0x74, 0x6d, 0x5f, 0x70, 0x75, 0x62, 0x5f, 0x6b, - 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6d, 0x50, 0x75, 0x62, 0x4b, - 0x65, 0x79, 0x12, 0x29, 0x0a, 0x10, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x5f, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x65, 0x74, - 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x19, 0x0a, - 0x08, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x69, 0x6e, 0x66, 0x6f, 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0d, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4e, 0x6f, 0x64, 0x65, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x75, 0x72, 0x6c, - 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, 0x72, - 0x6c, 0x22, 0x17, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, - 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x45, 0x0a, 0x16, 0x47, 0x65, - 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4e, - 0x6f, 0x64, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x44, 0x61, 0x74, - 0x61, 0x22, 0x26, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x02, 0x69, 0x64, 0x22, 0x31, 0x0a, 0x0f, 0x47, 0x65, 0x74, - 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x04, - 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x76, 0x65, 0x67, - 0x61, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x22, 0x93, 0x01, 0x0a, - 0x10, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x20, 0x0a, 0x09, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x08, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x53, 0x65, 0x71, - 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, - 0x73, 0x65, 0x71, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0x4b, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x22, - 0x42, 0x0a, 0x08, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x64, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x04, 0x6e, - 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x76, 0x65, 0x67, 0x61, - 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, - 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, - 0x73, 0x6f, 0x72, 0x22, 0x7a, 0x0a, 0x0f, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x45, 0x64, 0x67, 0x65, - 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, - 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, - 0x82, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67, 0x6e, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x67, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, - 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x49, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67, - 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x22, 0x60, 0x0a, - 0x11, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x45, 0x64, - 0x67, 0x65, 0x12, 0x33, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, - 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, - 0x8c, 0x01, 0x0a, 0x18, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x05, - 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x6f, - 0x64, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x45, 0x64, 0x67, 0x65, 0x52, + 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x6a, 0x0a, 0x17, 0x45, + 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x45, 0x64, 0x67, 0x65, 0x12, 0x37, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x4b, 0x65, + 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x14, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x56, 0x65, + 0x67, 0x61, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x33, 0x0a, + 0x13, 0x47, 0x65, 0x74, 0x56, 0x65, 0x67, 0x61, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x22, 0x89, 0x01, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, + 0x12, 0x2c, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0e, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x88, 0x01, 0x01, 0x12, 0x28, + 0x0a, 0x0d, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x0c, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x10, 0x0a, 0x0e, + 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x21, + 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, + 0x72, 0x61, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x22, 0x38, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x22, 0x83, 0x02, 0x0a, 0x23, + 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, + 0x61, 0x64, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, + 0x72, 0x61, 0x64, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, + 0x24, 0x0a, 0x0b, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, + 0x42, 0x79, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x02, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x5f, + 0x62, 0x79, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x98, 0x01, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, + 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x70, 0x0a, 0x1a, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x70, + 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, + 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, + 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x18, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, + 0x61, 0x64, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x22, 0x9f, 0x01, 0x0a, + 0x21, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, + 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, + 0x61, 0x64, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x52, - 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, - 0x02, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x88, 0x01, - 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, 0x64, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x22, 0x35, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x45, 0x70, 0x6f, - 0x63, 0x68, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x22, 0x6d, 0x0a, 0x12, 0x45, 0x73, 0x74, - 0x69, 0x6d, 0x61, 0x74, 0x65, 0x46, 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x21, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x18, - 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x04, 0xe2, 0x41, - 0x01, 0x02, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x32, 0x0a, 0x13, 0x45, 0x73, 0x74, 0x69, - 0x6d, 0x61, 0x74, 0x65, 0x46, 0x65, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x1b, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x76, - 0x65, 0x67, 0x61, 0x2e, 0x46, 0x65, 0x65, 0x52, 0x03, 0x66, 0x65, 0x65, 0x22, 0xe7, 0x01, 0x0a, - 0x15, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, - 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x08, 0x70, 0x61, 0x72, - 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, - 0x02, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x04, 0x73, 0x69, - 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0a, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, - 0x53, 0x69, 0x64, 0x65, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x04, 0x73, 0x69, 0x64, 0x65, - 0x12, 0x2a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, - 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x2e, 0x54, 0x79, 0x70, 0x65, - 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x04, - 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, - 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x1a, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x05, 0x70, 0x72, 0x69, - 0x63, 0x65, 0x3a, 0x02, 0x18, 0x01, 0x22, 0x55, 0x0a, 0x16, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, - 0x74, 0x65, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x37, 0x0a, 0x0d, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4d, - 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x52, 0x0c, 0x6d, 0x61, 0x72, - 0x67, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x3a, 0x02, 0x18, 0x01, 0x22, 0x6f, 0x0a, - 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, - 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, - 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, - 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x7b, - 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x5a, 0x0a, 0x12, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, - 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x22, 0x34, 0x0a, 0x1a, 0x47, - 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, - 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x22, 0x62, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x43, 0x0a, 0x11, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x70, 0x61, 0x72, 0x61, - 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x76, 0x65, - 0x67, 0x61, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, - 0x74, 0x65, 0x72, 0x52, 0x10, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x65, 0x74, 0x65, 0x72, 0x22, 0x5a, 0x0a, 0x14, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x45, 0x64, 0x67, 0x65, 0x12, 0x2a, 0x0a, - 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x76, 0x65, - 0x67, 0x61, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, - 0x74, 0x65, 0x72, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, - 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, - 0x72, 0x22, 0x91, 0x01, 0x0a, 0x1a, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x3b, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, - 0x65, 0x72, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, - 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x5a, 0x0a, 0x0a, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x74, 0x5f, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x61, 0x74, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x22, 0x69, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x0a, 0x70, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x6f, + 0x0a, 0x1b, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, + 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x45, 0x64, 0x67, 0x65, 0x12, 0x38, 0x0a, + 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x76, 0x65, + 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, + 0x6b, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x72, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, + 0x68, 0x6f, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, - 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x63, 0x0a, 0x17, - 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x0b, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x73, 0x22, 0x59, 0x0a, 0x0e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x45, - 0x64, 0x67, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x04, - 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x86, 0x01, 0x0a, - 0x15, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, + 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6b, 0x0a, 0x19, + 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x72, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x0e, 0x63, 0x6f, 0x72, + 0x65, 0x5f, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x72, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x65, + 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x22, 0x89, 0x01, 0x0a, 0x16, 0x43, 0x6f, + 0x72, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x72, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, + 0x6f, 0x74, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x83, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, - 0x6b, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x08, 0x70, 0x61, 0x72, - 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, - 0x02, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, - 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, - 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, - 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x94, 0x01, 0x0a, 0x10, - 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x36, 0x0a, 0x17, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x6b, - 0x65, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x15, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x41, - 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x48, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x6b, - 0x65, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x69, 0x6e, - 0x67, 0x73, 0x22, 0x5c, 0x0a, 0x10, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x69, - 0x6e, 0x67, 0x45, 0x64, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x69, - 0x6e, 0x67, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, - 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, - 0x22, 0x83, 0x01, 0x0a, 0x10, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x4c, 0x69, 0x6e, 0x6b, - 0x69, 0x6e, 0x67, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, - 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, - 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x3a, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x52, 0x69, 0x73, - 0x6b, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x21, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x49, 0x64, 0x22, 0x4b, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x52, 0x69, 0x73, 0x6b, 0x46, 0x61, 0x63, - 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x0b, - 0x72, 0x69, 0x73, 0x6b, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x52, 0x69, 0x73, 0x6b, 0x46, 0x61, 0x63, - 0x74, 0x6f, 0x72, 0x52, 0x0a, 0x72, 0x69, 0x73, 0x6b, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x22, - 0xa1, 0x01, 0x0a, 0x16, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x42, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, - 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x73, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, - 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x72, - 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, - 0x74, 0x79, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x69, - 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x62, 0x61, 0x74, 0x63, 0x68, 0x53, - 0x69, 0x7a, 0x65, 0x22, 0x4b, 0x0a, 0x17, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x42, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, - 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, - 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x42, 0x75, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, - 0x22, 0x1f, 0x0a, 0x1d, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4c, 0x65, 0x64, 0x67, 0x65, - 0x72, 0x4d, 0x6f, 0x76, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x22, 0x5f, 0x0a, 0x1e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4c, 0x65, 0x64, 0x67, - 0x65, 0x72, 0x4d, 0x6f, 0x76, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x0f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x5f, 0x6d, 0x6f, - 0x76, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x76, - 0x65, 0x67, 0x61, 0x2e, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x4d, 0x6f, 0x76, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x52, 0x0e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x4d, 0x6f, 0x76, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x22, 0x94, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x52, 0x6f, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, - 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0a, - 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01, 0x52, - 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0a, - 0x0a, 0x08, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, - 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x60, 0x0a, 0x18, 0x4c, 0x69, 0x73, - 0x74, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x09, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x6f, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x09, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x5a, 0x0a, 0x0f, 0x4b, - 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x64, 0x67, 0x65, 0x12, 0x2f, - 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x76, - 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, - 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x60, 0x0a, 0x10, 0x43, 0x6f, 0x72, 0x65, 0x53, 0x6e, 0x61, + 0x70, 0x73, 0x68, 0x6f, 0x74, 0x45, 0x64, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x04, 0x6e, 0x6f, 0x64, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x72, 0x65, 0x53, 0x6e, 0x61, + 0x70, 0x73, 0x68, 0x6f, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x87, 0x01, 0x0a, 0x15, 0x4b, 0x65, 0x79, 0x52, - 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x36, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x64, - 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, - 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, - 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x22, 0x9c, 0x01, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, - 0x75, 0x6d, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, + 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x81, 0x02, 0x0a, 0x0e, 0x48, 0x69, 0x73, 0x74, + 0x6f, 0x72, 0x79, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x72, + 0x6f, 0x6d, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, + 0x6f, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, + 0x74, 0x6f, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x68, 0x69, 0x73, 0x74, + 0x6f, 0x72, 0x79, 0x5f, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x67, + 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x1b, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, + 0x75, 0x73, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x73, 0x65, 0x67, 0x6d, 0x65, + 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x70, 0x72, 0x65, + 0x76, 0x69, 0x6f, 0x75, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x67, 0x6d, + 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, + 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x22, 0x2b, 0x0a, 0x29, 0x47, + 0x65, 0x74, 0x4d, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x4e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x8d, 0x01, 0x0a, 0x2a, 0x47, 0x65, 0x74, + 0x4d, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x07, 0x73, 0x65, 0x67, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, + 0x72, 0x79, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x73, 0x65, 0x67, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x5f, 0x6b, 0x65, 0x79, 0x5f, + 0x73, 0x65, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x77, 0x61, 0x72, + 0x6d, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x65, 0x64, 0x22, 0x26, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, + 0x41, 0x6c, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, + 0x79, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x22, 0x64, 0x0a, 0x25, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x08, 0x73, 0x65, 0x67, + 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x69, + 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x73, 0x65, + 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x2d, 0x0a, 0x2b, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, + 0x79, 0x50, 0x65, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x51, 0x0a, 0x2c, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, + 0x50, 0x65, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x70, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22, 0x20, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x4e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xb0, 0x01, 0x0a, 0x1f, 0x47, + 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, + 0x0a, 0x0c, 0x69, 0x70, 0x66, 0x73, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x70, 0x66, 0x73, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x4b, 0x65, 0x79, 0x12, 0x24, + 0x0a, 0x0e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x65, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x4b, 0x65, 0x79, + 0x53, 0x65, 0x65, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, + 0x64, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x63, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x65, 0x65, 0x72, 0x73, 0x22, 0x28, 0x0a, + 0x26, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, + 0x72, 0x79, 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x50, 0x65, 0x65, 0x72, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x52, 0x0a, 0x27, 0x47, 0x65, 0x74, 0x4e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x6f, 0x6f, 0x74, + 0x73, 0x74, 0x72, 0x61, 0x70, 0x50, 0x65, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x5f, + 0x70, 0x65, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x62, 0x6f, 0x6f, + 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x50, 0x65, 0x65, 0x72, 0x73, 0x22, 0x85, 0x01, 0x0a, 0x1b, + 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, + 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x66, + 0x72, 0x6f, 0x6d, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x09, 0x66, 0x72, 0x6f, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, + 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x74, 0x6f, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x2c, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x05, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x22, 0x46, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x74, + 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x10, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x22, 0xad, 0x0d, 0x0a, 0x14, + 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, + 0x23, 0x0a, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x0b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x06, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x73, 0x12, 0x2c, 0x0a, 0x09, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50, + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x38, 0x0a, 0x0e, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x74, + 0x72, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x76, 0x65, 0x67, + 0x61, 0x2e, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6c, + 0x65, 0x64, 0x67, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x0f, + 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, + 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x0e, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x43, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x65, 0x67, 0x61, + 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x65, 0x72, 0x52, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0x20, + 0x0a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, + 0x76, 0x65, 0x67, 0x61, 0x2e, 0x56, 0x6f, 0x74, 0x65, 0x52, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x73, + 0x12, 0x7e, 0x0a, 0x24, 0x65, 0x72, 0x63, 0x32, 0x30, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, + 0x73, 0x69, 0x67, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x65, 0x64, + 0x5f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, + 0x2e, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, + 0x67, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, + 0x1f, 0x65, 0x72, 0x63, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, + 0x67, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, + 0x12, 0x84, 0x01, 0x0a, 0x26, 0x65, 0x72, 0x63, 0x32, 0x30, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, + 0x5f, 0x73, 0x69, 0x67, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x64, 0x5f, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x31, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, + 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x42, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x21, 0x65, 0x72, 0x63, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, + 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, + 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, + 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x54, + 0x72, 0x61, 0x64, 0x65, 0x52, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x0c, + 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x73, 0x18, 0x0b, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, + 0x53, 0x70, 0x65, 0x63, 0x52, 0x0b, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, + 0x73, 0x12, 0x31, 0x0a, 0x0b, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4f, 0x72, + 0x61, 0x63, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0a, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, + 0x44, 0x61, 0x74, 0x61, 0x12, 0x26, 0x0a, 0x07, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x18, + 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4d, 0x61, 0x72, + 0x6b, 0x65, 0x74, 0x52, 0x07, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x25, 0x0a, 0x07, + 0x70, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, + 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, + 0x69, 0x65, 0x73, 0x12, 0x37, 0x0a, 0x0d, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, 0x6c, 0x65, + 0x76, 0x65, 0x6c, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x76, 0x65, 0x67, + 0x61, 0x2e, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x52, 0x0c, + 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x12, 0x26, 0x0a, 0x07, + 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, + 0x76, 0x65, 0x67, 0x61, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x73, 0x12, 0x29, 0x0a, 0x08, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, + 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x44, 0x65, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x08, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, 0x12, + 0x32, 0x0a, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x18, 0x12, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x57, 0x69, 0x74, 0x68, + 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, + 0x61, 0x6c, 0x73, 0x12, 0x23, 0x0a, 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x18, 0x13, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, + 0x52, 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x14, 0x6c, 0x69, 0x71, 0x75, + 0x69, 0x64, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4c, 0x69, + 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x13, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, + 0x6c, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, + 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x61, 0x6c, 0x73, 0x12, 0x32, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x16, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, + 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x64, 0x65, 0x6c, 0x65, + 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, + 0x18, 0x17, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x42, 0x61, 0x73, + 0x69, 0x63, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x0f, 0x6e, 0x6f, 0x64, + 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x18, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, + 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x52, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x12, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x19, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x11, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x40, 0x0a, 0x0d, 0x6b, 0x65, + 0x79, 0x5f, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x1a, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, + 0x6b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x59, 0x0a, 0x16, + 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x72, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x1b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, + 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x74, + 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x14, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x4b, 0x65, 0x79, 0x52, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x62, 0x0a, 0x1a, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x70, + 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x18, 0x1c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x76, 0x65, + 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x52, 0x18, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, + 0x64, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x22, 0x65, 0x0a, 0x1d, 0x47, + 0x65, 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, + 0x74, 0x72, 0x65, 0x61, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x08, + 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, + 0xe2, 0x41, 0x01, 0x02, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x19, 0x0a, + 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x05, + 0x65, 0x70, 0x6f, 0x63, 0x68, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x65, 0x70, 0x6f, + 0x63, 0x68, 0x22, 0x6e, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x63, + 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6b, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, + 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, + 0x61, 0x72, 0x74, 0x79, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6b, 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6b, 0x22, 0xac, 0x01, 0x0a, 0x0e, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, + 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, + 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x2c, 0x0a, + 0x12, 0x66, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, + 0x73, 0x65, 0x71, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x66, 0x75, 0x6e, 0x64, 0x69, + 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x53, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x22, 0xbe, 0x01, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1f, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, + 0x64, 0x12, 0x20, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, - 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x22, 0x78, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, - 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x0d, 0x6b, 0x65, 0x79, 0x5f, 0x72, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x74, - 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6b, 0x65, - 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x98, 0x01, 0x0a, 0x1e, 0x45, - 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, - 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, - 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, + 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, + 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0x61, 0x0a, 0x12, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, + 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x64, 0x67, 0x65, 0x12, 0x33, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, + 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x8d, 0x01, 0x0a, 0x18, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x6a, 0x0a, 0x17, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, - 0x6d, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x64, 0x67, 0x65, - 0x12, 0x37, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, - 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, - 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, - 0x72, 0x22, 0x14, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x56, 0x65, 0x67, 0x61, 0x54, 0x69, 0x6d, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x33, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x56, 0x65, - 0x67, 0x61, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, - 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x89, 0x01, 0x0a, - 0x09, 0x44, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x2c, 0x0a, 0x0f, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x65, 0x6e, 0x64, 0x5f, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, - 0x01, 0x52, 0x0c, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x88, - 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x21, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x38, 0x0a, 0x20, 0x47, - 0x65, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, - 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, - 0x72, 0x65, 0x61, 0x64, 0x79, 0x22, 0x83, 0x02, 0x0a, 0x23, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x50, 0x72, 0x6f, - 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4a, 0x0a, - 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, - 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x50, 0x72, - 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x48, 0x00, 0x52, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x61, 0x70, 0x70, - 0x72, 0x6f, 0x76, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, - 0x52, 0x0a, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x42, 0x79, 0x88, 0x01, 0x01, 0x12, - 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x48, 0x02, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, - 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x0e, 0x0a, 0x0c, - 0x5f, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x42, 0x0d, 0x0a, 0x0b, - 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x98, 0x01, 0x0a, 0x24, - 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, - 0x61, 0x64, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x70, 0x0a, 0x1a, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, - 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, - 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x18, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x50, 0x72, 0x6f, - 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x22, 0x9f, 0x01, 0x0a, 0x21, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, - 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x05, - 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x50, 0x72, 0x6f, - 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, - 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, - 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x6f, 0x0a, 0x1b, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, - 0x73, 0x61, 0x6c, 0x45, 0x64, 0x67, 0x65, 0x12, 0x38, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, - 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x6e, 0x6f, 0x64, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x6b, 0x0a, 0x18, 0x4c, 0x69, 0x73, - 0x74, 0x43, 0x6f, 0x72, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6b, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, - 0x72, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x73, 0x6e, 0x61, 0x70, - 0x73, 0x68, 0x6f, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, - 0x72, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x63, 0x6f, 0x72, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, - 0x6f, 0x74, 0x73, 0x22, 0x89, 0x01, 0x0a, 0x16, 0x43, 0x6f, 0x72, 0x65, 0x53, 0x6e, 0x61, 0x70, - 0x73, 0x68, 0x6f, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, - 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, - 0x43, 0x6f, 0x72, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x45, 0x64, 0x67, 0x65, - 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, - 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, - 0x60, 0x0a, 0x10, 0x43, 0x6f, 0x72, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x45, - 0x64, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x72, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x44, - 0x61, 0x74, 0x61, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, - 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, - 0x72, 0x22, 0x81, 0x02, 0x0a, 0x0e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x67, - 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x68, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x48, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x6f, 0x5f, 0x68, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x74, 0x6f, 0x48, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x73, 0x65, - 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, - 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, - 0x12, 0x3d, 0x0a, 0x1b, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x68, 0x69, 0x73, - 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x48, - 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, - 0x29, 0x0a, 0x10, 0x64, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x62, - 0x61, 0x73, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, - 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, - 0x61, 0x69, 0x6e, 0x49, 0x64, 0x22, 0x2b, 0x0a, 0x29, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x73, 0x74, - 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, - 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x22, 0x8d, 0x01, 0x0a, 0x2a, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x73, 0x74, 0x52, 0x65, - 0x63, 0x65, 0x6e, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, - 0x72, 0x79, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x39, 0x0a, 0x07, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x67, 0x6d, - 0x65, 0x6e, 0x74, 0x52, 0x07, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0e, - 0x73, 0x77, 0x61, 0x72, 0x6d, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x65, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x4b, 0x65, 0x79, 0x53, 0x65, - 0x65, 0x64, 0x22, 0x26, 0x0a, 0x24, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x4e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x67, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x64, 0x0a, 0x25, 0x4c, 0x69, - 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, - 0x6f, 0x72, 0x79, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x08, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, - 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, - 0x22, 0x2d, 0x0a, 0x2b, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x50, 0x65, 0x65, 0x72, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, - 0x51, 0x0a, 0x2c, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x50, 0x65, 0x65, 0x72, 0x41, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x21, 0x0a, 0x0c, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x65, 0x73, 0x22, 0x20, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x22, 0xb0, 0x01, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x70, 0x66, 0x73, - 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x69, 0x70, 0x66, 0x73, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x73, - 0x77, 0x61, 0x72, 0x6d, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x73, 0x77, 0x61, 0x72, 0x6d, 0x4b, 0x65, 0x79, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x77, 0x61, 0x72, - 0x6d, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x65, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x65, 0x64, 0x12, 0x27, - 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x65, 0x65, 0x72, - 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x65, 0x64, 0x50, 0x65, 0x65, 0x72, 0x73, 0x22, 0x28, 0x0a, 0x26, 0x47, 0x65, 0x74, 0x4e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x6f, 0x6f, 0x74, - 0x73, 0x74, 0x72, 0x61, 0x70, 0x50, 0x65, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x22, 0x52, 0x0a, 0x27, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, - 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x50, - 0x65, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x0f, - 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x62, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, - 0x50, 0x65, 0x65, 0x72, 0x73, 0x22, 0x85, 0x01, 0x0a, 0x1b, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, - 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x72, 0x6f, 0x6d, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x74, 0x6f, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, - 0x2c, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x46, 0x0a, - 0x13, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, - 0xe2, 0x41, 0x01, 0x02, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x48, 0x61, 0x73, 0x68, 0x22, 0xad, 0x0d, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, - 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, - 0x0a, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x0d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, - 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x23, 0x0a, 0x06, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, 0x67, 0x61, - 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x2c, - 0x0a, 0x09, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x0e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x09, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x38, 0x0a, 0x0e, - 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4c, 0x65, 0x64, 0x67, - 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x45, - 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x0f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, - 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, - 0x52, 0x0e, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, - 0x12, 0x36, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x09, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0x20, 0x0a, 0x05, 0x76, 0x6f, 0x74, 0x65, - 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x56, - 0x6f, 0x74, 0x65, 0x52, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x73, 0x12, 0x7e, 0x0a, 0x24, 0x65, 0x72, - 0x63, 0x32, 0x30, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x73, 0x69, 0x67, 0x5f, 0x73, 0x69, - 0x67, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x62, 0x75, 0x6e, 0x64, 0x6c, - 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x52, 0x43, 0x32, 0x30, - 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x41, 0x64, - 0x64, 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x1f, 0x65, 0x72, 0x63, 0x32, 0x30, - 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x41, 0x64, - 0x64, 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x12, 0x84, 0x01, 0x0a, 0x26, 0x65, - 0x72, 0x63, 0x32, 0x30, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x5f, 0x73, 0x69, 0x67, 0x5f, 0x73, - 0x69, 0x67, 0x6e, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x5f, 0x62, 0x75, - 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x52, - 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, - 0x72, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x21, - 0x65, 0x72, 0x63, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, - 0x6e, 0x65, 0x72, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, - 0x73, 0x12, 0x23, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x06, - 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x0c, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, - 0x5f, 0x73, 0x70, 0x65, 0x63, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, - 0x65, 0x67, 0x61, 0x2e, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0b, - 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x73, 0x12, 0x31, 0x0a, 0x0b, 0x6f, - 0x72, 0x61, 0x63, 0x6c, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x44, 0x61, - 0x74, 0x61, 0x52, 0x0a, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x26, - 0x0a, 0x07, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x0c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x07, 0x6d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x25, 0x0a, 0x07, 0x70, 0x61, 0x72, 0x74, 0x69, 0x65, - 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50, - 0x61, 0x72, 0x74, 0x79, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x37, 0x0a, - 0x0d, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x18, 0x0f, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4d, 0x61, 0x72, 0x67, - 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x52, 0x0c, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x12, 0x26, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x52, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x29, - 0x0a, 0x08, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x0d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, - 0x08, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, 0x12, 0x32, 0x0a, 0x0b, 0x77, 0x69, 0x74, - 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, - 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, - 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x12, 0x23, 0x0a, - 0x06, 0x61, 0x73, 0x73, 0x65, 0x74, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, - 0x76, 0x65, 0x67, 0x61, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x06, 0x61, 0x73, 0x73, 0x65, - 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x14, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x5f, - 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x18, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, - 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x6c, 0x69, 0x71, 0x75, - 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x2c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x18, 0x15, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, - 0x61, 0x6c, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x12, 0x32, 0x0a, - 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x16, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x30, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x17, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x42, 0x61, 0x73, 0x69, 0x63, 0x52, 0x05, 0x6e, 0x6f, - 0x64, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x0f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6e, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x18, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, - 0x65, 0x67, 0x61, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x0e, 0x6e, - 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x45, 0x0a, - 0x12, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, - 0x65, 0x72, 0x73, 0x18, 0x19, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x76, 0x65, 0x67, 0x61, - 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, - 0x72, 0x52, 0x11, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, - 0x74, 0x65, 0x72, 0x73, 0x12, 0x40, 0x0a, 0x0d, 0x6b, 0x65, 0x79, 0x5f, 0x72, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x1a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x76, 0x65, - 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, - 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6b, 0x65, 0x79, 0x52, 0x6f, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x59, 0x0a, 0x16, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, - 0x75, 0x6d, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x1b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, - 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x14, 0x65, 0x74, 0x68, - 0x65, 0x72, 0x65, 0x75, 0x6d, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x62, 0x0a, 0x1a, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x75, 0x70, - 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x18, - 0x1c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, - 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x18, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x50, 0x72, 0x6f, 0x70, - 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x22, 0x65, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, 0x74, - 0x79, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6b, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x07, - 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x88, - 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x22, 0x6e, 0x0a, 0x1e, - 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4c, - 0x0a, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, - 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x63, - 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6b, 0x52, 0x0e, 0x61, 0x63, - 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6b, 0x22, 0xac, 0x01, 0x0a, - 0x0e, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, - 0x19, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x66, 0x75, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x10, 0x66, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, - 0x6f, 0x64, 0x53, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xbe, 0x01, 0x0a, 0x1a, - 0x4c, 0x69, 0x73, 0x74, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x08, 0x70, 0x61, - 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, - 0x01, 0x02, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x09, 0x6d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, - 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01, - 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, - 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, - 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x61, 0x0a, 0x12, - 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x64, - 0x67, 0x65, 0x12, 0x33, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, - 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, - 0x8d, 0x01, 0x0a, 0x18, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, - 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x05, - 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x75, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x64, 0x67, 0x65, - 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, - 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, - 0x73, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, - 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, - 0x0a, 0x10, 0x66, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, - 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x75, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x66, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x73, 0x22, 0xde, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x75, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x21, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x08, 0x6d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x3e, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, - 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x65, - 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x09, 0x64, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, - 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x64, 0x61, 0x74, 0x65, - 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x5e, 0x0a, 0x11, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, - 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x45, 0x64, 0x67, 0x65, 0x12, 0x31, 0x0a, 0x04, 0x6e, 0x6f, - 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, - 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, - 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x8b, 0x01, 0x0a, 0x17, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x38, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x22, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, - 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, - 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x73, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x75, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x10, 0x66, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, + 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x22, 0x6f, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x75, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x51, 0x0a, 0x0f, 0x66, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, - 0x69, 0x6f, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x75, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x66, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, - 0x69, 0x6f, 0x64, 0x73, 0x22, 0xdd, 0x02, 0x0a, 0x22, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x75, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, - 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x09, 0x6d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, - 0xe2, 0x41, 0x01, 0x02, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x3e, - 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, - 0x52, 0x09, 0x64, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4a, - 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, + 0x2e, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x66, 0x75, 0x6e, 0x64, 0x69, + 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xde, 0x01, 0x0a, 0x19, 0x4c, + 0x69, 0x73, 0x74, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, + 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, + 0x02, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x3e, 0x0a, 0x0a, 0x64, + 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x09, 0x64, + 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0a, 0x70, + 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01, 0x52, 0x0a, + 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, + 0x0b, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x0d, 0x0a, 0x0b, + 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x5e, 0x0a, 0x11, 0x46, + 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x45, 0x64, 0x67, 0x65, + 0x12, 0x31, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x44, 0x61, 0x74, - 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x01, 0x52, - 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x73, 0x65, - 0x71, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x03, 0x73, 0x65, 0x71, 0x88, 0x01, - 0x01, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x48, 0x03, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x6e, - 0x67, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x06, 0x0a, - 0x04, 0x5f, 0x73, 0x65, 0x71, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x70, 0x0a, 0x1a, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, - 0x65, 0x72, 0x69, 0x6f, 0x64, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x45, 0x64, - 0x67, 0x65, 0x12, 0x3a, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x26, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x44, - 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x9d, 0x01, 0x0a, 0x20, 0x46, 0x75, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, - 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x05, 0x65, - 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x75, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, - 0x69, 0x6e, 0x74, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, - 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, - 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x95, 0x01, 0x0a, 0x23, 0x4c, 0x69, 0x73, 0x74, 0x46, - 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x44, 0x61, 0x74, 0x61, - 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6e, - 0x0a, 0x1a, 0x66, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, - 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, - 0x6f, 0x64, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x17, 0x66, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, - 0x72, 0x69, 0x6f, 0x64, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x22, 0x0d, - 0x0a, 0x0b, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x0e, 0x0a, - 0x0c, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9f, 0x01, - 0x0a, 0x09, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x04, 0x73, - 0x69, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0a, 0x2e, 0x76, 0x65, 0x67, 0x61, - 0x2e, 0x53, 0x69, 0x64, 0x65, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x04, 0x73, 0x69, 0x64, - 0x65, 0x12, 0x1a, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x22, 0x0a, - 0x09, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, - 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x09, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, - 0x67, 0x12, 0x2c, 0x0a, 0x0f, 0x69, 0x73, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, - 0x52, 0x0d, 0x69, 0x73, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x22, - 0xca, 0x06, 0x0a, 0x17, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x73, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x09, 0x6d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, - 0xe2, 0x41, 0x01, 0x02, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x25, - 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x03, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x6e, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x13, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, - 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x11, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, - 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x32, 0x0a, 0x06, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, - 0x3a, 0x0a, 0x16, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x14, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x3c, 0x0a, 0x17, 0x67, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x62, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, - 0x01, 0x02, 0x52, 0x15, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x45, 0x0a, 0x1c, 0x6f, 0x72, 0x64, - 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x19, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x72, 0x67, - 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, - 0x12, 0x37, 0x0a, 0x0b, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4d, 0x61, 0x72, - 0x67, 0x69, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x0a, 0x6d, - 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x28, 0x0a, 0x0d, 0x6d, 0x61, 0x72, - 0x67, 0x69, 0x6e, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x00, 0x52, 0x0c, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, - 0x88, 0x01, 0x01, 0x12, 0x79, 0x0a, 0x38, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x72, - 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x32, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x49, 0x6e, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, - 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x5e, - 0x0a, 0x2a, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x6d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x73, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x08, 0x48, 0x02, 0x52, 0x25, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x4c, 0x69, 0x71, 0x75, 0x69, - 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x54, 0x6f, 0x4d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x73, 0x88, 0x01, 0x01, 0x42, 0x10, - 0x0a, 0x0e, 0x5f, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, - 0x42, 0x3b, 0x0a, 0x39, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x71, - 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, - 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, - 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x42, 0x2d, 0x0a, - 0x2b, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x6d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x73, 0x22, 0x8a, 0x02, 0x0a, - 0x18, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x6d, 0x61, 0x72, - 0x67, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4d, 0x61, 0x72, 0x67, - 0x69, 0x6e, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x52, 0x06, 0x6d, 0x61, 0x72, 0x67, - 0x69, 0x6e, 0x12, 0x6d, 0x0a, 0x1c, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, - 0x5f, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, - 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, - 0x74, 0x65, 0x72, 0x61, 0x6c, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, 0x45, 0x73, 0x74, - 0x69, 0x6d, 0x61, 0x74, 0x65, 0x52, 0x1a, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, - 0x6c, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, - 0x65, 0x12, 0x46, 0x0a, 0x0b, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x6c, 0x69, - 0x71, 0x75, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x58, 0x0a, 0x1a, 0x43, 0x6f, 0x6c, - 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, 0x45, - 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x77, 0x6f, 0x72, 0x73, 0x74, - 0x5f, 0x63, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x77, 0x6f, 0x72, - 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x63, - 0x61, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x65, 0x73, 0x74, 0x43, - 0x61, 0x73, 0x65, 0x22, 0x74, 0x0a, 0x0e, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x45, 0x73, 0x74, - 0x69, 0x6d, 0x61, 0x74, 0x65, 0x12, 0x31, 0x0a, 0x0a, 0x77, 0x6f, 0x72, 0x73, 0x74, 0x5f, 0x63, - 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x76, 0x65, 0x67, 0x61, - 0x2e, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x52, 0x09, 0x77, - 0x6f, 0x72, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x09, 0x62, 0x65, 0x73, 0x74, - 0x5f, 0x63, 0x61, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x76, 0x65, - 0x67, 0x61, 0x2e, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x52, - 0x08, 0x62, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x22, 0x97, 0x01, 0x0a, 0x13, 0x4c, 0x69, - 0x71, 0x75, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, - 0x65, 0x12, 0x40, 0x0a, 0x0a, 0x77, 0x6f, 0x72, 0x73, 0x74, 0x5f, 0x63, 0x61, 0x73, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x73, 0x74, 0x43, - 0x61, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x09, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x61, 0x73, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, 0x08, 0x62, 0x65, 0x73, 0x74, 0x43, - 0x61, 0x73, 0x65, 0x22, 0xa2, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x6f, 0x70, 0x65, 0x6e, - 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x70, 0x65, 0x6e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x4f, 0x6e, - 0x6c, 0x79, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x69, 0x6e, 0x67, 0x5f, - 0x62, 0x75, 0x79, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x12, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x75, 0x79, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x69, 0x6e, - 0x67, 0x5f, 0x73, 0x65, 0x6c, 0x6c, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x13, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x65, - 0x6c, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x22, 0x22, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x43, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x50, 0x72, - 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x7f, 0x0a, 0x21, - 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, - 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x5a, 0x0a, 0x18, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x66, - 0x65, 0x72, 0x72, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x50, 0x72, - 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x16, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, - 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x22, 0xb6, 0x02, - 0x0a, 0x0f, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, - 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x36, 0x0a, 0x0d, 0x62, - 0x65, 0x6e, 0x65, 0x66, 0x69, 0x74, 0x5f, 0x74, 0x69, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x42, 0x65, 0x6e, 0x65, 0x66, 0x69, - 0x74, 0x54, 0x69, 0x65, 0x72, 0x52, 0x0c, 0x62, 0x65, 0x6e, 0x65, 0x66, 0x69, 0x74, 0x54, 0x69, - 0x65, 0x72, 0x73, 0x12, 0x37, 0x0a, 0x18, 0x65, 0x6e, 0x64, 0x5f, 0x6f, 0x66, 0x5f, 0x70, 0x72, - 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x15, 0x65, 0x6e, 0x64, 0x4f, 0x66, 0x50, 0x72, 0x6f, 0x67, - 0x72, 0x61, 0x6d, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x23, 0x0a, 0x0d, - 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x0c, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x4c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x12, 0x36, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x65, - 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, - 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x65, 0x72, 0x52, 0x0c, 0x73, 0x74, 0x61, - 0x6b, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x65, 0x72, 0x73, 0x12, 0x1e, 0x0a, 0x08, 0x65, 0x6e, 0x64, - 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x07, 0x65, - 0x6e, 0x64, 0x65, 0x64, 0x41, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x6e, - 0x64, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x22, 0x9c, 0x01, 0x0a, 0x0b, 0x52, 0x65, 0x66, 0x65, 0x72, - 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, - 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, - 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, - 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, - 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x73, 0x22, 0x5b, 0x0a, 0x0f, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, - 0x6c, 0x53, 0x65, 0x74, 0x45, 0x64, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, - 0x6c, 0x53, 0x65, 0x74, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, - 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, - 0x6f, 0x72, 0x22, 0x87, 0x01, 0x0a, 0x15, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, - 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x05, - 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, - 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, + 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x52, 0x04, 0x6e, + 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x8b, 0x01, 0x0a, 0x17, + 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, + 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x6f, 0x0a, 0x1a, 0x4c, 0x69, 0x73, + 0x74, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x0f, 0x66, 0x75, 0x6e, 0x64, 0x69, + 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x66, 0x75, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x73, 0x22, 0xdd, 0x02, 0x0a, 0x22, 0x4c, + 0x69, 0x73, 0x74, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, + 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x21, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, + 0x65, 0x74, 0x49, 0x64, 0x12, 0x3e, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x61, 0x6e, + 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, + 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x09, 0x64, 0x61, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x67, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, + 0x69, 0x6f, 0x64, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x53, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x48, 0x01, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x15, 0x0a, 0x03, 0x73, 0x65, 0x71, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, + 0x03, 0x73, 0x65, 0x71, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, + 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x03, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x64, 0x61, + 0x74, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x73, 0x65, 0x71, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, + 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x70, 0x0a, 0x1a, 0x46, 0x75, + 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x44, 0x61, 0x74, 0x61, 0x50, + 0x6f, 0x69, 0x6e, 0x74, 0x45, 0x64, 0x67, 0x65, 0x12, 0x3a, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, + 0x65, 0x72, 0x69, 0x6f, 0x64, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x04, + 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x9d, 0x01, 0x0a, + 0x20, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x44, 0x61, + 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x41, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, + 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x84, 0x02, 0x0a, - 0x17, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0f, 0x72, 0x65, 0x66, 0x65, - 0x72, 0x72, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x00, 0x52, 0x0d, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, - 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x72, 0x65, 0x66, 0x65, 0x72, - 0x72, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x08, 0x72, 0x65, 0x66, - 0x65, 0x72, 0x72, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x72, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x07, 0x72, 0x65, 0x66, - 0x65, 0x72, 0x65, 0x65, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x72, 0x65, 0x66, 0x65, - 0x72, 0x72, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, - 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x72, - 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x72, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x65, 0x22, 0x67, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, - 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x4b, 0x0a, 0x0d, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x74, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, - 0x6c, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, - 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x22, 0xa3, 0x02, 0x0a, - 0x12, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x5f, - 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, - 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, - 0x66, 0x65, 0x72, 0x65, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x5f, - 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, - 0x41, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x61, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x4c, 0x0a, - 0x23, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x5f, 0x6e, - 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x74, 0x61, 0x6b, 0x65, 0x72, 0x5f, 0x76, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1f, 0x74, 0x6f, 0x74, 0x61, - 0x6c, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, - 0x54, 0x61, 0x6b, 0x65, 0x72, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x45, 0x0a, 0x1f, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x5f, 0x67, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x1c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x73, 0x22, 0x69, 0x0a, 0x16, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, - 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x45, 0x64, 0x67, 0x65, 0x12, 0x37, 0x0a, 0x04, - 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x66, - 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x52, - 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x95, 0x01, - 0x0a, 0x1c, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, - 0x65, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3d, - 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, - 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x65, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, - 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xd6, 0x02, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0f, 0x72, 0x65, 0x66, 0x65, - 0x72, 0x72, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x00, 0x52, 0x0d, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, - 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x72, 0x65, 0x66, 0x65, 0x72, - 0x72, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x08, 0x72, 0x65, 0x66, - 0x65, 0x72, 0x72, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x72, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x07, 0x72, 0x65, 0x66, - 0x65, 0x72, 0x65, 0x65, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x12, 0x61, 0x67, 0x67, 0x72, 0x65, - 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0d, 0x48, 0x04, 0x52, 0x11, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, - 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, - 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0b, - 0x0a, 0x09, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x42, 0x0a, 0x0a, 0x08, 0x5f, - 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x67, 0x67, 0x72, - 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x22, 0x84, - 0x01, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, - 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x61, 0x0a, 0x15, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x5f, 0x73, - 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x52, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x13, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, - 0x65, 0x72, 0x65, 0x65, 0x73, 0x22, 0x86, 0x02, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x52, 0x65, 0x66, - 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, - 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x0d, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, - 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x61, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x07, 0x61, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x88, 0x01, - 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x02, 0x52, 0x07, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x48, 0x03, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, - 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x5f, - 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x74, 0x5f, 0x65, 0x70, - 0x6f, 0x63, 0x68, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x42, - 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x60, - 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x52, - 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, - 0x22, 0x91, 0x01, 0x0a, 0x1a, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x3b, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, + 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x95, 0x01, 0x0a, + 0x23, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, + 0x6f, 0x64, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6e, 0x0a, 0x1a, 0x66, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, + 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x75, 0x6e, 0x64, 0x69, + 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, + 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x17, 0x66, 0x75, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, + 0x69, 0x6e, 0x74, 0x73, 0x22, 0x0d, 0x0a, 0x0b, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x22, 0x0e, 0x0a, 0x0c, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x9f, 0x01, 0x0a, 0x09, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x24, 0x0a, 0x04, 0x73, 0x69, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x0a, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x53, 0x69, 0x64, 0x65, 0x42, 0x04, 0xe2, 0x41, 0x01, + 0x02, 0x52, 0x04, 0x73, 0x69, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x05, 0x70, 0x72, + 0x69, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x09, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x09, 0x72, 0x65, + 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x12, 0x2c, 0x0a, 0x0f, 0x69, 0x73, 0x5f, 0x6d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, + 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x0d, 0x69, 0x73, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x22, 0xca, 0x06, 0x0a, 0x17, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, + 0x74, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x21, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, + 0x65, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x76, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, + 0x0a, 0x6f, 0x70, 0x65, 0x6e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x13, 0x61, + 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x72, 0x69, + 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x11, + 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x72, 0x69, 0x63, + 0x65, 0x12, 0x32, 0x0a, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x3a, 0x0a, 0x16, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x14, 0x6d, 0x61, 0x72, + 0x67, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, + 0x65, 0x12, 0x3c, 0x0a, 0x17, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x5f, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x15, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, + 0x45, 0x0a, 0x1c, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x19, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, + 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x37, 0x0a, 0x0b, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x76, 0x65, + 0x67, 0x61, 0x2e, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x04, 0xe2, + 0x41, 0x01, 0x02, 0x52, 0x0a, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, + 0x28, 0x0a, 0x0d, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, + 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x79, 0x0a, 0x38, 0x69, 0x6e, 0x63, + 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, 0x69, 0x6e, + 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, + 0x74, 0x65, 0x72, 0x61, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x32, 0x69, + 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x50, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x49, 0x6e, 0x41, 0x76, + 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, + 0x6c, 0x88, 0x01, 0x01, 0x12, 0x5e, 0x0a, 0x2a, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x6c, 0x69, + 0x71, 0x75, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, + 0x74, 0x6f, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, + 0x6c, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x25, 0x73, 0x63, 0x61, 0x6c, + 0x65, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x69, 0x63, + 0x65, 0x54, 0x6f, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, + 0x73, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, + 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x3b, 0x0a, 0x39, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, + 0x64, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x61, + 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, + 0x72, 0x61, 0x6c, 0x42, 0x2d, 0x0a, 0x2b, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x6c, 0x69, + 0x71, 0x75, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, + 0x74, 0x6f, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, + 0x6c, 0x73, 0x22, 0x8a, 0x02, 0x0a, 0x18, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x50, + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x37, 0x0a, 0x06, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, + 0x52, 0x06, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x12, 0x6d, 0x0a, 0x1c, 0x63, 0x6f, 0x6c, 0x6c, + 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, 0x5f, + 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, - 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x65, 0x0a, 0x14, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, - 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x45, 0x64, 0x67, 0x65, 0x12, 0x35, 0x0a, 0x04, - 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x66, - 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x04, 0x6e, - 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0xf2, 0x03, 0x0a, 0x10, - 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x12, 0x19, 0x0a, 0x08, 0x61, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x07, 0x61, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x59, 0x0a, 0x2a, 0x72, - 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x72, 0x75, 0x6e, 0x6e, - 0x69, 0x6e, 0x67, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x74, 0x61, 0x6b, - 0x65, 0x72, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x25, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x6e, - 0x69, 0x6e, 0x67, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x54, 0x61, 0x6b, 0x65, 0x72, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, - 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, - 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x66, 0x61, - 0x63, 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x69, 0x73, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, - 0x3d, 0x0a, 0x1b, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x5f, 0x74, 0x61, 0x6b, 0x65, 0x72, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x4e, 0x6f, 0x74, 0x69, 0x6f, - 0x6e, 0x61, 0x6c, 0x54, 0x61, 0x6b, 0x65, 0x72, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x2d, - 0x0a, 0x12, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, - 0x6c, 0x69, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x72, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x73, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x12, 0x3a, 0x0a, - 0x19, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, - 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x17, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x4d, - 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x61, 0x73, - 0x5f, 0x65, 0x6c, 0x69, 0x67, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0b, 0x77, 0x61, 0x73, 0x45, 0x6c, 0x69, 0x67, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x32, 0x0a, 0x15, - 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x5f, 0x74, 0x61, 0x6b, 0x65, 0x72, 0x5f, 0x76, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x72, 0x65, 0x66, - 0x65, 0x72, 0x72, 0x65, 0x72, 0x54, 0x61, 0x6b, 0x65, 0x72, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x22, 0xd4, 0x02, 0x0a, 0x04, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, - 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, - 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x08, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x55, 0x72, 0x6c, 0x88, - 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x75, 0x72, 0x6c, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, - 0x55, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x12, 0x28, 0x0a, - 0x10, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, - 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x41, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, - 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, 0x6c, - 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, - 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x5f, - 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x75, 0x72, 0x6c, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x61, 0x76, 0x61, - 0x74, 0x61, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x22, 0x4d, 0x0a, 0x08, 0x54, 0x65, 0x61, 0x6d, 0x45, - 0x64, 0x67, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x15, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x79, 0x0a, 0x0e, 0x54, 0x65, 0x61, 0x6d, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x45, 0x64, - 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, - 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, - 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x22, 0xba, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x02, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x65, 0x61, 0x6d, 0x5f, - 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x42, - 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x4a, - 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x05, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x22, 0xe2, 0x01, 0x0a, 0x1a, 0x4c, - 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, - 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x07, 0x74, 0x65, 0x61, - 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x74, 0x65, - 0x61, 0x6d, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x12, 0x61, 0x67, 0x67, 0x72, 0x65, - 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x11, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0a, 0x70, - 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x49, 0x6e, 0x63, 0x72, 0x65, + 0x61, 0x73, 0x65, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x52, 0x1a, 0x63, 0x6f, 0x6c, + 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, 0x45, + 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x12, 0x46, 0x0a, 0x0b, 0x6c, 0x69, 0x71, 0x75, 0x69, + 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, + 0x69, 0x71, 0x75, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, + 0x74, 0x65, 0x52, 0x0b, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0x58, 0x0a, 0x1a, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x49, 0x6e, 0x63, + 0x72, 0x65, 0x61, 0x73, 0x65, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, + 0x0a, 0x77, 0x6f, 0x72, 0x73, 0x74, 0x5f, 0x63, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, + 0x62, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x61, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x62, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x22, 0x74, 0x0a, 0x0e, 0x4d, 0x61, 0x72, + 0x67, 0x69, 0x6e, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x12, 0x31, 0x0a, 0x0a, 0x77, + 0x6f, 0x72, 0x73, 0x74, 0x5f, 0x63, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x12, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, 0x76, + 0x65, 0x6c, 0x73, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x12, 0x2f, + 0x0a, 0x09, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x61, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x12, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, + 0x65, 0x76, 0x65, 0x6c, 0x73, 0x52, 0x08, 0x62, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x22, + 0x97, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, + 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x12, 0x40, 0x0a, 0x0a, 0x77, 0x6f, 0x72, 0x73, 0x74, + 0x5f, 0x63, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, + 0x71, 0x75, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, 0x09, + 0x77, 0x6f, 0x72, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x09, 0x62, 0x65, 0x73, + 0x74, 0x5f, 0x63, 0x61, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, + 0x69, 0x71, 0x75, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, + 0x08, 0x62, 0x65, 0x73, 0x74, 0x43, 0x61, 0x73, 0x65, 0x22, 0xa2, 0x01, 0x0a, 0x10, 0x4c, 0x69, + 0x71, 0x75, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x28, + 0x0a, 0x10, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x6f, 0x6e, + 0x6c, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x70, 0x65, 0x6e, 0x56, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x6e, 0x63, 0x6c, + 0x75, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x75, 0x79, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x69, 0x6e, + 0x67, 0x42, 0x75, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x69, 0x6e, + 0x63, 0x6c, 0x75, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x6c, 0x6c, 0x5f, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x69, 0x6e, 0x63, 0x6c, 0x75, + 0x64, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x6c, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x22, 0x22, + 0x0a, 0x20, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x66, 0x65, + 0x72, 0x72, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x22, 0x7f, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x18, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x67, + 0x72, 0x61, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x66, 0x65, + 0x72, 0x72, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x16, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x67, + 0x72, 0x61, 0x6d, 0x22, 0xb6, 0x02, 0x0a, 0x0f, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, + 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x36, 0x0a, 0x0d, 0x62, 0x65, 0x6e, 0x65, 0x66, 0x69, 0x74, 0x5f, 0x74, 0x69, 0x65, + 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, + 0x42, 0x65, 0x6e, 0x65, 0x66, 0x69, 0x74, 0x54, 0x69, 0x65, 0x72, 0x52, 0x0c, 0x62, 0x65, 0x6e, + 0x65, 0x66, 0x69, 0x74, 0x54, 0x69, 0x65, 0x72, 0x73, 0x12, 0x37, 0x0a, 0x18, 0x65, 0x6e, 0x64, + 0x5f, 0x6f, 0x66, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x15, 0x65, 0x6e, 0x64, + 0x4f, 0x66, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x6c, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x77, 0x69, 0x6e, 0x64, 0x6f, + 0x77, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x36, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x6b, 0x69, + 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, + 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x65, + 0x72, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x65, 0x72, 0x73, 0x12, + 0x1e, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x03, 0x48, 0x00, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x41, 0x74, 0x88, 0x01, 0x01, 0x42, + 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x22, 0x9c, 0x01, 0x0a, + 0x0b, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, + 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, + 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x22, 0x5b, 0x0a, 0x0f, 0x52, + 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x45, 0x64, 0x67, 0x65, 0x12, 0x30, + 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x52, + 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x87, 0x01, 0x0a, 0x15, 0x52, 0x65, 0x66, + 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x45, + 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, + 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x22, 0x84, 0x02, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, + 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, + 0x0a, 0x0f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0d, 0x72, 0x65, 0x66, 0x65, 0x72, + 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0a, 0x70, + 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x02, 0x52, 0x0a, - 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, - 0x08, 0x5f, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x67, - 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, - 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, - 0x69, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x53, 0x74, 0x61, 0x74, - 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, - 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, - 0x74, 0x69, 0x63, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, - 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x22, 0x8e, 0x01, 0x0a, 0x19, 0x54, - 0x65, 0x61, 0x6d, 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x53, 0x74, - 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, + 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01, 0x52, 0x0a, + 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, + 0x08, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x02, 0x52, 0x08, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x1d, + 0x0a, 0x07, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x03, 0x52, 0x07, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, + 0x10, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, + 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x42, 0x0a, 0x0a, + 0x08, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x22, 0x67, 0x0a, 0x18, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x0d, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, + 0x6c, 0x5f, 0x73, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x52, + 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, + 0x74, 0x73, 0x22, 0xa3, 0x02, 0x0a, 0x12, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, + 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x72, 0x65, 0x66, + 0x65, 0x72, 0x72, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x49, + 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6a, + 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, + 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x41, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x74, 0x5f, 0x65, + 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x61, 0x74, 0x45, 0x70, + 0x6f, 0x63, 0x68, 0x12, 0x4c, 0x0a, 0x23, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x65, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x74, 0x61, + 0x6b, 0x65, 0x72, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x1f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x4e, 0x6f, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x54, 0x61, 0x6b, 0x65, 0x72, 0x56, 0x6f, 0x6c, 0x75, 0x6d, + 0x65, 0x12, 0x45, 0x0a, 0x1f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x65, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1c, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x22, 0x69, 0x0a, 0x16, 0x52, 0x65, 0x66, 0x65, + 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x45, 0x64, + 0x67, 0x65, 0x12, 0x37, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, + 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, + 0x73, 0x6f, 0x72, 0x22, 0x95, 0x01, 0x0a, 0x1c, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, + 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, + 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x61, 0x0a, 0x12, 0x54, - 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x45, 0x64, 0x67, - 0x65, 0x12, 0x33, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, - 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x84, - 0x03, 0x0a, 0x0e, 0x54, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, - 0x73, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x5f, 0x76, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x51, - 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x15, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x5f, 0x72, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, - 0x12, 0x50, 0x0a, 0x0f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x5f, 0x72, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x51, 0x75, 0x61, 0x6e, - 0x74, 0x75, 0x6d, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, - 0x63, 0x68, 0x52, 0x0e, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x52, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x67, 0x61, 0x6d, 0x65, - 0x73, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, - 0x12, 0x21, 0x0a, 0x0c, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x64, - 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x50, 0x6c, 0x61, - 0x79, 0x65, 0x64, 0x12, 0x50, 0x0a, 0x0f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x5f, 0x76, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x51, - 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x50, 0x65, 0x72, - 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x0e, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x56, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x22, 0x62, 0x0a, 0x16, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, - 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, - 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, - 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x32, 0x0a, 0x15, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x71, - 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x51, 0x75, 0x61, 0x6e, 0x74, - 0x75, 0x6d, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x22, 0x62, 0x0a, 0x16, 0x51, 0x75, 0x61, - 0x6e, 0x74, 0x75, 0x6d, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, - 0x6f, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x32, 0x0a, 0x15, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x51, - 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x22, 0x84, 0x02, - 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x08, 0x70, - 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x12, 0x61, - 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, - 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x11, 0x61, 0x67, 0x67, 0x72, 0x65, - 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x88, 0x01, 0x01, 0x12, - 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x48, 0x02, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, - 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x42, 0x15, - 0x0a, 0x13, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, - 0x70, 0x6f, 0x63, 0x68, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x75, 0x0a, 0x21, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x0a, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xd6, 0x02, 0x0a, 0x1e, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x52, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, + 0x0a, 0x0f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0d, 0x72, 0x65, 0x66, 0x65, 0x72, + 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0a, 0x70, + 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x01, 0x52, 0x0a, + 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, + 0x08, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x02, 0x52, 0x08, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x1d, + 0x0a, 0x07, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x03, 0x52, 0x07, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, + 0x12, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x70, 0x6f, + 0x63, 0x68, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x04, 0x52, 0x11, 0x61, 0x67, 0x67, + 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x88, 0x01, + 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x5f, 0x73, + 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, + 0x72, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x42, 0x15, 0x0a, + 0x13, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x70, + 0x6f, 0x63, 0x68, 0x73, 0x22, 0x84, 0x01, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, + 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x61, 0x0a, 0x15, 0x72, 0x65, 0x66, 0x65, + 0x72, 0x72, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, + 0x61, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, + 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x22, 0x86, 0x02, 0x0a, 0x1a, + 0x47, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0f, 0x72, 0x65, + 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0d, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, + 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x61, 0x74, 0x5f, 0x65, 0x70, + 0x6f, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x07, 0x61, 0x74, 0x45, + 0x70, 0x6f, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x72, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x07, 0x72, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x65, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x03, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x72, 0x65, 0x66, + 0x65, 0x72, 0x72, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, + 0x5f, 0x61, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x72, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x60, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, + 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, + 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x22, 0x91, 0x01, 0x0a, 0x1a, 0x52, 0x65, 0x66, 0x65, 0x72, + 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, + 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, + 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x65, 0x0a, 0x14, 0x52, 0x65, + 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x45, 0x64, + 0x67, 0x65, 0x12, 0x35, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, + 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, + 0x72, 0x22, 0xf2, 0x03, 0x0a, 0x10, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, + 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x74, 0x5f, 0x65, 0x70, 0x6f, + 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x61, 0x74, 0x45, 0x70, 0x6f, 0x63, + 0x68, 0x12, 0x59, 0x0a, 0x2a, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x5f, 0x73, 0x65, + 0x74, 0x5f, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x5f, 0x74, 0x61, 0x6b, 0x65, 0x72, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x25, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, + 0x65, 0x74, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x54, 0x61, 0x6b, 0x65, 0x72, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, + 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x69, 0x73, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, + 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, + 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x46, + 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x3d, 0x0a, 0x1b, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x6e, + 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x74, 0x61, 0x6b, 0x65, 0x72, 0x5f, 0x76, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x65, 0x70, 0x6f, 0x63, + 0x68, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x54, 0x61, 0x6b, 0x65, 0x72, 0x56, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5f, + 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x11, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, + 0x69, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x19, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x66, + 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x46, + 0x61, 0x63, 0x74, 0x6f, 0x72, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x12, + 0x21, 0x0a, 0x0c, 0x77, 0x61, 0x73, 0x5f, 0x65, 0x6c, 0x69, 0x67, 0x69, 0x62, 0x6c, 0x65, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x77, 0x61, 0x73, 0x45, 0x6c, 0x69, 0x67, 0x69, 0x62, + 0x6c, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x5f, 0x74, + 0x61, 0x6b, 0x65, 0x72, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x13, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x54, 0x61, 0x6b, 0x65, 0x72, + 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x22, 0xd4, 0x02, 0x0a, 0x04, 0x54, 0x65, 0x61, 0x6d, 0x12, + 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x66, 0x65, + 0x72, 0x72, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x66, 0x65, + 0x72, 0x72, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x08, 0x74, 0x65, 0x61, 0x6d, + 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x74, 0x65, + 0x61, 0x6d, 0x55, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x61, 0x76, 0x61, 0x74, + 0x61, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x09, + 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x63, + 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x63, 0x6c, 0x6f, + 0x73, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x1d, 0x0a, + 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x09, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x09, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x75, 0x72, 0x6c, 0x42, 0x0d, + 0x0a, 0x0b, 0x5f, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x22, 0x4d, 0x0a, + 0x08, 0x54, 0x65, 0x61, 0x6d, 0x45, 0x64, 0x67, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x6e, 0x6f, 0x64, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x04, + 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x79, 0x0a, 0x0e, + 0x54, 0x65, 0x61, 0x6d, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, + 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, - 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, - 0x73, 0x74, 0x69, 0x63, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x0a, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x22, 0x9a, 0x01, 0x0a, 0x1f, - 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, - 0x73, 0x74, 0x69, 0x63, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x3f, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, + 0x54, 0x65, 0x61, 0x6d, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, + 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, + 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xba, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, + 0x54, 0x65, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x07, + 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x61, + 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, + 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, + 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x69, - 0x73, 0x74, 0x69, 0x63, 0x73, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, - 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, - 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x6d, 0x0a, 0x18, 0x54, 0x65, 0x61, 0x6d, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, - 0x45, 0x64, 0x67, 0x65, 0x12, 0x39, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, - 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x8c, 0x03, 0x0a, 0x14, 0x54, 0x65, 0x61, 0x6d, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, - 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x5f, 0x76, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x74, 0x6f, 0x74, 0x61, 0x6c, - 0x51, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x32, 0x0a, - 0x15, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x5f, 0x72, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x73, 0x12, 0x50, 0x0a, 0x0f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x5f, 0x72, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x51, 0x75, 0x61, - 0x6e, 0x74, 0x75, 0x6d, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, - 0x6f, 0x63, 0x68, 0x52, 0x0e, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x52, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x67, 0x61, 0x6d, - 0x65, 0x73, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, - 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, - 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x64, 0x12, 0x50, 0x0a, 0x0f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x5f, - 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, - 0x51, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x50, 0x65, - 0x72, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x0e, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x22, 0x89, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x54, - 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, - 0x64, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x02, 0x52, 0x0a, 0x70, + 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, + 0x5f, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x61, 0x72, + 0x74, 0x79, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x4a, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x05, 0x74, 0x65, 0x61, + 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x74, 0x65, 0x61, 0x6d, 0x73, + 0x22, 0xe2, 0x01, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x53, 0x74, + 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1c, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, + 0x12, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x70, 0x6f, + 0x63, 0x68, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x11, 0x61, 0x67, 0x67, + 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x88, 0x01, + 0x01, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0x85, 0x01, 0x0a, 0x0b, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, - 0x66, 0x65, 0x72, 0x65, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x5f, - 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, - 0x41, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, - 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x6a, 0x6f, 0x69, - 0x6e, 0x65, 0x64, 0x41, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x22, 0x5b, 0x0a, 0x0f, 0x54, 0x65, - 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x45, 0x64, 0x67, 0x65, 0x12, 0x30, 0x0a, - 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, - 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x87, 0x01, 0x0a, 0x15, 0x54, 0x65, 0x61, 0x6d, - 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x36, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x45, 0x64, + 0x6f, 0x6e, 0x48, 0x02, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x42, + 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x69, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, + 0x6d, 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, + 0x63, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x73, + 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, + 0x22, 0x8e, 0x01, 0x0a, 0x19, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, + 0x74, 0x69, 0x63, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, + 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x54, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x22, 0x67, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, - 0x65, 0x72, 0x65, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, - 0x0d, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x74, 0x65, - 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x22, 0x72, 0x0a, 0x12, 0x54, 0x65, - 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, - 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6a, 0x6f, 0x69, - 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6a, 0x6f, - 0x69, 0x6e, 0x65, 0x64, 0x41, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, - 0x5f, 0x61, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x0d, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x41, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x22, 0x69, - 0x0a, 0x16, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x48, 0x69, 0x73, - 0x74, 0x6f, 0x72, 0x79, 0x45, 0x64, 0x67, 0x65, 0x12, 0x37, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x6f, 0x22, 0x61, 0x0a, 0x12, 0x54, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, + 0x69, 0x63, 0x73, 0x45, 0x64, 0x67, 0x65, 0x12, 0x33, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74, + 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, + 0x72, 0x73, 0x6f, 0x72, 0x22, 0x84, 0x03, 0x0a, 0x0e, 0x54, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, + 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, + 0x12, 0x30, 0x0a, 0x14, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x75, + 0x6d, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x56, 0x6f, 0x6c, 0x75, + 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x71, 0x75, 0x61, 0x6e, + 0x74, 0x75, 0x6d, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x13, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x52, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x50, 0x0a, 0x0f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x75, + 0x6d, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, + 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x0e, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x75, + 0x6d, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x73, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x5f, + 0x70, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x67, 0x61, + 0x6d, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x12, 0x50, 0x0a, 0x0f, 0x71, 0x75, 0x61, + 0x6e, 0x74, 0x75, 0x6d, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x56, 0x6f, 0x6c, 0x75, + 0x6d, 0x65, 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x0e, 0x71, 0x75, 0x61, + 0x6e, 0x74, 0x75, 0x6d, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x22, 0x62, 0x0a, 0x16, 0x51, + 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x50, 0x65, 0x72, + 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x32, 0x0a, 0x15, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x5f, 0x72, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x22, + 0x62, 0x0a, 0x16, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, + 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, + 0x32, 0x0a, 0x15, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, + 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x56, 0x6f, 0x6c, 0x75, + 0x6d, 0x65, 0x73, 0x22, 0x84, 0x02, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, + 0x64, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x88, 0x01, + 0x01, 0x12, 0x32, 0x0a, 0x12, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, + 0x11, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x70, 0x6f, 0x63, + 0x68, 0x73, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x02, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x61, 0x72, 0x74, + 0x79, 0x5f, 0x69, 0x64, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, + 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x75, 0x0a, 0x21, 0x4c, 0x69, + 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x53, 0x74, 0x61, + 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x50, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, + 0x73, 0x22, 0x9a, 0x01, 0x0a, 0x1f, 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x45, 0x64, 0x67, 0x65, 0x52, + 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, + 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x6d, + 0x0a, 0x18, 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, + 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x45, 0x64, 0x67, 0x65, 0x12, 0x39, 0x0a, 0x04, 0x6e, 0x6f, + 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, + 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x8c, 0x03, + 0x0a, 0x14, 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, + 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, + 0x64, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, + 0x75, 0x6d, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x12, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x56, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x71, 0x75, 0x61, + 0x6e, 0x74, 0x75, 0x6d, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x13, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, + 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x50, 0x0a, 0x0f, 0x71, 0x75, 0x61, 0x6e, 0x74, + 0x75, 0x6d, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x0e, 0x71, 0x75, 0x61, 0x6e, 0x74, + 0x75, 0x6d, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x74, 0x6f, 0x74, + 0x61, 0x6c, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, + 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x67, 0x61, 0x6d, 0x65, 0x73, + 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x67, + 0x61, 0x6d, 0x65, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x12, 0x50, 0x0a, 0x0f, 0x71, 0x75, + 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x07, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x56, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x0e, 0x71, 0x75, + 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x22, 0x89, 0x01, 0x0a, + 0x17, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, + 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, + 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, + 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x85, 0x01, 0x0a, 0x0b, 0x54, 0x65, 0x61, + 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, + 0x64, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6a, + 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, + 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x41, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x6a, 0x6f, 0x69, 0x6e, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x0d, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x41, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, + 0x22, 0x5b, 0x0a, 0x0f, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x45, + 0x64, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x52, + 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x87, 0x01, + 0x0a, 0x15, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, - 0x65, 0x72, 0x65, 0x65, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x04, 0x6e, 0x6f, 0x64, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x95, 0x01, 0x0a, 0x1c, 0x54, 0x65, + 0x65, 0x72, 0x65, 0x65, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, + 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, + 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x67, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x54, + 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x0d, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x72, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, 0x61, + 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x0c, 0x74, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, + 0x22, 0x72, 0x0a, 0x12, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x48, + 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, + 0x1b, 0x0a, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x41, 0x74, 0x12, 0x26, 0x0a, 0x0f, + 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x41, 0x74, 0x45, + 0x70, 0x6f, 0x63, 0x68, 0x22, 0x69, 0x0a, 0x16, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x65, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x45, 0x64, 0x67, 0x65, 0x12, 0x37, + 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, + 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, + 0x79, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, + 0x95, 0x01, 0x0a, 0x1c, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x48, + 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x3d, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x48, 0x69, 0x73, + 0x74, 0x6f, 0x72, 0x79, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, + 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, + 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x90, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, + 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x48, 0x69, 0x73, 0x74, 0x6f, + 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x07, 0x72, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, + 0x52, 0x07, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, + 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, + 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x81, 0x01, 0x0a, 0x1e, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x48, 0x69, + 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, + 0x14, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x5f, 0x68, 0x69, + 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x05, 0x65, 0x64, - 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, 0x61, 0x6d, - 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x45, 0x64, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x74, 0x65, 0x61, 0x6d, + 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x22, 0xcf, + 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x61, 0x72, + 0x6b, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x65, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x61, 0x73, + 0x73, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x65, 0x70, 0x6f, 0x63, + 0x68, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x08, 0x65, + 0x70, 0x6f, 0x63, 0x68, 0x53, 0x65, 0x71, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x61, + 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x07, + 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x73, 0x73, + 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, + 0x73, 0x65, 0x71, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, + 0x22, 0x50, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x66, 0x65, 0x65, 0x73, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x76, + 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, + 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x09, 0x66, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x22, 0xc5, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x1e, 0x0a, + 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x07, 0x61, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, + 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x04, 0x48, 0x01, 0x52, 0x09, 0x66, 0x72, 0x6f, 0x6d, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x88, 0x01, + 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x74, 0x6f, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x07, 0x74, 0x6f, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x88, 0x01, + 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0d, + 0x0a, 0x0b, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x42, 0x0b, 0x0a, + 0x09, 0x5f, 0x74, 0x6f, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x22, 0x73, 0x0a, 0x1c, 0x47, 0x65, + 0x74, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x50, 0x61, 0x72, + 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x14, 0x66, 0x65, + 0x65, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x70, 0x61, 0x72, + 0x74, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x65, 0x65, 0x73, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x74, 0x79, 0x52, 0x11, 0x66, 0x65, + 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x74, 0x79, 0x22, + 0x28, 0x0a, 0x26, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, + 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x98, 0x01, 0x0a, 0x27, 0x47, 0x65, + 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, + 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6d, 0x0a, 0x1f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, + 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, + 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, + 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x1c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x56, + 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, + 0x67, 0x72, 0x61, 0x6d, 0x22, 0xca, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, + 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x08, 0x61, 0x74, 0x5f, 0x65, 0x70, 0x6f, + 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x07, 0x61, 0x74, 0x45, 0x70, + 0x6f, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, + 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x02, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x74, 0x5f, + 0x65, 0x70, 0x6f, 0x63, 0x68, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, + 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x66, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, + 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x22, 0x97, 0x01, 0x0a, 0x1d, 0x56, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, + 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x05, 0x65, + 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, + 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, + 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, + 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, + 0x6e, 0x66, 0x6f, 0x22, 0x6b, 0x0a, 0x17, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x45, 0x64, 0x67, 0x65, 0x12, 0x38, + 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x56, + 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, + 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, + 0x22, 0x9b, 0x01, 0x0a, 0x13, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x74, 0x5f, 0x65, + 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x61, 0x74, 0x45, 0x70, + 0x6f, 0x63, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x27, + 0x0a, 0x0f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, + 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x75, 0x6e, 0x6e, 0x69, + 0x6e, 0x67, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x22, 0x8a, + 0x02, 0x0a, 0x15, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x3c, 0x0a, 0x0d, 0x62, 0x65, 0x6e, 0x65, 0x66, 0x69, 0x74, 0x5f, 0x74, 0x69, + 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x76, 0x65, 0x67, 0x61, + 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x42, 0x65, 0x6e, 0x65, 0x66, 0x69, 0x74, 0x54, 0x69, + 0x65, 0x72, 0x52, 0x0c, 0x62, 0x65, 0x6e, 0x65, 0x66, 0x69, 0x74, 0x54, 0x69, 0x65, 0x72, 0x73, + 0x12, 0x37, 0x0a, 0x18, 0x65, 0x6e, 0x64, 0x5f, 0x6f, 0x66, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, + 0x61, 0x6d, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x15, 0x65, 0x6e, 0x64, 0x4f, 0x66, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x69, 0x6e, + 0x64, 0x6f, 0x77, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x0c, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1e, + 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, + 0x48, 0x00, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x41, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0b, + 0x0a, 0x09, 0x5f, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x22, 0x93, 0x02, 0x0a, 0x11, + 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x74, + 0x79, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x16, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x72, 0x65, + 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x64, 0x12, 0x3a, 0x0a, 0x19, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x5f, 0x64, + 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x44, + 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x12, 0x36, + 0x0a, 0x17, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x15, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, + 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x12, 0x39, 0x0a, 0x19, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, + 0x6d, 0x61, 0x6b, 0x65, 0x72, 0x5f, 0x66, 0x65, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, + 0x76, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x4d, 0x61, 0x6b, 0x65, 0x72, 0x46, 0x65, 0x65, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, + 0x64, 0x22, 0x7f, 0x0a, 0x20, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, + 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, + 0x64, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x22, 0x77, 0x0a, 0x21, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x13, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x12, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0xd0, 0x01, 0x0a, 0x1a, + 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, + 0x46, 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x72, + 0x6f, 0x6d, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3d, 0x0a, + 0x11, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0f, 0x66, 0x72, 0x6f, + 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, + 0x74, 0x6f, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x74, 0x6f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x61, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x22, 0x4b, + 0x0a, 0x1b, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x65, 0x72, 0x46, 0x65, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, + 0x03, 0x66, 0x65, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, + 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x5a, 0x0a, 0x22, 0x47, + 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, + 0x65, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, + 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x61, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x22, 0x4c, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x54, 0x6f, + 0x74, 0x61, 0x6c, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x44, 0x69, + 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, + 0x0a, 0x0e, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x44, 0x69, 0x73, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x90, 0x03, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, + 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x07, 0x67, 0x61, + 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x67, + 0x61, 0x6d, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x65, 0x70, 0x6f, 0x63, + 0x68, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x09, + 0x65, 0x70, 0x6f, 0x63, 0x68, 0x46, 0x72, 0x6f, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, + 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x74, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, + 0x52, 0x07, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x54, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x0c, + 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x53, 0x63, 0x6f, 0x70, 0x65, 0x48, 0x03, 0x52, 0x0b, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, + 0x63, 0x6f, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, + 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x04, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x74, 0x65, 0x61, + 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x05, 0x52, 0x06, 0x74, 0x65, + 0x61, 0x6d, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, + 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x06, 0x52, 0x07, 0x70, 0x61, 0x72, + 0x74, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x67, 0x61, 0x6d, 0x65, + 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x66, 0x72, + 0x6f, 0x6d, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x74, 0x6f, 0x42, + 0x0f, 0x0a, 0x0d, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, + 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, + 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, + 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x22, 0x4b, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, + 0x47, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, + 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, + 0x61, 0x6d, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, + 0x67, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x7a, 0x0a, 0x0f, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x22, 0x90, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, - 0x66, 0x65, 0x72, 0x65, 0x65, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x07, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x07, 0x72, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x65, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x81, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, - 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x14, 0x74, 0x65, 0x61, 0x6d, 0x5f, - 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x65, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x74, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, - 0x65, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x22, 0xcf, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, - 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x20, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x88, - 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x61, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x88, - 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x73, 0x65, 0x71, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x08, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x53, 0x65, - 0x71, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, - 0x64, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, - 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, - 0x0c, 0x0a, 0x0a, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x73, 0x65, 0x71, 0x42, 0x0b, 0x0a, - 0x09, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x22, 0x50, 0x0a, 0x14, 0x47, 0x65, - 0x74, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x66, 0x65, 0x65, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x52, 0x09, 0x66, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x22, 0xc5, 0x01, 0x0a, - 0x1b, 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x46, 0x6f, 0x72, - 0x50, 0x61, 0x72, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, - 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x61, 0x73, 0x73, - 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x5f, - 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x09, 0x66, - 0x72, 0x6f, 0x6d, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x74, - 0x6f, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, - 0x07, 0x74, 0x6f, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, - 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x66, 0x72, 0x6f, - 0x6d, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x74, 0x6f, 0x5f, 0x65, - 0x70, 0x6f, 0x63, 0x68, 0x22, 0x73, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, 0x73, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x14, 0x66, 0x65, 0x65, 0x73, 0x5f, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x46, 0x6f, - 0x72, 0x50, 0x61, 0x72, 0x74, 0x79, 0x52, 0x11, 0x66, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x46, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x74, 0x79, 0x22, 0x28, 0x0a, 0x26, 0x47, 0x65, 0x74, - 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x22, 0x98, 0x01, 0x0a, 0x27, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, - 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x6d, 0x0a, 0x1f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, - 0x61, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, - 0x52, 0x1c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, - 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x22, 0xca, - 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1e, 0x0a, 0x08, 0x61, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x04, 0x48, 0x00, 0x52, 0x07, 0x61, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x88, 0x01, 0x01, - 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, - 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x48, 0x02, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, - 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x42, - 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, - 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x66, 0x0a, 0x1e, 0x47, - 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x73, 0x74, - 0x61, 0x74, 0x73, 0x22, 0x97, 0x01, 0x0a, 0x1d, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, - 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, - 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, - 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x6b, 0x0a, - 0x17, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x45, 0x64, 0x67, 0x65, 0x12, 0x38, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, - 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x04, 0x6e, 0x6f, - 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x9b, 0x01, 0x0a, 0x13, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x61, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x19, 0x0a, - 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x69, 0x73, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x61, 0x63, 0x74, 0x6f, - 0x72, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x75, 0x6e, 0x6e, 0x69, - 0x6e, 0x67, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x22, 0x8a, 0x02, 0x0a, 0x15, 0x56, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, - 0x61, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3c, 0x0a, 0x0d, - 0x62, 0x65, 0x6e, 0x65, 0x66, 0x69, 0x74, 0x5f, 0x74, 0x69, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x42, 0x65, 0x6e, 0x65, 0x66, 0x69, 0x74, 0x54, 0x69, 0x65, 0x72, 0x52, 0x0c, 0x62, 0x65, - 0x6e, 0x65, 0x66, 0x69, 0x74, 0x54, 0x69, 0x65, 0x72, 0x73, 0x12, 0x37, 0x0a, 0x18, 0x65, 0x6e, - 0x64, 0x5f, 0x6f, 0x66, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x15, 0x65, 0x6e, - 0x64, 0x4f, 0x66, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x6c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x77, 0x69, 0x6e, 0x64, - 0x6f, 0x77, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x1e, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x65, - 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x07, 0x65, 0x6e, - 0x64, 0x65, 0x64, 0x41, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x6e, 0x64, - 0x65, 0x64, 0x5f, 0x61, 0x74, 0x22, 0x93, 0x02, 0x0a, 0x11, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, - 0x61, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x74, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x61, - 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, - 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, - 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x12, 0x3a, 0x0a, 0x19, - 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x17, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x17, 0x76, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x70, 0x70, 0x6c, - 0x69, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x76, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, - 0x12, 0x39, 0x0a, 0x19, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6d, 0x61, 0x6b, 0x65, 0x72, 0x5f, - 0x66, 0x65, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x16, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4d, 0x61, 0x6b, 0x65, 0x72, 0x46, - 0x65, 0x65, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x22, 0x7f, 0x0a, 0x20, 0x4f, - 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x73, 0x12, 0x16, 0x0a, 0x06, - 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, - 0x73, 0x68, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, - 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x77, 0x0a, 0x21, - 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x52, 0x0a, 0x13, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, - 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x52, 0x12, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0xd0, 0x01, 0x0a, 0x1a, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, - 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x72, 0x6f, 0x6d, - 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3d, 0x0a, 0x11, 0x66, 0x72, 0x6f, 0x6d, 0x5f, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0f, 0x66, 0x72, 0x6f, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x5f, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x41, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x19, 0x0a, - 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x61, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x22, 0x4b, 0x0a, 0x1b, 0x45, 0x73, 0x74, 0x69, - 0x6d, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x69, 0x73, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x5a, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, - 0x6c, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x44, 0x69, 0x73, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x70, - 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, - 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x73, 0x73, 0x65, 0x74, 0x49, - 0x64, 0x22, 0x4c, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x6f, 0x74, 0x61, - 0x6c, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, - 0x90, 0x03, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x88, - 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x66, 0x72, 0x6f, 0x6d, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x09, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x46, - 0x72, 0x6f, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, - 0x74, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x07, 0x65, 0x70, 0x6f, 0x63, - 0x68, 0x54, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x0c, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, - 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x76, - 0x65, 0x67, 0x61, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x48, - 0x03, 0x52, 0x0b, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x48, 0x04, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x05, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x88, 0x01, - 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x06, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x88, 0x01, - 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, - 0x0b, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x42, 0x0b, 0x0a, 0x09, - 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x74, 0x6f, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x65, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, - 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x65, - 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, - 0x69, 0x64, 0x22, 0x4b, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x22, - 0x7a, 0x0a, 0x0f, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, - 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x4d, 0x0a, 0x08, 0x47, - 0x61, 0x6d, 0x65, 0x45, 0x64, 0x67, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x6f, - 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x88, 0x02, 0x0a, 0x04, 0x47, - 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x61, 0x72, - 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x0c, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x37, 0x0a, - 0x04, 0x74, 0x65, 0x61, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, - 0x61, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x48, 0x00, - 0x52, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x12, 0x49, 0x0a, 0x0a, 0x69, 0x6e, 0x64, 0x69, 0x76, 0x69, - 0x64, 0x75, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x64, - 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, - 0x69, 0x65, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, - 0x6c, 0x12, 0x26, 0x0a, 0x0f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x61, 0x73, 0x73, 0x65, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x41, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x65, 0x6e, 0x74, - 0x69, 0x74, 0x69, 0x65, 0x73, 0x22, 0x47, 0x0a, 0x10, 0x54, 0x65, 0x61, 0x6d, 0x47, 0x61, 0x6d, - 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x04, 0x74, 0x65, 0x61, - 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x47, 0x61, - 0x6d, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x22, 0x5f, - 0x0a, 0x16, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, - 0x45, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x0a, 0x69, 0x6e, 0x64, 0x69, - 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x49, - 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x74, - 0x69, 0x74, 0x79, 0x52, 0x0a, 0x69, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x22, - 0xff, 0x02, 0x0a, 0x0e, 0x54, 0x65, 0x61, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x74, 0x69, - 0x74, 0x79, 0x12, 0x3a, 0x0a, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, - 0x63, 0x69, 0x70, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x12, 0x12, - 0x0a, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x72, 0x61, - 0x6e, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0d, 0x72, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x14, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, - 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x0c, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, - 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x45, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x65, 0x61, 0x72, 0x6e, - 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x52, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x45, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x12, 0x32, 0x0a, 0x15, - 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x71, 0x75, - 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x72, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x45, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, - 0x12, 0x3f, 0x0a, 0x1c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x73, 0x5f, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x19, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x73, 0x45, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x75, - 0x6d, 0x22, 0x8c, 0x01, 0x0a, 0x15, 0x54, 0x65, 0x61, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x50, 0x61, - 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x74, - 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, - 0x61, 0x6d, 0x49, 0x64, 0x12, 0x5a, 0x0a, 0x15, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x5f, - 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, - 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x14, 0x6d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x73, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x69, 0x6e, 0x67, - 0x22, 0xe9, 0x02, 0x0a, 0x14, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x47, - 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x64, - 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, - 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x61, 0x6e, - 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x12, 0x16, 0x0a, - 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x76, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0d, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, - 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x76, - 0x65, 0x67, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x52, 0x0c, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x65, 0x61, 0x72, 0x6e, 0x65, - 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x45, - 0x61, 0x72, 0x6e, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x72, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x12, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x73, 0x45, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x12, 0x32, 0x0a, 0x15, 0x72, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x5f, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x45, 0x61, - 0x72, 0x6e, 0x65, 0x64, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x12, 0x3f, 0x0a, 0x1c, 0x74, + 0x6f, 0x22, 0x4d, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x64, 0x67, 0x65, 0x12, 0x29, 0x0a, + 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x61, + 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, + 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, + 0x22, 0x88, 0x02, 0x0a, 0x04, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, + 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, + 0x22, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, + 0x6e, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x74, 0x69, + 0x74, 0x69, 0x65, 0x73, 0x48, 0x00, 0x52, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x12, 0x49, 0x0a, 0x0a, + 0x69, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x47, 0x61, 0x6d, + 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x6e, 0x64, + 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x12, 0x26, 0x0a, 0x0f, 0x72, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0d, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x41, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x42, + 0x0a, 0x0a, 0x08, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x22, 0x47, 0x0a, 0x10, 0x54, + 0x65, 0x61, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, + 0x33, 0x0a, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x54, 0x65, 0x61, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x04, + 0x74, 0x65, 0x61, 0x6d, 0x22, 0x5f, 0x0a, 0x16, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, + 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x45, + 0x0a, 0x0a, 0x69, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x47, + 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x0a, 0x69, 0x6e, 0x64, 0x69, 0x76, + 0x69, 0x64, 0x75, 0x61, 0x6c, 0x22, 0xff, 0x02, 0x0a, 0x0e, 0x54, 0x65, 0x61, 0x6d, 0x47, 0x61, + 0x6d, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x3a, 0x0a, 0x04, 0x74, 0x65, 0x61, 0x6d, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x47, 0x61, 0x6d, + 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, + 0x74, 0x65, 0x61, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, + 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x12, 0x39, 0x0a, 0x0d, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x44, + 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x0c, 0x72, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x23, 0x0a, 0x0d, 0x72, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x45, 0x61, 0x72, 0x6e, 0x65, 0x64, + 0x12, 0x30, 0x0a, 0x14, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x73, 0x5f, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x45, 0x61, 0x72, 0x6e, + 0x65, 0x64, 0x12, 0x32, 0x0a, 0x15, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x65, 0x61, 0x72, + 0x6e, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x13, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x45, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x51, + 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x12, 0x3f, 0x0a, 0x1c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, + 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x71, + 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x19, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x45, 0x61, 0x72, 0x6e, 0x65, 0x64, + 0x51, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x22, 0x8c, 0x01, 0x0a, 0x15, 0x54, 0x65, 0x61, 0x6d, + 0x47, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x5a, 0x0a, 0x15, 0x6d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, + 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x64, 0x69, + 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x52, 0x14, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, + 0x70, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x22, 0xe9, 0x02, 0x0a, 0x14, 0x49, 0x6e, 0x64, 0x69, 0x76, + 0x69, 0x64, 0x75, 0x61, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, + 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x12, + 0x12, 0x0a, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x72, + 0x61, 0x6e, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0d, 0x72, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, + 0x63, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x0c, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x5f, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x45, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x65, 0x61, 0x72, - 0x6e, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x19, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x45, - 0x61, 0x72, 0x6e, 0x65, 0x64, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x22, 0xcb, 0x01, 0x0a, - 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, - 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x09, - 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1e, - 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x01, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x40, - 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, - 0x02, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, - 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0b, - 0x0a, 0x09, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, - 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x79, 0x0a, 0x1c, 0x4c, 0x69, - 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4d, 0x6f, 0x64, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x59, 0x0a, 0x12, 0x70, 0x61, - 0x72, 0x74, 0x79, 0x5f, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x4d, 0x61, - 0x72, 0x67, 0x69, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x70, 0x61, 0x72, 0x74, 0x79, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, - 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x90, 0x01, 0x0a, 0x1a, 0x50, 0x61, 0x72, 0x74, 0x79, 0x4d, - 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x6e, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x45, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x12, 0x32, 0x0a, + 0x15, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x71, + 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x72, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x45, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x75, + 0x6d, 0x12, 0x3f, 0x0a, 0x1c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x73, 0x5f, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x75, + 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x19, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x73, 0x45, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x51, 0x75, 0x61, 0x6e, 0x74, + 0x75, 0x6d, 0x22, 0xcb, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, + 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, + 0x64, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, + 0x64, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x02, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, + 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, + 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x79, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, 0x4d, 0x61, 0x72, + 0x67, 0x69, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x59, 0x0a, 0x12, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, + 0x61, 0x72, 0x74, 0x79, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x70, 0x61, 0x72, 0x74, 0x79, + 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x90, 0x01, 0x0a, 0x1a, + 0x50, 0x61, 0x72, 0x74, 0x79, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x73, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x05, 0x65, 0x64, + 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x72, 0x74, + 0x79, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x45, 0x64, 0x67, 0x65, 0x52, + 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, + 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x63, + 0x0a, 0x13, 0x50, 0x61, 0x72, 0x74, 0x79, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4d, 0x6f, 0x64, + 0x65, 0x45, 0x64, 0x67, 0x65, 0x12, 0x34, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x4d, 0x61, 0x72, 0x67, 0x69, - 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x45, 0x64, 0x67, 0x65, 0x52, 0x05, 0x65, 0x64, 0x67, 0x65, 0x73, - 0x12, 0x36, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, - 0x70, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x63, 0x0a, 0x13, 0x50, 0x61, 0x72, 0x74, - 0x79, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x45, 0x64, 0x67, 0x65, 0x12, - 0x34, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, - 0x50, 0x61, 0x72, 0x74, 0x79, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x52, - 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x99, 0x03, - 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x74, 0x79, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4d, 0x6f, 0x64, - 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x19, - 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x0b, 0x6d, 0x61, 0x72, - 0x67, 0x69, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, - 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4d, 0x6f, 0x64, 0x65, - 0x52, 0x0a, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x28, 0x0a, 0x0d, - 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x46, 0x61, 0x63, - 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x1d, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x68, - 0x65, 0x6f, 0x72, 0x65, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, - 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, - 0x1a, 0x6d, 0x69, 0x6e, 0x54, 0x68, 0x65, 0x6f, 0x72, 0x65, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x4d, - 0x61, 0x72, 0x67, 0x69, 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x3d, - 0x0a, 0x18, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x68, 0x65, 0x6f, 0x72, 0x65, 0x74, 0x69, 0x63, 0x61, - 0x6c, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x02, 0x52, 0x16, 0x6d, 0x61, 0x78, 0x54, 0x68, 0x65, 0x6f, 0x72, 0x65, 0x74, 0x69, 0x63, - 0x61, 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, - 0x08, 0x61, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x07, 0x61, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6d, 0x61, 0x72, - 0x67, 0x69, 0x6e, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x6d, - 0x69, 0x6e, 0x5f, 0x74, 0x68, 0x65, 0x6f, 0x72, 0x65, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x6d, - 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x1b, 0x0a, 0x19, - 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x68, 0x65, 0x6f, 0x72, 0x65, 0x74, 0x69, 0x63, 0x61, 0x6c, - 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x22, 0xf2, 0x01, 0x0a, 0x1c, 0x54, 0x69, - 0x6d, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x73, - 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x73, - 0x73, 0x65, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, - 0x12, 0x17, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x74, 0x5f, - 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x61, 0x74, 0x45, - 0x70, 0x6f, 0x63, 0x68, 0x12, 0x45, 0x0a, 0x1f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x77, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1c, 0x74, - 0x69, 0x6d, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x6f, - 0x6e, 0x61, 0x6c, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x6c, - 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x22, 0xa4, - 0x01, 0x0a, 0x26, 0x47, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x73, 0x73, - 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x73, 0x73, + 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, + 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x75, 0x72, + 0x73, 0x6f, 0x72, 0x22, 0x99, 0x03, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x74, 0x79, 0x4d, 0x61, 0x72, + 0x67, 0x69, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, - 0x17, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x08, 0x61, 0x74, 0x5f, 0x65, - 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x07, 0x61, 0x74, - 0x45, 0x70, 0x6f, 0x63, 0x68, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x74, 0x5f, - 0x65, 0x70, 0x6f, 0x63, 0x68, 0x22, 0x9f, 0x01, 0x0a, 0x27, 0x47, 0x65, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x74, 0x0a, 0x1f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x1c, 0x74, 0x69, 0x6d, 0x65, 0x57, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0xaa, 0x01, 0x0a, 0x10, 0x4c, 0x65, 0x64, 0x67, - 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x22, 0x0a, 0x1e, - 0x4c, 0x45, 0x44, 0x47, 0x45, 0x52, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x46, 0x49, 0x45, - 0x4c, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x26, 0x0a, 0x22, 0x4c, 0x45, 0x44, 0x47, 0x45, 0x52, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, - 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x46, - 0x52, 0x4f, 0x4d, 0x5f, 0x49, 0x44, 0x10, 0x01, 0x12, 0x24, 0x0a, 0x20, 0x4c, 0x45, 0x44, 0x47, - 0x45, 0x52, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x41, - 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x4f, 0x5f, 0x49, 0x44, 0x10, 0x02, 0x12, 0x24, + 0x31, 0x0a, 0x0b, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4d, 0x61, 0x72, 0x67, + 0x69, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4d, 0x6f, + 0x64, 0x65, 0x12, 0x28, 0x0a, 0x0d, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, 0x66, 0x61, 0x63, + 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x6d, 0x61, 0x72, + 0x67, 0x69, 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x1d, + 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x68, 0x65, 0x6f, 0x72, 0x65, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, + 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x1a, 0x6d, 0x69, 0x6e, 0x54, 0x68, 0x65, 0x6f, 0x72, 0x65, + 0x74, 0x69, 0x63, 0x61, 0x6c, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, + 0x72, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x18, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x68, 0x65, 0x6f, + 0x72, 0x65, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x16, 0x6d, 0x61, 0x78, 0x54, 0x68, 0x65, + 0x6f, 0x72, 0x65, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x61, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x42, 0x10, + 0x0a, 0x0e, 0x5f, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, + 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x68, 0x65, 0x6f, 0x72, 0x65, 0x74, + 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, 0x66, 0x61, 0x63, 0x74, + 0x6f, 0x72, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x68, 0x65, 0x6f, 0x72, + 0x65, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x22, + 0xf2, 0x01, 0x0a, 0x1c, 0x54, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, + 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x19, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x61, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, + 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, + 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, + 0x19, 0x0a, 0x08, 0x61, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x07, 0x61, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x45, 0x0a, 0x1f, 0x74, 0x69, + 0x6d, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x1c, 0x74, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, + 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x22, 0xa4, 0x01, 0x0a, 0x26, 0x47, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, + 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x19, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x61, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, + 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, + 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x1e, + 0x0a, 0x08, 0x61, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, + 0x48, 0x00, 0x52, 0x07, 0x61, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x88, 0x01, 0x01, 0x42, 0x0b, + 0x0a, 0x09, 0x5f, 0x61, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x22, 0x9f, 0x01, 0x0a, 0x27, + 0x47, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x4e, + 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x1f, 0x74, 0x69, 0x6d, 0x65, 0x5f, + 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x4e, + 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x1c, 0x74, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0xaa, 0x01, + 0x0a, 0x10, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x12, 0x22, 0x0a, 0x1e, 0x4c, 0x45, 0x44, 0x47, 0x45, 0x52, 0x5f, 0x45, 0x4e, 0x54, + 0x52, 0x59, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x26, 0x0a, 0x22, 0x4c, 0x45, 0x44, 0x47, 0x45, 0x52, + 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x41, 0x43, 0x43, + 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x46, 0x52, 0x4f, 0x4d, 0x5f, 0x49, 0x44, 0x10, 0x01, 0x12, 0x24, 0x0a, 0x20, 0x4c, 0x45, 0x44, 0x47, 0x45, 0x52, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x46, - 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x10, 0x03, 0x2a, 0xb0, 0x01, 0x0a, 0x0c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, - 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, - 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x44, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x43, - 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x50, 0x41, 0x52, 0x54, - 0x59, 0x5f, 0x49, 0x44, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, - 0x54, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x41, 0x53, 0x53, 0x45, 0x54, 0x5f, 0x49, 0x44, - 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x46, 0x49, - 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x54, 0x5f, 0x49, 0x44, 0x10, 0x04, 0x12, - 0x16, 0x0a, 0x12, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x05, 0x2a, 0xad, 0x01, 0x0a, 0x11, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x65, 0x72, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, + 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x4f, 0x5f, + 0x49, 0x44, 0x10, 0x02, 0x12, 0x24, 0x0a, 0x20, 0x4c, 0x45, 0x44, 0x47, 0x45, 0x52, 0x5f, 0x45, + 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, + 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x03, 0x2a, 0xb0, 0x01, 0x0a, 0x0c, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1d, 0x0a, 0x19, 0x41, + 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x43, + 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x44, 0x10, 0x01, + 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x46, 0x49, 0x45, 0x4c, + 0x44, 0x5f, 0x50, 0x41, 0x52, 0x54, 0x59, 0x5f, 0x49, 0x44, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, + 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x41, 0x53, + 0x53, 0x45, 0x54, 0x5f, 0x49, 0x44, 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x43, 0x43, 0x4f, + 0x55, 0x4e, 0x54, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x54, + 0x5f, 0x49, 0x44, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, + 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x05, 0x2a, 0xad, 0x01, + 0x0a, 0x11, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, + 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x24, 0x0a, 0x20, 0x54, 0x52, 0x41, 0x4e, 0x53, + 0x46, 0x45, 0x52, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, + 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x46, 0x52, 0x4f, 0x4d, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x24, 0x0a, 0x20, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x44, 0x49, + 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x4f, 0x10, + 0x02, 0x12, 0x2a, 0x0a, 0x26, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, - 0x5f, 0x46, 0x52, 0x4f, 0x4d, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x52, 0x41, 0x4e, 0x53, - 0x46, 0x45, 0x52, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, - 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x4f, 0x10, 0x02, 0x12, 0x2a, 0x0a, 0x26, 0x54, - 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x4f, 0x5f, 0x4f, 0x52, - 0x5f, 0x46, 0x52, 0x4f, 0x4d, 0x10, 0x03, 0x2a, 0xde, 0x02, 0x0a, 0x05, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x54, 0x41, 0x42, 0x4c, - 0x45, 0x5f, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x53, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, - 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x50, 0x4f, 0x49, 0x4e, 0x54, - 0x53, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x44, 0x45, 0x4c, - 0x45, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x41, - 0x42, 0x4c, 0x45, 0x5f, 0x4c, 0x45, 0x44, 0x47, 0x45, 0x52, 0x10, 0x04, 0x12, 0x10, 0x0a, 0x0c, - 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x53, 0x10, 0x05, 0x12, 0x10, - 0x0a, 0x0c, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x52, 0x41, 0x44, 0x45, 0x53, 0x10, 0x06, - 0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x54, - 0x5f, 0x44, 0x41, 0x54, 0x41, 0x10, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x41, 0x42, 0x4c, 0x45, - 0x5f, 0x4d, 0x41, 0x52, 0x47, 0x49, 0x4e, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x53, 0x10, 0x08, - 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, - 0x4f, 0x4e, 0x53, 0x10, 0x09, 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4c, - 0x49, 0x51, 0x55, 0x49, 0x44, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, - 0x4f, 0x4e, 0x53, 0x10, 0x0a, 0x12, 0x11, 0x0a, 0x0d, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4d, - 0x41, 0x52, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x0b, 0x12, 0x12, 0x0a, 0x0e, 0x54, 0x41, 0x42, 0x4c, - 0x45, 0x5f, 0x44, 0x45, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x53, 0x10, 0x0c, 0x12, 0x15, 0x0a, 0x11, - 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x44, 0x52, 0x41, 0x57, 0x41, 0x4c, - 0x53, 0x10, 0x0d, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x42, 0x4c, 0x4f, - 0x43, 0x4b, 0x53, 0x10, 0x0e, 0x12, 0x11, 0x0a, 0x0d, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x52, - 0x45, 0x57, 0x41, 0x52, 0x44, 0x53, 0x10, 0x0f, 0x32, 0xd2, 0x77, 0x0a, 0x12, 0x54, 0x72, 0x61, - 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, - 0x6a, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, - 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x5f, 0x54, 0x4f, 0x5f, 0x4f, 0x52, 0x5f, 0x46, 0x52, 0x4f, 0x4d, 0x10, 0x03, 0x2a, 0xde, 0x02, + 0x0a, 0x05, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, 0x42, 0x4c, 0x45, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, + 0x0a, 0x0e, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x53, + 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x43, 0x48, 0x45, 0x43, + 0x4b, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x53, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, 0x42, + 0x4c, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x03, + 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4c, 0x45, 0x44, 0x47, 0x45, 0x52, + 0x10, 0x04, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4f, 0x52, 0x44, 0x45, + 0x52, 0x53, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x52, + 0x41, 0x44, 0x45, 0x53, 0x10, 0x06, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, + 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x54, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x10, 0x07, 0x12, 0x17, 0x0a, + 0x13, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4d, 0x41, 0x52, 0x47, 0x49, 0x4e, 0x5f, 0x4c, 0x45, + 0x56, 0x45, 0x4c, 0x53, 0x10, 0x08, 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, + 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x09, 0x12, 0x1e, 0x0a, 0x1a, 0x54, + 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4c, 0x49, 0x51, 0x55, 0x49, 0x44, 0x49, 0x54, 0x59, 0x5f, 0x50, + 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x0a, 0x12, 0x11, 0x0a, 0x0d, 0x54, + 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x0b, 0x12, 0x12, + 0x0a, 0x0e, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x44, 0x45, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x53, + 0x10, 0x0c, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x57, 0x49, 0x54, 0x48, + 0x44, 0x52, 0x41, 0x57, 0x41, 0x4c, 0x53, 0x10, 0x0d, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x41, 0x42, + 0x4c, 0x45, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x53, 0x10, 0x0e, 0x12, 0x11, 0x0a, 0x0d, 0x54, + 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x52, 0x45, 0x57, 0x41, 0x52, 0x44, 0x53, 0x10, 0x0f, 0x32, 0xcb, + 0x79, 0x0a, 0x12, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x6a, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0d, 0x92, 0x41, - 0x0a, 0x0a, 0x08, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x75, 0x0a, 0x0f, 0x4f, - 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x27, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x0d, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, - 0x30, 0x01, 0x12, 0x5a, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x92, 0x41, 0x12, 0x0a, 0x10, 0x4e, 0x6f, - 0x64, 0x65, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5c, - 0x0a, 0x08, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x20, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, - 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x62, 0x0a, 0x0a, - 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x22, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, + 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x0d, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x73, 0x12, 0x75, 0x0a, 0x0f, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0d, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x30, 0x01, 0x12, 0x5a, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x1c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, - 0x12, 0x77, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, - 0x08, 0x0a, 0x06, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x6d, 0x0a, 0x0d, 0x4f, 0x62, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x25, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x92, + 0x41, 0x12, 0x0a, 0x10, 0x4e, 0x6f, 0x64, 0x65, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5c, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x12, 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x73, 0x12, 0x62, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, + 0x12, 0x22, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x30, 0x01, 0x12, 0x68, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x53, - 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, - 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x77, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x29, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x64, + 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, + 0x6d, 0x0a, 0x0d, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, + 0x12, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x30, 0x01, 0x12, 0x68, + 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x73, 0x12, 0x6e, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x73, 0x12, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x70, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x73, 0x12, 0x71, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x64, 0x61, 0x74, + 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, + 0x0a, 0x06, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x6e, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, + 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x11, 0x88, 0x02, 0x01, 0x92, 0x41, 0x0b, 0x0a, 0x09, 0x50, 0x6f, 0x73, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x77, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, - 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x41, 0x6c, 0x6c, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x50, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0e, - 0x92, 0x41, 0x0b, 0x0a, 0x09, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x79, - 0x0a, 0x10, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x50, 0x6f, 0x73, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, - 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0e, 0x92, 0x41, 0x0b, 0x0a, 0x09, 0x50, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x30, 0x01, 0x12, 0x7f, 0x0a, 0x11, 0x4c, 0x69, 0x73, - 0x74, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x29, + 0x74, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, + 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, + 0x0a, 0x06, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x79, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, + 0x47, 0x61, 0x6d, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x2a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x69, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0a, 0x92, 0x41, 0x07, 0x0a, 0x05, 0x47, 0x61, + 0x6d, 0x65, 0x73, 0x12, 0x7c, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x50, + 0x61, 0x72, 0x74, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x47, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, + 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0a, 0x92, 0x41, 0x07, 0x0a, 0x05, 0x47, 0x61, 0x6d, 0x65, + 0x73, 0x12, 0x71, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x13, 0x92, 0x41, 0x10, 0x0a, 0x0e, 0x4c, 0x65, 0x64, 0x67, - 0x65, 0x72, 0x20, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x6f, 0x0a, 0x13, 0x45, 0x78, - 0x70, 0x6f, 0x72, 0x74, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, - 0x73, 0x12, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, - 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x74, 0x74, 0x70, - 0x42, 0x6f, 0x64, 0x79, 0x22, 0x13, 0x92, 0x41, 0x10, 0x0a, 0x0e, 0x4c, 0x65, 0x64, 0x67, 0x65, - 0x72, 0x20, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x30, 0x01, 0x12, 0x7c, 0x0a, 0x12, 0x4c, - 0x69, 0x73, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x73, 0x12, 0x2a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, + 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x11, 0x88, 0x02, 0x01, 0x92, 0x41, 0x0b, 0x0a, 0x09, 0x50, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x77, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x50, + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, + 0x6c, 0x6c, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x50, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0e, 0x92, + 0x41, 0x0b, 0x0a, 0x09, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x79, 0x0a, + 0x10, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0e, 0x92, 0x41, 0x0b, 0x0a, 0x09, 0x50, 0x6f, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x30, 0x01, 0x12, 0x7f, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, + 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0d, 0x92, 0x41, 0x0a, 0x0a, - 0x08, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x7e, 0x0a, 0x13, 0x47, 0x65, 0x74, - 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, + 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, + 0x65, 0x64, 0x67, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x13, 0x92, 0x41, 0x10, 0x0a, 0x0e, 0x4c, 0x65, 0x64, 0x67, 0x65, + 0x72, 0x20, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x6f, 0x0a, 0x13, 0x45, 0x78, 0x70, + 0x6f, 0x72, 0x74, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, - 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, - 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, - 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, - 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x81, 0x01, 0x0a, 0x14, 0x4c, 0x69, - 0x73, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, - 0x74, 0x61, 0x12, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x81, 0x01, - 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x44, 0x65, 0x70, 0x74, 0x68, 0x12, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, - 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x65, 0x70, 0x74, 0x68, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, - 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x65, 0x70, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x76, 0x32, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x45, + 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x42, + 0x6f, 0x64, 0x79, 0x22, 0x13, 0x92, 0x41, 0x10, 0x0a, 0x0e, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, + 0x20, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x30, 0x01, 0x12, 0x7c, 0x0a, 0x12, 0x4c, 0x69, + 0x73, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, + 0x12, 0x2a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0d, 0x92, 0x41, 0x0a, 0x0a, 0x08, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x7e, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4c, + 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, + 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, + 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, + 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x81, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, + 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, + 0x61, 0x12, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, + 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, + 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x81, 0x01, 0x0a, + 0x14, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, + 0x44, 0x65, 0x70, 0x74, 0x68, 0x12, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, + 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x65, 0x70, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x65, 0x70, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, + 0x12, 0x80, 0x01, 0x0a, 0x13, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x6b, + 0x65, 0x74, 0x73, 0x44, 0x65, 0x70, 0x74, 0x68, 0x12, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x44, 0x65, 0x70, 0x74, 0x68, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x44, 0x65, 0x70, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x73, 0x12, 0x80, 0x01, 0x0a, 0x13, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x73, 0x44, 0x65, 0x70, 0x74, 0x68, 0x12, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x44, 0x65, 0x70, 0x74, 0x68, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x73, 0x30, 0x01, 0x12, 0x95, 0x01, 0x0a, 0x1a, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x44, 0x65, 0x70, 0x74, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x73, 0x12, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x6b, + 0x65, 0x74, 0x73, 0x44, 0x65, 0x70, 0x74, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x44, 0x65, 0x70, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x73, 0x30, 0x01, 0x12, 0x95, 0x01, 0x0a, 0x1a, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x44, 0x65, 0x70, 0x74, 0x68, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x73, 0x12, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x73, 0x44, 0x65, 0x70, 0x74, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x44, 0x65, 0x70, 0x74, 0x68, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, - 0x09, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x30, 0x01, 0x12, 0x7d, 0x0a, 0x12, + 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, + 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x30, 0x01, 0x12, 0x7d, 0x0a, 0x12, 0x4f, + 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x44, 0x61, 0x74, + 0x61, 0x12, 0x2a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, + 0x74, 0x73, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x44, 0x61, - 0x74, 0x61, 0x12, 0x2a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x6b, - 0x65, 0x74, 0x73, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x44, - 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, - 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x30, 0x01, 0x12, 0x8d, 0x01, 0x0a, 0x18, - 0x47, 0x65, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, - 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, 0x49, 0x44, 0x12, 0x30, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x42, - 0x79, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, - 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, - 0x79, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, - 0x41, 0x09, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x6e, 0x0a, 0x0d, 0x4c, - 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0x25, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0e, 0x92, 0x41, 0x0b, - 0x0a, 0x09, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0x68, 0x0a, 0x0b, 0x47, - 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x23, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0e, 0x92, 0x41, 0x0b, 0x0a, 0x09, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0x75, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, - 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x6f, 0x0a, 0x0e, - 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x26, + 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, + 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x30, 0x01, 0x12, 0x8d, 0x01, 0x0a, 0x18, 0x47, + 0x65, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, + 0x6f, 0x72, 0x79, 0x42, 0x79, 0x49, 0x44, 0x12, 0x30, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x72, + 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x79, + 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, + 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, + 0x09, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x6e, 0x0a, 0x0d, 0x4c, 0x69, + 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0x25, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, + 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0e, 0x92, 0x41, 0x0b, 0x0a, + 0x09, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0x68, 0x0a, 0x0b, 0x47, 0x65, + 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6e, - 0x64, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x12, 0x7a, 0x0a, - 0x11, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x61, - 0x74, 0x61, 0x12, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x43, 0x61, 0x6e, 0x64, - 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, + 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0e, 0x92, 0x41, 0x0b, 0x0a, 0x09, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x65, 0x72, 0x73, 0x12, 0x75, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, + 0x41, 0x09, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x6f, 0x0a, 0x0e, 0x4c, + 0x69, 0x73, 0x74, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6e, 0x64, + 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, + 0x92, 0x41, 0x09, 0x0a, 0x07, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x12, 0x7a, 0x0a, 0x11, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x61, 0x74, - 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, - 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x30, 0x01, 0x12, 0x7e, 0x0a, 0x13, 0x4c, 0x69, 0x73, - 0x74, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, - 0x12, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6e, 0x74, - 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, + 0x61, 0x12, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x43, 0x61, 0x6e, 0x64, 0x6c, + 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, + 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x43, + 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x30, 0x01, 0x12, 0x7e, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, + 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x12, + 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6e, 0x74, 0x65, + 0x72, 0x76, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, + 0x07, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x12, 0x63, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, + 0x56, 0x6f, 0x74, 0x65, 0x73, 0x12, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6f, 0x74, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, + 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0f, 0x92, 0x41, + 0x0c, 0x0a, 0x0a, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x6e, 0x0a, + 0x0c, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x56, 0x6f, 0x74, 0x65, 0x73, 0x12, 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, - 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, - 0x0a, 0x07, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x12, 0x63, 0x0a, 0x09, 0x4c, 0x69, 0x73, - 0x74, 0x56, 0x6f, 0x74, 0x65, 0x73, 0x12, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x6f, 0x74, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x56, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0f, 0x92, - 0x41, 0x0c, 0x0a, 0x0a, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x6e, - 0x0a, 0x0c, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x56, 0x6f, 0x74, 0x65, 0x73, 0x12, 0x24, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x56, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x56, 0x6f, - 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0f, 0x92, 0x41, 0x0c, - 0x0a, 0x0a, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x30, 0x01, 0x12, 0xb3, - 0x01, 0x0a, 0x23, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, - 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x65, 0x64, 0x42, - 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x12, 0x3b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x52, 0x43, - 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, - 0x41, 0x64, 0x64, 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, - 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, - 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x11, 0x92, 0x41, 0x0e, 0x0a, 0x0c, 0x45, 0x52, 0x43, 0x32, 0x30, 0x20, 0x62, 0x72, - 0x69, 0x64, 0x67, 0x65, 0x12, 0xb9, 0x01, 0x0a, 0x25, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x52, 0x43, - 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x12, 0x3d, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, - 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x42, - 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, 0x2e, + 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x56, 0x6f, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x56, 0x6f, 0x74, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0f, 0x92, 0x41, 0x0c, 0x0a, + 0x0a, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x30, 0x01, 0x12, 0xb3, 0x01, + 0x0a, 0x23, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, + 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x65, 0x64, 0x42, 0x75, + 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x12, 0x3b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x52, 0x43, 0x32, + 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x41, + 0x64, 0x64, 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, + 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x65, + 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x11, 0x92, 0x41, 0x0e, 0x0a, 0x0c, 0x45, 0x52, 0x43, 0x32, 0x30, 0x20, 0x62, 0x72, 0x69, + 0x64, 0x67, 0x65, 0x12, 0xb9, 0x01, 0x0a, 0x25, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x52, 0x43, 0x32, + 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x12, 0x3d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x42, 0x75, - 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x92, - 0x41, 0x0e, 0x0a, 0x0c, 0x45, 0x52, 0x43, 0x32, 0x30, 0x20, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, - 0x12, 0x8f, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4c, 0x69, 0x73, - 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x2f, 0x2e, 0x64, + 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, + 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x42, 0x75, 0x6e, + 0x64, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x92, 0x41, + 0x0e, 0x0a, 0x0c, 0x45, 0x52, 0x43, 0x32, 0x30, 0x20, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x12, + 0x8f, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4c, 0x69, 0x73, 0x74, + 0x41, 0x73, 0x73, 0x65, 0x74, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x2f, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, + 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x42, + 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, - 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, - 0x47, 0x65, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x73, 0x73, 0x65, - 0x74, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x11, 0x92, 0x41, 0x0e, 0x0a, 0x0c, 0x45, 0x52, 0x43, 0x32, 0x30, 0x20, 0x62, 0x72, 0x69, 0x64, - 0x67, 0x65, 0x12, 0x9e, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x53, - 0x65, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x42, 0x75, 0x6e, - 0x64, 0x6c, 0x65, 0x12, 0x34, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x53, 0x65, + 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, + 0x92, 0x41, 0x0e, 0x0a, 0x0c, 0x45, 0x52, 0x43, 0x32, 0x30, 0x20, 0x62, 0x72, 0x69, 0x64, 0x67, + 0x65, 0x12, 0x9e, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x53, 0x65, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x42, 0x75, 0x6e, 0x64, - 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x45, - 0x52, 0x43, 0x32, 0x30, 0x53, 0x65, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x4c, 0x69, 0x6d, 0x69, - 0x74, 0x73, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x11, 0x92, 0x41, 0x0e, 0x0a, 0x0c, 0x45, 0x52, 0x43, 0x32, 0x30, 0x20, 0x62, 0x72, 0x69, - 0x64, 0x67, 0x65, 0x12, 0x98, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, + 0x6c, 0x65, 0x12, 0x34, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x53, 0x65, 0x74, + 0x41, 0x73, 0x73, 0x65, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x42, 0x75, 0x6e, 0x64, 0x6c, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x52, + 0x43, 0x32, 0x30, 0x53, 0x65, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, + 0x73, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x11, 0x92, 0x41, 0x0e, 0x0a, 0x0c, 0x45, 0x52, 0x43, 0x32, 0x30, 0x20, 0x62, 0x72, 0x69, 0x64, + 0x67, 0x65, 0x12, 0x98, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x57, + 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, + 0x6c, 0x12, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x57, 0x69, 0x74, 0x68, + 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, - 0x61, 0x6c, 0x12, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x52, 0x43, 0x32, 0x30, 0x57, 0x69, 0x74, - 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x52, 0x43, 0x32, - 0x30, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x41, 0x70, 0x70, 0x72, 0x6f, - 0x76, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x92, 0x41, 0x0e, - 0x0a, 0x0c, 0x45, 0x52, 0x43, 0x32, 0x30, 0x20, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x12, 0x68, - 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x12, 0x24, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x73, 0x74, 0x54, 0x72, - 0x61, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, - 0x0a, 0x06, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x62, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, - 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x22, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, - 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x6d, 0x0a, 0x0d, - 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x25, 0x2e, + 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x92, 0x41, 0x0e, 0x0a, + 0x0c, 0x45, 0x52, 0x43, 0x32, 0x30, 0x20, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x12, 0x68, 0x0a, + 0x0c, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x12, 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, - 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x54, 0x72, - 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, - 0x08, 0x0a, 0x06, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x30, 0x01, 0x12, 0x71, 0x0a, 0x0d, 0x47, - 0x65, 0x74, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x25, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, - 0x65, 0x74, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x65, 0x71, 0x75, + 0x47, 0x65, 0x74, 0x4c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, + 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, + 0x06, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x62, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x54, + 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x22, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, + 0x92, 0x41, 0x08, 0x0a, 0x06, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x6d, 0x0a, 0x0d, 0x4f, + 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, + 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, - 0x70, 0x65, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x92, 0x41, 0x0e, - 0x0a, 0x0c, 0x44, 0x61, 0x74, 0x61, 0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x77, - 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, - 0x73, 0x12, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, - 0x65, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x92, 0x41, 0x0e, 0x0a, 0x0c, 0x44, 0x61, 0x74, 0x61, 0x20, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x74, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x4f, - 0x72, 0x61, 0x63, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x54, 0x72, 0x61, + 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, + 0x0a, 0x06, 0x54, 0x72, 0x61, 0x64, 0x65, 0x73, 0x30, 0x01, 0x12, 0x71, 0x0a, 0x0d, 0x47, 0x65, + 0x74, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x25, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, + 0x74, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, + 0x65, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x92, 0x41, 0x0e, 0x0a, + 0x0c, 0x44, 0x61, 0x74, 0x61, 0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x77, 0x0a, + 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x73, + 0x12, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, + 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x44, 0x61, - 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x92, 0x41, 0x0e, 0x0a, - 0x0c, 0x44, 0x61, 0x74, 0x61, 0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x60, 0x0a, - 0x09, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x21, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, - 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, + 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x11, 0x92, 0x41, 0x0e, 0x0a, 0x0c, 0x44, 0x61, 0x74, 0x61, 0x20, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x74, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, + 0x61, 0x63, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, + 0x72, 0x61, 0x63, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x92, 0x41, 0x0e, 0x0a, 0x0c, + 0x44, 0x61, 0x74, 0x61, 0x20, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x60, 0x0a, 0x09, + 0x47, 0x65, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, + 0x65, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x66, + 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x23, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x81, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x53, + 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, + 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x4d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x72, + 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, + 0x09, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x5d, 0x0a, 0x08, 0x47, 0x65, + 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, 0x12, 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, 0x74, + 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, + 0x72, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, + 0x0a, 0x07, 0x50, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x66, 0x0a, 0x0b, 0x4c, 0x69, 0x73, + 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, + 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, - 0x47, 0x65, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, - 0x66, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x23, + 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x50, 0x61, 0x72, 0x74, 0x69, 0x65, + 0x73, 0x12, 0x7e, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, + 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, + 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, + 0x69, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x50, 0x61, 0x72, 0x74, 0x69, 0x65, + 0x73, 0x12, 0x74, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, + 0x65, 0x76, 0x65, 0x6c, 0x73, 0x12, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x67, + 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, + 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, + 0x06, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x12, 0x7f, 0x0a, 0x13, 0x4f, 0x62, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x12, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, - 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x81, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, - 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, - 0x12, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, - 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, + 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, + 0x76, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, + 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x30, 0x01, 0x12, 0x66, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, + 0x12, 0x7e, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x53, 0x75, + 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, + 0x12, 0x8d, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, 0x30, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x53, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x31, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, + 0x12, 0x62, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, 0x22, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, - 0x41, 0x09, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x5d, 0x0a, 0x08, 0x47, - 0x65, 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, 0x12, 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, - 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x50, - 0x61, 0x72, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, - 0x09, 0x0a, 0x07, 0x50, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x66, 0x0a, 0x0b, 0x4c, 0x69, - 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x50, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, + 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x41, 0x73, + 0x73, 0x65, 0x74, 0x73, 0x12, 0x68, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x73, 0x12, 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x6b, + 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x12, + 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, + 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, + 0x92, 0x41, 0x08, 0x0a, 0x06, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x71, 0x0a, 0x0f, 0x4c, + 0x69, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x12, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x50, 0x61, 0x72, 0x74, 0x69, - 0x65, 0x73, 0x12, 0x7e, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x65, - 0x73, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x50, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, - 0x74, 0x69, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x50, 0x61, 0x72, 0x74, 0x69, - 0x65, 0x73, 0x12, 0x74, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x12, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x72, - 0x67, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, 0x76, - 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, - 0x0a, 0x06, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x12, 0x7f, 0x0a, 0x13, 0x4f, 0x62, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x12, - 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, - 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, - 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, - 0x06, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x30, 0x01, 0x12, 0x66, 0x0a, 0x0b, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x73, 0x12, 0x7e, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x53, - 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x73, 0x12, 0x8d, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, 0x30, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x69, + 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x5c, + 0x0a, 0x08, 0x47, 0x65, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x12, 0x20, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, + 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, + 0x65, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x62, 0x0a, 0x0a, + 0x4c, 0x69, 0x73, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x22, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x31, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x73, 0x12, 0x62, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, - 0x22, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x41, - 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x68, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x73, 0x12, 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, - 0x6b, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, - 0x12, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x69, 0x74, - 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x71, 0x0a, 0x0f, - 0x4c, 0x69, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x12, - 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, - 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, - 0x5c, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x12, 0x20, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, - 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, - 0x47, 0x65, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x62, 0x0a, - 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x12, 0x22, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x41, 0x73, 0x73, 0x65, 0x74, - 0x73, 0x12, 0x8f, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, - 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2f, 0x2e, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, + 0x12, 0x8f, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, + 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2f, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, - 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x11, 0x88, 0x02, 0x01, 0x92, 0x41, 0x0b, 0x0a, 0x09, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, - 0x69, 0x74, 0x79, 0x12, 0x95, 0x01, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x4c, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x11, 0x88, 0x02, 0x01, 0x92, 0x41, 0x0b, 0x0a, 0x09, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, + 0x74, 0x79, 0x12, 0x95, 0x01, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x4c, 0x69, + 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x4c, 0x69, 0x71, 0x75, 0x69, + 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x4c, 0x69, 0x71, 0x75, - 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, - 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0e, 0x92, 0x41, 0x0b, - 0x0a, 0x09, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x12, 0x97, 0x01, 0x0a, 0x1a, + 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0e, 0x92, 0x41, 0x0b, 0x0a, + 0x09, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x12, 0x97, 0x01, 0x0a, 0x1a, 0x4f, + 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, + 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, - 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x32, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, - 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x0e, 0x92, 0x41, 0x0b, 0x0a, 0x09, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, - 0x69, 0x74, 0x79, 0x30, 0x01, 0x12, 0x89, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x69, - 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, - 0x12, 0x2e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, - 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, - 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x0e, 0x92, 0x41, 0x0b, 0x0a, 0x09, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, - 0x79, 0x12, 0x86, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x69, 0x64, 0x4c, 0x69, - 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x12, 0x2d, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x50, 0x61, 0x69, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x46, - 0x65, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x64, 0x61, 0x74, + 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x0e, 0x92, 0x41, 0x0b, 0x0a, 0x09, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, + 0x74, 0x79, 0x30, 0x01, 0x12, 0x89, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x69, 0x71, + 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x12, + 0x2e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x0e, 0x92, 0x41, 0x0b, 0x0a, 0x09, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, + 0x12, 0x86, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x69, 0x64, 0x4c, 0x69, 0x71, + 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x12, 0x2d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x69, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x46, 0x65, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0e, 0x92, 0x41, 0x0b, 0x0a, - 0x09, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x12, 0x7b, 0x0a, 0x11, 0x47, 0x65, - 0x74, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, - 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x44, - 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, - 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0f, 0x92, 0x41, 0x0c, 0x0a, 0x0a, 0x47, 0x6f, 0x76, - 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x7e, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x47, - 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, - 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0f, 0x92, 0x41, 0x0c, 0x0a, 0x0a, 0x47, 0x6f, 0x76, - 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x7d, 0x0a, 0x11, 0x4f, 0x62, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x29, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, - 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x0f, 0x92, 0x41, 0x0c, 0x0a, 0x0a, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, - 0x61, 0x6e, 0x63, 0x65, 0x30, 0x01, 0x12, 0x72, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, - 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, - 0x09, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x6f, 0x0a, 0x0e, 0x47, 0x65, - 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x26, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, - 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, - 0x41, 0x09, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x5a, 0x0a, 0x07, 0x47, - 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x50, 0x61, 0x69, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x46, 0x65, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0e, 0x92, 0x41, 0x0b, 0x0a, 0x09, + 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x12, 0x7b, 0x0a, 0x11, 0x47, 0x65, 0x74, + 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x29, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, + 0x2e, 0x47, 0x65, 0x74, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x47, + 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0f, 0x92, 0x41, 0x0c, 0x0a, 0x0a, 0x47, 0x6f, 0x76, 0x65, + 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x7e, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x6f, + 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, + 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0f, 0x92, 0x41, 0x0c, 0x0a, 0x0a, 0x47, 0x6f, 0x76, 0x65, + 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x7d, 0x0a, 0x11, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x29, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x0f, 0x92, 0x41, 0x0c, 0x0a, 0x0a, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, + 0x6e, 0x63, 0x65, 0x30, 0x01, 0x12, 0x72, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x6c, + 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, + 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, + 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x6f, 0x0a, 0x0e, 0x47, 0x65, 0x74, + 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x26, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, + 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, + 0x09, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x5a, 0x0a, 0x07, 0x47, 0x65, + 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, - 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x60, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x4e, - 0x6f, 0x64, 0x65, 0x73, 0x12, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, - 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, - 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x80, 0x01, 0x0a, 0x12, 0x4c, 0x69, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x60, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, + 0x64, 0x65, 0x73, 0x12, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, + 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x80, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, + 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, + 0x2a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, - 0x12, 0x2a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x92, 0x41, 0x0e, 0x0a, 0x0c, - 0x45, 0x52, 0x43, 0x32, 0x30, 0x20, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x12, 0x5d, 0x0a, 0x08, - 0x47, 0x65, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x70, - 0x6f, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, - 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, - 0x41, 0x09, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x65, 0x0a, 0x0b, 0x45, - 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x46, 0x65, 0x65, 0x12, 0x23, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x73, 0x74, - 0x69, 0x6d, 0x61, 0x74, 0x65, 0x46, 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x46, 0x65, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x73, 0x12, 0x71, 0x0a, 0x0e, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x4d, 0x61, - 0x72, 0x67, 0x69, 0x6e, 0x12, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x4d, - 0x61, 0x72, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, - 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0e, 0x88, 0x02, 0x01, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x77, 0x0a, 0x10, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, - 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x92, 0x41, 0x0e, 0x0a, 0x0c, 0x45, + 0x52, 0x43, 0x32, 0x30, 0x20, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x12, 0x5d, 0x0a, 0x08, 0x47, + 0x65, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x70, 0x6f, + 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x45, + 0x70, 0x6f, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, + 0x09, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x65, 0x0a, 0x0b, 0x45, 0x73, + 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x46, 0x65, 0x65, 0x12, 0x23, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x73, 0x74, 0x69, - 0x6d, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x50, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0e, - 0x92, 0x41, 0x0b, 0x0a, 0x09, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x84, - 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x2d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x6d, 0x61, 0x74, 0x65, 0x46, 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, + 0x2e, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x46, 0x65, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x73, 0x12, 0x71, 0x0a, 0x0e, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x72, + 0x67, 0x69, 0x6e, 0x12, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x4d, 0x61, + 0x72, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x73, + 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0e, 0x88, 0x02, 0x01, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x73, 0x12, 0x77, 0x0a, 0x10, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, + 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x73, 0x74, 0x69, 0x6d, + 0x61, 0x74, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0e, 0x92, + 0x41, 0x0b, 0x0a, 0x09, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x84, 0x01, + 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x2d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x7e, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x2b, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, - 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, - 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x72, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, - 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x5d, 0x0a, 0x08, 0x47, 0x65, 0x74, - 0x53, 0x74, 0x61, 0x6b, 0x65, 0x12, 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x6b, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, - 0x6b, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, - 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x6f, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x52, - 0x69, 0x73, 0x6b, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x26, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, - 0x52, 0x69, 0x73, 0x6b, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x69, 0x73, 0x6b, 0x46, 0x61, 0x63, 0x74, - 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, - 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x75, 0x0a, 0x0f, 0x4f, 0x62, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x75, 0x73, 0x12, 0x27, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, - 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x75, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x42, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x28, 0x01, 0x30, 0x01, - 0x12, 0x92, 0x01, 0x0a, 0x16, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4c, 0x65, 0x64, 0x67, - 0x65, 0x72, 0x4d, 0x6f, 0x76, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2e, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x4d, 0x6f, 0x76, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x4d, 0x6f, 0x76, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x92, 0x41, - 0x12, 0x0a, 0x10, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x20, 0x6d, 0x6f, 0x76, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0x30, 0x01, 0x12, 0x75, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x65, 0x79, - 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, - 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x8d, 0x01, 0x0a, - 0x18, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x4b, 0x65, 0x79, - 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, - 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x66, 0x0a, 0x0b, - 0x47, 0x65, 0x74, 0x56, 0x65, 0x67, 0x61, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x23, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, - 0x74, 0x56, 0x65, 0x67, 0x61, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x67, 0x61, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x65, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x8d, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x12, 0x30, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, - 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, + 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x7e, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x2b, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, + 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x99, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x50, 0x72, 0x6f, 0x70, - 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x12, 0x34, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x72, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, + 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x5d, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x53, + 0x74, 0x61, 0x6b, 0x65, 0x12, 0x20, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x6b, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, + 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x6f, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x52, 0x69, + 0x73, 0x6b, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x26, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x52, + 0x69, 0x73, 0x6b, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x27, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x69, 0x73, 0x6b, 0x46, 0x61, 0x63, 0x74, 0x6f, + 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, + 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x75, 0x0a, 0x0f, 0x4f, 0x62, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x75, 0x73, 0x12, 0x27, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x75, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x42, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, + 0x92, 0x41, 0x08, 0x0a, 0x06, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x28, 0x01, 0x30, 0x01, 0x12, + 0x92, 0x01, 0x0a, 0x16, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x4c, 0x65, 0x64, 0x67, 0x65, + 0x72, 0x4d, 0x6f, 0x76, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2e, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x4d, 0x6f, 0x76, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x4d, 0x6f, 0x76, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x92, 0x41, 0x12, + 0x0a, 0x10, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x20, 0x6d, 0x6f, 0x76, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x30, 0x01, 0x12, 0x75, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x52, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4b, + 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, + 0x41, 0x09, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x8d, 0x01, 0x0a, 0x18, + 0x4c, 0x69, 0x73, 0x74, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x4b, 0x65, 0x79, 0x52, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, + 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, + 0x41, 0x09, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x66, 0x0a, 0x0b, 0x47, + 0x65, 0x74, 0x56, 0x65, 0x67, 0x61, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x23, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, + 0x56, 0x65, 0x67, 0x61, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x67, 0x61, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x12, 0x8d, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x30, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, + 0x67, 0x72, 0x61, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x12, 0x99, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, - 0x73, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, - 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x12, 0x78, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x72, 0x65, 0x53, 0x6e, 0x61, 0x70, - 0x73, 0x68, 0x6f, 0x74, 0x73, 0x12, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x72, 0x65, - 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x72, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, - 0x68, 0x6f, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, - 0x09, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0xb3, 0x01, 0x0a, 0x22, 0x47, + 0x73, 0x61, 0x6c, 0x73, 0x12, 0x34, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, + 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, + 0x78, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x72, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, + 0x68, 0x6f, 0x74, 0x73, 0x12, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x72, 0x65, 0x53, + 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x72, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, + 0x6f, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, + 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0xb3, 0x01, 0x0a, 0x22, 0x47, 0x65, + 0x74, 0x4d, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, + 0x12, 0x3a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, + 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, + 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x3a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x63, 0x65, 0x6e, - 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, - 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x92, 0x41, 0x11, 0x0a, 0x0f, + 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, + 0xa4, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, + 0x73, 0x12, 0x35, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, + 0x6c, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, + 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x14, 0x92, 0x41, 0x11, 0x0a, 0x0f, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x68, + 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0xb9, 0x01, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x41, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, + 0x72, 0x79, 0x50, 0x65, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, + 0x3c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x50, 0x65, 0x65, 0x72, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, - 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x4e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x67, 0x6d, 0x65, - 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x92, 0x41, 0x11, 0x0a, - 0x0f, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, - 0x12, 0xa4, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, - 0x74, 0x73, 0x12, 0x35, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, - 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x41, 0x6c, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, - 0x79, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x14, 0x92, 0x41, 0x11, 0x0a, 0x0f, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, - 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0xb9, 0x01, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x41, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, - 0x6f, 0x72, 0x79, 0x50, 0x65, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, - 0x12, 0x3c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x50, 0x65, 0x65, 0x72, 0x41, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, + 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x50, 0x65, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x92, 0x41, + 0x11, 0x0a, 0x0f, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x68, 0x69, 0x73, 0x74, 0x6f, + 0x72, 0x79, 0x12, 0x92, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x50, 0x65, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x92, - 0x41, 0x11, 0x0a, 0x0f, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x68, 0x69, 0x73, 0x74, - 0x6f, 0x72, 0x79, 0x12, 0x92, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x2f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, + 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x30, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, - 0x6f, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x30, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, - 0x74, 0x6f, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x14, 0x92, 0x41, 0x11, 0x0a, 0x0f, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x20, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0xaa, 0x01, 0x0a, 0x1f, 0x47, 0x65, 0x74, - 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x6f, - 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x50, 0x65, 0x65, 0x72, 0x73, 0x12, 0x37, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, - 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, - 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x50, 0x65, 0x65, 0x72, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, - 0x61, 0x70, 0x50, 0x65, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x14, 0x92, 0x41, 0x11, 0x0a, 0x0f, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x68, 0x69, - 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x6a, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, - 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x69, - 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x0d, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x45, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, - 0x72, 0x12, 0x7b, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, - 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x73, 0x12, 0x2a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x75, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x96, - 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, - 0x72, 0x69, 0x6f, 0x64, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x33, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, - 0x6f, 0x64, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, - 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x7e, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x46, - 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2b, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, - 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, - 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x90, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x50, - 0x61, 0x72, 0x74, 0x79, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x72, 0x65, - 0x61, 0x6b, 0x12, 0x2e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x63, 0x74, - 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x63, 0x74, - 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x15, 0x92, 0x41, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, - 0x61, 0x6c, 0x20, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x99, 0x01, 0x0a, 0x19, 0x47, - 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, - 0x6c, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x31, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, - 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x50, 0x72, 0x6f, - 0x67, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x64, 0x61, + 0x6f, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x14, 0x92, 0x41, 0x11, 0x0a, 0x0f, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, + 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0xaa, 0x01, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x4e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x6f, 0x6f, + 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x50, 0x65, 0x65, 0x72, 0x73, 0x12, 0x37, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, - 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, - 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x15, 0x92, 0x41, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x20, 0x70, - 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x7e, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x12, 0x28, 0x2e, 0x64, 0x61, 0x74, + 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x42, + 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, 0x70, 0x50, 0x65, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x6f, 0x6f, 0x74, 0x73, 0x74, 0x72, 0x61, + 0x70, 0x50, 0x65, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, + 0x92, 0x41, 0x11, 0x0a, 0x0f, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x68, 0x69, 0x73, + 0x74, 0x6f, 0x72, 0x79, 0x12, 0x6a, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x69, + 0x74, 0x69, 0x65, 0x73, 0x12, 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x74, + 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, - 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x15, 0x92, 0x41, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x20, 0x70, - 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x93, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, - 0x65, 0x73, 0x12, 0x2f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, - 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, - 0x61, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x92, 0x41, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x66, 0x65, - 0x72, 0x72, 0x61, 0x6c, 0x20, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x87, 0x01, 0x0a, - 0x13, 0x47, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x12, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, - 0x61, 0x6c, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, - 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x15, 0x92, 0x41, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x20, 0x70, - 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x5e, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, - 0x61, 0x6d, 0x73, 0x12, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, - 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0a, 0x92, 0x41, 0x07, 0x0a, - 0x05, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x7c, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, - 0x61, 0x6d, 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x2b, 0x2e, + 0x74, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x0d, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x45, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x72, + 0x12, 0x7b, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, + 0x65, 0x72, 0x69, 0x6f, 0x64, 0x73, 0x12, 0x2a, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x75, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x96, 0x01, + 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, + 0x69, 0x6f, 0x64, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x33, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, + 0x64, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x7e, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x75, + 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, - 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x61, 0x74, + 0x4c, 0x69, 0x73, 0x74, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0a, 0x92, 0x41, 0x07, 0x0a, 0x05, 0x54, - 0x65, 0x61, 0x6d, 0x73, 0x12, 0x8e, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, - 0x6d, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, - 0x63, 0x73, 0x12, 0x31, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0a, 0x92, 0x41, 0x07, 0x0a, 0x05, - 0x54, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x73, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, - 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x74, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x4d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x90, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x50, 0x61, + 0x72, 0x74, 0x79, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6b, 0x12, 0x2e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x63, 0x74, 0x69, + 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x63, 0x74, 0x69, + 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x15, 0x92, 0x41, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, + 0x6c, 0x20, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x99, 0x01, 0x0a, 0x19, 0x47, 0x65, + 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, + 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x31, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x67, + 0x72, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, + 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x50, + 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, + 0x92, 0x41, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x20, 0x70, 0x72, + 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x7e, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, + 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x12, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, - 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0a, - 0x92, 0x41, 0x07, 0x0a, 0x05, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x85, 0x01, 0x0a, 0x16, 0x4c, - 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x48, 0x69, - 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x2e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, - 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, + 0x61, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, + 0x92, 0x41, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x20, 0x70, 0x72, + 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x93, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, + 0x73, 0x12, 0x2f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, + 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, + 0x6c, 0x53, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x92, 0x41, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x66, 0x65, 0x72, + 0x72, 0x61, 0x6c, 0x20, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x87, 0x01, 0x0a, 0x13, + 0x47, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x12, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, + 0x6c, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, + 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, + 0x92, 0x41, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x20, 0x70, 0x72, + 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x5e, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, + 0x6d, 0x73, 0x12, 0x21, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, - 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0a, 0x92, 0x41, 0x07, 0x0a, 0x05, 0x54, 0x65, 0x61, - 0x6d, 0x73, 0x12, 0x66, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x12, 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, - 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x09, 0x92, 0x41, 0x06, 0x0a, 0x04, 0x46, 0x65, 0x65, 0x73, 0x12, 0x7e, 0x0a, 0x14, 0x47, 0x65, - 0x74, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x50, 0x61, 0x72, - 0x74, 0x79, 0x12, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x46, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x46, - 0x6f, 0x72, 0x50, 0x61, 0x72, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x09, 0x92, 0x41, 0x06, 0x0a, 0x04, 0x46, 0x65, 0x65, 0x73, 0x12, 0xb2, 0x01, 0x0a, 0x1f, 0x47, - 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, - 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x37, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x1c, 0x92, 0x41, 0x19, 0x0a, 0x17, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x20, 0x64, - 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, - 0x97, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x2e, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, - 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, - 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x92, 0x41, 0x19, - 0x0a, 0x17, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x20, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x20, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x90, 0x01, 0x0a, 0x19, 0x47, 0x65, - 0x74, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, - 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x31, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, - 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x73, - 0x74, 0x69, 0x6e, 0x67, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x53, 0x75, 0x6d, 0x6d, - 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, - 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x53, - 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, - 0x92, 0x41, 0x09, 0x0a, 0x07, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x81, 0x01, 0x0a, - 0x14, 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, - 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, 0x56, 0x65, - 0x73, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, - 0x12, 0x9e, 0x01, 0x0a, 0x19, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x31, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, - 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x92, 0x41, 0x15, 0x0a, 0x13, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x30, - 0x01, 0x12, 0x80, 0x01, 0x0a, 0x13, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x12, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x73, 0x74, 0x69, - 0x6d, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, - 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0e, 0x92, 0x41, 0x0b, 0x0a, 0x09, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x66, 0x65, 0x72, 0x73, 0x12, 0x98, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, - 0x6c, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x44, 0x69, 0x73, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x33, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x54, - 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x44, - 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x0e, 0x92, 0x41, 0x0b, 0x0a, 0x09, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, - 0x5e, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x21, 0x2e, 0x64, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0a, 0x92, 0x41, 0x07, 0x0a, 0x05, + 0x54, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x7c, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, + 0x6d, 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x22, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x0a, 0x92, 0x41, 0x07, 0x0a, 0x05, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x12, - 0x80, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, 0x4d, 0x61, 0x72, - 0x67, 0x69, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, - 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, - 0x61, 0x72, 0x74, 0x79, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, - 0x74, 0x79, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x4d, 0x61, 0x72, 0x67, - 0x69, 0x6e, 0x12, 0xa4, 0x01, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x57, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, - 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, - 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, - 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x38, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x32, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, - 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0e, 0x92, 0x41, 0x0b, 0x0a, 0x09, - 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x72, 0x0a, 0x14, 0x45, 0x78, 0x70, - 0x6f, 0x72, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, + 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, + 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x54, 0x65, 0x61, 0x6d, 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0a, 0x92, 0x41, 0x07, 0x0a, 0x05, 0x54, 0x65, + 0x61, 0x6d, 0x73, 0x12, 0x8e, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, + 0x73, 0x12, 0x31, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0a, 0x92, 0x41, 0x07, 0x0a, 0x05, 0x54, + 0x65, 0x61, 0x6d, 0x73, 0x12, 0x73, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, + 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, + 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0a, 0x92, + 0x41, 0x07, 0x0a, 0x05, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x85, 0x01, 0x0a, 0x16, 0x4c, 0x69, + 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x48, 0x69, 0x73, + 0x74, 0x6f, 0x72, 0x79, 0x12, 0x2e, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x52, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x52, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0a, 0x92, 0x41, 0x07, 0x0a, 0x05, 0x54, 0x65, 0x61, 0x6d, + 0x73, 0x12, 0x66, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, + 0x73, 0x12, 0x24, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, + 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x09, + 0x92, 0x41, 0x06, 0x0a, 0x04, 0x46, 0x65, 0x65, 0x73, 0x12, 0x7e, 0x0a, 0x14, 0x47, 0x65, 0x74, + 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x74, 0x79, 0x12, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x74, 0x74, - 0x70, 0x42, 0x6f, 0x64, 0x79, 0x22, 0x14, 0x92, 0x41, 0x11, 0x0a, 0x0f, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x20, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x30, 0x01, 0x12, 0x4e, 0x0a, - 0x04, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x1c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x09, 0x92, 0x41, 0x06, 0x0a, 0x04, 0x4d, 0x69, 0x73, 0x63, 0x42, 0xca, 0x01, - 0x5a, 0x31, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x65, 0x67, 0x61, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x73, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x2d, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x76, 0x32, 0x92, 0x41, 0x93, 0x01, 0x12, 0x22, 0x0a, 0x13, 0x56, 0x65, 0x67, 0x61, 0x20, - 0x64, 0x61, 0x74, 0x61, 0x20, 0x6e, 0x6f, 0x64, 0x65, 0x20, 0x41, 0x50, 0x49, 0x73, 0x32, 0x0b, - 0x76, 0x30, 0x2e, 0x37, 0x37, 0x2e, 0x30, 0x2d, 0x64, 0x65, 0x76, 0x1a, 0x1c, 0x68, 0x74, 0x74, - 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x61, 0x70, 0x69, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x6e, 0x65, 0x74, - 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x78, 0x79, 0x7a, 0x2a, 0x02, 0x01, 0x02, 0x32, 0x10, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x52, - 0x39, 0x0a, 0x03, 0x35, 0x30, 0x30, 0x12, 0x32, 0x0a, 0x18, 0x41, 0x6e, 0x20, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x14, 0x1a, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, + 0x46, 0x6f, 0x72, 0x50, 0x61, 0x72, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x46, 0x6f, + 0x72, 0x50, 0x61, 0x72, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x09, + 0x92, 0x41, 0x06, 0x0a, 0x04, 0x46, 0x65, 0x65, 0x73, 0x12, 0xb2, 0x01, 0x0a, 0x1f, 0x47, 0x65, + 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, + 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x37, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x1c, 0x92, 0x41, 0x19, 0x0a, 0x17, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x20, 0x64, 0x69, + 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x97, + 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x2e, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x56, + 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x56, + 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x92, 0x41, 0x19, 0x0a, + 0x17, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x20, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x20, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x90, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, + 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x53, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x31, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, + 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x73, 0x74, + 0x69, 0x6e, 0x67, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x56, + 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x53, 0x75, + 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0c, 0x92, + 0x41, 0x09, 0x0a, 0x07, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x81, 0x01, 0x0a, 0x14, + 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x12, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, 0x56, + 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, 0x56, 0x65, 0x73, + 0x74, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x0c, 0x92, 0x41, 0x09, 0x0a, 0x07, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x12, + 0x9e, 0x01, 0x0a, 0x19, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x31, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, + 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x32, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x92, 0x41, 0x15, 0x0a, 0x13, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x30, 0x01, + 0x12, 0x80, 0x01, 0x0a, 0x13, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x12, 0x2b, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x73, 0x74, 0x69, 0x6d, + 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x0e, 0x92, 0x41, 0x0b, 0x0a, 0x09, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x65, 0x72, 0x73, 0x12, 0x98, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x33, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, + 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6f, + 0x74, 0x61, 0x6c, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x44, 0x69, + 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0e, + 0x92, 0x41, 0x0b, 0x0a, 0x09, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0x5e, + 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x21, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x0a, 0x92, 0x41, 0x07, 0x0a, 0x05, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x80, + 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, 0x4d, 0x61, 0x72, 0x67, + 0x69, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, + 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, + 0x72, 0x74, 0x79, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x72, 0x74, + 0x79, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0b, 0x92, 0x41, 0x08, 0x0a, 0x06, 0x4d, 0x61, 0x72, 0x67, 0x69, + 0x6e, 0x12, 0xa4, 0x01, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x6f, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x57, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, + 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, + 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0e, 0x92, 0x41, 0x0b, 0x0a, 0x09, 0x50, + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x72, 0x0a, 0x14, 0x45, 0x78, 0x70, 0x6f, + 0x72, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, + 0x12, 0x2c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x48, 0x74, 0x74, 0x70, + 0x42, 0x6f, 0x64, 0x79, 0x22, 0x14, 0x92, 0x41, 0x11, 0x0a, 0x0f, 0x4e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x20, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x30, 0x01, 0x12, 0x4e, 0x0a, 0x04, + 0x50, 0x69, 0x6e, 0x67, 0x12, 0x1c, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x09, 0x92, 0x41, 0x06, 0x0a, 0x04, 0x4d, 0x69, 0x73, 0x63, 0x42, 0xca, 0x01, 0x5a, + 0x31, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x65, 0x67, 0x61, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x73, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x2d, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x76, 0x32, 0x92, 0x41, 0x93, 0x01, 0x12, 0x22, 0x0a, 0x13, 0x56, 0x65, 0x67, 0x61, 0x20, 0x64, + 0x61, 0x74, 0x61, 0x20, 0x6e, 0x6f, 0x64, 0x65, 0x20, 0x41, 0x50, 0x49, 0x73, 0x32, 0x0b, 0x76, + 0x30, 0x2e, 0x37, 0x37, 0x2e, 0x30, 0x2d, 0x64, 0x65, 0x76, 0x1a, 0x1c, 0x68, 0x74, 0x74, 0x70, + 0x73, 0x3a, 0x2f, 0x2f, 0x61, 0x70, 0x69, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x6e, 0x65, 0x74, 0x2e, + 0x76, 0x65, 0x67, 0x61, 0x2e, 0x78, 0x79, 0x7a, 0x2a, 0x02, 0x01, 0x02, 0x32, 0x10, 0x61, 0x70, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x52, 0x39, + 0x0a, 0x03, 0x35, 0x30, 0x30, 0x12, 0x32, 0x0a, 0x18, 0x41, 0x6e, 0x20, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x12, 0x16, 0x0a, 0x14, 0x1a, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, + 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( @@ -30562,7 +31224,7 @@ func file_data_node_api_v2_trading_data_proto_rawDescGZIP() []byte { } var file_data_node_api_v2_trading_data_proto_enumTypes = make([]protoimpl.EnumInfo, 6) -var file_data_node_api_v2_trading_data_proto_msgTypes = make([]protoimpl.MessageInfo, 413) +var file_data_node_api_v2_trading_data_proto_msgTypes = make([]protoimpl.MessageInfo, 423) var file_data_node_api_v2_trading_data_proto_goTypes = []interface{}{ (LedgerEntryField)(0), // 0: datanode.api.v2.LedgerEntryField (AccountField)(0), // 1: datanode.api.v2.AccountField @@ -30600,1169 +31262,1197 @@ var file_data_node_api_v2_trading_data_proto_goTypes = []interface{}{ (*OrderUpdates)(nil), // 33: datanode.api.v2.OrderUpdates (*GetStopOrderRequest)(nil), // 34: datanode.api.v2.GetStopOrderRequest (*GetStopOrderResponse)(nil), // 35: datanode.api.v2.GetStopOrderResponse - (*ListStopOrdersRequest)(nil), // 36: datanode.api.v2.ListStopOrdersRequest - (*StopOrderFilter)(nil), // 37: datanode.api.v2.StopOrderFilter - (*StopOrderEdge)(nil), // 38: datanode.api.v2.StopOrderEdge - (*StopOrderConnection)(nil), // 39: datanode.api.v2.StopOrderConnection - (*ListStopOrdersResponse)(nil), // 40: datanode.api.v2.ListStopOrdersResponse - (*ListPositionsRequest)(nil), // 41: datanode.api.v2.ListPositionsRequest - (*ListPositionsResponse)(nil), // 42: datanode.api.v2.ListPositionsResponse - (*PositionsFilter)(nil), // 43: datanode.api.v2.PositionsFilter - (*ListAllPositionsRequest)(nil), // 44: datanode.api.v2.ListAllPositionsRequest - (*ListAllPositionsResponse)(nil), // 45: datanode.api.v2.ListAllPositionsResponse - (*PositionEdge)(nil), // 46: datanode.api.v2.PositionEdge - (*PositionConnection)(nil), // 47: datanode.api.v2.PositionConnection - (*ObservePositionsRequest)(nil), // 48: datanode.api.v2.ObservePositionsRequest - (*ObservePositionsResponse)(nil), // 49: datanode.api.v2.ObservePositionsResponse - (*PositionSnapshotPage)(nil), // 50: datanode.api.v2.PositionSnapshotPage - (*PositionUpdates)(nil), // 51: datanode.api.v2.PositionUpdates - (*LedgerEntryFilter)(nil), // 52: datanode.api.v2.LedgerEntryFilter - (*AggregatedLedgerEntry)(nil), // 53: datanode.api.v2.AggregatedLedgerEntry - (*ListLedgerEntriesRequest)(nil), // 54: datanode.api.v2.ListLedgerEntriesRequest - (*ExportLedgerEntriesRequest)(nil), // 55: datanode.api.v2.ExportLedgerEntriesRequest - (*ListLedgerEntriesResponse)(nil), // 56: datanode.api.v2.ListLedgerEntriesResponse - (*AggregatedLedgerEntriesEdge)(nil), // 57: datanode.api.v2.AggregatedLedgerEntriesEdge - (*AggregatedLedgerEntriesConnection)(nil), // 58: datanode.api.v2.AggregatedLedgerEntriesConnection - (*ListBalanceChangesRequest)(nil), // 59: datanode.api.v2.ListBalanceChangesRequest - (*ListBalanceChangesResponse)(nil), // 60: datanode.api.v2.ListBalanceChangesResponse - (*GetBalanceHistoryRequest)(nil), // 61: datanode.api.v2.GetBalanceHistoryRequest - (*GetBalanceHistoryResponse)(nil), // 62: datanode.api.v2.GetBalanceHistoryResponse - (*AggregatedBalanceEdge)(nil), // 63: datanode.api.v2.AggregatedBalanceEdge - (*AggregatedBalanceConnection)(nil), // 64: datanode.api.v2.AggregatedBalanceConnection - (*AccountFilter)(nil), // 65: datanode.api.v2.AccountFilter - (*AggregatedBalance)(nil), // 66: datanode.api.v2.AggregatedBalance - (*ObserveMarketsDepthRequest)(nil), // 67: datanode.api.v2.ObserveMarketsDepthRequest - (*ObserveMarketsDepthResponse)(nil), // 68: datanode.api.v2.ObserveMarketsDepthResponse - (*ObserveMarketsDepthUpdatesRequest)(nil), // 69: datanode.api.v2.ObserveMarketsDepthUpdatesRequest - (*ObserveMarketsDepthUpdatesResponse)(nil), // 70: datanode.api.v2.ObserveMarketsDepthUpdatesResponse - (*ObserveMarketsDataRequest)(nil), // 71: datanode.api.v2.ObserveMarketsDataRequest - (*ObserveMarketsDataResponse)(nil), // 72: datanode.api.v2.ObserveMarketsDataResponse - (*GetLatestMarketDepthRequest)(nil), // 73: datanode.api.v2.GetLatestMarketDepthRequest - (*GetLatestMarketDepthResponse)(nil), // 74: datanode.api.v2.GetLatestMarketDepthResponse - (*ListLatestMarketDataRequest)(nil), // 75: datanode.api.v2.ListLatestMarketDataRequest - (*ListLatestMarketDataResponse)(nil), // 76: datanode.api.v2.ListLatestMarketDataResponse - (*GetLatestMarketDataRequest)(nil), // 77: datanode.api.v2.GetLatestMarketDataRequest - (*GetLatestMarketDataResponse)(nil), // 78: datanode.api.v2.GetLatestMarketDataResponse - (*GetMarketDataHistoryByIDRequest)(nil), // 79: datanode.api.v2.GetMarketDataHistoryByIDRequest - (*GetMarketDataHistoryByIDResponse)(nil), // 80: datanode.api.v2.GetMarketDataHistoryByIDResponse - (*MarketDataEdge)(nil), // 81: datanode.api.v2.MarketDataEdge - (*MarketDataConnection)(nil), // 82: datanode.api.v2.MarketDataConnection - (*ListTransfersRequest)(nil), // 83: datanode.api.v2.ListTransfersRequest - (*ListTransfersResponse)(nil), // 84: datanode.api.v2.ListTransfersResponse - (*TransferNode)(nil), // 85: datanode.api.v2.TransferNode - (*TransferEdge)(nil), // 86: datanode.api.v2.TransferEdge - (*TransferConnection)(nil), // 87: datanode.api.v2.TransferConnection - (*GetTransferRequest)(nil), // 88: datanode.api.v2.GetTransferRequest - (*GetTransferResponse)(nil), // 89: datanode.api.v2.GetTransferResponse - (*GetNetworkLimitsRequest)(nil), // 90: datanode.api.v2.GetNetworkLimitsRequest - (*GetNetworkLimitsResponse)(nil), // 91: datanode.api.v2.GetNetworkLimitsResponse - (*ListCandleIntervalsRequest)(nil), // 92: datanode.api.v2.ListCandleIntervalsRequest - (*IntervalToCandleId)(nil), // 93: datanode.api.v2.IntervalToCandleId - (*ListCandleIntervalsResponse)(nil), // 94: datanode.api.v2.ListCandleIntervalsResponse - (*Candle)(nil), // 95: datanode.api.v2.Candle - (*ObserveCandleDataRequest)(nil), // 96: datanode.api.v2.ObserveCandleDataRequest - (*ObserveCandleDataResponse)(nil), // 97: datanode.api.v2.ObserveCandleDataResponse - (*ListCandleDataRequest)(nil), // 98: datanode.api.v2.ListCandleDataRequest - (*ListCandleDataResponse)(nil), // 99: datanode.api.v2.ListCandleDataResponse - (*CandleEdge)(nil), // 100: datanode.api.v2.CandleEdge - (*CandleDataConnection)(nil), // 101: datanode.api.v2.CandleDataConnection - (*ListVotesRequest)(nil), // 102: datanode.api.v2.ListVotesRequest - (*ListVotesResponse)(nil), // 103: datanode.api.v2.ListVotesResponse - (*VoteEdge)(nil), // 104: datanode.api.v2.VoteEdge - (*VoteConnection)(nil), // 105: datanode.api.v2.VoteConnection - (*ObserveVotesRequest)(nil), // 106: datanode.api.v2.ObserveVotesRequest - (*ObserveVotesResponse)(nil), // 107: datanode.api.v2.ObserveVotesResponse - (*ListERC20MultiSigSignerAddedBundlesRequest)(nil), // 108: datanode.api.v2.ListERC20MultiSigSignerAddedBundlesRequest - (*ListERC20MultiSigSignerAddedBundlesResponse)(nil), // 109: datanode.api.v2.ListERC20MultiSigSignerAddedBundlesResponse - (*ERC20MultiSigSignerAddedEdge)(nil), // 110: datanode.api.v2.ERC20MultiSigSignerAddedEdge - (*ERC20MultiSigSignerAddedBundleEdge)(nil), // 111: datanode.api.v2.ERC20MultiSigSignerAddedBundleEdge - (*ERC20MultiSigSignerAddedConnection)(nil), // 112: datanode.api.v2.ERC20MultiSigSignerAddedConnection - (*ERC20MultiSigSignerAddedBundle)(nil), // 113: datanode.api.v2.ERC20MultiSigSignerAddedBundle - (*ListERC20MultiSigSignerRemovedBundlesRequest)(nil), // 114: datanode.api.v2.ListERC20MultiSigSignerRemovedBundlesRequest - (*ListERC20MultiSigSignerRemovedBundlesResponse)(nil), // 115: datanode.api.v2.ListERC20MultiSigSignerRemovedBundlesResponse - (*ERC20MultiSigSignerRemovedEdge)(nil), // 116: datanode.api.v2.ERC20MultiSigSignerRemovedEdge - (*ERC20MultiSigSignerRemovedBundleEdge)(nil), // 117: datanode.api.v2.ERC20MultiSigSignerRemovedBundleEdge - (*ERC20MultiSigSignerRemovedConnection)(nil), // 118: datanode.api.v2.ERC20MultiSigSignerRemovedConnection - (*ERC20MultiSigSignerRemovedBundle)(nil), // 119: datanode.api.v2.ERC20MultiSigSignerRemovedBundle - (*GetERC20ListAssetBundleRequest)(nil), // 120: datanode.api.v2.GetERC20ListAssetBundleRequest - (*GetERC20ListAssetBundleResponse)(nil), // 121: datanode.api.v2.GetERC20ListAssetBundleResponse - (*GetERC20SetAssetLimitsBundleRequest)(nil), // 122: datanode.api.v2.GetERC20SetAssetLimitsBundleRequest - (*GetERC20SetAssetLimitsBundleResponse)(nil), // 123: datanode.api.v2.GetERC20SetAssetLimitsBundleResponse - (*GetERC20WithdrawalApprovalRequest)(nil), // 124: datanode.api.v2.GetERC20WithdrawalApprovalRequest - (*GetERC20WithdrawalApprovalResponse)(nil), // 125: datanode.api.v2.GetERC20WithdrawalApprovalResponse - (*GetLastTradeRequest)(nil), // 126: datanode.api.v2.GetLastTradeRequest - (*GetLastTradeResponse)(nil), // 127: datanode.api.v2.GetLastTradeResponse - (*ListTradesRequest)(nil), // 128: datanode.api.v2.ListTradesRequest - (*ListTradesResponse)(nil), // 129: datanode.api.v2.ListTradesResponse - (*TradeConnection)(nil), // 130: datanode.api.v2.TradeConnection - (*TradeEdge)(nil), // 131: datanode.api.v2.TradeEdge - (*ObserveTradesRequest)(nil), // 132: datanode.api.v2.ObserveTradesRequest - (*ObserveTradesResponse)(nil), // 133: datanode.api.v2.ObserveTradesResponse - (*GetOracleSpecRequest)(nil), // 134: datanode.api.v2.GetOracleSpecRequest - (*GetOracleSpecResponse)(nil), // 135: datanode.api.v2.GetOracleSpecResponse - (*ListOracleSpecsRequest)(nil), // 136: datanode.api.v2.ListOracleSpecsRequest - (*ListOracleSpecsResponse)(nil), // 137: datanode.api.v2.ListOracleSpecsResponse - (*ListOracleDataRequest)(nil), // 138: datanode.api.v2.ListOracleDataRequest - (*ListOracleDataResponse)(nil), // 139: datanode.api.v2.ListOracleDataResponse - (*OracleSpecEdge)(nil), // 140: datanode.api.v2.OracleSpecEdge - (*OracleSpecsConnection)(nil), // 141: datanode.api.v2.OracleSpecsConnection - (*OracleDataEdge)(nil), // 142: datanode.api.v2.OracleDataEdge - (*OracleDataConnection)(nil), // 143: datanode.api.v2.OracleDataConnection - (*GetMarketRequest)(nil), // 144: datanode.api.v2.GetMarketRequest - (*GetMarketResponse)(nil), // 145: datanode.api.v2.GetMarketResponse - (*ListMarketsRequest)(nil), // 146: datanode.api.v2.ListMarketsRequest - (*ListMarketsResponse)(nil), // 147: datanode.api.v2.ListMarketsResponse - (*MarketEdge)(nil), // 148: datanode.api.v2.MarketEdge - (*MarketConnection)(nil), // 149: datanode.api.v2.MarketConnection - (*ListSuccessorMarketsRequest)(nil), // 150: datanode.api.v2.ListSuccessorMarketsRequest - (*SuccessorMarket)(nil), // 151: datanode.api.v2.SuccessorMarket - (*SuccessorMarketEdge)(nil), // 152: datanode.api.v2.SuccessorMarketEdge - (*SuccessorMarketConnection)(nil), // 153: datanode.api.v2.SuccessorMarketConnection - (*ListSuccessorMarketsResponse)(nil), // 154: datanode.api.v2.ListSuccessorMarketsResponse - (*GetPartyRequest)(nil), // 155: datanode.api.v2.GetPartyRequest - (*GetPartyResponse)(nil), // 156: datanode.api.v2.GetPartyResponse - (*ListPartiesRequest)(nil), // 157: datanode.api.v2.ListPartiesRequest - (*ListPartiesResponse)(nil), // 158: datanode.api.v2.ListPartiesResponse - (*PartyEdge)(nil), // 159: datanode.api.v2.PartyEdge - (*PartyConnection)(nil), // 160: datanode.api.v2.PartyConnection - (*ListPartiesProfilesRequest)(nil), // 161: datanode.api.v2.ListPartiesProfilesRequest - (*ListPartiesProfilesResponse)(nil), // 162: datanode.api.v2.ListPartiesProfilesResponse - (*PartyProfileEdge)(nil), // 163: datanode.api.v2.PartyProfileEdge - (*PartiesProfilesConnection)(nil), // 164: datanode.api.v2.PartiesProfilesConnection - (*OrderEdge)(nil), // 165: datanode.api.v2.OrderEdge - (*ListMarginLevelsRequest)(nil), // 166: datanode.api.v2.ListMarginLevelsRequest - (*ListMarginLevelsResponse)(nil), // 167: datanode.api.v2.ListMarginLevelsResponse - (*ObserveMarginLevelsRequest)(nil), // 168: datanode.api.v2.ObserveMarginLevelsRequest - (*ObserveMarginLevelsResponse)(nil), // 169: datanode.api.v2.ObserveMarginLevelsResponse - (*OrderConnection)(nil), // 170: datanode.api.v2.OrderConnection - (*MarginEdge)(nil), // 171: datanode.api.v2.MarginEdge - (*MarginConnection)(nil), // 172: datanode.api.v2.MarginConnection - (*ListRewardsRequest)(nil), // 173: datanode.api.v2.ListRewardsRequest - (*ListRewardsResponse)(nil), // 174: datanode.api.v2.ListRewardsResponse - (*RewardEdge)(nil), // 175: datanode.api.v2.RewardEdge - (*RewardsConnection)(nil), // 176: datanode.api.v2.RewardsConnection - (*ListRewardSummariesRequest)(nil), // 177: datanode.api.v2.ListRewardSummariesRequest - (*ListRewardSummariesResponse)(nil), // 178: datanode.api.v2.ListRewardSummariesResponse - (*RewardSummaryFilter)(nil), // 179: datanode.api.v2.RewardSummaryFilter - (*ListEpochRewardSummariesRequest)(nil), // 180: datanode.api.v2.ListEpochRewardSummariesRequest - (*ListEpochRewardSummariesResponse)(nil), // 181: datanode.api.v2.ListEpochRewardSummariesResponse - (*EpochRewardSummaryConnection)(nil), // 182: datanode.api.v2.EpochRewardSummaryConnection - (*EpochRewardSummaryEdge)(nil), // 183: datanode.api.v2.EpochRewardSummaryEdge - (*ObserveRewardsRequest)(nil), // 184: datanode.api.v2.ObserveRewardsRequest - (*ObserveRewardsResponse)(nil), // 185: datanode.api.v2.ObserveRewardsResponse - (*GetDepositRequest)(nil), // 186: datanode.api.v2.GetDepositRequest - (*GetDepositResponse)(nil), // 187: datanode.api.v2.GetDepositResponse - (*ListDepositsRequest)(nil), // 188: datanode.api.v2.ListDepositsRequest - (*ListDepositsResponse)(nil), // 189: datanode.api.v2.ListDepositsResponse - (*DepositEdge)(nil), // 190: datanode.api.v2.DepositEdge - (*DepositsConnection)(nil), // 191: datanode.api.v2.DepositsConnection - (*GetWithdrawalRequest)(nil), // 192: datanode.api.v2.GetWithdrawalRequest - (*GetWithdrawalResponse)(nil), // 193: datanode.api.v2.GetWithdrawalResponse - (*ListWithdrawalsRequest)(nil), // 194: datanode.api.v2.ListWithdrawalsRequest - (*ListWithdrawalsResponse)(nil), // 195: datanode.api.v2.ListWithdrawalsResponse - (*WithdrawalEdge)(nil), // 196: datanode.api.v2.WithdrawalEdge - (*WithdrawalsConnection)(nil), // 197: datanode.api.v2.WithdrawalsConnection - (*GetAssetRequest)(nil), // 198: datanode.api.v2.GetAssetRequest - (*GetAssetResponse)(nil), // 199: datanode.api.v2.GetAssetResponse - (*ListAssetsRequest)(nil), // 200: datanode.api.v2.ListAssetsRequest - (*ListAssetsResponse)(nil), // 201: datanode.api.v2.ListAssetsResponse - (*AssetEdge)(nil), // 202: datanode.api.v2.AssetEdge - (*AssetsConnection)(nil), // 203: datanode.api.v2.AssetsConnection - (*ListLiquidityProvisionsRequest)(nil), // 204: datanode.api.v2.ListLiquidityProvisionsRequest - (*ListAllLiquidityProvisionsRequest)(nil), // 205: datanode.api.v2.ListAllLiquidityProvisionsRequest - (*ListLiquidityProvisionsResponse)(nil), // 206: datanode.api.v2.ListLiquidityProvisionsResponse - (*ListAllLiquidityProvisionsResponse)(nil), // 207: datanode.api.v2.ListAllLiquidityProvisionsResponse - (*LiquidityProvision)(nil), // 208: datanode.api.v2.LiquidityProvision - (*LiquidityProvisionsEdge)(nil), // 209: datanode.api.v2.LiquidityProvisionsEdge - (*LiquidityProvisionWithPendingEdge)(nil), // 210: datanode.api.v2.LiquidityProvisionWithPendingEdge - (*LiquidityProvisionsConnection)(nil), // 211: datanode.api.v2.LiquidityProvisionsConnection - (*LiquidityProvisionsWithPendingConnection)(nil), // 212: datanode.api.v2.LiquidityProvisionsWithPendingConnection - (*ObserveLiquidityProvisionsRequest)(nil), // 213: datanode.api.v2.ObserveLiquidityProvisionsRequest - (*ObserveLiquidityProvisionsResponse)(nil), // 214: datanode.api.v2.ObserveLiquidityProvisionsResponse - (*ListLiquidityProvidersRequest)(nil), // 215: datanode.api.v2.ListLiquidityProvidersRequest - (*LiquidityProvider)(nil), // 216: datanode.api.v2.LiquidityProvider - (*LiquidityProviderEdge)(nil), // 217: datanode.api.v2.LiquidityProviderEdge - (*LiquidityProviderConnection)(nil), // 218: datanode.api.v2.LiquidityProviderConnection - (*ListLiquidityProvidersResponse)(nil), // 219: datanode.api.v2.ListLiquidityProvidersResponse - (*ListPaidLiquidityFeesRequest)(nil), // 220: datanode.api.v2.ListPaidLiquidityFeesRequest - (*ListPaidLiquidityFeesResponse)(nil), // 221: datanode.api.v2.ListPaidLiquidityFeesResponse - (*PaidLiquidityFeesEdge)(nil), // 222: datanode.api.v2.PaidLiquidityFeesEdge - (*PaidLiquidityFeesConnection)(nil), // 223: datanode.api.v2.PaidLiquidityFeesConnection - (*GetGovernanceDataRequest)(nil), // 224: datanode.api.v2.GetGovernanceDataRequest - (*GetGovernanceDataResponse)(nil), // 225: datanode.api.v2.GetGovernanceDataResponse - (*ListGovernanceDataRequest)(nil), // 226: datanode.api.v2.ListGovernanceDataRequest - (*ListGovernanceDataResponse)(nil), // 227: datanode.api.v2.ListGovernanceDataResponse - (*GovernanceDataEdge)(nil), // 228: datanode.api.v2.GovernanceDataEdge - (*GovernanceDataConnection)(nil), // 229: datanode.api.v2.GovernanceDataConnection - (*ObserveGovernanceRequest)(nil), // 230: datanode.api.v2.ObserveGovernanceRequest - (*ObserveGovernanceResponse)(nil), // 231: datanode.api.v2.ObserveGovernanceResponse - (*ListDelegationsRequest)(nil), // 232: datanode.api.v2.ListDelegationsRequest - (*ListDelegationsResponse)(nil), // 233: datanode.api.v2.ListDelegationsResponse - (*DelegationEdge)(nil), // 234: datanode.api.v2.DelegationEdge - (*DelegationsConnection)(nil), // 235: datanode.api.v2.DelegationsConnection - (*ObserveDelegationsRequest)(nil), // 236: datanode.api.v2.ObserveDelegationsRequest - (*ObserveDelegationsResponse)(nil), // 237: datanode.api.v2.ObserveDelegationsResponse - (*NodeBasic)(nil), // 238: datanode.api.v2.NodeBasic - (*GetNetworkDataRequest)(nil), // 239: datanode.api.v2.GetNetworkDataRequest - (*GetNetworkDataResponse)(nil), // 240: datanode.api.v2.GetNetworkDataResponse - (*GetNodeRequest)(nil), // 241: datanode.api.v2.GetNodeRequest - (*GetNodeResponse)(nil), // 242: datanode.api.v2.GetNodeResponse - (*ListNodesRequest)(nil), // 243: datanode.api.v2.ListNodesRequest - (*ListNodesResponse)(nil), // 244: datanode.api.v2.ListNodesResponse - (*NodeEdge)(nil), // 245: datanode.api.v2.NodeEdge - (*NodesConnection)(nil), // 246: datanode.api.v2.NodesConnection - (*ListNodeSignaturesRequest)(nil), // 247: datanode.api.v2.ListNodeSignaturesRequest - (*ListNodeSignaturesResponse)(nil), // 248: datanode.api.v2.ListNodeSignaturesResponse - (*NodeSignatureEdge)(nil), // 249: datanode.api.v2.NodeSignatureEdge - (*NodeSignaturesConnection)(nil), // 250: datanode.api.v2.NodeSignaturesConnection - (*GetEpochRequest)(nil), // 251: datanode.api.v2.GetEpochRequest - (*GetEpochResponse)(nil), // 252: datanode.api.v2.GetEpochResponse - (*EstimateFeeRequest)(nil), // 253: datanode.api.v2.EstimateFeeRequest - (*EstimateFeeResponse)(nil), // 254: datanode.api.v2.EstimateFeeResponse - (*EstimateMarginRequest)(nil), // 255: datanode.api.v2.EstimateMarginRequest - (*EstimateMarginResponse)(nil), // 256: datanode.api.v2.EstimateMarginResponse - (*ListNetworkParametersRequest)(nil), // 257: datanode.api.v2.ListNetworkParametersRequest - (*ListNetworkParametersResponse)(nil), // 258: datanode.api.v2.ListNetworkParametersResponse - (*GetNetworkParameterRequest)(nil), // 259: datanode.api.v2.GetNetworkParameterRequest - (*GetNetworkParameterResponse)(nil), // 260: datanode.api.v2.GetNetworkParameterResponse - (*NetworkParameterEdge)(nil), // 261: datanode.api.v2.NetworkParameterEdge - (*NetworkParameterConnection)(nil), // 262: datanode.api.v2.NetworkParameterConnection - (*Checkpoint)(nil), // 263: datanode.api.v2.Checkpoint - (*ListCheckpointsRequest)(nil), // 264: datanode.api.v2.ListCheckpointsRequest - (*ListCheckpointsResponse)(nil), // 265: datanode.api.v2.ListCheckpointsResponse - (*CheckpointEdge)(nil), // 266: datanode.api.v2.CheckpointEdge - (*CheckpointsConnection)(nil), // 267: datanode.api.v2.CheckpointsConnection - (*GetStakeRequest)(nil), // 268: datanode.api.v2.GetStakeRequest - (*GetStakeResponse)(nil), // 269: datanode.api.v2.GetStakeResponse - (*StakeLinkingEdge)(nil), // 270: datanode.api.v2.StakeLinkingEdge - (*StakesConnection)(nil), // 271: datanode.api.v2.StakesConnection - (*GetRiskFactorsRequest)(nil), // 272: datanode.api.v2.GetRiskFactorsRequest - (*GetRiskFactorsResponse)(nil), // 273: datanode.api.v2.GetRiskFactorsResponse - (*ObserveEventBusRequest)(nil), // 274: datanode.api.v2.ObserveEventBusRequest - (*ObserveEventBusResponse)(nil), // 275: datanode.api.v2.ObserveEventBusResponse - (*ObserveLedgerMovementsRequest)(nil), // 276: datanode.api.v2.ObserveLedgerMovementsRequest - (*ObserveLedgerMovementsResponse)(nil), // 277: datanode.api.v2.ObserveLedgerMovementsResponse - (*ListKeyRotationsRequest)(nil), // 278: datanode.api.v2.ListKeyRotationsRequest - (*ListKeyRotationsResponse)(nil), // 279: datanode.api.v2.ListKeyRotationsResponse - (*KeyRotationEdge)(nil), // 280: datanode.api.v2.KeyRotationEdge - (*KeyRotationConnection)(nil), // 281: datanode.api.v2.KeyRotationConnection - (*ListEthereumKeyRotationsRequest)(nil), // 282: datanode.api.v2.ListEthereumKeyRotationsRequest - (*ListEthereumKeyRotationsResponse)(nil), // 283: datanode.api.v2.ListEthereumKeyRotationsResponse - (*EthereumKeyRotationsConnection)(nil), // 284: datanode.api.v2.EthereumKeyRotationsConnection - (*EthereumKeyRotationEdge)(nil), // 285: datanode.api.v2.EthereumKeyRotationEdge - (*GetVegaTimeRequest)(nil), // 286: datanode.api.v2.GetVegaTimeRequest - (*GetVegaTimeResponse)(nil), // 287: datanode.api.v2.GetVegaTimeResponse - (*DateRange)(nil), // 288: datanode.api.v2.DateRange - (*GetProtocolUpgradeStatusRequest)(nil), // 289: datanode.api.v2.GetProtocolUpgradeStatusRequest - (*GetProtocolUpgradeStatusResponse)(nil), // 290: datanode.api.v2.GetProtocolUpgradeStatusResponse - (*ListProtocolUpgradeProposalsRequest)(nil), // 291: datanode.api.v2.ListProtocolUpgradeProposalsRequest - (*ListProtocolUpgradeProposalsResponse)(nil), // 292: datanode.api.v2.ListProtocolUpgradeProposalsResponse - (*ProtocolUpgradeProposalConnection)(nil), // 293: datanode.api.v2.ProtocolUpgradeProposalConnection - (*ProtocolUpgradeProposalEdge)(nil), // 294: datanode.api.v2.ProtocolUpgradeProposalEdge - (*ListCoreSnapshotsRequest)(nil), // 295: datanode.api.v2.ListCoreSnapshotsRequest - (*ListCoreSnapshotsResponse)(nil), // 296: datanode.api.v2.ListCoreSnapshotsResponse - (*CoreSnapshotConnection)(nil), // 297: datanode.api.v2.CoreSnapshotConnection - (*CoreSnapshotEdge)(nil), // 298: datanode.api.v2.CoreSnapshotEdge - (*HistorySegment)(nil), // 299: datanode.api.v2.HistorySegment - (*GetMostRecentNetworkHistorySegmentRequest)(nil), // 300: datanode.api.v2.GetMostRecentNetworkHistorySegmentRequest - (*GetMostRecentNetworkHistorySegmentResponse)(nil), // 301: datanode.api.v2.GetMostRecentNetworkHistorySegmentResponse - (*ListAllNetworkHistorySegmentsRequest)(nil), // 302: datanode.api.v2.ListAllNetworkHistorySegmentsRequest - (*ListAllNetworkHistorySegmentsResponse)(nil), // 303: datanode.api.v2.ListAllNetworkHistorySegmentsResponse - (*GetActiveNetworkHistoryPeerAddressesRequest)(nil), // 304: datanode.api.v2.GetActiveNetworkHistoryPeerAddressesRequest - (*GetActiveNetworkHistoryPeerAddressesResponse)(nil), // 305: datanode.api.v2.GetActiveNetworkHistoryPeerAddressesResponse - (*GetNetworkHistoryStatusRequest)(nil), // 306: datanode.api.v2.GetNetworkHistoryStatusRequest - (*GetNetworkHistoryStatusResponse)(nil), // 307: datanode.api.v2.GetNetworkHistoryStatusResponse - (*GetNetworkHistoryBootstrapPeersRequest)(nil), // 308: datanode.api.v2.GetNetworkHistoryBootstrapPeersRequest - (*GetNetworkHistoryBootstrapPeersResponse)(nil), // 309: datanode.api.v2.GetNetworkHistoryBootstrapPeersResponse - (*ExportNetworkHistoryRequest)(nil), // 310: datanode.api.v2.ExportNetworkHistoryRequest - (*ListEntitiesRequest)(nil), // 311: datanode.api.v2.ListEntitiesRequest - (*ListEntitiesResponse)(nil), // 312: datanode.api.v2.ListEntitiesResponse - (*GetPartyActivityStreakRequest)(nil), // 313: datanode.api.v2.GetPartyActivityStreakRequest - (*GetPartyActivityStreakResponse)(nil), // 314: datanode.api.v2.GetPartyActivityStreakResponse - (*FundingPayment)(nil), // 315: datanode.api.v2.FundingPayment - (*ListFundingPaymentsRequest)(nil), // 316: datanode.api.v2.ListFundingPaymentsRequest - (*FundingPaymentEdge)(nil), // 317: datanode.api.v2.FundingPaymentEdge - (*FundingPaymentConnection)(nil), // 318: datanode.api.v2.FundingPaymentConnection - (*ListFundingPaymentsResponse)(nil), // 319: datanode.api.v2.ListFundingPaymentsResponse - (*ListFundingPeriodsRequest)(nil), // 320: datanode.api.v2.ListFundingPeriodsRequest - (*FundingPeriodEdge)(nil), // 321: datanode.api.v2.FundingPeriodEdge - (*FundingPeriodConnection)(nil), // 322: datanode.api.v2.FundingPeriodConnection - (*ListFundingPeriodsResponse)(nil), // 323: datanode.api.v2.ListFundingPeriodsResponse - (*ListFundingPeriodDataPointsRequest)(nil), // 324: datanode.api.v2.ListFundingPeriodDataPointsRequest - (*FundingPeriodDataPointEdge)(nil), // 325: datanode.api.v2.FundingPeriodDataPointEdge - (*FundingPeriodDataPointConnection)(nil), // 326: datanode.api.v2.FundingPeriodDataPointConnection - (*ListFundingPeriodDataPointsResponse)(nil), // 327: datanode.api.v2.ListFundingPeriodDataPointsResponse - (*PingRequest)(nil), // 328: datanode.api.v2.PingRequest - (*PingResponse)(nil), // 329: datanode.api.v2.PingResponse - (*OrderInfo)(nil), // 330: datanode.api.v2.OrderInfo - (*EstimatePositionRequest)(nil), // 331: datanode.api.v2.EstimatePositionRequest - (*EstimatePositionResponse)(nil), // 332: datanode.api.v2.EstimatePositionResponse - (*CollateralIncreaseEstimate)(nil), // 333: datanode.api.v2.CollateralIncreaseEstimate - (*MarginEstimate)(nil), // 334: datanode.api.v2.MarginEstimate - (*LiquidationEstimate)(nil), // 335: datanode.api.v2.LiquidationEstimate - (*LiquidationPrice)(nil), // 336: datanode.api.v2.LiquidationPrice - (*GetCurrentReferralProgramRequest)(nil), // 337: datanode.api.v2.GetCurrentReferralProgramRequest - (*GetCurrentReferralProgramResponse)(nil), // 338: datanode.api.v2.GetCurrentReferralProgramResponse - (*ReferralProgram)(nil), // 339: datanode.api.v2.ReferralProgram - (*ReferralSet)(nil), // 340: datanode.api.v2.ReferralSet - (*ReferralSetEdge)(nil), // 341: datanode.api.v2.ReferralSetEdge - (*ReferralSetConnection)(nil), // 342: datanode.api.v2.ReferralSetConnection - (*ListReferralSetsRequest)(nil), // 343: datanode.api.v2.ListReferralSetsRequest - (*ListReferralSetsResponse)(nil), // 344: datanode.api.v2.ListReferralSetsResponse - (*ReferralSetReferee)(nil), // 345: datanode.api.v2.ReferralSetReferee - (*ReferralSetRefereeEdge)(nil), // 346: datanode.api.v2.ReferralSetRefereeEdge - (*ReferralSetRefereeConnection)(nil), // 347: datanode.api.v2.ReferralSetRefereeConnection - (*ListReferralSetRefereesRequest)(nil), // 348: datanode.api.v2.ListReferralSetRefereesRequest - (*ListReferralSetRefereesResponse)(nil), // 349: datanode.api.v2.ListReferralSetRefereesResponse - (*GetReferralSetStatsRequest)(nil), // 350: datanode.api.v2.GetReferralSetStatsRequest - (*GetReferralSetStatsResponse)(nil), // 351: datanode.api.v2.GetReferralSetStatsResponse - (*ReferralSetStatsConnection)(nil), // 352: datanode.api.v2.ReferralSetStatsConnection - (*ReferralSetStatsEdge)(nil), // 353: datanode.api.v2.ReferralSetStatsEdge - (*ReferralSetStats)(nil), // 354: datanode.api.v2.ReferralSetStats - (*Team)(nil), // 355: datanode.api.v2.Team - (*TeamEdge)(nil), // 356: datanode.api.v2.TeamEdge - (*TeamConnection)(nil), // 357: datanode.api.v2.TeamConnection - (*ListTeamsRequest)(nil), // 358: datanode.api.v2.ListTeamsRequest - (*ListTeamsResponse)(nil), // 359: datanode.api.v2.ListTeamsResponse - (*ListTeamsStatisticsRequest)(nil), // 360: datanode.api.v2.ListTeamsStatisticsRequest - (*ListTeamsStatisticsResponse)(nil), // 361: datanode.api.v2.ListTeamsStatisticsResponse - (*TeamsStatisticsConnection)(nil), // 362: datanode.api.v2.TeamsStatisticsConnection - (*TeamStatisticsEdge)(nil), // 363: datanode.api.v2.TeamStatisticsEdge - (*TeamStatistics)(nil), // 364: datanode.api.v2.TeamStatistics - (*QuantumRewardsPerEpoch)(nil), // 365: datanode.api.v2.QuantumRewardsPerEpoch - (*QuantumVolumesPerEpoch)(nil), // 366: datanode.api.v2.QuantumVolumesPerEpoch - (*ListTeamMembersStatisticsRequest)(nil), // 367: datanode.api.v2.ListTeamMembersStatisticsRequest - (*ListTeamMembersStatisticsResponse)(nil), // 368: datanode.api.v2.ListTeamMembersStatisticsResponse - (*TeamMembersStatisticsConnection)(nil), // 369: datanode.api.v2.TeamMembersStatisticsConnection - (*TeamMemberStatisticsEdge)(nil), // 370: datanode.api.v2.TeamMemberStatisticsEdge - (*TeamMemberStatistics)(nil), // 371: datanode.api.v2.TeamMemberStatistics - (*ListTeamRefereesRequest)(nil), // 372: datanode.api.v2.ListTeamRefereesRequest - (*TeamReferee)(nil), // 373: datanode.api.v2.TeamReferee - (*TeamRefereeEdge)(nil), // 374: datanode.api.v2.TeamRefereeEdge - (*TeamRefereeConnection)(nil), // 375: datanode.api.v2.TeamRefereeConnection - (*ListTeamRefereesResponse)(nil), // 376: datanode.api.v2.ListTeamRefereesResponse - (*TeamRefereeHistory)(nil), // 377: datanode.api.v2.TeamRefereeHistory - (*TeamRefereeHistoryEdge)(nil), // 378: datanode.api.v2.TeamRefereeHistoryEdge - (*TeamRefereeHistoryConnection)(nil), // 379: datanode.api.v2.TeamRefereeHistoryConnection - (*ListTeamRefereeHistoryRequest)(nil), // 380: datanode.api.v2.ListTeamRefereeHistoryRequest - (*ListTeamRefereeHistoryResponse)(nil), // 381: datanode.api.v2.ListTeamRefereeHistoryResponse - (*GetFeesStatsRequest)(nil), // 382: datanode.api.v2.GetFeesStatsRequest - (*GetFeesStatsResponse)(nil), // 383: datanode.api.v2.GetFeesStatsResponse - (*GetFeesStatsForPartyRequest)(nil), // 384: datanode.api.v2.GetFeesStatsForPartyRequest - (*GetFeesStatsForPartyResponse)(nil), // 385: datanode.api.v2.GetFeesStatsForPartyResponse - (*GetCurrentVolumeDiscountProgramRequest)(nil), // 386: datanode.api.v2.GetCurrentVolumeDiscountProgramRequest - (*GetCurrentVolumeDiscountProgramResponse)(nil), // 387: datanode.api.v2.GetCurrentVolumeDiscountProgramResponse - (*GetVolumeDiscountStatsRequest)(nil), // 388: datanode.api.v2.GetVolumeDiscountStatsRequest - (*GetVolumeDiscountStatsResponse)(nil), // 389: datanode.api.v2.GetVolumeDiscountStatsResponse - (*VolumeDiscountStatsConnection)(nil), // 390: datanode.api.v2.VolumeDiscountStatsConnection - (*VolumeDiscountStatsEdge)(nil), // 391: datanode.api.v2.VolumeDiscountStatsEdge - (*VolumeDiscountStats)(nil), // 392: datanode.api.v2.VolumeDiscountStats - (*VolumeDiscountProgram)(nil), // 393: datanode.api.v2.VolumeDiscountProgram - (*FeesStatsForParty)(nil), // 394: datanode.api.v2.FeesStatsForParty - (*ObserveTransactionResultsRequest)(nil), // 395: datanode.api.v2.ObserveTransactionResultsRequest - (*ObserveTransactionResultsResponse)(nil), // 396: datanode.api.v2.ObserveTransactionResultsResponse - (*EstimateTransferFeeRequest)(nil), // 397: datanode.api.v2.EstimateTransferFeeRequest - (*EstimateTransferFeeResponse)(nil), // 398: datanode.api.v2.EstimateTransferFeeResponse - (*GetTotalTransferFeeDiscountRequest)(nil), // 399: datanode.api.v2.GetTotalTransferFeeDiscountRequest - (*GetTotalTransferFeeDiscountResponse)(nil), // 400: datanode.api.v2.GetTotalTransferFeeDiscountResponse - (*ListGamesRequest)(nil), // 401: datanode.api.v2.ListGamesRequest - (*ListGamesResponse)(nil), // 402: datanode.api.v2.ListGamesResponse - (*GamesConnection)(nil), // 403: datanode.api.v2.GamesConnection - (*GameEdge)(nil), // 404: datanode.api.v2.GameEdge - (*Game)(nil), // 405: datanode.api.v2.Game - (*TeamGameEntities)(nil), // 406: datanode.api.v2.TeamGameEntities - (*IndividualGameEntities)(nil), // 407: datanode.api.v2.IndividualGameEntities - (*TeamGameEntity)(nil), // 408: datanode.api.v2.TeamGameEntity - (*TeamGameParticipation)(nil), // 409: datanode.api.v2.TeamGameParticipation - (*IndividualGameEntity)(nil), // 410: datanode.api.v2.IndividualGameEntity - (*ListPartyMarginModesRequest)(nil), // 411: datanode.api.v2.ListPartyMarginModesRequest - (*ListPartyMarginModesResponse)(nil), // 412: datanode.api.v2.ListPartyMarginModesResponse - (*PartyMarginModesConnection)(nil), // 413: datanode.api.v2.PartyMarginModesConnection - (*PartyMarginModeEdge)(nil), // 414: datanode.api.v2.PartyMarginModeEdge - (*PartyMarginMode)(nil), // 415: datanode.api.v2.PartyMarginMode - (*TimeWeightedNotionalPosition)(nil), // 416: datanode.api.v2.TimeWeightedNotionalPosition - (*GetTimeWeightedNotionalPositionRequest)(nil), // 417: datanode.api.v2.GetTimeWeightedNotionalPositionRequest - (*GetTimeWeightedNotionalPositionResponse)(nil), // 418: datanode.api.v2.GetTimeWeightedNotionalPositionResponse - (*v1.PartyLockedBalance)(nil), // 419: vega.events.v1.PartyLockedBalance - (*v1.PartyVestingBalance)(nil), // 420: vega.events.v1.PartyVestingBalance - (vega.AccountType)(0), // 421: vega.AccountType - (*vega.Order)(nil), // 422: vega.Order - (vega.Order_Status)(0), // 423: vega.Order.Status - (vega.Order_Type)(0), // 424: vega.Order.Type - (vega.Order_TimeInForce)(0), // 425: vega.Order.TimeInForce - (*v1.StopOrderEvent)(nil), // 426: vega.events.v1.StopOrderEvent - (vega.StopOrder_Status)(0), // 427: vega.StopOrder.Status - (vega.StopOrder_ExpiryStrategy)(0), // 428: vega.StopOrder.ExpiryStrategy - (*vega.Position)(nil), // 429: vega.Position - (vega.TransferType)(0), // 430: vega.TransferType - (*vega.MarketDepth)(nil), // 431: vega.MarketDepth - (*vega.MarketDepthUpdate)(nil), // 432: vega.MarketDepthUpdate - (*vega.MarketData)(nil), // 433: vega.MarketData - (*vega.PriceLevel)(nil), // 434: vega.PriceLevel - (*vega.Trade)(nil), // 435: vega.Trade - (v1.Transfer_Status)(0), // 436: vega.events.v1.Transfer.Status - (*v1.Transfer)(nil), // 437: vega.events.v1.Transfer - (*v1.TransferFees)(nil), // 438: vega.events.v1.TransferFees - (*vega.NetworkLimits)(nil), // 439: vega.NetworkLimits - (*vega.Vote)(nil), // 440: vega.Vote - (*v1.ERC20MultiSigSignerAdded)(nil), // 441: vega.events.v1.ERC20MultiSigSignerAdded - (*v1.ERC20MultiSigSignerRemoved)(nil), // 442: vega.events.v1.ERC20MultiSigSignerRemoved - (*vega.OracleSpec)(nil), // 443: vega.OracleSpec - (*vega.OracleData)(nil), // 444: vega.OracleData - (*vega.Market)(nil), // 445: vega.Market - (*vega.GovernanceData)(nil), // 446: vega.GovernanceData - (*vega.Party)(nil), // 447: vega.Party - (*vega.PartyProfile)(nil), // 448: vega.PartyProfile - (*vega.MarginLevels)(nil), // 449: vega.MarginLevels - (*vega.Reward)(nil), // 450: vega.Reward - (*vega.RewardSummary)(nil), // 451: vega.RewardSummary - (*vega.EpochRewardSummary)(nil), // 452: vega.EpochRewardSummary - (*vega.Deposit)(nil), // 453: vega.Deposit - (*vega.Withdrawal)(nil), // 454: vega.Withdrawal - (*vega.Asset)(nil), // 455: vega.Asset - (*vega.LiquidityProvision)(nil), // 456: vega.LiquidityProvision - (*vega.LiquidityProviderFeeShare)(nil), // 457: vega.LiquidityProviderFeeShare - (*vega.LiquidityProviderSLA)(nil), // 458: vega.LiquidityProviderSLA - (*v1.PaidLiquidityFeesStats)(nil), // 459: vega.events.v1.PaidLiquidityFeesStats - (vega.Proposal_State)(0), // 460: vega.Proposal.State - (*vega.Delegation)(nil), // 461: vega.Delegation - (vega.NodeStatus)(0), // 462: vega.NodeStatus - (*vega.NodeData)(nil), // 463: vega.NodeData - (*vega.Node)(nil), // 464: vega.Node - (*v11.NodeSignature)(nil), // 465: vega.commands.v1.NodeSignature - (*vega.Epoch)(nil), // 466: vega.Epoch - (*vega.Fee)(nil), // 467: vega.Fee - (vega.Side)(0), // 468: vega.Side - (*vega.NetworkParameter)(nil), // 469: vega.NetworkParameter - (*v1.StakeLinking)(nil), // 470: vega.events.v1.StakeLinking - (*vega.RiskFactor)(nil), // 471: vega.RiskFactor - (v1.BusEventType)(0), // 472: vega.events.v1.BusEventType - (*v1.BusEvent)(nil), // 473: vega.events.v1.BusEvent - (*vega.LedgerMovement)(nil), // 474: vega.LedgerMovement - (*v1.KeyRotation)(nil), // 475: vega.events.v1.KeyRotation - (*v1.EthereumKeyRotation)(nil), // 476: vega.events.v1.EthereumKeyRotation - (v1.ProtocolUpgradeProposalStatus)(0), // 477: vega.events.v1.ProtocolUpgradeProposalStatus - (*v1.ProtocolUpgradeEvent)(nil), // 478: vega.events.v1.ProtocolUpgradeEvent - (*v1.CoreSnapshotData)(nil), // 479: vega.events.v1.CoreSnapshotData - (*vega.Account)(nil), // 480: vega.Account - (*vega.LedgerEntry)(nil), // 481: vega.LedgerEntry - (*vega.Proposal)(nil), // 482: vega.Proposal - (*v1.PartyActivityStreak)(nil), // 483: vega.events.v1.PartyActivityStreak - (*v1.FundingPeriod)(nil), // 484: vega.events.v1.FundingPeriod - (v1.FundingPeriodDataPoint_Source)(0), // 485: vega.events.v1.FundingPeriodDataPoint.Source - (*v1.FundingPeriodDataPoint)(nil), // 486: vega.events.v1.FundingPeriodDataPoint - (vega.MarginMode)(0), // 487: vega.MarginMode - (*vega.BenefitTier)(nil), // 488: vega.BenefitTier - (*vega.StakingTier)(nil), // 489: vega.StakingTier - (*v1.FeesStats)(nil), // 490: vega.events.v1.FeesStats - (*vega.VolumeBenefitTier)(nil), // 491: vega.VolumeBenefitTier - (*v1.TransactionResult)(nil), // 492: vega.events.v1.TransactionResult - (vega.EntityScope)(0), // 493: vega.EntityScope - (vega.DispatchMetric)(0), // 494: vega.DispatchMetric - (*httpbody.HttpBody)(nil), // 495: google.api.HttpBody + (*ListGameTeamScoresRequest)(nil), // 36: datanode.api.v2.ListGameTeamScoresRequest + (*GameTeamScoresFilter)(nil), // 37: datanode.api.v2.GameTeamScoresFilter + (*ListGameTeamScoresResponse)(nil), // 38: datanode.api.v2.ListGameTeamScoresResponse + (*GameTeamScoresConnection)(nil), // 39: datanode.api.v2.GameTeamScoresConnection + (*GameTeamScoresEdge)(nil), // 40: datanode.api.v2.GameTeamScoresEdge + (*ListGamePartyScoresRequest)(nil), // 41: datanode.api.v2.ListGamePartyScoresRequest + (*GamePartyScoresFilter)(nil), // 42: datanode.api.v2.GamePartyScoresFilter + (*ListGamePartyScoresResponse)(nil), // 43: datanode.api.v2.ListGamePartyScoresResponse + (*GamePartyScoresConnection)(nil), // 44: datanode.api.v2.GamePartyScoresConnection + (*GamePartyScoresEdge)(nil), // 45: datanode.api.v2.GamePartyScoresEdge + (*ListStopOrdersRequest)(nil), // 46: datanode.api.v2.ListStopOrdersRequest + (*StopOrderFilter)(nil), // 47: datanode.api.v2.StopOrderFilter + (*StopOrderEdge)(nil), // 48: datanode.api.v2.StopOrderEdge + (*StopOrderConnection)(nil), // 49: datanode.api.v2.StopOrderConnection + (*ListStopOrdersResponse)(nil), // 50: datanode.api.v2.ListStopOrdersResponse + (*ListPositionsRequest)(nil), // 51: datanode.api.v2.ListPositionsRequest + (*ListPositionsResponse)(nil), // 52: datanode.api.v2.ListPositionsResponse + (*PositionsFilter)(nil), // 53: datanode.api.v2.PositionsFilter + (*ListAllPositionsRequest)(nil), // 54: datanode.api.v2.ListAllPositionsRequest + (*ListAllPositionsResponse)(nil), // 55: datanode.api.v2.ListAllPositionsResponse + (*PositionEdge)(nil), // 56: datanode.api.v2.PositionEdge + (*PositionConnection)(nil), // 57: datanode.api.v2.PositionConnection + (*ObservePositionsRequest)(nil), // 58: datanode.api.v2.ObservePositionsRequest + (*ObservePositionsResponse)(nil), // 59: datanode.api.v2.ObservePositionsResponse + (*PositionSnapshotPage)(nil), // 60: datanode.api.v2.PositionSnapshotPage + (*PositionUpdates)(nil), // 61: datanode.api.v2.PositionUpdates + (*LedgerEntryFilter)(nil), // 62: datanode.api.v2.LedgerEntryFilter + (*AggregatedLedgerEntry)(nil), // 63: datanode.api.v2.AggregatedLedgerEntry + (*ListLedgerEntriesRequest)(nil), // 64: datanode.api.v2.ListLedgerEntriesRequest + (*ExportLedgerEntriesRequest)(nil), // 65: datanode.api.v2.ExportLedgerEntriesRequest + (*ListLedgerEntriesResponse)(nil), // 66: datanode.api.v2.ListLedgerEntriesResponse + (*AggregatedLedgerEntriesEdge)(nil), // 67: datanode.api.v2.AggregatedLedgerEntriesEdge + (*AggregatedLedgerEntriesConnection)(nil), // 68: datanode.api.v2.AggregatedLedgerEntriesConnection + (*ListBalanceChangesRequest)(nil), // 69: datanode.api.v2.ListBalanceChangesRequest + (*ListBalanceChangesResponse)(nil), // 70: datanode.api.v2.ListBalanceChangesResponse + (*GetBalanceHistoryRequest)(nil), // 71: datanode.api.v2.GetBalanceHistoryRequest + (*GetBalanceHistoryResponse)(nil), // 72: datanode.api.v2.GetBalanceHistoryResponse + (*AggregatedBalanceEdge)(nil), // 73: datanode.api.v2.AggregatedBalanceEdge + (*AggregatedBalanceConnection)(nil), // 74: datanode.api.v2.AggregatedBalanceConnection + (*AccountFilter)(nil), // 75: datanode.api.v2.AccountFilter + (*AggregatedBalance)(nil), // 76: datanode.api.v2.AggregatedBalance + (*ObserveMarketsDepthRequest)(nil), // 77: datanode.api.v2.ObserveMarketsDepthRequest + (*ObserveMarketsDepthResponse)(nil), // 78: datanode.api.v2.ObserveMarketsDepthResponse + (*ObserveMarketsDepthUpdatesRequest)(nil), // 79: datanode.api.v2.ObserveMarketsDepthUpdatesRequest + (*ObserveMarketsDepthUpdatesResponse)(nil), // 80: datanode.api.v2.ObserveMarketsDepthUpdatesResponse + (*ObserveMarketsDataRequest)(nil), // 81: datanode.api.v2.ObserveMarketsDataRequest + (*ObserveMarketsDataResponse)(nil), // 82: datanode.api.v2.ObserveMarketsDataResponse + (*GetLatestMarketDepthRequest)(nil), // 83: datanode.api.v2.GetLatestMarketDepthRequest + (*GetLatestMarketDepthResponse)(nil), // 84: datanode.api.v2.GetLatestMarketDepthResponse + (*ListLatestMarketDataRequest)(nil), // 85: datanode.api.v2.ListLatestMarketDataRequest + (*ListLatestMarketDataResponse)(nil), // 86: datanode.api.v2.ListLatestMarketDataResponse + (*GetLatestMarketDataRequest)(nil), // 87: datanode.api.v2.GetLatestMarketDataRequest + (*GetLatestMarketDataResponse)(nil), // 88: datanode.api.v2.GetLatestMarketDataResponse + (*GetMarketDataHistoryByIDRequest)(nil), // 89: datanode.api.v2.GetMarketDataHistoryByIDRequest + (*GetMarketDataHistoryByIDResponse)(nil), // 90: datanode.api.v2.GetMarketDataHistoryByIDResponse + (*MarketDataEdge)(nil), // 91: datanode.api.v2.MarketDataEdge + (*MarketDataConnection)(nil), // 92: datanode.api.v2.MarketDataConnection + (*ListTransfersRequest)(nil), // 93: datanode.api.v2.ListTransfersRequest + (*ListTransfersResponse)(nil), // 94: datanode.api.v2.ListTransfersResponse + (*TransferNode)(nil), // 95: datanode.api.v2.TransferNode + (*TransferEdge)(nil), // 96: datanode.api.v2.TransferEdge + (*TransferConnection)(nil), // 97: datanode.api.v2.TransferConnection + (*GetTransferRequest)(nil), // 98: datanode.api.v2.GetTransferRequest + (*GetTransferResponse)(nil), // 99: datanode.api.v2.GetTransferResponse + (*GetNetworkLimitsRequest)(nil), // 100: datanode.api.v2.GetNetworkLimitsRequest + (*GetNetworkLimitsResponse)(nil), // 101: datanode.api.v2.GetNetworkLimitsResponse + (*ListCandleIntervalsRequest)(nil), // 102: datanode.api.v2.ListCandleIntervalsRequest + (*IntervalToCandleId)(nil), // 103: datanode.api.v2.IntervalToCandleId + (*ListCandleIntervalsResponse)(nil), // 104: datanode.api.v2.ListCandleIntervalsResponse + (*Candle)(nil), // 105: datanode.api.v2.Candle + (*ObserveCandleDataRequest)(nil), // 106: datanode.api.v2.ObserveCandleDataRequest + (*ObserveCandleDataResponse)(nil), // 107: datanode.api.v2.ObserveCandleDataResponse + (*ListCandleDataRequest)(nil), // 108: datanode.api.v2.ListCandleDataRequest + (*ListCandleDataResponse)(nil), // 109: datanode.api.v2.ListCandleDataResponse + (*CandleEdge)(nil), // 110: datanode.api.v2.CandleEdge + (*CandleDataConnection)(nil), // 111: datanode.api.v2.CandleDataConnection + (*ListVotesRequest)(nil), // 112: datanode.api.v2.ListVotesRequest + (*ListVotesResponse)(nil), // 113: datanode.api.v2.ListVotesResponse + (*VoteEdge)(nil), // 114: datanode.api.v2.VoteEdge + (*VoteConnection)(nil), // 115: datanode.api.v2.VoteConnection + (*ObserveVotesRequest)(nil), // 116: datanode.api.v2.ObserveVotesRequest + (*ObserveVotesResponse)(nil), // 117: datanode.api.v2.ObserveVotesResponse + (*ListERC20MultiSigSignerAddedBundlesRequest)(nil), // 118: datanode.api.v2.ListERC20MultiSigSignerAddedBundlesRequest + (*ListERC20MultiSigSignerAddedBundlesResponse)(nil), // 119: datanode.api.v2.ListERC20MultiSigSignerAddedBundlesResponse + (*ERC20MultiSigSignerAddedEdge)(nil), // 120: datanode.api.v2.ERC20MultiSigSignerAddedEdge + (*ERC20MultiSigSignerAddedBundleEdge)(nil), // 121: datanode.api.v2.ERC20MultiSigSignerAddedBundleEdge + (*ERC20MultiSigSignerAddedConnection)(nil), // 122: datanode.api.v2.ERC20MultiSigSignerAddedConnection + (*ERC20MultiSigSignerAddedBundle)(nil), // 123: datanode.api.v2.ERC20MultiSigSignerAddedBundle + (*ListERC20MultiSigSignerRemovedBundlesRequest)(nil), // 124: datanode.api.v2.ListERC20MultiSigSignerRemovedBundlesRequest + (*ListERC20MultiSigSignerRemovedBundlesResponse)(nil), // 125: datanode.api.v2.ListERC20MultiSigSignerRemovedBundlesResponse + (*ERC20MultiSigSignerRemovedEdge)(nil), // 126: datanode.api.v2.ERC20MultiSigSignerRemovedEdge + (*ERC20MultiSigSignerRemovedBundleEdge)(nil), // 127: datanode.api.v2.ERC20MultiSigSignerRemovedBundleEdge + (*ERC20MultiSigSignerRemovedConnection)(nil), // 128: datanode.api.v2.ERC20MultiSigSignerRemovedConnection + (*ERC20MultiSigSignerRemovedBundle)(nil), // 129: datanode.api.v2.ERC20MultiSigSignerRemovedBundle + (*GetERC20ListAssetBundleRequest)(nil), // 130: datanode.api.v2.GetERC20ListAssetBundleRequest + (*GetERC20ListAssetBundleResponse)(nil), // 131: datanode.api.v2.GetERC20ListAssetBundleResponse + (*GetERC20SetAssetLimitsBundleRequest)(nil), // 132: datanode.api.v2.GetERC20SetAssetLimitsBundleRequest + (*GetERC20SetAssetLimitsBundleResponse)(nil), // 133: datanode.api.v2.GetERC20SetAssetLimitsBundleResponse + (*GetERC20WithdrawalApprovalRequest)(nil), // 134: datanode.api.v2.GetERC20WithdrawalApprovalRequest + (*GetERC20WithdrawalApprovalResponse)(nil), // 135: datanode.api.v2.GetERC20WithdrawalApprovalResponse + (*GetLastTradeRequest)(nil), // 136: datanode.api.v2.GetLastTradeRequest + (*GetLastTradeResponse)(nil), // 137: datanode.api.v2.GetLastTradeResponse + (*ListTradesRequest)(nil), // 138: datanode.api.v2.ListTradesRequest + (*ListTradesResponse)(nil), // 139: datanode.api.v2.ListTradesResponse + (*TradeConnection)(nil), // 140: datanode.api.v2.TradeConnection + (*TradeEdge)(nil), // 141: datanode.api.v2.TradeEdge + (*ObserveTradesRequest)(nil), // 142: datanode.api.v2.ObserveTradesRequest + (*ObserveTradesResponse)(nil), // 143: datanode.api.v2.ObserveTradesResponse + (*GetOracleSpecRequest)(nil), // 144: datanode.api.v2.GetOracleSpecRequest + (*GetOracleSpecResponse)(nil), // 145: datanode.api.v2.GetOracleSpecResponse + (*ListOracleSpecsRequest)(nil), // 146: datanode.api.v2.ListOracleSpecsRequest + (*ListOracleSpecsResponse)(nil), // 147: datanode.api.v2.ListOracleSpecsResponse + (*ListOracleDataRequest)(nil), // 148: datanode.api.v2.ListOracleDataRequest + (*ListOracleDataResponse)(nil), // 149: datanode.api.v2.ListOracleDataResponse + (*OracleSpecEdge)(nil), // 150: datanode.api.v2.OracleSpecEdge + (*OracleSpecsConnection)(nil), // 151: datanode.api.v2.OracleSpecsConnection + (*OracleDataEdge)(nil), // 152: datanode.api.v2.OracleDataEdge + (*OracleDataConnection)(nil), // 153: datanode.api.v2.OracleDataConnection + (*GetMarketRequest)(nil), // 154: datanode.api.v2.GetMarketRequest + (*GetMarketResponse)(nil), // 155: datanode.api.v2.GetMarketResponse + (*ListMarketsRequest)(nil), // 156: datanode.api.v2.ListMarketsRequest + (*ListMarketsResponse)(nil), // 157: datanode.api.v2.ListMarketsResponse + (*MarketEdge)(nil), // 158: datanode.api.v2.MarketEdge + (*MarketConnection)(nil), // 159: datanode.api.v2.MarketConnection + (*ListSuccessorMarketsRequest)(nil), // 160: datanode.api.v2.ListSuccessorMarketsRequest + (*SuccessorMarket)(nil), // 161: datanode.api.v2.SuccessorMarket + (*SuccessorMarketEdge)(nil), // 162: datanode.api.v2.SuccessorMarketEdge + (*SuccessorMarketConnection)(nil), // 163: datanode.api.v2.SuccessorMarketConnection + (*ListSuccessorMarketsResponse)(nil), // 164: datanode.api.v2.ListSuccessorMarketsResponse + (*GetPartyRequest)(nil), // 165: datanode.api.v2.GetPartyRequest + (*GetPartyResponse)(nil), // 166: datanode.api.v2.GetPartyResponse + (*ListPartiesRequest)(nil), // 167: datanode.api.v2.ListPartiesRequest + (*ListPartiesResponse)(nil), // 168: datanode.api.v2.ListPartiesResponse + (*PartyEdge)(nil), // 169: datanode.api.v2.PartyEdge + (*PartyConnection)(nil), // 170: datanode.api.v2.PartyConnection + (*ListPartiesProfilesRequest)(nil), // 171: datanode.api.v2.ListPartiesProfilesRequest + (*ListPartiesProfilesResponse)(nil), // 172: datanode.api.v2.ListPartiesProfilesResponse + (*PartyProfileEdge)(nil), // 173: datanode.api.v2.PartyProfileEdge + (*PartiesProfilesConnection)(nil), // 174: datanode.api.v2.PartiesProfilesConnection + (*OrderEdge)(nil), // 175: datanode.api.v2.OrderEdge + (*ListMarginLevelsRequest)(nil), // 176: datanode.api.v2.ListMarginLevelsRequest + (*ListMarginLevelsResponse)(nil), // 177: datanode.api.v2.ListMarginLevelsResponse + (*ObserveMarginLevelsRequest)(nil), // 178: datanode.api.v2.ObserveMarginLevelsRequest + (*ObserveMarginLevelsResponse)(nil), // 179: datanode.api.v2.ObserveMarginLevelsResponse + (*OrderConnection)(nil), // 180: datanode.api.v2.OrderConnection + (*MarginEdge)(nil), // 181: datanode.api.v2.MarginEdge + (*MarginConnection)(nil), // 182: datanode.api.v2.MarginConnection + (*ListRewardsRequest)(nil), // 183: datanode.api.v2.ListRewardsRequest + (*ListRewardsResponse)(nil), // 184: datanode.api.v2.ListRewardsResponse + (*RewardEdge)(nil), // 185: datanode.api.v2.RewardEdge + (*RewardsConnection)(nil), // 186: datanode.api.v2.RewardsConnection + (*ListRewardSummariesRequest)(nil), // 187: datanode.api.v2.ListRewardSummariesRequest + (*ListRewardSummariesResponse)(nil), // 188: datanode.api.v2.ListRewardSummariesResponse + (*RewardSummaryFilter)(nil), // 189: datanode.api.v2.RewardSummaryFilter + (*ListEpochRewardSummariesRequest)(nil), // 190: datanode.api.v2.ListEpochRewardSummariesRequest + (*ListEpochRewardSummariesResponse)(nil), // 191: datanode.api.v2.ListEpochRewardSummariesResponse + (*EpochRewardSummaryConnection)(nil), // 192: datanode.api.v2.EpochRewardSummaryConnection + (*EpochRewardSummaryEdge)(nil), // 193: datanode.api.v2.EpochRewardSummaryEdge + (*ObserveRewardsRequest)(nil), // 194: datanode.api.v2.ObserveRewardsRequest + (*ObserveRewardsResponse)(nil), // 195: datanode.api.v2.ObserveRewardsResponse + (*GetDepositRequest)(nil), // 196: datanode.api.v2.GetDepositRequest + (*GetDepositResponse)(nil), // 197: datanode.api.v2.GetDepositResponse + (*ListDepositsRequest)(nil), // 198: datanode.api.v2.ListDepositsRequest + (*ListDepositsResponse)(nil), // 199: datanode.api.v2.ListDepositsResponse + (*DepositEdge)(nil), // 200: datanode.api.v2.DepositEdge + (*DepositsConnection)(nil), // 201: datanode.api.v2.DepositsConnection + (*GetWithdrawalRequest)(nil), // 202: datanode.api.v2.GetWithdrawalRequest + (*GetWithdrawalResponse)(nil), // 203: datanode.api.v2.GetWithdrawalResponse + (*ListWithdrawalsRequest)(nil), // 204: datanode.api.v2.ListWithdrawalsRequest + (*ListWithdrawalsResponse)(nil), // 205: datanode.api.v2.ListWithdrawalsResponse + (*WithdrawalEdge)(nil), // 206: datanode.api.v2.WithdrawalEdge + (*WithdrawalsConnection)(nil), // 207: datanode.api.v2.WithdrawalsConnection + (*GetAssetRequest)(nil), // 208: datanode.api.v2.GetAssetRequest + (*GetAssetResponse)(nil), // 209: datanode.api.v2.GetAssetResponse + (*ListAssetsRequest)(nil), // 210: datanode.api.v2.ListAssetsRequest + (*ListAssetsResponse)(nil), // 211: datanode.api.v2.ListAssetsResponse + (*AssetEdge)(nil), // 212: datanode.api.v2.AssetEdge + (*AssetsConnection)(nil), // 213: datanode.api.v2.AssetsConnection + (*ListLiquidityProvisionsRequest)(nil), // 214: datanode.api.v2.ListLiquidityProvisionsRequest + (*ListAllLiquidityProvisionsRequest)(nil), // 215: datanode.api.v2.ListAllLiquidityProvisionsRequest + (*ListLiquidityProvisionsResponse)(nil), // 216: datanode.api.v2.ListLiquidityProvisionsResponse + (*ListAllLiquidityProvisionsResponse)(nil), // 217: datanode.api.v2.ListAllLiquidityProvisionsResponse + (*LiquidityProvision)(nil), // 218: datanode.api.v2.LiquidityProvision + (*LiquidityProvisionsEdge)(nil), // 219: datanode.api.v2.LiquidityProvisionsEdge + (*LiquidityProvisionWithPendingEdge)(nil), // 220: datanode.api.v2.LiquidityProvisionWithPendingEdge + (*LiquidityProvisionsConnection)(nil), // 221: datanode.api.v2.LiquidityProvisionsConnection + (*LiquidityProvisionsWithPendingConnection)(nil), // 222: datanode.api.v2.LiquidityProvisionsWithPendingConnection + (*ObserveLiquidityProvisionsRequest)(nil), // 223: datanode.api.v2.ObserveLiquidityProvisionsRequest + (*ObserveLiquidityProvisionsResponse)(nil), // 224: datanode.api.v2.ObserveLiquidityProvisionsResponse + (*ListLiquidityProvidersRequest)(nil), // 225: datanode.api.v2.ListLiquidityProvidersRequest + (*LiquidityProvider)(nil), // 226: datanode.api.v2.LiquidityProvider + (*LiquidityProviderEdge)(nil), // 227: datanode.api.v2.LiquidityProviderEdge + (*LiquidityProviderConnection)(nil), // 228: datanode.api.v2.LiquidityProviderConnection + (*ListLiquidityProvidersResponse)(nil), // 229: datanode.api.v2.ListLiquidityProvidersResponse + (*ListPaidLiquidityFeesRequest)(nil), // 230: datanode.api.v2.ListPaidLiquidityFeesRequest + (*ListPaidLiquidityFeesResponse)(nil), // 231: datanode.api.v2.ListPaidLiquidityFeesResponse + (*PaidLiquidityFeesEdge)(nil), // 232: datanode.api.v2.PaidLiquidityFeesEdge + (*PaidLiquidityFeesConnection)(nil), // 233: datanode.api.v2.PaidLiquidityFeesConnection + (*GetGovernanceDataRequest)(nil), // 234: datanode.api.v2.GetGovernanceDataRequest + (*GetGovernanceDataResponse)(nil), // 235: datanode.api.v2.GetGovernanceDataResponse + (*ListGovernanceDataRequest)(nil), // 236: datanode.api.v2.ListGovernanceDataRequest + (*ListGovernanceDataResponse)(nil), // 237: datanode.api.v2.ListGovernanceDataResponse + (*GovernanceDataEdge)(nil), // 238: datanode.api.v2.GovernanceDataEdge + (*GovernanceDataConnection)(nil), // 239: datanode.api.v2.GovernanceDataConnection + (*ObserveGovernanceRequest)(nil), // 240: datanode.api.v2.ObserveGovernanceRequest + (*ObserveGovernanceResponse)(nil), // 241: datanode.api.v2.ObserveGovernanceResponse + (*ListDelegationsRequest)(nil), // 242: datanode.api.v2.ListDelegationsRequest + (*ListDelegationsResponse)(nil), // 243: datanode.api.v2.ListDelegationsResponse + (*DelegationEdge)(nil), // 244: datanode.api.v2.DelegationEdge + (*DelegationsConnection)(nil), // 245: datanode.api.v2.DelegationsConnection + (*ObserveDelegationsRequest)(nil), // 246: datanode.api.v2.ObserveDelegationsRequest + (*ObserveDelegationsResponse)(nil), // 247: datanode.api.v2.ObserveDelegationsResponse + (*NodeBasic)(nil), // 248: datanode.api.v2.NodeBasic + (*GetNetworkDataRequest)(nil), // 249: datanode.api.v2.GetNetworkDataRequest + (*GetNetworkDataResponse)(nil), // 250: datanode.api.v2.GetNetworkDataResponse + (*GetNodeRequest)(nil), // 251: datanode.api.v2.GetNodeRequest + (*GetNodeResponse)(nil), // 252: datanode.api.v2.GetNodeResponse + (*ListNodesRequest)(nil), // 253: datanode.api.v2.ListNodesRequest + (*ListNodesResponse)(nil), // 254: datanode.api.v2.ListNodesResponse + (*NodeEdge)(nil), // 255: datanode.api.v2.NodeEdge + (*NodesConnection)(nil), // 256: datanode.api.v2.NodesConnection + (*ListNodeSignaturesRequest)(nil), // 257: datanode.api.v2.ListNodeSignaturesRequest + (*ListNodeSignaturesResponse)(nil), // 258: datanode.api.v2.ListNodeSignaturesResponse + (*NodeSignatureEdge)(nil), // 259: datanode.api.v2.NodeSignatureEdge + (*NodeSignaturesConnection)(nil), // 260: datanode.api.v2.NodeSignaturesConnection + (*GetEpochRequest)(nil), // 261: datanode.api.v2.GetEpochRequest + (*GetEpochResponse)(nil), // 262: datanode.api.v2.GetEpochResponse + (*EstimateFeeRequest)(nil), // 263: datanode.api.v2.EstimateFeeRequest + (*EstimateFeeResponse)(nil), // 264: datanode.api.v2.EstimateFeeResponse + (*EstimateMarginRequest)(nil), // 265: datanode.api.v2.EstimateMarginRequest + (*EstimateMarginResponse)(nil), // 266: datanode.api.v2.EstimateMarginResponse + (*ListNetworkParametersRequest)(nil), // 267: datanode.api.v2.ListNetworkParametersRequest + (*ListNetworkParametersResponse)(nil), // 268: datanode.api.v2.ListNetworkParametersResponse + (*GetNetworkParameterRequest)(nil), // 269: datanode.api.v2.GetNetworkParameterRequest + (*GetNetworkParameterResponse)(nil), // 270: datanode.api.v2.GetNetworkParameterResponse + (*NetworkParameterEdge)(nil), // 271: datanode.api.v2.NetworkParameterEdge + (*NetworkParameterConnection)(nil), // 272: datanode.api.v2.NetworkParameterConnection + (*Checkpoint)(nil), // 273: datanode.api.v2.Checkpoint + (*ListCheckpointsRequest)(nil), // 274: datanode.api.v2.ListCheckpointsRequest + (*ListCheckpointsResponse)(nil), // 275: datanode.api.v2.ListCheckpointsResponse + (*CheckpointEdge)(nil), // 276: datanode.api.v2.CheckpointEdge + (*CheckpointsConnection)(nil), // 277: datanode.api.v2.CheckpointsConnection + (*GetStakeRequest)(nil), // 278: datanode.api.v2.GetStakeRequest + (*GetStakeResponse)(nil), // 279: datanode.api.v2.GetStakeResponse + (*StakeLinkingEdge)(nil), // 280: datanode.api.v2.StakeLinkingEdge + (*StakesConnection)(nil), // 281: datanode.api.v2.StakesConnection + (*GetRiskFactorsRequest)(nil), // 282: datanode.api.v2.GetRiskFactorsRequest + (*GetRiskFactorsResponse)(nil), // 283: datanode.api.v2.GetRiskFactorsResponse + (*ObserveEventBusRequest)(nil), // 284: datanode.api.v2.ObserveEventBusRequest + (*ObserveEventBusResponse)(nil), // 285: datanode.api.v2.ObserveEventBusResponse + (*ObserveLedgerMovementsRequest)(nil), // 286: datanode.api.v2.ObserveLedgerMovementsRequest + (*ObserveLedgerMovementsResponse)(nil), // 287: datanode.api.v2.ObserveLedgerMovementsResponse + (*ListKeyRotationsRequest)(nil), // 288: datanode.api.v2.ListKeyRotationsRequest + (*ListKeyRotationsResponse)(nil), // 289: datanode.api.v2.ListKeyRotationsResponse + (*KeyRotationEdge)(nil), // 290: datanode.api.v2.KeyRotationEdge + (*KeyRotationConnection)(nil), // 291: datanode.api.v2.KeyRotationConnection + (*ListEthereumKeyRotationsRequest)(nil), // 292: datanode.api.v2.ListEthereumKeyRotationsRequest + (*ListEthereumKeyRotationsResponse)(nil), // 293: datanode.api.v2.ListEthereumKeyRotationsResponse + (*EthereumKeyRotationsConnection)(nil), // 294: datanode.api.v2.EthereumKeyRotationsConnection + (*EthereumKeyRotationEdge)(nil), // 295: datanode.api.v2.EthereumKeyRotationEdge + (*GetVegaTimeRequest)(nil), // 296: datanode.api.v2.GetVegaTimeRequest + (*GetVegaTimeResponse)(nil), // 297: datanode.api.v2.GetVegaTimeResponse + (*DateRange)(nil), // 298: datanode.api.v2.DateRange + (*GetProtocolUpgradeStatusRequest)(nil), // 299: datanode.api.v2.GetProtocolUpgradeStatusRequest + (*GetProtocolUpgradeStatusResponse)(nil), // 300: datanode.api.v2.GetProtocolUpgradeStatusResponse + (*ListProtocolUpgradeProposalsRequest)(nil), // 301: datanode.api.v2.ListProtocolUpgradeProposalsRequest + (*ListProtocolUpgradeProposalsResponse)(nil), // 302: datanode.api.v2.ListProtocolUpgradeProposalsResponse + (*ProtocolUpgradeProposalConnection)(nil), // 303: datanode.api.v2.ProtocolUpgradeProposalConnection + (*ProtocolUpgradeProposalEdge)(nil), // 304: datanode.api.v2.ProtocolUpgradeProposalEdge + (*ListCoreSnapshotsRequest)(nil), // 305: datanode.api.v2.ListCoreSnapshotsRequest + (*ListCoreSnapshotsResponse)(nil), // 306: datanode.api.v2.ListCoreSnapshotsResponse + (*CoreSnapshotConnection)(nil), // 307: datanode.api.v2.CoreSnapshotConnection + (*CoreSnapshotEdge)(nil), // 308: datanode.api.v2.CoreSnapshotEdge + (*HistorySegment)(nil), // 309: datanode.api.v2.HistorySegment + (*GetMostRecentNetworkHistorySegmentRequest)(nil), // 310: datanode.api.v2.GetMostRecentNetworkHistorySegmentRequest + (*GetMostRecentNetworkHistorySegmentResponse)(nil), // 311: datanode.api.v2.GetMostRecentNetworkHistorySegmentResponse + (*ListAllNetworkHistorySegmentsRequest)(nil), // 312: datanode.api.v2.ListAllNetworkHistorySegmentsRequest + (*ListAllNetworkHistorySegmentsResponse)(nil), // 313: datanode.api.v2.ListAllNetworkHistorySegmentsResponse + (*GetActiveNetworkHistoryPeerAddressesRequest)(nil), // 314: datanode.api.v2.GetActiveNetworkHistoryPeerAddressesRequest + (*GetActiveNetworkHistoryPeerAddressesResponse)(nil), // 315: datanode.api.v2.GetActiveNetworkHistoryPeerAddressesResponse + (*GetNetworkHistoryStatusRequest)(nil), // 316: datanode.api.v2.GetNetworkHistoryStatusRequest + (*GetNetworkHistoryStatusResponse)(nil), // 317: datanode.api.v2.GetNetworkHistoryStatusResponse + (*GetNetworkHistoryBootstrapPeersRequest)(nil), // 318: datanode.api.v2.GetNetworkHistoryBootstrapPeersRequest + (*GetNetworkHistoryBootstrapPeersResponse)(nil), // 319: datanode.api.v2.GetNetworkHistoryBootstrapPeersResponse + (*ExportNetworkHistoryRequest)(nil), // 320: datanode.api.v2.ExportNetworkHistoryRequest + (*ListEntitiesRequest)(nil), // 321: datanode.api.v2.ListEntitiesRequest + (*ListEntitiesResponse)(nil), // 322: datanode.api.v2.ListEntitiesResponse + (*GetPartyActivityStreakRequest)(nil), // 323: datanode.api.v2.GetPartyActivityStreakRequest + (*GetPartyActivityStreakResponse)(nil), // 324: datanode.api.v2.GetPartyActivityStreakResponse + (*FundingPayment)(nil), // 325: datanode.api.v2.FundingPayment + (*ListFundingPaymentsRequest)(nil), // 326: datanode.api.v2.ListFundingPaymentsRequest + (*FundingPaymentEdge)(nil), // 327: datanode.api.v2.FundingPaymentEdge + (*FundingPaymentConnection)(nil), // 328: datanode.api.v2.FundingPaymentConnection + (*ListFundingPaymentsResponse)(nil), // 329: datanode.api.v2.ListFundingPaymentsResponse + (*ListFundingPeriodsRequest)(nil), // 330: datanode.api.v2.ListFundingPeriodsRequest + (*FundingPeriodEdge)(nil), // 331: datanode.api.v2.FundingPeriodEdge + (*FundingPeriodConnection)(nil), // 332: datanode.api.v2.FundingPeriodConnection + (*ListFundingPeriodsResponse)(nil), // 333: datanode.api.v2.ListFundingPeriodsResponse + (*ListFundingPeriodDataPointsRequest)(nil), // 334: datanode.api.v2.ListFundingPeriodDataPointsRequest + (*FundingPeriodDataPointEdge)(nil), // 335: datanode.api.v2.FundingPeriodDataPointEdge + (*FundingPeriodDataPointConnection)(nil), // 336: datanode.api.v2.FundingPeriodDataPointConnection + (*ListFundingPeriodDataPointsResponse)(nil), // 337: datanode.api.v2.ListFundingPeriodDataPointsResponse + (*PingRequest)(nil), // 338: datanode.api.v2.PingRequest + (*PingResponse)(nil), // 339: datanode.api.v2.PingResponse + (*OrderInfo)(nil), // 340: datanode.api.v2.OrderInfo + (*EstimatePositionRequest)(nil), // 341: datanode.api.v2.EstimatePositionRequest + (*EstimatePositionResponse)(nil), // 342: datanode.api.v2.EstimatePositionResponse + (*CollateralIncreaseEstimate)(nil), // 343: datanode.api.v2.CollateralIncreaseEstimate + (*MarginEstimate)(nil), // 344: datanode.api.v2.MarginEstimate + (*LiquidationEstimate)(nil), // 345: datanode.api.v2.LiquidationEstimate + (*LiquidationPrice)(nil), // 346: datanode.api.v2.LiquidationPrice + (*GetCurrentReferralProgramRequest)(nil), // 347: datanode.api.v2.GetCurrentReferralProgramRequest + (*GetCurrentReferralProgramResponse)(nil), // 348: datanode.api.v2.GetCurrentReferralProgramResponse + (*ReferralProgram)(nil), // 349: datanode.api.v2.ReferralProgram + (*ReferralSet)(nil), // 350: datanode.api.v2.ReferralSet + (*ReferralSetEdge)(nil), // 351: datanode.api.v2.ReferralSetEdge + (*ReferralSetConnection)(nil), // 352: datanode.api.v2.ReferralSetConnection + (*ListReferralSetsRequest)(nil), // 353: datanode.api.v2.ListReferralSetsRequest + (*ListReferralSetsResponse)(nil), // 354: datanode.api.v2.ListReferralSetsResponse + (*ReferralSetReferee)(nil), // 355: datanode.api.v2.ReferralSetReferee + (*ReferralSetRefereeEdge)(nil), // 356: datanode.api.v2.ReferralSetRefereeEdge + (*ReferralSetRefereeConnection)(nil), // 357: datanode.api.v2.ReferralSetRefereeConnection + (*ListReferralSetRefereesRequest)(nil), // 358: datanode.api.v2.ListReferralSetRefereesRequest + (*ListReferralSetRefereesResponse)(nil), // 359: datanode.api.v2.ListReferralSetRefereesResponse + (*GetReferralSetStatsRequest)(nil), // 360: datanode.api.v2.GetReferralSetStatsRequest + (*GetReferralSetStatsResponse)(nil), // 361: datanode.api.v2.GetReferralSetStatsResponse + (*ReferralSetStatsConnection)(nil), // 362: datanode.api.v2.ReferralSetStatsConnection + (*ReferralSetStatsEdge)(nil), // 363: datanode.api.v2.ReferralSetStatsEdge + (*ReferralSetStats)(nil), // 364: datanode.api.v2.ReferralSetStats + (*Team)(nil), // 365: datanode.api.v2.Team + (*TeamEdge)(nil), // 366: datanode.api.v2.TeamEdge + (*TeamConnection)(nil), // 367: datanode.api.v2.TeamConnection + (*ListTeamsRequest)(nil), // 368: datanode.api.v2.ListTeamsRequest + (*ListTeamsResponse)(nil), // 369: datanode.api.v2.ListTeamsResponse + (*ListTeamsStatisticsRequest)(nil), // 370: datanode.api.v2.ListTeamsStatisticsRequest + (*ListTeamsStatisticsResponse)(nil), // 371: datanode.api.v2.ListTeamsStatisticsResponse + (*TeamsStatisticsConnection)(nil), // 372: datanode.api.v2.TeamsStatisticsConnection + (*TeamStatisticsEdge)(nil), // 373: datanode.api.v2.TeamStatisticsEdge + (*TeamStatistics)(nil), // 374: datanode.api.v2.TeamStatistics + (*QuantumRewardsPerEpoch)(nil), // 375: datanode.api.v2.QuantumRewardsPerEpoch + (*QuantumVolumesPerEpoch)(nil), // 376: datanode.api.v2.QuantumVolumesPerEpoch + (*ListTeamMembersStatisticsRequest)(nil), // 377: datanode.api.v2.ListTeamMembersStatisticsRequest + (*ListTeamMembersStatisticsResponse)(nil), // 378: datanode.api.v2.ListTeamMembersStatisticsResponse + (*TeamMembersStatisticsConnection)(nil), // 379: datanode.api.v2.TeamMembersStatisticsConnection + (*TeamMemberStatisticsEdge)(nil), // 380: datanode.api.v2.TeamMemberStatisticsEdge + (*TeamMemberStatistics)(nil), // 381: datanode.api.v2.TeamMemberStatistics + (*ListTeamRefereesRequest)(nil), // 382: datanode.api.v2.ListTeamRefereesRequest + (*TeamReferee)(nil), // 383: datanode.api.v2.TeamReferee + (*TeamRefereeEdge)(nil), // 384: datanode.api.v2.TeamRefereeEdge + (*TeamRefereeConnection)(nil), // 385: datanode.api.v2.TeamRefereeConnection + (*ListTeamRefereesResponse)(nil), // 386: datanode.api.v2.ListTeamRefereesResponse + (*TeamRefereeHistory)(nil), // 387: datanode.api.v2.TeamRefereeHistory + (*TeamRefereeHistoryEdge)(nil), // 388: datanode.api.v2.TeamRefereeHistoryEdge + (*TeamRefereeHistoryConnection)(nil), // 389: datanode.api.v2.TeamRefereeHistoryConnection + (*ListTeamRefereeHistoryRequest)(nil), // 390: datanode.api.v2.ListTeamRefereeHistoryRequest + (*ListTeamRefereeHistoryResponse)(nil), // 391: datanode.api.v2.ListTeamRefereeHistoryResponse + (*GetFeesStatsRequest)(nil), // 392: datanode.api.v2.GetFeesStatsRequest + (*GetFeesStatsResponse)(nil), // 393: datanode.api.v2.GetFeesStatsResponse + (*GetFeesStatsForPartyRequest)(nil), // 394: datanode.api.v2.GetFeesStatsForPartyRequest + (*GetFeesStatsForPartyResponse)(nil), // 395: datanode.api.v2.GetFeesStatsForPartyResponse + (*GetCurrentVolumeDiscountProgramRequest)(nil), // 396: datanode.api.v2.GetCurrentVolumeDiscountProgramRequest + (*GetCurrentVolumeDiscountProgramResponse)(nil), // 397: datanode.api.v2.GetCurrentVolumeDiscountProgramResponse + (*GetVolumeDiscountStatsRequest)(nil), // 398: datanode.api.v2.GetVolumeDiscountStatsRequest + (*GetVolumeDiscountStatsResponse)(nil), // 399: datanode.api.v2.GetVolumeDiscountStatsResponse + (*VolumeDiscountStatsConnection)(nil), // 400: datanode.api.v2.VolumeDiscountStatsConnection + (*VolumeDiscountStatsEdge)(nil), // 401: datanode.api.v2.VolumeDiscountStatsEdge + (*VolumeDiscountStats)(nil), // 402: datanode.api.v2.VolumeDiscountStats + (*VolumeDiscountProgram)(nil), // 403: datanode.api.v2.VolumeDiscountProgram + (*FeesStatsForParty)(nil), // 404: datanode.api.v2.FeesStatsForParty + (*ObserveTransactionResultsRequest)(nil), // 405: datanode.api.v2.ObserveTransactionResultsRequest + (*ObserveTransactionResultsResponse)(nil), // 406: datanode.api.v2.ObserveTransactionResultsResponse + (*EstimateTransferFeeRequest)(nil), // 407: datanode.api.v2.EstimateTransferFeeRequest + (*EstimateTransferFeeResponse)(nil), // 408: datanode.api.v2.EstimateTransferFeeResponse + (*GetTotalTransferFeeDiscountRequest)(nil), // 409: datanode.api.v2.GetTotalTransferFeeDiscountRequest + (*GetTotalTransferFeeDiscountResponse)(nil), // 410: datanode.api.v2.GetTotalTransferFeeDiscountResponse + (*ListGamesRequest)(nil), // 411: datanode.api.v2.ListGamesRequest + (*ListGamesResponse)(nil), // 412: datanode.api.v2.ListGamesResponse + (*GamesConnection)(nil), // 413: datanode.api.v2.GamesConnection + (*GameEdge)(nil), // 414: datanode.api.v2.GameEdge + (*Game)(nil), // 415: datanode.api.v2.Game + (*TeamGameEntities)(nil), // 416: datanode.api.v2.TeamGameEntities + (*IndividualGameEntities)(nil), // 417: datanode.api.v2.IndividualGameEntities + (*TeamGameEntity)(nil), // 418: datanode.api.v2.TeamGameEntity + (*TeamGameParticipation)(nil), // 419: datanode.api.v2.TeamGameParticipation + (*IndividualGameEntity)(nil), // 420: datanode.api.v2.IndividualGameEntity + (*ListPartyMarginModesRequest)(nil), // 421: datanode.api.v2.ListPartyMarginModesRequest + (*ListPartyMarginModesResponse)(nil), // 422: datanode.api.v2.ListPartyMarginModesResponse + (*PartyMarginModesConnection)(nil), // 423: datanode.api.v2.PartyMarginModesConnection + (*PartyMarginModeEdge)(nil), // 424: datanode.api.v2.PartyMarginModeEdge + (*PartyMarginMode)(nil), // 425: datanode.api.v2.PartyMarginMode + (*TimeWeightedNotionalPosition)(nil), // 426: datanode.api.v2.TimeWeightedNotionalPosition + (*GetTimeWeightedNotionalPositionRequest)(nil), // 427: datanode.api.v2.GetTimeWeightedNotionalPositionRequest + (*GetTimeWeightedNotionalPositionResponse)(nil), // 428: datanode.api.v2.GetTimeWeightedNotionalPositionResponse + (*v1.PartyLockedBalance)(nil), // 429: vega.events.v1.PartyLockedBalance + (*v1.PartyVestingBalance)(nil), // 430: vega.events.v1.PartyVestingBalance + (vega.AccountType)(0), // 431: vega.AccountType + (*vega.Order)(nil), // 432: vega.Order + (vega.Order_Status)(0), // 433: vega.Order.Status + (vega.Order_Type)(0), // 434: vega.Order.Type + (vega.Order_TimeInForce)(0), // 435: vega.Order.TimeInForce + (*v1.StopOrderEvent)(nil), // 436: vega.events.v1.StopOrderEvent + (*v1.GameTeamScore)(nil), // 437: vega.events.v1.GameTeamScore + (*v1.GamePartyScore)(nil), // 438: vega.events.v1.GamePartyScore + (vega.StopOrder_Status)(0), // 439: vega.StopOrder.Status + (vega.StopOrder_ExpiryStrategy)(0), // 440: vega.StopOrder.ExpiryStrategy + (*vega.Position)(nil), // 441: vega.Position + (vega.TransferType)(0), // 442: vega.TransferType + (*vega.MarketDepth)(nil), // 443: vega.MarketDepth + (*vega.MarketDepthUpdate)(nil), // 444: vega.MarketDepthUpdate + (*vega.MarketData)(nil), // 445: vega.MarketData + (*vega.PriceLevel)(nil), // 446: vega.PriceLevel + (*vega.Trade)(nil), // 447: vega.Trade + (v1.Transfer_Status)(0), // 448: vega.events.v1.Transfer.Status + (*v1.Transfer)(nil), // 449: vega.events.v1.Transfer + (*v1.TransferFees)(nil), // 450: vega.events.v1.TransferFees + (*vega.NetworkLimits)(nil), // 451: vega.NetworkLimits + (*vega.Vote)(nil), // 452: vega.Vote + (*v1.ERC20MultiSigSignerAdded)(nil), // 453: vega.events.v1.ERC20MultiSigSignerAdded + (*v1.ERC20MultiSigSignerRemoved)(nil), // 454: vega.events.v1.ERC20MultiSigSignerRemoved + (*vega.OracleSpec)(nil), // 455: vega.OracleSpec + (*vega.OracleData)(nil), // 456: vega.OracleData + (*vega.Market)(nil), // 457: vega.Market + (*vega.GovernanceData)(nil), // 458: vega.GovernanceData + (*vega.Party)(nil), // 459: vega.Party + (*vega.PartyProfile)(nil), // 460: vega.PartyProfile + (*vega.MarginLevels)(nil), // 461: vega.MarginLevels + (*vega.Reward)(nil), // 462: vega.Reward + (*vega.RewardSummary)(nil), // 463: vega.RewardSummary + (*vega.EpochRewardSummary)(nil), // 464: vega.EpochRewardSummary + (*vega.Deposit)(nil), // 465: vega.Deposit + (*vega.Withdrawal)(nil), // 466: vega.Withdrawal + (*vega.Asset)(nil), // 467: vega.Asset + (*vega.LiquidityProvision)(nil), // 468: vega.LiquidityProvision + (*vega.LiquidityProviderFeeShare)(nil), // 469: vega.LiquidityProviderFeeShare + (*vega.LiquidityProviderSLA)(nil), // 470: vega.LiquidityProviderSLA + (*v1.PaidLiquidityFeesStats)(nil), // 471: vega.events.v1.PaidLiquidityFeesStats + (vega.Proposal_State)(0), // 472: vega.Proposal.State + (*vega.Delegation)(nil), // 473: vega.Delegation + (vega.NodeStatus)(0), // 474: vega.NodeStatus + (*vega.NodeData)(nil), // 475: vega.NodeData + (*vega.Node)(nil), // 476: vega.Node + (*v11.NodeSignature)(nil), // 477: vega.commands.v1.NodeSignature + (*vega.Epoch)(nil), // 478: vega.Epoch + (*vega.Fee)(nil), // 479: vega.Fee + (vega.Side)(0), // 480: vega.Side + (*vega.NetworkParameter)(nil), // 481: vega.NetworkParameter + (*v1.StakeLinking)(nil), // 482: vega.events.v1.StakeLinking + (*vega.RiskFactor)(nil), // 483: vega.RiskFactor + (v1.BusEventType)(0), // 484: vega.events.v1.BusEventType + (*v1.BusEvent)(nil), // 485: vega.events.v1.BusEvent + (*vega.LedgerMovement)(nil), // 486: vega.LedgerMovement + (*v1.KeyRotation)(nil), // 487: vega.events.v1.KeyRotation + (*v1.EthereumKeyRotation)(nil), // 488: vega.events.v1.EthereumKeyRotation + (v1.ProtocolUpgradeProposalStatus)(0), // 489: vega.events.v1.ProtocolUpgradeProposalStatus + (*v1.ProtocolUpgradeEvent)(nil), // 490: vega.events.v1.ProtocolUpgradeEvent + (*v1.CoreSnapshotData)(nil), // 491: vega.events.v1.CoreSnapshotData + (*vega.Account)(nil), // 492: vega.Account + (*vega.LedgerEntry)(nil), // 493: vega.LedgerEntry + (*vega.Proposal)(nil), // 494: vega.Proposal + (*v1.PartyActivityStreak)(nil), // 495: vega.events.v1.PartyActivityStreak + (*v1.FundingPeriod)(nil), // 496: vega.events.v1.FundingPeriod + (v1.FundingPeriodDataPoint_Source)(0), // 497: vega.events.v1.FundingPeriodDataPoint.Source + (*v1.FundingPeriodDataPoint)(nil), // 498: vega.events.v1.FundingPeriodDataPoint + (vega.MarginMode)(0), // 499: vega.MarginMode + (*vega.BenefitTier)(nil), // 500: vega.BenefitTier + (*vega.StakingTier)(nil), // 501: vega.StakingTier + (*v1.FeesStats)(nil), // 502: vega.events.v1.FeesStats + (*vega.VolumeBenefitTier)(nil), // 503: vega.VolumeBenefitTier + (*v1.TransactionResult)(nil), // 504: vega.events.v1.TransactionResult + (vega.EntityScope)(0), // 505: vega.EntityScope + (vega.DispatchMetric)(0), // 506: vega.DispatchMetric + (*httpbody.HttpBody)(nil), // 507: google.api.HttpBody } var file_data_node_api_v2_trading_data_proto_depIdxs = []int32{ - 419, // 0: datanode.api.v2.GetVestingBalancesSummaryResponse.locked_balances:type_name -> vega.events.v1.PartyLockedBalance - 420, // 1: datanode.api.v2.GetVestingBalancesSummaryResponse.vesting_balances:type_name -> vega.events.v1.PartyVestingBalance - 421, // 2: datanode.api.v2.AccountBalance.type:type_name -> vega.AccountType - 65, // 3: datanode.api.v2.ListAccountsRequest.filter:type_name -> datanode.api.v2.AccountFilter + 429, // 0: datanode.api.v2.GetVestingBalancesSummaryResponse.locked_balances:type_name -> vega.events.v1.PartyLockedBalance + 430, // 1: datanode.api.v2.GetVestingBalancesSummaryResponse.vesting_balances:type_name -> vega.events.v1.PartyVestingBalance + 431, // 2: datanode.api.v2.AccountBalance.type:type_name -> vega.AccountType + 75, // 3: datanode.api.v2.ListAccountsRequest.filter:type_name -> datanode.api.v2.AccountFilter 6, // 4: datanode.api.v2.ListAccountsRequest.pagination:type_name -> datanode.api.v2.Pagination 15, // 5: datanode.api.v2.ListAccountsResponse.accounts:type_name -> datanode.api.v2.AccountsConnection 16, // 6: datanode.api.v2.AccountsConnection.edges:type_name -> datanode.api.v2.AccountEdge 7, // 7: datanode.api.v2.AccountsConnection.page_info:type_name -> datanode.api.v2.PageInfo 12, // 8: datanode.api.v2.AccountEdge.node:type_name -> datanode.api.v2.AccountBalance - 421, // 9: datanode.api.v2.ObserveAccountsRequest.type:type_name -> vega.AccountType + 431, // 9: datanode.api.v2.ObserveAccountsRequest.type:type_name -> vega.AccountType 19, // 10: datanode.api.v2.ObserveAccountsResponse.snapshot:type_name -> datanode.api.v2.AccountSnapshotPage 20, // 11: datanode.api.v2.ObserveAccountsResponse.updates:type_name -> datanode.api.v2.AccountUpdates 12, // 12: datanode.api.v2.AccountSnapshotPage.accounts:type_name -> datanode.api.v2.AccountBalance 12, // 13: datanode.api.v2.AccountUpdates.accounts:type_name -> datanode.api.v2.AccountBalance - 422, // 14: datanode.api.v2.GetOrderResponse.order:type_name -> vega.Order - 423, // 15: datanode.api.v2.OrderFilter.statuses:type_name -> vega.Order.Status - 424, // 16: datanode.api.v2.OrderFilter.types:type_name -> vega.Order.Type - 425, // 17: datanode.api.v2.OrderFilter.time_in_forces:type_name -> vega.Order.TimeInForce - 288, // 18: datanode.api.v2.OrderFilter.date_range:type_name -> datanode.api.v2.DateRange + 432, // 14: datanode.api.v2.GetOrderResponse.order:type_name -> vega.Order + 433, // 15: datanode.api.v2.OrderFilter.statuses:type_name -> vega.Order.Status + 434, // 16: datanode.api.v2.OrderFilter.types:type_name -> vega.Order.Type + 435, // 17: datanode.api.v2.OrderFilter.time_in_forces:type_name -> vega.Order.TimeInForce + 298, // 18: datanode.api.v2.OrderFilter.date_range:type_name -> datanode.api.v2.DateRange 6, // 19: datanode.api.v2.ListOrdersRequest.pagination:type_name -> datanode.api.v2.Pagination 25, // 20: datanode.api.v2.ListOrdersRequest.filter:type_name -> datanode.api.v2.OrderFilter - 170, // 21: datanode.api.v2.ListOrdersResponse.orders:type_name -> datanode.api.v2.OrderConnection + 180, // 21: datanode.api.v2.ListOrdersResponse.orders:type_name -> datanode.api.v2.OrderConnection 6, // 22: datanode.api.v2.ListOrderVersionsRequest.pagination:type_name -> datanode.api.v2.Pagination - 170, // 23: datanode.api.v2.ListOrderVersionsResponse.orders:type_name -> datanode.api.v2.OrderConnection + 180, // 23: datanode.api.v2.ListOrderVersionsResponse.orders:type_name -> datanode.api.v2.OrderConnection 32, // 24: datanode.api.v2.ObserveOrdersResponse.snapshot:type_name -> datanode.api.v2.OrderSnapshotPage 33, // 25: datanode.api.v2.ObserveOrdersResponse.updates:type_name -> datanode.api.v2.OrderUpdates - 422, // 26: datanode.api.v2.OrderSnapshotPage.orders:type_name -> vega.Order - 422, // 27: datanode.api.v2.OrderUpdates.orders:type_name -> vega.Order - 426, // 28: datanode.api.v2.GetStopOrderResponse.order:type_name -> vega.events.v1.StopOrderEvent - 6, // 29: datanode.api.v2.ListStopOrdersRequest.pagination:type_name -> datanode.api.v2.Pagination - 37, // 30: datanode.api.v2.ListStopOrdersRequest.filter:type_name -> datanode.api.v2.StopOrderFilter - 427, // 31: datanode.api.v2.StopOrderFilter.statuses:type_name -> vega.StopOrder.Status - 428, // 32: datanode.api.v2.StopOrderFilter.expiry_strategies:type_name -> vega.StopOrder.ExpiryStrategy - 288, // 33: datanode.api.v2.StopOrderFilter.date_range:type_name -> datanode.api.v2.DateRange - 426, // 34: datanode.api.v2.StopOrderEdge.node:type_name -> vega.events.v1.StopOrderEvent - 38, // 35: datanode.api.v2.StopOrderConnection.edges:type_name -> datanode.api.v2.StopOrderEdge - 7, // 36: datanode.api.v2.StopOrderConnection.page_info:type_name -> datanode.api.v2.PageInfo - 39, // 37: datanode.api.v2.ListStopOrdersResponse.orders:type_name -> datanode.api.v2.StopOrderConnection - 6, // 38: datanode.api.v2.ListPositionsRequest.pagination:type_name -> datanode.api.v2.Pagination - 47, // 39: datanode.api.v2.ListPositionsResponse.positions:type_name -> datanode.api.v2.PositionConnection - 43, // 40: datanode.api.v2.ListAllPositionsRequest.filter:type_name -> datanode.api.v2.PositionsFilter - 6, // 41: datanode.api.v2.ListAllPositionsRequest.pagination:type_name -> datanode.api.v2.Pagination - 47, // 42: datanode.api.v2.ListAllPositionsResponse.positions:type_name -> datanode.api.v2.PositionConnection - 429, // 43: datanode.api.v2.PositionEdge.node:type_name -> vega.Position - 46, // 44: datanode.api.v2.PositionConnection.edges:type_name -> datanode.api.v2.PositionEdge - 7, // 45: datanode.api.v2.PositionConnection.page_info:type_name -> datanode.api.v2.PageInfo - 50, // 46: datanode.api.v2.ObservePositionsResponse.snapshot:type_name -> datanode.api.v2.PositionSnapshotPage - 51, // 47: datanode.api.v2.ObservePositionsResponse.updates:type_name -> datanode.api.v2.PositionUpdates - 429, // 48: datanode.api.v2.PositionSnapshotPage.positions:type_name -> vega.Position - 429, // 49: datanode.api.v2.PositionUpdates.positions:type_name -> vega.Position - 65, // 50: datanode.api.v2.LedgerEntryFilter.from_account_filter:type_name -> datanode.api.v2.AccountFilter - 65, // 51: datanode.api.v2.LedgerEntryFilter.to_account_filter:type_name -> datanode.api.v2.AccountFilter - 430, // 52: datanode.api.v2.LedgerEntryFilter.transfer_types:type_name -> vega.TransferType - 430, // 53: datanode.api.v2.AggregatedLedgerEntry.transfer_type:type_name -> vega.TransferType - 421, // 54: datanode.api.v2.AggregatedLedgerEntry.from_account_type:type_name -> vega.AccountType - 421, // 55: datanode.api.v2.AggregatedLedgerEntry.to_account_type:type_name -> vega.AccountType - 52, // 56: datanode.api.v2.ListLedgerEntriesRequest.filter:type_name -> datanode.api.v2.LedgerEntryFilter - 6, // 57: datanode.api.v2.ListLedgerEntriesRequest.pagination:type_name -> datanode.api.v2.Pagination - 288, // 58: datanode.api.v2.ListLedgerEntriesRequest.date_range:type_name -> datanode.api.v2.DateRange - 288, // 59: datanode.api.v2.ExportLedgerEntriesRequest.date_range:type_name -> datanode.api.v2.DateRange - 58, // 60: datanode.api.v2.ListLedgerEntriesResponse.ledger_entries:type_name -> datanode.api.v2.AggregatedLedgerEntriesConnection - 53, // 61: datanode.api.v2.AggregatedLedgerEntriesEdge.node:type_name -> datanode.api.v2.AggregatedLedgerEntry - 57, // 62: datanode.api.v2.AggregatedLedgerEntriesConnection.edges:type_name -> datanode.api.v2.AggregatedLedgerEntriesEdge - 7, // 63: datanode.api.v2.AggregatedLedgerEntriesConnection.page_info:type_name -> datanode.api.v2.PageInfo - 65, // 64: datanode.api.v2.ListBalanceChangesRequest.filter:type_name -> datanode.api.v2.AccountFilter - 6, // 65: datanode.api.v2.ListBalanceChangesRequest.pagination:type_name -> datanode.api.v2.Pagination - 288, // 66: datanode.api.v2.ListBalanceChangesRequest.date_range:type_name -> datanode.api.v2.DateRange - 64, // 67: datanode.api.v2.ListBalanceChangesResponse.balances:type_name -> datanode.api.v2.AggregatedBalanceConnection - 65, // 68: datanode.api.v2.GetBalanceHistoryRequest.filter:type_name -> datanode.api.v2.AccountFilter - 1, // 69: datanode.api.v2.GetBalanceHistoryRequest.group_by:type_name -> datanode.api.v2.AccountField - 6, // 70: datanode.api.v2.GetBalanceHistoryRequest.pagination:type_name -> datanode.api.v2.Pagination - 288, // 71: datanode.api.v2.GetBalanceHistoryRequest.date_range:type_name -> datanode.api.v2.DateRange - 64, // 72: datanode.api.v2.GetBalanceHistoryResponse.balances:type_name -> datanode.api.v2.AggregatedBalanceConnection - 66, // 73: datanode.api.v2.AggregatedBalanceEdge.node:type_name -> datanode.api.v2.AggregatedBalance - 63, // 74: datanode.api.v2.AggregatedBalanceConnection.edges:type_name -> datanode.api.v2.AggregatedBalanceEdge - 7, // 75: datanode.api.v2.AggregatedBalanceConnection.page_info:type_name -> datanode.api.v2.PageInfo - 421, // 76: datanode.api.v2.AccountFilter.account_types:type_name -> vega.AccountType - 421, // 77: datanode.api.v2.AggregatedBalance.account_type:type_name -> vega.AccountType - 431, // 78: datanode.api.v2.ObserveMarketsDepthResponse.market_depth:type_name -> vega.MarketDepth - 432, // 79: datanode.api.v2.ObserveMarketsDepthUpdatesResponse.update:type_name -> vega.MarketDepthUpdate - 433, // 80: datanode.api.v2.ObserveMarketsDataResponse.market_data:type_name -> vega.MarketData - 434, // 81: datanode.api.v2.GetLatestMarketDepthResponse.buy:type_name -> vega.PriceLevel - 434, // 82: datanode.api.v2.GetLatestMarketDepthResponse.sell:type_name -> vega.PriceLevel - 435, // 83: datanode.api.v2.GetLatestMarketDepthResponse.last_trade:type_name -> vega.Trade - 433, // 84: datanode.api.v2.ListLatestMarketDataResponse.markets_data:type_name -> vega.MarketData - 433, // 85: datanode.api.v2.GetLatestMarketDataResponse.market_data:type_name -> vega.MarketData - 6, // 86: datanode.api.v2.GetMarketDataHistoryByIDRequest.pagination:type_name -> datanode.api.v2.Pagination - 82, // 87: datanode.api.v2.GetMarketDataHistoryByIDResponse.market_data:type_name -> datanode.api.v2.MarketDataConnection - 433, // 88: datanode.api.v2.MarketDataEdge.node:type_name -> vega.MarketData - 81, // 89: datanode.api.v2.MarketDataConnection.edges:type_name -> datanode.api.v2.MarketDataEdge - 7, // 90: datanode.api.v2.MarketDataConnection.page_info:type_name -> datanode.api.v2.PageInfo - 2, // 91: datanode.api.v2.ListTransfersRequest.direction:type_name -> datanode.api.v2.TransferDirection - 6, // 92: datanode.api.v2.ListTransfersRequest.pagination:type_name -> datanode.api.v2.Pagination - 436, // 93: datanode.api.v2.ListTransfersRequest.status:type_name -> vega.events.v1.Transfer.Status - 4, // 94: datanode.api.v2.ListTransfersRequest.scope:type_name -> datanode.api.v2.ListTransfersRequest.Scope - 421, // 95: datanode.api.v2.ListTransfersRequest.from_account_type:type_name -> vega.AccountType - 421, // 96: datanode.api.v2.ListTransfersRequest.to_account_type:type_name -> vega.AccountType - 87, // 97: datanode.api.v2.ListTransfersResponse.transfers:type_name -> datanode.api.v2.TransferConnection - 437, // 98: datanode.api.v2.TransferNode.transfer:type_name -> vega.events.v1.Transfer - 438, // 99: datanode.api.v2.TransferNode.fees:type_name -> vega.events.v1.TransferFees - 85, // 100: datanode.api.v2.TransferEdge.node:type_name -> datanode.api.v2.TransferNode - 86, // 101: datanode.api.v2.TransferConnection.edges:type_name -> datanode.api.v2.TransferEdge - 7, // 102: datanode.api.v2.TransferConnection.page_info:type_name -> datanode.api.v2.PageInfo - 85, // 103: datanode.api.v2.GetTransferResponse.transfer_node:type_name -> datanode.api.v2.TransferNode - 439, // 104: datanode.api.v2.GetNetworkLimitsResponse.limits:type_name -> vega.NetworkLimits - 93, // 105: datanode.api.v2.ListCandleIntervalsResponse.interval_to_candle_id:type_name -> datanode.api.v2.IntervalToCandleId - 95, // 106: datanode.api.v2.ObserveCandleDataResponse.candle:type_name -> datanode.api.v2.Candle - 6, // 107: datanode.api.v2.ListCandleDataRequest.pagination:type_name -> datanode.api.v2.Pagination - 101, // 108: datanode.api.v2.ListCandleDataResponse.candles:type_name -> datanode.api.v2.CandleDataConnection - 95, // 109: datanode.api.v2.CandleEdge.node:type_name -> datanode.api.v2.Candle - 100, // 110: datanode.api.v2.CandleDataConnection.edges:type_name -> datanode.api.v2.CandleEdge - 7, // 111: datanode.api.v2.CandleDataConnection.page_info:type_name -> datanode.api.v2.PageInfo - 6, // 112: datanode.api.v2.ListVotesRequest.pagination:type_name -> datanode.api.v2.Pagination - 105, // 113: datanode.api.v2.ListVotesResponse.votes:type_name -> datanode.api.v2.VoteConnection - 440, // 114: datanode.api.v2.VoteEdge.node:type_name -> vega.Vote - 104, // 115: datanode.api.v2.VoteConnection.edges:type_name -> datanode.api.v2.VoteEdge - 7, // 116: datanode.api.v2.VoteConnection.page_info:type_name -> datanode.api.v2.PageInfo - 440, // 117: datanode.api.v2.ObserveVotesResponse.vote:type_name -> vega.Vote - 6, // 118: datanode.api.v2.ListERC20MultiSigSignerAddedBundlesRequest.pagination:type_name -> datanode.api.v2.Pagination - 112, // 119: datanode.api.v2.ListERC20MultiSigSignerAddedBundlesResponse.bundles:type_name -> datanode.api.v2.ERC20MultiSigSignerAddedConnection - 441, // 120: datanode.api.v2.ERC20MultiSigSignerAddedEdge.node:type_name -> vega.events.v1.ERC20MultiSigSignerAdded - 113, // 121: datanode.api.v2.ERC20MultiSigSignerAddedBundleEdge.node:type_name -> datanode.api.v2.ERC20MultiSigSignerAddedBundle - 111, // 122: datanode.api.v2.ERC20MultiSigSignerAddedConnection.edges:type_name -> datanode.api.v2.ERC20MultiSigSignerAddedBundleEdge - 7, // 123: datanode.api.v2.ERC20MultiSigSignerAddedConnection.page_info:type_name -> datanode.api.v2.PageInfo - 6, // 124: datanode.api.v2.ListERC20MultiSigSignerRemovedBundlesRequest.pagination:type_name -> datanode.api.v2.Pagination - 118, // 125: datanode.api.v2.ListERC20MultiSigSignerRemovedBundlesResponse.bundles:type_name -> datanode.api.v2.ERC20MultiSigSignerRemovedConnection - 442, // 126: datanode.api.v2.ERC20MultiSigSignerRemovedEdge.node:type_name -> vega.events.v1.ERC20MultiSigSignerRemoved - 119, // 127: datanode.api.v2.ERC20MultiSigSignerRemovedBundleEdge.node:type_name -> datanode.api.v2.ERC20MultiSigSignerRemovedBundle - 117, // 128: datanode.api.v2.ERC20MultiSigSignerRemovedConnection.edges:type_name -> datanode.api.v2.ERC20MultiSigSignerRemovedBundleEdge - 7, // 129: datanode.api.v2.ERC20MultiSigSignerRemovedConnection.page_info:type_name -> datanode.api.v2.PageInfo - 435, // 130: datanode.api.v2.GetLastTradeResponse.trade:type_name -> vega.Trade - 6, // 131: datanode.api.v2.ListTradesRequest.pagination:type_name -> datanode.api.v2.Pagination - 288, // 132: datanode.api.v2.ListTradesRequest.date_range:type_name -> datanode.api.v2.DateRange - 130, // 133: datanode.api.v2.ListTradesResponse.trades:type_name -> datanode.api.v2.TradeConnection - 131, // 134: datanode.api.v2.TradeConnection.edges:type_name -> datanode.api.v2.TradeEdge - 7, // 135: datanode.api.v2.TradeConnection.page_info:type_name -> datanode.api.v2.PageInfo - 435, // 136: datanode.api.v2.TradeEdge.node:type_name -> vega.Trade - 435, // 137: datanode.api.v2.ObserveTradesResponse.trades:type_name -> vega.Trade - 443, // 138: datanode.api.v2.GetOracleSpecResponse.oracle_spec:type_name -> vega.OracleSpec - 6, // 139: datanode.api.v2.ListOracleSpecsRequest.pagination:type_name -> datanode.api.v2.Pagination - 141, // 140: datanode.api.v2.ListOracleSpecsResponse.oracle_specs:type_name -> datanode.api.v2.OracleSpecsConnection - 6, // 141: datanode.api.v2.ListOracleDataRequest.pagination:type_name -> datanode.api.v2.Pagination - 143, // 142: datanode.api.v2.ListOracleDataResponse.oracle_data:type_name -> datanode.api.v2.OracleDataConnection - 443, // 143: datanode.api.v2.OracleSpecEdge.node:type_name -> vega.OracleSpec - 140, // 144: datanode.api.v2.OracleSpecsConnection.edges:type_name -> datanode.api.v2.OracleSpecEdge - 7, // 145: datanode.api.v2.OracleSpecsConnection.page_info:type_name -> datanode.api.v2.PageInfo - 444, // 146: datanode.api.v2.OracleDataEdge.node:type_name -> vega.OracleData - 142, // 147: datanode.api.v2.OracleDataConnection.edges:type_name -> datanode.api.v2.OracleDataEdge - 7, // 148: datanode.api.v2.OracleDataConnection.page_info:type_name -> datanode.api.v2.PageInfo - 445, // 149: datanode.api.v2.GetMarketResponse.market:type_name -> vega.Market - 6, // 150: datanode.api.v2.ListMarketsRequest.pagination:type_name -> datanode.api.v2.Pagination - 149, // 151: datanode.api.v2.ListMarketsResponse.markets:type_name -> datanode.api.v2.MarketConnection - 445, // 152: datanode.api.v2.MarketEdge.node:type_name -> vega.Market - 148, // 153: datanode.api.v2.MarketConnection.edges:type_name -> datanode.api.v2.MarketEdge - 7, // 154: datanode.api.v2.MarketConnection.page_info:type_name -> datanode.api.v2.PageInfo - 6, // 155: datanode.api.v2.ListSuccessorMarketsRequest.pagination:type_name -> datanode.api.v2.Pagination - 445, // 156: datanode.api.v2.SuccessorMarket.market:type_name -> vega.Market - 446, // 157: datanode.api.v2.SuccessorMarket.proposals:type_name -> vega.GovernanceData - 151, // 158: datanode.api.v2.SuccessorMarketEdge.node:type_name -> datanode.api.v2.SuccessorMarket - 152, // 159: datanode.api.v2.SuccessorMarketConnection.edges:type_name -> datanode.api.v2.SuccessorMarketEdge - 7, // 160: datanode.api.v2.SuccessorMarketConnection.page_info:type_name -> datanode.api.v2.PageInfo - 153, // 161: datanode.api.v2.ListSuccessorMarketsResponse.successor_markets:type_name -> datanode.api.v2.SuccessorMarketConnection - 447, // 162: datanode.api.v2.GetPartyResponse.party:type_name -> vega.Party - 6, // 163: datanode.api.v2.ListPartiesRequest.pagination:type_name -> datanode.api.v2.Pagination - 160, // 164: datanode.api.v2.ListPartiesResponse.parties:type_name -> datanode.api.v2.PartyConnection - 447, // 165: datanode.api.v2.PartyEdge.node:type_name -> vega.Party - 159, // 166: datanode.api.v2.PartyConnection.edges:type_name -> datanode.api.v2.PartyEdge - 7, // 167: datanode.api.v2.PartyConnection.page_info:type_name -> datanode.api.v2.PageInfo - 6, // 168: datanode.api.v2.ListPartiesProfilesRequest.pagination:type_name -> datanode.api.v2.Pagination - 164, // 169: datanode.api.v2.ListPartiesProfilesResponse.profiles:type_name -> datanode.api.v2.PartiesProfilesConnection - 448, // 170: datanode.api.v2.PartyProfileEdge.node:type_name -> vega.PartyProfile - 163, // 171: datanode.api.v2.PartiesProfilesConnection.edges:type_name -> datanode.api.v2.PartyProfileEdge - 7, // 172: datanode.api.v2.PartiesProfilesConnection.page_info:type_name -> datanode.api.v2.PageInfo - 422, // 173: datanode.api.v2.OrderEdge.node:type_name -> vega.Order - 6, // 174: datanode.api.v2.ListMarginLevelsRequest.pagination:type_name -> datanode.api.v2.Pagination - 172, // 175: datanode.api.v2.ListMarginLevelsResponse.margin_levels:type_name -> datanode.api.v2.MarginConnection - 449, // 176: datanode.api.v2.ObserveMarginLevelsResponse.margin_levels:type_name -> vega.MarginLevels - 165, // 177: datanode.api.v2.OrderConnection.edges:type_name -> datanode.api.v2.OrderEdge - 7, // 178: datanode.api.v2.OrderConnection.page_info:type_name -> datanode.api.v2.PageInfo - 449, // 179: datanode.api.v2.MarginEdge.node:type_name -> vega.MarginLevels - 171, // 180: datanode.api.v2.MarginConnection.edges:type_name -> datanode.api.v2.MarginEdge - 7, // 181: datanode.api.v2.MarginConnection.page_info:type_name -> datanode.api.v2.PageInfo - 6, // 182: datanode.api.v2.ListRewardsRequest.pagination:type_name -> datanode.api.v2.Pagination - 176, // 183: datanode.api.v2.ListRewardsResponse.rewards:type_name -> datanode.api.v2.RewardsConnection - 450, // 184: datanode.api.v2.RewardEdge.node:type_name -> vega.Reward - 175, // 185: datanode.api.v2.RewardsConnection.edges:type_name -> datanode.api.v2.RewardEdge - 7, // 186: datanode.api.v2.RewardsConnection.page_info:type_name -> datanode.api.v2.PageInfo - 6, // 187: datanode.api.v2.ListRewardSummariesRequest.pagination:type_name -> datanode.api.v2.Pagination - 451, // 188: datanode.api.v2.ListRewardSummariesResponse.summaries:type_name -> vega.RewardSummary - 179, // 189: datanode.api.v2.ListEpochRewardSummariesRequest.filter:type_name -> datanode.api.v2.RewardSummaryFilter - 6, // 190: datanode.api.v2.ListEpochRewardSummariesRequest.pagination:type_name -> datanode.api.v2.Pagination - 182, // 191: datanode.api.v2.ListEpochRewardSummariesResponse.summaries:type_name -> datanode.api.v2.EpochRewardSummaryConnection - 183, // 192: datanode.api.v2.EpochRewardSummaryConnection.edges:type_name -> datanode.api.v2.EpochRewardSummaryEdge - 7, // 193: datanode.api.v2.EpochRewardSummaryConnection.page_info:type_name -> datanode.api.v2.PageInfo - 452, // 194: datanode.api.v2.EpochRewardSummaryEdge.node:type_name -> vega.EpochRewardSummary - 450, // 195: datanode.api.v2.ObserveRewardsResponse.reward:type_name -> vega.Reward - 453, // 196: datanode.api.v2.GetDepositResponse.deposit:type_name -> vega.Deposit - 6, // 197: datanode.api.v2.ListDepositsRequest.pagination:type_name -> datanode.api.v2.Pagination - 288, // 198: datanode.api.v2.ListDepositsRequest.date_range:type_name -> datanode.api.v2.DateRange - 191, // 199: datanode.api.v2.ListDepositsResponse.deposits:type_name -> datanode.api.v2.DepositsConnection - 453, // 200: datanode.api.v2.DepositEdge.node:type_name -> vega.Deposit - 190, // 201: datanode.api.v2.DepositsConnection.edges:type_name -> datanode.api.v2.DepositEdge - 7, // 202: datanode.api.v2.DepositsConnection.page_info:type_name -> datanode.api.v2.PageInfo - 454, // 203: datanode.api.v2.GetWithdrawalResponse.withdrawal:type_name -> vega.Withdrawal - 6, // 204: datanode.api.v2.ListWithdrawalsRequest.pagination:type_name -> datanode.api.v2.Pagination - 288, // 205: datanode.api.v2.ListWithdrawalsRequest.date_range:type_name -> datanode.api.v2.DateRange - 197, // 206: datanode.api.v2.ListWithdrawalsResponse.withdrawals:type_name -> datanode.api.v2.WithdrawalsConnection - 454, // 207: datanode.api.v2.WithdrawalEdge.node:type_name -> vega.Withdrawal - 196, // 208: datanode.api.v2.WithdrawalsConnection.edges:type_name -> datanode.api.v2.WithdrawalEdge - 7, // 209: datanode.api.v2.WithdrawalsConnection.page_info:type_name -> datanode.api.v2.PageInfo - 455, // 210: datanode.api.v2.GetAssetResponse.asset:type_name -> vega.Asset - 6, // 211: datanode.api.v2.ListAssetsRequest.pagination:type_name -> datanode.api.v2.Pagination - 203, // 212: datanode.api.v2.ListAssetsResponse.assets:type_name -> datanode.api.v2.AssetsConnection - 455, // 213: datanode.api.v2.AssetEdge.node:type_name -> vega.Asset - 202, // 214: datanode.api.v2.AssetsConnection.edges:type_name -> datanode.api.v2.AssetEdge - 7, // 215: datanode.api.v2.AssetsConnection.page_info:type_name -> datanode.api.v2.PageInfo - 6, // 216: datanode.api.v2.ListLiquidityProvisionsRequest.pagination:type_name -> datanode.api.v2.Pagination - 6, // 217: datanode.api.v2.ListAllLiquidityProvisionsRequest.pagination:type_name -> datanode.api.v2.Pagination - 211, // 218: datanode.api.v2.ListLiquidityProvisionsResponse.liquidity_provisions:type_name -> datanode.api.v2.LiquidityProvisionsConnection - 212, // 219: datanode.api.v2.ListAllLiquidityProvisionsResponse.liquidity_provisions:type_name -> datanode.api.v2.LiquidityProvisionsWithPendingConnection - 456, // 220: datanode.api.v2.LiquidityProvision.current:type_name -> vega.LiquidityProvision - 456, // 221: datanode.api.v2.LiquidityProvision.pending:type_name -> vega.LiquidityProvision - 456, // 222: datanode.api.v2.LiquidityProvisionsEdge.node:type_name -> vega.LiquidityProvision - 208, // 223: datanode.api.v2.LiquidityProvisionWithPendingEdge.node:type_name -> datanode.api.v2.LiquidityProvision - 209, // 224: datanode.api.v2.LiquidityProvisionsConnection.edges:type_name -> datanode.api.v2.LiquidityProvisionsEdge - 7, // 225: datanode.api.v2.LiquidityProvisionsConnection.page_info:type_name -> datanode.api.v2.PageInfo - 210, // 226: datanode.api.v2.LiquidityProvisionsWithPendingConnection.edges:type_name -> datanode.api.v2.LiquidityProvisionWithPendingEdge - 7, // 227: datanode.api.v2.LiquidityProvisionsWithPendingConnection.page_info:type_name -> datanode.api.v2.PageInfo - 456, // 228: datanode.api.v2.ObserveLiquidityProvisionsResponse.liquidity_provisions:type_name -> vega.LiquidityProvision - 6, // 229: datanode.api.v2.ListLiquidityProvidersRequest.pagination:type_name -> datanode.api.v2.Pagination - 457, // 230: datanode.api.v2.LiquidityProvider.fee_share:type_name -> vega.LiquidityProviderFeeShare - 458, // 231: datanode.api.v2.LiquidityProvider.sla:type_name -> vega.LiquidityProviderSLA - 216, // 232: datanode.api.v2.LiquidityProviderEdge.node:type_name -> datanode.api.v2.LiquidityProvider - 217, // 233: datanode.api.v2.LiquidityProviderConnection.edges:type_name -> datanode.api.v2.LiquidityProviderEdge - 7, // 234: datanode.api.v2.LiquidityProviderConnection.page_info:type_name -> datanode.api.v2.PageInfo - 218, // 235: datanode.api.v2.ListLiquidityProvidersResponse.liquidity_providers:type_name -> datanode.api.v2.LiquidityProviderConnection - 6, // 236: datanode.api.v2.ListPaidLiquidityFeesRequest.pagination:type_name -> datanode.api.v2.Pagination - 223, // 237: datanode.api.v2.ListPaidLiquidityFeesResponse.paid_liquidity_fees:type_name -> datanode.api.v2.PaidLiquidityFeesConnection - 459, // 238: datanode.api.v2.PaidLiquidityFeesEdge.node:type_name -> vega.events.v1.PaidLiquidityFeesStats - 222, // 239: datanode.api.v2.PaidLiquidityFeesConnection.edges:type_name -> datanode.api.v2.PaidLiquidityFeesEdge - 7, // 240: datanode.api.v2.PaidLiquidityFeesConnection.page_info:type_name -> datanode.api.v2.PageInfo - 446, // 241: datanode.api.v2.GetGovernanceDataResponse.data:type_name -> vega.GovernanceData - 460, // 242: datanode.api.v2.ListGovernanceDataRequest.proposal_state:type_name -> vega.Proposal.State - 5, // 243: datanode.api.v2.ListGovernanceDataRequest.proposal_type:type_name -> datanode.api.v2.ListGovernanceDataRequest.Type - 6, // 244: datanode.api.v2.ListGovernanceDataRequest.pagination:type_name -> datanode.api.v2.Pagination - 229, // 245: datanode.api.v2.ListGovernanceDataResponse.connection:type_name -> datanode.api.v2.GovernanceDataConnection - 446, // 246: datanode.api.v2.GovernanceDataEdge.node:type_name -> vega.GovernanceData - 228, // 247: datanode.api.v2.GovernanceDataConnection.edges:type_name -> datanode.api.v2.GovernanceDataEdge - 7, // 248: datanode.api.v2.GovernanceDataConnection.page_info:type_name -> datanode.api.v2.PageInfo - 446, // 249: datanode.api.v2.ObserveGovernanceResponse.data:type_name -> vega.GovernanceData - 6, // 250: datanode.api.v2.ListDelegationsRequest.pagination:type_name -> datanode.api.v2.Pagination - 235, // 251: datanode.api.v2.ListDelegationsResponse.delegations:type_name -> datanode.api.v2.DelegationsConnection - 461, // 252: datanode.api.v2.DelegationEdge.node:type_name -> vega.Delegation - 234, // 253: datanode.api.v2.DelegationsConnection.edges:type_name -> datanode.api.v2.DelegationEdge - 7, // 254: datanode.api.v2.DelegationsConnection.page_info:type_name -> datanode.api.v2.PageInfo - 461, // 255: datanode.api.v2.ObserveDelegationsResponse.delegation:type_name -> vega.Delegation - 462, // 256: datanode.api.v2.NodeBasic.status:type_name -> vega.NodeStatus - 463, // 257: datanode.api.v2.GetNetworkDataResponse.node_data:type_name -> vega.NodeData - 464, // 258: datanode.api.v2.GetNodeResponse.node:type_name -> vega.Node - 6, // 259: datanode.api.v2.ListNodesRequest.pagination:type_name -> datanode.api.v2.Pagination - 246, // 260: datanode.api.v2.ListNodesResponse.nodes:type_name -> datanode.api.v2.NodesConnection - 464, // 261: datanode.api.v2.NodeEdge.node:type_name -> vega.Node - 245, // 262: datanode.api.v2.NodesConnection.edges:type_name -> datanode.api.v2.NodeEdge - 7, // 263: datanode.api.v2.NodesConnection.page_info:type_name -> datanode.api.v2.PageInfo - 6, // 264: datanode.api.v2.ListNodeSignaturesRequest.pagination:type_name -> datanode.api.v2.Pagination - 250, // 265: datanode.api.v2.ListNodeSignaturesResponse.signatures:type_name -> datanode.api.v2.NodeSignaturesConnection - 465, // 266: datanode.api.v2.NodeSignatureEdge.node:type_name -> vega.commands.v1.NodeSignature - 249, // 267: datanode.api.v2.NodeSignaturesConnection.edges:type_name -> datanode.api.v2.NodeSignatureEdge - 7, // 268: datanode.api.v2.NodeSignaturesConnection.page_info:type_name -> datanode.api.v2.PageInfo - 466, // 269: datanode.api.v2.GetEpochResponse.epoch:type_name -> vega.Epoch - 467, // 270: datanode.api.v2.EstimateFeeResponse.fee:type_name -> vega.Fee - 468, // 271: datanode.api.v2.EstimateMarginRequest.side:type_name -> vega.Side - 424, // 272: datanode.api.v2.EstimateMarginRequest.type:type_name -> vega.Order.Type - 449, // 273: datanode.api.v2.EstimateMarginResponse.margin_levels:type_name -> vega.MarginLevels - 6, // 274: datanode.api.v2.ListNetworkParametersRequest.pagination:type_name -> datanode.api.v2.Pagination - 262, // 275: datanode.api.v2.ListNetworkParametersResponse.network_parameters:type_name -> datanode.api.v2.NetworkParameterConnection - 469, // 276: datanode.api.v2.GetNetworkParameterResponse.network_parameter:type_name -> vega.NetworkParameter - 469, // 277: datanode.api.v2.NetworkParameterEdge.node:type_name -> vega.NetworkParameter - 261, // 278: datanode.api.v2.NetworkParameterConnection.edges:type_name -> datanode.api.v2.NetworkParameterEdge - 7, // 279: datanode.api.v2.NetworkParameterConnection.page_info:type_name -> datanode.api.v2.PageInfo - 6, // 280: datanode.api.v2.ListCheckpointsRequest.pagination:type_name -> datanode.api.v2.Pagination - 267, // 281: datanode.api.v2.ListCheckpointsResponse.checkpoints:type_name -> datanode.api.v2.CheckpointsConnection - 263, // 282: datanode.api.v2.CheckpointEdge.node:type_name -> datanode.api.v2.Checkpoint - 266, // 283: datanode.api.v2.CheckpointsConnection.edges:type_name -> datanode.api.v2.CheckpointEdge - 7, // 284: datanode.api.v2.CheckpointsConnection.page_info:type_name -> datanode.api.v2.PageInfo - 6, // 285: datanode.api.v2.GetStakeRequest.pagination:type_name -> datanode.api.v2.Pagination - 271, // 286: datanode.api.v2.GetStakeResponse.stake_linkings:type_name -> datanode.api.v2.StakesConnection - 470, // 287: datanode.api.v2.StakeLinkingEdge.node:type_name -> vega.events.v1.StakeLinking - 270, // 288: datanode.api.v2.StakesConnection.edges:type_name -> datanode.api.v2.StakeLinkingEdge - 7, // 289: datanode.api.v2.StakesConnection.page_info:type_name -> datanode.api.v2.PageInfo - 471, // 290: datanode.api.v2.GetRiskFactorsResponse.risk_factor:type_name -> vega.RiskFactor - 472, // 291: datanode.api.v2.ObserveEventBusRequest.type:type_name -> vega.events.v1.BusEventType - 473, // 292: datanode.api.v2.ObserveEventBusResponse.events:type_name -> vega.events.v1.BusEvent - 474, // 293: datanode.api.v2.ObserveLedgerMovementsResponse.ledger_movement:type_name -> vega.LedgerMovement - 6, // 294: datanode.api.v2.ListKeyRotationsRequest.pagination:type_name -> datanode.api.v2.Pagination - 281, // 295: datanode.api.v2.ListKeyRotationsResponse.rotations:type_name -> datanode.api.v2.KeyRotationConnection - 475, // 296: datanode.api.v2.KeyRotationEdge.node:type_name -> vega.events.v1.KeyRotation - 280, // 297: datanode.api.v2.KeyRotationConnection.edges:type_name -> datanode.api.v2.KeyRotationEdge - 7, // 298: datanode.api.v2.KeyRotationConnection.page_info:type_name -> datanode.api.v2.PageInfo - 6, // 299: datanode.api.v2.ListEthereumKeyRotationsRequest.pagination:type_name -> datanode.api.v2.Pagination - 284, // 300: datanode.api.v2.ListEthereumKeyRotationsResponse.key_rotations:type_name -> datanode.api.v2.EthereumKeyRotationsConnection - 285, // 301: datanode.api.v2.EthereumKeyRotationsConnection.edges:type_name -> datanode.api.v2.EthereumKeyRotationEdge - 7, // 302: datanode.api.v2.EthereumKeyRotationsConnection.page_info:type_name -> datanode.api.v2.PageInfo - 476, // 303: datanode.api.v2.EthereumKeyRotationEdge.node:type_name -> vega.events.v1.EthereumKeyRotation - 477, // 304: datanode.api.v2.ListProtocolUpgradeProposalsRequest.status:type_name -> vega.events.v1.ProtocolUpgradeProposalStatus - 6, // 305: datanode.api.v2.ListProtocolUpgradeProposalsRequest.pagination:type_name -> datanode.api.v2.Pagination - 293, // 306: datanode.api.v2.ListProtocolUpgradeProposalsResponse.protocol_upgrade_proposals:type_name -> datanode.api.v2.ProtocolUpgradeProposalConnection - 294, // 307: datanode.api.v2.ProtocolUpgradeProposalConnection.edges:type_name -> datanode.api.v2.ProtocolUpgradeProposalEdge - 7, // 308: datanode.api.v2.ProtocolUpgradeProposalConnection.page_info:type_name -> datanode.api.v2.PageInfo - 478, // 309: datanode.api.v2.ProtocolUpgradeProposalEdge.node:type_name -> vega.events.v1.ProtocolUpgradeEvent - 6, // 310: datanode.api.v2.ListCoreSnapshotsRequest.pagination:type_name -> datanode.api.v2.Pagination - 297, // 311: datanode.api.v2.ListCoreSnapshotsResponse.core_snapshots:type_name -> datanode.api.v2.CoreSnapshotConnection - 298, // 312: datanode.api.v2.CoreSnapshotConnection.edges:type_name -> datanode.api.v2.CoreSnapshotEdge - 7, // 313: datanode.api.v2.CoreSnapshotConnection.page_info:type_name -> datanode.api.v2.PageInfo - 479, // 314: datanode.api.v2.CoreSnapshotEdge.node:type_name -> vega.events.v1.CoreSnapshotData - 299, // 315: datanode.api.v2.GetMostRecentNetworkHistorySegmentResponse.segment:type_name -> datanode.api.v2.HistorySegment - 299, // 316: datanode.api.v2.ListAllNetworkHistorySegmentsResponse.segments:type_name -> datanode.api.v2.HistorySegment - 3, // 317: datanode.api.v2.ExportNetworkHistoryRequest.table:type_name -> datanode.api.v2.Table - 480, // 318: datanode.api.v2.ListEntitiesResponse.accounts:type_name -> vega.Account - 422, // 319: datanode.api.v2.ListEntitiesResponse.orders:type_name -> vega.Order - 429, // 320: datanode.api.v2.ListEntitiesResponse.positions:type_name -> vega.Position - 481, // 321: datanode.api.v2.ListEntitiesResponse.ledger_entries:type_name -> vega.LedgerEntry - 12, // 322: datanode.api.v2.ListEntitiesResponse.balance_changes:type_name -> datanode.api.v2.AccountBalance - 437, // 323: datanode.api.v2.ListEntitiesResponse.transfers:type_name -> vega.events.v1.Transfer - 440, // 324: datanode.api.v2.ListEntitiesResponse.votes:type_name -> vega.Vote - 113, // 325: datanode.api.v2.ListEntitiesResponse.erc20_multi_sig_signer_added_bundles:type_name -> datanode.api.v2.ERC20MultiSigSignerAddedBundle - 119, // 326: datanode.api.v2.ListEntitiesResponse.erc20_multi_sig_signer_removed_bundles:type_name -> datanode.api.v2.ERC20MultiSigSignerRemovedBundle - 435, // 327: datanode.api.v2.ListEntitiesResponse.trades:type_name -> vega.Trade - 443, // 328: datanode.api.v2.ListEntitiesResponse.oracle_specs:type_name -> vega.OracleSpec - 444, // 329: datanode.api.v2.ListEntitiesResponse.oracle_data:type_name -> vega.OracleData - 445, // 330: datanode.api.v2.ListEntitiesResponse.markets:type_name -> vega.Market - 447, // 331: datanode.api.v2.ListEntitiesResponse.parties:type_name -> vega.Party - 449, // 332: datanode.api.v2.ListEntitiesResponse.margin_levels:type_name -> vega.MarginLevels - 450, // 333: datanode.api.v2.ListEntitiesResponse.rewards:type_name -> vega.Reward - 453, // 334: datanode.api.v2.ListEntitiesResponse.deposits:type_name -> vega.Deposit - 454, // 335: datanode.api.v2.ListEntitiesResponse.withdrawals:type_name -> vega.Withdrawal - 455, // 336: datanode.api.v2.ListEntitiesResponse.assets:type_name -> vega.Asset - 456, // 337: datanode.api.v2.ListEntitiesResponse.liquidity_provisions:type_name -> vega.LiquidityProvision - 482, // 338: datanode.api.v2.ListEntitiesResponse.proposals:type_name -> vega.Proposal - 461, // 339: datanode.api.v2.ListEntitiesResponse.delegations:type_name -> vega.Delegation - 238, // 340: datanode.api.v2.ListEntitiesResponse.nodes:type_name -> datanode.api.v2.NodeBasic - 465, // 341: datanode.api.v2.ListEntitiesResponse.node_signatures:type_name -> vega.commands.v1.NodeSignature - 469, // 342: datanode.api.v2.ListEntitiesResponse.network_parameters:type_name -> vega.NetworkParameter - 475, // 343: datanode.api.v2.ListEntitiesResponse.key_rotations:type_name -> vega.events.v1.KeyRotation - 476, // 344: datanode.api.v2.ListEntitiesResponse.ethereum_key_rotations:type_name -> vega.events.v1.EthereumKeyRotation - 478, // 345: datanode.api.v2.ListEntitiesResponse.protocol_upgrade_proposals:type_name -> vega.events.v1.ProtocolUpgradeEvent - 483, // 346: datanode.api.v2.GetPartyActivityStreakResponse.activity_streak:type_name -> vega.events.v1.PartyActivityStreak - 6, // 347: datanode.api.v2.ListFundingPaymentsRequest.pagination:type_name -> datanode.api.v2.Pagination - 315, // 348: datanode.api.v2.FundingPaymentEdge.node:type_name -> datanode.api.v2.FundingPayment - 317, // 349: datanode.api.v2.FundingPaymentConnection.edges:type_name -> datanode.api.v2.FundingPaymentEdge - 7, // 350: datanode.api.v2.FundingPaymentConnection.page_info:type_name -> datanode.api.v2.PageInfo - 318, // 351: datanode.api.v2.ListFundingPaymentsResponse.funding_payments:type_name -> datanode.api.v2.FundingPaymentConnection - 288, // 352: datanode.api.v2.ListFundingPeriodsRequest.date_range:type_name -> datanode.api.v2.DateRange - 6, // 353: datanode.api.v2.ListFundingPeriodsRequest.pagination:type_name -> datanode.api.v2.Pagination - 484, // 354: datanode.api.v2.FundingPeriodEdge.node:type_name -> vega.events.v1.FundingPeriod - 321, // 355: datanode.api.v2.FundingPeriodConnection.edges:type_name -> datanode.api.v2.FundingPeriodEdge - 7, // 356: datanode.api.v2.FundingPeriodConnection.page_info:type_name -> datanode.api.v2.PageInfo - 322, // 357: datanode.api.v2.ListFundingPeriodsResponse.funding_periods:type_name -> datanode.api.v2.FundingPeriodConnection - 288, // 358: datanode.api.v2.ListFundingPeriodDataPointsRequest.date_range:type_name -> datanode.api.v2.DateRange - 485, // 359: datanode.api.v2.ListFundingPeriodDataPointsRequest.source:type_name -> vega.events.v1.FundingPeriodDataPoint.Source - 6, // 360: datanode.api.v2.ListFundingPeriodDataPointsRequest.pagination:type_name -> datanode.api.v2.Pagination - 486, // 361: datanode.api.v2.FundingPeriodDataPointEdge.node:type_name -> vega.events.v1.FundingPeriodDataPoint - 325, // 362: datanode.api.v2.FundingPeriodDataPointConnection.edges:type_name -> datanode.api.v2.FundingPeriodDataPointEdge - 7, // 363: datanode.api.v2.FundingPeriodDataPointConnection.page_info:type_name -> datanode.api.v2.PageInfo - 326, // 364: datanode.api.v2.ListFundingPeriodDataPointsResponse.funding_period_data_points:type_name -> datanode.api.v2.FundingPeriodDataPointConnection - 468, // 365: datanode.api.v2.OrderInfo.side:type_name -> vega.Side - 330, // 366: datanode.api.v2.EstimatePositionRequest.orders:type_name -> datanode.api.v2.OrderInfo - 487, // 367: datanode.api.v2.EstimatePositionRequest.margin_mode:type_name -> vega.MarginMode - 334, // 368: datanode.api.v2.EstimatePositionResponse.margin:type_name -> datanode.api.v2.MarginEstimate - 333, // 369: datanode.api.v2.EstimatePositionResponse.collateral_increase_estimate:type_name -> datanode.api.v2.CollateralIncreaseEstimate - 335, // 370: datanode.api.v2.EstimatePositionResponse.liquidation:type_name -> datanode.api.v2.LiquidationEstimate - 449, // 371: datanode.api.v2.MarginEstimate.worst_case:type_name -> vega.MarginLevels - 449, // 372: datanode.api.v2.MarginEstimate.best_case:type_name -> vega.MarginLevels - 336, // 373: datanode.api.v2.LiquidationEstimate.worst_case:type_name -> datanode.api.v2.LiquidationPrice - 336, // 374: datanode.api.v2.LiquidationEstimate.best_case:type_name -> datanode.api.v2.LiquidationPrice - 339, // 375: datanode.api.v2.GetCurrentReferralProgramResponse.current_referral_program:type_name -> datanode.api.v2.ReferralProgram - 488, // 376: datanode.api.v2.ReferralProgram.benefit_tiers:type_name -> vega.BenefitTier - 489, // 377: datanode.api.v2.ReferralProgram.staking_tiers:type_name -> vega.StakingTier - 340, // 378: datanode.api.v2.ReferralSetEdge.node:type_name -> datanode.api.v2.ReferralSet - 341, // 379: datanode.api.v2.ReferralSetConnection.edges:type_name -> datanode.api.v2.ReferralSetEdge - 7, // 380: datanode.api.v2.ReferralSetConnection.page_info:type_name -> datanode.api.v2.PageInfo - 6, // 381: datanode.api.v2.ListReferralSetsRequest.pagination:type_name -> datanode.api.v2.Pagination - 342, // 382: datanode.api.v2.ListReferralSetsResponse.referral_sets:type_name -> datanode.api.v2.ReferralSetConnection - 345, // 383: datanode.api.v2.ReferralSetRefereeEdge.node:type_name -> datanode.api.v2.ReferralSetReferee - 346, // 384: datanode.api.v2.ReferralSetRefereeConnection.edges:type_name -> datanode.api.v2.ReferralSetRefereeEdge - 7, // 385: datanode.api.v2.ReferralSetRefereeConnection.page_info:type_name -> datanode.api.v2.PageInfo - 6, // 386: datanode.api.v2.ListReferralSetRefereesRequest.pagination:type_name -> datanode.api.v2.Pagination - 347, // 387: datanode.api.v2.ListReferralSetRefereesResponse.referral_set_referees:type_name -> datanode.api.v2.ReferralSetRefereeConnection - 6, // 388: datanode.api.v2.GetReferralSetStatsRequest.pagination:type_name -> datanode.api.v2.Pagination - 352, // 389: datanode.api.v2.GetReferralSetStatsResponse.stats:type_name -> datanode.api.v2.ReferralSetStatsConnection - 353, // 390: datanode.api.v2.ReferralSetStatsConnection.edges:type_name -> datanode.api.v2.ReferralSetStatsEdge - 7, // 391: datanode.api.v2.ReferralSetStatsConnection.page_info:type_name -> datanode.api.v2.PageInfo - 354, // 392: datanode.api.v2.ReferralSetStatsEdge.node:type_name -> datanode.api.v2.ReferralSetStats - 355, // 393: datanode.api.v2.TeamEdge.node:type_name -> datanode.api.v2.Team - 356, // 394: datanode.api.v2.TeamConnection.edges:type_name -> datanode.api.v2.TeamEdge - 7, // 395: datanode.api.v2.TeamConnection.page_info:type_name -> datanode.api.v2.PageInfo - 6, // 396: datanode.api.v2.ListTeamsRequest.pagination:type_name -> datanode.api.v2.Pagination - 357, // 397: datanode.api.v2.ListTeamsResponse.teams:type_name -> datanode.api.v2.TeamConnection - 6, // 398: datanode.api.v2.ListTeamsStatisticsRequest.pagination:type_name -> datanode.api.v2.Pagination - 362, // 399: datanode.api.v2.ListTeamsStatisticsResponse.statistics:type_name -> datanode.api.v2.TeamsStatisticsConnection - 363, // 400: datanode.api.v2.TeamsStatisticsConnection.edges:type_name -> datanode.api.v2.TeamStatisticsEdge - 7, // 401: datanode.api.v2.TeamsStatisticsConnection.page_info:type_name -> datanode.api.v2.PageInfo - 364, // 402: datanode.api.v2.TeamStatisticsEdge.node:type_name -> datanode.api.v2.TeamStatistics - 365, // 403: datanode.api.v2.TeamStatistics.quantum_rewards:type_name -> datanode.api.v2.QuantumRewardsPerEpoch - 366, // 404: datanode.api.v2.TeamStatistics.quantum_volumes:type_name -> datanode.api.v2.QuantumVolumesPerEpoch - 6, // 405: datanode.api.v2.ListTeamMembersStatisticsRequest.pagination:type_name -> datanode.api.v2.Pagination - 369, // 406: datanode.api.v2.ListTeamMembersStatisticsResponse.statistics:type_name -> datanode.api.v2.TeamMembersStatisticsConnection - 370, // 407: datanode.api.v2.TeamMembersStatisticsConnection.edges:type_name -> datanode.api.v2.TeamMemberStatisticsEdge - 7, // 408: datanode.api.v2.TeamMembersStatisticsConnection.page_info:type_name -> datanode.api.v2.PageInfo - 371, // 409: datanode.api.v2.TeamMemberStatisticsEdge.node:type_name -> datanode.api.v2.TeamMemberStatistics - 365, // 410: datanode.api.v2.TeamMemberStatistics.quantum_rewards:type_name -> datanode.api.v2.QuantumRewardsPerEpoch - 366, // 411: datanode.api.v2.TeamMemberStatistics.quantum_volumes:type_name -> datanode.api.v2.QuantumVolumesPerEpoch - 6, // 412: datanode.api.v2.ListTeamRefereesRequest.pagination:type_name -> datanode.api.v2.Pagination - 373, // 413: datanode.api.v2.TeamRefereeEdge.node:type_name -> datanode.api.v2.TeamReferee - 374, // 414: datanode.api.v2.TeamRefereeConnection.edges:type_name -> datanode.api.v2.TeamRefereeEdge - 7, // 415: datanode.api.v2.TeamRefereeConnection.page_info:type_name -> datanode.api.v2.PageInfo - 375, // 416: datanode.api.v2.ListTeamRefereesResponse.team_referees:type_name -> datanode.api.v2.TeamRefereeConnection - 377, // 417: datanode.api.v2.TeamRefereeHistoryEdge.node:type_name -> datanode.api.v2.TeamRefereeHistory - 378, // 418: datanode.api.v2.TeamRefereeHistoryConnection.edges:type_name -> datanode.api.v2.TeamRefereeHistoryEdge - 7, // 419: datanode.api.v2.TeamRefereeHistoryConnection.page_info:type_name -> datanode.api.v2.PageInfo - 6, // 420: datanode.api.v2.ListTeamRefereeHistoryRequest.pagination:type_name -> datanode.api.v2.Pagination - 379, // 421: datanode.api.v2.ListTeamRefereeHistoryResponse.team_referee_history:type_name -> datanode.api.v2.TeamRefereeHistoryConnection - 490, // 422: datanode.api.v2.GetFeesStatsResponse.fees_stats:type_name -> vega.events.v1.FeesStats - 394, // 423: datanode.api.v2.GetFeesStatsForPartyResponse.fees_stats_for_party:type_name -> datanode.api.v2.FeesStatsForParty - 393, // 424: datanode.api.v2.GetCurrentVolumeDiscountProgramResponse.current_volume_discount_program:type_name -> datanode.api.v2.VolumeDiscountProgram - 6, // 425: datanode.api.v2.GetVolumeDiscountStatsRequest.pagination:type_name -> datanode.api.v2.Pagination - 390, // 426: datanode.api.v2.GetVolumeDiscountStatsResponse.stats:type_name -> datanode.api.v2.VolumeDiscountStatsConnection - 391, // 427: datanode.api.v2.VolumeDiscountStatsConnection.edges:type_name -> datanode.api.v2.VolumeDiscountStatsEdge - 7, // 428: datanode.api.v2.VolumeDiscountStatsConnection.page_info:type_name -> datanode.api.v2.PageInfo - 392, // 429: datanode.api.v2.VolumeDiscountStatsEdge.node:type_name -> datanode.api.v2.VolumeDiscountStats - 491, // 430: datanode.api.v2.VolumeDiscountProgram.benefit_tiers:type_name -> vega.VolumeBenefitTier - 492, // 431: datanode.api.v2.ObserveTransactionResultsResponse.transaction_results:type_name -> vega.events.v1.TransactionResult - 421, // 432: datanode.api.v2.EstimateTransferFeeRequest.from_account_type:type_name -> vega.AccountType - 493, // 433: datanode.api.v2.ListGamesRequest.entity_scope:type_name -> vega.EntityScope - 6, // 434: datanode.api.v2.ListGamesRequest.pagination:type_name -> datanode.api.v2.Pagination - 403, // 435: datanode.api.v2.ListGamesResponse.games:type_name -> datanode.api.v2.GamesConnection - 404, // 436: datanode.api.v2.GamesConnection.edges:type_name -> datanode.api.v2.GameEdge - 7, // 437: datanode.api.v2.GamesConnection.page_info:type_name -> datanode.api.v2.PageInfo - 405, // 438: datanode.api.v2.GameEdge.node:type_name -> datanode.api.v2.Game - 406, // 439: datanode.api.v2.Game.team:type_name -> datanode.api.v2.TeamGameEntities - 407, // 440: datanode.api.v2.Game.individual:type_name -> datanode.api.v2.IndividualGameEntities - 408, // 441: datanode.api.v2.TeamGameEntities.team:type_name -> datanode.api.v2.TeamGameEntity - 410, // 442: datanode.api.v2.IndividualGameEntities.individual:type_name -> datanode.api.v2.IndividualGameEntity - 409, // 443: datanode.api.v2.TeamGameEntity.team:type_name -> datanode.api.v2.TeamGameParticipation - 494, // 444: datanode.api.v2.TeamGameEntity.reward_metric:type_name -> vega.DispatchMetric - 410, // 445: datanode.api.v2.TeamGameParticipation.members_participating:type_name -> datanode.api.v2.IndividualGameEntity - 494, // 446: datanode.api.v2.IndividualGameEntity.reward_metric:type_name -> vega.DispatchMetric - 6, // 447: datanode.api.v2.ListPartyMarginModesRequest.pagination:type_name -> datanode.api.v2.Pagination - 413, // 448: datanode.api.v2.ListPartyMarginModesResponse.party_margin_modes:type_name -> datanode.api.v2.PartyMarginModesConnection - 414, // 449: datanode.api.v2.PartyMarginModesConnection.edges:type_name -> datanode.api.v2.PartyMarginModeEdge - 7, // 450: datanode.api.v2.PartyMarginModesConnection.page_info:type_name -> datanode.api.v2.PageInfo - 415, // 451: datanode.api.v2.PartyMarginModeEdge.node:type_name -> datanode.api.v2.PartyMarginMode - 487, // 452: datanode.api.v2.PartyMarginMode.margin_mode:type_name -> vega.MarginMode - 416, // 453: datanode.api.v2.GetTimeWeightedNotionalPositionResponse.time_weighted_notional_position:type_name -> datanode.api.v2.TimeWeightedNotionalPosition - 13, // 454: datanode.api.v2.TradingDataService.ListAccounts:input_type -> datanode.api.v2.ListAccountsRequest - 17, // 455: datanode.api.v2.TradingDataService.ObserveAccounts:input_type -> datanode.api.v2.ObserveAccountsRequest - 21, // 456: datanode.api.v2.TradingDataService.Info:input_type -> datanode.api.v2.InfoRequest - 23, // 457: datanode.api.v2.TradingDataService.GetOrder:input_type -> datanode.api.v2.GetOrderRequest - 26, // 458: datanode.api.v2.TradingDataService.ListOrders:input_type -> datanode.api.v2.ListOrdersRequest - 28, // 459: datanode.api.v2.TradingDataService.ListOrderVersions:input_type -> datanode.api.v2.ListOrderVersionsRequest - 30, // 460: datanode.api.v2.TradingDataService.ObserveOrders:input_type -> datanode.api.v2.ObserveOrdersRequest - 34, // 461: datanode.api.v2.TradingDataService.GetStopOrder:input_type -> datanode.api.v2.GetStopOrderRequest - 36, // 462: datanode.api.v2.TradingDataService.ListStopOrders:input_type -> datanode.api.v2.ListStopOrdersRequest - 41, // 463: datanode.api.v2.TradingDataService.ListPositions:input_type -> datanode.api.v2.ListPositionsRequest - 44, // 464: datanode.api.v2.TradingDataService.ListAllPositions:input_type -> datanode.api.v2.ListAllPositionsRequest - 48, // 465: datanode.api.v2.TradingDataService.ObservePositions:input_type -> datanode.api.v2.ObservePositionsRequest - 54, // 466: datanode.api.v2.TradingDataService.ListLedgerEntries:input_type -> datanode.api.v2.ListLedgerEntriesRequest - 55, // 467: datanode.api.v2.TradingDataService.ExportLedgerEntries:input_type -> datanode.api.v2.ExportLedgerEntriesRequest - 59, // 468: datanode.api.v2.TradingDataService.ListBalanceChanges:input_type -> datanode.api.v2.ListBalanceChangesRequest - 77, // 469: datanode.api.v2.TradingDataService.GetLatestMarketData:input_type -> datanode.api.v2.GetLatestMarketDataRequest - 75, // 470: datanode.api.v2.TradingDataService.ListLatestMarketData:input_type -> datanode.api.v2.ListLatestMarketDataRequest - 73, // 471: datanode.api.v2.TradingDataService.GetLatestMarketDepth:input_type -> datanode.api.v2.GetLatestMarketDepthRequest - 67, // 472: datanode.api.v2.TradingDataService.ObserveMarketsDepth:input_type -> datanode.api.v2.ObserveMarketsDepthRequest - 69, // 473: datanode.api.v2.TradingDataService.ObserveMarketsDepthUpdates:input_type -> datanode.api.v2.ObserveMarketsDepthUpdatesRequest - 71, // 474: datanode.api.v2.TradingDataService.ObserveMarketsData:input_type -> datanode.api.v2.ObserveMarketsDataRequest - 79, // 475: datanode.api.v2.TradingDataService.GetMarketDataHistoryByID:input_type -> datanode.api.v2.GetMarketDataHistoryByIDRequest - 83, // 476: datanode.api.v2.TradingDataService.ListTransfers:input_type -> datanode.api.v2.ListTransfersRequest - 88, // 477: datanode.api.v2.TradingDataService.GetTransfer:input_type -> datanode.api.v2.GetTransferRequest - 90, // 478: datanode.api.v2.TradingDataService.GetNetworkLimits:input_type -> datanode.api.v2.GetNetworkLimitsRequest - 98, // 479: datanode.api.v2.TradingDataService.ListCandleData:input_type -> datanode.api.v2.ListCandleDataRequest - 96, // 480: datanode.api.v2.TradingDataService.ObserveCandleData:input_type -> datanode.api.v2.ObserveCandleDataRequest - 92, // 481: datanode.api.v2.TradingDataService.ListCandleIntervals:input_type -> datanode.api.v2.ListCandleIntervalsRequest - 102, // 482: datanode.api.v2.TradingDataService.ListVotes:input_type -> datanode.api.v2.ListVotesRequest - 106, // 483: datanode.api.v2.TradingDataService.ObserveVotes:input_type -> datanode.api.v2.ObserveVotesRequest - 108, // 484: datanode.api.v2.TradingDataService.ListERC20MultiSigSignerAddedBundles:input_type -> datanode.api.v2.ListERC20MultiSigSignerAddedBundlesRequest - 114, // 485: datanode.api.v2.TradingDataService.ListERC20MultiSigSignerRemovedBundles:input_type -> datanode.api.v2.ListERC20MultiSigSignerRemovedBundlesRequest - 120, // 486: datanode.api.v2.TradingDataService.GetERC20ListAssetBundle:input_type -> datanode.api.v2.GetERC20ListAssetBundleRequest - 122, // 487: datanode.api.v2.TradingDataService.GetERC20SetAssetLimitsBundle:input_type -> datanode.api.v2.GetERC20SetAssetLimitsBundleRequest - 124, // 488: datanode.api.v2.TradingDataService.GetERC20WithdrawalApproval:input_type -> datanode.api.v2.GetERC20WithdrawalApprovalRequest - 126, // 489: datanode.api.v2.TradingDataService.GetLastTrade:input_type -> datanode.api.v2.GetLastTradeRequest - 128, // 490: datanode.api.v2.TradingDataService.ListTrades:input_type -> datanode.api.v2.ListTradesRequest - 132, // 491: datanode.api.v2.TradingDataService.ObserveTrades:input_type -> datanode.api.v2.ObserveTradesRequest - 134, // 492: datanode.api.v2.TradingDataService.GetOracleSpec:input_type -> datanode.api.v2.GetOracleSpecRequest - 136, // 493: datanode.api.v2.TradingDataService.ListOracleSpecs:input_type -> datanode.api.v2.ListOracleSpecsRequest - 138, // 494: datanode.api.v2.TradingDataService.ListOracleData:input_type -> datanode.api.v2.ListOracleDataRequest - 144, // 495: datanode.api.v2.TradingDataService.GetMarket:input_type -> datanode.api.v2.GetMarketRequest - 146, // 496: datanode.api.v2.TradingDataService.ListMarkets:input_type -> datanode.api.v2.ListMarketsRequest - 150, // 497: datanode.api.v2.TradingDataService.ListSuccessorMarkets:input_type -> datanode.api.v2.ListSuccessorMarketsRequest - 155, // 498: datanode.api.v2.TradingDataService.GetParty:input_type -> datanode.api.v2.GetPartyRequest - 157, // 499: datanode.api.v2.TradingDataService.ListParties:input_type -> datanode.api.v2.ListPartiesRequest - 161, // 500: datanode.api.v2.TradingDataService.ListPartiesProfiles:input_type -> datanode.api.v2.ListPartiesProfilesRequest - 166, // 501: datanode.api.v2.TradingDataService.ListMarginLevels:input_type -> datanode.api.v2.ListMarginLevelsRequest - 168, // 502: datanode.api.v2.TradingDataService.ObserveMarginLevels:input_type -> datanode.api.v2.ObserveMarginLevelsRequest - 173, // 503: datanode.api.v2.TradingDataService.ListRewards:input_type -> datanode.api.v2.ListRewardsRequest - 177, // 504: datanode.api.v2.TradingDataService.ListRewardSummaries:input_type -> datanode.api.v2.ListRewardSummariesRequest - 180, // 505: datanode.api.v2.TradingDataService.ListEpochRewardSummaries:input_type -> datanode.api.v2.ListEpochRewardSummariesRequest - 186, // 506: datanode.api.v2.TradingDataService.GetDeposit:input_type -> datanode.api.v2.GetDepositRequest - 188, // 507: datanode.api.v2.TradingDataService.ListDeposits:input_type -> datanode.api.v2.ListDepositsRequest - 192, // 508: datanode.api.v2.TradingDataService.GetWithdrawal:input_type -> datanode.api.v2.GetWithdrawalRequest - 194, // 509: datanode.api.v2.TradingDataService.ListWithdrawals:input_type -> datanode.api.v2.ListWithdrawalsRequest - 198, // 510: datanode.api.v2.TradingDataService.GetAsset:input_type -> datanode.api.v2.GetAssetRequest - 200, // 511: datanode.api.v2.TradingDataService.ListAssets:input_type -> datanode.api.v2.ListAssetsRequest - 204, // 512: datanode.api.v2.TradingDataService.ListLiquidityProvisions:input_type -> datanode.api.v2.ListLiquidityProvisionsRequest - 205, // 513: datanode.api.v2.TradingDataService.ListAllLiquidityProvisions:input_type -> datanode.api.v2.ListAllLiquidityProvisionsRequest - 213, // 514: datanode.api.v2.TradingDataService.ObserveLiquidityProvisions:input_type -> datanode.api.v2.ObserveLiquidityProvisionsRequest - 215, // 515: datanode.api.v2.TradingDataService.ListLiquidityProviders:input_type -> datanode.api.v2.ListLiquidityProvidersRequest - 220, // 516: datanode.api.v2.TradingDataService.ListPaidLiquidityFees:input_type -> datanode.api.v2.ListPaidLiquidityFeesRequest - 224, // 517: datanode.api.v2.TradingDataService.GetGovernanceData:input_type -> datanode.api.v2.GetGovernanceDataRequest - 226, // 518: datanode.api.v2.TradingDataService.ListGovernanceData:input_type -> datanode.api.v2.ListGovernanceDataRequest - 230, // 519: datanode.api.v2.TradingDataService.ObserveGovernance:input_type -> datanode.api.v2.ObserveGovernanceRequest - 232, // 520: datanode.api.v2.TradingDataService.ListDelegations:input_type -> datanode.api.v2.ListDelegationsRequest - 239, // 521: datanode.api.v2.TradingDataService.GetNetworkData:input_type -> datanode.api.v2.GetNetworkDataRequest - 241, // 522: datanode.api.v2.TradingDataService.GetNode:input_type -> datanode.api.v2.GetNodeRequest - 243, // 523: datanode.api.v2.TradingDataService.ListNodes:input_type -> datanode.api.v2.ListNodesRequest - 247, // 524: datanode.api.v2.TradingDataService.ListNodeSignatures:input_type -> datanode.api.v2.ListNodeSignaturesRequest - 251, // 525: datanode.api.v2.TradingDataService.GetEpoch:input_type -> datanode.api.v2.GetEpochRequest - 253, // 526: datanode.api.v2.TradingDataService.EstimateFee:input_type -> datanode.api.v2.EstimateFeeRequest - 255, // 527: datanode.api.v2.TradingDataService.EstimateMargin:input_type -> datanode.api.v2.EstimateMarginRequest - 331, // 528: datanode.api.v2.TradingDataService.EstimatePosition:input_type -> datanode.api.v2.EstimatePositionRequest - 257, // 529: datanode.api.v2.TradingDataService.ListNetworkParameters:input_type -> datanode.api.v2.ListNetworkParametersRequest - 259, // 530: datanode.api.v2.TradingDataService.GetNetworkParameter:input_type -> datanode.api.v2.GetNetworkParameterRequest - 264, // 531: datanode.api.v2.TradingDataService.ListCheckpoints:input_type -> datanode.api.v2.ListCheckpointsRequest - 268, // 532: datanode.api.v2.TradingDataService.GetStake:input_type -> datanode.api.v2.GetStakeRequest - 272, // 533: datanode.api.v2.TradingDataService.GetRiskFactors:input_type -> datanode.api.v2.GetRiskFactorsRequest - 274, // 534: datanode.api.v2.TradingDataService.ObserveEventBus:input_type -> datanode.api.v2.ObserveEventBusRequest - 276, // 535: datanode.api.v2.TradingDataService.ObserveLedgerMovements:input_type -> datanode.api.v2.ObserveLedgerMovementsRequest - 278, // 536: datanode.api.v2.TradingDataService.ListKeyRotations:input_type -> datanode.api.v2.ListKeyRotationsRequest - 282, // 537: datanode.api.v2.TradingDataService.ListEthereumKeyRotations:input_type -> datanode.api.v2.ListEthereumKeyRotationsRequest - 286, // 538: datanode.api.v2.TradingDataService.GetVegaTime:input_type -> datanode.api.v2.GetVegaTimeRequest - 289, // 539: datanode.api.v2.TradingDataService.GetProtocolUpgradeStatus:input_type -> datanode.api.v2.GetProtocolUpgradeStatusRequest - 291, // 540: datanode.api.v2.TradingDataService.ListProtocolUpgradeProposals:input_type -> datanode.api.v2.ListProtocolUpgradeProposalsRequest - 295, // 541: datanode.api.v2.TradingDataService.ListCoreSnapshots:input_type -> datanode.api.v2.ListCoreSnapshotsRequest - 300, // 542: datanode.api.v2.TradingDataService.GetMostRecentNetworkHistorySegment:input_type -> datanode.api.v2.GetMostRecentNetworkHistorySegmentRequest - 302, // 543: datanode.api.v2.TradingDataService.ListAllNetworkHistorySegments:input_type -> datanode.api.v2.ListAllNetworkHistorySegmentsRequest - 304, // 544: datanode.api.v2.TradingDataService.GetActiveNetworkHistoryPeerAddresses:input_type -> datanode.api.v2.GetActiveNetworkHistoryPeerAddressesRequest - 306, // 545: datanode.api.v2.TradingDataService.GetNetworkHistoryStatus:input_type -> datanode.api.v2.GetNetworkHistoryStatusRequest - 308, // 546: datanode.api.v2.TradingDataService.GetNetworkHistoryBootstrapPeers:input_type -> datanode.api.v2.GetNetworkHistoryBootstrapPeersRequest - 311, // 547: datanode.api.v2.TradingDataService.ListEntities:input_type -> datanode.api.v2.ListEntitiesRequest - 320, // 548: datanode.api.v2.TradingDataService.ListFundingPeriods:input_type -> datanode.api.v2.ListFundingPeriodsRequest - 324, // 549: datanode.api.v2.TradingDataService.ListFundingPeriodDataPoints:input_type -> datanode.api.v2.ListFundingPeriodDataPointsRequest - 316, // 550: datanode.api.v2.TradingDataService.ListFundingPayments:input_type -> datanode.api.v2.ListFundingPaymentsRequest - 313, // 551: datanode.api.v2.TradingDataService.GetPartyActivityStreak:input_type -> datanode.api.v2.GetPartyActivityStreakRequest - 337, // 552: datanode.api.v2.TradingDataService.GetCurrentReferralProgram:input_type -> datanode.api.v2.GetCurrentReferralProgramRequest - 343, // 553: datanode.api.v2.TradingDataService.ListReferralSets:input_type -> datanode.api.v2.ListReferralSetsRequest - 348, // 554: datanode.api.v2.TradingDataService.ListReferralSetReferees:input_type -> datanode.api.v2.ListReferralSetRefereesRequest - 350, // 555: datanode.api.v2.TradingDataService.GetReferralSetStats:input_type -> datanode.api.v2.GetReferralSetStatsRequest - 358, // 556: datanode.api.v2.TradingDataService.ListTeams:input_type -> datanode.api.v2.ListTeamsRequest - 360, // 557: datanode.api.v2.TradingDataService.ListTeamsStatistics:input_type -> datanode.api.v2.ListTeamsStatisticsRequest - 367, // 558: datanode.api.v2.TradingDataService.ListTeamMembersStatistics:input_type -> datanode.api.v2.ListTeamMembersStatisticsRequest - 372, // 559: datanode.api.v2.TradingDataService.ListTeamReferees:input_type -> datanode.api.v2.ListTeamRefereesRequest - 380, // 560: datanode.api.v2.TradingDataService.ListTeamRefereeHistory:input_type -> datanode.api.v2.ListTeamRefereeHistoryRequest - 382, // 561: datanode.api.v2.TradingDataService.GetFeesStats:input_type -> datanode.api.v2.GetFeesStatsRequest - 384, // 562: datanode.api.v2.TradingDataService.GetFeesStatsForParty:input_type -> datanode.api.v2.GetFeesStatsForPartyRequest - 386, // 563: datanode.api.v2.TradingDataService.GetCurrentVolumeDiscountProgram:input_type -> datanode.api.v2.GetCurrentVolumeDiscountProgramRequest - 388, // 564: datanode.api.v2.TradingDataService.GetVolumeDiscountStats:input_type -> datanode.api.v2.GetVolumeDiscountStatsRequest - 10, // 565: datanode.api.v2.TradingDataService.GetVestingBalancesSummary:input_type -> datanode.api.v2.GetVestingBalancesSummaryRequest - 8, // 566: datanode.api.v2.TradingDataService.GetPartyVestingStats:input_type -> datanode.api.v2.GetPartyVestingStatsRequest - 395, // 567: datanode.api.v2.TradingDataService.ObserveTransactionResults:input_type -> datanode.api.v2.ObserveTransactionResultsRequest - 397, // 568: datanode.api.v2.TradingDataService.EstimateTransferFee:input_type -> datanode.api.v2.EstimateTransferFeeRequest - 399, // 569: datanode.api.v2.TradingDataService.GetTotalTransferFeeDiscount:input_type -> datanode.api.v2.GetTotalTransferFeeDiscountRequest - 401, // 570: datanode.api.v2.TradingDataService.ListGames:input_type -> datanode.api.v2.ListGamesRequest - 411, // 571: datanode.api.v2.TradingDataService.ListPartyMarginModes:input_type -> datanode.api.v2.ListPartyMarginModesRequest - 417, // 572: datanode.api.v2.TradingDataService.GetTimeWeightedNotionalPosition:input_type -> datanode.api.v2.GetTimeWeightedNotionalPositionRequest - 310, // 573: datanode.api.v2.TradingDataService.ExportNetworkHistory:input_type -> datanode.api.v2.ExportNetworkHistoryRequest - 328, // 574: datanode.api.v2.TradingDataService.Ping:input_type -> datanode.api.v2.PingRequest - 14, // 575: datanode.api.v2.TradingDataService.ListAccounts:output_type -> datanode.api.v2.ListAccountsResponse - 18, // 576: datanode.api.v2.TradingDataService.ObserveAccounts:output_type -> datanode.api.v2.ObserveAccountsResponse - 22, // 577: datanode.api.v2.TradingDataService.Info:output_type -> datanode.api.v2.InfoResponse - 24, // 578: datanode.api.v2.TradingDataService.GetOrder:output_type -> datanode.api.v2.GetOrderResponse - 27, // 579: datanode.api.v2.TradingDataService.ListOrders:output_type -> datanode.api.v2.ListOrdersResponse - 29, // 580: datanode.api.v2.TradingDataService.ListOrderVersions:output_type -> datanode.api.v2.ListOrderVersionsResponse - 31, // 581: datanode.api.v2.TradingDataService.ObserveOrders:output_type -> datanode.api.v2.ObserveOrdersResponse - 35, // 582: datanode.api.v2.TradingDataService.GetStopOrder:output_type -> datanode.api.v2.GetStopOrderResponse - 40, // 583: datanode.api.v2.TradingDataService.ListStopOrders:output_type -> datanode.api.v2.ListStopOrdersResponse - 42, // 584: datanode.api.v2.TradingDataService.ListPositions:output_type -> datanode.api.v2.ListPositionsResponse - 45, // 585: datanode.api.v2.TradingDataService.ListAllPositions:output_type -> datanode.api.v2.ListAllPositionsResponse - 49, // 586: datanode.api.v2.TradingDataService.ObservePositions:output_type -> datanode.api.v2.ObservePositionsResponse - 56, // 587: datanode.api.v2.TradingDataService.ListLedgerEntries:output_type -> datanode.api.v2.ListLedgerEntriesResponse - 495, // 588: datanode.api.v2.TradingDataService.ExportLedgerEntries:output_type -> google.api.HttpBody - 60, // 589: datanode.api.v2.TradingDataService.ListBalanceChanges:output_type -> datanode.api.v2.ListBalanceChangesResponse - 78, // 590: datanode.api.v2.TradingDataService.GetLatestMarketData:output_type -> datanode.api.v2.GetLatestMarketDataResponse - 76, // 591: datanode.api.v2.TradingDataService.ListLatestMarketData:output_type -> datanode.api.v2.ListLatestMarketDataResponse - 74, // 592: datanode.api.v2.TradingDataService.GetLatestMarketDepth:output_type -> datanode.api.v2.GetLatestMarketDepthResponse - 68, // 593: datanode.api.v2.TradingDataService.ObserveMarketsDepth:output_type -> datanode.api.v2.ObserveMarketsDepthResponse - 70, // 594: datanode.api.v2.TradingDataService.ObserveMarketsDepthUpdates:output_type -> datanode.api.v2.ObserveMarketsDepthUpdatesResponse - 72, // 595: datanode.api.v2.TradingDataService.ObserveMarketsData:output_type -> datanode.api.v2.ObserveMarketsDataResponse - 80, // 596: datanode.api.v2.TradingDataService.GetMarketDataHistoryByID:output_type -> datanode.api.v2.GetMarketDataHistoryByIDResponse - 84, // 597: datanode.api.v2.TradingDataService.ListTransfers:output_type -> datanode.api.v2.ListTransfersResponse - 89, // 598: datanode.api.v2.TradingDataService.GetTransfer:output_type -> datanode.api.v2.GetTransferResponse - 91, // 599: datanode.api.v2.TradingDataService.GetNetworkLimits:output_type -> datanode.api.v2.GetNetworkLimitsResponse - 99, // 600: datanode.api.v2.TradingDataService.ListCandleData:output_type -> datanode.api.v2.ListCandleDataResponse - 97, // 601: datanode.api.v2.TradingDataService.ObserveCandleData:output_type -> datanode.api.v2.ObserveCandleDataResponse - 94, // 602: datanode.api.v2.TradingDataService.ListCandleIntervals:output_type -> datanode.api.v2.ListCandleIntervalsResponse - 103, // 603: datanode.api.v2.TradingDataService.ListVotes:output_type -> datanode.api.v2.ListVotesResponse - 107, // 604: datanode.api.v2.TradingDataService.ObserveVotes:output_type -> datanode.api.v2.ObserveVotesResponse - 109, // 605: datanode.api.v2.TradingDataService.ListERC20MultiSigSignerAddedBundles:output_type -> datanode.api.v2.ListERC20MultiSigSignerAddedBundlesResponse - 115, // 606: datanode.api.v2.TradingDataService.ListERC20MultiSigSignerRemovedBundles:output_type -> datanode.api.v2.ListERC20MultiSigSignerRemovedBundlesResponse - 121, // 607: datanode.api.v2.TradingDataService.GetERC20ListAssetBundle:output_type -> datanode.api.v2.GetERC20ListAssetBundleResponse - 123, // 608: datanode.api.v2.TradingDataService.GetERC20SetAssetLimitsBundle:output_type -> datanode.api.v2.GetERC20SetAssetLimitsBundleResponse - 125, // 609: datanode.api.v2.TradingDataService.GetERC20WithdrawalApproval:output_type -> datanode.api.v2.GetERC20WithdrawalApprovalResponse - 127, // 610: datanode.api.v2.TradingDataService.GetLastTrade:output_type -> datanode.api.v2.GetLastTradeResponse - 129, // 611: datanode.api.v2.TradingDataService.ListTrades:output_type -> datanode.api.v2.ListTradesResponse - 133, // 612: datanode.api.v2.TradingDataService.ObserveTrades:output_type -> datanode.api.v2.ObserveTradesResponse - 135, // 613: datanode.api.v2.TradingDataService.GetOracleSpec:output_type -> datanode.api.v2.GetOracleSpecResponse - 137, // 614: datanode.api.v2.TradingDataService.ListOracleSpecs:output_type -> datanode.api.v2.ListOracleSpecsResponse - 139, // 615: datanode.api.v2.TradingDataService.ListOracleData:output_type -> datanode.api.v2.ListOracleDataResponse - 145, // 616: datanode.api.v2.TradingDataService.GetMarket:output_type -> datanode.api.v2.GetMarketResponse - 147, // 617: datanode.api.v2.TradingDataService.ListMarkets:output_type -> datanode.api.v2.ListMarketsResponse - 154, // 618: datanode.api.v2.TradingDataService.ListSuccessorMarkets:output_type -> datanode.api.v2.ListSuccessorMarketsResponse - 156, // 619: datanode.api.v2.TradingDataService.GetParty:output_type -> datanode.api.v2.GetPartyResponse - 158, // 620: datanode.api.v2.TradingDataService.ListParties:output_type -> datanode.api.v2.ListPartiesResponse - 162, // 621: datanode.api.v2.TradingDataService.ListPartiesProfiles:output_type -> datanode.api.v2.ListPartiesProfilesResponse - 167, // 622: datanode.api.v2.TradingDataService.ListMarginLevels:output_type -> datanode.api.v2.ListMarginLevelsResponse - 169, // 623: datanode.api.v2.TradingDataService.ObserveMarginLevels:output_type -> datanode.api.v2.ObserveMarginLevelsResponse - 174, // 624: datanode.api.v2.TradingDataService.ListRewards:output_type -> datanode.api.v2.ListRewardsResponse - 178, // 625: datanode.api.v2.TradingDataService.ListRewardSummaries:output_type -> datanode.api.v2.ListRewardSummariesResponse - 181, // 626: datanode.api.v2.TradingDataService.ListEpochRewardSummaries:output_type -> datanode.api.v2.ListEpochRewardSummariesResponse - 187, // 627: datanode.api.v2.TradingDataService.GetDeposit:output_type -> datanode.api.v2.GetDepositResponse - 189, // 628: datanode.api.v2.TradingDataService.ListDeposits:output_type -> datanode.api.v2.ListDepositsResponse - 193, // 629: datanode.api.v2.TradingDataService.GetWithdrawal:output_type -> datanode.api.v2.GetWithdrawalResponse - 195, // 630: datanode.api.v2.TradingDataService.ListWithdrawals:output_type -> datanode.api.v2.ListWithdrawalsResponse - 199, // 631: datanode.api.v2.TradingDataService.GetAsset:output_type -> datanode.api.v2.GetAssetResponse - 201, // 632: datanode.api.v2.TradingDataService.ListAssets:output_type -> datanode.api.v2.ListAssetsResponse - 206, // 633: datanode.api.v2.TradingDataService.ListLiquidityProvisions:output_type -> datanode.api.v2.ListLiquidityProvisionsResponse - 207, // 634: datanode.api.v2.TradingDataService.ListAllLiquidityProvisions:output_type -> datanode.api.v2.ListAllLiquidityProvisionsResponse - 214, // 635: datanode.api.v2.TradingDataService.ObserveLiquidityProvisions:output_type -> datanode.api.v2.ObserveLiquidityProvisionsResponse - 219, // 636: datanode.api.v2.TradingDataService.ListLiquidityProviders:output_type -> datanode.api.v2.ListLiquidityProvidersResponse - 221, // 637: datanode.api.v2.TradingDataService.ListPaidLiquidityFees:output_type -> datanode.api.v2.ListPaidLiquidityFeesResponse - 225, // 638: datanode.api.v2.TradingDataService.GetGovernanceData:output_type -> datanode.api.v2.GetGovernanceDataResponse - 227, // 639: datanode.api.v2.TradingDataService.ListGovernanceData:output_type -> datanode.api.v2.ListGovernanceDataResponse - 231, // 640: datanode.api.v2.TradingDataService.ObserveGovernance:output_type -> datanode.api.v2.ObserveGovernanceResponse - 233, // 641: datanode.api.v2.TradingDataService.ListDelegations:output_type -> datanode.api.v2.ListDelegationsResponse - 240, // 642: datanode.api.v2.TradingDataService.GetNetworkData:output_type -> datanode.api.v2.GetNetworkDataResponse - 242, // 643: datanode.api.v2.TradingDataService.GetNode:output_type -> datanode.api.v2.GetNodeResponse - 244, // 644: datanode.api.v2.TradingDataService.ListNodes:output_type -> datanode.api.v2.ListNodesResponse - 248, // 645: datanode.api.v2.TradingDataService.ListNodeSignatures:output_type -> datanode.api.v2.ListNodeSignaturesResponse - 252, // 646: datanode.api.v2.TradingDataService.GetEpoch:output_type -> datanode.api.v2.GetEpochResponse - 254, // 647: datanode.api.v2.TradingDataService.EstimateFee:output_type -> datanode.api.v2.EstimateFeeResponse - 256, // 648: datanode.api.v2.TradingDataService.EstimateMargin:output_type -> datanode.api.v2.EstimateMarginResponse - 332, // 649: datanode.api.v2.TradingDataService.EstimatePosition:output_type -> datanode.api.v2.EstimatePositionResponse - 258, // 650: datanode.api.v2.TradingDataService.ListNetworkParameters:output_type -> datanode.api.v2.ListNetworkParametersResponse - 260, // 651: datanode.api.v2.TradingDataService.GetNetworkParameter:output_type -> datanode.api.v2.GetNetworkParameterResponse - 265, // 652: datanode.api.v2.TradingDataService.ListCheckpoints:output_type -> datanode.api.v2.ListCheckpointsResponse - 269, // 653: datanode.api.v2.TradingDataService.GetStake:output_type -> datanode.api.v2.GetStakeResponse - 273, // 654: datanode.api.v2.TradingDataService.GetRiskFactors:output_type -> datanode.api.v2.GetRiskFactorsResponse - 275, // 655: datanode.api.v2.TradingDataService.ObserveEventBus:output_type -> datanode.api.v2.ObserveEventBusResponse - 277, // 656: datanode.api.v2.TradingDataService.ObserveLedgerMovements:output_type -> datanode.api.v2.ObserveLedgerMovementsResponse - 279, // 657: datanode.api.v2.TradingDataService.ListKeyRotations:output_type -> datanode.api.v2.ListKeyRotationsResponse - 283, // 658: datanode.api.v2.TradingDataService.ListEthereumKeyRotations:output_type -> datanode.api.v2.ListEthereumKeyRotationsResponse - 287, // 659: datanode.api.v2.TradingDataService.GetVegaTime:output_type -> datanode.api.v2.GetVegaTimeResponse - 290, // 660: datanode.api.v2.TradingDataService.GetProtocolUpgradeStatus:output_type -> datanode.api.v2.GetProtocolUpgradeStatusResponse - 292, // 661: datanode.api.v2.TradingDataService.ListProtocolUpgradeProposals:output_type -> datanode.api.v2.ListProtocolUpgradeProposalsResponse - 296, // 662: datanode.api.v2.TradingDataService.ListCoreSnapshots:output_type -> datanode.api.v2.ListCoreSnapshotsResponse - 301, // 663: datanode.api.v2.TradingDataService.GetMostRecentNetworkHistorySegment:output_type -> datanode.api.v2.GetMostRecentNetworkHistorySegmentResponse - 303, // 664: datanode.api.v2.TradingDataService.ListAllNetworkHistorySegments:output_type -> datanode.api.v2.ListAllNetworkHistorySegmentsResponse - 305, // 665: datanode.api.v2.TradingDataService.GetActiveNetworkHistoryPeerAddresses:output_type -> datanode.api.v2.GetActiveNetworkHistoryPeerAddressesResponse - 307, // 666: datanode.api.v2.TradingDataService.GetNetworkHistoryStatus:output_type -> datanode.api.v2.GetNetworkHistoryStatusResponse - 309, // 667: datanode.api.v2.TradingDataService.GetNetworkHistoryBootstrapPeers:output_type -> datanode.api.v2.GetNetworkHistoryBootstrapPeersResponse - 312, // 668: datanode.api.v2.TradingDataService.ListEntities:output_type -> datanode.api.v2.ListEntitiesResponse - 323, // 669: datanode.api.v2.TradingDataService.ListFundingPeriods:output_type -> datanode.api.v2.ListFundingPeriodsResponse - 327, // 670: datanode.api.v2.TradingDataService.ListFundingPeriodDataPoints:output_type -> datanode.api.v2.ListFundingPeriodDataPointsResponse - 319, // 671: datanode.api.v2.TradingDataService.ListFundingPayments:output_type -> datanode.api.v2.ListFundingPaymentsResponse - 314, // 672: datanode.api.v2.TradingDataService.GetPartyActivityStreak:output_type -> datanode.api.v2.GetPartyActivityStreakResponse - 338, // 673: datanode.api.v2.TradingDataService.GetCurrentReferralProgram:output_type -> datanode.api.v2.GetCurrentReferralProgramResponse - 344, // 674: datanode.api.v2.TradingDataService.ListReferralSets:output_type -> datanode.api.v2.ListReferralSetsResponse - 349, // 675: datanode.api.v2.TradingDataService.ListReferralSetReferees:output_type -> datanode.api.v2.ListReferralSetRefereesResponse - 351, // 676: datanode.api.v2.TradingDataService.GetReferralSetStats:output_type -> datanode.api.v2.GetReferralSetStatsResponse - 359, // 677: datanode.api.v2.TradingDataService.ListTeams:output_type -> datanode.api.v2.ListTeamsResponse - 361, // 678: datanode.api.v2.TradingDataService.ListTeamsStatistics:output_type -> datanode.api.v2.ListTeamsStatisticsResponse - 368, // 679: datanode.api.v2.TradingDataService.ListTeamMembersStatistics:output_type -> datanode.api.v2.ListTeamMembersStatisticsResponse - 376, // 680: datanode.api.v2.TradingDataService.ListTeamReferees:output_type -> datanode.api.v2.ListTeamRefereesResponse - 381, // 681: datanode.api.v2.TradingDataService.ListTeamRefereeHistory:output_type -> datanode.api.v2.ListTeamRefereeHistoryResponse - 383, // 682: datanode.api.v2.TradingDataService.GetFeesStats:output_type -> datanode.api.v2.GetFeesStatsResponse - 385, // 683: datanode.api.v2.TradingDataService.GetFeesStatsForParty:output_type -> datanode.api.v2.GetFeesStatsForPartyResponse - 387, // 684: datanode.api.v2.TradingDataService.GetCurrentVolumeDiscountProgram:output_type -> datanode.api.v2.GetCurrentVolumeDiscountProgramResponse - 389, // 685: datanode.api.v2.TradingDataService.GetVolumeDiscountStats:output_type -> datanode.api.v2.GetVolumeDiscountStatsResponse - 11, // 686: datanode.api.v2.TradingDataService.GetVestingBalancesSummary:output_type -> datanode.api.v2.GetVestingBalancesSummaryResponse - 9, // 687: datanode.api.v2.TradingDataService.GetPartyVestingStats:output_type -> datanode.api.v2.GetPartyVestingStatsResponse - 396, // 688: datanode.api.v2.TradingDataService.ObserveTransactionResults:output_type -> datanode.api.v2.ObserveTransactionResultsResponse - 398, // 689: datanode.api.v2.TradingDataService.EstimateTransferFee:output_type -> datanode.api.v2.EstimateTransferFeeResponse - 400, // 690: datanode.api.v2.TradingDataService.GetTotalTransferFeeDiscount:output_type -> datanode.api.v2.GetTotalTransferFeeDiscountResponse - 402, // 691: datanode.api.v2.TradingDataService.ListGames:output_type -> datanode.api.v2.ListGamesResponse - 412, // 692: datanode.api.v2.TradingDataService.ListPartyMarginModes:output_type -> datanode.api.v2.ListPartyMarginModesResponse - 418, // 693: datanode.api.v2.TradingDataService.GetTimeWeightedNotionalPosition:output_type -> datanode.api.v2.GetTimeWeightedNotionalPositionResponse - 495, // 694: datanode.api.v2.TradingDataService.ExportNetworkHistory:output_type -> google.api.HttpBody - 329, // 695: datanode.api.v2.TradingDataService.Ping:output_type -> datanode.api.v2.PingResponse - 575, // [575:696] is the sub-list for method output_type - 454, // [454:575] is the sub-list for method input_type - 454, // [454:454] is the sub-list for extension type_name - 454, // [454:454] is the sub-list for extension extendee - 0, // [0:454] is the sub-list for field type_name + 432, // 26: datanode.api.v2.OrderSnapshotPage.orders:type_name -> vega.Order + 432, // 27: datanode.api.v2.OrderUpdates.orders:type_name -> vega.Order + 436, // 28: datanode.api.v2.GetStopOrderResponse.order:type_name -> vega.events.v1.StopOrderEvent + 6, // 29: datanode.api.v2.ListGameTeamScoresRequest.pagination:type_name -> datanode.api.v2.Pagination + 37, // 30: datanode.api.v2.ListGameTeamScoresRequest.filter:type_name -> datanode.api.v2.GameTeamScoresFilter + 39, // 31: datanode.api.v2.ListGameTeamScoresResponse.team_scores:type_name -> datanode.api.v2.GameTeamScoresConnection + 40, // 32: datanode.api.v2.GameTeamScoresConnection.edges:type_name -> datanode.api.v2.GameTeamScoresEdge + 7, // 33: datanode.api.v2.GameTeamScoresConnection.page_info:type_name -> datanode.api.v2.PageInfo + 437, // 34: datanode.api.v2.GameTeamScoresEdge.node:type_name -> vega.events.v1.GameTeamScore + 6, // 35: datanode.api.v2.ListGamePartyScoresRequest.pagination:type_name -> datanode.api.v2.Pagination + 42, // 36: datanode.api.v2.ListGamePartyScoresRequest.filter:type_name -> datanode.api.v2.GamePartyScoresFilter + 44, // 37: datanode.api.v2.ListGamePartyScoresResponse.party_scores:type_name -> datanode.api.v2.GamePartyScoresConnection + 45, // 38: datanode.api.v2.GamePartyScoresConnection.edges:type_name -> datanode.api.v2.GamePartyScoresEdge + 7, // 39: datanode.api.v2.GamePartyScoresConnection.page_info:type_name -> datanode.api.v2.PageInfo + 438, // 40: datanode.api.v2.GamePartyScoresEdge.node:type_name -> vega.events.v1.GamePartyScore + 6, // 41: datanode.api.v2.ListStopOrdersRequest.pagination:type_name -> datanode.api.v2.Pagination + 47, // 42: datanode.api.v2.ListStopOrdersRequest.filter:type_name -> datanode.api.v2.StopOrderFilter + 439, // 43: datanode.api.v2.StopOrderFilter.statuses:type_name -> vega.StopOrder.Status + 440, // 44: datanode.api.v2.StopOrderFilter.expiry_strategies:type_name -> vega.StopOrder.ExpiryStrategy + 298, // 45: datanode.api.v2.StopOrderFilter.date_range:type_name -> datanode.api.v2.DateRange + 436, // 46: datanode.api.v2.StopOrderEdge.node:type_name -> vega.events.v1.StopOrderEvent + 48, // 47: datanode.api.v2.StopOrderConnection.edges:type_name -> datanode.api.v2.StopOrderEdge + 7, // 48: datanode.api.v2.StopOrderConnection.page_info:type_name -> datanode.api.v2.PageInfo + 49, // 49: datanode.api.v2.ListStopOrdersResponse.orders:type_name -> datanode.api.v2.StopOrderConnection + 6, // 50: datanode.api.v2.ListPositionsRequest.pagination:type_name -> datanode.api.v2.Pagination + 57, // 51: datanode.api.v2.ListPositionsResponse.positions:type_name -> datanode.api.v2.PositionConnection + 53, // 52: datanode.api.v2.ListAllPositionsRequest.filter:type_name -> datanode.api.v2.PositionsFilter + 6, // 53: datanode.api.v2.ListAllPositionsRequest.pagination:type_name -> datanode.api.v2.Pagination + 57, // 54: datanode.api.v2.ListAllPositionsResponse.positions:type_name -> datanode.api.v2.PositionConnection + 441, // 55: datanode.api.v2.PositionEdge.node:type_name -> vega.Position + 56, // 56: datanode.api.v2.PositionConnection.edges:type_name -> datanode.api.v2.PositionEdge + 7, // 57: datanode.api.v2.PositionConnection.page_info:type_name -> datanode.api.v2.PageInfo + 60, // 58: datanode.api.v2.ObservePositionsResponse.snapshot:type_name -> datanode.api.v2.PositionSnapshotPage + 61, // 59: datanode.api.v2.ObservePositionsResponse.updates:type_name -> datanode.api.v2.PositionUpdates + 441, // 60: datanode.api.v2.PositionSnapshotPage.positions:type_name -> vega.Position + 441, // 61: datanode.api.v2.PositionUpdates.positions:type_name -> vega.Position + 75, // 62: datanode.api.v2.LedgerEntryFilter.from_account_filter:type_name -> datanode.api.v2.AccountFilter + 75, // 63: datanode.api.v2.LedgerEntryFilter.to_account_filter:type_name -> datanode.api.v2.AccountFilter + 442, // 64: datanode.api.v2.LedgerEntryFilter.transfer_types:type_name -> vega.TransferType + 442, // 65: datanode.api.v2.AggregatedLedgerEntry.transfer_type:type_name -> vega.TransferType + 431, // 66: datanode.api.v2.AggregatedLedgerEntry.from_account_type:type_name -> vega.AccountType + 431, // 67: datanode.api.v2.AggregatedLedgerEntry.to_account_type:type_name -> vega.AccountType + 62, // 68: datanode.api.v2.ListLedgerEntriesRequest.filter:type_name -> datanode.api.v2.LedgerEntryFilter + 6, // 69: datanode.api.v2.ListLedgerEntriesRequest.pagination:type_name -> datanode.api.v2.Pagination + 298, // 70: datanode.api.v2.ListLedgerEntriesRequest.date_range:type_name -> datanode.api.v2.DateRange + 298, // 71: datanode.api.v2.ExportLedgerEntriesRequest.date_range:type_name -> datanode.api.v2.DateRange + 68, // 72: datanode.api.v2.ListLedgerEntriesResponse.ledger_entries:type_name -> datanode.api.v2.AggregatedLedgerEntriesConnection + 63, // 73: datanode.api.v2.AggregatedLedgerEntriesEdge.node:type_name -> datanode.api.v2.AggregatedLedgerEntry + 67, // 74: datanode.api.v2.AggregatedLedgerEntriesConnection.edges:type_name -> datanode.api.v2.AggregatedLedgerEntriesEdge + 7, // 75: datanode.api.v2.AggregatedLedgerEntriesConnection.page_info:type_name -> datanode.api.v2.PageInfo + 75, // 76: datanode.api.v2.ListBalanceChangesRequest.filter:type_name -> datanode.api.v2.AccountFilter + 6, // 77: datanode.api.v2.ListBalanceChangesRequest.pagination:type_name -> datanode.api.v2.Pagination + 298, // 78: datanode.api.v2.ListBalanceChangesRequest.date_range:type_name -> datanode.api.v2.DateRange + 74, // 79: datanode.api.v2.ListBalanceChangesResponse.balances:type_name -> datanode.api.v2.AggregatedBalanceConnection + 75, // 80: datanode.api.v2.GetBalanceHistoryRequest.filter:type_name -> datanode.api.v2.AccountFilter + 1, // 81: datanode.api.v2.GetBalanceHistoryRequest.group_by:type_name -> datanode.api.v2.AccountField + 6, // 82: datanode.api.v2.GetBalanceHistoryRequest.pagination:type_name -> datanode.api.v2.Pagination + 298, // 83: datanode.api.v2.GetBalanceHistoryRequest.date_range:type_name -> datanode.api.v2.DateRange + 74, // 84: datanode.api.v2.GetBalanceHistoryResponse.balances:type_name -> datanode.api.v2.AggregatedBalanceConnection + 76, // 85: datanode.api.v2.AggregatedBalanceEdge.node:type_name -> datanode.api.v2.AggregatedBalance + 73, // 86: datanode.api.v2.AggregatedBalanceConnection.edges:type_name -> datanode.api.v2.AggregatedBalanceEdge + 7, // 87: datanode.api.v2.AggregatedBalanceConnection.page_info:type_name -> datanode.api.v2.PageInfo + 431, // 88: datanode.api.v2.AccountFilter.account_types:type_name -> vega.AccountType + 431, // 89: datanode.api.v2.AggregatedBalance.account_type:type_name -> vega.AccountType + 443, // 90: datanode.api.v2.ObserveMarketsDepthResponse.market_depth:type_name -> vega.MarketDepth + 444, // 91: datanode.api.v2.ObserveMarketsDepthUpdatesResponse.update:type_name -> vega.MarketDepthUpdate + 445, // 92: datanode.api.v2.ObserveMarketsDataResponse.market_data:type_name -> vega.MarketData + 446, // 93: datanode.api.v2.GetLatestMarketDepthResponse.buy:type_name -> vega.PriceLevel + 446, // 94: datanode.api.v2.GetLatestMarketDepthResponse.sell:type_name -> vega.PriceLevel + 447, // 95: datanode.api.v2.GetLatestMarketDepthResponse.last_trade:type_name -> vega.Trade + 445, // 96: datanode.api.v2.ListLatestMarketDataResponse.markets_data:type_name -> vega.MarketData + 445, // 97: datanode.api.v2.GetLatestMarketDataResponse.market_data:type_name -> vega.MarketData + 6, // 98: datanode.api.v2.GetMarketDataHistoryByIDRequest.pagination:type_name -> datanode.api.v2.Pagination + 92, // 99: datanode.api.v2.GetMarketDataHistoryByIDResponse.market_data:type_name -> datanode.api.v2.MarketDataConnection + 445, // 100: datanode.api.v2.MarketDataEdge.node:type_name -> vega.MarketData + 91, // 101: datanode.api.v2.MarketDataConnection.edges:type_name -> datanode.api.v2.MarketDataEdge + 7, // 102: datanode.api.v2.MarketDataConnection.page_info:type_name -> datanode.api.v2.PageInfo + 2, // 103: datanode.api.v2.ListTransfersRequest.direction:type_name -> datanode.api.v2.TransferDirection + 6, // 104: datanode.api.v2.ListTransfersRequest.pagination:type_name -> datanode.api.v2.Pagination + 448, // 105: datanode.api.v2.ListTransfersRequest.status:type_name -> vega.events.v1.Transfer.Status + 4, // 106: datanode.api.v2.ListTransfersRequest.scope:type_name -> datanode.api.v2.ListTransfersRequest.Scope + 431, // 107: datanode.api.v2.ListTransfersRequest.from_account_type:type_name -> vega.AccountType + 431, // 108: datanode.api.v2.ListTransfersRequest.to_account_type:type_name -> vega.AccountType + 97, // 109: datanode.api.v2.ListTransfersResponse.transfers:type_name -> datanode.api.v2.TransferConnection + 449, // 110: datanode.api.v2.TransferNode.transfer:type_name -> vega.events.v1.Transfer + 450, // 111: datanode.api.v2.TransferNode.fees:type_name -> vega.events.v1.TransferFees + 95, // 112: datanode.api.v2.TransferEdge.node:type_name -> datanode.api.v2.TransferNode + 96, // 113: datanode.api.v2.TransferConnection.edges:type_name -> datanode.api.v2.TransferEdge + 7, // 114: datanode.api.v2.TransferConnection.page_info:type_name -> datanode.api.v2.PageInfo + 95, // 115: datanode.api.v2.GetTransferResponse.transfer_node:type_name -> datanode.api.v2.TransferNode + 451, // 116: datanode.api.v2.GetNetworkLimitsResponse.limits:type_name -> vega.NetworkLimits + 103, // 117: datanode.api.v2.ListCandleIntervalsResponse.interval_to_candle_id:type_name -> datanode.api.v2.IntervalToCandleId + 105, // 118: datanode.api.v2.ObserveCandleDataResponse.candle:type_name -> datanode.api.v2.Candle + 6, // 119: datanode.api.v2.ListCandleDataRequest.pagination:type_name -> datanode.api.v2.Pagination + 111, // 120: datanode.api.v2.ListCandleDataResponse.candles:type_name -> datanode.api.v2.CandleDataConnection + 105, // 121: datanode.api.v2.CandleEdge.node:type_name -> datanode.api.v2.Candle + 110, // 122: datanode.api.v2.CandleDataConnection.edges:type_name -> datanode.api.v2.CandleEdge + 7, // 123: datanode.api.v2.CandleDataConnection.page_info:type_name -> datanode.api.v2.PageInfo + 6, // 124: datanode.api.v2.ListVotesRequest.pagination:type_name -> datanode.api.v2.Pagination + 115, // 125: datanode.api.v2.ListVotesResponse.votes:type_name -> datanode.api.v2.VoteConnection + 452, // 126: datanode.api.v2.VoteEdge.node:type_name -> vega.Vote + 114, // 127: datanode.api.v2.VoteConnection.edges:type_name -> datanode.api.v2.VoteEdge + 7, // 128: datanode.api.v2.VoteConnection.page_info:type_name -> datanode.api.v2.PageInfo + 452, // 129: datanode.api.v2.ObserveVotesResponse.vote:type_name -> vega.Vote + 6, // 130: datanode.api.v2.ListERC20MultiSigSignerAddedBundlesRequest.pagination:type_name -> datanode.api.v2.Pagination + 122, // 131: datanode.api.v2.ListERC20MultiSigSignerAddedBundlesResponse.bundles:type_name -> datanode.api.v2.ERC20MultiSigSignerAddedConnection + 453, // 132: datanode.api.v2.ERC20MultiSigSignerAddedEdge.node:type_name -> vega.events.v1.ERC20MultiSigSignerAdded + 123, // 133: datanode.api.v2.ERC20MultiSigSignerAddedBundleEdge.node:type_name -> datanode.api.v2.ERC20MultiSigSignerAddedBundle + 121, // 134: datanode.api.v2.ERC20MultiSigSignerAddedConnection.edges:type_name -> datanode.api.v2.ERC20MultiSigSignerAddedBundleEdge + 7, // 135: datanode.api.v2.ERC20MultiSigSignerAddedConnection.page_info:type_name -> datanode.api.v2.PageInfo + 6, // 136: datanode.api.v2.ListERC20MultiSigSignerRemovedBundlesRequest.pagination:type_name -> datanode.api.v2.Pagination + 128, // 137: datanode.api.v2.ListERC20MultiSigSignerRemovedBundlesResponse.bundles:type_name -> datanode.api.v2.ERC20MultiSigSignerRemovedConnection + 454, // 138: datanode.api.v2.ERC20MultiSigSignerRemovedEdge.node:type_name -> vega.events.v1.ERC20MultiSigSignerRemoved + 129, // 139: datanode.api.v2.ERC20MultiSigSignerRemovedBundleEdge.node:type_name -> datanode.api.v2.ERC20MultiSigSignerRemovedBundle + 127, // 140: datanode.api.v2.ERC20MultiSigSignerRemovedConnection.edges:type_name -> datanode.api.v2.ERC20MultiSigSignerRemovedBundleEdge + 7, // 141: datanode.api.v2.ERC20MultiSigSignerRemovedConnection.page_info:type_name -> datanode.api.v2.PageInfo + 447, // 142: datanode.api.v2.GetLastTradeResponse.trade:type_name -> vega.Trade + 6, // 143: datanode.api.v2.ListTradesRequest.pagination:type_name -> datanode.api.v2.Pagination + 298, // 144: datanode.api.v2.ListTradesRequest.date_range:type_name -> datanode.api.v2.DateRange + 140, // 145: datanode.api.v2.ListTradesResponse.trades:type_name -> datanode.api.v2.TradeConnection + 141, // 146: datanode.api.v2.TradeConnection.edges:type_name -> datanode.api.v2.TradeEdge + 7, // 147: datanode.api.v2.TradeConnection.page_info:type_name -> datanode.api.v2.PageInfo + 447, // 148: datanode.api.v2.TradeEdge.node:type_name -> vega.Trade + 447, // 149: datanode.api.v2.ObserveTradesResponse.trades:type_name -> vega.Trade + 455, // 150: datanode.api.v2.GetOracleSpecResponse.oracle_spec:type_name -> vega.OracleSpec + 6, // 151: datanode.api.v2.ListOracleSpecsRequest.pagination:type_name -> datanode.api.v2.Pagination + 151, // 152: datanode.api.v2.ListOracleSpecsResponse.oracle_specs:type_name -> datanode.api.v2.OracleSpecsConnection + 6, // 153: datanode.api.v2.ListOracleDataRequest.pagination:type_name -> datanode.api.v2.Pagination + 153, // 154: datanode.api.v2.ListOracleDataResponse.oracle_data:type_name -> datanode.api.v2.OracleDataConnection + 455, // 155: datanode.api.v2.OracleSpecEdge.node:type_name -> vega.OracleSpec + 150, // 156: datanode.api.v2.OracleSpecsConnection.edges:type_name -> datanode.api.v2.OracleSpecEdge + 7, // 157: datanode.api.v2.OracleSpecsConnection.page_info:type_name -> datanode.api.v2.PageInfo + 456, // 158: datanode.api.v2.OracleDataEdge.node:type_name -> vega.OracleData + 152, // 159: datanode.api.v2.OracleDataConnection.edges:type_name -> datanode.api.v2.OracleDataEdge + 7, // 160: datanode.api.v2.OracleDataConnection.page_info:type_name -> datanode.api.v2.PageInfo + 457, // 161: datanode.api.v2.GetMarketResponse.market:type_name -> vega.Market + 6, // 162: datanode.api.v2.ListMarketsRequest.pagination:type_name -> datanode.api.v2.Pagination + 159, // 163: datanode.api.v2.ListMarketsResponse.markets:type_name -> datanode.api.v2.MarketConnection + 457, // 164: datanode.api.v2.MarketEdge.node:type_name -> vega.Market + 158, // 165: datanode.api.v2.MarketConnection.edges:type_name -> datanode.api.v2.MarketEdge + 7, // 166: datanode.api.v2.MarketConnection.page_info:type_name -> datanode.api.v2.PageInfo + 6, // 167: datanode.api.v2.ListSuccessorMarketsRequest.pagination:type_name -> datanode.api.v2.Pagination + 457, // 168: datanode.api.v2.SuccessorMarket.market:type_name -> vega.Market + 458, // 169: datanode.api.v2.SuccessorMarket.proposals:type_name -> vega.GovernanceData + 161, // 170: datanode.api.v2.SuccessorMarketEdge.node:type_name -> datanode.api.v2.SuccessorMarket + 162, // 171: datanode.api.v2.SuccessorMarketConnection.edges:type_name -> datanode.api.v2.SuccessorMarketEdge + 7, // 172: datanode.api.v2.SuccessorMarketConnection.page_info:type_name -> datanode.api.v2.PageInfo + 163, // 173: datanode.api.v2.ListSuccessorMarketsResponse.successor_markets:type_name -> datanode.api.v2.SuccessorMarketConnection + 459, // 174: datanode.api.v2.GetPartyResponse.party:type_name -> vega.Party + 6, // 175: datanode.api.v2.ListPartiesRequest.pagination:type_name -> datanode.api.v2.Pagination + 170, // 176: datanode.api.v2.ListPartiesResponse.parties:type_name -> datanode.api.v2.PartyConnection + 459, // 177: datanode.api.v2.PartyEdge.node:type_name -> vega.Party + 169, // 178: datanode.api.v2.PartyConnection.edges:type_name -> datanode.api.v2.PartyEdge + 7, // 179: datanode.api.v2.PartyConnection.page_info:type_name -> datanode.api.v2.PageInfo + 6, // 180: datanode.api.v2.ListPartiesProfilesRequest.pagination:type_name -> datanode.api.v2.Pagination + 174, // 181: datanode.api.v2.ListPartiesProfilesResponse.profiles:type_name -> datanode.api.v2.PartiesProfilesConnection + 460, // 182: datanode.api.v2.PartyProfileEdge.node:type_name -> vega.PartyProfile + 173, // 183: datanode.api.v2.PartiesProfilesConnection.edges:type_name -> datanode.api.v2.PartyProfileEdge + 7, // 184: datanode.api.v2.PartiesProfilesConnection.page_info:type_name -> datanode.api.v2.PageInfo + 432, // 185: datanode.api.v2.OrderEdge.node:type_name -> vega.Order + 6, // 186: datanode.api.v2.ListMarginLevelsRequest.pagination:type_name -> datanode.api.v2.Pagination + 182, // 187: datanode.api.v2.ListMarginLevelsResponse.margin_levels:type_name -> datanode.api.v2.MarginConnection + 461, // 188: datanode.api.v2.ObserveMarginLevelsResponse.margin_levels:type_name -> vega.MarginLevels + 175, // 189: datanode.api.v2.OrderConnection.edges:type_name -> datanode.api.v2.OrderEdge + 7, // 190: datanode.api.v2.OrderConnection.page_info:type_name -> datanode.api.v2.PageInfo + 461, // 191: datanode.api.v2.MarginEdge.node:type_name -> vega.MarginLevels + 181, // 192: datanode.api.v2.MarginConnection.edges:type_name -> datanode.api.v2.MarginEdge + 7, // 193: datanode.api.v2.MarginConnection.page_info:type_name -> datanode.api.v2.PageInfo + 6, // 194: datanode.api.v2.ListRewardsRequest.pagination:type_name -> datanode.api.v2.Pagination + 186, // 195: datanode.api.v2.ListRewardsResponse.rewards:type_name -> datanode.api.v2.RewardsConnection + 462, // 196: datanode.api.v2.RewardEdge.node:type_name -> vega.Reward + 185, // 197: datanode.api.v2.RewardsConnection.edges:type_name -> datanode.api.v2.RewardEdge + 7, // 198: datanode.api.v2.RewardsConnection.page_info:type_name -> datanode.api.v2.PageInfo + 6, // 199: datanode.api.v2.ListRewardSummariesRequest.pagination:type_name -> datanode.api.v2.Pagination + 463, // 200: datanode.api.v2.ListRewardSummariesResponse.summaries:type_name -> vega.RewardSummary + 189, // 201: datanode.api.v2.ListEpochRewardSummariesRequest.filter:type_name -> datanode.api.v2.RewardSummaryFilter + 6, // 202: datanode.api.v2.ListEpochRewardSummariesRequest.pagination:type_name -> datanode.api.v2.Pagination + 192, // 203: datanode.api.v2.ListEpochRewardSummariesResponse.summaries:type_name -> datanode.api.v2.EpochRewardSummaryConnection + 193, // 204: datanode.api.v2.EpochRewardSummaryConnection.edges:type_name -> datanode.api.v2.EpochRewardSummaryEdge + 7, // 205: datanode.api.v2.EpochRewardSummaryConnection.page_info:type_name -> datanode.api.v2.PageInfo + 464, // 206: datanode.api.v2.EpochRewardSummaryEdge.node:type_name -> vega.EpochRewardSummary + 462, // 207: datanode.api.v2.ObserveRewardsResponse.reward:type_name -> vega.Reward + 465, // 208: datanode.api.v2.GetDepositResponse.deposit:type_name -> vega.Deposit + 6, // 209: datanode.api.v2.ListDepositsRequest.pagination:type_name -> datanode.api.v2.Pagination + 298, // 210: datanode.api.v2.ListDepositsRequest.date_range:type_name -> datanode.api.v2.DateRange + 201, // 211: datanode.api.v2.ListDepositsResponse.deposits:type_name -> datanode.api.v2.DepositsConnection + 465, // 212: datanode.api.v2.DepositEdge.node:type_name -> vega.Deposit + 200, // 213: datanode.api.v2.DepositsConnection.edges:type_name -> datanode.api.v2.DepositEdge + 7, // 214: datanode.api.v2.DepositsConnection.page_info:type_name -> datanode.api.v2.PageInfo + 466, // 215: datanode.api.v2.GetWithdrawalResponse.withdrawal:type_name -> vega.Withdrawal + 6, // 216: datanode.api.v2.ListWithdrawalsRequest.pagination:type_name -> datanode.api.v2.Pagination + 298, // 217: datanode.api.v2.ListWithdrawalsRequest.date_range:type_name -> datanode.api.v2.DateRange + 207, // 218: datanode.api.v2.ListWithdrawalsResponse.withdrawals:type_name -> datanode.api.v2.WithdrawalsConnection + 466, // 219: datanode.api.v2.WithdrawalEdge.node:type_name -> vega.Withdrawal + 206, // 220: datanode.api.v2.WithdrawalsConnection.edges:type_name -> datanode.api.v2.WithdrawalEdge + 7, // 221: datanode.api.v2.WithdrawalsConnection.page_info:type_name -> datanode.api.v2.PageInfo + 467, // 222: datanode.api.v2.GetAssetResponse.asset:type_name -> vega.Asset + 6, // 223: datanode.api.v2.ListAssetsRequest.pagination:type_name -> datanode.api.v2.Pagination + 213, // 224: datanode.api.v2.ListAssetsResponse.assets:type_name -> datanode.api.v2.AssetsConnection + 467, // 225: datanode.api.v2.AssetEdge.node:type_name -> vega.Asset + 212, // 226: datanode.api.v2.AssetsConnection.edges:type_name -> datanode.api.v2.AssetEdge + 7, // 227: datanode.api.v2.AssetsConnection.page_info:type_name -> datanode.api.v2.PageInfo + 6, // 228: datanode.api.v2.ListLiquidityProvisionsRequest.pagination:type_name -> datanode.api.v2.Pagination + 6, // 229: datanode.api.v2.ListAllLiquidityProvisionsRequest.pagination:type_name -> datanode.api.v2.Pagination + 221, // 230: datanode.api.v2.ListLiquidityProvisionsResponse.liquidity_provisions:type_name -> datanode.api.v2.LiquidityProvisionsConnection + 222, // 231: datanode.api.v2.ListAllLiquidityProvisionsResponse.liquidity_provisions:type_name -> datanode.api.v2.LiquidityProvisionsWithPendingConnection + 468, // 232: datanode.api.v2.LiquidityProvision.current:type_name -> vega.LiquidityProvision + 468, // 233: datanode.api.v2.LiquidityProvision.pending:type_name -> vega.LiquidityProvision + 468, // 234: datanode.api.v2.LiquidityProvisionsEdge.node:type_name -> vega.LiquidityProvision + 218, // 235: datanode.api.v2.LiquidityProvisionWithPendingEdge.node:type_name -> datanode.api.v2.LiquidityProvision + 219, // 236: datanode.api.v2.LiquidityProvisionsConnection.edges:type_name -> datanode.api.v2.LiquidityProvisionsEdge + 7, // 237: datanode.api.v2.LiquidityProvisionsConnection.page_info:type_name -> datanode.api.v2.PageInfo + 220, // 238: datanode.api.v2.LiquidityProvisionsWithPendingConnection.edges:type_name -> datanode.api.v2.LiquidityProvisionWithPendingEdge + 7, // 239: datanode.api.v2.LiquidityProvisionsWithPendingConnection.page_info:type_name -> datanode.api.v2.PageInfo + 468, // 240: datanode.api.v2.ObserveLiquidityProvisionsResponse.liquidity_provisions:type_name -> vega.LiquidityProvision + 6, // 241: datanode.api.v2.ListLiquidityProvidersRequest.pagination:type_name -> datanode.api.v2.Pagination + 469, // 242: datanode.api.v2.LiquidityProvider.fee_share:type_name -> vega.LiquidityProviderFeeShare + 470, // 243: datanode.api.v2.LiquidityProvider.sla:type_name -> vega.LiquidityProviderSLA + 226, // 244: datanode.api.v2.LiquidityProviderEdge.node:type_name -> datanode.api.v2.LiquidityProvider + 227, // 245: datanode.api.v2.LiquidityProviderConnection.edges:type_name -> datanode.api.v2.LiquidityProviderEdge + 7, // 246: datanode.api.v2.LiquidityProviderConnection.page_info:type_name -> datanode.api.v2.PageInfo + 228, // 247: datanode.api.v2.ListLiquidityProvidersResponse.liquidity_providers:type_name -> datanode.api.v2.LiquidityProviderConnection + 6, // 248: datanode.api.v2.ListPaidLiquidityFeesRequest.pagination:type_name -> datanode.api.v2.Pagination + 233, // 249: datanode.api.v2.ListPaidLiquidityFeesResponse.paid_liquidity_fees:type_name -> datanode.api.v2.PaidLiquidityFeesConnection + 471, // 250: datanode.api.v2.PaidLiquidityFeesEdge.node:type_name -> vega.events.v1.PaidLiquidityFeesStats + 232, // 251: datanode.api.v2.PaidLiquidityFeesConnection.edges:type_name -> datanode.api.v2.PaidLiquidityFeesEdge + 7, // 252: datanode.api.v2.PaidLiquidityFeesConnection.page_info:type_name -> datanode.api.v2.PageInfo + 458, // 253: datanode.api.v2.GetGovernanceDataResponse.data:type_name -> vega.GovernanceData + 472, // 254: datanode.api.v2.ListGovernanceDataRequest.proposal_state:type_name -> vega.Proposal.State + 5, // 255: datanode.api.v2.ListGovernanceDataRequest.proposal_type:type_name -> datanode.api.v2.ListGovernanceDataRequest.Type + 6, // 256: datanode.api.v2.ListGovernanceDataRequest.pagination:type_name -> datanode.api.v2.Pagination + 239, // 257: datanode.api.v2.ListGovernanceDataResponse.connection:type_name -> datanode.api.v2.GovernanceDataConnection + 458, // 258: datanode.api.v2.GovernanceDataEdge.node:type_name -> vega.GovernanceData + 238, // 259: datanode.api.v2.GovernanceDataConnection.edges:type_name -> datanode.api.v2.GovernanceDataEdge + 7, // 260: datanode.api.v2.GovernanceDataConnection.page_info:type_name -> datanode.api.v2.PageInfo + 458, // 261: datanode.api.v2.ObserveGovernanceResponse.data:type_name -> vega.GovernanceData + 6, // 262: datanode.api.v2.ListDelegationsRequest.pagination:type_name -> datanode.api.v2.Pagination + 245, // 263: datanode.api.v2.ListDelegationsResponse.delegations:type_name -> datanode.api.v2.DelegationsConnection + 473, // 264: datanode.api.v2.DelegationEdge.node:type_name -> vega.Delegation + 244, // 265: datanode.api.v2.DelegationsConnection.edges:type_name -> datanode.api.v2.DelegationEdge + 7, // 266: datanode.api.v2.DelegationsConnection.page_info:type_name -> datanode.api.v2.PageInfo + 473, // 267: datanode.api.v2.ObserveDelegationsResponse.delegation:type_name -> vega.Delegation + 474, // 268: datanode.api.v2.NodeBasic.status:type_name -> vega.NodeStatus + 475, // 269: datanode.api.v2.GetNetworkDataResponse.node_data:type_name -> vega.NodeData + 476, // 270: datanode.api.v2.GetNodeResponse.node:type_name -> vega.Node + 6, // 271: datanode.api.v2.ListNodesRequest.pagination:type_name -> datanode.api.v2.Pagination + 256, // 272: datanode.api.v2.ListNodesResponse.nodes:type_name -> datanode.api.v2.NodesConnection + 476, // 273: datanode.api.v2.NodeEdge.node:type_name -> vega.Node + 255, // 274: datanode.api.v2.NodesConnection.edges:type_name -> datanode.api.v2.NodeEdge + 7, // 275: datanode.api.v2.NodesConnection.page_info:type_name -> datanode.api.v2.PageInfo + 6, // 276: datanode.api.v2.ListNodeSignaturesRequest.pagination:type_name -> datanode.api.v2.Pagination + 260, // 277: datanode.api.v2.ListNodeSignaturesResponse.signatures:type_name -> datanode.api.v2.NodeSignaturesConnection + 477, // 278: datanode.api.v2.NodeSignatureEdge.node:type_name -> vega.commands.v1.NodeSignature + 259, // 279: datanode.api.v2.NodeSignaturesConnection.edges:type_name -> datanode.api.v2.NodeSignatureEdge + 7, // 280: datanode.api.v2.NodeSignaturesConnection.page_info:type_name -> datanode.api.v2.PageInfo + 478, // 281: datanode.api.v2.GetEpochResponse.epoch:type_name -> vega.Epoch + 479, // 282: datanode.api.v2.EstimateFeeResponse.fee:type_name -> vega.Fee + 480, // 283: datanode.api.v2.EstimateMarginRequest.side:type_name -> vega.Side + 434, // 284: datanode.api.v2.EstimateMarginRequest.type:type_name -> vega.Order.Type + 461, // 285: datanode.api.v2.EstimateMarginResponse.margin_levels:type_name -> vega.MarginLevels + 6, // 286: datanode.api.v2.ListNetworkParametersRequest.pagination:type_name -> datanode.api.v2.Pagination + 272, // 287: datanode.api.v2.ListNetworkParametersResponse.network_parameters:type_name -> datanode.api.v2.NetworkParameterConnection + 481, // 288: datanode.api.v2.GetNetworkParameterResponse.network_parameter:type_name -> vega.NetworkParameter + 481, // 289: datanode.api.v2.NetworkParameterEdge.node:type_name -> vega.NetworkParameter + 271, // 290: datanode.api.v2.NetworkParameterConnection.edges:type_name -> datanode.api.v2.NetworkParameterEdge + 7, // 291: datanode.api.v2.NetworkParameterConnection.page_info:type_name -> datanode.api.v2.PageInfo + 6, // 292: datanode.api.v2.ListCheckpointsRequest.pagination:type_name -> datanode.api.v2.Pagination + 277, // 293: datanode.api.v2.ListCheckpointsResponse.checkpoints:type_name -> datanode.api.v2.CheckpointsConnection + 273, // 294: datanode.api.v2.CheckpointEdge.node:type_name -> datanode.api.v2.Checkpoint + 276, // 295: datanode.api.v2.CheckpointsConnection.edges:type_name -> datanode.api.v2.CheckpointEdge + 7, // 296: datanode.api.v2.CheckpointsConnection.page_info:type_name -> datanode.api.v2.PageInfo + 6, // 297: datanode.api.v2.GetStakeRequest.pagination:type_name -> datanode.api.v2.Pagination + 281, // 298: datanode.api.v2.GetStakeResponse.stake_linkings:type_name -> datanode.api.v2.StakesConnection + 482, // 299: datanode.api.v2.StakeLinkingEdge.node:type_name -> vega.events.v1.StakeLinking + 280, // 300: datanode.api.v2.StakesConnection.edges:type_name -> datanode.api.v2.StakeLinkingEdge + 7, // 301: datanode.api.v2.StakesConnection.page_info:type_name -> datanode.api.v2.PageInfo + 483, // 302: datanode.api.v2.GetRiskFactorsResponse.risk_factor:type_name -> vega.RiskFactor + 484, // 303: datanode.api.v2.ObserveEventBusRequest.type:type_name -> vega.events.v1.BusEventType + 485, // 304: datanode.api.v2.ObserveEventBusResponse.events:type_name -> vega.events.v1.BusEvent + 486, // 305: datanode.api.v2.ObserveLedgerMovementsResponse.ledger_movement:type_name -> vega.LedgerMovement + 6, // 306: datanode.api.v2.ListKeyRotationsRequest.pagination:type_name -> datanode.api.v2.Pagination + 291, // 307: datanode.api.v2.ListKeyRotationsResponse.rotations:type_name -> datanode.api.v2.KeyRotationConnection + 487, // 308: datanode.api.v2.KeyRotationEdge.node:type_name -> vega.events.v1.KeyRotation + 290, // 309: datanode.api.v2.KeyRotationConnection.edges:type_name -> datanode.api.v2.KeyRotationEdge + 7, // 310: datanode.api.v2.KeyRotationConnection.page_info:type_name -> datanode.api.v2.PageInfo + 6, // 311: datanode.api.v2.ListEthereumKeyRotationsRequest.pagination:type_name -> datanode.api.v2.Pagination + 294, // 312: datanode.api.v2.ListEthereumKeyRotationsResponse.key_rotations:type_name -> datanode.api.v2.EthereumKeyRotationsConnection + 295, // 313: datanode.api.v2.EthereumKeyRotationsConnection.edges:type_name -> datanode.api.v2.EthereumKeyRotationEdge + 7, // 314: datanode.api.v2.EthereumKeyRotationsConnection.page_info:type_name -> datanode.api.v2.PageInfo + 488, // 315: datanode.api.v2.EthereumKeyRotationEdge.node:type_name -> vega.events.v1.EthereumKeyRotation + 489, // 316: datanode.api.v2.ListProtocolUpgradeProposalsRequest.status:type_name -> vega.events.v1.ProtocolUpgradeProposalStatus + 6, // 317: datanode.api.v2.ListProtocolUpgradeProposalsRequest.pagination:type_name -> datanode.api.v2.Pagination + 303, // 318: datanode.api.v2.ListProtocolUpgradeProposalsResponse.protocol_upgrade_proposals:type_name -> datanode.api.v2.ProtocolUpgradeProposalConnection + 304, // 319: datanode.api.v2.ProtocolUpgradeProposalConnection.edges:type_name -> datanode.api.v2.ProtocolUpgradeProposalEdge + 7, // 320: datanode.api.v2.ProtocolUpgradeProposalConnection.page_info:type_name -> datanode.api.v2.PageInfo + 490, // 321: datanode.api.v2.ProtocolUpgradeProposalEdge.node:type_name -> vega.events.v1.ProtocolUpgradeEvent + 6, // 322: datanode.api.v2.ListCoreSnapshotsRequest.pagination:type_name -> datanode.api.v2.Pagination + 307, // 323: datanode.api.v2.ListCoreSnapshotsResponse.core_snapshots:type_name -> datanode.api.v2.CoreSnapshotConnection + 308, // 324: datanode.api.v2.CoreSnapshotConnection.edges:type_name -> datanode.api.v2.CoreSnapshotEdge + 7, // 325: datanode.api.v2.CoreSnapshotConnection.page_info:type_name -> datanode.api.v2.PageInfo + 491, // 326: datanode.api.v2.CoreSnapshotEdge.node:type_name -> vega.events.v1.CoreSnapshotData + 309, // 327: datanode.api.v2.GetMostRecentNetworkHistorySegmentResponse.segment:type_name -> datanode.api.v2.HistorySegment + 309, // 328: datanode.api.v2.ListAllNetworkHistorySegmentsResponse.segments:type_name -> datanode.api.v2.HistorySegment + 3, // 329: datanode.api.v2.ExportNetworkHistoryRequest.table:type_name -> datanode.api.v2.Table + 492, // 330: datanode.api.v2.ListEntitiesResponse.accounts:type_name -> vega.Account + 432, // 331: datanode.api.v2.ListEntitiesResponse.orders:type_name -> vega.Order + 441, // 332: datanode.api.v2.ListEntitiesResponse.positions:type_name -> vega.Position + 493, // 333: datanode.api.v2.ListEntitiesResponse.ledger_entries:type_name -> vega.LedgerEntry + 12, // 334: datanode.api.v2.ListEntitiesResponse.balance_changes:type_name -> datanode.api.v2.AccountBalance + 449, // 335: datanode.api.v2.ListEntitiesResponse.transfers:type_name -> vega.events.v1.Transfer + 452, // 336: datanode.api.v2.ListEntitiesResponse.votes:type_name -> vega.Vote + 123, // 337: datanode.api.v2.ListEntitiesResponse.erc20_multi_sig_signer_added_bundles:type_name -> datanode.api.v2.ERC20MultiSigSignerAddedBundle + 129, // 338: datanode.api.v2.ListEntitiesResponse.erc20_multi_sig_signer_removed_bundles:type_name -> datanode.api.v2.ERC20MultiSigSignerRemovedBundle + 447, // 339: datanode.api.v2.ListEntitiesResponse.trades:type_name -> vega.Trade + 455, // 340: datanode.api.v2.ListEntitiesResponse.oracle_specs:type_name -> vega.OracleSpec + 456, // 341: datanode.api.v2.ListEntitiesResponse.oracle_data:type_name -> vega.OracleData + 457, // 342: datanode.api.v2.ListEntitiesResponse.markets:type_name -> vega.Market + 459, // 343: datanode.api.v2.ListEntitiesResponse.parties:type_name -> vega.Party + 461, // 344: datanode.api.v2.ListEntitiesResponse.margin_levels:type_name -> vega.MarginLevels + 462, // 345: datanode.api.v2.ListEntitiesResponse.rewards:type_name -> vega.Reward + 465, // 346: datanode.api.v2.ListEntitiesResponse.deposits:type_name -> vega.Deposit + 466, // 347: datanode.api.v2.ListEntitiesResponse.withdrawals:type_name -> vega.Withdrawal + 467, // 348: datanode.api.v2.ListEntitiesResponse.assets:type_name -> vega.Asset + 468, // 349: datanode.api.v2.ListEntitiesResponse.liquidity_provisions:type_name -> vega.LiquidityProvision + 494, // 350: datanode.api.v2.ListEntitiesResponse.proposals:type_name -> vega.Proposal + 473, // 351: datanode.api.v2.ListEntitiesResponse.delegations:type_name -> vega.Delegation + 248, // 352: datanode.api.v2.ListEntitiesResponse.nodes:type_name -> datanode.api.v2.NodeBasic + 477, // 353: datanode.api.v2.ListEntitiesResponse.node_signatures:type_name -> vega.commands.v1.NodeSignature + 481, // 354: datanode.api.v2.ListEntitiesResponse.network_parameters:type_name -> vega.NetworkParameter + 487, // 355: datanode.api.v2.ListEntitiesResponse.key_rotations:type_name -> vega.events.v1.KeyRotation + 488, // 356: datanode.api.v2.ListEntitiesResponse.ethereum_key_rotations:type_name -> vega.events.v1.EthereumKeyRotation + 490, // 357: datanode.api.v2.ListEntitiesResponse.protocol_upgrade_proposals:type_name -> vega.events.v1.ProtocolUpgradeEvent + 495, // 358: datanode.api.v2.GetPartyActivityStreakResponse.activity_streak:type_name -> vega.events.v1.PartyActivityStreak + 6, // 359: datanode.api.v2.ListFundingPaymentsRequest.pagination:type_name -> datanode.api.v2.Pagination + 325, // 360: datanode.api.v2.FundingPaymentEdge.node:type_name -> datanode.api.v2.FundingPayment + 327, // 361: datanode.api.v2.FundingPaymentConnection.edges:type_name -> datanode.api.v2.FundingPaymentEdge + 7, // 362: datanode.api.v2.FundingPaymentConnection.page_info:type_name -> datanode.api.v2.PageInfo + 328, // 363: datanode.api.v2.ListFundingPaymentsResponse.funding_payments:type_name -> datanode.api.v2.FundingPaymentConnection + 298, // 364: datanode.api.v2.ListFundingPeriodsRequest.date_range:type_name -> datanode.api.v2.DateRange + 6, // 365: datanode.api.v2.ListFundingPeriodsRequest.pagination:type_name -> datanode.api.v2.Pagination + 496, // 366: datanode.api.v2.FundingPeriodEdge.node:type_name -> vega.events.v1.FundingPeriod + 331, // 367: datanode.api.v2.FundingPeriodConnection.edges:type_name -> datanode.api.v2.FundingPeriodEdge + 7, // 368: datanode.api.v2.FundingPeriodConnection.page_info:type_name -> datanode.api.v2.PageInfo + 332, // 369: datanode.api.v2.ListFundingPeriodsResponse.funding_periods:type_name -> datanode.api.v2.FundingPeriodConnection + 298, // 370: datanode.api.v2.ListFundingPeriodDataPointsRequest.date_range:type_name -> datanode.api.v2.DateRange + 497, // 371: datanode.api.v2.ListFundingPeriodDataPointsRequest.source:type_name -> vega.events.v1.FundingPeriodDataPoint.Source + 6, // 372: datanode.api.v2.ListFundingPeriodDataPointsRequest.pagination:type_name -> datanode.api.v2.Pagination + 498, // 373: datanode.api.v2.FundingPeriodDataPointEdge.node:type_name -> vega.events.v1.FundingPeriodDataPoint + 335, // 374: datanode.api.v2.FundingPeriodDataPointConnection.edges:type_name -> datanode.api.v2.FundingPeriodDataPointEdge + 7, // 375: datanode.api.v2.FundingPeriodDataPointConnection.page_info:type_name -> datanode.api.v2.PageInfo + 336, // 376: datanode.api.v2.ListFundingPeriodDataPointsResponse.funding_period_data_points:type_name -> datanode.api.v2.FundingPeriodDataPointConnection + 480, // 377: datanode.api.v2.OrderInfo.side:type_name -> vega.Side + 340, // 378: datanode.api.v2.EstimatePositionRequest.orders:type_name -> datanode.api.v2.OrderInfo + 499, // 379: datanode.api.v2.EstimatePositionRequest.margin_mode:type_name -> vega.MarginMode + 344, // 380: datanode.api.v2.EstimatePositionResponse.margin:type_name -> datanode.api.v2.MarginEstimate + 343, // 381: datanode.api.v2.EstimatePositionResponse.collateral_increase_estimate:type_name -> datanode.api.v2.CollateralIncreaseEstimate + 345, // 382: datanode.api.v2.EstimatePositionResponse.liquidation:type_name -> datanode.api.v2.LiquidationEstimate + 461, // 383: datanode.api.v2.MarginEstimate.worst_case:type_name -> vega.MarginLevels + 461, // 384: datanode.api.v2.MarginEstimate.best_case:type_name -> vega.MarginLevels + 346, // 385: datanode.api.v2.LiquidationEstimate.worst_case:type_name -> datanode.api.v2.LiquidationPrice + 346, // 386: datanode.api.v2.LiquidationEstimate.best_case:type_name -> datanode.api.v2.LiquidationPrice + 349, // 387: datanode.api.v2.GetCurrentReferralProgramResponse.current_referral_program:type_name -> datanode.api.v2.ReferralProgram + 500, // 388: datanode.api.v2.ReferralProgram.benefit_tiers:type_name -> vega.BenefitTier + 501, // 389: datanode.api.v2.ReferralProgram.staking_tiers:type_name -> vega.StakingTier + 350, // 390: datanode.api.v2.ReferralSetEdge.node:type_name -> datanode.api.v2.ReferralSet + 351, // 391: datanode.api.v2.ReferralSetConnection.edges:type_name -> datanode.api.v2.ReferralSetEdge + 7, // 392: datanode.api.v2.ReferralSetConnection.page_info:type_name -> datanode.api.v2.PageInfo + 6, // 393: datanode.api.v2.ListReferralSetsRequest.pagination:type_name -> datanode.api.v2.Pagination + 352, // 394: datanode.api.v2.ListReferralSetsResponse.referral_sets:type_name -> datanode.api.v2.ReferralSetConnection + 355, // 395: datanode.api.v2.ReferralSetRefereeEdge.node:type_name -> datanode.api.v2.ReferralSetReferee + 356, // 396: datanode.api.v2.ReferralSetRefereeConnection.edges:type_name -> datanode.api.v2.ReferralSetRefereeEdge + 7, // 397: datanode.api.v2.ReferralSetRefereeConnection.page_info:type_name -> datanode.api.v2.PageInfo + 6, // 398: datanode.api.v2.ListReferralSetRefereesRequest.pagination:type_name -> datanode.api.v2.Pagination + 357, // 399: datanode.api.v2.ListReferralSetRefereesResponse.referral_set_referees:type_name -> datanode.api.v2.ReferralSetRefereeConnection + 6, // 400: datanode.api.v2.GetReferralSetStatsRequest.pagination:type_name -> datanode.api.v2.Pagination + 362, // 401: datanode.api.v2.GetReferralSetStatsResponse.stats:type_name -> datanode.api.v2.ReferralSetStatsConnection + 363, // 402: datanode.api.v2.ReferralSetStatsConnection.edges:type_name -> datanode.api.v2.ReferralSetStatsEdge + 7, // 403: datanode.api.v2.ReferralSetStatsConnection.page_info:type_name -> datanode.api.v2.PageInfo + 364, // 404: datanode.api.v2.ReferralSetStatsEdge.node:type_name -> datanode.api.v2.ReferralSetStats + 365, // 405: datanode.api.v2.TeamEdge.node:type_name -> datanode.api.v2.Team + 366, // 406: datanode.api.v2.TeamConnection.edges:type_name -> datanode.api.v2.TeamEdge + 7, // 407: datanode.api.v2.TeamConnection.page_info:type_name -> datanode.api.v2.PageInfo + 6, // 408: datanode.api.v2.ListTeamsRequest.pagination:type_name -> datanode.api.v2.Pagination + 367, // 409: datanode.api.v2.ListTeamsResponse.teams:type_name -> datanode.api.v2.TeamConnection + 6, // 410: datanode.api.v2.ListTeamsStatisticsRequest.pagination:type_name -> datanode.api.v2.Pagination + 372, // 411: datanode.api.v2.ListTeamsStatisticsResponse.statistics:type_name -> datanode.api.v2.TeamsStatisticsConnection + 373, // 412: datanode.api.v2.TeamsStatisticsConnection.edges:type_name -> datanode.api.v2.TeamStatisticsEdge + 7, // 413: datanode.api.v2.TeamsStatisticsConnection.page_info:type_name -> datanode.api.v2.PageInfo + 374, // 414: datanode.api.v2.TeamStatisticsEdge.node:type_name -> datanode.api.v2.TeamStatistics + 375, // 415: datanode.api.v2.TeamStatistics.quantum_rewards:type_name -> datanode.api.v2.QuantumRewardsPerEpoch + 376, // 416: datanode.api.v2.TeamStatistics.quantum_volumes:type_name -> datanode.api.v2.QuantumVolumesPerEpoch + 6, // 417: datanode.api.v2.ListTeamMembersStatisticsRequest.pagination:type_name -> datanode.api.v2.Pagination + 379, // 418: datanode.api.v2.ListTeamMembersStatisticsResponse.statistics:type_name -> datanode.api.v2.TeamMembersStatisticsConnection + 380, // 419: datanode.api.v2.TeamMembersStatisticsConnection.edges:type_name -> datanode.api.v2.TeamMemberStatisticsEdge + 7, // 420: datanode.api.v2.TeamMembersStatisticsConnection.page_info:type_name -> datanode.api.v2.PageInfo + 381, // 421: datanode.api.v2.TeamMemberStatisticsEdge.node:type_name -> datanode.api.v2.TeamMemberStatistics + 375, // 422: datanode.api.v2.TeamMemberStatistics.quantum_rewards:type_name -> datanode.api.v2.QuantumRewardsPerEpoch + 376, // 423: datanode.api.v2.TeamMemberStatistics.quantum_volumes:type_name -> datanode.api.v2.QuantumVolumesPerEpoch + 6, // 424: datanode.api.v2.ListTeamRefereesRequest.pagination:type_name -> datanode.api.v2.Pagination + 383, // 425: datanode.api.v2.TeamRefereeEdge.node:type_name -> datanode.api.v2.TeamReferee + 384, // 426: datanode.api.v2.TeamRefereeConnection.edges:type_name -> datanode.api.v2.TeamRefereeEdge + 7, // 427: datanode.api.v2.TeamRefereeConnection.page_info:type_name -> datanode.api.v2.PageInfo + 385, // 428: datanode.api.v2.ListTeamRefereesResponse.team_referees:type_name -> datanode.api.v2.TeamRefereeConnection + 387, // 429: datanode.api.v2.TeamRefereeHistoryEdge.node:type_name -> datanode.api.v2.TeamRefereeHistory + 388, // 430: datanode.api.v2.TeamRefereeHistoryConnection.edges:type_name -> datanode.api.v2.TeamRefereeHistoryEdge + 7, // 431: datanode.api.v2.TeamRefereeHistoryConnection.page_info:type_name -> datanode.api.v2.PageInfo + 6, // 432: datanode.api.v2.ListTeamRefereeHistoryRequest.pagination:type_name -> datanode.api.v2.Pagination + 389, // 433: datanode.api.v2.ListTeamRefereeHistoryResponse.team_referee_history:type_name -> datanode.api.v2.TeamRefereeHistoryConnection + 502, // 434: datanode.api.v2.GetFeesStatsResponse.fees_stats:type_name -> vega.events.v1.FeesStats + 404, // 435: datanode.api.v2.GetFeesStatsForPartyResponse.fees_stats_for_party:type_name -> datanode.api.v2.FeesStatsForParty + 403, // 436: datanode.api.v2.GetCurrentVolumeDiscountProgramResponse.current_volume_discount_program:type_name -> datanode.api.v2.VolumeDiscountProgram + 6, // 437: datanode.api.v2.GetVolumeDiscountStatsRequest.pagination:type_name -> datanode.api.v2.Pagination + 400, // 438: datanode.api.v2.GetVolumeDiscountStatsResponse.stats:type_name -> datanode.api.v2.VolumeDiscountStatsConnection + 401, // 439: datanode.api.v2.VolumeDiscountStatsConnection.edges:type_name -> datanode.api.v2.VolumeDiscountStatsEdge + 7, // 440: datanode.api.v2.VolumeDiscountStatsConnection.page_info:type_name -> datanode.api.v2.PageInfo + 402, // 441: datanode.api.v2.VolumeDiscountStatsEdge.node:type_name -> datanode.api.v2.VolumeDiscountStats + 503, // 442: datanode.api.v2.VolumeDiscountProgram.benefit_tiers:type_name -> vega.VolumeBenefitTier + 504, // 443: datanode.api.v2.ObserveTransactionResultsResponse.transaction_results:type_name -> vega.events.v1.TransactionResult + 431, // 444: datanode.api.v2.EstimateTransferFeeRequest.from_account_type:type_name -> vega.AccountType + 505, // 445: datanode.api.v2.ListGamesRequest.entity_scope:type_name -> vega.EntityScope + 6, // 446: datanode.api.v2.ListGamesRequest.pagination:type_name -> datanode.api.v2.Pagination + 413, // 447: datanode.api.v2.ListGamesResponse.games:type_name -> datanode.api.v2.GamesConnection + 414, // 448: datanode.api.v2.GamesConnection.edges:type_name -> datanode.api.v2.GameEdge + 7, // 449: datanode.api.v2.GamesConnection.page_info:type_name -> datanode.api.v2.PageInfo + 415, // 450: datanode.api.v2.GameEdge.node:type_name -> datanode.api.v2.Game + 416, // 451: datanode.api.v2.Game.team:type_name -> datanode.api.v2.TeamGameEntities + 417, // 452: datanode.api.v2.Game.individual:type_name -> datanode.api.v2.IndividualGameEntities + 418, // 453: datanode.api.v2.TeamGameEntities.team:type_name -> datanode.api.v2.TeamGameEntity + 420, // 454: datanode.api.v2.IndividualGameEntities.individual:type_name -> datanode.api.v2.IndividualGameEntity + 419, // 455: datanode.api.v2.TeamGameEntity.team:type_name -> datanode.api.v2.TeamGameParticipation + 506, // 456: datanode.api.v2.TeamGameEntity.reward_metric:type_name -> vega.DispatchMetric + 420, // 457: datanode.api.v2.TeamGameParticipation.members_participating:type_name -> datanode.api.v2.IndividualGameEntity + 506, // 458: datanode.api.v2.IndividualGameEntity.reward_metric:type_name -> vega.DispatchMetric + 6, // 459: datanode.api.v2.ListPartyMarginModesRequest.pagination:type_name -> datanode.api.v2.Pagination + 423, // 460: datanode.api.v2.ListPartyMarginModesResponse.party_margin_modes:type_name -> datanode.api.v2.PartyMarginModesConnection + 424, // 461: datanode.api.v2.PartyMarginModesConnection.edges:type_name -> datanode.api.v2.PartyMarginModeEdge + 7, // 462: datanode.api.v2.PartyMarginModesConnection.page_info:type_name -> datanode.api.v2.PageInfo + 425, // 463: datanode.api.v2.PartyMarginModeEdge.node:type_name -> datanode.api.v2.PartyMarginMode + 499, // 464: datanode.api.v2.PartyMarginMode.margin_mode:type_name -> vega.MarginMode + 426, // 465: datanode.api.v2.GetTimeWeightedNotionalPositionResponse.time_weighted_notional_position:type_name -> datanode.api.v2.TimeWeightedNotionalPosition + 13, // 466: datanode.api.v2.TradingDataService.ListAccounts:input_type -> datanode.api.v2.ListAccountsRequest + 17, // 467: datanode.api.v2.TradingDataService.ObserveAccounts:input_type -> datanode.api.v2.ObserveAccountsRequest + 21, // 468: datanode.api.v2.TradingDataService.Info:input_type -> datanode.api.v2.InfoRequest + 23, // 469: datanode.api.v2.TradingDataService.GetOrder:input_type -> datanode.api.v2.GetOrderRequest + 26, // 470: datanode.api.v2.TradingDataService.ListOrders:input_type -> datanode.api.v2.ListOrdersRequest + 28, // 471: datanode.api.v2.TradingDataService.ListOrderVersions:input_type -> datanode.api.v2.ListOrderVersionsRequest + 30, // 472: datanode.api.v2.TradingDataService.ObserveOrders:input_type -> datanode.api.v2.ObserveOrdersRequest + 34, // 473: datanode.api.v2.TradingDataService.GetStopOrder:input_type -> datanode.api.v2.GetStopOrderRequest + 46, // 474: datanode.api.v2.TradingDataService.ListStopOrders:input_type -> datanode.api.v2.ListStopOrdersRequest + 36, // 475: datanode.api.v2.TradingDataService.ListGameTeamScores:input_type -> datanode.api.v2.ListGameTeamScoresRequest + 41, // 476: datanode.api.v2.TradingDataService.ListGamePartyScores:input_type -> datanode.api.v2.ListGamePartyScoresRequest + 51, // 477: datanode.api.v2.TradingDataService.ListPositions:input_type -> datanode.api.v2.ListPositionsRequest + 54, // 478: datanode.api.v2.TradingDataService.ListAllPositions:input_type -> datanode.api.v2.ListAllPositionsRequest + 58, // 479: datanode.api.v2.TradingDataService.ObservePositions:input_type -> datanode.api.v2.ObservePositionsRequest + 64, // 480: datanode.api.v2.TradingDataService.ListLedgerEntries:input_type -> datanode.api.v2.ListLedgerEntriesRequest + 65, // 481: datanode.api.v2.TradingDataService.ExportLedgerEntries:input_type -> datanode.api.v2.ExportLedgerEntriesRequest + 69, // 482: datanode.api.v2.TradingDataService.ListBalanceChanges:input_type -> datanode.api.v2.ListBalanceChangesRequest + 87, // 483: datanode.api.v2.TradingDataService.GetLatestMarketData:input_type -> datanode.api.v2.GetLatestMarketDataRequest + 85, // 484: datanode.api.v2.TradingDataService.ListLatestMarketData:input_type -> datanode.api.v2.ListLatestMarketDataRequest + 83, // 485: datanode.api.v2.TradingDataService.GetLatestMarketDepth:input_type -> datanode.api.v2.GetLatestMarketDepthRequest + 77, // 486: datanode.api.v2.TradingDataService.ObserveMarketsDepth:input_type -> datanode.api.v2.ObserveMarketsDepthRequest + 79, // 487: datanode.api.v2.TradingDataService.ObserveMarketsDepthUpdates:input_type -> datanode.api.v2.ObserveMarketsDepthUpdatesRequest + 81, // 488: datanode.api.v2.TradingDataService.ObserveMarketsData:input_type -> datanode.api.v2.ObserveMarketsDataRequest + 89, // 489: datanode.api.v2.TradingDataService.GetMarketDataHistoryByID:input_type -> datanode.api.v2.GetMarketDataHistoryByIDRequest + 93, // 490: datanode.api.v2.TradingDataService.ListTransfers:input_type -> datanode.api.v2.ListTransfersRequest + 98, // 491: datanode.api.v2.TradingDataService.GetTransfer:input_type -> datanode.api.v2.GetTransferRequest + 100, // 492: datanode.api.v2.TradingDataService.GetNetworkLimits:input_type -> datanode.api.v2.GetNetworkLimitsRequest + 108, // 493: datanode.api.v2.TradingDataService.ListCandleData:input_type -> datanode.api.v2.ListCandleDataRequest + 106, // 494: datanode.api.v2.TradingDataService.ObserveCandleData:input_type -> datanode.api.v2.ObserveCandleDataRequest + 102, // 495: datanode.api.v2.TradingDataService.ListCandleIntervals:input_type -> datanode.api.v2.ListCandleIntervalsRequest + 112, // 496: datanode.api.v2.TradingDataService.ListVotes:input_type -> datanode.api.v2.ListVotesRequest + 116, // 497: datanode.api.v2.TradingDataService.ObserveVotes:input_type -> datanode.api.v2.ObserveVotesRequest + 118, // 498: datanode.api.v2.TradingDataService.ListERC20MultiSigSignerAddedBundles:input_type -> datanode.api.v2.ListERC20MultiSigSignerAddedBundlesRequest + 124, // 499: datanode.api.v2.TradingDataService.ListERC20MultiSigSignerRemovedBundles:input_type -> datanode.api.v2.ListERC20MultiSigSignerRemovedBundlesRequest + 130, // 500: datanode.api.v2.TradingDataService.GetERC20ListAssetBundle:input_type -> datanode.api.v2.GetERC20ListAssetBundleRequest + 132, // 501: datanode.api.v2.TradingDataService.GetERC20SetAssetLimitsBundle:input_type -> datanode.api.v2.GetERC20SetAssetLimitsBundleRequest + 134, // 502: datanode.api.v2.TradingDataService.GetERC20WithdrawalApproval:input_type -> datanode.api.v2.GetERC20WithdrawalApprovalRequest + 136, // 503: datanode.api.v2.TradingDataService.GetLastTrade:input_type -> datanode.api.v2.GetLastTradeRequest + 138, // 504: datanode.api.v2.TradingDataService.ListTrades:input_type -> datanode.api.v2.ListTradesRequest + 142, // 505: datanode.api.v2.TradingDataService.ObserveTrades:input_type -> datanode.api.v2.ObserveTradesRequest + 144, // 506: datanode.api.v2.TradingDataService.GetOracleSpec:input_type -> datanode.api.v2.GetOracleSpecRequest + 146, // 507: datanode.api.v2.TradingDataService.ListOracleSpecs:input_type -> datanode.api.v2.ListOracleSpecsRequest + 148, // 508: datanode.api.v2.TradingDataService.ListOracleData:input_type -> datanode.api.v2.ListOracleDataRequest + 154, // 509: datanode.api.v2.TradingDataService.GetMarket:input_type -> datanode.api.v2.GetMarketRequest + 156, // 510: datanode.api.v2.TradingDataService.ListMarkets:input_type -> datanode.api.v2.ListMarketsRequest + 160, // 511: datanode.api.v2.TradingDataService.ListSuccessorMarkets:input_type -> datanode.api.v2.ListSuccessorMarketsRequest + 165, // 512: datanode.api.v2.TradingDataService.GetParty:input_type -> datanode.api.v2.GetPartyRequest + 167, // 513: datanode.api.v2.TradingDataService.ListParties:input_type -> datanode.api.v2.ListPartiesRequest + 171, // 514: datanode.api.v2.TradingDataService.ListPartiesProfiles:input_type -> datanode.api.v2.ListPartiesProfilesRequest + 176, // 515: datanode.api.v2.TradingDataService.ListMarginLevels:input_type -> datanode.api.v2.ListMarginLevelsRequest + 178, // 516: datanode.api.v2.TradingDataService.ObserveMarginLevels:input_type -> datanode.api.v2.ObserveMarginLevelsRequest + 183, // 517: datanode.api.v2.TradingDataService.ListRewards:input_type -> datanode.api.v2.ListRewardsRequest + 187, // 518: datanode.api.v2.TradingDataService.ListRewardSummaries:input_type -> datanode.api.v2.ListRewardSummariesRequest + 190, // 519: datanode.api.v2.TradingDataService.ListEpochRewardSummaries:input_type -> datanode.api.v2.ListEpochRewardSummariesRequest + 196, // 520: datanode.api.v2.TradingDataService.GetDeposit:input_type -> datanode.api.v2.GetDepositRequest + 198, // 521: datanode.api.v2.TradingDataService.ListDeposits:input_type -> datanode.api.v2.ListDepositsRequest + 202, // 522: datanode.api.v2.TradingDataService.GetWithdrawal:input_type -> datanode.api.v2.GetWithdrawalRequest + 204, // 523: datanode.api.v2.TradingDataService.ListWithdrawals:input_type -> datanode.api.v2.ListWithdrawalsRequest + 208, // 524: datanode.api.v2.TradingDataService.GetAsset:input_type -> datanode.api.v2.GetAssetRequest + 210, // 525: datanode.api.v2.TradingDataService.ListAssets:input_type -> datanode.api.v2.ListAssetsRequest + 214, // 526: datanode.api.v2.TradingDataService.ListLiquidityProvisions:input_type -> datanode.api.v2.ListLiquidityProvisionsRequest + 215, // 527: datanode.api.v2.TradingDataService.ListAllLiquidityProvisions:input_type -> datanode.api.v2.ListAllLiquidityProvisionsRequest + 223, // 528: datanode.api.v2.TradingDataService.ObserveLiquidityProvisions:input_type -> datanode.api.v2.ObserveLiquidityProvisionsRequest + 225, // 529: datanode.api.v2.TradingDataService.ListLiquidityProviders:input_type -> datanode.api.v2.ListLiquidityProvidersRequest + 230, // 530: datanode.api.v2.TradingDataService.ListPaidLiquidityFees:input_type -> datanode.api.v2.ListPaidLiquidityFeesRequest + 234, // 531: datanode.api.v2.TradingDataService.GetGovernanceData:input_type -> datanode.api.v2.GetGovernanceDataRequest + 236, // 532: datanode.api.v2.TradingDataService.ListGovernanceData:input_type -> datanode.api.v2.ListGovernanceDataRequest + 240, // 533: datanode.api.v2.TradingDataService.ObserveGovernance:input_type -> datanode.api.v2.ObserveGovernanceRequest + 242, // 534: datanode.api.v2.TradingDataService.ListDelegations:input_type -> datanode.api.v2.ListDelegationsRequest + 249, // 535: datanode.api.v2.TradingDataService.GetNetworkData:input_type -> datanode.api.v2.GetNetworkDataRequest + 251, // 536: datanode.api.v2.TradingDataService.GetNode:input_type -> datanode.api.v2.GetNodeRequest + 253, // 537: datanode.api.v2.TradingDataService.ListNodes:input_type -> datanode.api.v2.ListNodesRequest + 257, // 538: datanode.api.v2.TradingDataService.ListNodeSignatures:input_type -> datanode.api.v2.ListNodeSignaturesRequest + 261, // 539: datanode.api.v2.TradingDataService.GetEpoch:input_type -> datanode.api.v2.GetEpochRequest + 263, // 540: datanode.api.v2.TradingDataService.EstimateFee:input_type -> datanode.api.v2.EstimateFeeRequest + 265, // 541: datanode.api.v2.TradingDataService.EstimateMargin:input_type -> datanode.api.v2.EstimateMarginRequest + 341, // 542: datanode.api.v2.TradingDataService.EstimatePosition:input_type -> datanode.api.v2.EstimatePositionRequest + 267, // 543: datanode.api.v2.TradingDataService.ListNetworkParameters:input_type -> datanode.api.v2.ListNetworkParametersRequest + 269, // 544: datanode.api.v2.TradingDataService.GetNetworkParameter:input_type -> datanode.api.v2.GetNetworkParameterRequest + 274, // 545: datanode.api.v2.TradingDataService.ListCheckpoints:input_type -> datanode.api.v2.ListCheckpointsRequest + 278, // 546: datanode.api.v2.TradingDataService.GetStake:input_type -> datanode.api.v2.GetStakeRequest + 282, // 547: datanode.api.v2.TradingDataService.GetRiskFactors:input_type -> datanode.api.v2.GetRiskFactorsRequest + 284, // 548: datanode.api.v2.TradingDataService.ObserveEventBus:input_type -> datanode.api.v2.ObserveEventBusRequest + 286, // 549: datanode.api.v2.TradingDataService.ObserveLedgerMovements:input_type -> datanode.api.v2.ObserveLedgerMovementsRequest + 288, // 550: datanode.api.v2.TradingDataService.ListKeyRotations:input_type -> datanode.api.v2.ListKeyRotationsRequest + 292, // 551: datanode.api.v2.TradingDataService.ListEthereumKeyRotations:input_type -> datanode.api.v2.ListEthereumKeyRotationsRequest + 296, // 552: datanode.api.v2.TradingDataService.GetVegaTime:input_type -> datanode.api.v2.GetVegaTimeRequest + 299, // 553: datanode.api.v2.TradingDataService.GetProtocolUpgradeStatus:input_type -> datanode.api.v2.GetProtocolUpgradeStatusRequest + 301, // 554: datanode.api.v2.TradingDataService.ListProtocolUpgradeProposals:input_type -> datanode.api.v2.ListProtocolUpgradeProposalsRequest + 305, // 555: datanode.api.v2.TradingDataService.ListCoreSnapshots:input_type -> datanode.api.v2.ListCoreSnapshotsRequest + 310, // 556: datanode.api.v2.TradingDataService.GetMostRecentNetworkHistorySegment:input_type -> datanode.api.v2.GetMostRecentNetworkHistorySegmentRequest + 312, // 557: datanode.api.v2.TradingDataService.ListAllNetworkHistorySegments:input_type -> datanode.api.v2.ListAllNetworkHistorySegmentsRequest + 314, // 558: datanode.api.v2.TradingDataService.GetActiveNetworkHistoryPeerAddresses:input_type -> datanode.api.v2.GetActiveNetworkHistoryPeerAddressesRequest + 316, // 559: datanode.api.v2.TradingDataService.GetNetworkHistoryStatus:input_type -> datanode.api.v2.GetNetworkHistoryStatusRequest + 318, // 560: datanode.api.v2.TradingDataService.GetNetworkHistoryBootstrapPeers:input_type -> datanode.api.v2.GetNetworkHistoryBootstrapPeersRequest + 321, // 561: datanode.api.v2.TradingDataService.ListEntities:input_type -> datanode.api.v2.ListEntitiesRequest + 330, // 562: datanode.api.v2.TradingDataService.ListFundingPeriods:input_type -> datanode.api.v2.ListFundingPeriodsRequest + 334, // 563: datanode.api.v2.TradingDataService.ListFundingPeriodDataPoints:input_type -> datanode.api.v2.ListFundingPeriodDataPointsRequest + 326, // 564: datanode.api.v2.TradingDataService.ListFundingPayments:input_type -> datanode.api.v2.ListFundingPaymentsRequest + 323, // 565: datanode.api.v2.TradingDataService.GetPartyActivityStreak:input_type -> datanode.api.v2.GetPartyActivityStreakRequest + 347, // 566: datanode.api.v2.TradingDataService.GetCurrentReferralProgram:input_type -> datanode.api.v2.GetCurrentReferralProgramRequest + 353, // 567: datanode.api.v2.TradingDataService.ListReferralSets:input_type -> datanode.api.v2.ListReferralSetsRequest + 358, // 568: datanode.api.v2.TradingDataService.ListReferralSetReferees:input_type -> datanode.api.v2.ListReferralSetRefereesRequest + 360, // 569: datanode.api.v2.TradingDataService.GetReferralSetStats:input_type -> datanode.api.v2.GetReferralSetStatsRequest + 368, // 570: datanode.api.v2.TradingDataService.ListTeams:input_type -> datanode.api.v2.ListTeamsRequest + 370, // 571: datanode.api.v2.TradingDataService.ListTeamsStatistics:input_type -> datanode.api.v2.ListTeamsStatisticsRequest + 377, // 572: datanode.api.v2.TradingDataService.ListTeamMembersStatistics:input_type -> datanode.api.v2.ListTeamMembersStatisticsRequest + 382, // 573: datanode.api.v2.TradingDataService.ListTeamReferees:input_type -> datanode.api.v2.ListTeamRefereesRequest + 390, // 574: datanode.api.v2.TradingDataService.ListTeamRefereeHistory:input_type -> datanode.api.v2.ListTeamRefereeHistoryRequest + 392, // 575: datanode.api.v2.TradingDataService.GetFeesStats:input_type -> datanode.api.v2.GetFeesStatsRequest + 394, // 576: datanode.api.v2.TradingDataService.GetFeesStatsForParty:input_type -> datanode.api.v2.GetFeesStatsForPartyRequest + 396, // 577: datanode.api.v2.TradingDataService.GetCurrentVolumeDiscountProgram:input_type -> datanode.api.v2.GetCurrentVolumeDiscountProgramRequest + 398, // 578: datanode.api.v2.TradingDataService.GetVolumeDiscountStats:input_type -> datanode.api.v2.GetVolumeDiscountStatsRequest + 10, // 579: datanode.api.v2.TradingDataService.GetVestingBalancesSummary:input_type -> datanode.api.v2.GetVestingBalancesSummaryRequest + 8, // 580: datanode.api.v2.TradingDataService.GetPartyVestingStats:input_type -> datanode.api.v2.GetPartyVestingStatsRequest + 405, // 581: datanode.api.v2.TradingDataService.ObserveTransactionResults:input_type -> datanode.api.v2.ObserveTransactionResultsRequest + 407, // 582: datanode.api.v2.TradingDataService.EstimateTransferFee:input_type -> datanode.api.v2.EstimateTransferFeeRequest + 409, // 583: datanode.api.v2.TradingDataService.GetTotalTransferFeeDiscount:input_type -> datanode.api.v2.GetTotalTransferFeeDiscountRequest + 411, // 584: datanode.api.v2.TradingDataService.ListGames:input_type -> datanode.api.v2.ListGamesRequest + 421, // 585: datanode.api.v2.TradingDataService.ListPartyMarginModes:input_type -> datanode.api.v2.ListPartyMarginModesRequest + 427, // 586: datanode.api.v2.TradingDataService.GetTimeWeightedNotionalPosition:input_type -> datanode.api.v2.GetTimeWeightedNotionalPositionRequest + 320, // 587: datanode.api.v2.TradingDataService.ExportNetworkHistory:input_type -> datanode.api.v2.ExportNetworkHistoryRequest + 338, // 588: datanode.api.v2.TradingDataService.Ping:input_type -> datanode.api.v2.PingRequest + 14, // 589: datanode.api.v2.TradingDataService.ListAccounts:output_type -> datanode.api.v2.ListAccountsResponse + 18, // 590: datanode.api.v2.TradingDataService.ObserveAccounts:output_type -> datanode.api.v2.ObserveAccountsResponse + 22, // 591: datanode.api.v2.TradingDataService.Info:output_type -> datanode.api.v2.InfoResponse + 24, // 592: datanode.api.v2.TradingDataService.GetOrder:output_type -> datanode.api.v2.GetOrderResponse + 27, // 593: datanode.api.v2.TradingDataService.ListOrders:output_type -> datanode.api.v2.ListOrdersResponse + 29, // 594: datanode.api.v2.TradingDataService.ListOrderVersions:output_type -> datanode.api.v2.ListOrderVersionsResponse + 31, // 595: datanode.api.v2.TradingDataService.ObserveOrders:output_type -> datanode.api.v2.ObserveOrdersResponse + 35, // 596: datanode.api.v2.TradingDataService.GetStopOrder:output_type -> datanode.api.v2.GetStopOrderResponse + 50, // 597: datanode.api.v2.TradingDataService.ListStopOrders:output_type -> datanode.api.v2.ListStopOrdersResponse + 38, // 598: datanode.api.v2.TradingDataService.ListGameTeamScores:output_type -> datanode.api.v2.ListGameTeamScoresResponse + 43, // 599: datanode.api.v2.TradingDataService.ListGamePartyScores:output_type -> datanode.api.v2.ListGamePartyScoresResponse + 52, // 600: datanode.api.v2.TradingDataService.ListPositions:output_type -> datanode.api.v2.ListPositionsResponse + 55, // 601: datanode.api.v2.TradingDataService.ListAllPositions:output_type -> datanode.api.v2.ListAllPositionsResponse + 59, // 602: datanode.api.v2.TradingDataService.ObservePositions:output_type -> datanode.api.v2.ObservePositionsResponse + 66, // 603: datanode.api.v2.TradingDataService.ListLedgerEntries:output_type -> datanode.api.v2.ListLedgerEntriesResponse + 507, // 604: datanode.api.v2.TradingDataService.ExportLedgerEntries:output_type -> google.api.HttpBody + 70, // 605: datanode.api.v2.TradingDataService.ListBalanceChanges:output_type -> datanode.api.v2.ListBalanceChangesResponse + 88, // 606: datanode.api.v2.TradingDataService.GetLatestMarketData:output_type -> datanode.api.v2.GetLatestMarketDataResponse + 86, // 607: datanode.api.v2.TradingDataService.ListLatestMarketData:output_type -> datanode.api.v2.ListLatestMarketDataResponse + 84, // 608: datanode.api.v2.TradingDataService.GetLatestMarketDepth:output_type -> datanode.api.v2.GetLatestMarketDepthResponse + 78, // 609: datanode.api.v2.TradingDataService.ObserveMarketsDepth:output_type -> datanode.api.v2.ObserveMarketsDepthResponse + 80, // 610: datanode.api.v2.TradingDataService.ObserveMarketsDepthUpdates:output_type -> datanode.api.v2.ObserveMarketsDepthUpdatesResponse + 82, // 611: datanode.api.v2.TradingDataService.ObserveMarketsData:output_type -> datanode.api.v2.ObserveMarketsDataResponse + 90, // 612: datanode.api.v2.TradingDataService.GetMarketDataHistoryByID:output_type -> datanode.api.v2.GetMarketDataHistoryByIDResponse + 94, // 613: datanode.api.v2.TradingDataService.ListTransfers:output_type -> datanode.api.v2.ListTransfersResponse + 99, // 614: datanode.api.v2.TradingDataService.GetTransfer:output_type -> datanode.api.v2.GetTransferResponse + 101, // 615: datanode.api.v2.TradingDataService.GetNetworkLimits:output_type -> datanode.api.v2.GetNetworkLimitsResponse + 109, // 616: datanode.api.v2.TradingDataService.ListCandleData:output_type -> datanode.api.v2.ListCandleDataResponse + 107, // 617: datanode.api.v2.TradingDataService.ObserveCandleData:output_type -> datanode.api.v2.ObserveCandleDataResponse + 104, // 618: datanode.api.v2.TradingDataService.ListCandleIntervals:output_type -> datanode.api.v2.ListCandleIntervalsResponse + 113, // 619: datanode.api.v2.TradingDataService.ListVotes:output_type -> datanode.api.v2.ListVotesResponse + 117, // 620: datanode.api.v2.TradingDataService.ObserveVotes:output_type -> datanode.api.v2.ObserveVotesResponse + 119, // 621: datanode.api.v2.TradingDataService.ListERC20MultiSigSignerAddedBundles:output_type -> datanode.api.v2.ListERC20MultiSigSignerAddedBundlesResponse + 125, // 622: datanode.api.v2.TradingDataService.ListERC20MultiSigSignerRemovedBundles:output_type -> datanode.api.v2.ListERC20MultiSigSignerRemovedBundlesResponse + 131, // 623: datanode.api.v2.TradingDataService.GetERC20ListAssetBundle:output_type -> datanode.api.v2.GetERC20ListAssetBundleResponse + 133, // 624: datanode.api.v2.TradingDataService.GetERC20SetAssetLimitsBundle:output_type -> datanode.api.v2.GetERC20SetAssetLimitsBundleResponse + 135, // 625: datanode.api.v2.TradingDataService.GetERC20WithdrawalApproval:output_type -> datanode.api.v2.GetERC20WithdrawalApprovalResponse + 137, // 626: datanode.api.v2.TradingDataService.GetLastTrade:output_type -> datanode.api.v2.GetLastTradeResponse + 139, // 627: datanode.api.v2.TradingDataService.ListTrades:output_type -> datanode.api.v2.ListTradesResponse + 143, // 628: datanode.api.v2.TradingDataService.ObserveTrades:output_type -> datanode.api.v2.ObserveTradesResponse + 145, // 629: datanode.api.v2.TradingDataService.GetOracleSpec:output_type -> datanode.api.v2.GetOracleSpecResponse + 147, // 630: datanode.api.v2.TradingDataService.ListOracleSpecs:output_type -> datanode.api.v2.ListOracleSpecsResponse + 149, // 631: datanode.api.v2.TradingDataService.ListOracleData:output_type -> datanode.api.v2.ListOracleDataResponse + 155, // 632: datanode.api.v2.TradingDataService.GetMarket:output_type -> datanode.api.v2.GetMarketResponse + 157, // 633: datanode.api.v2.TradingDataService.ListMarkets:output_type -> datanode.api.v2.ListMarketsResponse + 164, // 634: datanode.api.v2.TradingDataService.ListSuccessorMarkets:output_type -> datanode.api.v2.ListSuccessorMarketsResponse + 166, // 635: datanode.api.v2.TradingDataService.GetParty:output_type -> datanode.api.v2.GetPartyResponse + 168, // 636: datanode.api.v2.TradingDataService.ListParties:output_type -> datanode.api.v2.ListPartiesResponse + 172, // 637: datanode.api.v2.TradingDataService.ListPartiesProfiles:output_type -> datanode.api.v2.ListPartiesProfilesResponse + 177, // 638: datanode.api.v2.TradingDataService.ListMarginLevels:output_type -> datanode.api.v2.ListMarginLevelsResponse + 179, // 639: datanode.api.v2.TradingDataService.ObserveMarginLevels:output_type -> datanode.api.v2.ObserveMarginLevelsResponse + 184, // 640: datanode.api.v2.TradingDataService.ListRewards:output_type -> datanode.api.v2.ListRewardsResponse + 188, // 641: datanode.api.v2.TradingDataService.ListRewardSummaries:output_type -> datanode.api.v2.ListRewardSummariesResponse + 191, // 642: datanode.api.v2.TradingDataService.ListEpochRewardSummaries:output_type -> datanode.api.v2.ListEpochRewardSummariesResponse + 197, // 643: datanode.api.v2.TradingDataService.GetDeposit:output_type -> datanode.api.v2.GetDepositResponse + 199, // 644: datanode.api.v2.TradingDataService.ListDeposits:output_type -> datanode.api.v2.ListDepositsResponse + 203, // 645: datanode.api.v2.TradingDataService.GetWithdrawal:output_type -> datanode.api.v2.GetWithdrawalResponse + 205, // 646: datanode.api.v2.TradingDataService.ListWithdrawals:output_type -> datanode.api.v2.ListWithdrawalsResponse + 209, // 647: datanode.api.v2.TradingDataService.GetAsset:output_type -> datanode.api.v2.GetAssetResponse + 211, // 648: datanode.api.v2.TradingDataService.ListAssets:output_type -> datanode.api.v2.ListAssetsResponse + 216, // 649: datanode.api.v2.TradingDataService.ListLiquidityProvisions:output_type -> datanode.api.v2.ListLiquidityProvisionsResponse + 217, // 650: datanode.api.v2.TradingDataService.ListAllLiquidityProvisions:output_type -> datanode.api.v2.ListAllLiquidityProvisionsResponse + 224, // 651: datanode.api.v2.TradingDataService.ObserveLiquidityProvisions:output_type -> datanode.api.v2.ObserveLiquidityProvisionsResponse + 229, // 652: datanode.api.v2.TradingDataService.ListLiquidityProviders:output_type -> datanode.api.v2.ListLiquidityProvidersResponse + 231, // 653: datanode.api.v2.TradingDataService.ListPaidLiquidityFees:output_type -> datanode.api.v2.ListPaidLiquidityFeesResponse + 235, // 654: datanode.api.v2.TradingDataService.GetGovernanceData:output_type -> datanode.api.v2.GetGovernanceDataResponse + 237, // 655: datanode.api.v2.TradingDataService.ListGovernanceData:output_type -> datanode.api.v2.ListGovernanceDataResponse + 241, // 656: datanode.api.v2.TradingDataService.ObserveGovernance:output_type -> datanode.api.v2.ObserveGovernanceResponse + 243, // 657: datanode.api.v2.TradingDataService.ListDelegations:output_type -> datanode.api.v2.ListDelegationsResponse + 250, // 658: datanode.api.v2.TradingDataService.GetNetworkData:output_type -> datanode.api.v2.GetNetworkDataResponse + 252, // 659: datanode.api.v2.TradingDataService.GetNode:output_type -> datanode.api.v2.GetNodeResponse + 254, // 660: datanode.api.v2.TradingDataService.ListNodes:output_type -> datanode.api.v2.ListNodesResponse + 258, // 661: datanode.api.v2.TradingDataService.ListNodeSignatures:output_type -> datanode.api.v2.ListNodeSignaturesResponse + 262, // 662: datanode.api.v2.TradingDataService.GetEpoch:output_type -> datanode.api.v2.GetEpochResponse + 264, // 663: datanode.api.v2.TradingDataService.EstimateFee:output_type -> datanode.api.v2.EstimateFeeResponse + 266, // 664: datanode.api.v2.TradingDataService.EstimateMargin:output_type -> datanode.api.v2.EstimateMarginResponse + 342, // 665: datanode.api.v2.TradingDataService.EstimatePosition:output_type -> datanode.api.v2.EstimatePositionResponse + 268, // 666: datanode.api.v2.TradingDataService.ListNetworkParameters:output_type -> datanode.api.v2.ListNetworkParametersResponse + 270, // 667: datanode.api.v2.TradingDataService.GetNetworkParameter:output_type -> datanode.api.v2.GetNetworkParameterResponse + 275, // 668: datanode.api.v2.TradingDataService.ListCheckpoints:output_type -> datanode.api.v2.ListCheckpointsResponse + 279, // 669: datanode.api.v2.TradingDataService.GetStake:output_type -> datanode.api.v2.GetStakeResponse + 283, // 670: datanode.api.v2.TradingDataService.GetRiskFactors:output_type -> datanode.api.v2.GetRiskFactorsResponse + 285, // 671: datanode.api.v2.TradingDataService.ObserveEventBus:output_type -> datanode.api.v2.ObserveEventBusResponse + 287, // 672: datanode.api.v2.TradingDataService.ObserveLedgerMovements:output_type -> datanode.api.v2.ObserveLedgerMovementsResponse + 289, // 673: datanode.api.v2.TradingDataService.ListKeyRotations:output_type -> datanode.api.v2.ListKeyRotationsResponse + 293, // 674: datanode.api.v2.TradingDataService.ListEthereumKeyRotations:output_type -> datanode.api.v2.ListEthereumKeyRotationsResponse + 297, // 675: datanode.api.v2.TradingDataService.GetVegaTime:output_type -> datanode.api.v2.GetVegaTimeResponse + 300, // 676: datanode.api.v2.TradingDataService.GetProtocolUpgradeStatus:output_type -> datanode.api.v2.GetProtocolUpgradeStatusResponse + 302, // 677: datanode.api.v2.TradingDataService.ListProtocolUpgradeProposals:output_type -> datanode.api.v2.ListProtocolUpgradeProposalsResponse + 306, // 678: datanode.api.v2.TradingDataService.ListCoreSnapshots:output_type -> datanode.api.v2.ListCoreSnapshotsResponse + 311, // 679: datanode.api.v2.TradingDataService.GetMostRecentNetworkHistorySegment:output_type -> datanode.api.v2.GetMostRecentNetworkHistorySegmentResponse + 313, // 680: datanode.api.v2.TradingDataService.ListAllNetworkHistorySegments:output_type -> datanode.api.v2.ListAllNetworkHistorySegmentsResponse + 315, // 681: datanode.api.v2.TradingDataService.GetActiveNetworkHistoryPeerAddresses:output_type -> datanode.api.v2.GetActiveNetworkHistoryPeerAddressesResponse + 317, // 682: datanode.api.v2.TradingDataService.GetNetworkHistoryStatus:output_type -> datanode.api.v2.GetNetworkHistoryStatusResponse + 319, // 683: datanode.api.v2.TradingDataService.GetNetworkHistoryBootstrapPeers:output_type -> datanode.api.v2.GetNetworkHistoryBootstrapPeersResponse + 322, // 684: datanode.api.v2.TradingDataService.ListEntities:output_type -> datanode.api.v2.ListEntitiesResponse + 333, // 685: datanode.api.v2.TradingDataService.ListFundingPeriods:output_type -> datanode.api.v2.ListFundingPeriodsResponse + 337, // 686: datanode.api.v2.TradingDataService.ListFundingPeriodDataPoints:output_type -> datanode.api.v2.ListFundingPeriodDataPointsResponse + 329, // 687: datanode.api.v2.TradingDataService.ListFundingPayments:output_type -> datanode.api.v2.ListFundingPaymentsResponse + 324, // 688: datanode.api.v2.TradingDataService.GetPartyActivityStreak:output_type -> datanode.api.v2.GetPartyActivityStreakResponse + 348, // 689: datanode.api.v2.TradingDataService.GetCurrentReferralProgram:output_type -> datanode.api.v2.GetCurrentReferralProgramResponse + 354, // 690: datanode.api.v2.TradingDataService.ListReferralSets:output_type -> datanode.api.v2.ListReferralSetsResponse + 359, // 691: datanode.api.v2.TradingDataService.ListReferralSetReferees:output_type -> datanode.api.v2.ListReferralSetRefereesResponse + 361, // 692: datanode.api.v2.TradingDataService.GetReferralSetStats:output_type -> datanode.api.v2.GetReferralSetStatsResponse + 369, // 693: datanode.api.v2.TradingDataService.ListTeams:output_type -> datanode.api.v2.ListTeamsResponse + 371, // 694: datanode.api.v2.TradingDataService.ListTeamsStatistics:output_type -> datanode.api.v2.ListTeamsStatisticsResponse + 378, // 695: datanode.api.v2.TradingDataService.ListTeamMembersStatistics:output_type -> datanode.api.v2.ListTeamMembersStatisticsResponse + 386, // 696: datanode.api.v2.TradingDataService.ListTeamReferees:output_type -> datanode.api.v2.ListTeamRefereesResponse + 391, // 697: datanode.api.v2.TradingDataService.ListTeamRefereeHistory:output_type -> datanode.api.v2.ListTeamRefereeHistoryResponse + 393, // 698: datanode.api.v2.TradingDataService.GetFeesStats:output_type -> datanode.api.v2.GetFeesStatsResponse + 395, // 699: datanode.api.v2.TradingDataService.GetFeesStatsForParty:output_type -> datanode.api.v2.GetFeesStatsForPartyResponse + 397, // 700: datanode.api.v2.TradingDataService.GetCurrentVolumeDiscountProgram:output_type -> datanode.api.v2.GetCurrentVolumeDiscountProgramResponse + 399, // 701: datanode.api.v2.TradingDataService.GetVolumeDiscountStats:output_type -> datanode.api.v2.GetVolumeDiscountStatsResponse + 11, // 702: datanode.api.v2.TradingDataService.GetVestingBalancesSummary:output_type -> datanode.api.v2.GetVestingBalancesSummaryResponse + 9, // 703: datanode.api.v2.TradingDataService.GetPartyVestingStats:output_type -> datanode.api.v2.GetPartyVestingStatsResponse + 406, // 704: datanode.api.v2.TradingDataService.ObserveTransactionResults:output_type -> datanode.api.v2.ObserveTransactionResultsResponse + 408, // 705: datanode.api.v2.TradingDataService.EstimateTransferFee:output_type -> datanode.api.v2.EstimateTransferFeeResponse + 410, // 706: datanode.api.v2.TradingDataService.GetTotalTransferFeeDiscount:output_type -> datanode.api.v2.GetTotalTransferFeeDiscountResponse + 412, // 707: datanode.api.v2.TradingDataService.ListGames:output_type -> datanode.api.v2.ListGamesResponse + 422, // 708: datanode.api.v2.TradingDataService.ListPartyMarginModes:output_type -> datanode.api.v2.ListPartyMarginModesResponse + 428, // 709: datanode.api.v2.TradingDataService.GetTimeWeightedNotionalPosition:output_type -> datanode.api.v2.GetTimeWeightedNotionalPositionResponse + 507, // 710: datanode.api.v2.TradingDataService.ExportNetworkHistory:output_type -> google.api.HttpBody + 339, // 711: datanode.api.v2.TradingDataService.Ping:output_type -> datanode.api.v2.PingResponse + 589, // [589:712] is the sub-list for method output_type + 466, // [466:589] is the sub-list for method input_type + 466, // [466:466] is the sub-list for extension type_name + 466, // [466:466] is the sub-list for extension extendee + 0, // [0:466] is the sub-list for field type_name } func init() { file_data_node_api_v2_trading_data_proto_init() } @@ -32107,8 +32797,128 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetStopOrderRequest); i { + file_data_node_api_v2_trading_data_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetStopOrderRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_data_node_api_v2_trading_data_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetStopOrderResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_data_node_api_v2_trading_data_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListGameTeamScoresRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_data_node_api_v2_trading_data_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GameTeamScoresFilter); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_data_node_api_v2_trading_data_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListGameTeamScoresResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_data_node_api_v2_trading_data_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GameTeamScoresConnection); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_data_node_api_v2_trading_data_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GameTeamScoresEdge); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_data_node_api_v2_trading_data_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListGamePartyScoresRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_data_node_api_v2_trading_data_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GamePartyScoresFilter); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_data_node_api_v2_trading_data_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListGamePartyScoresResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_data_node_api_v2_trading_data_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GamePartyScoresConnection); i { case 0: return &v.state case 1: @@ -32119,8 +32929,8 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetStopOrderResponse); i { + file_data_node_api_v2_trading_data_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GamePartyScoresEdge); i { case 0: return &v.state case 1: @@ -32131,7 +32941,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListStopOrdersRequest); i { case 0: return &v.state @@ -32143,7 +32953,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StopOrderFilter); i { case 0: return &v.state @@ -32155,7 +32965,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StopOrderEdge); i { case 0: return &v.state @@ -32167,7 +32977,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StopOrderConnection); i { case 0: return &v.state @@ -32179,7 +32989,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListStopOrdersResponse); i { case 0: return &v.state @@ -32191,7 +33001,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPositionsRequest); i { case 0: return &v.state @@ -32203,7 +33013,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPositionsResponse); i { case 0: return &v.state @@ -32215,7 +33025,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PositionsFilter); i { case 0: return &v.state @@ -32227,7 +33037,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAllPositionsRequest); i { case 0: return &v.state @@ -32239,7 +33049,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAllPositionsResponse); i { case 0: return &v.state @@ -32251,7 +33061,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PositionEdge); i { case 0: return &v.state @@ -32263,7 +33073,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PositionConnection); i { case 0: return &v.state @@ -32275,7 +33085,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ObservePositionsRequest); i { case 0: return &v.state @@ -32287,7 +33097,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ObservePositionsResponse); i { case 0: return &v.state @@ -32299,7 +33109,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PositionSnapshotPage); i { case 0: return &v.state @@ -32311,7 +33121,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PositionUpdates); i { case 0: return &v.state @@ -32323,7 +33133,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LedgerEntryFilter); i { case 0: return &v.state @@ -32335,7 +33145,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AggregatedLedgerEntry); i { case 0: return &v.state @@ -32347,7 +33157,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListLedgerEntriesRequest); i { case 0: return &v.state @@ -32359,7 +33169,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ExportLedgerEntriesRequest); i { case 0: return &v.state @@ -32371,7 +33181,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListLedgerEntriesResponse); i { case 0: return &v.state @@ -32383,7 +33193,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AggregatedLedgerEntriesEdge); i { case 0: return &v.state @@ -32395,7 +33205,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AggregatedLedgerEntriesConnection); i { case 0: return &v.state @@ -32407,7 +33217,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListBalanceChangesRequest); i { case 0: return &v.state @@ -32419,7 +33229,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListBalanceChangesResponse); i { case 0: return &v.state @@ -32431,7 +33241,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetBalanceHistoryRequest); i { case 0: return &v.state @@ -32443,7 +33253,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetBalanceHistoryResponse); i { case 0: return &v.state @@ -32455,7 +33265,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AggregatedBalanceEdge); i { case 0: return &v.state @@ -32467,7 +33277,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AggregatedBalanceConnection); i { case 0: return &v.state @@ -32479,7 +33289,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AccountFilter); i { case 0: return &v.state @@ -32491,7 +33301,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AggregatedBalance); i { case 0: return &v.state @@ -32503,7 +33313,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ObserveMarketsDepthRequest); i { case 0: return &v.state @@ -32515,7 +33325,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ObserveMarketsDepthResponse); i { case 0: return &v.state @@ -32527,7 +33337,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ObserveMarketsDepthUpdatesRequest); i { case 0: return &v.state @@ -32539,7 +33349,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ObserveMarketsDepthUpdatesResponse); i { case 0: return &v.state @@ -32551,7 +33361,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ObserveMarketsDataRequest); i { case 0: return &v.state @@ -32563,7 +33373,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ObserveMarketsDataResponse); i { case 0: return &v.state @@ -32575,7 +33385,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetLatestMarketDepthRequest); i { case 0: return &v.state @@ -32587,7 +33397,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetLatestMarketDepthResponse); i { case 0: return &v.state @@ -32599,7 +33409,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListLatestMarketDataRequest); i { case 0: return &v.state @@ -32611,7 +33421,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListLatestMarketDataResponse); i { case 0: return &v.state @@ -32623,7 +33433,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetLatestMarketDataRequest); i { case 0: return &v.state @@ -32635,7 +33445,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetLatestMarketDataResponse); i { case 0: return &v.state @@ -32647,7 +33457,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetMarketDataHistoryByIDRequest); i { case 0: return &v.state @@ -32659,7 +33469,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetMarketDataHistoryByIDResponse); i { case 0: return &v.state @@ -32671,7 +33481,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MarketDataEdge); i { case 0: return &v.state @@ -32683,7 +33493,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MarketDataConnection); i { case 0: return &v.state @@ -32695,7 +33505,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTransfersRequest); i { case 0: return &v.state @@ -32707,7 +33517,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTransfersResponse); i { case 0: return &v.state @@ -32719,7 +33529,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TransferNode); i { case 0: return &v.state @@ -32731,7 +33541,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TransferEdge); i { case 0: return &v.state @@ -32743,7 +33553,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TransferConnection); i { case 0: return &v.state @@ -32755,7 +33565,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetTransferRequest); i { case 0: return &v.state @@ -32767,7 +33577,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetTransferResponse); i { case 0: return &v.state @@ -32779,7 +33589,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetNetworkLimitsRequest); i { case 0: return &v.state @@ -32791,7 +33601,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetNetworkLimitsResponse); i { case 0: return &v.state @@ -32803,7 +33613,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListCandleIntervalsRequest); i { case 0: return &v.state @@ -32815,7 +33625,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*IntervalToCandleId); i { case 0: return &v.state @@ -32827,7 +33637,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListCandleIntervalsResponse); i { case 0: return &v.state @@ -32839,7 +33649,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Candle); i { case 0: return &v.state @@ -32851,7 +33661,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ObserveCandleDataRequest); i { case 0: return &v.state @@ -32863,7 +33673,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ObserveCandleDataResponse); i { case 0: return &v.state @@ -32875,7 +33685,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListCandleDataRequest); i { case 0: return &v.state @@ -32887,7 +33697,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListCandleDataResponse); i { case 0: return &v.state @@ -32899,7 +33709,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CandleEdge); i { case 0: return &v.state @@ -32911,7 +33721,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CandleDataConnection); i { case 0: return &v.state @@ -32923,7 +33733,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListVotesRequest); i { case 0: return &v.state @@ -32935,7 +33745,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListVotesResponse); i { case 0: return &v.state @@ -32947,7 +33757,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*VoteEdge); i { case 0: return &v.state @@ -32959,7 +33769,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*VoteConnection); i { case 0: return &v.state @@ -32971,7 +33781,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ObserveVotesRequest); i { case 0: return &v.state @@ -32983,7 +33793,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ObserveVotesResponse); i { case 0: return &v.state @@ -32995,7 +33805,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListERC20MultiSigSignerAddedBundlesRequest); i { case 0: return &v.state @@ -33007,7 +33817,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListERC20MultiSigSignerAddedBundlesResponse); i { case 0: return &v.state @@ -33019,7 +33829,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ERC20MultiSigSignerAddedEdge); i { case 0: return &v.state @@ -33031,7 +33841,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ERC20MultiSigSignerAddedBundleEdge); i { case 0: return &v.state @@ -33043,7 +33853,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ERC20MultiSigSignerAddedConnection); i { case 0: return &v.state @@ -33055,7 +33865,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ERC20MultiSigSignerAddedBundle); i { case 0: return &v.state @@ -33067,7 +33877,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListERC20MultiSigSignerRemovedBundlesRequest); i { case 0: return &v.state @@ -33079,7 +33889,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListERC20MultiSigSignerRemovedBundlesResponse); i { case 0: return &v.state @@ -33091,7 +33901,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ERC20MultiSigSignerRemovedEdge); i { case 0: return &v.state @@ -33103,7 +33913,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ERC20MultiSigSignerRemovedBundleEdge); i { case 0: return &v.state @@ -33115,7 +33925,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ERC20MultiSigSignerRemovedConnection); i { case 0: return &v.state @@ -33127,7 +33937,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ERC20MultiSigSignerRemovedBundle); i { case 0: return &v.state @@ -33139,7 +33949,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetERC20ListAssetBundleRequest); i { case 0: return &v.state @@ -33151,7 +33961,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetERC20ListAssetBundleResponse); i { case 0: return &v.state @@ -33163,7 +33973,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetERC20SetAssetLimitsBundleRequest); i { case 0: return &v.state @@ -33175,7 +33985,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetERC20SetAssetLimitsBundleResponse); i { case 0: return &v.state @@ -33187,7 +33997,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetERC20WithdrawalApprovalRequest); i { case 0: return &v.state @@ -33199,7 +34009,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetERC20WithdrawalApprovalResponse); i { case 0: return &v.state @@ -33211,7 +34021,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetLastTradeRequest); i { case 0: return &v.state @@ -33223,7 +34033,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetLastTradeResponse); i { case 0: return &v.state @@ -33235,7 +34045,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTradesRequest); i { case 0: return &v.state @@ -33247,7 +34057,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTradesResponse); i { case 0: return &v.state @@ -33259,7 +34069,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TradeConnection); i { case 0: return &v.state @@ -33271,7 +34081,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TradeEdge); i { case 0: return &v.state @@ -33283,7 +34093,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ObserveTradesRequest); i { case 0: return &v.state @@ -33295,7 +34105,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ObserveTradesResponse); i { case 0: return &v.state @@ -33307,7 +34117,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetOracleSpecRequest); i { case 0: return &v.state @@ -33319,7 +34129,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetOracleSpecResponse); i { case 0: return &v.state @@ -33331,7 +34141,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[140].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListOracleSpecsRequest); i { case 0: return &v.state @@ -33343,7 +34153,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[141].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListOracleSpecsResponse); i { case 0: return &v.state @@ -33355,7 +34165,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[142].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListOracleDataRequest); i { case 0: return &v.state @@ -33367,7 +34177,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[143].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListOracleDataResponse); i { case 0: return &v.state @@ -33379,7 +34189,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[144].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OracleSpecEdge); i { case 0: return &v.state @@ -33391,7 +34201,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[145].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OracleSpecsConnection); i { case 0: return &v.state @@ -33403,7 +34213,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[146].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OracleDataEdge); i { case 0: return &v.state @@ -33415,7 +34225,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[147].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OracleDataConnection); i { case 0: return &v.state @@ -33427,7 +34237,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[148].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetMarketRequest); i { case 0: return &v.state @@ -33439,7 +34249,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[149].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetMarketResponse); i { case 0: return &v.state @@ -33451,7 +34261,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[140].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[150].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListMarketsRequest); i { case 0: return &v.state @@ -33463,7 +34273,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[141].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[151].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListMarketsResponse); i { case 0: return &v.state @@ -33475,7 +34285,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[142].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[152].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MarketEdge); i { case 0: return &v.state @@ -33487,7 +34297,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[143].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[153].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MarketConnection); i { case 0: return &v.state @@ -33499,7 +34309,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[144].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[154].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListSuccessorMarketsRequest); i { case 0: return &v.state @@ -33511,7 +34321,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[145].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[155].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SuccessorMarket); i { case 0: return &v.state @@ -33523,7 +34333,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[146].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[156].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SuccessorMarketEdge); i { case 0: return &v.state @@ -33535,7 +34345,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[147].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[157].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SuccessorMarketConnection); i { case 0: return &v.state @@ -33547,7 +34357,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[148].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[158].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListSuccessorMarketsResponse); i { case 0: return &v.state @@ -33559,7 +34369,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[149].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[159].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetPartyRequest); i { case 0: return &v.state @@ -33571,7 +34381,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[150].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[160].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetPartyResponse); i { case 0: return &v.state @@ -33583,7 +34393,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[151].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[161].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPartiesRequest); i { case 0: return &v.state @@ -33595,7 +34405,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[152].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[162].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPartiesResponse); i { case 0: return &v.state @@ -33607,7 +34417,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[153].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[163].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PartyEdge); i { case 0: return &v.state @@ -33619,7 +34429,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[154].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[164].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PartyConnection); i { case 0: return &v.state @@ -33631,7 +34441,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[155].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[165].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPartiesProfilesRequest); i { case 0: return &v.state @@ -33643,7 +34453,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[156].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[166].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPartiesProfilesResponse); i { case 0: return &v.state @@ -33655,7 +34465,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[157].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[167].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PartyProfileEdge); i { case 0: return &v.state @@ -33667,7 +34477,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[158].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[168].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PartiesProfilesConnection); i { case 0: return &v.state @@ -33679,7 +34489,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[159].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[169].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OrderEdge); i { case 0: return &v.state @@ -33691,7 +34501,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[160].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[170].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListMarginLevelsRequest); i { case 0: return &v.state @@ -33703,7 +34513,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[161].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[171].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListMarginLevelsResponse); i { case 0: return &v.state @@ -33715,7 +34525,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[162].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[172].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ObserveMarginLevelsRequest); i { case 0: return &v.state @@ -33727,7 +34537,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[163].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[173].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ObserveMarginLevelsResponse); i { case 0: return &v.state @@ -33739,7 +34549,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[164].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[174].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OrderConnection); i { case 0: return &v.state @@ -33751,7 +34561,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[165].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[175].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MarginEdge); i { case 0: return &v.state @@ -33763,7 +34573,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[166].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[176].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MarginConnection); i { case 0: return &v.state @@ -33775,7 +34585,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[167].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[177].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListRewardsRequest); i { case 0: return &v.state @@ -33787,7 +34597,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[168].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[178].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListRewardsResponse); i { case 0: return &v.state @@ -33799,7 +34609,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[169].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[179].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RewardEdge); i { case 0: return &v.state @@ -33811,7 +34621,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[170].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[180].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RewardsConnection); i { case 0: return &v.state @@ -33823,7 +34633,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[171].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[181].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListRewardSummariesRequest); i { case 0: return &v.state @@ -33835,7 +34645,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[172].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[182].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListRewardSummariesResponse); i { case 0: return &v.state @@ -33847,7 +34657,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[173].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[183].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RewardSummaryFilter); i { case 0: return &v.state @@ -33859,7 +34669,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[174].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[184].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListEpochRewardSummariesRequest); i { case 0: return &v.state @@ -33871,7 +34681,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[175].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[185].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListEpochRewardSummariesResponse); i { case 0: return &v.state @@ -33883,7 +34693,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[176].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[186].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EpochRewardSummaryConnection); i { case 0: return &v.state @@ -33895,7 +34705,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[177].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[187].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EpochRewardSummaryEdge); i { case 0: return &v.state @@ -33907,7 +34717,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[178].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[188].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ObserveRewardsRequest); i { case 0: return &v.state @@ -33919,7 +34729,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[179].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[189].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ObserveRewardsResponse); i { case 0: return &v.state @@ -33931,7 +34741,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[180].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[190].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetDepositRequest); i { case 0: return &v.state @@ -33943,7 +34753,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[181].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[191].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetDepositResponse); i { case 0: return &v.state @@ -33955,7 +34765,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[182].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[192].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListDepositsRequest); i { case 0: return &v.state @@ -33967,7 +34777,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[183].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[193].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListDepositsResponse); i { case 0: return &v.state @@ -33979,7 +34789,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[184].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[194].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DepositEdge); i { case 0: return &v.state @@ -33991,7 +34801,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[185].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[195].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DepositsConnection); i { case 0: return &v.state @@ -34003,7 +34813,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[186].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[196].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetWithdrawalRequest); i { case 0: return &v.state @@ -34015,7 +34825,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[187].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[197].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetWithdrawalResponse); i { case 0: return &v.state @@ -34027,7 +34837,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[188].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[198].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListWithdrawalsRequest); i { case 0: return &v.state @@ -34039,7 +34849,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[189].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[199].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListWithdrawalsResponse); i { case 0: return &v.state @@ -34051,7 +34861,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[190].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[200].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WithdrawalEdge); i { case 0: return &v.state @@ -34063,7 +34873,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[191].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[201].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*WithdrawalsConnection); i { case 0: return &v.state @@ -34075,7 +34885,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[192].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[202].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAssetRequest); i { case 0: return &v.state @@ -34087,7 +34897,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[193].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[203].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAssetResponse); i { case 0: return &v.state @@ -34099,7 +34909,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[194].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[204].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAssetsRequest); i { case 0: return &v.state @@ -34111,7 +34921,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[195].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[205].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAssetsResponse); i { case 0: return &v.state @@ -34123,7 +34933,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[196].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[206].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AssetEdge); i { case 0: return &v.state @@ -34135,7 +34945,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[197].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[207].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AssetsConnection); i { case 0: return &v.state @@ -34147,7 +34957,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[198].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[208].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListLiquidityProvisionsRequest); i { case 0: return &v.state @@ -34159,7 +34969,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[199].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[209].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAllLiquidityProvisionsRequest); i { case 0: return &v.state @@ -34171,7 +34981,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[200].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[210].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListLiquidityProvisionsResponse); i { case 0: return &v.state @@ -34183,7 +34993,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[201].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[211].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAllLiquidityProvisionsResponse); i { case 0: return &v.state @@ -34195,7 +35005,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[202].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[212].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LiquidityProvision); i { case 0: return &v.state @@ -34207,7 +35017,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[203].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[213].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LiquidityProvisionsEdge); i { case 0: return &v.state @@ -34219,7 +35029,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[204].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[214].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LiquidityProvisionWithPendingEdge); i { case 0: return &v.state @@ -34231,7 +35041,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[205].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[215].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LiquidityProvisionsConnection); i { case 0: return &v.state @@ -34243,7 +35053,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[206].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[216].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LiquidityProvisionsWithPendingConnection); i { case 0: return &v.state @@ -34255,7 +35065,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[207].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[217].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ObserveLiquidityProvisionsRequest); i { case 0: return &v.state @@ -34267,7 +35077,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[208].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[218].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ObserveLiquidityProvisionsResponse); i { case 0: return &v.state @@ -34279,7 +35089,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[209].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[219].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListLiquidityProvidersRequest); i { case 0: return &v.state @@ -34291,7 +35101,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[210].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[220].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LiquidityProvider); i { case 0: return &v.state @@ -34303,7 +35113,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[211].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[221].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LiquidityProviderEdge); i { case 0: return &v.state @@ -34315,7 +35125,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[212].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[222].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LiquidityProviderConnection); i { case 0: return &v.state @@ -34327,7 +35137,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[213].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[223].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListLiquidityProvidersResponse); i { case 0: return &v.state @@ -34339,7 +35149,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[214].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[224].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPaidLiquidityFeesRequest); i { case 0: return &v.state @@ -34351,7 +35161,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[215].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[225].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPaidLiquidityFeesResponse); i { case 0: return &v.state @@ -34363,7 +35173,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[216].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[226].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PaidLiquidityFeesEdge); i { case 0: return &v.state @@ -34375,7 +35185,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[217].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[227].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PaidLiquidityFeesConnection); i { case 0: return &v.state @@ -34387,7 +35197,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[218].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[228].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetGovernanceDataRequest); i { case 0: return &v.state @@ -34399,7 +35209,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[219].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[229].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetGovernanceDataResponse); i { case 0: return &v.state @@ -34411,7 +35221,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[220].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[230].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListGovernanceDataRequest); i { case 0: return &v.state @@ -34423,7 +35233,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[221].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[231].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListGovernanceDataResponse); i { case 0: return &v.state @@ -34435,7 +35245,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[222].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[232].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GovernanceDataEdge); i { case 0: return &v.state @@ -34447,7 +35257,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[223].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[233].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GovernanceDataConnection); i { case 0: return &v.state @@ -34459,7 +35269,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[224].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[234].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ObserveGovernanceRequest); i { case 0: return &v.state @@ -34471,7 +35281,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[225].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[235].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ObserveGovernanceResponse); i { case 0: return &v.state @@ -34483,7 +35293,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[226].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[236].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListDelegationsRequest); i { case 0: return &v.state @@ -34495,7 +35305,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[227].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[237].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListDelegationsResponse); i { case 0: return &v.state @@ -34507,7 +35317,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[228].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[238].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DelegationEdge); i { case 0: return &v.state @@ -34519,7 +35329,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[229].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[239].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DelegationsConnection); i { case 0: return &v.state @@ -34531,7 +35341,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[230].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[240].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ObserveDelegationsRequest); i { case 0: return &v.state @@ -34543,7 +35353,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[231].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[241].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ObserveDelegationsResponse); i { case 0: return &v.state @@ -34555,7 +35365,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[232].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[242].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*NodeBasic); i { case 0: return &v.state @@ -34567,7 +35377,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[233].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[243].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetNetworkDataRequest); i { case 0: return &v.state @@ -34579,7 +35389,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[234].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[244].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetNetworkDataResponse); i { case 0: return &v.state @@ -34591,7 +35401,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[235].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[245].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetNodeRequest); i { case 0: return &v.state @@ -34603,7 +35413,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[236].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[246].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetNodeResponse); i { case 0: return &v.state @@ -34615,7 +35425,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[237].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[247].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListNodesRequest); i { case 0: return &v.state @@ -34627,7 +35437,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[238].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[248].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListNodesResponse); i { case 0: return &v.state @@ -34639,7 +35449,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[239].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[249].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*NodeEdge); i { case 0: return &v.state @@ -34651,7 +35461,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[240].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[250].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*NodesConnection); i { case 0: return &v.state @@ -34663,7 +35473,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[241].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[251].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListNodeSignaturesRequest); i { case 0: return &v.state @@ -34675,7 +35485,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[242].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[252].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListNodeSignaturesResponse); i { case 0: return &v.state @@ -34687,7 +35497,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[243].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[253].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*NodeSignatureEdge); i { case 0: return &v.state @@ -34699,7 +35509,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[244].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[254].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*NodeSignaturesConnection); i { case 0: return &v.state @@ -34711,7 +35521,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[245].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[255].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetEpochRequest); i { case 0: return &v.state @@ -34723,7 +35533,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[246].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[256].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetEpochResponse); i { case 0: return &v.state @@ -34735,7 +35545,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[247].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[257].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EstimateFeeRequest); i { case 0: return &v.state @@ -34747,7 +35557,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[248].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[258].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EstimateFeeResponse); i { case 0: return &v.state @@ -34759,7 +35569,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[249].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[259].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EstimateMarginRequest); i { case 0: return &v.state @@ -34771,7 +35581,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[250].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[260].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EstimateMarginResponse); i { case 0: return &v.state @@ -34783,7 +35593,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[251].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[261].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListNetworkParametersRequest); i { case 0: return &v.state @@ -34795,7 +35605,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[252].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[262].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListNetworkParametersResponse); i { case 0: return &v.state @@ -34807,7 +35617,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[253].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[263].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetNetworkParameterRequest); i { case 0: return &v.state @@ -34819,7 +35629,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[254].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[264].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetNetworkParameterResponse); i { case 0: return &v.state @@ -34831,7 +35641,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[255].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[265].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*NetworkParameterEdge); i { case 0: return &v.state @@ -34843,7 +35653,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[256].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[266].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*NetworkParameterConnection); i { case 0: return &v.state @@ -34855,7 +35665,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[257].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[267].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Checkpoint); i { case 0: return &v.state @@ -34867,7 +35677,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[258].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[268].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListCheckpointsRequest); i { case 0: return &v.state @@ -34879,7 +35689,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[259].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[269].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListCheckpointsResponse); i { case 0: return &v.state @@ -34891,7 +35701,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[260].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[270].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckpointEdge); i { case 0: return &v.state @@ -34903,7 +35713,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[261].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[271].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckpointsConnection); i { case 0: return &v.state @@ -34915,7 +35725,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[262].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[272].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetStakeRequest); i { case 0: return &v.state @@ -34927,7 +35737,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[263].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[273].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetStakeResponse); i { case 0: return &v.state @@ -34939,7 +35749,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[264].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[274].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StakeLinkingEdge); i { case 0: return &v.state @@ -34951,7 +35761,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[265].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[275].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StakesConnection); i { case 0: return &v.state @@ -34963,7 +35773,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[266].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[276].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetRiskFactorsRequest); i { case 0: return &v.state @@ -34975,7 +35785,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[267].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[277].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetRiskFactorsResponse); i { case 0: return &v.state @@ -34987,7 +35797,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[268].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[278].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ObserveEventBusRequest); i { case 0: return &v.state @@ -34999,7 +35809,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[269].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[279].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ObserveEventBusResponse); i { case 0: return &v.state @@ -35011,7 +35821,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[270].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[280].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ObserveLedgerMovementsRequest); i { case 0: return &v.state @@ -35023,7 +35833,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[271].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[281].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ObserveLedgerMovementsResponse); i { case 0: return &v.state @@ -35035,7 +35845,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[272].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[282].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListKeyRotationsRequest); i { case 0: return &v.state @@ -35047,7 +35857,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[273].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[283].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListKeyRotationsResponse); i { case 0: return &v.state @@ -35059,7 +35869,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[274].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[284].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*KeyRotationEdge); i { case 0: return &v.state @@ -35071,7 +35881,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[275].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[285].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*KeyRotationConnection); i { case 0: return &v.state @@ -35083,7 +35893,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[276].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[286].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListEthereumKeyRotationsRequest); i { case 0: return &v.state @@ -35095,7 +35905,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[277].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[287].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListEthereumKeyRotationsResponse); i { case 0: return &v.state @@ -35107,7 +35917,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[278].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[288].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EthereumKeyRotationsConnection); i { case 0: return &v.state @@ -35119,7 +35929,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[279].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[289].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EthereumKeyRotationEdge); i { case 0: return &v.state @@ -35131,7 +35941,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[280].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[290].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetVegaTimeRequest); i { case 0: return &v.state @@ -35143,7 +35953,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[281].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[291].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetVegaTimeResponse); i { case 0: return &v.state @@ -35155,7 +35965,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[282].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[292].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DateRange); i { case 0: return &v.state @@ -35167,7 +35977,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[283].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[293].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetProtocolUpgradeStatusRequest); i { case 0: return &v.state @@ -35179,7 +35989,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[284].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[294].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetProtocolUpgradeStatusResponse); i { case 0: return &v.state @@ -35191,7 +36001,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[285].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[295].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListProtocolUpgradeProposalsRequest); i { case 0: return &v.state @@ -35203,7 +36013,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[286].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[296].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListProtocolUpgradeProposalsResponse); i { case 0: return &v.state @@ -35215,7 +36025,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[287].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[297].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ProtocolUpgradeProposalConnection); i { case 0: return &v.state @@ -35227,7 +36037,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[288].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[298].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ProtocolUpgradeProposalEdge); i { case 0: return &v.state @@ -35239,7 +36049,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[289].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[299].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListCoreSnapshotsRequest); i { case 0: return &v.state @@ -35251,7 +36061,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[290].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[300].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListCoreSnapshotsResponse); i { case 0: return &v.state @@ -35263,7 +36073,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[291].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[301].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CoreSnapshotConnection); i { case 0: return &v.state @@ -35275,7 +36085,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[292].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[302].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CoreSnapshotEdge); i { case 0: return &v.state @@ -35287,7 +36097,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[293].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[303].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HistorySegment); i { case 0: return &v.state @@ -35299,7 +36109,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[294].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[304].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetMostRecentNetworkHistorySegmentRequest); i { case 0: return &v.state @@ -35311,7 +36121,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[295].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[305].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetMostRecentNetworkHistorySegmentResponse); i { case 0: return &v.state @@ -35323,7 +36133,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[296].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[306].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAllNetworkHistorySegmentsRequest); i { case 0: return &v.state @@ -35335,7 +36145,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[297].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[307].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAllNetworkHistorySegmentsResponse); i { case 0: return &v.state @@ -35347,7 +36157,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[298].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[308].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetActiveNetworkHistoryPeerAddressesRequest); i { case 0: return &v.state @@ -35359,7 +36169,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[299].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[309].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetActiveNetworkHistoryPeerAddressesResponse); i { case 0: return &v.state @@ -35371,7 +36181,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[300].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[310].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetNetworkHistoryStatusRequest); i { case 0: return &v.state @@ -35383,7 +36193,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[301].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[311].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetNetworkHistoryStatusResponse); i { case 0: return &v.state @@ -35395,7 +36205,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[302].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[312].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetNetworkHistoryBootstrapPeersRequest); i { case 0: return &v.state @@ -35407,7 +36217,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[303].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[313].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetNetworkHistoryBootstrapPeersResponse); i { case 0: return &v.state @@ -35419,7 +36229,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[304].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[314].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ExportNetworkHistoryRequest); i { case 0: return &v.state @@ -35431,7 +36241,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[305].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[315].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListEntitiesRequest); i { case 0: return &v.state @@ -35443,7 +36253,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[306].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[316].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListEntitiesResponse); i { case 0: return &v.state @@ -35455,7 +36265,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[307].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[317].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetPartyActivityStreakRequest); i { case 0: return &v.state @@ -35467,7 +36277,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[308].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[318].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetPartyActivityStreakResponse); i { case 0: return &v.state @@ -35479,7 +36289,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[309].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[319].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FundingPayment); i { case 0: return &v.state @@ -35491,7 +36301,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[310].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[320].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListFundingPaymentsRequest); i { case 0: return &v.state @@ -35503,7 +36313,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[311].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[321].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FundingPaymentEdge); i { case 0: return &v.state @@ -35515,7 +36325,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[312].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[322].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FundingPaymentConnection); i { case 0: return &v.state @@ -35527,7 +36337,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[313].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[323].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListFundingPaymentsResponse); i { case 0: return &v.state @@ -35539,7 +36349,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[314].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[324].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListFundingPeriodsRequest); i { case 0: return &v.state @@ -35551,7 +36361,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[315].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[325].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FundingPeriodEdge); i { case 0: return &v.state @@ -35563,7 +36373,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[316].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[326].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FundingPeriodConnection); i { case 0: return &v.state @@ -35575,7 +36385,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[317].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[327].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListFundingPeriodsResponse); i { case 0: return &v.state @@ -35587,7 +36397,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[318].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[328].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListFundingPeriodDataPointsRequest); i { case 0: return &v.state @@ -35599,7 +36409,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[319].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[329].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FundingPeriodDataPointEdge); i { case 0: return &v.state @@ -35611,7 +36421,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[320].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[330].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FundingPeriodDataPointConnection); i { case 0: return &v.state @@ -35623,7 +36433,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[321].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[331].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListFundingPeriodDataPointsResponse); i { case 0: return &v.state @@ -35635,7 +36445,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[322].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[332].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PingRequest); i { case 0: return &v.state @@ -35647,7 +36457,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[323].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[333].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PingResponse); i { case 0: return &v.state @@ -35659,7 +36469,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[324].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[334].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OrderInfo); i { case 0: return &v.state @@ -35671,7 +36481,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[325].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[335].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EstimatePositionRequest); i { case 0: return &v.state @@ -35683,7 +36493,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[326].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[336].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EstimatePositionResponse); i { case 0: return &v.state @@ -35695,7 +36505,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[327].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[337].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CollateralIncreaseEstimate); i { case 0: return &v.state @@ -35707,7 +36517,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[328].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[338].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MarginEstimate); i { case 0: return &v.state @@ -35719,7 +36529,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[329].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[339].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LiquidationEstimate); i { case 0: return &v.state @@ -35731,7 +36541,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[330].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[340].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LiquidationPrice); i { case 0: return &v.state @@ -35743,7 +36553,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[331].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[341].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetCurrentReferralProgramRequest); i { case 0: return &v.state @@ -35755,7 +36565,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[332].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[342].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetCurrentReferralProgramResponse); i { case 0: return &v.state @@ -35767,7 +36577,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[333].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[343].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ReferralProgram); i { case 0: return &v.state @@ -35779,7 +36589,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[334].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[344].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ReferralSet); i { case 0: return &v.state @@ -35791,7 +36601,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[335].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[345].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ReferralSetEdge); i { case 0: return &v.state @@ -35803,7 +36613,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[336].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[346].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ReferralSetConnection); i { case 0: return &v.state @@ -35815,7 +36625,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[337].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[347].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListReferralSetsRequest); i { case 0: return &v.state @@ -35827,7 +36637,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[338].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[348].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListReferralSetsResponse); i { case 0: return &v.state @@ -35839,7 +36649,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[339].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[349].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ReferralSetReferee); i { case 0: return &v.state @@ -35851,7 +36661,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[340].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[350].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ReferralSetRefereeEdge); i { case 0: return &v.state @@ -35863,7 +36673,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[341].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[351].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ReferralSetRefereeConnection); i { case 0: return &v.state @@ -35875,7 +36685,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[342].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[352].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListReferralSetRefereesRequest); i { case 0: return &v.state @@ -35887,7 +36697,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[343].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[353].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListReferralSetRefereesResponse); i { case 0: return &v.state @@ -35899,7 +36709,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[344].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[354].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetReferralSetStatsRequest); i { case 0: return &v.state @@ -35911,7 +36721,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[345].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[355].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetReferralSetStatsResponse); i { case 0: return &v.state @@ -35923,7 +36733,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[346].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[356].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ReferralSetStatsConnection); i { case 0: return &v.state @@ -35935,7 +36745,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[347].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[357].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ReferralSetStatsEdge); i { case 0: return &v.state @@ -35947,7 +36757,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[348].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[358].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ReferralSetStats); i { case 0: return &v.state @@ -35959,7 +36769,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[349].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[359].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Team); i { case 0: return &v.state @@ -35971,7 +36781,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[350].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[360].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TeamEdge); i { case 0: return &v.state @@ -35983,7 +36793,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[351].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[361].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TeamConnection); i { case 0: return &v.state @@ -35995,7 +36805,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[352].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[362].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTeamsRequest); i { case 0: return &v.state @@ -36007,7 +36817,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[353].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[363].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTeamsResponse); i { case 0: return &v.state @@ -36019,7 +36829,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[354].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[364].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTeamsStatisticsRequest); i { case 0: return &v.state @@ -36031,7 +36841,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[355].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[365].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTeamsStatisticsResponse); i { case 0: return &v.state @@ -36043,7 +36853,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[356].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[366].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TeamsStatisticsConnection); i { case 0: return &v.state @@ -36055,7 +36865,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[357].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[367].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TeamStatisticsEdge); i { case 0: return &v.state @@ -36067,7 +36877,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[358].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[368].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TeamStatistics); i { case 0: return &v.state @@ -36079,7 +36889,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[359].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[369].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QuantumRewardsPerEpoch); i { case 0: return &v.state @@ -36091,7 +36901,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[360].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[370].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QuantumVolumesPerEpoch); i { case 0: return &v.state @@ -36103,7 +36913,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[361].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[371].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTeamMembersStatisticsRequest); i { case 0: return &v.state @@ -36115,7 +36925,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[362].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[372].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTeamMembersStatisticsResponse); i { case 0: return &v.state @@ -36127,7 +36937,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[363].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[373].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TeamMembersStatisticsConnection); i { case 0: return &v.state @@ -36139,7 +36949,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[364].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[374].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TeamMemberStatisticsEdge); i { case 0: return &v.state @@ -36151,7 +36961,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[365].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[375].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TeamMemberStatistics); i { case 0: return &v.state @@ -36163,7 +36973,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[366].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[376].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTeamRefereesRequest); i { case 0: return &v.state @@ -36175,7 +36985,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[367].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[377].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TeamReferee); i { case 0: return &v.state @@ -36187,7 +36997,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[368].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[378].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TeamRefereeEdge); i { case 0: return &v.state @@ -36199,7 +37009,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[369].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[379].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TeamRefereeConnection); i { case 0: return &v.state @@ -36211,7 +37021,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[370].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[380].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTeamRefereesResponse); i { case 0: return &v.state @@ -36223,7 +37033,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[371].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[381].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TeamRefereeHistory); i { case 0: return &v.state @@ -36235,7 +37045,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[372].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[382].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TeamRefereeHistoryEdge); i { case 0: return &v.state @@ -36247,7 +37057,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[373].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[383].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TeamRefereeHistoryConnection); i { case 0: return &v.state @@ -36259,7 +37069,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[374].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[384].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTeamRefereeHistoryRequest); i { case 0: return &v.state @@ -36271,7 +37081,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[375].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[385].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListTeamRefereeHistoryResponse); i { case 0: return &v.state @@ -36283,7 +37093,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[376].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[386].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetFeesStatsRequest); i { case 0: return &v.state @@ -36295,7 +37105,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[377].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[387].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetFeesStatsResponse); i { case 0: return &v.state @@ -36307,7 +37117,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[378].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[388].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetFeesStatsForPartyRequest); i { case 0: return &v.state @@ -36319,7 +37129,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[379].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[389].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetFeesStatsForPartyResponse); i { case 0: return &v.state @@ -36331,7 +37141,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[380].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[390].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetCurrentVolumeDiscountProgramRequest); i { case 0: return &v.state @@ -36343,7 +37153,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[381].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[391].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetCurrentVolumeDiscountProgramResponse); i { case 0: return &v.state @@ -36355,7 +37165,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[382].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[392].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetVolumeDiscountStatsRequest); i { case 0: return &v.state @@ -36367,7 +37177,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[383].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[393].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetVolumeDiscountStatsResponse); i { case 0: return &v.state @@ -36379,7 +37189,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[384].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[394].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*VolumeDiscountStatsConnection); i { case 0: return &v.state @@ -36391,7 +37201,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[385].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[395].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*VolumeDiscountStatsEdge); i { case 0: return &v.state @@ -36403,7 +37213,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[386].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[396].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*VolumeDiscountStats); i { case 0: return &v.state @@ -36415,7 +37225,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[387].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[397].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*VolumeDiscountProgram); i { case 0: return &v.state @@ -36427,7 +37237,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[388].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[398].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FeesStatsForParty); i { case 0: return &v.state @@ -36439,7 +37249,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[389].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[399].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ObserveTransactionResultsRequest); i { case 0: return &v.state @@ -36451,7 +37261,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[390].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[400].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ObserveTransactionResultsResponse); i { case 0: return &v.state @@ -36463,7 +37273,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[391].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[401].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EstimateTransferFeeRequest); i { case 0: return &v.state @@ -36475,7 +37285,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[392].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[402].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EstimateTransferFeeResponse); i { case 0: return &v.state @@ -36487,7 +37297,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[393].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[403].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetTotalTransferFeeDiscountRequest); i { case 0: return &v.state @@ -36499,7 +37309,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[394].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[404].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetTotalTransferFeeDiscountResponse); i { case 0: return &v.state @@ -36511,7 +37321,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[395].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[405].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListGamesRequest); i { case 0: return &v.state @@ -36523,7 +37333,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[396].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[406].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListGamesResponse); i { case 0: return &v.state @@ -36535,7 +37345,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[397].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[407].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GamesConnection); i { case 0: return &v.state @@ -36547,7 +37357,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[398].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[408].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GameEdge); i { case 0: return &v.state @@ -36559,7 +37369,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[399].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[409].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Game); i { case 0: return &v.state @@ -36571,7 +37381,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[400].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[410].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TeamGameEntities); i { case 0: return &v.state @@ -36583,7 +37393,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[401].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[411].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*IndividualGameEntities); i { case 0: return &v.state @@ -36595,7 +37405,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[402].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[412].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TeamGameEntity); i { case 0: return &v.state @@ -36607,7 +37417,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[403].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[413].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TeamGameParticipation); i { case 0: return &v.state @@ -36619,7 +37429,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[404].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[414].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*IndividualGameEntity); i { case 0: return &v.state @@ -36631,7 +37441,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[405].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[415].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPartyMarginModesRequest); i { case 0: return &v.state @@ -36643,7 +37453,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[406].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[416].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPartyMarginModesResponse); i { case 0: return &v.state @@ -36655,7 +37465,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[407].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[417].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PartyMarginModesConnection); i { case 0: return &v.state @@ -36667,7 +37477,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[408].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[418].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PartyMarginModeEdge); i { case 0: return &v.state @@ -36679,7 +37489,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[409].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[419].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PartyMarginMode); i { case 0: return &v.state @@ -36691,7 +37501,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[410].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[420].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TimeWeightedNotionalPosition); i { case 0: return &v.state @@ -36703,7 +37513,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[411].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[421].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetTimeWeightedNotionalPositionRequest); i { case 0: return &v.state @@ -36715,7 +37525,7 @@ func file_data_node_api_v2_trading_data_proto_init() { return nil } } - file_data_node_api_v2_trading_data_proto_msgTypes[412].Exporter = func(v interface{}, i int) interface{} { + file_data_node_api_v2_trading_data_proto_msgTypes[422].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetTimeWeightedNotionalPositionResponse); i { case 0: return &v.state @@ -36746,99 +37556,101 @@ func file_data_node_api_v2_trading_data_proto_init() { (*ObserveOrdersResponse_Updates)(nil), } file_data_node_api_v2_trading_data_proto_msgTypes[30].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[31].OneofWrappers = []interface{}{} file_data_node_api_v2_trading_data_proto_msgTypes[35].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[38].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[42].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[43].OneofWrappers = []interface{}{ + file_data_node_api_v2_trading_data_proto_msgTypes[40].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[41].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[45].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[48].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[52].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[53].OneofWrappers = []interface{}{ (*ObservePositionsResponse_Snapshot)(nil), (*ObservePositionsResponse_Updates)(nil), } - file_data_node_api_v2_trading_data_proto_msgTypes[46].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[47].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[48].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[49].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[53].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[55].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[60].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[67].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[73].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[56].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[57].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[58].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[59].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[63].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[65].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[70].OneofWrappers = []interface{}{} file_data_node_api_v2_trading_data_proto_msgTypes[77].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[92].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[96].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[100].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[83].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[87].OneofWrappers = []interface{}{} file_data_node_api_v2_trading_data_proto_msgTypes[102].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[108].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[122].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[130].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[106].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[110].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[112].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[118].OneofWrappers = []interface{}{} file_data_node_api_v2_trading_data_proto_msgTypes[132].OneofWrappers = []interface{}{} file_data_node_api_v2_trading_data_proto_msgTypes[140].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[162].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[167].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[171].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[173].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[174].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[178].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[182].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[142].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[150].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[172].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[177].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[181].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[183].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[184].OneofWrappers = []interface{}{} file_data_node_api_v2_trading_data_proto_msgTypes[188].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[194].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[192].OneofWrappers = []interface{}{} file_data_node_api_v2_trading_data_proto_msgTypes[198].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[199].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[202].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[207].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[204].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[208].OneofWrappers = []interface{}{} file_data_node_api_v2_trading_data_proto_msgTypes[209].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[214].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[218].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[220].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[212].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[217].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[219].OneofWrappers = []interface{}{} file_data_node_api_v2_trading_data_proto_msgTypes[224].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[226].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[228].OneofWrappers = []interface{}{} file_data_node_api_v2_trading_data_proto_msgTypes[230].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[237].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[241].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[245].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[234].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[236].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[240].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[247].OneofWrappers = []interface{}{} file_data_node_api_v2_trading_data_proto_msgTypes[251].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[258].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[262].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[255].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[261].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[268].OneofWrappers = []interface{}{} file_data_node_api_v2_trading_data_proto_msgTypes[272].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[276].OneofWrappers = []interface{}{} file_data_node_api_v2_trading_data_proto_msgTypes[282].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[285].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[289].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[307].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[310].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[314].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[318].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[325].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[333].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[337].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[342].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[344].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[349].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[286].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[292].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[295].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[299].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[317].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[320].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[324].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[328].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[335].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[343].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[347].OneofWrappers = []interface{}{} file_data_node_api_v2_trading_data_proto_msgTypes[352].OneofWrappers = []interface{}{} file_data_node_api_v2_trading_data_proto_msgTypes[354].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[361].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[366].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[374].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[359].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[362].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[364].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[371].OneofWrappers = []interface{}{} file_data_node_api_v2_trading_data_proto_msgTypes[376].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[378].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[382].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[387].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[389].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[395].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[399].OneofWrappers = []interface{}{ + file_data_node_api_v2_trading_data_proto_msgTypes[384].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[386].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[388].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[392].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[397].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[399].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[405].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[409].OneofWrappers = []interface{}{ (*Game_Team)(nil), (*Game_Individual)(nil), } - file_data_node_api_v2_trading_data_proto_msgTypes[405].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[409].OneofWrappers = []interface{}{} - file_data_node_api_v2_trading_data_proto_msgTypes[411].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[415].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[419].OneofWrappers = []interface{}{} + file_data_node_api_v2_trading_data_proto_msgTypes[421].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_data_node_api_v2_trading_data_proto_rawDesc, NumEnums: 6, - NumMessages: 413, + NumMessages: 423, NumExtensions: 0, NumServices: 1, }, diff --git a/protos/data-node/api/v2/trading_data.pb.gw.go b/protos/data-node/api/v2/trading_data.pb.gw.go index f2aaf612911..9c9c8aa7718 100644 --- a/protos/data-node/api/v2/trading_data.pb.gw.go +++ b/protos/data-node/api/v2/trading_data.pb.gw.go @@ -405,6 +405,78 @@ func local_request_TradingDataService_ListStopOrders_0(ctx context.Context, mars } +var ( + filter_TradingDataService_ListGameTeamScores_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + +func request_TradingDataService_ListGameTeamScores_0(ctx context.Context, marshaler runtime.Marshaler, client TradingDataServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListGameTeamScoresRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_TradingDataService_ListGameTeamScores_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ListGameTeamScores(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_TradingDataService_ListGameTeamScores_0(ctx context.Context, marshaler runtime.Marshaler, server TradingDataServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListGameTeamScoresRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_TradingDataService_ListGameTeamScores_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ListGameTeamScores(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_TradingDataService_ListGamePartyScores_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + +func request_TradingDataService_ListGamePartyScores_0(ctx context.Context, marshaler runtime.Marshaler, client TradingDataServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListGamePartyScoresRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_TradingDataService_ListGamePartyScores_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ListGamePartyScores(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_TradingDataService_ListGamePartyScores_0(ctx context.Context, marshaler runtime.Marshaler, server TradingDataServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListGamePartyScoresRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_TradingDataService_ListGamePartyScores_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ListGamePartyScores(ctx, &protoReq) + return msg, metadata, err + +} + var ( filter_TradingDataService_ListAllPositions_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} ) @@ -4636,6 +4708,52 @@ func RegisterTradingDataServiceHandlerServer(ctx context.Context, mux *runtime.S }) + mux.Handle("GET", pattern_TradingDataService_ListGameTeamScores_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, "/datanode.api.v2.TradingDataService/ListGameTeamScores", runtime.WithHTTPPathPattern("/api/v2/games/team-scores")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_TradingDataService_ListGameTeamScores_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_TradingDataService_ListGameTeamScores_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_TradingDataService_ListGamePartyScores_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, "/datanode.api.v2.TradingDataService/ListGamePartyScores", runtime.WithHTTPPathPattern("/api/v2/games/party-scores")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_TradingDataService_ListGamePartyScores_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_TradingDataService_ListGamePartyScores_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_TradingDataService_ListAllPositions_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -7032,6 +7150,46 @@ func RegisterTradingDataServiceHandlerClient(ctx context.Context, mux *runtime.S }) + mux.Handle("GET", pattern_TradingDataService_ListGameTeamScores_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, "/datanode.api.v2.TradingDataService/ListGameTeamScores", runtime.WithHTTPPathPattern("/api/v2/games/team-scores")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_TradingDataService_ListGameTeamScores_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_TradingDataService_ListGameTeamScores_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_TradingDataService_ListGamePartyScores_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, "/datanode.api.v2.TradingDataService/ListGamePartyScores", runtime.WithHTTPPathPattern("/api/v2/games/party-scores")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_TradingDataService_ListGamePartyScores_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_TradingDataService_ListGamePartyScores_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_TradingDataService_ListAllPositions_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -9154,6 +9312,10 @@ var ( pattern_TradingDataService_ListStopOrders_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "v2", "stoporders"}, "")) + pattern_TradingDataService_ListGameTeamScores_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "v2", "games", "team-scores"}, "")) + + pattern_TradingDataService_ListGamePartyScores_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "v2", "games", "party-scores"}, "")) + pattern_TradingDataService_ListAllPositions_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "v2", "positions"}, "")) pattern_TradingDataService_ObservePositions_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "v2", "stream", "positions"}, "")) @@ -9384,6 +9546,10 @@ var ( forward_TradingDataService_ListStopOrders_0 = runtime.ForwardResponseMessage + forward_TradingDataService_ListGameTeamScores_0 = runtime.ForwardResponseMessage + + forward_TradingDataService_ListGamePartyScores_0 = runtime.ForwardResponseMessage + forward_TradingDataService_ListAllPositions_0 = runtime.ForwardResponseMessage forward_TradingDataService_ObservePositions_0 = runtime.ForwardResponseStream diff --git a/protos/data-node/api/v2/trading_data_grpc.pb.go b/protos/data-node/api/v2/trading_data_grpc.pb.go index 8bf070dbd57..3db12bef194 100644 --- a/protos/data-node/api/v2/trading_data_grpc.pb.go +++ b/protos/data-node/api/v2/trading_data_grpc.pb.go @@ -62,6 +62,14 @@ type TradingDataServiceClient interface { // // Get a list of stop orders that match the given filters ListStopOrders(ctx context.Context, in *ListStopOrdersRequest, opts ...grpc.CallOption) (*ListStopOrdersResponse, error) + // List game team scores + // + // Get a list of team scores for the given filters + ListGameTeamScores(ctx context.Context, in *ListGameTeamScoresRequest, opts ...grpc.CallOption) (*ListGameTeamScoresResponse, error) + // List game party scores + // + // Get a list of party scores for the given filters + ListGamePartyScores(ctx context.Context, in *ListGamePartyScoresRequest, opts ...grpc.CallOption) (*ListGamePartyScoresResponse, error) // Deprecated: Do not use. // Deprecated: List positions // @@ -765,6 +773,24 @@ func (c *tradingDataServiceClient) ListStopOrders(ctx context.Context, in *ListS return out, nil } +func (c *tradingDataServiceClient) ListGameTeamScores(ctx context.Context, in *ListGameTeamScoresRequest, opts ...grpc.CallOption) (*ListGameTeamScoresResponse, error) { + out := new(ListGameTeamScoresResponse) + err := c.cc.Invoke(ctx, "/datanode.api.v2.TradingDataService/ListGameTeamScores", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *tradingDataServiceClient) ListGamePartyScores(ctx context.Context, in *ListGamePartyScoresRequest, opts ...grpc.CallOption) (*ListGamePartyScoresResponse, error) { + out := new(ListGamePartyScoresResponse) + err := c.cc.Invoke(ctx, "/datanode.api.v2.TradingDataService/ListGamePartyScores", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // Deprecated: Do not use. func (c *tradingDataServiceClient) ListPositions(ctx context.Context, in *ListPositionsRequest, opts ...grpc.CallOption) (*ListPositionsResponse, error) { out := new(ListPositionsResponse) @@ -2163,6 +2189,14 @@ type TradingDataServiceServer interface { // // Get a list of stop orders that match the given filters ListStopOrders(context.Context, *ListStopOrdersRequest) (*ListStopOrdersResponse, error) + // List game team scores + // + // Get a list of team scores for the given filters + ListGameTeamScores(context.Context, *ListGameTeamScoresRequest) (*ListGameTeamScoresResponse, error) + // List game party scores + // + // Get a list of party scores for the given filters + ListGamePartyScores(context.Context, *ListGamePartyScoresRequest) (*ListGamePartyScoresResponse, error) // Deprecated: Do not use. // Deprecated: List positions // @@ -2763,6 +2797,12 @@ func (UnimplementedTradingDataServiceServer) GetStopOrder(context.Context, *GetS func (UnimplementedTradingDataServiceServer) ListStopOrders(context.Context, *ListStopOrdersRequest) (*ListStopOrdersResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListStopOrders not implemented") } +func (UnimplementedTradingDataServiceServer) ListGameTeamScores(context.Context, *ListGameTeamScoresRequest) (*ListGameTeamScoresResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListGameTeamScores not implemented") +} +func (UnimplementedTradingDataServiceServer) ListGamePartyScores(context.Context, *ListGamePartyScoresRequest) (*ListGamePartyScoresResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListGamePartyScores not implemented") +} func (UnimplementedTradingDataServiceServer) ListPositions(context.Context, *ListPositionsRequest) (*ListPositionsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListPositions not implemented") } @@ -3280,6 +3320,42 @@ func _TradingDataService_ListStopOrders_Handler(srv interface{}, ctx context.Con return interceptor(ctx, in, info, handler) } +func _TradingDataService_ListGameTeamScores_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListGameTeamScoresRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TradingDataServiceServer).ListGameTeamScores(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/datanode.api.v2.TradingDataService/ListGameTeamScores", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TradingDataServiceServer).ListGameTeamScores(ctx, req.(*ListGameTeamScoresRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _TradingDataService_ListGamePartyScores_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListGamePartyScoresRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TradingDataServiceServer).ListGamePartyScores(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/datanode.api.v2.TradingDataService/ListGamePartyScores", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TradingDataServiceServer).ListGamePartyScores(ctx, req.(*ListGamePartyScoresRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _TradingDataService_ListPositions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ListPositionsRequest) if err := dec(in); err != nil { @@ -5381,6 +5457,14 @@ var TradingDataService_ServiceDesc = grpc.ServiceDesc{ MethodName: "ListStopOrders", Handler: _TradingDataService_ListStopOrders_Handler, }, + { + MethodName: "ListGameTeamScores", + Handler: _TradingDataService_ListGameTeamScores_Handler, + }, + { + MethodName: "ListGamePartyScores", + Handler: _TradingDataService_ListGamePartyScores_Handler, + }, { MethodName: "ListPositions", Handler: _TradingDataService_ListPositions_Handler, diff --git a/protos/embed_test.go b/protos/embed_test.go index 5581a990eeb..501de26f52e 100644 --- a/protos/embed_test.go +++ b/protos/embed_test.go @@ -45,7 +45,7 @@ func Test_DataNodeBindings(t *testing.T) { t.Run("CoreBindings should return the core http bindings", func(t *testing.T) { bindings, err := protos.DataNodeBindings() require.NoError(t, err) - wantCount := 114 + wantCount := 116 assert.Len(t, bindings.HTTP.Rules, wantCount) diff --git a/protos/sources/data-node/api/v2/trading_data.proto b/protos/sources/data-node/api/v2/trading_data.proto index 04759adaa76..c62eb708c33 100644 --- a/protos/sources/data-node/api/v2/trading_data.proto +++ b/protos/sources/data-node/api/v2/trading_data.proto @@ -103,6 +103,20 @@ service TradingDataService { option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {tags: "Orders"}; } + // List game team scores + // + // Get a list of team scores for the given filters + rpc ListGameTeamScores(ListGameTeamScoresRequest) returns (ListGameTeamScoresResponse) { + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {tags: "Games"}; + } + + // List game party scores + // + // Get a list of party scores for the given filters + rpc ListGamePartyScores(ListGamePartyScoresRequest) returns (ListGamePartyScoresResponse) { + option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {tags: "Games"}; + } + // Deprecated: List positions // // Get a list of positions by party's public key using cursor based pagination @@ -1316,6 +1330,80 @@ message GetStopOrderResponse { vega.events.v1.StopOrderEvent order = 1; } +// Request that is sent when executing a query for a list of team game scores. +message ListGameTeamScoresRequest { + // Optional pagination control. + optional Pagination pagination = 1; + // Team games filter contains all filtering conditions and values that are applied to the team games score listing. + optional GameTeamScoresFilter filter = 2; +} + +message GameTeamScoresFilter { + // Restrict game scores to the given ones. + repeated string game_ids = 1; + // Restrict game scores to those for the given teams. + repeated string team_ids = 2; +} + +// Response received from the query for getting a list of game scores for teams. +message ListGameTeamScoresResponse { + // Page of team game scores data and corresponding page information. + GameTeamScoresConnection team_scores = 1; +} + +// Page of team game scores data and corresponding page information. +message GameTeamScoresConnection { + // Page of orders and their corresponding cursors. + repeated GameTeamScoresEdge edges = 1; + // Page information that is used for fetching further pages. + PageInfo page_info = 2; +} + +message GameTeamScoresEdge { + // Data associated with an order submitted to a Vega node. + vega.events.v1.GameTeamScore node = 1; + // Cursor that can be used to fetch further pages. + string cursor = 2; +} + +// Request that is sent when executing a query for a list of party game scores. +message ListGamePartyScoresRequest { + // Optional pagination control. + optional Pagination pagination = 1; + // Party games filter contains all filtering conditions and values that are applied to the party games score listing. + optional GamePartyScoresFilter filter = 2; +} + +message GamePartyScoresFilter { + // Restrict game scores to those in the given games. + repeated string game_ids = 1; + // Restrict game scores to the parties in the given teams. + repeated string team_ids = 2; + // Restrict game scores to those relating to the given parties. + repeated string party_ids = 3; +} + +// Response received from the query for getting a list of game scores for teams. +message ListGamePartyScoresResponse { + // Page of party game scores data and corresponding page information. + GamePartyScoresConnection party_scores = 1; +} + +// Page of party game scores data and corresponding page information. +message GamePartyScoresConnection { + // Page of orders and their corresponding cursors. + repeated GamePartyScoresEdge edges = 1; + // Page information that is used for fetching further pages. + PageInfo page_info = 2; +} + +message GamePartyScoresEdge { + // Data associated with an order submitted to a Vega node. + vega.events.v1.GamePartyScore node = 1; + // Cursor that can be used to fetch further pages. + string cursor = 2; +} + // Request that is sent when executing a query for a list of stop orders. message ListStopOrdersRequest { // Optional pagination control. diff --git a/protos/sources/data-node/grpc-rest-bindings.yml b/protos/sources/data-node/grpc-rest-bindings.yml index 60d5fec7d7b..ef0611b4437 100644 --- a/protos/sources/data-node/grpc-rest-bindings.yml +++ b/protos/sources/data-node/grpc-rest-bindings.yml @@ -209,6 +209,10 @@ http: get: "/api/v2/margin-modes" - selector: datanode.api.v2.TradingDataService.GetTimeWeightedNotionalPosition get: "/api/v2/time-weighted-notional-position" + - selector: datanode.api.v2.TradingDataService.ListGamePartyScores + get: "/api/v2/games/party-scores" + - selector: datanode.api.v2.TradingDataService.ListGameTeamScores + get: "/api/v2/games/team-scores" # websockets diff --git a/protos/sources/vega/checkpoint/v1/checkpoint.proto b/protos/sources/vega/checkpoint/v1/checkpoint.proto index 58c9ab12af3..0b75f1e4da9 100644 --- a/protos/sources/vega/checkpoint/v1/checkpoint.proto +++ b/protos/sources/vega/checkpoint/v1/checkpoint.proto @@ -146,6 +146,7 @@ message ScheduledTransferAtTime { message RecurringTransfers { repeated vega.events.v1.Transfer recurring_transfers = 1; + int64 next_metric_update = 2; } message GovernanceTransfer { diff --git a/protos/sources/vega/events/v1/events.proto b/protos/sources/vega/events/v1/events.proto index fc9efbf3e9d..a1a97a1861b 100644 --- a/protos/sources/vega/events/v1/events.proto +++ b/protos/sources/vega/events/v1/events.proto @@ -1136,6 +1136,51 @@ message TeamMemberStats { string notional_volume = 2; } +// Scores per party per game with eligibility context. +message GamePartyScore { + // Game ID. + string game_id = 1; + // The party ID. + string party = 2; + // Team the party belongs to. Unset if the party is not part of a team. + optional string team_id = 3; + // Epoch when these scores were generated. + int64 epoch = 4; + // Timestamp in Unix nanoseconds when these scores were generated. + int64 time = 5; + // Party's current score in the game. + string score = 6; + // Party's current staking balance. Only populated if the game has a requirement for it. + string staking_balance = 7; + // Party's current open volume. Only populated if the game has a requirement for it. + string open_volume = 8; + // Total fees paid by the party during the relevant period. + string total_fees_paid = 9; + // If the party is eligible for a reward for this game based on the current information. + bool is_eligible = 10; + // If the party is a member of a team, this is their relative position in the sorting order of the team. + // Empty if not a team, or if the party is not eligible. + optional uint64 rank = 11; +} + +message GameTeamScore { + // Game ID. + string game_id = 1; + // Team ID + string team_id = 2; + // Epoch when these scores were generated. + int64 epoch = 3; + // Timestamp in Unix nanoseconds when these scores were generated. + int64 time = 4; + // Team's current collective score in the game. + string score = 5; +} + +message GameScores { + repeated GameTeamScore team_scores = 1; + repeated GamePartyScore party_scores = 2; +} + // Bus event type is used to specify a type of event // It has 2 styles of event: // Single values (e.g. BUS_EVENT_TYPE_ORDER) where they represent one data item @@ -1355,6 +1400,9 @@ enum BusEventType { // Event containing the IDs of orders cancelled by a party on a market. BUS_EVENT_TYPE_CANCELLED_ORDERS = 89; + // Event containing the near realtime game scores for parties and teams. + BUS_EVENT_TYPE_GAME_SCORES = 90; + // Event indicating a market related event, for example when a market opens BUS_EVENT_TYPE_MARKET = 101; // Event used to report failed transactions back to a user, this is excluded from the ALL type @@ -1542,7 +1590,8 @@ message BusEvent { TimeWeightedNotionalPositionUpdated time_weighted_notional_position_updated = 186; // Event notifying of multiple orders being cancelled for a given party, on a given market. CancelledOrders cancelled_orders = 187; - + // Event notifying on near realtime game scores for parties and teams. + GameScores game_scores = 188; // Market tick events MarketEvent market = 1001; // Transaction error events, not included in the ALL event type diff --git a/protos/sources/vega/snapshot/v1/snapshot.proto b/protos/sources/vega/snapshot/v1/snapshot.proto index 26186f26056..5c927374651 100644 --- a/protos/sources/vega/snapshot/v1/snapshot.proto +++ b/protos/sources/vega/snapshot/v1/snapshot.proto @@ -299,6 +299,7 @@ message BankingAssetActions { message BankingRecurringTransfers { vega.checkpoint.v1.RecurringTransfers recurring_transfers = 1; + int64 next_metric_update = 2; } message BankingScheduledTransfers { diff --git a/protos/vega/checkpoint/v1/checkpoint.pb.go b/protos/vega/checkpoint/v1/checkpoint.pb.go index bbc882dde38..80c20236388 100644 --- a/protos/vega/checkpoint/v1/checkpoint.pb.go +++ b/protos/vega/checkpoint/v1/checkpoint.pb.go @@ -1258,6 +1258,7 @@ type RecurringTransfers struct { unknownFields protoimpl.UnknownFields RecurringTransfers []*v1.Transfer `protobuf:"bytes,1,rep,name=recurring_transfers,json=recurringTransfers,proto3" json:"recurring_transfers,omitempty"` + NextMetricUpdate int64 `protobuf:"varint,2,opt,name=next_metric_update,json=nextMetricUpdate,proto3" json:"next_metric_update,omitempty"` } func (x *RecurringTransfers) Reset() { @@ -1299,6 +1300,13 @@ func (x *RecurringTransfers) GetRecurringTransfers() []*v1.Transfer { return nil } +func (x *RecurringTransfers) GetNextMetricUpdate() int64 { + if x != nil { + return x.NextMetricUpdate + } + return 0 +} + type GovernanceTransfer struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3618,453 +3626,456 @@ var file_vega_checkpoint_v1_checkpoint_proto_rawDesc = []byte{ 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, - 0x52, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x22, 0x5f, 0x0a, 0x12, 0x52, - 0x65, 0x63, 0x75, 0x72, 0x72, 0x69, 0x6e, 0x67, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, - 0x73, 0x12, 0x49, 0x0a, 0x13, 0x72, 0x65, 0x63, 0x75, 0x72, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, - 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x12, 0x72, 0x65, 0x63, 0x75, 0x72, 0x72, - 0x69, 0x6e, 0x67, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x22, 0xd1, 0x01, 0x0a, - 0x12, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x66, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x12, 0x37, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x36, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, - 0x4e, 0x65, 0x77, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x22, 0x88, 0x01, 0x0a, 0x21, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x47, 0x6f, - 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, - 0x41, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x69, 0x76, 0x65, - 0x72, 0x5f, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x69, - 0x76, 0x65, 0x72, 0x4f, 0x6e, 0x12, 0x44, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, - 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x6f, - 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, - 0x52, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x22, 0xae, 0x06, 0x0a, 0x07, - 0x42, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x12, 0x57, 0x0a, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x66, 0x65, 0x72, 0x73, 0x5f, 0x61, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, - 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x41, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x52, - 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x41, 0x74, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x57, 0x0a, 0x13, 0x72, 0x65, 0x63, 0x75, 0x72, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, - 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, - 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x75, 0x72, 0x72, 0x69, 0x6e, 0x67, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x65, 0x72, 0x73, 0x52, 0x12, 0x72, 0x65, 0x63, 0x75, 0x72, 0x72, 0x69, 0x6e, 0x67, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0x51, 0x0a, 0x14, 0x70, 0x72, 0x69, - 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, - 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x72, 0x69, - 0x64, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x12, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, - 0x79, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x44, 0x0a, 0x0d, - 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x61, 0x73, 0x73, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x3c, 0x0a, 0x1b, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x5f, - 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x74, 0x68, 0x5f, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x17, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, - 0x6e, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x45, 0x74, 0x68, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x65, 0x65, 0x6e, 0x5f, 0x72, 0x65, 0x66, 0x73, 0x18, 0x06, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x65, 0x6e, 0x52, 0x65, 0x66, 0x73, 0x12, 0x76, 0x0a, - 0x1c, 0x67, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x65, 0x72, 0x73, 0x5f, 0x61, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x64, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x65, 0x72, 0x41, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x19, 0x67, 0x6f, 0x76, 0x65, - 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x41, - 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x6c, 0x0a, 0x1e, 0x72, 0x65, 0x63, 0x75, 0x72, 0x72, 0x69, - 0x6e, 0x67, 0x5f, 0x67, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, - 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x1c, 0x72, 0x65, 0x63, 0x75, 0x72, 0x72, 0x69, 0x6e, 0x67, + 0x52, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x22, 0x8d, 0x01, 0x0a, 0x12, + 0x52, 0x65, 0x63, 0x75, 0x72, 0x72, 0x69, 0x6e, 0x67, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, + 0x72, 0x73, 0x12, 0x49, 0x0a, 0x13, 0x72, 0x65, 0x63, 0x75, 0x72, 0x72, 0x69, 0x6e, 0x67, 0x5f, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, 0x12, 0x72, 0x65, 0x63, 0x75, 0x72, + 0x72, 0x69, 0x6e, 0x67, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0x2c, 0x0a, + 0x12, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6e, 0x65, 0x78, 0x74, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x22, 0xd1, 0x01, 0x0a, 0x12, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x65, 0x72, 0x73, 0x12, 0x55, 0x0a, 0x16, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, - 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x52, 0x14, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x42, - 0x72, 0x69, 0x64, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x40, 0x0a, 0x1d, 0x6c, 0x61, - 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, - 0x79, 0x5f, 0x65, 0x74, 0x68, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x19, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x53, 0x65, 0x63, 0x6f, 0x6e, - 0x64, 0x61, 0x72, 0x79, 0x45, 0x74, 0x68, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x80, 0x01, 0x0a, - 0x0b, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x61, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x49, - 0x6e, 0x64, 0x65, 0x78, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x22, - 0xaa, 0x02, 0x0a, 0x0a, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x4b, - 0x0a, 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, - 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0e, 0x76, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x5a, 0x0a, 0x15, 0x70, - 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x72, 0x6f, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x76, 0x65, 0x67, - 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, - 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x13, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x52, 0x6f, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x73, 0x0a, 0x1e, 0x70, 0x65, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x5f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x5f, 0x6b, 0x65, 0x79, 0x5f, - 0x72, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x2e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, - 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x74, 0x68, 0x65, - 0x72, 0x65, 0x75, 0x6d, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x1b, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, - 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xee, 0x02, 0x0a, - 0x0e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, - 0x4a, 0x0a, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, - 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x0f, 0x76, 0x61, 0x6c, 0x69, - 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x65, 0x74, 0x68, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x73, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x12, 0x65, 0x74, 0x68, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x77, - 0x61, 0x72, 0x64, 0x65, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x6f, 0x72, 0x5f, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, - 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x37, - 0x0a, 0x0d, 0x72, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x52, 0x61, 0x6e, - 0x6b, 0x69, 0x6e, 0x67, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x0c, 0x72, 0x61, 0x6e, 0x6b, 0x69, - 0x6e, 0x67, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x68, 0x65, 0x61, 0x72, 0x74, - 0x62, 0x65, 0x61, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, - 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x30, 0x0a, 0x14, 0x68, - 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, - 0x69, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x08, 0x52, 0x12, 0x68, 0x65, 0x61, 0x72, 0x74, - 0x62, 0x65, 0x61, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x69, 0x67, 0x73, 0x22, 0x6b, 0x0a, - 0x07, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x12, 0x38, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x65, - 0x70, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, - 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x6b, - 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, - 0x65, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x6c, 0x61, 0x73, - 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x65, 0x65, 0x6e, 0x22, 0xd2, 0x01, 0x0a, 0x0f, 0x4d, - 0x75, 0x6c, 0x74, 0x69, 0x73, 0x69, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x42, - 0x0a, 0x07, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x28, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, - 0x67, 0x6e, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x73, 0x69, 0x67, 0x6e, 0x65, - 0x72, 0x73, 0x12, 0x53, 0x0a, 0x0d, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, - 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x76, 0x65, 0x67, 0x61, - 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x52, 0x43, 0x32, 0x30, - 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, - 0x64, 0x53, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x0c, 0x74, 0x68, 0x72, 0x65, 0x73, - 0x68, 0x6f, 0x6c, 0x64, 0x53, 0x65, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x5f, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x65, 0x65, 0x6e, 0x22, - 0x9b, 0x03, 0x0a, 0x0d, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x65, - 0x72, 0x12, 0x52, 0x0a, 0x0f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, - 0x76, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x76, 0x65, 0x67, - 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, - 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x54, 0x72, - 0x61, 0x63, 0x6b, 0x65, 0x72, 0x52, 0x0e, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, - 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x5b, 0x0a, 0x15, 0x74, 0x61, 0x6b, 0x65, 0x72, 0x5f, 0x6e, - 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, - 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x6b, 0x65, 0x72, 0x4e, - 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x13, 0x74, - 0x61, 0x6b, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x12, 0x85, 0x01, 0x0a, 0x25, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x74, 0x6f, - 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x74, 0x61, 0x6b, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x74, - 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x54, 0x6f, - 0x50, 0x61, 0x72, 0x74, 0x79, 0x54, 0x61, 0x6b, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x20, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x54, 0x6f, 0x50, 0x61, 0x72, 0x74, 0x79, 0x54, 0x61, 0x6b, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, - 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x51, 0x0a, 0x10, 0x65, 0x70, - 0x6f, 0x63, 0x68, 0x5f, 0x74, 0x61, 0x6b, 0x65, 0x72, 0x5f, 0x66, 0x65, 0x65, 0x73, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, - 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x50, - 0x61, 0x72, 0x74, 0x79, 0x54, 0x61, 0x6b, 0x65, 0x72, 0x46, 0x65, 0x65, 0x73, 0x52, 0x0e, 0x65, - 0x70, 0x6f, 0x63, 0x68, 0x54, 0x61, 0x6b, 0x65, 0x72, 0x46, 0x65, 0x65, 0x73, 0x22, 0x9e, 0x0c, - 0x0a, 0x15, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, - 0x54, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, - 0x14, 0x0a, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x61, 0x73, 0x73, 0x65, 0x74, 0x12, 0x4d, 0x0a, 0x13, 0x6d, 0x61, 0x6b, 0x65, 0x72, 0x5f, 0x66, - 0x65, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x46, 0x65, 0x65, - 0x73, 0x52, 0x11, 0x6d, 0x61, 0x6b, 0x65, 0x72, 0x46, 0x65, 0x65, 0x73, 0x52, 0x65, 0x63, 0x65, - 0x69, 0x76, 0x65, 0x64, 0x12, 0x45, 0x0a, 0x0f, 0x6d, 0x61, 0x6b, 0x65, 0x72, 0x5f, 0x66, 0x65, - 0x65, 0x73, 0x5f, 0x70, 0x61, 0x69, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, - 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, - 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x52, 0x0d, 0x6d, 0x61, - 0x6b, 0x65, 0x72, 0x46, 0x65, 0x65, 0x73, 0x50, 0x61, 0x69, 0x64, 0x12, 0x36, 0x0a, 0x07, 0x6c, - 0x70, 0x5f, 0x66, 0x65, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, + 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x12, 0x37, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x36, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4e, + 0x65, 0x77, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, + 0x88, 0x01, 0x0a, 0x21, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x47, 0x6f, 0x76, + 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x41, + 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, + 0x5f, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x69, 0x76, + 0x65, 0x72, 0x4f, 0x6e, 0x12, 0x44, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x6f, 0x76, + 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x52, + 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x22, 0xae, 0x06, 0x0a, 0x07, 0x42, + 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x12, 0x57, 0x0a, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x65, 0x72, 0x73, 0x5f, 0x61, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x41, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x0f, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x41, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x57, 0x0a, 0x13, 0x72, 0x65, 0x63, 0x75, 0x72, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x52, 0x06, 0x6c, 0x70, 0x46, - 0x65, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x12, - 0x1d, 0x0a, 0x0a, 0x62, 0x6f, 0x6e, 0x75, 0x73, 0x5f, 0x70, 0x61, 0x69, 0x64, 0x18, 0x07, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6f, 0x6e, 0x75, 0x73, 0x50, 0x61, 0x69, 0x64, 0x12, 0x21, - 0x0a, 0x0c, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x65, 0x64, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, - 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x79, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x72, 0x65, 0x61, 0x64, - 0x79, 0x54, 0x6f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x58, 0x0a, 0x16, 0x74, 0x69, 0x6d, - 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x76, 0x65, 0x67, 0x61, - 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x54, - 0x57, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x14, 0x74, - 0x69, 0x6d, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x58, 0x0a, 0x16, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x0b, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x57, 0x4e, 0x6f, 0x74, 0x69, 0x6f, - 0x6e, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x52, 0x14, 0x74, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x42, 0x0a, - 0x0c, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0c, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, - 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x44, 0x61, 0x74, - 0x61, 0x12, 0x61, 0x0a, 0x1b, 0x6d, 0x61, 0x6b, 0x65, 0x72, 0x5f, 0x66, 0x65, 0x65, 0x73, 0x5f, - 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, - 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, - 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x70, 0x6f, 0x63, - 0x68, 0x50, 0x61, 0x72, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x52, 0x18, 0x6d, 0x61, 0x6b, 0x65, - 0x72, 0x46, 0x65, 0x65, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x48, 0x69, 0x73, - 0x74, 0x6f, 0x72, 0x79, 0x12, 0x59, 0x0a, 0x17, 0x6d, 0x61, 0x6b, 0x65, 0x72, 0x5f, 0x66, 0x65, - 0x65, 0x73, 0x5f, 0x70, 0x61, 0x69, 0x64, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, - 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, + 0x31, 0x2e, 0x52, 0x65, 0x63, 0x75, 0x72, 0x72, 0x69, 0x6e, 0x67, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x65, 0x72, 0x73, 0x52, 0x12, 0x72, 0x65, 0x63, 0x75, 0x72, 0x72, 0x69, 0x6e, 0x67, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0x51, 0x0a, 0x14, 0x70, 0x72, 0x69, 0x6d, + 0x61, 0x72, 0x79, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, + 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x72, 0x69, 0x64, + 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x12, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, + 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x44, 0x0a, 0x0d, 0x61, + 0x73, 0x73, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x61, 0x73, 0x73, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x3c, 0x0a, 0x1b, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x5f, 0x70, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x65, 0x74, 0x68, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x17, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, + 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x45, 0x74, 0x68, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, + 0x1b, 0x0a, 0x09, 0x73, 0x65, 0x65, 0x6e, 0x5f, 0x72, 0x65, 0x66, 0x73, 0x18, 0x06, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x65, 0x6e, 0x52, 0x65, 0x66, 0x73, 0x12, 0x76, 0x0a, 0x1c, + 0x67, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x65, 0x72, 0x73, 0x5f, 0x61, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, + 0x64, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x65, 0x72, 0x41, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x19, 0x67, 0x6f, 0x76, 0x65, 0x72, + 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x41, 0x74, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x6c, 0x0a, 0x1e, 0x72, 0x65, 0x63, 0x75, 0x72, 0x72, 0x69, 0x6e, + 0x67, 0x5f, 0x67, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x76, + 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, + 0x31, 0x2e, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x65, 0x72, 0x52, 0x1c, 0x72, 0x65, 0x63, 0x75, 0x72, 0x72, 0x69, 0x6e, 0x67, 0x47, + 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, + 0x72, 0x73, 0x12, 0x55, 0x0a, 0x16, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x5f, + 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x52, 0x14, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x42, 0x72, + 0x69, 0x64, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x40, 0x0a, 0x1d, 0x6c, 0x61, 0x73, + 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, + 0x5f, 0x65, 0x74, 0x68, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x19, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, + 0x61, 0x72, 0x79, 0x45, 0x74, 0x68, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x80, 0x01, 0x0a, 0x0b, + 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x61, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6c, 0x6f, 0x67, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x22, 0xaa, + 0x02, 0x0a, 0x0a, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x4b, 0x0a, + 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, + 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0e, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x5a, 0x0a, 0x15, 0x70, 0x65, + 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x76, 0x65, 0x67, 0x61, + 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, + 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x13, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x73, 0x0a, 0x1e, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x5f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x72, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, + 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x74, 0x68, 0x65, 0x72, + 0x65, 0x75, 0x6d, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x1b, + 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x4b, + 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xee, 0x02, 0x0a, 0x0e, + 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x4a, + 0x0a, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x6f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x65, 0x74, 0x68, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x12, 0x65, 0x74, 0x68, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x77, 0x61, + 0x72, 0x64, 0x65, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, + 0x72, 0x5f, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x37, 0x0a, + 0x0d, 0x72, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x52, 0x61, 0x6e, 0x6b, + 0x69, 0x6e, 0x67, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x0c, 0x72, 0x61, 0x6e, 0x6b, 0x69, 0x6e, + 0x67, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, + 0x65, 0x61, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x30, 0x0a, 0x14, 0x68, 0x65, + 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x69, + 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x08, 0x52, 0x12, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, + 0x65, 0x61, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x69, 0x67, 0x73, 0x22, 0x6b, 0x0a, 0x07, + 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x12, 0x38, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x65, 0x70, + 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, + 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x6b, 0x65, + 0x4c, 0x69, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, + 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, + 0x73, 0x65, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x65, 0x65, 0x6e, 0x22, 0xd2, 0x01, 0x0a, 0x0f, 0x4d, 0x75, + 0x6c, 0x74, 0x69, 0x73, 0x69, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x42, 0x0a, + 0x07, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, + 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, + 0x6e, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, + 0x73, 0x12, 0x53, 0x0a, 0x0d, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x73, + 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, + 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, + 0x53, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x0c, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, + 0x6f, 0x6c, 0x64, 0x53, 0x65, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x65, 0x65, 0x6e, 0x22, 0x9b, + 0x03, 0x0a, 0x0d, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x72, + 0x12, 0x52, 0x0a, 0x0f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, + 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x76, 0x65, 0x67, 0x61, + 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, + 0x63, 0x6b, 0x65, 0x72, 0x52, 0x0e, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, + 0x76, 0x69, 0x74, 0x79, 0x12, 0x5b, 0x0a, 0x15, 0x74, 0x61, 0x6b, 0x65, 0x72, 0x5f, 0x6e, 0x6f, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x6b, 0x65, 0x72, 0x4e, 0x6f, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x13, 0x74, 0x61, + 0x6b, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, + 0x65, 0x12, 0x85, 0x01, 0x0a, 0x25, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x74, 0x6f, 0x5f, + 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x74, 0x61, 0x6b, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x34, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x54, 0x6f, 0x50, + 0x61, 0x72, 0x74, 0x79, 0x54, 0x61, 0x6b, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x20, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x54, + 0x6f, 0x50, 0x61, 0x72, 0x74, 0x79, 0x54, 0x61, 0x6b, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x6c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x51, 0x0a, 0x10, 0x65, 0x70, 0x6f, + 0x63, 0x68, 0x5f, 0x74, 0x61, 0x6b, 0x65, 0x72, 0x5f, 0x66, 0x65, 0x65, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x50, 0x61, + 0x72, 0x74, 0x79, 0x54, 0x61, 0x6b, 0x65, 0x72, 0x46, 0x65, 0x65, 0x73, 0x52, 0x0e, 0x65, 0x70, + 0x6f, 0x63, 0x68, 0x54, 0x61, 0x6b, 0x65, 0x72, 0x46, 0x65, 0x65, 0x73, 0x22, 0x9e, 0x0c, 0x0a, + 0x15, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x54, + 0x72, 0x61, 0x63, 0x6b, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x14, + 0x0a, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, + 0x73, 0x73, 0x65, 0x74, 0x12, 0x4d, 0x0a, 0x13, 0x6d, 0x61, 0x6b, 0x65, 0x72, 0x5f, 0x66, 0x65, + 0x65, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, + 0x52, 0x11, 0x6d, 0x61, 0x6b, 0x65, 0x72, 0x46, 0x65, 0x65, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, + 0x76, 0x65, 0x64, 0x12, 0x45, 0x0a, 0x0f, 0x6d, 0x61, 0x6b, 0x65, 0x72, 0x5f, 0x66, 0x65, 0x65, + 0x73, 0x5f, 0x70, 0x61, 0x69, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, + 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x52, 0x0d, 0x6d, 0x61, 0x6b, + 0x65, 0x72, 0x46, 0x65, 0x65, 0x73, 0x50, 0x61, 0x69, 0x64, 0x12, 0x36, 0x0a, 0x07, 0x6c, 0x70, + 0x5f, 0x66, 0x65, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x65, + 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, + 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x52, 0x06, 0x6c, 0x70, 0x46, 0x65, + 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x12, 0x1d, + 0x0a, 0x0a, 0x62, 0x6f, 0x6e, 0x75, 0x73, 0x5f, 0x70, 0x61, 0x69, 0x64, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x09, 0x62, 0x6f, 0x6e, 0x75, 0x73, 0x50, 0x61, 0x69, 0x64, 0x12, 0x21, 0x0a, + 0x0c, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x65, 0x64, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x72, 0x61, 0x64, 0x65, 0x64, + 0x12, 0x26, 0x0a, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x79, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x72, 0x65, 0x61, 0x64, 0x79, + 0x54, 0x6f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x58, 0x0a, 0x16, 0x74, 0x69, 0x6d, 0x65, + 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, + 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x57, + 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x14, 0x74, 0x69, + 0x6d, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x58, 0x0a, 0x16, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x0b, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x57, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x52, 0x14, 0x74, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x42, 0x0a, 0x0c, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0c, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x0b, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x44, 0x61, 0x74, 0x61, + 0x12, 0x61, 0x0a, 0x1b, 0x6d, 0x61, 0x6b, 0x65, 0x72, 0x5f, 0x66, 0x65, 0x65, 0x73, 0x5f, 0x72, + 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, + 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, - 0x50, 0x61, 0x72, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x52, 0x14, 0x6d, 0x61, 0x6b, 0x65, 0x72, - 0x46, 0x65, 0x65, 0x73, 0x50, 0x61, 0x69, 0x64, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, - 0x4a, 0x0a, 0x0f, 0x6c, 0x70, 0x5f, 0x66, 0x65, 0x65, 0x73, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, - 0x72, 0x79, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x70, - 0x6f, 0x63, 0x68, 0x50, 0x61, 0x72, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x52, 0x0d, 0x6c, 0x70, - 0x46, 0x65, 0x65, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x7d, 0x0a, 0x23, 0x74, - 0x69, 0x6d, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, - 0x72, 0x79, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x70, - 0x6f, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x50, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x1f, 0x74, 0x69, 0x6d, 0x65, 0x57, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, - 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x7f, 0x0a, 0x23, 0x74, 0x69, - 0x6d, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x74, 0x69, - 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, - 0x79, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, + 0x50, 0x61, 0x72, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x52, 0x18, 0x6d, 0x61, 0x6b, 0x65, 0x72, + 0x46, 0x65, 0x65, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x48, 0x69, 0x73, 0x74, + 0x6f, 0x72, 0x79, 0x12, 0x59, 0x0a, 0x17, 0x6d, 0x61, 0x6b, 0x65, 0x72, 0x5f, 0x66, 0x65, 0x65, + 0x73, 0x5f, 0x70, 0x61, 0x69, 0x64, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x0e, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x50, + 0x61, 0x72, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x52, 0x14, 0x6d, 0x61, 0x6b, 0x65, 0x72, 0x46, + 0x65, 0x65, 0x73, 0x50, 0x61, 0x69, 0x64, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x4a, + 0x0a, 0x0f, 0x6c, 0x70, 0x5f, 0x66, 0x65, 0x65, 0x73, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, + 0x79, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x70, 0x6f, - 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x4e, 0x6f, - 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x52, 0x1f, 0x74, 0x69, 0x6d, 0x65, - 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, - 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x56, 0x0a, 0x14, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x68, 0x69, 0x73, 0x74, - 0x6f, 0x72, 0x79, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x76, 0x65, 0x67, 0x61, - 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, - 0x70, 0x6f, 0x63, 0x68, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x44, 0x61, 0x74, 0x61, 0x52, - 0x12, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, - 0x6f, 0x72, 0x79, 0x12, 0x3c, 0x0a, 0x0a, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x5f, 0x66, 0x65, 0x65, - 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, - 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, - 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x52, 0x09, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x46, 0x65, 0x65, - 0x73, 0x12, 0x3f, 0x0a, 0x0c, 0x6c, 0x70, 0x5f, 0x70, 0x61, 0x69, 0x64, 0x5f, 0x66, 0x65, 0x65, - 0x73, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, - 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, - 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x52, 0x0a, 0x6c, 0x70, 0x50, 0x61, 0x69, 0x64, 0x46, 0x65, - 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x6c, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, - 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0f, 0x72, - 0x65, 0x61, 0x6c, 0x69, 0x73, 0x65, 0x64, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x12, 0x5e, - 0x0a, 0x18, 0x72, 0x65, 0x61, 0x6c, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x73, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x16, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x24, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x73, 0x44, 0x61, 0x74, 0x61, 0x52, 0x16, 0x72, 0x65, 0x61, 0x6c, 0x69, 0x73, 0x65, 0x64, - 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x82, - 0x01, 0x0a, 0x13, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x50, 0x61, 0x72, 0x74, 0x79, 0x54, 0x61, 0x6b, - 0x65, 0x72, 0x46, 0x65, 0x65, 0x73, 0x12, 0x6b, 0x0a, 0x1b, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, - 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x74, 0x61, 0x6b, 0x65, 0x72, 0x5f, 0x66, 0x65, 0x65, 0x73, - 0x5f, 0x70, 0x61, 0x69, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x76, 0x65, + 0x63, 0x68, 0x50, 0x61, 0x72, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x52, 0x0d, 0x6c, 0x70, 0x46, + 0x65, 0x65, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x7d, 0x0a, 0x23, 0x74, 0x69, + 0x6d, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, + 0x79, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x70, 0x6f, + 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x50, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x1f, 0x74, 0x69, 0x6d, 0x65, 0x57, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, + 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x7f, 0x0a, 0x23, 0x74, 0x69, 0x6d, + 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, + 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, + 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x70, 0x6f, 0x63, + 0x68, 0x54, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x52, 0x1f, 0x74, 0x69, 0x6d, 0x65, 0x57, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x44, + 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x56, 0x0a, 0x14, 0x72, 0x65, + 0x74, 0x75, 0x72, 0x6e, 0x73, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, + 0x72, 0x79, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, + 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x70, + 0x6f, 0x63, 0x68, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x44, 0x61, 0x74, 0x61, 0x52, 0x12, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x44, 0x61, 0x74, 0x61, 0x48, 0x69, 0x73, 0x74, 0x6f, + 0x72, 0x79, 0x12, 0x3c, 0x0a, 0x0a, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x5f, 0x66, 0x65, 0x65, 0x73, + 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, + 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, + 0x79, 0x46, 0x65, 0x65, 0x73, 0x52, 0x09, 0x69, 0x6e, 0x66, 0x72, 0x61, 0x46, 0x65, 0x65, 0x73, + 0x12, 0x3f, 0x0a, 0x0c, 0x6c, 0x70, 0x5f, 0x70, 0x61, 0x69, 0x64, 0x5f, 0x66, 0x65, 0x65, 0x73, + 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, + 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, + 0x79, 0x46, 0x65, 0x65, 0x73, 0x52, 0x0a, 0x6c, 0x70, 0x50, 0x61, 0x69, 0x64, 0x46, 0x65, 0x65, + 0x73, 0x12, 0x4a, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x6c, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x72, 0x65, + 0x74, 0x75, 0x72, 0x6e, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, - 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x50, 0x61, 0x72, 0x74, - 0x79, 0x54, 0x61, 0x6b, 0x65, 0x72, 0x46, 0x65, 0x65, 0x73, 0x52, 0x17, 0x65, 0x70, 0x6f, 0x63, - 0x68, 0x50, 0x61, 0x72, 0x74, 0x79, 0x54, 0x61, 0x6b, 0x65, 0x72, 0x46, 0x65, 0x65, 0x73, 0x50, - 0x61, 0x69, 0x64, 0x22, 0x8f, 0x01, 0x0a, 0x1b, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x54, 0x69, 0x6d, - 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, - 0x61, 0x74, 0x61, 0x12, 0x70, 0x0a, 0x1d, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x76, 0x65, 0x67, + 0x2e, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0f, 0x72, 0x65, + 0x61, 0x6c, 0x69, 0x73, 0x65, 0x64, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x12, 0x5e, 0x0a, + 0x18, 0x72, 0x65, 0x61, 0x6c, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x73, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x16, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x24, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x73, 0x44, 0x61, 0x74, 0x61, 0x52, 0x16, 0x72, 0x65, 0x61, 0x6c, 0x69, 0x73, 0x65, 0x64, 0x52, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x82, 0x01, + 0x0a, 0x13, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x50, 0x61, 0x72, 0x74, 0x79, 0x54, 0x61, 0x6b, 0x65, + 0x72, 0x46, 0x65, 0x65, 0x73, 0x12, 0x6b, 0x0a, 0x1b, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x70, + 0x61, 0x72, 0x74, 0x79, 0x5f, 0x74, 0x61, 0x6b, 0x65, 0x72, 0x5f, 0x66, 0x65, 0x65, 0x73, 0x5f, + 0x70, 0x61, 0x69, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, + 0x41, 0x73, 0x73, 0x65, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, + 0x54, 0x61, 0x6b, 0x65, 0x72, 0x46, 0x65, 0x65, 0x73, 0x52, 0x17, 0x65, 0x70, 0x6f, 0x63, 0x68, + 0x50, 0x61, 0x72, 0x74, 0x79, 0x54, 0x61, 0x6b, 0x65, 0x72, 0x46, 0x65, 0x65, 0x73, 0x50, 0x61, + 0x69, 0x64, 0x22, 0x8f, 0x01, 0x0a, 0x1b, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, + 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, + 0x74, 0x61, 0x12, 0x70, 0x0a, 0x1d, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x76, 0x65, 0x67, 0x61, + 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, + 0x61, 0x72, 0x74, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, + 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x1a, 0x70, 0x61, 0x72, 0x74, 0x79, 0x54, + 0x69, 0x6d, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x91, 0x01, 0x0a, 0x1d, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x54, 0x69, + 0x6d, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x12, 0x70, 0x0a, 0x1d, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x6f, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, + 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x52, 0x1a, 0x70, 0x61, + 0x72, 0x74, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x4e, + 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x73, 0x22, 0x52, 0x0a, 0x19, 0x50, 0x61, 0x72, 0x74, + 0x79, 0x54, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x74, + 0x77, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x0a, 0x74, 0x77, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x22, 0x52, 0x0a, 0x19, 0x50, 0x61, 0x72, 0x74, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, - 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x1a, 0x70, 0x61, 0x72, 0x74, 0x79, - 0x54, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x50, 0x6f, 0x73, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x91, 0x01, 0x0a, 0x1d, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x54, - 0x69, 0x6d, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x6f, - 0x6e, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x12, 0x70, 0x0a, 0x1d, 0x70, 0x61, 0x72, 0x74, 0x79, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x5f, 0x6e, - 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, + 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, + 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, + 0x1f, 0x0a, 0x0b, 0x74, 0x77, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x74, 0x77, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x8c, 0x01, 0x0a, 0x19, 0x41, 0x73, 0x73, 0x65, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, + 0x50, 0x61, 0x72, 0x74, 0x79, 0x54, 0x61, 0x6b, 0x65, 0x72, 0x46, 0x65, 0x65, 0x73, 0x12, 0x14, + 0x0a, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, + 0x73, 0x73, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x41, 0x0a, 0x0a, + 0x74, 0x61, 0x6b, 0x65, 0x72, 0x5f, 0x66, 0x65, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x22, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x54, 0x61, 0x6b, 0x65, 0x72, + 0x46, 0x65, 0x65, 0x73, 0x52, 0x09, 0x74, 0x61, 0x6b, 0x65, 0x72, 0x46, 0x65, 0x65, 0x73, 0x22, + 0x45, 0x0a, 0x0e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x54, 0x61, 0x6b, 0x65, 0x72, 0x46, 0x65, 0x65, + 0x73, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x6b, 0x65, 0x72, + 0x5f, 0x66, 0x65, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x74, 0x61, 0x6b, + 0x65, 0x72, 0x46, 0x65, 0x65, 0x73, 0x22, 0x55, 0x0a, 0x0e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x50, + 0x61, 0x72, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x74, + 0x79, 0x5f, 0x66, 0x65, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x76, + 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x48, 0x69, 0x73, 0x74, 0x6f, + 0x72, 0x79, 0x52, 0x09, 0x70, 0x61, 0x72, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x22, 0x43, 0x0a, + 0x13, 0x54, 0x61, 0x6b, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, + 0x6d, 0x65, 0x22, 0x97, 0x01, 0x0a, 0x20, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x54, 0x6f, 0x50, + 0x61, 0x72, 0x74, 0x79, 0x54, 0x61, 0x6b, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x61, 0x72, 0x6b, 0x65, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, + 0x5b, 0x0a, 0x15, 0x74, 0x61, 0x6b, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x52, 0x1a, 0x70, - 0x61, 0x72, 0x74, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, - 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x73, 0x22, 0x52, 0x0a, 0x19, 0x50, 0x61, 0x72, - 0x74, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x4e, 0x6f, - 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x0b, - 0x74, 0x77, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x0a, 0x74, 0x77, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x22, 0x52, 0x0a, - 0x19, 0x50, 0x61, 0x72, 0x74, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x65, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, + 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x6b, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x13, 0x74, 0x61, 0x6b, 0x65, 0x72, 0x4e, 0x6f, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x22, 0x4d, 0x0a, 0x10, + 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x44, 0x61, 0x74, 0x61, + 0x12, 0x39, 0x0a, 0x07, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x44, 0x61, + 0x74, 0x61, 0x52, 0x07, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x22, 0x3b, 0x0a, 0x0b, 0x52, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, + 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, + 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x22, 0x77, 0x0a, 0x0e, 0x54, 0x57, 0x50, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, + 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x77, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x74, 0x77, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x22, 0x8c, 0x01, 0x0a, 0x19, 0x41, 0x73, 0x73, 0x65, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x50, 0x61, 0x72, 0x74, 0x79, 0x54, 0x61, 0x6b, 0x65, 0x72, 0x46, 0x65, 0x65, 0x73, 0x12, - 0x14, 0x0a, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x61, 0x73, 0x73, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x41, 0x0a, - 0x0a, 0x74, 0x61, 0x6b, 0x65, 0x72, 0x5f, 0x66, 0x65, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x22, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x54, 0x61, 0x6b, 0x65, - 0x72, 0x46, 0x65, 0x65, 0x73, 0x52, 0x09, 0x74, 0x61, 0x6b, 0x65, 0x72, 0x46, 0x65, 0x65, 0x73, - 0x22, 0x45, 0x0a, 0x0e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x54, 0x61, 0x6b, 0x65, 0x72, 0x46, 0x65, - 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x6b, 0x65, - 0x72, 0x5f, 0x66, 0x65, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x74, 0x61, - 0x6b, 0x65, 0x72, 0x46, 0x65, 0x65, 0x73, 0x22, 0x55, 0x0a, 0x0e, 0x45, 0x70, 0x6f, 0x63, 0x68, - 0x50, 0x61, 0x72, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x70, 0x61, 0x72, - 0x74, 0x79, 0x5f, 0x66, 0x65, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, - 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, - 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x48, 0x69, 0x73, 0x74, - 0x6f, 0x72, 0x79, 0x52, 0x09, 0x70, 0x61, 0x72, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x22, 0x43, - 0x0a, 0x13, 0x54, 0x61, 0x6b, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x76, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x76, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x22, 0x97, 0x01, 0x0a, 0x20, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x54, 0x6f, - 0x50, 0x61, 0x72, 0x74, 0x79, 0x54, 0x61, 0x6b, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x61, 0x72, 0x6b, - 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x12, 0x5b, 0x0a, 0x15, 0x74, 0x61, 0x6b, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x27, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, - 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x6b, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x13, 0x74, 0x61, 0x6b, 0x65, 0x72, 0x4e, - 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x22, 0x4d, 0x0a, - 0x10, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x44, 0x61, 0x74, - 0x61, 0x12, 0x39, 0x0a, 0x07, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x44, - 0x61, 0x74, 0x61, 0x52, 0x07, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x22, 0x3b, 0x0a, 0x0b, - 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x70, - 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, - 0x79, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x22, 0x77, 0x0a, 0x0e, 0x54, 0x57, 0x50, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x70, - 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, - 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, - 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x69, 0x6d, - 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x77, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x74, 0x77, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0x77, 0x0a, 0x0e, 0x54, 0x57, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, - 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x6f, - 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6e, 0x6f, - 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x77, - 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x0a, 0x74, 0x77, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x22, 0x33, 0x0a, 0x09, 0x50, - 0x61, 0x72, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x65, 0x65, - 0x22, 0x3a, 0x0a, 0x10, 0x50, 0x61, 0x72, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x48, 0x69, 0x73, - 0x74, 0x6f, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x65, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x66, 0x65, 0x65, 0x22, 0xa8, 0x04, 0x0a, - 0x0b, 0x41, 0x73, 0x73, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x74, - 0x78, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, - 0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x42, 0x0a, 0x0f, 0x62, 0x75, - 0x69, 0x6c, 0x74, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x74, - 0x69, 0x6e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x0e, - 0x62, 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, 0x37, - 0x0a, 0x0d, 0x65, 0x72, 0x63, 0x32, 0x30, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x45, 0x52, 0x43, - 0x32, 0x30, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x0c, 0x65, 0x72, 0x63, 0x32, 0x30, - 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, 0x33, 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x74, - 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x76, 0x65, - 0x67, 0x61, 0x2e, 0x45, 0x52, 0x43, 0x32, 0x30, 0x41, 0x73, 0x73, 0x65, 0x74, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x5a, 0x0a, 0x1a, - 0x65, 0x72, 0x63, 0x32, 0x30, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x45, 0x52, 0x43, 0x32, 0x30, 0x41, 0x73, 0x73, - 0x65, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x52, - 0x17, 0x65, 0x72, 0x63, 0x32, 0x30, 0x41, 0x73, 0x73, 0x65, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x65, 0x72, 0x63, 0x32, - 0x30, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x65, 0x72, 0x63, 0x32, 0x30, 0x42, 0x72, 0x69, - 0x64, 0x67, 0x65, 0x53, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x65, 0x72, - 0x63, 0x32, 0x30, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6d, - 0x65, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x65, 0x72, 0x63, 0x32, 0x30, 0x42, - 0x72, 0x69, 0x64, 0x67, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, - 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x22, 0x99, 0x01, 0x0a, 0x08, 0x45, 0x4c, 0x53, 0x53, - 0x68, 0x61, 0x72, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, - 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x73, 0x68, 0x61, 0x72, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, - 0x64, 0x5f, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, - 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x12, 0x23, 0x0a, 0x0d, - 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x6b, - 0x65, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x76, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x61, 0x76, 0x67, 0x22, 0xa9, 0x02, 0x0a, 0x0b, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x02, 0x69, 0x64, 0x12, 0x34, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x4c, 0x53, 0x53, 0x68, 0x61, 0x72, - 0x65, 0x52, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x69, 0x6e, 0x73, - 0x75, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x69, 0x6e, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x42, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x74, - 0x72, 0x61, 0x64, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x12, 0x2a, 0x0a, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x76, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6c, 0x61, 0x73, - 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x11, - 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, - 0x77, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x24, 0x0a, 0x06, 0x6d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x76, 0x65, 0x67, 0x61, - 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x22, - 0x45, 0x0a, 0x0e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x12, 0x33, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, - 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x42, 0x35, 0x5a, 0x33, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x76, - 0x65, 0x67, 0x61, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x69, 0x6f, 0x2f, 0x76, - 0x65, 0x67, 0x61, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x76, 0x65, 0x67, 0x61, 0x2f, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x74, 0x77, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x77, 0x0a, 0x0e, 0x54, 0x57, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x44, + 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x6f, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6e, 0x6f, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x77, 0x5f, + 0x6e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, + 0x74, 0x77, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x22, 0x33, 0x0a, 0x09, 0x50, 0x61, + 0x72, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x66, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x65, 0x65, 0x22, + 0x3a, 0x0a, 0x10, 0x50, 0x61, 0x72, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x48, 0x69, 0x73, 0x74, + 0x6f, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x65, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x66, 0x65, 0x65, 0x22, 0xa8, 0x04, 0x0a, 0x0b, + 0x41, 0x73, 0x73, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x78, + 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x74, 0x78, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x42, 0x0a, 0x0f, 0x62, 0x75, 0x69, + 0x6c, 0x74, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x74, 0x69, + 0x6e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x0e, 0x62, + 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, 0x37, 0x0a, + 0x0d, 0x65, 0x72, 0x63, 0x32, 0x30, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x45, 0x52, 0x43, 0x32, + 0x30, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x0c, 0x65, 0x72, 0x63, 0x32, 0x30, 0x44, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, 0x33, 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, + 0x6c, 0x69, 0x73, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x76, 0x65, 0x67, + 0x61, 0x2e, 0x45, 0x52, 0x43, 0x32, 0x30, 0x41, 0x73, 0x73, 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x5a, 0x0a, 0x1a, 0x65, + 0x72, 0x63, 0x32, 0x30, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x45, 0x52, 0x43, 0x32, 0x30, 0x41, 0x73, 0x73, 0x65, + 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x52, 0x17, + 0x65, 0x72, 0x63, 0x32, 0x30, 0x41, 0x73, 0x73, 0x65, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x65, 0x72, 0x63, 0x32, 0x30, + 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x65, 0x72, 0x63, 0x32, 0x30, 0x42, 0x72, 0x69, 0x64, + 0x67, 0x65, 0x53, 0x74, 0x6f, 0x70, 0x70, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x65, 0x72, 0x63, + 0x32, 0x30, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6d, 0x65, + 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x65, 0x72, 0x63, 0x32, 0x30, 0x42, 0x72, + 0x69, 0x64, 0x67, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x63, + 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, + 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x22, 0x99, 0x01, 0x0a, 0x08, 0x45, 0x4c, 0x53, 0x53, 0x68, + 0x61, 0x72, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x14, + 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, + 0x68, 0x61, 0x72, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, + 0x5f, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x75, + 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x76, + 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x6b, 0x65, + 0x12, 0x10, 0x0a, 0x03, 0x61, 0x76, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, + 0x76, 0x67, 0x22, 0xa9, 0x02, 0x0a, 0x0b, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x34, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x4c, 0x53, 0x53, 0x68, 0x61, 0x72, 0x65, + 0x52, 0x06, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x69, 0x6e, 0x73, 0x75, + 0x72, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x10, 0x69, 0x6e, 0x73, 0x75, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x61, + 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x74, 0x72, + 0x61, 0x64, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, + 0x2a, 0x0a, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x76, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6c, 0x61, 0x73, 0x74, + 0x54, 0x72, 0x61, 0x64, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x73, + 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x24, 0x0a, 0x06, 0x6d, 0x61, 0x72, 0x6b, + 0x65, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, + 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x22, 0x45, + 0x0a, 0x0e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x12, 0x33, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, + 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x42, 0x35, 0x5a, 0x33, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x65, + 0x67, 0x61, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x65, + 0x67, 0x61, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x76, 0x65, 0x67, 0x61, 0x2f, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/protos/vega/events/v1/events.pb.go b/protos/vega/events/v1/events.pb.go index 6481d218ee8..aba8024fef3 100644 --- a/protos/vega/events/v1/events.pb.go +++ b/protos/vega/events/v1/events.pb.go @@ -264,6 +264,8 @@ const ( BusEventType_BUS_EVENT_TYPE_TIME_WEIGHTED_NOTIONAL_POSITION_UPDATED BusEventType = 88 // Event containing the IDs of orders cancelled by a party on a market. BusEventType_BUS_EVENT_TYPE_CANCELLED_ORDERS BusEventType = 89 + // Event containing the near realtime game scores for parties and teams. + BusEventType_BUS_EVENT_TYPE_GAME_SCORES BusEventType = 90 // Event indicating a market related event, for example when a market opens BusEventType_BUS_EVENT_TYPE_MARKET BusEventType = 101 // Event used to report failed transactions back to a user, this is excluded from the ALL type @@ -363,6 +365,7 @@ var ( 87: "BUS_EVENT_TYPE_TEAMS_STATS_UPDATED", 88: "BUS_EVENT_TYPE_TIME_WEIGHTED_NOTIONAL_POSITION_UPDATED", 89: "BUS_EVENT_TYPE_CANCELLED_ORDERS", + 90: "BUS_EVENT_TYPE_GAME_SCORES", 101: "BUS_EVENT_TYPE_MARKET", 201: "BUS_EVENT_TYPE_TX_ERROR", } @@ -457,6 +460,7 @@ var ( "BUS_EVENT_TYPE_TEAMS_STATS_UPDATED": 87, "BUS_EVENT_TYPE_TIME_WEIGHTED_NOTIONAL_POSITION_UPDATED": 88, "BUS_EVENT_TYPE_CANCELLED_ORDERS": 89, + "BUS_EVENT_TYPE_GAME_SCORES": 90, "BUS_EVENT_TYPE_MARKET": 101, "BUS_EVENT_TYPE_TX_ERROR": 201, } @@ -8223,6 +8227,285 @@ func (x *TeamMemberStats) GetNotionalVolume() string { return "" } +// Scores per party per game with eligibility context. +type GamePartyScore struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Game ID. + GameId string `protobuf:"bytes,1,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` + // The party ID. + Party string `protobuf:"bytes,2,opt,name=party,proto3" json:"party,omitempty"` + // Team the party belongs to. Unset if the party is not part of a team. + TeamId *string `protobuf:"bytes,3,opt,name=team_id,json=teamId,proto3,oneof" json:"team_id,omitempty"` + // Epoch when these scores were generated. + Epoch int64 `protobuf:"varint,4,opt,name=epoch,proto3" json:"epoch,omitempty"` + // Timestamp in Unix nanoseconds when these scores were generated. + Time int64 `protobuf:"varint,5,opt,name=time,proto3" json:"time,omitempty"` + // Party's current score in the game. + Score string `protobuf:"bytes,6,opt,name=score,proto3" json:"score,omitempty"` + // Party's current staking balance. Only populated if the game has a requirement for it. + StakingBalance string `protobuf:"bytes,7,opt,name=staking_balance,json=stakingBalance,proto3" json:"staking_balance,omitempty"` + // Party's current open volume. Only populated if the game has a requirement for it. + OpenVolume string `protobuf:"bytes,8,opt,name=open_volume,json=openVolume,proto3" json:"open_volume,omitempty"` + // Total fees paid by the party during the relevant period. + TotalFeesPaid string `protobuf:"bytes,9,opt,name=total_fees_paid,json=totalFeesPaid,proto3" json:"total_fees_paid,omitempty"` + // If the party is eligible for a reward for this game based on the current information. + IsEligible bool `protobuf:"varint,10,opt,name=is_eligible,json=isEligible,proto3" json:"is_eligible,omitempty"` + // If the party is a member of a team, this is their relative position in the sorting order of the team. + // Empty if not a team, or if the party is not eligible. + Rank *uint64 `protobuf:"varint,11,opt,name=rank,proto3,oneof" json:"rank,omitempty"` +} + +func (x *GamePartyScore) Reset() { + *x = GamePartyScore{} + if protoimpl.UnsafeEnabled { + mi := &file_vega_events_v1_events_proto_msgTypes[87] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GamePartyScore) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GamePartyScore) ProtoMessage() {} + +func (x *GamePartyScore) ProtoReflect() protoreflect.Message { + mi := &file_vega_events_v1_events_proto_msgTypes[87] + 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 GamePartyScore.ProtoReflect.Descriptor instead. +func (*GamePartyScore) Descriptor() ([]byte, []int) { + return file_vega_events_v1_events_proto_rawDescGZIP(), []int{87} +} + +func (x *GamePartyScore) GetGameId() string { + if x != nil { + return x.GameId + } + return "" +} + +func (x *GamePartyScore) GetParty() string { + if x != nil { + return x.Party + } + return "" +} + +func (x *GamePartyScore) GetTeamId() string { + if x != nil && x.TeamId != nil { + return *x.TeamId + } + return "" +} + +func (x *GamePartyScore) GetEpoch() int64 { + if x != nil { + return x.Epoch + } + return 0 +} + +func (x *GamePartyScore) GetTime() int64 { + if x != nil { + return x.Time + } + return 0 +} + +func (x *GamePartyScore) GetScore() string { + if x != nil { + return x.Score + } + return "" +} + +func (x *GamePartyScore) GetStakingBalance() string { + if x != nil { + return x.StakingBalance + } + return "" +} + +func (x *GamePartyScore) GetOpenVolume() string { + if x != nil { + return x.OpenVolume + } + return "" +} + +func (x *GamePartyScore) GetTotalFeesPaid() string { + if x != nil { + return x.TotalFeesPaid + } + return "" +} + +func (x *GamePartyScore) GetIsEligible() bool { + if x != nil { + return x.IsEligible + } + return false +} + +func (x *GamePartyScore) GetRank() uint64 { + if x != nil && x.Rank != nil { + return *x.Rank + } + return 0 +} + +type GameTeamScore struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Game ID. + GameId string `protobuf:"bytes,1,opt,name=game_id,json=gameId,proto3" json:"game_id,omitempty"` + // Team ID + TeamId string `protobuf:"bytes,2,opt,name=team_id,json=teamId,proto3" json:"team_id,omitempty"` + // Epoch when these scores were generated. + Epoch int64 `protobuf:"varint,3,opt,name=epoch,proto3" json:"epoch,omitempty"` + // Timestamp in Unix nanoseconds when these scores were generated. + Time int64 `protobuf:"varint,4,opt,name=time,proto3" json:"time,omitempty"` + // Team's current collective score in the game. + Score string `protobuf:"bytes,5,opt,name=score,proto3" json:"score,omitempty"` +} + +func (x *GameTeamScore) Reset() { + *x = GameTeamScore{} + if protoimpl.UnsafeEnabled { + mi := &file_vega_events_v1_events_proto_msgTypes[88] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GameTeamScore) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameTeamScore) ProtoMessage() {} + +func (x *GameTeamScore) ProtoReflect() protoreflect.Message { + mi := &file_vega_events_v1_events_proto_msgTypes[88] + 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 GameTeamScore.ProtoReflect.Descriptor instead. +func (*GameTeamScore) Descriptor() ([]byte, []int) { + return file_vega_events_v1_events_proto_rawDescGZIP(), []int{88} +} + +func (x *GameTeamScore) GetGameId() string { + if x != nil { + return x.GameId + } + return "" +} + +func (x *GameTeamScore) GetTeamId() string { + if x != nil { + return x.TeamId + } + return "" +} + +func (x *GameTeamScore) GetEpoch() int64 { + if x != nil { + return x.Epoch + } + return 0 +} + +func (x *GameTeamScore) GetTime() int64 { + if x != nil { + return x.Time + } + return 0 +} + +func (x *GameTeamScore) GetScore() string { + if x != nil { + return x.Score + } + return "" +} + +type GameScores struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TeamScores []*GameTeamScore `protobuf:"bytes,1,rep,name=team_scores,json=teamScores,proto3" json:"team_scores,omitempty"` + PartyScores []*GamePartyScore `protobuf:"bytes,2,rep,name=party_scores,json=partyScores,proto3" json:"party_scores,omitempty"` +} + +func (x *GameScores) Reset() { + *x = GameScores{} + if protoimpl.UnsafeEnabled { + mi := &file_vega_events_v1_events_proto_msgTypes[89] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GameScores) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GameScores) ProtoMessage() {} + +func (x *GameScores) ProtoReflect() protoreflect.Message { + mi := &file_vega_events_v1_events_proto_msgTypes[89] + 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 GameScores.ProtoReflect.Descriptor instead. +func (*GameScores) Descriptor() ([]byte, []int) { + return file_vega_events_v1_events_proto_rawDescGZIP(), []int{89} +} + +func (x *GameScores) GetTeamScores() []*GameTeamScore { + if x != nil { + return x.TeamScores + } + return nil +} + +func (x *GameScores) GetPartyScores() []*GamePartyScore { + if x != nil { + return x.PartyScores + } + return nil +} + // Bus event is a container for event bus events emitted by Vega type BusEvent struct { state protoimpl.MessageState @@ -8323,6 +8606,7 @@ type BusEvent struct { // *BusEvent_TeamsStatsUpdated // *BusEvent_TimeWeightedNotionalPositionUpdated // *BusEvent_CancelledOrders + // *BusEvent_GameScores // *BusEvent_Market // *BusEvent_TxErrEvent Event isBusEvent_Event `protobuf_oneof:"event"` @@ -8335,7 +8619,7 @@ type BusEvent struct { func (x *BusEvent) Reset() { *x = BusEvent{} if protoimpl.UnsafeEnabled { - mi := &file_vega_events_v1_events_proto_msgTypes[87] + mi := &file_vega_events_v1_events_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8348,7 +8632,7 @@ func (x *BusEvent) String() string { func (*BusEvent) ProtoMessage() {} func (x *BusEvent) ProtoReflect() protoreflect.Message { - mi := &file_vega_events_v1_events_proto_msgTypes[87] + mi := &file_vega_events_v1_events_proto_msgTypes[90] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8361,7 +8645,7 @@ func (x *BusEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use BusEvent.ProtoReflect.Descriptor instead. func (*BusEvent) Descriptor() ([]byte, []int) { - return file_vega_events_v1_events_proto_rawDescGZIP(), []int{87} + return file_vega_events_v1_events_proto_rawDescGZIP(), []int{90} } func (x *BusEvent) GetId() string { @@ -8994,6 +9278,13 @@ func (x *BusEvent) GetCancelledOrders() *CancelledOrders { return nil } +func (x *BusEvent) GetGameScores() *GameScores { + if x, ok := x.GetEvent().(*BusEvent_GameScores); ok { + return x.GameScores + } + return nil +} + func (x *BusEvent) GetMarket() *MarketEvent { if x, ok := x.GetEvent().(*BusEvent_Market); ok { return x.Market @@ -9463,6 +9754,11 @@ type BusEvent_CancelledOrders struct { CancelledOrders *CancelledOrders `protobuf:"bytes,187,opt,name=cancelled_orders,json=cancelledOrders,proto3,oneof"` } +type BusEvent_GameScores struct { + // Event notifying on near realtime game scores for parties and teams. + GameScores *GameScores `protobuf:"bytes,188,opt,name=game_scores,json=gameScores,proto3,oneof"` +} + type BusEvent_Market struct { // Market tick events Market *MarketEvent `protobuf:"bytes,1001,opt,name=market,proto3,oneof"` @@ -9645,6 +9941,8 @@ func (*BusEvent_TimeWeightedNotionalPositionUpdated) isBusEvent_Event() {} func (*BusEvent_CancelledOrders) isBusEvent_Event() {} +func (*BusEvent_GameScores) isBusEvent_Event() {} + func (*BusEvent_Market) isBusEvent_Event() {} func (*BusEvent_TxErrEvent) isBusEvent_Event() {} @@ -9658,7 +9956,7 @@ type TransactionResult_SuccessDetails struct { func (x *TransactionResult_SuccessDetails) Reset() { *x = TransactionResult_SuccessDetails{} if protoimpl.UnsafeEnabled { - mi := &file_vega_events_v1_events_proto_msgTypes[88] + mi := &file_vega_events_v1_events_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9671,7 +9969,7 @@ func (x *TransactionResult_SuccessDetails) String() string { func (*TransactionResult_SuccessDetails) ProtoMessage() {} func (x *TransactionResult_SuccessDetails) ProtoReflect() protoreflect.Message { - mi := &file_vega_events_v1_events_proto_msgTypes[88] + mi := &file_vega_events_v1_events_proto_msgTypes[91] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9699,7 +9997,7 @@ type TransactionResult_FailureDetails struct { func (x *TransactionResult_FailureDetails) Reset() { *x = TransactionResult_FailureDetails{} if protoimpl.UnsafeEnabled { - mi := &file_vega_events_v1_events_proto_msgTypes[89] + mi := &file_vega_events_v1_events_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9712,7 +10010,7 @@ func (x *TransactionResult_FailureDetails) String() string { func (*TransactionResult_FailureDetails) ProtoMessage() {} func (x *TransactionResult_FailureDetails) ProtoReflect() protoreflect.Message { - mi := &file_vega_events_v1_events_proto_msgTypes[89] + mi := &file_vega_events_v1_events_proto_msgTypes[92] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -11021,687 +11319,732 @@ var file_vega_events_v1_events_proto_rawDesc = []byte{ 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x6e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x22, - 0xb6, 0x37, 0x0a, 0x08, 0x42, 0x75, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x12, 0x30, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x42, 0x75, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x76, 0x65, 0x67, 0x61, - 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x12, 0x4c, 0x0a, 0x10, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x5f, 0x6d, 0x6f, - 0x76, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x66, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, - 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, - 0x65, 0x64, 0x67, 0x65, 0x72, 0x4d, 0x6f, 0x76, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x48, 0x00, - 0x52, 0x0f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x4d, 0x6f, 0x76, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x12, 0x55, 0x0a, 0x13, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, - 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x67, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, + 0xde, 0x02, 0x0a, 0x0e, 0x47, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x79, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x70, + 0x61, 0x72, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, + 0x79, 0x12, 0x1c, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, + 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, + 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, + 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, + 0x27, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, + 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, + 0x67, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x6e, + 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, + 0x70, 0x65, 0x6e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x6f, 0x74, + 0x61, 0x6c, 0x5f, 0x66, 0x65, 0x65, 0x73, 0x5f, 0x70, 0x61, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x46, 0x65, 0x65, 0x73, 0x50, 0x61, 0x69, + 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x65, 0x6c, 0x69, 0x67, 0x69, 0x62, 0x6c, 0x65, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x45, 0x6c, 0x69, 0x67, 0x69, 0x62, + 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, + 0x48, 0x01, 0x52, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, + 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x72, 0x61, 0x6e, 0x6b, + 0x22, 0x81, 0x01, 0x0a, 0x0d, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, + 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x65, + 0x61, 0x6d, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, + 0x63, 0x6f, 0x72, 0x65, 0x22, 0x8f, 0x01, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x0b, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x73, 0x63, 0x6f, 0x72, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x65, + 0x61, 0x6d, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x0a, 0x74, 0x65, 0x61, 0x6d, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x73, 0x63, 0x6f, + 0x72, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x76, 0x65, 0x67, 0x61, + 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x50, + 0x61, 0x72, 0x74, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x79, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x22, 0xf6, 0x37, 0x0a, 0x08, 0x42, 0x75, 0x73, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x30, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x73, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x74, + 0x69, 0x6d, 0x65, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x0a, + 0x74, 0x69, 0x6d, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x4c, 0x0a, 0x10, 0x6c, 0x65, + 0x64, 0x67, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x76, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x66, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x4d, 0x6f, 0x76, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x72, 0x4d, + 0x6f, 0x76, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x55, 0x0a, 0x13, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x67, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x12, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x23, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x68, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, + 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x05, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x69, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x23, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x6a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, + 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x48, 0x00, 0x52, 0x05, 0x70, + 0x61, 0x72, 0x74, 0x79, 0x12, 0x23, 0x0a, 0x05, 0x74, 0x72, 0x61, 0x64, 0x65, 0x18, 0x6b, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, + 0x48, 0x00, 0x52, 0x05, 0x74, 0x72, 0x61, 0x64, 0x65, 0x12, 0x39, 0x0a, 0x0d, 0x6d, 0x61, 0x72, + 0x67, 0x69, 0x6e, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x18, 0x6c, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, + 0x76, 0x65, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, + 0x76, 0x65, 0x6c, 0x73, 0x12, 0x2c, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, + 0x18, 0x6d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50, 0x72, + 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x61, 0x6c, 0x12, 0x20, 0x0a, 0x04, 0x76, 0x6f, 0x74, 0x65, 0x18, 0x6e, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0a, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x56, 0x6f, 0x74, 0x65, 0x48, 0x00, 0x52, 0x04, + 0x76, 0x6f, 0x74, 0x65, 0x12, 0x33, 0x0a, 0x0b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x6f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, + 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0a, 0x6d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x48, 0x0a, 0x0e, 0x6e, 0x6f, 0x64, + 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x70, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x48, 0x00, 0x52, 0x0d, 0x6e, 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x12, 0x52, 0x0a, 0x12, 0x6c, 0x6f, 0x73, 0x73, 0x5f, 0x73, 0x6f, 0x63, 0x69, + 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x71, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x21, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x4c, 0x6f, 0x73, 0x73, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x11, 0x6c, 0x6f, 0x73, 0x73, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x6c, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x49, 0x0a, 0x0f, 0x73, 0x65, 0x74, 0x74, 0x6c, + 0x65, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x72, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x48, 0x00, 0x52, 0x0e, 0x73, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x4f, 0x0a, 0x11, 0x73, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x5f, 0x64, 0x69, 0x73, + 0x74, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x18, 0x73, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, + 0x65, 0x74, 0x74, 0x6c, 0x65, 0x44, 0x69, 0x73, 0x74, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x48, + 0x00, 0x52, 0x10, 0x73, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x44, 0x69, 0x73, 0x74, 0x72, 0x65, 0x73, + 0x73, 0x65, 0x64, 0x12, 0x35, 0x0a, 0x0e, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x74, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x76, 0x65, + 0x67, 0x61, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x6d, 0x61, 0x72, + 0x6b, 0x65, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x05, 0x61, 0x73, + 0x73, 0x65, 0x74, 0x18, 0x75, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, 0x67, 0x61, + 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x48, 0x00, 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x12, + 0x3d, 0x0a, 0x0b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x76, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, + 0x48, 0x00, 0x52, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x32, + 0x0a, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x18, 0x77, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, + 0x61, 0x77, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, + 0x61, 0x6c, 0x12, 0x29, 0x0a, 0x07, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, 0x78, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x44, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x48, 0x00, 0x52, 0x07, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, 0x38, 0x0a, + 0x07, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x79, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x12, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x18, 0x68, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x29, 0x0a, - 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x69, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, - 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x48, 0x00, 0x52, - 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, - 0x79, 0x18, 0x6a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50, - 0x61, 0x72, 0x74, 0x79, 0x48, 0x00, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x23, 0x0a, - 0x05, 0x74, 0x72, 0x61, 0x64, 0x65, 0x18, 0x6b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, - 0x65, 0x67, 0x61, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x65, 0x48, 0x00, 0x52, 0x05, 0x74, 0x72, 0x61, - 0x64, 0x65, 0x12, 0x39, 0x0a, 0x0d, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, 0x6c, 0x65, 0x76, - 0x65, 0x6c, 0x73, 0x18, 0x6c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x76, 0x65, 0x67, 0x61, - 0x2e, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x48, 0x00, 0x52, - 0x0c, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x12, 0x2c, 0x0a, - 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x18, 0x6d, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x48, - 0x00, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x20, 0x0a, 0x04, 0x76, - 0x6f, 0x74, 0x65, 0x18, 0x6e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x76, 0x65, 0x67, 0x61, - 0x2e, 0x56, 0x6f, 0x74, 0x65, 0x48, 0x00, 0x52, 0x04, 0x76, 0x6f, 0x74, 0x65, 0x12, 0x33, 0x0a, - 0x0b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x6f, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, - 0x74, 0x61, 0x12, 0x48, 0x0a, 0x0e, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x18, 0x70, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, - 0x61, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, - 0x64, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x48, 0x00, 0x52, 0x0d, 0x6e, - 0x6f, 0x64, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x52, 0x0a, 0x12, - 0x6c, 0x6f, 0x73, 0x73, 0x5f, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x71, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, - 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x73, 0x73, 0x53, 0x6f, - 0x63, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x11, 0x6c, - 0x6f, 0x73, 0x73, 0x53, 0x6f, 0x63, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x49, 0x0a, 0x0f, 0x73, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x72, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x76, 0x65, 0x67, 0x61, - 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x6c, - 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0e, 0x73, 0x65, 0x74, - 0x74, 0x6c, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4f, 0x0a, 0x11, 0x73, - 0x65, 0x74, 0x74, 0x6c, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, - 0x18, 0x73, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x44, 0x69, - 0x73, 0x74, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x48, 0x00, 0x52, 0x10, 0x73, 0x65, 0x74, 0x74, - 0x6c, 0x65, 0x44, 0x69, 0x73, 0x74, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x12, 0x35, 0x0a, 0x0e, - 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x74, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4d, 0x61, 0x72, 0x6b, - 0x65, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x18, 0x75, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x48, - 0x00, 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x12, 0x3d, 0x0a, 0x0b, 0x6d, 0x61, 0x72, 0x6b, - 0x65, 0x74, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x76, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x48, 0x00, 0x52, 0x0a, 0x6d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x32, 0x0a, 0x0a, 0x77, 0x69, 0x74, 0x68, 0x64, - 0x72, 0x61, 0x77, 0x61, 0x6c, 0x18, 0x77, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x65, - 0x67, 0x61, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x48, 0x00, 0x52, - 0x0a, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x12, 0x29, 0x0a, 0x07, 0x64, - 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, 0x78, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x76, - 0x65, 0x67, 0x61, 0x2e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x48, 0x00, 0x52, 0x07, 0x64, - 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, 0x38, 0x0a, 0x07, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x79, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x07, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x33, 0x0a, 0x0b, 0x72, 0x69, 0x73, 0x6b, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, - 0x7a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x52, 0x69, 0x73, - 0x6b, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x69, 0x73, 0x6b, 0x46, - 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x45, 0x0a, 0x11, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x7b, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x16, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x10, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x4b, 0x0a, 0x13, - 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x7c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x65, 0x67, 0x61, - 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x12, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, - 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x0e, 0x6d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x7d, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x48, - 0x00, 0x52, 0x0d, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, - 0x12, 0x33, 0x0a, 0x0b, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, - 0x7e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4f, 0x72, 0x61, - 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x72, 0x61, 0x63, 0x6c, - 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x33, 0x0a, 0x0b, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x5f, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x7f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, - 0x61, 0x2e, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0a, - 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x58, 0x0a, 0x12, 0x64, 0x65, - 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, - 0x18, 0x81, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, - 0x00, 0x52, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x6c, - 0x61, 0x6e, 0x63, 0x65, 0x12, 0x4f, 0x0a, 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, - 0x72, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x82, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, + 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x07, + 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x0b, 0x72, 0x69, 0x73, 0x6b, 0x5f, + 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x7a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, + 0x65, 0x67, 0x61, 0x2e, 0x52, 0x69, 0x73, 0x6b, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x48, 0x00, + 0x52, 0x0a, 0x72, 0x69, 0x73, 0x6b, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x45, 0x0a, 0x11, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x18, 0x7b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x48, + 0x00, 0x52, 0x10, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, + 0x74, 0x65, 0x72, 0x12, 0x4b, 0x0a, 0x13, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, + 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x7c, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x18, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, + 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x12, 0x6c, 0x69, + 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x35, 0x0a, 0x0e, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x18, 0x7d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, + 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x33, 0x0a, 0x0b, 0x6f, 0x72, 0x61, 0x63, 0x6c, + 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x7e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, + 0x65, 0x67, 0x61, 0x2e, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x48, 0x00, + 0x52, 0x0a, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x33, 0x0a, 0x0b, + 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x7f, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x44, + 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x44, 0x61, 0x74, + 0x61, 0x12, 0x58, 0x0a, 0x12, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x81, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, - 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x3e, 0x0a, 0x0b, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x18, 0x83, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x76, 0x65, - 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x70, 0x6f, - 0x63, 0x68, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x65, 0x70, 0x6f, 0x63, 0x68, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x6f, 0x72, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x84, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x48, 0x00, 0x52, 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x12, 0x44, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x6c, 0x69, - 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x18, 0x85, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, - 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, - 0x61, 0x6b, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x74, - 0x61, 0x6b, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x12, 0x49, 0x0a, 0x0d, 0x72, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x5f, 0x70, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x18, 0x86, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x50, 0x61, 0x79, 0x6f, 0x75, 0x74, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x50, - 0x61, 0x79, 0x6f, 0x75, 0x74, 0x12, 0x42, 0x0a, 0x0a, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x18, 0x87, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, - 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x63, - 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x0c, 0x6b, 0x65, 0x79, - 0x5f, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x88, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, - 0x0b, 0x6b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x09, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x18, 0x89, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x18, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x48, 0x00, 0x52, 0x08, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x12, 0x3d, 0x0a, 0x0e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x8a, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x13, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, - 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, - 0x72, 0x18, 0x8b, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, - 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x65, 0x72, 0x48, 0x00, 0x52, 0x08, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x4d, - 0x0a, 0x0d, 0x72, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, - 0x8c, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, - 0x72, 0x52, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, - 0x0c, 0x72, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x6a, 0x0a, - 0x1b, 0x65, 0x72, 0x63, 0x32, 0x30, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x73, 0x69, 0x67, 0x5f, - 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x8d, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, + 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x4f, 0x0a, 0x0f, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x82, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x3e, 0x0a, 0x0b, + 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x83, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, + 0x52, 0x0a, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x10, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x18, 0x84, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x6f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x0f, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x44, 0x0a, 0x0d, 0x73, + 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x18, 0x85, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x69, 0x6e, + 0x67, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x69, 0x6e, + 0x67, 0x12, 0x49, 0x0a, 0x0d, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x70, 0x61, 0x79, 0x6f, + 0x75, 0x74, 0x18, 0x86, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x76, 0x65, 0x67, 0x61, + 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x50, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0c, + 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x50, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x12, 0x42, 0x0a, 0x0a, + 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x87, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x12, 0x41, 0x0a, 0x0c, 0x6b, 0x65, 0x79, 0x5f, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x88, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0b, 0x6b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x72, + 0x18, 0x89, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x56, 0x61, + 0x72, 0x48, 0x00, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x12, 0x3d, 0x0a, + 0x0e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, + 0x8a, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x08, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x18, 0x8b, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x48, 0x00, 0x52, 0x08, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x4d, 0x0a, 0x0d, 0x72, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, + 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x8c, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, + 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x72, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x12, 0x6a, 0x0a, 0x1b, 0x65, 0x72, 0x63, 0x32, 0x30, 0x5f, 0x6d, 0x75, + 0x6c, 0x74, 0x69, 0x73, 0x69, 0x67, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x5f, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x18, 0x8d, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x76, 0x65, 0x67, + 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x52, 0x43, 0x32, + 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x18, 0x65, 0x72, 0x63, 0x32, 0x30, 0x4d, 0x75, 0x6c, + 0x74, 0x69, 0x73, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x12, 0x7d, 0x0a, 0x22, 0x65, 0x72, 0x63, 0x32, 0x30, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x73, + 0x69, 0x67, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, + 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x8e, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, + 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, + 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x54, 0x68, 0x72, 0x65, + 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x53, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, + 0x1e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x73, 0x69, 0x67, 0x53, 0x65, + 0x74, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, + 0x6a, 0x0a, 0x1b, 0x65, 0x72, 0x63, 0x32, 0x30, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x73, 0x69, + 0x67, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x8f, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, + 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x65, 0x64, 0x48, + 0x00, 0x52, 0x18, 0x65, 0x72, 0x63, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x73, 0x69, 0x67, + 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x65, 0x64, 0x12, 0x70, 0x0a, 0x1d, 0x65, + 0x72, 0x63, 0x32, 0x30, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x73, 0x69, 0x67, 0x5f, 0x73, 0x69, + 0x67, 0x6e, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x90, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, - 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, - 0x18, 0x65, 0x72, 0x63, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x73, 0x69, 0x67, 0x53, 0x69, - 0x67, 0x6e, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x7d, 0x0a, 0x22, 0x65, 0x72, 0x63, - 0x32, 0x30, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x73, 0x69, 0x67, 0x5f, 0x73, 0x65, 0x74, 0x5f, - 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, - 0x8e, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, - 0x74, 0x69, 0x53, 0x69, 0x67, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x53, 0x65, - 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x1e, 0x65, 0x72, 0x63, 0x32, 0x30, 0x4d, - 0x75, 0x6c, 0x74, 0x69, 0x73, 0x69, 0x67, 0x53, 0x65, 0x74, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, - 0x6f, 0x6c, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x6a, 0x0a, 0x1b, 0x65, 0x72, 0x63, 0x32, - 0x30, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x73, 0x69, 0x67, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x65, - 0x72, 0x5f, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x8f, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, - 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, - 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x65, 0x64, 0x48, 0x00, 0x52, 0x18, 0x65, 0x72, 0x63, 0x32, - 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x73, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x41, - 0x64, 0x64, 0x65, 0x64, 0x12, 0x70, 0x0a, 0x1d, 0x65, 0x72, 0x63, 0x32, 0x30, 0x5f, 0x6d, 0x75, - 0x6c, 0x74, 0x69, 0x73, 0x69, 0x67, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x5f, 0x72, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x90, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x76, - 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x52, - 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, - 0x72, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x48, 0x00, 0x52, 0x1a, 0x65, 0x72, 0x63, 0x32, - 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x73, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x57, 0x0a, 0x14, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x91, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x12, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, - 0x5a, 0x0a, 0x15, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x5f, 0x6b, 0x65, 0x79, 0x5f, - 0x72, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x92, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x23, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x13, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, - 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5d, 0x0a, 0x16, 0x70, + 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x48, + 0x00, 0x52, 0x1a, 0x65, 0x72, 0x63, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x73, 0x69, 0x67, + 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x57, 0x0a, + 0x14, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x91, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x76, + 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x48, 0x00, 0x52, 0x12, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x5a, 0x0a, 0x15, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, + 0x75, 0x6d, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x92, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, + 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x13, 0x65, + 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x5d, 0x0a, 0x16, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x75, + 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x93, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, + 0x72, 0x61, 0x64, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x14, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x12, 0x3e, 0x0a, 0x0b, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x18, 0x94, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x65, 0x67, 0x69, 0x6e, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x48, 0x00, 0x52, 0x0a, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x12, 0x38, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x95, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, + 0x00, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x63, 0x0a, 0x18, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f, - 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x93, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x76, - 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x48, 0x00, 0x52, 0x14, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, - 0x67, 0x72, 0x61, 0x64, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x0b, 0x62, 0x65, - 0x67, 0x69, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x94, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x42, 0x65, 0x67, 0x69, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x00, 0x52, 0x0a, - 0x62, 0x65, 0x67, 0x69, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x38, 0x0a, 0x09, 0x65, 0x6e, - 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x95, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x18, 0x96, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x45, 0x6e, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x00, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x63, 0x0a, 0x18, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, - 0x18, 0x96, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x48, - 0x00, 0x52, 0x16, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, - 0x64, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x44, 0x0a, 0x0d, 0x73, 0x65, 0x74, - 0x74, 0x6c, 0x65, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x18, 0x97, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x48, - 0x00, 0x52, 0x0c, 0x73, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, - 0x53, 0x0a, 0x12, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x98, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x76, - 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, - 0x00, 0x52, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x12, 0x53, 0x0a, 0x13, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x73, 0x6e, 0x61, - 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x99, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x72, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, - 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x11, 0x63, 0x6f, 0x72, 0x65, 0x53, 0x6e, 0x61, 0x70, - 0x73, 0x68, 0x6f, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x77, 0x0a, 0x20, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x64, 0x61, - 0x74, 0x61, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, 0x9a, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, - 0x67, 0x72, 0x61, 0x64, 0x65, 0x44, 0x61, 0x74, 0x61, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x61, - 0x64, 0x79, 0x48, 0x00, 0x52, 0x1c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, - 0x67, 0x72, 0x61, 0x64, 0x65, 0x44, 0x61, 0x74, 0x61, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x61, - 0x64, 0x79, 0x12, 0x50, 0x0a, 0x11, 0x64, 0x69, 0x73, 0x74, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, - 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x9b, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x16, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, + 0x12, 0x44, 0x0a, 0x0d, 0x73, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, + 0x74, 0x18, 0x97, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, + 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x65, 0x74, 0x74, 0x6c, 0x65, + 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x53, 0x0a, 0x12, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x98, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x53, 0x0a, 0x13, 0x63, + 0x6f, 0x72, 0x65, 0x5f, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x18, 0x99, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x65, 0x67, 0x61, + 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x72, 0x65, 0x53, + 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x11, 0x63, + 0x6f, 0x72, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x12, 0x77, 0x0a, 0x20, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x75, 0x70, 0x67, + 0x72, 0x61, 0x64, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x72, + 0x65, 0x61, 0x64, 0x79, 0x18, 0x9a, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x76, 0x65, + 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x44, 0x61, 0x74, 0x61, + 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x61, 0x64, 0x79, 0x48, 0x00, 0x52, 0x1c, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x44, 0x61, 0x74, 0x61, + 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x50, 0x0a, 0x11, 0x64, 0x69, 0x73, + 0x74, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x9b, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x65, 0x73, 0x73, 0x65, + 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x10, 0x64, 0x69, 0x73, 0x74, 0x72, + 0x65, 0x73, 0x73, 0x65, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x47, 0x0a, 0x0e, 0x65, + 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x9c, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x4f, 0x72, 0x64, + 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x73, 0x12, 0x59, 0x0a, 0x14, 0x64, 0x69, 0x73, 0x74, 0x72, 0x65, 0x73, 0x73, + 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x9d, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x74, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x50, + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x13, 0x64, 0x69, 0x73, 0x74, + 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x40, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x9e, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x73, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x12, 0x47, 0x0a, 0x0e, 0x66, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, + 0x69, 0x6f, 0x64, 0x18, 0x9f, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x65, 0x67, + 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x75, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x48, 0x00, 0x52, 0x0d, 0x66, 0x75, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x64, 0x0a, 0x19, 0x66, 0x75, + 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x64, 0x61, 0x74, + 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0xa0, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x44, 0x69, 0x73, 0x74, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, - 0x48, 0x00, 0x52, 0x10, 0x64, 0x69, 0x73, 0x74, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x4f, 0x72, - 0x64, 0x65, 0x72, 0x73, 0x12, 0x47, 0x0a, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x5f, - 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x9c, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, - 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, - 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0d, - 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x59, 0x0a, - 0x14, 0x64, 0x69, 0x73, 0x74, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x9d, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, - 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, - 0x73, 0x74, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x48, 0x00, 0x52, 0x13, 0x64, 0x69, 0x73, 0x74, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x50, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x40, 0x0a, 0x0a, 0x73, 0x74, 0x6f, 0x70, - 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x9e, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, - 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, - 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, - 0x09, 0x73, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x47, 0x0a, 0x0e, 0x66, 0x75, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x9f, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, - 0x6f, 0x64, 0x48, 0x00, 0x52, 0x0d, 0x66, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, - 0x69, 0x6f, 0x64, 0x12, 0x64, 0x0a, 0x19, 0x66, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x70, - 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x18, 0xa0, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, - 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x48, - 0x00, 0x52, 0x16, 0x66, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, - 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x0c, 0x74, 0x65, 0x61, - 0x6d, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0xa1, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, - 0x0b, 0x74, 0x65, 0x61, 0x6d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x41, 0x0a, 0x0c, - 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0xa2, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, - 0x48, 0x00, 0x52, 0x0b, 0x74, 0x65, 0x61, 0x6d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, - 0x5a, 0x0a, 0x15, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x65, 0x64, 0x5f, 0x74, 0x65, 0x61, 0x6d, 0x18, 0xa3, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x23, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x65, 0x64, - 0x54, 0x65, 0x61, 0x6d, 0x48, 0x00, 0x52, 0x13, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x53, - 0x77, 0x69, 0x74, 0x63, 0x68, 0x65, 0x64, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x54, 0x0a, 0x13, 0x72, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x74, 0x65, - 0x61, 0x6d, 0x18, 0xa4, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x76, 0x65, 0x67, 0x61, - 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x65, 0x4a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x54, 0x65, 0x61, 0x6d, 0x48, 0x00, 0x52, 0x11, - 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x4a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x54, 0x65, 0x61, - 0x6d, 0x12, 0x63, 0x0a, 0x18, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x5f, 0x70, 0x72, - 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x18, 0xa5, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x50, 0x72, - 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x16, - 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x63, 0x0a, 0x18, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, - 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x18, 0xa6, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x76, 0x65, 0x67, 0x61, - 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, - 0x72, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x64, 0x48, 0x00, 0x52, 0x16, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x50, 0x72, 0x6f, - 0x67, 0x72, 0x61, 0x6d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x5d, 0x0a, 0x16, 0x72, - 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, - 0x65, 0x6e, 0x64, 0x65, 0x64, 0x18, 0xa7, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x76, - 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, - 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x45, 0x6e, 0x64, - 0x65, 0x64, 0x48, 0x00, 0x52, 0x14, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x50, 0x72, - 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x45, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x57, 0x0a, 0x14, 0x72, 0x65, - 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x18, 0xa8, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x76, 0x65, 0x67, 0x61, - 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, - 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, - 0x12, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x12, 0x6a, 0x0a, 0x1b, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x5f, 0x6a, - 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x5f, 0x73, - 0x65, 0x74, 0x18, 0xa9, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x76, 0x65, 0x67, 0x61, + 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x44, 0x61, 0x74, + 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x16, 0x66, 0x75, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, + 0x12, 0x41, 0x0a, 0x0c, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x18, 0xa1, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x65, 0x61, 0x6d, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x12, 0x41, 0x0a, 0x0c, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x18, 0xa2, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x76, 0x65, 0x67, + 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x61, 0x6d, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x65, 0x61, 0x6d, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x5a, 0x0a, 0x15, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x65, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x74, 0x65, 0x61, 0x6d, 0x18, + 0xa3, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x53, + 0x77, 0x69, 0x74, 0x63, 0x68, 0x65, 0x64, 0x54, 0x65, 0x61, 0x6d, 0x48, 0x00, 0x52, 0x13, 0x72, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x65, 0x64, 0x54, 0x65, + 0x61, 0x6d, 0x12, 0x54, 0x0a, 0x13, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x5f, 0x6a, 0x6f, + 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x74, 0x65, 0x61, 0x6d, 0x18, 0xa4, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x21, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x4a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x54, + 0x65, 0x61, 0x6d, 0x48, 0x00, 0x52, 0x11, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x4a, 0x6f, + 0x69, 0x6e, 0x65, 0x64, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x63, 0x0a, 0x18, 0x72, 0x65, 0x66, 0x65, + 0x72, 0x72, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x65, 0x64, 0x18, 0xa5, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x76, 0x65, + 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x66, + 0x65, 0x72, 0x72, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x16, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x50, + 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x63, 0x0a, + 0x18, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, + 0x6d, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0xa6, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x26, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, + 0x6d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x16, 0x72, 0x65, 0x66, 0x65, + 0x72, 0x72, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x12, 0x5d, 0x0a, 0x16, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x5f, 0x70, + 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x18, 0xa7, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x50, 0x72, 0x6f, + 0x67, 0x72, 0x61, 0x6d, 0x45, 0x6e, 0x64, 0x65, 0x64, 0x48, 0x00, 0x52, 0x14, 0x72, 0x65, 0x66, + 0x65, 0x72, 0x72, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x45, 0x6e, 0x64, 0x65, + 0x64, 0x12, 0x57, 0x0a, 0x14, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x5f, 0x73, 0x65, + 0x74, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0xa8, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x22, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x12, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, + 0x53, 0x65, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x6a, 0x0a, 0x1b, 0x72, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x65, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x66, + 0x65, 0x72, 0x72, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x74, 0x18, 0xa9, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x28, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x4a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x52, + 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x48, 0x00, 0x52, 0x18, 0x72, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x65, 0x4a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x52, 0x65, 0x66, 0x65, 0x72, + 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x12, 0x5a, 0x0a, 0x15, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, + 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6b, 0x18, + 0xaa, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x63, 0x74, + 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6b, 0x48, 0x00, 0x52, 0x13, 0x70, + 0x61, 0x72, 0x74, 0x79, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6b, 0x12, 0x76, 0x0a, 0x1f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x64, 0x69, 0x73, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x65, 0x64, 0x18, 0xab, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x76, + 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, + 0x72, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x1c, 0x76, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, + 0x72, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x76, 0x0a, 0x1f, 0x76, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x70, 0x72, + 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0xac, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x48, 0x00, 0x52, 0x1c, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x12, 0x70, 0x0a, 0x1d, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x64, 0x69, 0x73, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x65, 0x6e, + 0x64, 0x65, 0x64, 0x18, 0xad, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x76, 0x65, 0x67, + 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, + 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, + 0x6d, 0x45, 0x6e, 0x64, 0x65, 0x64, 0x48, 0x00, 0x52, 0x1a, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x45, + 0x6e, 0x64, 0x65, 0x64, 0x12, 0x67, 0x0a, 0x1a, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, + 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x18, 0xae, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x65, 0x4a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, - 0x53, 0x65, 0x74, 0x48, 0x00, 0x52, 0x18, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x4a, 0x6f, - 0x69, 0x6e, 0x65, 0x64, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x12, - 0x5a, 0x0a, 0x15, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, - 0x79, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6b, 0x18, 0xaa, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x23, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, - 0x72, 0x65, 0x61, 0x6b, 0x48, 0x00, 0x52, 0x13, 0x70, 0x61, 0x72, 0x74, 0x79, 0x41, 0x63, 0x74, - 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6b, 0x12, 0x76, 0x0a, 0x1f, 0x76, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x70, - 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x18, 0xab, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x72, - 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x1c, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x72, - 0x74, 0x65, 0x64, 0x12, 0x76, 0x0a, 0x1f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x64, 0x69, - 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0xac, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, + 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x48, 0x00, 0x52, 0x17, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, + 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x5a, 0x0a, + 0x15, 0x76, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0xaf, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, - 0x67, 0x72, 0x61, 0x6d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x1c, 0x76, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, - 0x67, 0x72, 0x61, 0x6d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x70, 0x0a, 0x1d, 0x76, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x70, - 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x18, 0xad, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x45, 0x6e, 0x64, 0x65, 0x64, 0x48, - 0x00, 0x52, 0x1a, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x45, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x67, 0x0a, - 0x1a, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x74, - 0x61, 0x74, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0xae, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x17, 0x72, - 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x5a, 0x0a, 0x15, 0x76, 0x65, 0x73, 0x74, 0x69, 0x6e, - 0x67, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, - 0xaf, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x13, 0x76, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x12, 0x70, 0x0a, 0x1d, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x64, 0x69, 0x73, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x18, 0xb0, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x76, 0x65, 0x67, - 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x1a, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x64, 0x12, 0x3b, 0x0a, 0x0a, 0x66, 0x65, 0x65, 0x73, 0x5f, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x18, 0xb1, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x76, 0x65, 0x67, 0x61, - 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x65, 0x73, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x48, 0x00, 0x52, 0x09, 0x66, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x12, 0x4d, 0x0a, 0x10, 0x66, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x61, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0xb2, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, - 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x75, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x48, 0x00, 0x52, - 0x0f, 0x66, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, - 0x12, 0x64, 0x0a, 0x19, 0x70, 0x61, 0x69, 0x64, 0x5f, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, - 0x74, 0x79, 0x5f, 0x66, 0x65, 0x65, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0xb3, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x69, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, - 0x69, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x48, 0x00, 0x52, 0x16, - 0x70, 0x61, 0x69, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x46, 0x65, 0x65, - 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x63, 0x0a, 0x18, 0x76, 0x65, 0x73, 0x74, 0x69, 0x6e, - 0x67, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, - 0x72, 0x79, 0x18, 0xb4, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x76, 0x65, 0x67, 0x61, - 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x73, 0x74, 0x69, - 0x6e, 0x67, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, - 0x79, 0x48, 0x00, 0x52, 0x16, 0x76, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x61, 0x6c, 0x61, - 0x6e, 0x63, 0x65, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x44, 0x0a, 0x0d, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, 0x66, 0x65, 0x65, 0x73, 0x18, 0xb5, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, - 0x73, 0x48, 0x00, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, - 0x73, 0x12, 0x5d, 0x0a, 0x16, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, 0x66, 0x65, - 0x65, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0xb6, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x73, - 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x14, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x73, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x64, 0x0a, 0x19, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, - 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0xb7, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x4d, 0x61, 0x72, 0x67, 0x69, - 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x16, - 0x70, 0x61, 0x72, 0x74, 0x79, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x5a, 0x0a, 0x15, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, - 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, - 0xb8, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x50, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x13, 0x70, + 0x65, 0x64, 0x48, 0x00, 0x52, 0x13, 0x76, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x70, 0x0a, 0x1d, 0x76, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, + 0x74, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0xb0, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2a, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, + 0x1a, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x3b, 0x0a, 0x0a, 0x66, + 0x65, 0x65, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0xb1, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x48, 0x00, 0x52, 0x09, 0x66, + 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x4d, 0x0a, 0x10, 0x66, 0x75, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0xb2, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, + 0x65, 0x6e, 0x74, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x66, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, + 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x64, 0x0a, 0x19, 0x70, 0x61, 0x69, 0x64, 0x5f, + 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x5f, 0x66, 0x65, 0x65, 0x73, 0x5f, 0x73, + 0x74, 0x61, 0x74, 0x73, 0x18, 0xb3, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x76, 0x65, + 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x69, + 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x48, 0x00, 0x52, 0x16, 0x70, 0x61, 0x69, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, + 0x64, 0x69, 0x74, 0x79, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x63, 0x0a, + 0x18, 0x76, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, + 0x73, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0xb4, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x26, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, + 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x48, 0x00, 0x52, 0x16, 0x76, 0x65, 0x73, 0x74, + 0x69, 0x6e, 0x67, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x79, 0x12, 0x44, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, 0x66, + 0x65, 0x65, 0x73, 0x18, 0xb5, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, + 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x73, 0x12, 0x5d, 0x0a, 0x16, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x66, 0x65, 0x72, 0x5f, 0x66, 0x65, 0x65, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0xb6, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x76, 0x65, 0x67, 0x61, + 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x73, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x48, + 0x00, 0x52, 0x14, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x73, 0x44, + 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x64, 0x0a, 0x19, 0x70, 0x61, 0x72, 0x74, 0x79, + 0x5f, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x18, 0xb7, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x76, 0x65, + 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, + 0x74, 0x79, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x16, 0x70, 0x61, 0x72, 0x74, 0x79, 0x4d, 0x61, 0x72, 0x67, + 0x69, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x5a, 0x0a, + 0x15, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0xb8, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x12, 0x54, 0x0a, 0x13, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, - 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0xb9, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x21, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x11, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x8c, 0x01, 0x0a, 0x27, 0x74, 0x69, 0x6d, - 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x6f, - 0x6e, 0x61, 0x6c, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x64, 0x18, 0xba, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x76, 0x65, - 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, - 0x48, 0x00, 0x52, 0x23, 0x74, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, + 0x65, 0x64, 0x48, 0x00, 0x52, 0x13, 0x70, 0x61, 0x72, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x54, 0x0a, 0x13, 0x74, 0x65, 0x61, + 0x6d, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x18, 0xb9, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x11, 0x74, 0x65, + 0x61, 0x6d, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, + 0x8c, 0x01, 0x0a, 0x27, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, + 0x64, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0xba, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x4d, 0x0a, 0x10, 0x63, 0x61, 0x6e, 0x63, 0x65, - 0x6c, 0x6c, 0x65, 0x64, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0xbb, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x65, 0x64, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x65, 0x64, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x36, 0x0a, 0x06, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x06, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x41, - 0x0a, 0x0c, 0x74, 0x78, 0x5f, 0x65, 0x72, 0x72, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0xd1, - 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x78, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x74, 0x78, 0x45, 0x72, 0x72, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x63, - 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, - 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, - 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x42, - 0x07, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2a, 0xdd, 0x01, 0x0a, 0x1d, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x50, 0x72, 0x6f, 0x70, - 0x6f, 0x73, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x30, 0x0a, 0x2c, 0x50, 0x52, - 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x55, 0x50, 0x47, 0x52, 0x41, 0x44, 0x45, 0x5f, 0x50, - 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2c, 0x0a, 0x28, - 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x55, 0x50, 0x47, 0x52, 0x41, 0x44, 0x45, - 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, - 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x2d, 0x0a, 0x29, 0x50, 0x52, - 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x55, 0x50, 0x47, 0x52, 0x41, 0x44, 0x45, 0x5f, 0x50, - 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x41, - 0x50, 0x50, 0x52, 0x4f, 0x56, 0x45, 0x44, 0x10, 0x02, 0x12, 0x2d, 0x0a, 0x29, 0x50, 0x52, 0x4f, - 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x55, 0x50, 0x47, 0x52, 0x41, 0x44, 0x45, 0x5f, 0x50, 0x52, - 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x45, - 0x4a, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x03, 0x2a, 0xad, 0x1b, 0x0a, 0x0c, 0x42, 0x75, 0x73, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x1a, 0x42, 0x55, 0x53, - 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x42, 0x55, 0x53, - 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x10, - 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, - 0x02, 0x12, 0x23, 0x0a, 0x1f, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x45, 0x44, 0x47, 0x45, 0x52, 0x5f, 0x4d, 0x4f, 0x56, 0x45, 0x4d, - 0x45, 0x4e, 0x54, 0x53, 0x10, 0x03, 0x12, 0x26, 0x0a, 0x22, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, - 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x4c, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x18, - 0x0a, 0x14, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x10, 0x05, 0x12, 0x1a, 0x0a, 0x16, 0x42, 0x55, 0x53, 0x5f, - 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, - 0x4e, 0x54, 0x10, 0x06, 0x12, 0x18, 0x0a, 0x14, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, - 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x41, 0x52, 0x54, 0x59, 0x10, 0x07, 0x12, 0x18, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x23, 0x74, 0x69, 0x6d, 0x65, 0x57, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x4d, + 0x0a, 0x10, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x65, 0x64, 0x5f, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x73, 0x18, 0xbb, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, + 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, + 0x6c, 0x6c, 0x65, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x63, 0x61, + 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x65, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x3e, 0x0a, + 0x0b, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0xbc, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x48, + 0x00, 0x52, 0x0a, 0x67, 0x61, 0x6d, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x36, 0x0a, + 0x06, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, + 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x06, 0x6d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x41, 0x0a, 0x0c, 0x74, 0x78, 0x5f, 0x65, 0x72, 0x72, 0x5f, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0xd1, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, + 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x78, + 0x45, 0x72, 0x72, 0x6f, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x74, 0x78, + 0x45, 0x72, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x17, 0x0a, + 0x07, 0x74, 0x78, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x74, 0x78, 0x48, 0x61, 0x73, 0x68, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2a, + 0xdd, 0x01, 0x0a, 0x1d, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, + 0x61, 0x64, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x30, 0x0a, 0x2c, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x55, 0x50, + 0x47, 0x52, 0x41, 0x44, 0x45, 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x2c, 0x0a, 0x28, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, + 0x55, 0x50, 0x47, 0x52, 0x41, 0x44, 0x45, 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, + 0x01, 0x12, 0x2d, 0x0a, 0x29, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x55, 0x50, + 0x47, 0x52, 0x41, 0x44, 0x45, 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x41, 0x50, 0x50, 0x52, 0x4f, 0x56, 0x45, 0x44, 0x10, 0x02, + 0x12, 0x2d, 0x0a, 0x29, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x55, 0x50, 0x47, + 0x52, 0x41, 0x44, 0x45, 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x03, 0x2a, + 0xcd, 0x1b, 0x0a, 0x0c, 0x42, 0x75, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x1e, 0x0a, 0x1a, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x16, 0x0a, 0x12, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x42, 0x55, 0x53, 0x5f, + 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, + 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x02, 0x12, 0x23, 0x0a, 0x1f, 0x42, 0x55, 0x53, 0x5f, + 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x45, 0x44, 0x47, 0x45, + 0x52, 0x5f, 0x4d, 0x4f, 0x56, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x53, 0x10, 0x03, 0x12, 0x26, 0x0a, + 0x22, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x4c, 0x55, 0x54, + 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x18, 0x0a, 0x14, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, + 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x10, 0x05, 0x12, + 0x1a, 0x0a, 0x16, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x06, 0x12, 0x18, 0x0a, 0x14, 0x42, + 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x41, + 0x52, 0x54, 0x59, 0x10, 0x07, 0x12, 0x18, 0x0a, 0x14, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, + 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x52, 0x41, 0x44, 0x45, 0x10, 0x08, 0x12, + 0x20, 0x0a, 0x1c, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x4d, 0x41, 0x52, 0x47, 0x49, 0x4e, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x53, 0x10, + 0x09, 0x12, 0x1b, 0x0a, 0x17, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x10, 0x0a, 0x12, 0x17, + 0x0a, 0x13, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x56, 0x4f, 0x54, 0x45, 0x10, 0x0b, 0x12, 0x1e, 0x0a, 0x1a, 0x42, 0x55, 0x53, 0x5f, 0x45, + 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x54, + 0x5f, 0x44, 0x41, 0x54, 0x41, 0x10, 0x0c, 0x12, 0x21, 0x0a, 0x1d, 0x42, 0x55, 0x53, 0x5f, 0x45, + 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x53, + 0x49, 0x47, 0x4e, 0x41, 0x54, 0x55, 0x52, 0x45, 0x10, 0x0d, 0x12, 0x25, 0x0a, 0x21, 0x42, 0x55, + 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x4f, 0x53, + 0x53, 0x5f, 0x53, 0x4f, 0x43, 0x49, 0x41, 0x4c, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, + 0x0e, 0x12, 0x22, 0x0a, 0x1e, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x4c, 0x45, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, + 0x49, 0x4f, 0x4e, 0x10, 0x0f, 0x12, 0x24, 0x0a, 0x20, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, + 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x4c, 0x45, 0x5f, 0x44, + 0x49, 0x53, 0x54, 0x52, 0x45, 0x53, 0x53, 0x45, 0x44, 0x10, 0x10, 0x12, 0x21, 0x0a, 0x1d, 0x42, + 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x41, + 0x52, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0x11, 0x12, 0x18, 0x0a, 0x14, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x54, 0x52, 0x41, 0x44, 0x45, 0x10, 0x08, 0x12, 0x20, 0x0a, 0x1c, 0x42, 0x55, 0x53, 0x5f, - 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x41, 0x52, 0x47, 0x49, - 0x4e, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x53, 0x10, 0x09, 0x12, 0x1b, 0x0a, 0x17, 0x42, 0x55, - 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x52, 0x4f, - 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x10, 0x0a, 0x12, 0x17, 0x0a, 0x13, 0x42, 0x55, 0x53, 0x5f, 0x45, - 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x4f, 0x54, 0x45, 0x10, 0x0b, + 0x5f, 0x41, 0x53, 0x53, 0x45, 0x54, 0x10, 0x12, 0x12, 0x1e, 0x0a, 0x1a, 0x42, 0x55, 0x53, 0x5f, + 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, + 0x54, 0x5f, 0x54, 0x49, 0x43, 0x4b, 0x10, 0x13, 0x12, 0x1d, 0x0a, 0x19, 0x42, 0x55, 0x53, 0x5f, + 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x44, + 0x52, 0x41, 0x57, 0x41, 0x4c, 0x10, 0x14, 0x12, 0x1a, 0x0a, 0x16, 0x42, 0x55, 0x53, 0x5f, 0x45, + 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x45, 0x50, 0x4f, 0x53, 0x49, + 0x54, 0x10, 0x15, 0x12, 0x1a, 0x0a, 0x16, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x55, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x16, 0x12, + 0x1e, 0x0a, 0x1a, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x52, 0x49, 0x53, 0x4b, 0x5f, 0x46, 0x41, 0x43, 0x54, 0x4f, 0x52, 0x10, 0x17, 0x12, + 0x24, 0x0a, 0x20, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x45, + 0x54, 0x45, 0x52, 0x10, 0x18, 0x12, 0x26, 0x0a, 0x22, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, + 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x49, 0x51, 0x55, 0x49, 0x44, 0x49, 0x54, + 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x19, 0x12, 0x21, 0x0a, + 0x1d, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x54, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x1a, 0x12, 0x1e, 0x0a, 0x1a, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x54, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x10, 0x0c, - 0x12, 0x21, 0x0a, 0x1d, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x41, 0x54, 0x55, 0x52, - 0x45, 0x10, 0x0d, 0x12, 0x25, 0x0a, 0x21, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x4f, 0x53, 0x53, 0x5f, 0x53, 0x4f, 0x43, 0x49, 0x41, - 0x4c, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x0e, 0x12, 0x22, 0x0a, 0x1e, 0x42, 0x55, - 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, - 0x54, 0x4c, 0x45, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x0f, 0x12, 0x24, - 0x0a, 0x20, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x53, 0x45, 0x54, 0x54, 0x4c, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x54, 0x52, 0x45, 0x53, 0x53, - 0x45, 0x44, 0x10, 0x10, 0x12, 0x21, 0x0a, 0x1d, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, - 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x52, - 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0x11, 0x12, 0x18, 0x0a, 0x14, 0x42, 0x55, 0x53, 0x5f, 0x45, - 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x53, 0x53, 0x45, 0x54, 0x10, - 0x12, 0x12, 0x1e, 0x0a, 0x1a, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x49, 0x43, 0x4b, 0x10, - 0x13, 0x12, 0x1d, 0x0a, 0x19, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x44, 0x52, 0x41, 0x57, 0x41, 0x4c, 0x10, 0x14, - 0x12, 0x1a, 0x0a, 0x16, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x44, 0x45, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x10, 0x15, 0x12, 0x1a, 0x0a, 0x16, - 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, - 0x55, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x16, 0x12, 0x1e, 0x0a, 0x1a, 0x42, 0x55, 0x53, 0x5f, - 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x49, 0x53, 0x4b, 0x5f, - 0x46, 0x41, 0x43, 0x54, 0x4f, 0x52, 0x10, 0x17, 0x12, 0x24, 0x0a, 0x20, 0x42, 0x55, 0x53, 0x5f, - 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, - 0x52, 0x4b, 0x5f, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x45, 0x54, 0x45, 0x52, 0x10, 0x18, 0x12, 0x26, - 0x0a, 0x22, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x4c, 0x49, 0x51, 0x55, 0x49, 0x44, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, - 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x19, 0x12, 0x21, 0x0a, 0x1d, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, - 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x54, 0x5f, - 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x1a, 0x12, 0x1e, 0x0a, 0x1a, 0x42, 0x55, 0x53, - 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x52, 0x41, 0x43, - 0x4c, 0x45, 0x5f, 0x53, 0x50, 0x45, 0x43, 0x10, 0x1b, 0x12, 0x1e, 0x0a, 0x1a, 0x42, 0x55, 0x53, - 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x52, 0x41, 0x43, - 0x4c, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x10, 0x1c, 0x12, 0x25, 0x0a, 0x21, 0x42, 0x55, 0x53, - 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, - 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x1d, - 0x12, 0x22, 0x0a, 0x1e, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x53, 0x43, 0x4f, - 0x52, 0x45, 0x10, 0x1e, 0x12, 0x1f, 0x0a, 0x1b, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, - 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x50, 0x4f, 0x43, 0x48, 0x5f, 0x55, 0x50, 0x44, - 0x41, 0x54, 0x45, 0x10, 0x1f, 0x12, 0x23, 0x0a, 0x1f, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, - 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x4f, - 0x52, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x20, 0x12, 0x20, 0x0a, 0x1c, 0x42, 0x55, - 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x54, 0x41, - 0x4b, 0x45, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x49, 0x4e, 0x47, 0x10, 0x21, 0x12, 0x26, 0x0a, 0x22, - 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, - 0x45, 0x57, 0x41, 0x52, 0x44, 0x5f, 0x50, 0x41, 0x59, 0x4f, 0x55, 0x54, 0x5f, 0x45, 0x56, 0x45, - 0x4e, 0x54, 0x10, 0x22, 0x12, 0x1d, 0x0a, 0x19, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, - 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x50, 0x4f, 0x49, 0x4e, - 0x54, 0x10, 0x23, 0x12, 0x1f, 0x0a, 0x1b, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x5f, 0x53, 0x54, 0x41, - 0x52, 0x54, 0x10, 0x24, 0x12, 0x1f, 0x0a, 0x1b, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, - 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x52, 0x4f, 0x54, 0x41, 0x54, - 0x49, 0x4f, 0x4e, 0x10, 0x25, 0x12, 0x1c, 0x0a, 0x18, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, - 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x56, 0x41, - 0x52, 0x10, 0x26, 0x12, 0x21, 0x0a, 0x1d, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x4c, 0x49, - 0x4d, 0x49, 0x54, 0x53, 0x10, 0x27, 0x12, 0x1b, 0x0a, 0x17, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, - 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, - 0x52, 0x10, 0x28, 0x12, 0x24, 0x0a, 0x20, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x4f, 0x52, 0x5f, - 0x52, 0x41, 0x4e, 0x4b, 0x49, 0x4e, 0x47, 0x10, 0x29, 0x12, 0x2f, 0x0a, 0x2b, 0x42, 0x55, 0x53, - 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x52, 0x43, 0x32, - 0x30, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x53, 0x49, 0x47, 0x5f, 0x53, 0x49, 0x47, 0x4e, - 0x45, 0x52, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x10, 0x2a, 0x12, 0x30, 0x0a, 0x2c, 0x42, 0x55, - 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x52, 0x43, - 0x32, 0x30, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x53, 0x49, 0x47, 0x5f, 0x53, 0x45, 0x54, - 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x10, 0x2b, 0x12, 0x2f, 0x0a, 0x2b, - 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, - 0x52, 0x43, 0x32, 0x30, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x53, 0x49, 0x47, 0x5f, 0x53, - 0x49, 0x47, 0x4e, 0x45, 0x52, 0x5f, 0x41, 0x44, 0x44, 0x45, 0x44, 0x10, 0x2c, 0x12, 0x31, 0x0a, - 0x2d, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x45, 0x52, 0x43, 0x32, 0x30, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x53, 0x49, 0x47, 0x5f, - 0x53, 0x49, 0x47, 0x4e, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x44, 0x10, 0x2d, - 0x12, 0x21, 0x0a, 0x1d, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x45, 0x10, 0x2e, 0x12, 0x28, 0x0a, 0x24, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x45, 0x55, 0x4d, 0x5f, 0x4b, - 0x45, 0x59, 0x5f, 0x52, 0x4f, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x2f, 0x12, 0x2c, 0x0a, - 0x28, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x55, 0x50, 0x47, 0x52, 0x41, 0x44, 0x45, - 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x10, 0x30, 0x12, 0x1e, 0x0a, 0x1a, 0x42, - 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x45, - 0x47, 0x49, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x31, 0x12, 0x1c, 0x0a, 0x18, 0x42, - 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, - 0x44, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x32, 0x12, 0x2b, 0x0a, 0x27, 0x42, 0x55, 0x53, - 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x52, 0x4f, 0x54, - 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x55, 0x50, 0x47, 0x52, 0x41, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x41, - 0x52, 0x54, 0x45, 0x44, 0x10, 0x33, 0x12, 0x20, 0x0a, 0x1c, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, - 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x4c, 0x45, 0x5f, - 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x54, 0x10, 0x34, 0x12, 0x25, 0x0a, 0x21, 0x42, 0x55, 0x53, 0x5f, - 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, - 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x10, 0x35, 0x12, - 0x21, 0x0a, 0x1d, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x53, 0x4e, 0x41, 0x50, 0x53, 0x48, 0x4f, 0x54, 0x5f, 0x54, 0x41, 0x4b, 0x45, 0x4e, - 0x10, 0x36, 0x12, 0x33, 0x0a, 0x2f, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x55, 0x50, - 0x47, 0x52, 0x41, 0x44, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, - 0x52, 0x45, 0x41, 0x44, 0x59, 0x10, 0x37, 0x12, 0x2b, 0x0a, 0x27, 0x42, 0x55, 0x53, 0x5f, 0x45, - 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x54, 0x52, 0x45, - 0x53, 0x53, 0x45, 0x44, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x53, 0x5f, 0x43, 0x4c, 0x4f, 0x53, - 0x45, 0x44, 0x10, 0x38, 0x12, 0x21, 0x0a, 0x1d, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, - 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x58, 0x50, 0x49, 0x52, 0x45, 0x44, 0x5f, 0x4f, - 0x52, 0x44, 0x45, 0x52, 0x53, 0x10, 0x39, 0x12, 0x27, 0x0a, 0x23, 0x42, 0x55, 0x53, 0x5f, 0x45, - 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x54, 0x52, 0x45, - 0x53, 0x53, 0x45, 0x44, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x3a, + 0x50, 0x45, 0x5f, 0x4f, 0x52, 0x41, 0x43, 0x4c, 0x45, 0x5f, 0x53, 0x50, 0x45, 0x43, 0x10, 0x1b, + 0x12, 0x1e, 0x0a, 0x1a, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x4f, 0x52, 0x41, 0x43, 0x4c, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x10, 0x1c, + 0x12, 0x25, 0x0a, 0x21, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x41, + 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x1d, 0x12, 0x22, 0x0a, 0x1e, 0x42, 0x55, 0x53, 0x5f, 0x45, + 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, + 0x54, 0x4f, 0x52, 0x5f, 0x53, 0x43, 0x4f, 0x52, 0x45, 0x10, 0x1e, 0x12, 0x1f, 0x0a, 0x1b, 0x42, + 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x50, + 0x4f, 0x43, 0x48, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x1f, 0x12, 0x23, 0x0a, 0x1f, + 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, + 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, + 0x20, 0x12, 0x20, 0x0a, 0x1c, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x4b, 0x45, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x49, 0x4e, + 0x47, 0x10, 0x21, 0x12, 0x26, 0x0a, 0x22, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x57, 0x41, 0x52, 0x44, 0x5f, 0x50, 0x41, 0x59, + 0x4f, 0x55, 0x54, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x10, 0x22, 0x12, 0x1d, 0x0a, 0x19, 0x42, + 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x48, + 0x45, 0x43, 0x4b, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x10, 0x23, 0x12, 0x1f, 0x0a, 0x1b, 0x42, 0x55, + 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x54, 0x52, + 0x45, 0x41, 0x4d, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x24, 0x12, 0x1f, 0x0a, 0x1b, 0x42, + 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4b, 0x45, + 0x59, 0x5f, 0x52, 0x4f, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x25, 0x12, 0x1c, 0x0a, 0x18, + 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x45, 0x5f, 0x56, 0x41, 0x52, 0x10, 0x26, 0x12, 0x21, 0x0a, 0x1d, 0x42, 0x55, + 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x45, 0x54, + 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x53, 0x10, 0x27, 0x12, 0x1b, 0x0a, + 0x17, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x10, 0x28, 0x12, 0x24, 0x0a, 0x20, 0x42, 0x55, + 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x41, 0x4c, + 0x49, 0x44, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x49, 0x4e, 0x47, 0x10, 0x29, + 0x12, 0x2f, 0x0a, 0x2b, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x45, 0x52, 0x43, 0x32, 0x30, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, 0x53, + 0x49, 0x47, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x52, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x10, + 0x2a, 0x12, 0x30, 0x0a, 0x2c, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x45, 0x52, 0x43, 0x32, 0x30, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x5f, + 0x53, 0x49, 0x47, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, + 0x44, 0x10, 0x2b, 0x12, 0x2f, 0x0a, 0x2b, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x52, 0x43, 0x32, 0x30, 0x5f, 0x4d, 0x55, 0x4c, 0x54, + 0x49, 0x5f, 0x53, 0x49, 0x47, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x52, 0x5f, 0x41, 0x44, 0x44, + 0x45, 0x44, 0x10, 0x2c, 0x12, 0x31, 0x0a, 0x2d, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, + 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x52, 0x43, 0x32, 0x30, 0x5f, 0x4d, 0x55, 0x4c, + 0x54, 0x49, 0x5f, 0x53, 0x49, 0x47, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x52, 0x5f, 0x52, 0x45, + 0x4d, 0x4f, 0x56, 0x45, 0x44, 0x10, 0x2d, 0x12, 0x21, 0x0a, 0x1d, 0x42, 0x55, 0x53, 0x5f, 0x45, + 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x2e, 0x12, 0x28, 0x0a, 0x24, 0x42, 0x55, + 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x54, 0x48, + 0x45, 0x52, 0x45, 0x55, 0x4d, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x52, 0x4f, 0x54, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x10, 0x2f, 0x12, 0x2c, 0x0a, 0x28, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, + 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, + 0x55, 0x50, 0x47, 0x52, 0x41, 0x44, 0x45, 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, + 0x10, 0x30, 0x12, 0x1e, 0x0a, 0x1a, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, + 0x10, 0x31, 0x12, 0x1c, 0x0a, 0x18, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x44, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x32, 0x12, 0x2b, 0x0a, 0x27, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x53, 0x50, 0x4f, 0x54, 0x5f, 0x4c, 0x49, 0x51, 0x55, 0x49, 0x44, 0x49, 0x54, - 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x3b, 0x12, 0x1d, 0x0a, - 0x19, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x53, 0x54, 0x4f, 0x50, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x10, 0x3c, 0x12, 0x21, 0x0a, 0x1d, - 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, - 0x55, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x10, 0x3d, 0x12, - 0x2c, 0x0a, 0x28, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x46, 0x55, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, - 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x10, 0x3e, 0x12, 0x1f, 0x0a, - 0x1b, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x54, 0x45, 0x41, 0x4d, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0x3f, 0x12, 0x1f, - 0x0a, 0x1b, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x54, 0x45, 0x41, 0x4d, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x40, 0x12, - 0x28, 0x0a, 0x24, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x45, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, - 0x45, 0x44, 0x5f, 0x54, 0x45, 0x41, 0x4d, 0x10, 0x41, 0x12, 0x26, 0x0a, 0x22, 0x42, 0x55, 0x53, - 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x46, 0x45, - 0x52, 0x45, 0x45, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x45, 0x44, 0x5f, 0x54, 0x45, 0x41, 0x4d, 0x10, - 0x42, 0x12, 0x2b, 0x0a, 0x27, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x52, 0x41, 0x4c, 0x5f, 0x50, 0x52, 0x4f, - 0x47, 0x52, 0x41, 0x4d, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x45, 0x44, 0x10, 0x43, 0x12, 0x2b, + 0x50, 0x45, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x55, 0x50, 0x47, 0x52, + 0x41, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x45, 0x44, 0x10, 0x33, 0x12, 0x20, 0x0a, + 0x1c, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x53, 0x45, 0x54, 0x54, 0x4c, 0x45, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x54, 0x10, 0x34, 0x12, + 0x25, 0x0a, 0x21, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, + 0x53, 0x55, 0x4c, 0x54, 0x10, 0x35, 0x12, 0x21, 0x0a, 0x1d, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, + 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x4e, 0x41, 0x50, 0x53, 0x48, 0x4f, + 0x54, 0x5f, 0x54, 0x41, 0x4b, 0x45, 0x4e, 0x10, 0x36, 0x12, 0x33, 0x0a, 0x2f, 0x42, 0x55, 0x53, + 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x52, 0x4f, 0x54, + 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x55, 0x50, 0x47, 0x52, 0x41, 0x44, 0x45, 0x5f, 0x44, 0x41, 0x54, + 0x41, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x59, 0x10, 0x37, 0x12, 0x2b, 0x0a, 0x27, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x52, 0x41, 0x4c, 0x5f, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x41, - 0x4d, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x44, 0x12, 0x29, 0x0a, 0x25, 0x42, - 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, - 0x46, 0x45, 0x52, 0x52, 0x41, 0x4c, 0x5f, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x41, 0x4d, 0x5f, 0x45, - 0x4e, 0x44, 0x45, 0x44, 0x10, 0x45, 0x12, 0x27, 0x0a, 0x23, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, - 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x52, 0x41, - 0x4c, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0x46, 0x12, - 0x2e, 0x0a, 0x2a, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x45, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x45, 0x44, - 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x52, 0x41, 0x4c, 0x5f, 0x53, 0x45, 0x54, 0x10, 0x47, 0x12, - 0x28, 0x0a, 0x24, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x50, 0x41, 0x52, 0x54, 0x59, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, - 0x5f, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4b, 0x10, 0x48, 0x12, 0x32, 0x0a, 0x2e, 0x42, 0x55, 0x53, - 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x4f, 0x4c, 0x55, - 0x4d, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x50, 0x52, 0x4f, 0x47, - 0x52, 0x41, 0x4d, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x45, 0x44, 0x10, 0x49, 0x12, 0x32, 0x0a, - 0x2e, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, - 0x50, 0x52, 0x4f, 0x47, 0x52, 0x41, 0x4d, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, - 0x4a, 0x12, 0x30, 0x0a, 0x2c, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, - 0x55, 0x4e, 0x54, 0x5f, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x41, 0x4d, 0x5f, 0x45, 0x4e, 0x44, 0x45, - 0x44, 0x10, 0x4b, 0x12, 0x2d, 0x0a, 0x29, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x52, 0x41, 0x4c, 0x5f, 0x53, - 0x45, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, - 0x10, 0x4c, 0x12, 0x28, 0x0a, 0x24, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x45, 0x53, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x4d, 0x12, 0x30, 0x0a, 0x2c, - 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, - 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x4e, 0x12, 0x25, - 0x0a, 0x21, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x46, 0x45, 0x45, 0x53, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, - 0x54, 0x45, 0x44, 0x10, 0x4f, 0x12, 0x23, 0x0a, 0x1f, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, - 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x55, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, - 0x50, 0x41, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x53, 0x10, 0x50, 0x12, 0x34, 0x0a, 0x30, 0x42, 0x55, - 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x41, 0x49, - 0x44, 0x5f, 0x4c, 0x49, 0x51, 0x55, 0x49, 0x44, 0x49, 0x54, 0x59, 0x5f, 0x46, 0x45, 0x45, 0x53, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x51, - 0x12, 0x22, 0x0a, 0x1e, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x56, 0x45, 0x53, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x55, 0x4d, 0x4d, 0x41, - 0x52, 0x59, 0x10, 0x52, 0x12, 0x25, 0x0a, 0x21, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, - 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, - 0x46, 0x45, 0x45, 0x53, 0x5f, 0x50, 0x41, 0x49, 0x44, 0x10, 0x53, 0x12, 0x31, 0x0a, 0x2d, 0x42, + 0x5f, 0x44, 0x49, 0x53, 0x54, 0x52, 0x45, 0x53, 0x53, 0x45, 0x44, 0x5f, 0x4f, 0x52, 0x44, 0x45, + 0x52, 0x53, 0x5f, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0x10, 0x38, 0x12, 0x21, 0x0a, 0x1d, 0x42, + 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x58, + 0x50, 0x49, 0x52, 0x45, 0x44, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x53, 0x10, 0x39, 0x12, 0x27, + 0x0a, 0x23, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x44, 0x49, 0x53, 0x54, 0x52, 0x45, 0x53, 0x53, 0x45, 0x44, 0x5f, 0x50, 0x4f, 0x53, 0x49, + 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x3a, 0x12, 0x2b, 0x0a, 0x27, 0x42, 0x55, 0x53, 0x5f, 0x45, + 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x50, 0x4f, 0x54, 0x5f, 0x4c, + 0x49, 0x51, 0x55, 0x49, 0x44, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x53, 0x49, + 0x4f, 0x4e, 0x10, 0x3b, 0x12, 0x1d, 0x0a, 0x19, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, + 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x54, 0x4f, 0x50, 0x5f, 0x4f, 0x52, 0x44, 0x45, + 0x52, 0x10, 0x3c, 0x12, 0x21, 0x0a, 0x1d, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x55, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x45, + 0x52, 0x49, 0x4f, 0x44, 0x10, 0x3d, 0x12, 0x2c, 0x0a, 0x28, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, + 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x55, 0x4e, 0x44, 0x49, 0x4e, 0x47, + 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x50, 0x4f, 0x49, + 0x4e, 0x54, 0x10, 0x3e, 0x12, 0x1f, 0x0a, 0x1b, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, + 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x45, 0x41, 0x4d, 0x5f, 0x43, 0x52, 0x45, 0x41, + 0x54, 0x45, 0x44, 0x10, 0x3f, 0x12, 0x1f, 0x0a, 0x1b, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, + 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x45, 0x41, 0x4d, 0x5f, 0x55, 0x50, 0x44, + 0x41, 0x54, 0x45, 0x44, 0x10, 0x40, 0x12, 0x28, 0x0a, 0x24, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, + 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x45, + 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x45, 0x44, 0x5f, 0x54, 0x45, 0x41, 0x4d, 0x10, 0x41, + 0x12, 0x26, 0x0a, 0x22, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x45, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x45, + 0x44, 0x5f, 0x54, 0x45, 0x41, 0x4d, 0x10, 0x42, 0x12, 0x2b, 0x0a, 0x27, 0x42, 0x55, 0x53, 0x5f, + 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, + 0x52, 0x41, 0x4c, 0x5f, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x41, 0x4d, 0x5f, 0x53, 0x54, 0x41, 0x52, + 0x54, 0x45, 0x44, 0x10, 0x43, 0x12, 0x2b, 0x0a, 0x27, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, + 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x52, 0x41, 0x4c, + 0x5f, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x41, 0x4d, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, + 0x10, 0x44, 0x12, 0x29, 0x0a, 0x25, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x52, 0x41, 0x4c, 0x5f, 0x50, 0x52, + 0x4f, 0x47, 0x52, 0x41, 0x4d, 0x5f, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x45, 0x12, 0x27, 0x0a, + 0x23, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x52, 0x45, 0x46, 0x45, 0x52, 0x52, 0x41, 0x4c, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x43, 0x52, 0x45, + 0x41, 0x54, 0x45, 0x44, 0x10, 0x46, 0x12, 0x2e, 0x0a, 0x2a, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, + 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x45, + 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x52, 0x41, 0x4c, + 0x5f, 0x53, 0x45, 0x54, 0x10, 0x47, 0x12, 0x28, 0x0a, 0x24, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, + 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x41, 0x52, 0x54, 0x59, 0x5f, 0x41, + 0x43, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x5f, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4b, 0x10, 0x48, + 0x12, 0x32, 0x0a, 0x2e, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x55, + 0x4e, 0x54, 0x5f, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x41, 0x4d, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, + 0x45, 0x44, 0x10, 0x49, 0x12, 0x32, 0x0a, 0x2e, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, + 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x44, 0x49, + 0x53, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x41, 0x4d, 0x5f, 0x55, + 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x4a, 0x12, 0x30, 0x0a, 0x2c, 0x42, 0x55, 0x53, 0x5f, + 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4d, + 0x45, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x50, 0x52, 0x4f, 0x47, 0x52, + 0x41, 0x4d, 0x5f, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x4b, 0x12, 0x2d, 0x0a, 0x29, 0x42, 0x55, + 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x46, + 0x45, 0x52, 0x52, 0x41, 0x4c, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, + 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x4c, 0x12, 0x28, 0x0a, 0x24, 0x42, 0x55, 0x53, + 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x45, 0x53, 0x54, + 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, + 0x44, 0x10, 0x4d, 0x12, 0x30, 0x0a, 0x2c, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x44, 0x49, 0x53, + 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, + 0x54, 0x45, 0x44, 0x10, 0x4e, 0x12, 0x25, 0x0a, 0x21, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, + 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x45, 0x45, 0x53, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x4f, 0x12, 0x23, 0x0a, 0x1f, + 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, + 0x55, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x41, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x53, 0x10, + 0x50, 0x12, 0x34, 0x0a, 0x30, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x50, 0x41, 0x49, 0x44, 0x5f, 0x4c, 0x49, 0x51, 0x55, 0x49, 0x44, 0x49, + 0x54, 0x59, 0x5f, 0x46, 0x45, 0x45, 0x53, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x55, 0x50, + 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x51, 0x12, 0x22, 0x0a, 0x1e, 0x42, 0x55, 0x53, 0x5f, 0x45, + 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x45, 0x53, 0x54, 0x49, 0x4e, + 0x47, 0x5f, 0x53, 0x55, 0x4d, 0x4d, 0x41, 0x52, 0x59, 0x10, 0x52, 0x12, 0x25, 0x0a, 0x21, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x52, - 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x46, 0x45, 0x45, 0x53, 0x5f, 0x44, 0x49, 0x53, 0x43, - 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x54, 0x12, 0x2c, - 0x0a, 0x28, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x50, 0x41, 0x52, 0x54, 0x59, 0x5f, 0x4d, 0x41, 0x52, 0x47, 0x49, 0x4e, 0x5f, 0x4d, 0x4f, - 0x44, 0x45, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x55, 0x12, 0x28, 0x0a, 0x24, - 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, - 0x41, 0x52, 0x54, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x55, 0x50, 0x44, - 0x41, 0x54, 0x45, 0x44, 0x10, 0x56, 0x12, 0x26, 0x0a, 0x22, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, - 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x45, 0x41, 0x4d, 0x53, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x57, 0x12, 0x3a, - 0x0a, 0x36, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x57, 0x45, 0x49, 0x47, 0x48, 0x54, 0x45, 0x44, 0x5f, 0x4e, - 0x4f, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x58, 0x12, 0x23, 0x0a, 0x1f, 0x42, 0x55, - 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 0x4e, - 0x43, 0x45, 0x4c, 0x4c, 0x45, 0x44, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x53, 0x10, 0x59, 0x12, - 0x19, 0x0a, 0x15, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x54, 0x10, 0x65, 0x12, 0x1c, 0x0a, 0x17, 0x42, 0x55, - 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x58, 0x5f, - 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0xc9, 0x01, 0x42, 0x31, 0x5a, 0x2f, 0x63, 0x6f, 0x64, 0x65, - 0x2e, 0x76, 0x65, 0x67, 0x61, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x69, 0x6f, - 0x2f, 0x76, 0x65, 0x67, 0x61, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x76, 0x65, 0x67, - 0x61, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x46, 0x45, 0x45, 0x53, 0x5f, 0x50, 0x41, 0x49, 0x44, + 0x10, 0x53, 0x12, 0x31, 0x0a, 0x2d, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x46, 0x45, + 0x45, 0x53, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x55, 0x50, 0x44, 0x41, + 0x54, 0x45, 0x44, 0x10, 0x54, 0x12, 0x2c, 0x0a, 0x28, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, + 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x41, 0x52, 0x54, 0x59, 0x5f, 0x4d, 0x41, + 0x52, 0x47, 0x49, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, + 0x44, 0x10, 0x55, 0x12, 0x28, 0x0a, 0x24, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x41, 0x52, 0x54, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x46, + 0x49, 0x4c, 0x45, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x56, 0x12, 0x26, 0x0a, + 0x22, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x54, 0x45, 0x41, 0x4d, 0x53, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, + 0x54, 0x45, 0x44, 0x10, 0x57, 0x12, 0x3a, 0x0a, 0x36, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, + 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x57, 0x45, 0x49, + 0x47, 0x48, 0x54, 0x45, 0x44, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x5f, 0x50, + 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, + 0x58, 0x12, 0x23, 0x0a, 0x1f, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x45, 0x44, 0x5f, 0x4f, 0x52, + 0x44, 0x45, 0x52, 0x53, 0x10, 0x59, 0x12, 0x1e, 0x0a, 0x1a, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, + 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x53, 0x43, + 0x4f, 0x52, 0x45, 0x53, 0x10, 0x5a, 0x12, 0x19, 0x0a, 0x15, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, + 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x54, 0x10, + 0x65, 0x12, 0x1c, 0x0a, 0x17, 0x42, 0x55, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x54, 0x58, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0xc9, 0x01, 0x42, + 0x31, 0x5a, 0x2f, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x65, 0x67, 0x61, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x73, 0x2f, 0x76, 0x65, 0x67, 0x61, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2f, + 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -11717,7 +12060,7 @@ func file_vega_events_v1_events_proto_rawDescGZIP() []byte { } var file_vega_events_v1_events_proto_enumTypes = make([]protoimpl.EnumInfo, 7) -var file_vega_events_v1_events_proto_msgTypes = make([]protoimpl.MessageInfo, 90) +var file_vega_events_v1_events_proto_msgTypes = make([]protoimpl.MessageInfo, 93) var file_vega_events_v1_events_proto_goTypes = []interface{}{ (ProtocolUpgradeProposalStatus)(0), // 0: vega.events.v1.ProtocolUpgradeProposalStatus (BusEventType)(0), // 1: vega.events.v1.BusEventType @@ -11813,67 +12156,70 @@ var file_vega_events_v1_events_proto_goTypes = []interface{}{ (*TeamsStatsUpdated)(nil), // 91: vega.events.v1.TeamsStatsUpdated (*TeamStats)(nil), // 92: vega.events.v1.TeamStats (*TeamMemberStats)(nil), // 93: vega.events.v1.TeamMemberStats - (*BusEvent)(nil), // 94: vega.events.v1.BusEvent - (*TransactionResult_SuccessDetails)(nil), // 95: vega.events.v1.TransactionResult.SuccessDetails - (*TransactionResult_FailureDetails)(nil), // 96: vega.events.v1.TransactionResult.FailureDetails - (*v1.OrderSubmission)(nil), // 97: vega.commands.v1.OrderSubmission - (*vega.StopOrder)(nil), // 98: vega.StopOrder - (vega.AccountType)(0), // 99: vega.AccountType - (*vega.DispatchStrategy)(nil), // 100: vega.DispatchStrategy - (*v1.OrderAmendment)(nil), // 101: vega.commands.v1.OrderAmendment - (*v1.OrderCancellation)(nil), // 102: vega.commands.v1.OrderCancellation - (*v1.ProposalSubmission)(nil), // 103: vega.commands.v1.ProposalSubmission - (*v1.VoteSubmission)(nil), // 104: vega.commands.v1.VoteSubmission - (*v1.LiquidityProvisionSubmission)(nil), // 105: vega.commands.v1.LiquidityProvisionSubmission - (*v1.WithdrawSubmission)(nil), // 106: vega.commands.v1.WithdrawSubmission - (*v1.DelegateSubmission)(nil), // 107: vega.commands.v1.DelegateSubmission - (*v1.UndelegateSubmission)(nil), // 108: vega.commands.v1.UndelegateSubmission - (*v1.LiquidityProvisionCancellation)(nil), // 109: vega.commands.v1.LiquidityProvisionCancellation - (*v1.LiquidityProvisionAmendment)(nil), // 110: vega.commands.v1.LiquidityProvisionAmendment - (*v1.Transfer)(nil), // 111: vega.commands.v1.Transfer - (*v1.CancelTransfer)(nil), // 112: vega.commands.v1.CancelTransfer - (*v1.AnnounceNode)(nil), // 113: vega.commands.v1.AnnounceNode - (*v1.OracleDataSubmission)(nil), // 114: vega.commands.v1.OracleDataSubmission - (*v1.ProtocolUpgradeProposal)(nil), // 115: vega.commands.v1.ProtocolUpgradeProposal - (*v1.IssueSignatures)(nil), // 116: vega.commands.v1.IssueSignatures - (*v1.BatchMarketInstructions)(nil), // 117: vega.commands.v1.BatchMarketInstructions - (*v1.KeyRotateSubmission)(nil), // 118: vega.commands.v1.KeyRotateSubmission - (*v1.EthereumKeyRotateSubmission)(nil), // 119: vega.commands.v1.EthereumKeyRotateSubmission - (*v1.StopOrdersSubmission)(nil), // 120: vega.commands.v1.StopOrdersSubmission - (*v1.StopOrdersCancellation)(nil), // 121: vega.commands.v1.StopOrdersCancellation - (*v1.CreateReferralSet)(nil), // 122: vega.commands.v1.CreateReferralSet - (*v1.UpdateReferralSet)(nil), // 123: vega.commands.v1.UpdateReferralSet - (*v1.ApplyReferralCode)(nil), // 124: vega.commands.v1.ApplyReferralCode - (*v1.UpdateMarginMode)(nil), // 125: vega.commands.v1.UpdateMarginMode - (*v1.JoinTeam)(nil), // 126: vega.commands.v1.JoinTeam - (*v1.BatchProposalSubmission)(nil), // 127: vega.commands.v1.BatchProposalSubmission - (*v1.UpdatePartyProfile)(nil), // 128: vega.commands.v1.UpdatePartyProfile - (vega.EpochAction)(0), // 129: vega.EpochAction - (*vega.LedgerMovement)(nil), // 130: vega.LedgerMovement - (vega.AuctionTrigger)(0), // 131: vega.AuctionTrigger - (*vega.ReferralProgram)(nil), // 132: vega.ReferralProgram - (*vega.VolumeDiscountProgram)(nil), // 133: vega.VolumeDiscountProgram - (vega.MarginMode)(0), // 134: vega.MarginMode - (*vega.PartyProfile)(nil), // 135: vega.PartyProfile - (*vega.Order)(nil), // 136: vega.Order - (*vega.Account)(nil), // 137: vega.Account - (*vega.Party)(nil), // 138: vega.Party - (*vega.Trade)(nil), // 139: vega.Trade - (*vega.MarginLevels)(nil), // 140: vega.MarginLevels - (*vega.Proposal)(nil), // 141: vega.Proposal - (*vega.Vote)(nil), // 142: vega.Vote - (*vega.MarketData)(nil), // 143: vega.MarketData - (*v1.NodeSignature)(nil), // 144: vega.commands.v1.NodeSignature - (*vega.Market)(nil), // 145: vega.Market - (*vega.Asset)(nil), // 146: vega.Asset - (*vega.Withdrawal)(nil), // 147: vega.Withdrawal - (*vega.Deposit)(nil), // 148: vega.Deposit - (*vega.RiskFactor)(nil), // 149: vega.RiskFactor - (*vega.NetworkParameter)(nil), // 150: vega.NetworkParameter - (*vega.LiquidityProvision)(nil), // 151: vega.LiquidityProvision - (*vega.OracleSpec)(nil), // 152: vega.OracleSpec - (*vega.OracleData)(nil), // 153: vega.OracleData - (*vega.NetworkLimits)(nil), // 154: vega.NetworkLimits + (*GamePartyScore)(nil), // 94: vega.events.v1.GamePartyScore + (*GameTeamScore)(nil), // 95: vega.events.v1.GameTeamScore + (*GameScores)(nil), // 96: vega.events.v1.GameScores + (*BusEvent)(nil), // 97: vega.events.v1.BusEvent + (*TransactionResult_SuccessDetails)(nil), // 98: vega.events.v1.TransactionResult.SuccessDetails + (*TransactionResult_FailureDetails)(nil), // 99: vega.events.v1.TransactionResult.FailureDetails + (*v1.OrderSubmission)(nil), // 100: vega.commands.v1.OrderSubmission + (*vega.StopOrder)(nil), // 101: vega.StopOrder + (vega.AccountType)(0), // 102: vega.AccountType + (*vega.DispatchStrategy)(nil), // 103: vega.DispatchStrategy + (*v1.OrderAmendment)(nil), // 104: vega.commands.v1.OrderAmendment + (*v1.OrderCancellation)(nil), // 105: vega.commands.v1.OrderCancellation + (*v1.ProposalSubmission)(nil), // 106: vega.commands.v1.ProposalSubmission + (*v1.VoteSubmission)(nil), // 107: vega.commands.v1.VoteSubmission + (*v1.LiquidityProvisionSubmission)(nil), // 108: vega.commands.v1.LiquidityProvisionSubmission + (*v1.WithdrawSubmission)(nil), // 109: vega.commands.v1.WithdrawSubmission + (*v1.DelegateSubmission)(nil), // 110: vega.commands.v1.DelegateSubmission + (*v1.UndelegateSubmission)(nil), // 111: vega.commands.v1.UndelegateSubmission + (*v1.LiquidityProvisionCancellation)(nil), // 112: vega.commands.v1.LiquidityProvisionCancellation + (*v1.LiquidityProvisionAmendment)(nil), // 113: vega.commands.v1.LiquidityProvisionAmendment + (*v1.Transfer)(nil), // 114: vega.commands.v1.Transfer + (*v1.CancelTransfer)(nil), // 115: vega.commands.v1.CancelTransfer + (*v1.AnnounceNode)(nil), // 116: vega.commands.v1.AnnounceNode + (*v1.OracleDataSubmission)(nil), // 117: vega.commands.v1.OracleDataSubmission + (*v1.ProtocolUpgradeProposal)(nil), // 118: vega.commands.v1.ProtocolUpgradeProposal + (*v1.IssueSignatures)(nil), // 119: vega.commands.v1.IssueSignatures + (*v1.BatchMarketInstructions)(nil), // 120: vega.commands.v1.BatchMarketInstructions + (*v1.KeyRotateSubmission)(nil), // 121: vega.commands.v1.KeyRotateSubmission + (*v1.EthereumKeyRotateSubmission)(nil), // 122: vega.commands.v1.EthereumKeyRotateSubmission + (*v1.StopOrdersSubmission)(nil), // 123: vega.commands.v1.StopOrdersSubmission + (*v1.StopOrdersCancellation)(nil), // 124: vega.commands.v1.StopOrdersCancellation + (*v1.CreateReferralSet)(nil), // 125: vega.commands.v1.CreateReferralSet + (*v1.UpdateReferralSet)(nil), // 126: vega.commands.v1.UpdateReferralSet + (*v1.ApplyReferralCode)(nil), // 127: vega.commands.v1.ApplyReferralCode + (*v1.UpdateMarginMode)(nil), // 128: vega.commands.v1.UpdateMarginMode + (*v1.JoinTeam)(nil), // 129: vega.commands.v1.JoinTeam + (*v1.BatchProposalSubmission)(nil), // 130: vega.commands.v1.BatchProposalSubmission + (*v1.UpdatePartyProfile)(nil), // 131: vega.commands.v1.UpdatePartyProfile + (vega.EpochAction)(0), // 132: vega.EpochAction + (*vega.LedgerMovement)(nil), // 133: vega.LedgerMovement + (vega.AuctionTrigger)(0), // 134: vega.AuctionTrigger + (*vega.ReferralProgram)(nil), // 135: vega.ReferralProgram + (*vega.VolumeDiscountProgram)(nil), // 136: vega.VolumeDiscountProgram + (vega.MarginMode)(0), // 137: vega.MarginMode + (*vega.PartyProfile)(nil), // 138: vega.PartyProfile + (*vega.Order)(nil), // 139: vega.Order + (*vega.Account)(nil), // 140: vega.Account + (*vega.Party)(nil), // 141: vega.Party + (*vega.Trade)(nil), // 142: vega.Trade + (*vega.MarginLevels)(nil), // 143: vega.MarginLevels + (*vega.Proposal)(nil), // 144: vega.Proposal + (*vega.Vote)(nil), // 145: vega.Vote + (*vega.MarketData)(nil), // 146: vega.MarketData + (*v1.NodeSignature)(nil), // 147: vega.commands.v1.NodeSignature + (*vega.Market)(nil), // 148: vega.Market + (*vega.Asset)(nil), // 149: vega.Asset + (*vega.Withdrawal)(nil), // 150: vega.Withdrawal + (*vega.Deposit)(nil), // 151: vega.Deposit + (*vega.RiskFactor)(nil), // 152: vega.RiskFactor + (*vega.NetworkParameter)(nil), // 153: vega.NetworkParameter + (*vega.LiquidityProvision)(nil), // 154: vega.LiquidityProvision + (*vega.OracleSpec)(nil), // 155: vega.OracleSpec + (*vega.OracleData)(nil), // 156: vega.OracleData + (*vega.NetworkLimits)(nil), // 157: vega.NetworkLimits } var file_vega_events_v1_events_proto_depIdxs = []int32{ 9, // 0: vega.events.v1.VestingBalancesSummary.parties_vesting_summary:type_name -> vega.events.v1.PartyVestingSummary @@ -11892,180 +12238,183 @@ var file_vega_events_v1_events_proto_depIdxs = []int32{ 19, // 13: vega.events.v1.MakerFeesGenerated.maker_fees_paid:type_name -> vega.events.v1.PartyAmount 22, // 14: vega.events.v1.FundingPayments.payments:type_name -> vega.events.v1.FundingPayment 2, // 15: vega.events.v1.FundingPeriodDataPoint.data_point_type:type_name -> vega.events.v1.FundingPeriodDataPoint.Source - 97, // 16: vega.events.v1.StopOrderEvent.submission:type_name -> vega.commands.v1.OrderSubmission - 98, // 17: vega.events.v1.StopOrderEvent.stop_order:type_name -> vega.StopOrder + 100, // 16: vega.events.v1.StopOrderEvent.submission:type_name -> vega.commands.v1.OrderSubmission + 101, // 17: vega.events.v1.StopOrderEvent.stop_order:type_name -> vega.StopOrder 27, // 18: vega.events.v1.ERC20MultiSigSignerRemoved.signature_submitters:type_name -> vega.events.v1.ERC20MultiSigSignerRemovedSubmitter - 99, // 19: vega.events.v1.Transfer.from_account_type:type_name -> vega.AccountType - 99, // 20: vega.events.v1.Transfer.to_account_type:type_name -> vega.AccountType + 102, // 19: vega.events.v1.Transfer.from_account_type:type_name -> vega.AccountType + 102, // 20: vega.events.v1.Transfer.to_account_type:type_name -> vega.AccountType 3, // 21: vega.events.v1.Transfer.status:type_name -> vega.events.v1.Transfer.Status 31, // 22: vega.events.v1.Transfer.one_off:type_name -> vega.events.v1.OneOffTransfer 32, // 23: vega.events.v1.Transfer.recurring:type_name -> vega.events.v1.RecurringTransfer 30, // 24: vega.events.v1.Transfer.one_off_governance:type_name -> vega.events.v1.OneOffGovernanceTransfer 33, // 25: vega.events.v1.Transfer.recurring_governance:type_name -> vega.events.v1.RecurringGovernanceTransfer - 100, // 26: vega.events.v1.RecurringTransfer.dispatch_strategy:type_name -> vega.DispatchStrategy - 100, // 27: vega.events.v1.RecurringGovernanceTransfer.dispatch_strategy:type_name -> vega.DispatchStrategy + 103, // 26: vega.events.v1.RecurringTransfer.dispatch_strategy:type_name -> vega.DispatchStrategy + 103, // 27: vega.events.v1.RecurringGovernanceTransfer.dispatch_strategy:type_name -> vega.DispatchStrategy 4, // 28: vega.events.v1.StakeLinking.type:type_name -> vega.events.v1.StakeLinking.Type 5, // 29: vega.events.v1.StakeLinking.status:type_name -> vega.events.v1.StakeLinking.Status 6, // 30: vega.events.v1.ERC20MultiSigSignerEvent.type:type_name -> vega.events.v1.ERC20MultiSigSignerEvent.Type - 97, // 31: vega.events.v1.TransactionResult.order_submission:type_name -> vega.commands.v1.OrderSubmission - 101, // 32: vega.events.v1.TransactionResult.order_amendment:type_name -> vega.commands.v1.OrderAmendment - 102, // 33: vega.events.v1.TransactionResult.order_cancellation:type_name -> vega.commands.v1.OrderCancellation - 103, // 34: vega.events.v1.TransactionResult.proposal:type_name -> vega.commands.v1.ProposalSubmission - 104, // 35: vega.events.v1.TransactionResult.vote_submission:type_name -> vega.commands.v1.VoteSubmission - 105, // 36: vega.events.v1.TransactionResult.liquidity_provision_submission:type_name -> vega.commands.v1.LiquidityProvisionSubmission - 106, // 37: vega.events.v1.TransactionResult.withdraw_submission:type_name -> vega.commands.v1.WithdrawSubmission - 107, // 38: vega.events.v1.TransactionResult.delegate_submission:type_name -> vega.commands.v1.DelegateSubmission - 108, // 39: vega.events.v1.TransactionResult.undelegate_submission:type_name -> vega.commands.v1.UndelegateSubmission - 109, // 40: vega.events.v1.TransactionResult.liquidity_provision_cancellation:type_name -> vega.commands.v1.LiquidityProvisionCancellation - 110, // 41: vega.events.v1.TransactionResult.liquidity_provision_amendment:type_name -> vega.commands.v1.LiquidityProvisionAmendment - 111, // 42: vega.events.v1.TransactionResult.transfer:type_name -> vega.commands.v1.Transfer - 112, // 43: vega.events.v1.TransactionResult.cancel_transfer:type_name -> vega.commands.v1.CancelTransfer - 113, // 44: vega.events.v1.TransactionResult.announce_node:type_name -> vega.commands.v1.AnnounceNode - 114, // 45: vega.events.v1.TransactionResult.oracle_data_submission:type_name -> vega.commands.v1.OracleDataSubmission - 115, // 46: vega.events.v1.TransactionResult.protocol_upgrade_proposal:type_name -> vega.commands.v1.ProtocolUpgradeProposal - 116, // 47: vega.events.v1.TransactionResult.issue_signatures:type_name -> vega.commands.v1.IssueSignatures - 117, // 48: vega.events.v1.TransactionResult.batch_market_instructions:type_name -> vega.commands.v1.BatchMarketInstructions - 118, // 49: vega.events.v1.TransactionResult.key_rotate_submission:type_name -> vega.commands.v1.KeyRotateSubmission - 119, // 50: vega.events.v1.TransactionResult.ethereum_key_rotate_submission:type_name -> vega.commands.v1.EthereumKeyRotateSubmission - 120, // 51: vega.events.v1.TransactionResult.stop_orders_submission:type_name -> vega.commands.v1.StopOrdersSubmission - 121, // 52: vega.events.v1.TransactionResult.stop_orders_cancellation:type_name -> vega.commands.v1.StopOrdersCancellation - 122, // 53: vega.events.v1.TransactionResult.create_referral_set:type_name -> vega.commands.v1.CreateReferralSet - 123, // 54: vega.events.v1.TransactionResult.update_referral_set:type_name -> vega.commands.v1.UpdateReferralSet - 124, // 55: vega.events.v1.TransactionResult.apply_referral_code:type_name -> vega.commands.v1.ApplyReferralCode - 125, // 56: vega.events.v1.TransactionResult.update_margin_mode:type_name -> vega.commands.v1.UpdateMarginMode - 126, // 57: vega.events.v1.TransactionResult.join_team:type_name -> vega.commands.v1.JoinTeam - 127, // 58: vega.events.v1.TransactionResult.batch_proposal:type_name -> vega.commands.v1.BatchProposalSubmission - 128, // 59: vega.events.v1.TransactionResult.update_party_profile:type_name -> vega.commands.v1.UpdatePartyProfile - 95, // 60: vega.events.v1.TransactionResult.success:type_name -> vega.events.v1.TransactionResult.SuccessDetails - 96, // 61: vega.events.v1.TransactionResult.failure:type_name -> vega.events.v1.TransactionResult.FailureDetails - 97, // 62: vega.events.v1.TxErrorEvent.order_submission:type_name -> vega.commands.v1.OrderSubmission - 101, // 63: vega.events.v1.TxErrorEvent.order_amendment:type_name -> vega.commands.v1.OrderAmendment - 102, // 64: vega.events.v1.TxErrorEvent.order_cancellation:type_name -> vega.commands.v1.OrderCancellation - 103, // 65: vega.events.v1.TxErrorEvent.proposal:type_name -> vega.commands.v1.ProposalSubmission - 104, // 66: vega.events.v1.TxErrorEvent.vote_submission:type_name -> vega.commands.v1.VoteSubmission - 105, // 67: vega.events.v1.TxErrorEvent.liquidity_provision_submission:type_name -> vega.commands.v1.LiquidityProvisionSubmission - 106, // 68: vega.events.v1.TxErrorEvent.withdraw_submission:type_name -> vega.commands.v1.WithdrawSubmission - 107, // 69: vega.events.v1.TxErrorEvent.delegate_submission:type_name -> vega.commands.v1.DelegateSubmission - 108, // 70: vega.events.v1.TxErrorEvent.undelegate_submission:type_name -> vega.commands.v1.UndelegateSubmission - 109, // 71: vega.events.v1.TxErrorEvent.liquidity_provision_cancellation:type_name -> vega.commands.v1.LiquidityProvisionCancellation - 110, // 72: vega.events.v1.TxErrorEvent.liquidity_provision_amendment:type_name -> vega.commands.v1.LiquidityProvisionAmendment - 111, // 73: vega.events.v1.TxErrorEvent.transfer:type_name -> vega.commands.v1.Transfer - 112, // 74: vega.events.v1.TxErrorEvent.cancel_transfer:type_name -> vega.commands.v1.CancelTransfer - 113, // 75: vega.events.v1.TxErrorEvent.announce_node:type_name -> vega.commands.v1.AnnounceNode - 114, // 76: vega.events.v1.TxErrorEvent.oracle_data_submission:type_name -> vega.commands.v1.OracleDataSubmission - 115, // 77: vega.events.v1.TxErrorEvent.protocol_upgrade_proposal:type_name -> vega.commands.v1.ProtocolUpgradeProposal - 116, // 78: vega.events.v1.TxErrorEvent.issue_signatures:type_name -> vega.commands.v1.IssueSignatures - 117, // 79: vega.events.v1.TxErrorEvent.batch_market_instructions:type_name -> vega.commands.v1.BatchMarketInstructions - 129, // 80: vega.events.v1.EpochEvent.action:type_name -> vega.EpochAction - 130, // 81: vega.events.v1.LedgerMovements.ledger_movements:type_name -> vega.LedgerMovement + 100, // 31: vega.events.v1.TransactionResult.order_submission:type_name -> vega.commands.v1.OrderSubmission + 104, // 32: vega.events.v1.TransactionResult.order_amendment:type_name -> vega.commands.v1.OrderAmendment + 105, // 33: vega.events.v1.TransactionResult.order_cancellation:type_name -> vega.commands.v1.OrderCancellation + 106, // 34: vega.events.v1.TransactionResult.proposal:type_name -> vega.commands.v1.ProposalSubmission + 107, // 35: vega.events.v1.TransactionResult.vote_submission:type_name -> vega.commands.v1.VoteSubmission + 108, // 36: vega.events.v1.TransactionResult.liquidity_provision_submission:type_name -> vega.commands.v1.LiquidityProvisionSubmission + 109, // 37: vega.events.v1.TransactionResult.withdraw_submission:type_name -> vega.commands.v1.WithdrawSubmission + 110, // 38: vega.events.v1.TransactionResult.delegate_submission:type_name -> vega.commands.v1.DelegateSubmission + 111, // 39: vega.events.v1.TransactionResult.undelegate_submission:type_name -> vega.commands.v1.UndelegateSubmission + 112, // 40: vega.events.v1.TransactionResult.liquidity_provision_cancellation:type_name -> vega.commands.v1.LiquidityProvisionCancellation + 113, // 41: vega.events.v1.TransactionResult.liquidity_provision_amendment:type_name -> vega.commands.v1.LiquidityProvisionAmendment + 114, // 42: vega.events.v1.TransactionResult.transfer:type_name -> vega.commands.v1.Transfer + 115, // 43: vega.events.v1.TransactionResult.cancel_transfer:type_name -> vega.commands.v1.CancelTransfer + 116, // 44: vega.events.v1.TransactionResult.announce_node:type_name -> vega.commands.v1.AnnounceNode + 117, // 45: vega.events.v1.TransactionResult.oracle_data_submission:type_name -> vega.commands.v1.OracleDataSubmission + 118, // 46: vega.events.v1.TransactionResult.protocol_upgrade_proposal:type_name -> vega.commands.v1.ProtocolUpgradeProposal + 119, // 47: vega.events.v1.TransactionResult.issue_signatures:type_name -> vega.commands.v1.IssueSignatures + 120, // 48: vega.events.v1.TransactionResult.batch_market_instructions:type_name -> vega.commands.v1.BatchMarketInstructions + 121, // 49: vega.events.v1.TransactionResult.key_rotate_submission:type_name -> vega.commands.v1.KeyRotateSubmission + 122, // 50: vega.events.v1.TransactionResult.ethereum_key_rotate_submission:type_name -> vega.commands.v1.EthereumKeyRotateSubmission + 123, // 51: vega.events.v1.TransactionResult.stop_orders_submission:type_name -> vega.commands.v1.StopOrdersSubmission + 124, // 52: vega.events.v1.TransactionResult.stop_orders_cancellation:type_name -> vega.commands.v1.StopOrdersCancellation + 125, // 53: vega.events.v1.TransactionResult.create_referral_set:type_name -> vega.commands.v1.CreateReferralSet + 126, // 54: vega.events.v1.TransactionResult.update_referral_set:type_name -> vega.commands.v1.UpdateReferralSet + 127, // 55: vega.events.v1.TransactionResult.apply_referral_code:type_name -> vega.commands.v1.ApplyReferralCode + 128, // 56: vega.events.v1.TransactionResult.update_margin_mode:type_name -> vega.commands.v1.UpdateMarginMode + 129, // 57: vega.events.v1.TransactionResult.join_team:type_name -> vega.commands.v1.JoinTeam + 130, // 58: vega.events.v1.TransactionResult.batch_proposal:type_name -> vega.commands.v1.BatchProposalSubmission + 131, // 59: vega.events.v1.TransactionResult.update_party_profile:type_name -> vega.commands.v1.UpdatePartyProfile + 98, // 60: vega.events.v1.TransactionResult.success:type_name -> vega.events.v1.TransactionResult.SuccessDetails + 99, // 61: vega.events.v1.TransactionResult.failure:type_name -> vega.events.v1.TransactionResult.FailureDetails + 100, // 62: vega.events.v1.TxErrorEvent.order_submission:type_name -> vega.commands.v1.OrderSubmission + 104, // 63: vega.events.v1.TxErrorEvent.order_amendment:type_name -> vega.commands.v1.OrderAmendment + 105, // 64: vega.events.v1.TxErrorEvent.order_cancellation:type_name -> vega.commands.v1.OrderCancellation + 106, // 65: vega.events.v1.TxErrorEvent.proposal:type_name -> vega.commands.v1.ProposalSubmission + 107, // 66: vega.events.v1.TxErrorEvent.vote_submission:type_name -> vega.commands.v1.VoteSubmission + 108, // 67: vega.events.v1.TxErrorEvent.liquidity_provision_submission:type_name -> vega.commands.v1.LiquidityProvisionSubmission + 109, // 68: vega.events.v1.TxErrorEvent.withdraw_submission:type_name -> vega.commands.v1.WithdrawSubmission + 110, // 69: vega.events.v1.TxErrorEvent.delegate_submission:type_name -> vega.commands.v1.DelegateSubmission + 111, // 70: vega.events.v1.TxErrorEvent.undelegate_submission:type_name -> vega.commands.v1.UndelegateSubmission + 112, // 71: vega.events.v1.TxErrorEvent.liquidity_provision_cancellation:type_name -> vega.commands.v1.LiquidityProvisionCancellation + 113, // 72: vega.events.v1.TxErrorEvent.liquidity_provision_amendment:type_name -> vega.commands.v1.LiquidityProvisionAmendment + 114, // 73: vega.events.v1.TxErrorEvent.transfer:type_name -> vega.commands.v1.Transfer + 115, // 74: vega.events.v1.TxErrorEvent.cancel_transfer:type_name -> vega.commands.v1.CancelTransfer + 116, // 75: vega.events.v1.TxErrorEvent.announce_node:type_name -> vega.commands.v1.AnnounceNode + 117, // 76: vega.events.v1.TxErrorEvent.oracle_data_submission:type_name -> vega.commands.v1.OracleDataSubmission + 118, // 77: vega.events.v1.TxErrorEvent.protocol_upgrade_proposal:type_name -> vega.commands.v1.ProtocolUpgradeProposal + 119, // 78: vega.events.v1.TxErrorEvent.issue_signatures:type_name -> vega.commands.v1.IssueSignatures + 120, // 79: vega.events.v1.TxErrorEvent.batch_market_instructions:type_name -> vega.commands.v1.BatchMarketInstructions + 132, // 80: vega.events.v1.EpochEvent.action:type_name -> vega.EpochAction + 133, // 81: vega.events.v1.LedgerMovements.ledger_movements:type_name -> vega.LedgerMovement 52, // 82: vega.events.v1.SettlePosition.trade_settlements:type_name -> vega.events.v1.TradeSettlement - 131, // 83: vega.events.v1.AuctionEvent.trigger:type_name -> vega.AuctionTrigger - 131, // 84: vega.events.v1.AuctionEvent.extension_trigger:type_name -> vega.AuctionTrigger + 134, // 83: vega.events.v1.AuctionEvent.trigger:type_name -> vega.AuctionTrigger + 134, // 84: vega.events.v1.AuctionEvent.extension_trigger:type_name -> vega.AuctionTrigger 0, // 85: vega.events.v1.ProtocolUpgradeEvent.status:type_name -> vega.events.v1.ProtocolUpgradeProposalStatus 80, // 86: vega.events.v1.ReferralSetStatsUpdated.referees_stats:type_name -> vega.events.v1.RefereeStats - 132, // 87: vega.events.v1.ReferralProgramStarted.program:type_name -> vega.ReferralProgram - 132, // 88: vega.events.v1.ReferralProgramUpdated.program:type_name -> vega.ReferralProgram - 133, // 89: vega.events.v1.VolumeDiscountProgramStarted.program:type_name -> vega.VolumeDiscountProgram - 133, // 90: vega.events.v1.VolumeDiscountProgramUpdated.program:type_name -> vega.VolumeDiscountProgram + 135, // 87: vega.events.v1.ReferralProgramStarted.program:type_name -> vega.ReferralProgram + 135, // 88: vega.events.v1.ReferralProgramUpdated.program:type_name -> vega.ReferralProgram + 136, // 89: vega.events.v1.VolumeDiscountProgramStarted.program:type_name -> vega.VolumeDiscountProgram + 136, // 90: vega.events.v1.VolumeDiscountProgramUpdated.program:type_name -> vega.VolumeDiscountProgram 19, // 91: vega.events.v1.PaidLiquidityFeesStats.fees_paid_per_party:type_name -> vega.events.v1.PartyAmount - 134, // 92: vega.events.v1.PartyMarginModeUpdated.margin_mode:type_name -> vega.MarginMode - 135, // 93: vega.events.v1.PartyProfileUpdated.updated_profile:type_name -> vega.PartyProfile + 137, // 92: vega.events.v1.PartyMarginModeUpdated.margin_mode:type_name -> vega.MarginMode + 138, // 93: vega.events.v1.PartyProfileUpdated.updated_profile:type_name -> vega.PartyProfile 92, // 94: vega.events.v1.TeamsStatsUpdated.stats:type_name -> vega.events.v1.TeamStats 93, // 95: vega.events.v1.TeamStats.members_stats:type_name -> vega.events.v1.TeamMemberStats - 1, // 96: vega.events.v1.BusEvent.type:type_name -> vega.events.v1.BusEventType - 47, // 97: vega.events.v1.BusEvent.time_update:type_name -> vega.events.v1.TimeUpdate - 49, // 98: vega.events.v1.BusEvent.ledger_movements:type_name -> vega.events.v1.LedgerMovements - 50, // 99: vega.events.v1.BusEvent.position_resolution:type_name -> vega.events.v1.PositionResolution - 136, // 100: vega.events.v1.BusEvent.order:type_name -> vega.Order - 137, // 101: vega.events.v1.BusEvent.account:type_name -> vega.Account - 138, // 102: vega.events.v1.BusEvent.party:type_name -> vega.Party - 139, // 103: vega.events.v1.BusEvent.trade:type_name -> vega.Trade - 140, // 104: vega.events.v1.BusEvent.margin_levels:type_name -> vega.MarginLevels - 141, // 105: vega.events.v1.BusEvent.proposal:type_name -> vega.Proposal - 142, // 106: vega.events.v1.BusEvent.vote:type_name -> vega.Vote - 143, // 107: vega.events.v1.BusEvent.market_data:type_name -> vega.MarketData - 144, // 108: vega.events.v1.BusEvent.node_signature:type_name -> vega.commands.v1.NodeSignature - 51, // 109: vega.events.v1.BusEvent.loss_socialization:type_name -> vega.events.v1.LossSocialization - 53, // 110: vega.events.v1.BusEvent.settle_position:type_name -> vega.events.v1.SettlePosition - 56, // 111: vega.events.v1.BusEvent.settle_distressed:type_name -> vega.events.v1.SettleDistressed - 145, // 112: vega.events.v1.BusEvent.market_created:type_name -> vega.Market - 146, // 113: vega.events.v1.BusEvent.asset:type_name -> vega.Asset - 59, // 114: vega.events.v1.BusEvent.market_tick:type_name -> vega.events.v1.MarketTick - 147, // 115: vega.events.v1.BusEvent.withdrawal:type_name -> vega.Withdrawal - 148, // 116: vega.events.v1.BusEvent.deposit:type_name -> vega.Deposit - 60, // 117: vega.events.v1.BusEvent.auction:type_name -> vega.events.v1.AuctionEvent - 149, // 118: vega.events.v1.BusEvent.risk_factor:type_name -> vega.RiskFactor - 150, // 119: vega.events.v1.BusEvent.network_parameter:type_name -> vega.NetworkParameter - 151, // 120: vega.events.v1.BusEvent.liquidity_provision:type_name -> vega.LiquidityProvision - 145, // 121: vega.events.v1.BusEvent.market_updated:type_name -> vega.Market - 152, // 122: vega.events.v1.BusEvent.oracle_spec:type_name -> vega.OracleSpec - 153, // 123: vega.events.v1.BusEvent.oracle_data:type_name -> vega.OracleData - 41, // 124: vega.events.v1.BusEvent.delegation_balance:type_name -> vega.events.v1.DelegationBalanceEvent - 40, // 125: vega.events.v1.BusEvent.validator_score:type_name -> vega.events.v1.ValidatorScoreEvent - 48, // 126: vega.events.v1.BusEvent.epoch_event:type_name -> vega.events.v1.EpochEvent - 61, // 127: vega.events.v1.BusEvent.validator_update:type_name -> vega.events.v1.ValidatorUpdate - 34, // 128: vega.events.v1.BusEvent.stake_linking:type_name -> vega.events.v1.StakeLinking - 39, // 129: vega.events.v1.BusEvent.reward_payout:type_name -> vega.events.v1.RewardPayoutEvent - 37, // 130: vega.events.v1.BusEvent.checkpoint:type_name -> vega.events.v1.CheckpointEvent - 63, // 131: vega.events.v1.BusEvent.key_rotation:type_name -> vega.events.v1.KeyRotation - 66, // 132: vega.events.v1.BusEvent.state_var:type_name -> vega.events.v1.StateVar - 154, // 133: vega.events.v1.BusEvent.network_limits:type_name -> vega.NetworkLimits - 29, // 134: vega.events.v1.BusEvent.transfer:type_name -> vega.events.v1.Transfer - 62, // 135: vega.events.v1.BusEvent.ranking_event:type_name -> vega.events.v1.ValidatorRankingEvent - 35, // 136: vega.events.v1.BusEvent.erc20_multisig_signer_event:type_name -> vega.events.v1.ERC20MultiSigSignerEvent - 36, // 137: vega.events.v1.BusEvent.erc20_multisig_set_threshold_event:type_name -> vega.events.v1.ERC20MultiSigThresholdSetEvent - 26, // 138: vega.events.v1.BusEvent.erc20_multisig_signer_added:type_name -> vega.events.v1.ERC20MultiSigSignerAdded - 28, // 139: vega.events.v1.BusEvent.erc20_multisig_signer_removed:type_name -> vega.events.v1.ERC20MultiSigSignerRemoved - 55, // 140: vega.events.v1.BusEvent.position_state_event:type_name -> vega.events.v1.PositionStateEvent - 64, // 141: vega.events.v1.BusEvent.ethereum_key_rotation:type_name -> vega.events.v1.EthereumKeyRotation - 65, // 142: vega.events.v1.BusEvent.protocol_upgrade_event:type_name -> vega.events.v1.ProtocolUpgradeEvent - 67, // 143: vega.events.v1.BusEvent.begin_block:type_name -> vega.events.v1.BeginBlock - 68, // 144: vega.events.v1.BusEvent.end_block:type_name -> vega.events.v1.EndBlock - 69, // 145: vega.events.v1.BusEvent.protocol_upgrade_started:type_name -> vega.events.v1.ProtocolUpgradeStarted - 54, // 146: vega.events.v1.BusEvent.settle_market:type_name -> vega.events.v1.SettleMarket - 45, // 147: vega.events.v1.BusEvent.transaction_result:type_name -> vega.events.v1.TransactionResult - 71, // 148: vega.events.v1.BusEvent.core_snapshot_event:type_name -> vega.events.v1.CoreSnapshotData - 70, // 149: vega.events.v1.BusEvent.protocol_upgrade_data_node_ready:type_name -> vega.events.v1.ProtocolUpgradeDataNodeReady - 57, // 150: vega.events.v1.BusEvent.distressed_orders:type_name -> vega.events.v1.DistressedOrders - 72, // 151: vega.events.v1.BusEvent.expired_orders:type_name -> vega.events.v1.ExpiredOrders - 58, // 152: vega.events.v1.BusEvent.distressed_positions:type_name -> vega.events.v1.DistressedPositions - 25, // 153: vega.events.v1.BusEvent.stop_order:type_name -> vega.events.v1.StopOrderEvent - 21, // 154: vega.events.v1.BusEvent.funding_period:type_name -> vega.events.v1.FundingPeriod - 24, // 155: vega.events.v1.BusEvent.funding_period_data_point:type_name -> vega.events.v1.FundingPeriodDataPoint - 74, // 156: vega.events.v1.BusEvent.team_created:type_name -> vega.events.v1.TeamCreated - 75, // 157: vega.events.v1.BusEvent.team_updated:type_name -> vega.events.v1.TeamUpdated - 76, // 158: vega.events.v1.BusEvent.referee_switched_team:type_name -> vega.events.v1.RefereeSwitchedTeam - 77, // 159: vega.events.v1.BusEvent.referee_joined_team:type_name -> vega.events.v1.RefereeJoinedTeam - 82, // 160: vega.events.v1.BusEvent.referral_program_started:type_name -> vega.events.v1.ReferralProgramStarted - 83, // 161: vega.events.v1.BusEvent.referral_program_updated:type_name -> vega.events.v1.ReferralProgramUpdated - 84, // 162: vega.events.v1.BusEvent.referral_program_ended:type_name -> vega.events.v1.ReferralProgramEnded - 78, // 163: vega.events.v1.BusEvent.referral_set_created:type_name -> vega.events.v1.ReferralSetCreated - 81, // 164: vega.events.v1.BusEvent.referee_joined_referral_set:type_name -> vega.events.v1.RefereeJoinedReferralSet - 20, // 165: vega.events.v1.BusEvent.party_activity_streak:type_name -> vega.events.v1.PartyActivityStreak - 85, // 166: vega.events.v1.BusEvent.volume_discount_program_started:type_name -> vega.events.v1.VolumeDiscountProgramStarted - 86, // 167: vega.events.v1.BusEvent.volume_discount_program_updated:type_name -> vega.events.v1.VolumeDiscountProgramUpdated - 87, // 168: vega.events.v1.BusEvent.volume_discount_program_ended:type_name -> vega.events.v1.VolumeDiscountProgramEnded - 79, // 169: vega.events.v1.BusEvent.referral_set_stats_updated:type_name -> vega.events.v1.ReferralSetStatsUpdated - 14, // 170: vega.events.v1.BusEvent.vesting_stats_updated:type_name -> vega.events.v1.VestingStatsUpdated - 12, // 171: vega.events.v1.BusEvent.volume_discount_stats_updated:type_name -> vega.events.v1.VolumeDiscountStatsUpdated - 16, // 172: vega.events.v1.BusEvent.fees_stats:type_name -> vega.events.v1.FeesStats - 23, // 173: vega.events.v1.BusEvent.funding_payments:type_name -> vega.events.v1.FundingPayments - 88, // 174: vega.events.v1.BusEvent.paid_liquidity_fees_stats:type_name -> vega.events.v1.PaidLiquidityFeesStats - 8, // 175: vega.events.v1.BusEvent.vesting_balances_summary:type_name -> vega.events.v1.VestingBalancesSummary - 43, // 176: vega.events.v1.BusEvent.transfer_fees:type_name -> vega.events.v1.TransferFees - 44, // 177: vega.events.v1.BusEvent.transfer_fees_discount:type_name -> vega.events.v1.TransferFeesDiscount - 89, // 178: vega.events.v1.BusEvent.party_margin_mode_updated:type_name -> vega.events.v1.PartyMarginModeUpdated - 90, // 179: vega.events.v1.BusEvent.party_profile_updated:type_name -> vega.events.v1.PartyProfileUpdated - 91, // 180: vega.events.v1.BusEvent.teams_stats_updated:type_name -> vega.events.v1.TeamsStatsUpdated - 7, // 181: vega.events.v1.BusEvent.time_weighted_notional_position_updated:type_name -> vega.events.v1.TimeWeightedNotionalPositionUpdated - 73, // 182: vega.events.v1.BusEvent.cancelled_orders:type_name -> vega.events.v1.CancelledOrders - 42, // 183: vega.events.v1.BusEvent.market:type_name -> vega.events.v1.MarketEvent - 46, // 184: vega.events.v1.BusEvent.tx_err_event:type_name -> vega.events.v1.TxErrorEvent - 185, // [185:185] is the sub-list for method output_type - 185, // [185:185] is the sub-list for method input_type - 185, // [185:185] is the sub-list for extension type_name - 185, // [185:185] is the sub-list for extension extendee - 0, // [0:185] is the sub-list for field type_name + 95, // 96: vega.events.v1.GameScores.team_scores:type_name -> vega.events.v1.GameTeamScore + 94, // 97: vega.events.v1.GameScores.party_scores:type_name -> vega.events.v1.GamePartyScore + 1, // 98: vega.events.v1.BusEvent.type:type_name -> vega.events.v1.BusEventType + 47, // 99: vega.events.v1.BusEvent.time_update:type_name -> vega.events.v1.TimeUpdate + 49, // 100: vega.events.v1.BusEvent.ledger_movements:type_name -> vega.events.v1.LedgerMovements + 50, // 101: vega.events.v1.BusEvent.position_resolution:type_name -> vega.events.v1.PositionResolution + 139, // 102: vega.events.v1.BusEvent.order:type_name -> vega.Order + 140, // 103: vega.events.v1.BusEvent.account:type_name -> vega.Account + 141, // 104: vega.events.v1.BusEvent.party:type_name -> vega.Party + 142, // 105: vega.events.v1.BusEvent.trade:type_name -> vega.Trade + 143, // 106: vega.events.v1.BusEvent.margin_levels:type_name -> vega.MarginLevels + 144, // 107: vega.events.v1.BusEvent.proposal:type_name -> vega.Proposal + 145, // 108: vega.events.v1.BusEvent.vote:type_name -> vega.Vote + 146, // 109: vega.events.v1.BusEvent.market_data:type_name -> vega.MarketData + 147, // 110: vega.events.v1.BusEvent.node_signature:type_name -> vega.commands.v1.NodeSignature + 51, // 111: vega.events.v1.BusEvent.loss_socialization:type_name -> vega.events.v1.LossSocialization + 53, // 112: vega.events.v1.BusEvent.settle_position:type_name -> vega.events.v1.SettlePosition + 56, // 113: vega.events.v1.BusEvent.settle_distressed:type_name -> vega.events.v1.SettleDistressed + 148, // 114: vega.events.v1.BusEvent.market_created:type_name -> vega.Market + 149, // 115: vega.events.v1.BusEvent.asset:type_name -> vega.Asset + 59, // 116: vega.events.v1.BusEvent.market_tick:type_name -> vega.events.v1.MarketTick + 150, // 117: vega.events.v1.BusEvent.withdrawal:type_name -> vega.Withdrawal + 151, // 118: vega.events.v1.BusEvent.deposit:type_name -> vega.Deposit + 60, // 119: vega.events.v1.BusEvent.auction:type_name -> vega.events.v1.AuctionEvent + 152, // 120: vega.events.v1.BusEvent.risk_factor:type_name -> vega.RiskFactor + 153, // 121: vega.events.v1.BusEvent.network_parameter:type_name -> vega.NetworkParameter + 154, // 122: vega.events.v1.BusEvent.liquidity_provision:type_name -> vega.LiquidityProvision + 148, // 123: vega.events.v1.BusEvent.market_updated:type_name -> vega.Market + 155, // 124: vega.events.v1.BusEvent.oracle_spec:type_name -> vega.OracleSpec + 156, // 125: vega.events.v1.BusEvent.oracle_data:type_name -> vega.OracleData + 41, // 126: vega.events.v1.BusEvent.delegation_balance:type_name -> vega.events.v1.DelegationBalanceEvent + 40, // 127: vega.events.v1.BusEvent.validator_score:type_name -> vega.events.v1.ValidatorScoreEvent + 48, // 128: vega.events.v1.BusEvent.epoch_event:type_name -> vega.events.v1.EpochEvent + 61, // 129: vega.events.v1.BusEvent.validator_update:type_name -> vega.events.v1.ValidatorUpdate + 34, // 130: vega.events.v1.BusEvent.stake_linking:type_name -> vega.events.v1.StakeLinking + 39, // 131: vega.events.v1.BusEvent.reward_payout:type_name -> vega.events.v1.RewardPayoutEvent + 37, // 132: vega.events.v1.BusEvent.checkpoint:type_name -> vega.events.v1.CheckpointEvent + 63, // 133: vega.events.v1.BusEvent.key_rotation:type_name -> vega.events.v1.KeyRotation + 66, // 134: vega.events.v1.BusEvent.state_var:type_name -> vega.events.v1.StateVar + 157, // 135: vega.events.v1.BusEvent.network_limits:type_name -> vega.NetworkLimits + 29, // 136: vega.events.v1.BusEvent.transfer:type_name -> vega.events.v1.Transfer + 62, // 137: vega.events.v1.BusEvent.ranking_event:type_name -> vega.events.v1.ValidatorRankingEvent + 35, // 138: vega.events.v1.BusEvent.erc20_multisig_signer_event:type_name -> vega.events.v1.ERC20MultiSigSignerEvent + 36, // 139: vega.events.v1.BusEvent.erc20_multisig_set_threshold_event:type_name -> vega.events.v1.ERC20MultiSigThresholdSetEvent + 26, // 140: vega.events.v1.BusEvent.erc20_multisig_signer_added:type_name -> vega.events.v1.ERC20MultiSigSignerAdded + 28, // 141: vega.events.v1.BusEvent.erc20_multisig_signer_removed:type_name -> vega.events.v1.ERC20MultiSigSignerRemoved + 55, // 142: vega.events.v1.BusEvent.position_state_event:type_name -> vega.events.v1.PositionStateEvent + 64, // 143: vega.events.v1.BusEvent.ethereum_key_rotation:type_name -> vega.events.v1.EthereumKeyRotation + 65, // 144: vega.events.v1.BusEvent.protocol_upgrade_event:type_name -> vega.events.v1.ProtocolUpgradeEvent + 67, // 145: vega.events.v1.BusEvent.begin_block:type_name -> vega.events.v1.BeginBlock + 68, // 146: vega.events.v1.BusEvent.end_block:type_name -> vega.events.v1.EndBlock + 69, // 147: vega.events.v1.BusEvent.protocol_upgrade_started:type_name -> vega.events.v1.ProtocolUpgradeStarted + 54, // 148: vega.events.v1.BusEvent.settle_market:type_name -> vega.events.v1.SettleMarket + 45, // 149: vega.events.v1.BusEvent.transaction_result:type_name -> vega.events.v1.TransactionResult + 71, // 150: vega.events.v1.BusEvent.core_snapshot_event:type_name -> vega.events.v1.CoreSnapshotData + 70, // 151: vega.events.v1.BusEvent.protocol_upgrade_data_node_ready:type_name -> vega.events.v1.ProtocolUpgradeDataNodeReady + 57, // 152: vega.events.v1.BusEvent.distressed_orders:type_name -> vega.events.v1.DistressedOrders + 72, // 153: vega.events.v1.BusEvent.expired_orders:type_name -> vega.events.v1.ExpiredOrders + 58, // 154: vega.events.v1.BusEvent.distressed_positions:type_name -> vega.events.v1.DistressedPositions + 25, // 155: vega.events.v1.BusEvent.stop_order:type_name -> vega.events.v1.StopOrderEvent + 21, // 156: vega.events.v1.BusEvent.funding_period:type_name -> vega.events.v1.FundingPeriod + 24, // 157: vega.events.v1.BusEvent.funding_period_data_point:type_name -> vega.events.v1.FundingPeriodDataPoint + 74, // 158: vega.events.v1.BusEvent.team_created:type_name -> vega.events.v1.TeamCreated + 75, // 159: vega.events.v1.BusEvent.team_updated:type_name -> vega.events.v1.TeamUpdated + 76, // 160: vega.events.v1.BusEvent.referee_switched_team:type_name -> vega.events.v1.RefereeSwitchedTeam + 77, // 161: vega.events.v1.BusEvent.referee_joined_team:type_name -> vega.events.v1.RefereeJoinedTeam + 82, // 162: vega.events.v1.BusEvent.referral_program_started:type_name -> vega.events.v1.ReferralProgramStarted + 83, // 163: vega.events.v1.BusEvent.referral_program_updated:type_name -> vega.events.v1.ReferralProgramUpdated + 84, // 164: vega.events.v1.BusEvent.referral_program_ended:type_name -> vega.events.v1.ReferralProgramEnded + 78, // 165: vega.events.v1.BusEvent.referral_set_created:type_name -> vega.events.v1.ReferralSetCreated + 81, // 166: vega.events.v1.BusEvent.referee_joined_referral_set:type_name -> vega.events.v1.RefereeJoinedReferralSet + 20, // 167: vega.events.v1.BusEvent.party_activity_streak:type_name -> vega.events.v1.PartyActivityStreak + 85, // 168: vega.events.v1.BusEvent.volume_discount_program_started:type_name -> vega.events.v1.VolumeDiscountProgramStarted + 86, // 169: vega.events.v1.BusEvent.volume_discount_program_updated:type_name -> vega.events.v1.VolumeDiscountProgramUpdated + 87, // 170: vega.events.v1.BusEvent.volume_discount_program_ended:type_name -> vega.events.v1.VolumeDiscountProgramEnded + 79, // 171: vega.events.v1.BusEvent.referral_set_stats_updated:type_name -> vega.events.v1.ReferralSetStatsUpdated + 14, // 172: vega.events.v1.BusEvent.vesting_stats_updated:type_name -> vega.events.v1.VestingStatsUpdated + 12, // 173: vega.events.v1.BusEvent.volume_discount_stats_updated:type_name -> vega.events.v1.VolumeDiscountStatsUpdated + 16, // 174: vega.events.v1.BusEvent.fees_stats:type_name -> vega.events.v1.FeesStats + 23, // 175: vega.events.v1.BusEvent.funding_payments:type_name -> vega.events.v1.FundingPayments + 88, // 176: vega.events.v1.BusEvent.paid_liquidity_fees_stats:type_name -> vega.events.v1.PaidLiquidityFeesStats + 8, // 177: vega.events.v1.BusEvent.vesting_balances_summary:type_name -> vega.events.v1.VestingBalancesSummary + 43, // 178: vega.events.v1.BusEvent.transfer_fees:type_name -> vega.events.v1.TransferFees + 44, // 179: vega.events.v1.BusEvent.transfer_fees_discount:type_name -> vega.events.v1.TransferFeesDiscount + 89, // 180: vega.events.v1.BusEvent.party_margin_mode_updated:type_name -> vega.events.v1.PartyMarginModeUpdated + 90, // 181: vega.events.v1.BusEvent.party_profile_updated:type_name -> vega.events.v1.PartyProfileUpdated + 91, // 182: vega.events.v1.BusEvent.teams_stats_updated:type_name -> vega.events.v1.TeamsStatsUpdated + 7, // 183: vega.events.v1.BusEvent.time_weighted_notional_position_updated:type_name -> vega.events.v1.TimeWeightedNotionalPositionUpdated + 73, // 184: vega.events.v1.BusEvent.cancelled_orders:type_name -> vega.events.v1.CancelledOrders + 96, // 185: vega.events.v1.BusEvent.game_scores:type_name -> vega.events.v1.GameScores + 42, // 186: vega.events.v1.BusEvent.market:type_name -> vega.events.v1.MarketEvent + 46, // 187: vega.events.v1.BusEvent.tx_err_event:type_name -> vega.events.v1.TxErrorEvent + 188, // [188:188] is the sub-list for method output_type + 188, // [188:188] is the sub-list for method input_type + 188, // [188:188] is the sub-list for extension type_name + 188, // [188:188] is the sub-list for extension extendee + 0, // [0:188] is the sub-list for field type_name } func init() { file_vega_events_v1_events_proto_init() } @@ -13119,7 +13468,7 @@ func file_vega_events_v1_events_proto_init() { } } file_vega_events_v1_events_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BusEvent); i { + switch v := v.(*GamePartyScore); i { case 0: return &v.state case 1: @@ -13131,7 +13480,7 @@ func file_vega_events_v1_events_proto_init() { } } file_vega_events_v1_events_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TransactionResult_SuccessDetails); i { + switch v := v.(*GameTeamScore); i { case 0: return &v.state case 1: @@ -13143,6 +13492,42 @@ func file_vega_events_v1_events_proto_init() { } } file_vega_events_v1_events_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GameScores); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_vega_events_v1_events_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*BusEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_vega_events_v1_events_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TransactionResult_SuccessDetails); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_vega_events_v1_events_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TransactionResult_FailureDetails); i { case 0: return &v.state @@ -13221,7 +13606,8 @@ func file_vega_events_v1_events_proto_init() { file_vega_events_v1_events_proto_msgTypes[67].OneofWrappers = []interface{}{} file_vega_events_v1_events_proto_msgTypes[68].OneofWrappers = []interface{}{} file_vega_events_v1_events_proto_msgTypes[82].OneofWrappers = []interface{}{} - file_vega_events_v1_events_proto_msgTypes[87].OneofWrappers = []interface{}{ + file_vega_events_v1_events_proto_msgTypes[87].OneofWrappers = []interface{}{} + file_vega_events_v1_events_proto_msgTypes[90].OneofWrappers = []interface{}{ (*BusEvent_TimeUpdate)(nil), (*BusEvent_LedgerMovements)(nil), (*BusEvent_PositionResolution)(nil), @@ -13308,6 +13694,7 @@ func file_vega_events_v1_events_proto_init() { (*BusEvent_TeamsStatsUpdated)(nil), (*BusEvent_TimeWeightedNotionalPositionUpdated)(nil), (*BusEvent_CancelledOrders)(nil), + (*BusEvent_GameScores)(nil), (*BusEvent_Market)(nil), (*BusEvent_TxErrEvent)(nil), } @@ -13317,7 +13704,7 @@ func file_vega_events_v1_events_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_vega_events_v1_events_proto_rawDesc, NumEnums: 7, - NumMessages: 90, + NumMessages: 93, NumExtensions: 0, NumServices: 0, }, diff --git a/protos/vega/snapshot/v1/snapshot.pb.go b/protos/vega/snapshot/v1/snapshot.pb.go index 0c2bd030d79..cdb71dcad43 100644 --- a/protos/vega/snapshot/v1/snapshot.pb.go +++ b/protos/vega/snapshot/v1/snapshot.pb.go @@ -3137,6 +3137,7 @@ type BankingRecurringTransfers struct { unknownFields protoimpl.UnknownFields RecurringTransfers *v11.RecurringTransfers `protobuf:"bytes,1,opt,name=recurring_transfers,json=recurringTransfers,proto3" json:"recurring_transfers,omitempty"` + NextMetricUpdate int64 `protobuf:"varint,2,opt,name=next_metric_update,json=nextMetricUpdate,proto3" json:"next_metric_update,omitempty"` } func (x *BankingRecurringTransfers) Reset() { @@ -3178,6 +3179,13 @@ func (x *BankingRecurringTransfers) GetRecurringTransfers() *v11.RecurringTransf return nil } +func (x *BankingRecurringTransfers) GetNextMetricUpdate() int64 { + if x != nil { + return x.NextMetricUpdate + } + return 0 +} + type BankingScheduledTransfers struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -14518,1886 +14526,1889 @@ var file_vega_snapshot_v1_snapshot_proto_rawDesc = []byte{ 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, - 0x61, 0x73, 0x73, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x74, 0x0a, 0x19, 0x42, - 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x63, 0x75, 0x72, 0x72, 0x69, 0x6e, 0x67, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0x57, 0x0a, 0x13, 0x72, 0x65, 0x63, 0x75, - 0x72, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, - 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x75, 0x72, - 0x72, 0x69, 0x6e, 0x67, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x52, 0x12, 0x72, - 0x65, 0x63, 0x75, 0x72, 0x72, 0x69, 0x6e, 0x67, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, - 0x73, 0x22, 0x74, 0x0a, 0x19, 0x42, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x53, 0x63, 0x68, 0x65, - 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0x57, + 0x61, 0x73, 0x73, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa2, 0x01, 0x0a, 0x19, + 0x42, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x63, 0x75, 0x72, 0x72, 0x69, 0x6e, 0x67, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0x57, 0x0a, 0x13, 0x72, 0x65, 0x63, + 0x75, 0x72, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, + 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x75, + 0x72, 0x72, 0x69, 0x6e, 0x67, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x52, 0x12, + 0x72, 0x65, 0x63, 0x75, 0x72, 0x72, 0x69, 0x6e, 0x67, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, + 0x72, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, + 0x6e, 0x65, 0x78, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x22, 0x74, 0x0a, 0x19, 0x42, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x53, 0x63, 0x68, 0x65, 0x64, + 0x75, 0x6c, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0x57, 0x0a, + 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x5f, 0x61, 0x74, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, + 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x41, + 0x74, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, + 0x41, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x7e, 0x0a, 0x23, 0x42, 0x61, 0x6e, 0x6b, 0x69, 0x6e, + 0x67, 0x52, 0x65, 0x63, 0x75, 0x72, 0x72, 0x69, 0x6e, 0x67, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, + 0x61, 0x6e, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0x57, 0x0a, + 0x13, 0x72, 0x65, 0x63, 0x75, 0x72, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x66, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x76, 0x65, 0x67, + 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, + 0x65, 0x72, 0x52, 0x12, 0x72, 0x65, 0x63, 0x75, 0x72, 0x72, 0x69, 0x6e, 0x67, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x22, 0x88, 0x01, 0x0a, 0x23, 0x42, 0x61, 0x6e, 0x6b, 0x69, + 0x6e, 0x67, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x47, 0x6f, 0x76, 0x65, 0x72, + 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0x61, 0x0a, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x5f, 0x61, 0x74, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x76, 0x65, 0x67, 0x61, + 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, - 0x41, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, - 0x73, 0x41, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x7e, 0x0a, 0x23, 0x42, 0x61, 0x6e, 0x6b, 0x69, - 0x6e, 0x67, 0x52, 0x65, 0x63, 0x75, 0x72, 0x72, 0x69, 0x6e, 0x67, 0x47, 0x6f, 0x76, 0x65, 0x72, - 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, 0x57, - 0x0a, 0x13, 0x72, 0x65, 0x63, 0x75, 0x72, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x66, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x76, 0x65, - 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x66, 0x65, 0x72, 0x52, 0x12, 0x72, 0x65, 0x63, 0x75, 0x72, 0x72, 0x69, 0x6e, 0x67, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x22, 0x88, 0x01, 0x0a, 0x23, 0x42, 0x61, 0x6e, 0x6b, - 0x69, 0x6e, 0x67, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x47, 0x6f, 0x76, 0x65, - 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x12, - 0x61, 0x0a, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x5f, 0x61, 0x74, 0x5f, - 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x76, 0x65, 0x67, - 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, - 0x6e, 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x41, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x41, 0x74, 0x54, 0x69, - 0x6d, 0x65, 0x22, 0x58, 0x0a, 0x12, 0x42, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x42, 0x72, 0x69, - 0x64, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x42, 0x0a, 0x0c, 0x62, 0x72, 0x69, 0x64, - 0x67, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, - 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, - 0x0b, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x5e, 0x0a, 0x16, - 0x42, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x45, 0x56, 0x4d, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x12, 0x44, 0x0a, 0x0d, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, - 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, + 0x63, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x41, 0x74, 0x54, 0x69, 0x6d, 0x65, + 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x73, 0x41, 0x74, 0x54, 0x69, 0x6d, + 0x65, 0x22, 0x58, 0x0a, 0x12, 0x42, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x42, 0x72, 0x69, 0x64, + 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x42, 0x0a, 0x0c, 0x62, 0x72, 0x69, 0x64, 0x67, + 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, - 0x76, 0x31, 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0c, - 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x22, 0x25, 0x0a, 0x0a, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x65, - 0x78, 0x74, 0x5f, 0x63, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6e, 0x65, 0x78, - 0x74, 0x43, 0x70, 0x22, 0x5c, 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x4c, 0x61, 0x73, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x69, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x18, 0x6c, 0x61, 0x73, 0x74, 0x5f, - 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x16, 0x6c, 0x61, 0x73, 0x74, 0x52, - 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, - 0x65, 0x22, 0x46, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x32, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, - 0x61, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x64, 0x65, - 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x7d, 0x0a, 0x11, 0x44, 0x65, 0x6c, - 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x32, - 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x67, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x34, 0x0a, 0x0c, 0x75, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x75, 0x6e, 0x64, 0x65, - 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x2a, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, - 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x75, 0x74, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, - 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, - 0x74, 0x69, 0x65, 0x73, 0x22, 0x9a, 0x01, 0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, - 0x6c, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, - 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50, - 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, - 0x6c, 0x12, 0x1c, 0x0a, 0x03, 0x79, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, - 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x56, 0x6f, 0x74, 0x65, 0x52, 0x03, 0x79, 0x65, 0x73, 0x12, - 0x1a, 0x0a, 0x02, 0x6e, 0x6f, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x76, 0x65, - 0x67, 0x61, 0x2e, 0x56, 0x6f, 0x74, 0x65, 0x52, 0x02, 0x6e, 0x6f, 0x12, 0x24, 0x0a, 0x07, 0x69, - 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x76, - 0x65, 0x67, 0x61, 0x2e, 0x56, 0x6f, 0x74, 0x65, 0x52, 0x07, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, - 0x64, 0x22, 0x51, 0x0a, 0x11, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x45, - 0x6e, 0x61, 0x63, 0x74, 0x65, 0x64, 0x12, 0x3c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, - 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x76, 0x65, 0x67, 0x61, - 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, - 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x6f, - 0x73, 0x61, 0x6c, 0x73, 0x22, 0x50, 0x0a, 0x10, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, - 0x63, 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x3c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, - 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x76, 0x65, - 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, - 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x70, 0x72, 0x6f, - 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x22, 0x88, 0x01, 0x0a, 0x11, 0x42, 0x61, 0x74, 0x63, 0x68, - 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x12, 0x45, 0x0a, 0x0e, - 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, - 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, - 0x44, 0x61, 0x74, 0x61, 0x52, 0x0d, 0x62, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x70, 0x6f, - 0x73, 0x61, 0x6c, 0x12, 0x2c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50, 0x72, - 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, - 0x73, 0x22, 0x65, 0x0a, 0x15, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x42, - 0x61, 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x4c, 0x0a, 0x0f, 0x62, 0x61, - 0x74, 0x63, 0x68, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, - 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x70, - 0x6f, 0x73, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0e, 0x62, 0x61, 0x74, 0x63, 0x68, 0x50, - 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x22, 0xd8, 0x01, 0x0a, 0x0e, 0x47, 0x6f, 0x76, - 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x2c, 0x0a, 0x09, 0x70, - 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, - 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x09, - 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x12, 0x43, 0x0a, 0x0d, 0x70, 0x72, 0x6f, - 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, - 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x12, 0x53, - 0x0a, 0x13, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, - 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x65, - 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x42, - 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, - 0x52, 0x11, 0x62, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x44, - 0x61, 0x74, 0x61, 0x22, 0x76, 0x0a, 0x0e, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x41, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x62, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x34, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x4c, 0x69, 0x6e, 0x6b, - 0x69, 0x6e, 0x67, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xe1, 0x01, 0x0a, 0x0f, - 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, - 0x3c, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, - 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x52, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x3b, 0x0a, - 0x1a, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x17, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x41, 0x73, 0x73, 0x65, 0x74, 0x54, - 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x12, 0x53, 0x0a, 0x1a, 0x70, 0x65, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x74, 0x6f, 0x74, 0x61, - 0x6c, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x54, 0x6f, 0x74, 0x61, 0x6c, - 0x53, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x17, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, - 0x74, 0x61, 0x6b, 0x65, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x22, - 0xf6, 0x01, 0x0a, 0x0c, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x6f, 0x6b, - 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, - 0x03, 0x62, 0x75, 0x79, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, 0x67, - 0x61, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x03, 0x62, 0x75, 0x79, 0x12, 0x1f, 0x0a, 0x04, - 0x73, 0x65, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, 0x67, - 0x61, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x04, 0x73, 0x65, 0x6c, 0x6c, 0x12, 0x2a, 0x0a, - 0x11, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x69, - 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x72, - 0x61, 0x64, 0x65, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x75, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x61, 0x75, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x62, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x28, - 0x0a, 0x10, 0x70, 0x65, 0x67, 0x67, 0x65, 0x64, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x69, - 0x64, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x65, 0x67, 0x67, 0x65, 0x64, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x3b, 0x0a, 0x09, 0x4e, 0x65, 0x74, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2e, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x06, 0x70, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x30, 0x0a, 0x0a, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, - 0x4d, 0x61, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, 0x35, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x50, - 0x72, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x22, 0x3b, - 0x0a, 0x0b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, - 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x22, 0x42, 0x0a, 0x0a, 0x50, - 0x72, 0x69, 0x63, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x69, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6d, - 0x61, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x61, 0x78, 0x12, 0x10, 0x0a, - 0x03, 0x72, 0x65, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x72, 0x65, 0x66, 0x22, - 0x9a, 0x01, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x63, 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x16, - 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, - 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x70, 0x5f, 0x66, 0x61, 0x63, - 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x70, 0x46, 0x61, 0x63, - 0x74, 0x6f, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x66, 0x61, 0x63, 0x74, - 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x6f, 0x77, 0x6e, 0x46, 0x61, - 0x63, 0x74, 0x6f, 0x72, 0x12, 0x36, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50, 0x72, 0x69, - 0x63, 0x65, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x54, 0x72, 0x69, 0x67, - 0x67, 0x65, 0x72, 0x52, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x22, 0x9a, 0x01, 0x0a, - 0x0f, 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, - 0x12, 0x32, 0x0a, 0x05, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, - 0x76, 0x31, 0x2e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x05, 0x62, - 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x32, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, - 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, 0x61, 0x6e, 0x67, - 0x65, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x6f, 0x75, 0x6e, - 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x62, - 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x3c, 0x0a, 0x0c, 0x43, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, - 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x22, 0x53, 0x0a, 0x09, 0x50, 0x61, 0x73, 0x74, 0x50, - 0x72, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x76, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x63, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x57, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x22, 0xf4, 0x04, 0x0a, - 0x0c, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x12, 0x20, 0x0a, - 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x73, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x73, 0x65, 0x64, 0x12, - 0x3d, 0x0a, 0x0b, 0x66, 0x70, 0x5f, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x73, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, - 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x4d, - 0x61, 0x70, 0x52, 0x0a, 0x66, 0x70, 0x48, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x73, 0x12, 0x10, - 0x0a, 0x03, 0x6e, 0x6f, 0x77, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6e, 0x6f, 0x77, - 0x12, 0x16, 0x0a, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x06, 0x62, 0x6f, 0x75, 0x6e, - 0x64, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, - 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x69, 0x63, - 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x06, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x12, 0x33, - 0x0a, 0x16, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x63, 0x61, - 0x63, 0x68, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, - 0x70, 0x72, 0x69, 0x63, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x4d, 0x0a, 0x11, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x72, 0x61, 0x6e, - 0x67, 0x65, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, + 0x76, 0x31, 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0b, + 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x5e, 0x0a, 0x16, 0x42, + 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x45, 0x56, 0x4d, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x73, 0x12, 0x44, 0x0a, 0x0d, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, + 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, + 0x31, 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x62, + 0x72, 0x69, 0x64, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x22, 0x25, 0x0a, 0x0a, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x65, 0x78, + 0x74, 0x5f, 0x63, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6e, 0x65, 0x78, 0x74, + 0x43, 0x70, 0x22, 0x5c, 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4c, 0x61, 0x73, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x69, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x18, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x72, + 0x65, 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x16, 0x6c, 0x61, 0x73, 0x74, 0x52, 0x65, + 0x63, 0x6f, 0x6e, 0x63, 0x69, 0x6c, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, + 0x22, 0x46, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x12, 0x32, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x64, 0x65, 0x6c, + 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x7d, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, + 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x32, 0x0a, + 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x34, 0x0a, 0x0c, 0x75, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x75, 0x6e, 0x64, 0x65, 0x6c, + 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x2a, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x67, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x75, 0x74, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x72, + 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, + 0x69, 0x65, 0x73, 0x22, 0x9a, 0x01, 0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, + 0x44, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50, 0x72, + 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, + 0x12, 0x1c, 0x0a, 0x03, 0x79, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, + 0x76, 0x65, 0x67, 0x61, 0x2e, 0x56, 0x6f, 0x74, 0x65, 0x52, 0x03, 0x79, 0x65, 0x73, 0x12, 0x1a, + 0x0a, 0x02, 0x6e, 0x6f, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x76, 0x65, 0x67, + 0x61, 0x2e, 0x56, 0x6f, 0x74, 0x65, 0x52, 0x02, 0x6e, 0x6f, 0x12, 0x24, 0x0a, 0x07, 0x69, 0x6e, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x76, 0x65, + 0x67, 0x61, 0x2e, 0x56, 0x6f, 0x74, 0x65, 0x52, 0x07, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x22, 0x51, 0x0a, 0x11, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x45, 0x6e, + 0x61, 0x63, 0x74, 0x65, 0x64, 0x12, 0x3c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, + 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, + 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, + 0x6f, 0x73, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x61, 0x6c, 0x73, 0x22, 0x50, 0x0a, 0x10, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, + 0x65, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x3c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x6f, + 0x73, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x76, 0x65, 0x67, + 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, + 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x70, + 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x22, 0x88, 0x01, 0x0a, 0x11, 0x42, 0x61, 0x74, 0x63, 0x68, 0x50, + 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x12, 0x45, 0x0a, 0x0e, 0x62, + 0x61, 0x74, 0x63, 0x68, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, + 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x0d, 0x62, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x61, 0x6c, 0x12, 0x2c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50, 0x72, 0x6f, + 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, + 0x22, 0x65, 0x0a, 0x15, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x61, + 0x74, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x4c, 0x0a, 0x0f, 0x62, 0x61, 0x74, + 0x63, 0x68, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, + 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x70, 0x6f, + 0x73, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0e, 0x62, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, + 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x22, 0xd8, 0x01, 0x0a, 0x0e, 0x47, 0x6f, 0x76, 0x65, + 0x72, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x2c, 0x0a, 0x09, 0x70, 0x72, + 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, + 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x09, 0x70, + 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x12, 0x43, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x70, + 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x0c, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x12, 0x53, 0x0a, + 0x13, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x65, 0x67, + 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, + 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x11, 0x62, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x44, 0x61, + 0x74, 0x61, 0x22, 0x76, 0x0a, 0x0e, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, + 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x61, 0x6c, + 0x61, 0x6e, 0x63, 0x65, 0x12, 0x34, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x69, + 0x6e, 0x67, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xe1, 0x01, 0x0a, 0x0f, 0x53, + 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x3c, + 0x0a, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x20, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, + 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x52, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x3b, 0x0a, 0x1a, + 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x17, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x41, 0x73, 0x73, 0x65, 0x74, 0x54, 0x6f, + 0x74, 0x61, 0x6c, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x12, 0x53, 0x0a, 0x1a, 0x70, 0x65, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x76, 0x65, 0x67, 0x61, 0x2e, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x53, + 0x75, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x17, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, + 0x61, 0x6b, 0x65, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x79, 0x22, 0xf6, + 0x01, 0x0a, 0x0c, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x6f, 0x6b, 0x12, + 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x03, + 0x62, 0x75, 0x79, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, 0x67, 0x61, + 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x03, 0x62, 0x75, 0x79, 0x12, 0x1f, 0x0a, 0x04, 0x73, + 0x65, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, 0x67, 0x61, + 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x04, 0x73, 0x65, 0x6c, 0x6c, 0x12, 0x2a, 0x0a, 0x11, + 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x63, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, + 0x64, 0x65, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x75, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x61, 0x75, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x62, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x28, 0x0a, + 0x10, 0x70, 0x65, 0x67, 0x67, 0x65, 0x64, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, + 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x65, 0x67, 0x67, 0x65, 0x64, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x3b, 0x0a, 0x09, 0x4e, 0x65, 0x74, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2e, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x52, 0x06, 0x70, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x22, 0x30, 0x0a, 0x0a, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x4d, + 0x61, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x76, 0x61, 0x6c, 0x22, 0x35, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x72, + 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x22, 0x3b, 0x0a, + 0x0b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, 0x69, + 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x22, 0x42, 0x0a, 0x0a, 0x50, 0x72, + 0x69, 0x63, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x69, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x61, + 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x61, 0x78, 0x12, 0x10, 0x0a, 0x03, + 0x72, 0x65, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x72, 0x65, 0x66, 0x22, 0x9a, + 0x01, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x63, 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x16, 0x0a, + 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x61, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x70, 0x5f, 0x66, 0x61, 0x63, 0x74, + 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x70, 0x46, 0x61, 0x63, 0x74, + 0x6f, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, + 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x6f, 0x77, 0x6e, 0x46, 0x61, 0x63, + 0x74, 0x6f, 0x72, 0x12, 0x36, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50, 0x72, 0x69, 0x63, + 0x65, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x54, 0x72, 0x69, 0x67, 0x67, + 0x65, 0x72, 0x52, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x22, 0x9a, 0x01, 0x0a, 0x0f, + 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, + 0x32, 0x0a, 0x05, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x63, 0x68, - 0x65, 0x52, 0x0f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x63, - 0x68, 0x65, 0x12, 0x2f, 0x0a, 0x14, 0x72, 0x65, 0x66, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, - 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x11, 0x72, 0x65, 0x66, 0x50, 0x72, 0x69, 0x63, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x44, 0x0a, 0x0f, 0x72, 0x65, 0x66, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, - 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, - 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, - 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x52, 0x0d, 0x72, 0x65, 0x66, 0x50, - 0x72, 0x69, 0x63, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x3d, 0x0a, 0x0a, 0x70, 0x72, 0x69, - 0x63, 0x65, 0x73, 0x5f, 0x6e, 0x6f, 0x77, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, - 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, 0x09, 0x70, - 0x72, 0x69, 0x63, 0x65, 0x73, 0x4e, 0x6f, 0x77, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x69, 0x63, - 0x65, 0x73, 0x5f, 0x70, 0x61, 0x73, 0x74, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x31, 0x2e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x05, 0x62, 0x6f, + 0x75, 0x6e, 0x64, 0x12, 0x32, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, + 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, + 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x6f, 0x75, 0x6e, 0x64, + 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x62, 0x6f, + 0x75, 0x6e, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x3c, 0x0a, 0x0c, 0x43, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, + 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x22, 0x53, 0x0a, 0x09, 0x50, 0x61, 0x73, 0x74, 0x50, 0x72, + 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x76, 0x6f, 0x6c, 0x75, 0x6d, + 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x57, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x22, 0xf4, 0x04, 0x0a, 0x0c, + 0x50, 0x72, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x12, 0x20, 0x0a, 0x0b, + 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x73, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x73, 0x65, 0x64, 0x12, 0x3d, + 0x0a, 0x0b, 0x66, 0x70, 0x5f, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, + 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x4d, 0x61, + 0x70, 0x52, 0x0a, 0x66, 0x70, 0x48, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x73, 0x12, 0x10, 0x0a, + 0x03, 0x6e, 0x6f, 0x77, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6e, 0x6f, 0x77, 0x12, + 0x16, 0x0a, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x06, 0x62, 0x6f, 0x75, 0x6e, 0x64, + 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, + 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x69, 0x63, 0x65, + 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x06, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x12, 0x33, 0x0a, + 0x16, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x63, 0x61, 0x63, + 0x68, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x70, + 0x72, 0x69, 0x63, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x4d, 0x0a, 0x11, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, + 0x65, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x61, 0x73, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x63, - 0x65, 0x73, 0x50, 0x61, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, - 0x73, 0x75, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x63, 0x68, 0x65, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x52, 0x65, 0x61, 0x63, - 0x68, 0x65, 0x64, 0x22, 0xf8, 0x02, 0x0a, 0x0c, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x2e, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, - 0x64, 0x65, 0x12, 0x3b, 0x0a, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6d, 0x6f, - 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, - 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x6f, - 0x64, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x12, - 0x2e, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x14, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, - 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, - 0x14, 0x0a, 0x05, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, - 0x62, 0x65, 0x67, 0x69, 0x6e, 0x12, 0x27, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x14, - 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x74, 0x6f, 0x70, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x04, 0x73, 0x74, 0x6f, 0x70, 0x12, 0x32, 0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, - 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x76, 0x65, - 0x67, 0x61, 0x2e, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, - 0x72, 0x52, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x0a, 0x14, - 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, - 0x73, 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x65, 0x78, 0x74, 0x65, - 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x6e, 0x74, 0x22, 0x75, - 0x0a, 0x0d, 0x45, 0x71, 0x75, 0x69, 0x74, 0x79, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4c, 0x50, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x73, 0x74, 0x61, 0x6b, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x61, - 0x76, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x76, 0x67, 0x12, 0x16, 0x0a, - 0x06, 0x76, 0x73, 0x68, 0x61, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x76, - 0x73, 0x68, 0x61, 0x72, 0x65, 0x22, 0xa9, 0x01, 0x0a, 0x0b, 0x45, 0x71, 0x75, 0x69, 0x74, 0x79, - 0x53, 0x68, 0x61, 0x72, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x76, 0x70, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6d, 0x76, 0x70, 0x12, 0x32, 0x0a, 0x15, 0x6f, 0x70, 0x65, 0x6e, 0x69, - 0x6e, 0x67, 0x5f, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x64, 0x65, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6e, 0x67, 0x41, - 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x31, 0x0a, 0x03, 0x6c, - 0x70, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, - 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x71, 0x75, 0x69, - 0x74, 0x79, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4c, 0x50, 0x52, 0x03, 0x6c, 0x70, 0x73, 0x12, 0x0c, - 0x0a, 0x01, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x72, 0x12, 0x13, 0x0a, 0x05, - 0x70, 0x5f, 0x6d, 0x76, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x4d, 0x76, - 0x70, 0x22, 0x84, 0x01, 0x0a, 0x0b, 0x46, 0x65, 0x65, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x74, 0x65, - 0x72, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, - 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x74, 0x69, - 0x6d, 0x65, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x1f, 0x0a, - 0x0b, 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x10, - 0x0a, 0x03, 0x61, 0x76, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x76, 0x67, - 0x12, 0x16, 0x0a, 0x06, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x06, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x22, 0xa1, 0x09, 0x0a, 0x0a, 0x53, 0x70, 0x6f, - 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x24, 0x0a, 0x06, 0x6d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x43, 0x0a, - 0x0d, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, - 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x6e, - 0x69, 0x74, 0x6f, 0x72, 0x52, 0x0c, 0x70, 0x72, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x6e, 0x69, 0x74, - 0x6f, 0x72, 0x12, 0x43, 0x0a, 0x0d, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x76, 0x65, 0x67, 0x61, - 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x61, 0x75, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x43, 0x0a, 0x0d, 0x70, 0x65, 0x67, 0x67, 0x65, - 0x64, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, - 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x65, 0x67, 0x67, 0x65, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x0c, - 0x70, 0x65, 0x67, 0x67, 0x65, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x34, 0x0a, 0x0f, - 0x65, 0x78, 0x70, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x62, 0x65, 0x73, 0x74, 0x5f, - 0x62, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x42, - 0x65, 0x73, 0x74, 0x42, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x62, - 0x65, 0x73, 0x74, 0x5f, 0x61, 0x73, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, - 0x61, 0x73, 0x74, 0x42, 0x65, 0x73, 0x74, 0x41, 0x73, 0x6b, 0x12, 0x20, 0x0a, 0x0c, 0x6c, 0x61, - 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x64, 0x5f, 0x62, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x69, 0x64, 0x42, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0c, - 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x64, 0x5f, 0x61, 0x73, 0x6b, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x69, 0x64, 0x41, 0x73, 0x6b, 0x12, 0x35, - 0x0a, 0x17, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x14, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x50, 0x72, 0x6f, 0x78, 0x79, 0x12, 0x41, 0x0a, 0x1d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x71, - 0x75, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1a, 0x6c, 0x61, - 0x73, 0x74, 0x45, 0x71, 0x75, 0x69, 0x74, 0x79, 0x53, 0x68, 0x61, 0x72, 0x65, 0x44, 0x69, 0x73, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x64, 0x12, 0x40, 0x0a, 0x0c, 0x65, 0x71, 0x75, 0x69, - 0x74, 0x79, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, - 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, - 0x31, 0x2e, 0x45, 0x71, 0x75, 0x69, 0x74, 0x79, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x0b, 0x65, - 0x71, 0x75, 0x69, 0x74, 0x79, 0x53, 0x68, 0x61, 0x72, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x75, - 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4d, - 0x61, 0x72, 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x40, 0x0a, 0x0c, 0x66, 0x65, 0x65, 0x5f, - 0x73, 0x70, 0x6c, 0x69, 0x74, 0x74, 0x65, 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, - 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, - 0x31, 0x2e, 0x46, 0x65, 0x65, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x74, 0x65, 0x72, 0x52, 0x0b, 0x66, - 0x65, 0x65, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x74, 0x65, 0x72, 0x12, 0x2d, 0x0a, 0x13, 0x6e, 0x65, - 0x78, 0x74, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x74, 0x6f, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6e, 0x65, 0x78, 0x74, 0x4d, 0x61, 0x72, - 0x6b, 0x54, 0x6f, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x6c, 0x61, 0x73, - 0x74, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x10, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x64, - 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, - 0x18, 0x11, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, - 0x16, 0x0a, 0x06, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x06, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x12, 0x3d, 0x0a, 0x0b, 0x73, 0x74, 0x6f, 0x70, 0x5f, - 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, + 0x2e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, + 0x52, 0x0f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x63, 0x68, + 0x65, 0x12, 0x2f, 0x0a, 0x14, 0x72, 0x65, 0x66, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x63, + 0x61, 0x63, 0x68, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x11, 0x72, 0x65, 0x66, 0x50, 0x72, 0x69, 0x63, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x44, 0x0a, 0x0f, 0x72, 0x65, 0x66, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, + 0x63, 0x61, 0x63, 0x68, 0x65, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, + 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, + 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x4d, 0x61, 0x70, 0x52, 0x0d, 0x72, 0x65, 0x66, 0x50, 0x72, + 0x69, 0x63, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x3d, 0x0a, 0x0a, 0x70, 0x72, 0x69, 0x63, + 0x65, 0x73, 0x5f, 0x6e, 0x6f, 0x77, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x73, 0x74, 0x6f, 0x70, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x3d, 0x0a, 0x14, 0x65, 0x78, 0x70, 0x69, 0x72, 0x69, - 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x14, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x52, 0x12, 0x65, 0x78, 0x70, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x6f, 0x70, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x38, 0x0a, 0x0a, 0x66, 0x65, 0x65, 0x73, 0x5f, 0x73, 0x74, - 0x61, 0x74, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x76, 0x65, 0x67, 0x61, - 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x65, 0x73, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x52, 0x09, 0x66, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, - 0x1d, 0x0a, 0x0a, 0x68, 0x61, 0x73, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x65, 0x64, 0x18, 0x16, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x09, 0x68, 0x61, 0x73, 0x54, 0x72, 0x61, 0x64, 0x65, 0x64, 0x12, 0x4c, - 0x0a, 0x10, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, - 0x74, 0x79, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, - 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x72, 0x6b, - 0x65, 0x74, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x22, 0xbc, 0x0e, 0x0a, - 0x06, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x24, 0x0a, 0x06, 0x6d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x43, 0x0a, - 0x0d, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, - 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x6e, - 0x69, 0x74, 0x6f, 0x72, 0x52, 0x0c, 0x70, 0x72, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x6e, 0x69, 0x74, - 0x6f, 0x72, 0x12, 0x43, 0x0a, 0x0d, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x76, 0x65, 0x67, 0x61, - 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x61, 0x75, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x43, 0x0a, 0x0d, 0x70, 0x65, 0x67, 0x67, 0x65, - 0x64, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, - 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x65, 0x67, 0x67, 0x65, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x0c, - 0x70, 0x65, 0x67, 0x67, 0x65, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x34, 0x0a, 0x0f, - 0x65, 0x78, 0x70, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x62, 0x65, 0x73, 0x74, 0x5f, - 0x62, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x42, - 0x65, 0x73, 0x74, 0x42, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x62, - 0x65, 0x73, 0x74, 0x5f, 0x61, 0x73, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, - 0x61, 0x73, 0x74, 0x42, 0x65, 0x73, 0x74, 0x41, 0x73, 0x6b, 0x12, 0x20, 0x0a, 0x0c, 0x6c, 0x61, - 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x64, 0x5f, 0x62, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x69, 0x64, 0x42, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0c, - 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x64, 0x5f, 0x61, 0x73, 0x6b, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x69, 0x64, 0x41, 0x73, 0x6b, 0x12, 0x35, - 0x0a, 0x17, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x14, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x50, 0x72, 0x6f, 0x78, 0x79, 0x12, 0x41, 0x0a, 0x1d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x71, - 0x75, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1a, 0x6c, 0x61, - 0x73, 0x74, 0x45, 0x71, 0x75, 0x69, 0x74, 0x79, 0x53, 0x68, 0x61, 0x72, 0x65, 0x44, 0x69, 0x73, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x64, 0x12, 0x40, 0x0a, 0x0c, 0x65, 0x71, 0x75, 0x69, - 0x74, 0x79, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, - 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, - 0x31, 0x2e, 0x45, 0x71, 0x75, 0x69, 0x74, 0x79, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x0b, 0x65, - 0x71, 0x75, 0x69, 0x74, 0x79, 0x53, 0x68, 0x61, 0x72, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x75, - 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4d, - 0x61, 0x72, 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x72, 0x69, 0x73, 0x6b, - 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x18, 0x0e, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x69, 0x73, 0x6b, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x53, - 0x68, 0x6f, 0x72, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x72, 0x69, 0x73, 0x6b, 0x5f, 0x66, 0x61, 0x63, - 0x74, 0x6f, 0x72, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, - 0x72, 0x69, 0x73, 0x6b, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x4c, 0x6f, 0x6e, 0x67, 0x12, 0x41, - 0x0a, 0x1d, 0x72, 0x69, 0x73, 0x6b, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x63, 0x6f, - 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x63, 0x68, 0x65, 0x64, 0x18, - 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1a, 0x72, 0x69, 0x73, 0x6b, 0x46, 0x61, 0x63, 0x74, 0x6f, - 0x72, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x52, 0x65, 0x61, 0x63, 0x68, 0x65, - 0x64, 0x12, 0x40, 0x0a, 0x0c, 0x66, 0x65, 0x65, 0x5f, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x74, 0x65, - 0x72, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, - 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x65, 0x53, 0x70, - 0x6c, 0x69, 0x74, 0x74, 0x65, 0x72, 0x52, 0x0b, 0x66, 0x65, 0x65, 0x53, 0x70, 0x6c, 0x69, 0x74, - 0x74, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x65, - 0x74, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2d, 0x0a, 0x13, - 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x74, 0x6f, 0x5f, 0x6d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6e, 0x65, 0x78, 0x74, 0x4d, - 0x61, 0x72, 0x6b, 0x54, 0x6f, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x6c, - 0x61, 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, - 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, - 0x65, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x72, 0x74, 0x69, - 0x65, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x69, 0x65, - 0x73, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x18, 0x16, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x06, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x75, 0x63, - 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x73, 0x75, - 0x63, 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x12, 0x3d, 0x0a, 0x0b, 0x73, 0x74, 0x6f, 0x70, 0x5f, - 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, + 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, 0x09, 0x70, 0x72, + 0x69, 0x63, 0x65, 0x73, 0x4e, 0x6f, 0x77, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x72, 0x69, 0x63, 0x65, + 0x73, 0x5f, 0x70, 0x61, 0x73, 0x74, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x73, 0x74, 0x6f, 0x70, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x3d, 0x0a, 0x14, 0x65, 0x78, 0x70, 0x69, 0x72, 0x69, - 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x19, + 0x50, 0x61, 0x73, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x63, 0x65, + 0x73, 0x50, 0x61, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, + 0x75, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x63, 0x68, 0x65, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x52, 0x65, 0x61, 0x63, 0x68, + 0x65, 0x64, 0x22, 0xf8, 0x02, 0x0a, 0x0c, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x18, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x2e, + 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, + 0x65, 0x12, 0x3b, 0x0a, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6d, 0x6f, 0x64, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x2e, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, + 0x65, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x2e, + 0x0a, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x14, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, + 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x14, + 0x0a, 0x05, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x62, + 0x65, 0x67, 0x69, 0x6e, 0x12, 0x27, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x14, 0x0a, + 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x74, 0x6f, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x04, 0x73, 0x74, 0x6f, 0x70, 0x12, 0x32, 0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x76, 0x65, 0x67, + 0x61, 0x2e, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, + 0x52, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x0a, 0x14, 0x65, + 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x73, + 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x65, 0x78, 0x74, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x6e, 0x74, 0x22, 0x75, 0x0a, + 0x0d, 0x45, 0x71, 0x75, 0x69, 0x74, 0x79, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4c, 0x50, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, + 0x0a, 0x05, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, + 0x74, 0x61, 0x6b, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x68, 0x61, 0x72, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x68, 0x61, 0x72, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x76, + 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x76, 0x67, 0x12, 0x16, 0x0a, 0x06, + 0x76, 0x73, 0x68, 0x61, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x76, 0x73, + 0x68, 0x61, 0x72, 0x65, 0x22, 0xa9, 0x01, 0x0a, 0x0b, 0x45, 0x71, 0x75, 0x69, 0x74, 0x79, 0x53, + 0x68, 0x61, 0x72, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x76, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6d, 0x76, 0x70, 0x12, 0x32, 0x0a, 0x15, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6e, + 0x67, 0x5f, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x6f, 0x70, 0x65, 0x6e, 0x69, 0x6e, 0x67, 0x41, 0x75, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x31, 0x0a, 0x03, 0x6c, 0x70, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, + 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x71, 0x75, 0x69, 0x74, + 0x79, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4c, 0x50, 0x52, 0x03, 0x6c, 0x70, 0x73, 0x12, 0x0c, 0x0a, + 0x01, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x01, 0x72, 0x12, 0x13, 0x0a, 0x05, 0x70, + 0x5f, 0x6d, 0x76, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x4d, 0x76, 0x70, + 0x22, 0x84, 0x01, 0x0a, 0x0b, 0x46, 0x65, 0x65, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x74, 0x65, 0x72, + 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x74, 0x69, 0x6d, + 0x65, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x1f, 0x0a, 0x0b, + 0x74, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x64, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x10, 0x0a, + 0x03, 0x61, 0x76, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x76, 0x67, 0x12, + 0x16, 0x0a, 0x06, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x06, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x22, 0xa1, 0x09, 0x0a, 0x0a, 0x53, 0x70, 0x6f, 0x74, + 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x24, 0x0a, 0x06, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x43, 0x0a, 0x0d, + 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, + 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x6e, 0x69, + 0x74, 0x6f, 0x72, 0x52, 0x0c, 0x70, 0x72, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, + 0x72, 0x12, 0x43, 0x0a, 0x0d, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, + 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x43, 0x0a, 0x0d, 0x70, 0x65, 0x67, 0x67, 0x65, 0x64, + 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, + 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, + 0x2e, 0x50, 0x65, 0x67, 0x67, 0x65, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x0c, 0x70, + 0x65, 0x67, 0x67, 0x65, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x34, 0x0a, 0x0f, 0x65, + 0x78, 0x70, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x52, 0x12, 0x65, 0x78, 0x70, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x6f, 0x70, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x33, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, - 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, - 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, - 0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x66, 0x65, - 0x65, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, - 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x09, 0x66, 0x65, 0x65, 0x73, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x12, 0x53, 0x0a, 0x13, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x6d, 0x61, - 0x72, 0x67, 0x69, 0x6e, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x1c, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, - 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, - 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x11, 0x70, 0x61, 0x72, 0x74, 0x79, 0x4d, 0x61, 0x72, - 0x67, 0x69, 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x5e, 0x0a, 0x15, 0x6d, 0x61, 0x72, - 0x6b, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, - 0x6f, 0x72, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, - 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, - 0x61, 0x74, 0x6f, 0x72, 0x52, 0x13, 0x6d, 0x61, 0x72, 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x43, - 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x7e, 0x0a, 0x23, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x5f, - 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x6f, 0x72, - 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, - 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, - 0x6f, 0x72, 0x48, 0x00, 0x52, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x6f, - 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, 0x43, 0x61, 0x6c, 0x63, - 0x75, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x22, 0x6e, 0x65, 0x78, - 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x65, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x61, 0x6c, 0x63, 0x18, - 0x1f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1e, 0x6e, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, - 0x6e, 0x61, 0x6c, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x50, 0x72, 0x69, 0x63, - 0x65, 0x43, 0x61, 0x6c, 0x63, 0x12, 0x4c, 0x0a, 0x10, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, - 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x21, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, - 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, - 0x74, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, - 0x69, 0x74, 0x79, 0x42, 0x26, 0x0a, 0x24, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, - 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, - 0x5f, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x22, 0x4e, 0x0a, 0x11, 0x50, - 0x61, 0x72, 0x74, 0x79, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, - 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, - 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6d, - 0x61, 0x72, 0x67, 0x69, 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x42, 0x0a, 0x07, 0x50, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x2f, 0x0a, 0x05, 0x70, 0x65, 0x72, 0x70, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, - 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x70, 0x73, 0x48, 0x00, - 0x52, 0x05, 0x70, 0x65, 0x72, 0x70, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, - 0x3f, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, - 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, 0x69, - 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x22, 0x5b, 0x0a, 0x10, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, - 0x76, 0x61, 0x6c, 0x73, 0x12, 0x0c, 0x0a, 0x01, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x03, 0x52, - 0x01, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x61, 0x75, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x53, 0x0a, - 0x08, 0x54, 0x57, 0x41, 0x50, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, - 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x65, 0x6e, - 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x75, 0x6d, 0x50, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x22, 0xc7, 0x03, 0x0a, 0x05, 0x50, 0x65, 0x72, 0x70, 0x73, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x4b, 0x0a, 0x13, - 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x76, 0x65, 0x67, 0x61, - 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, - 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x11, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, - 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x4b, 0x0a, 0x13, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, - 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, - 0x69, 0x6e, 0x74, 0x52, 0x11, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x44, 0x61, 0x74, - 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x71, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x03, 0x73, 0x65, 0x71, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x48, 0x0a, 0x12, 0x65, 0x78, 0x74, 0x65, 0x72, - 0x6e, 0x61, 0x6c, 0x5f, 0x74, 0x77, 0x61, 0x70, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, - 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x57, 0x41, 0x50, 0x44, 0x61, 0x74, 0x61, 0x52, - 0x10, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x54, 0x77, 0x61, 0x70, 0x44, 0x61, 0x74, - 0x61, 0x12, 0x48, 0x0a, 0x12, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x74, 0x77, - 0x61, 0x70, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x72, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x62, + 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x42, 0x65, + 0x73, 0x74, 0x42, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x62, 0x65, + 0x73, 0x74, 0x5f, 0x61, 0x73, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x61, + 0x73, 0x74, 0x42, 0x65, 0x73, 0x74, 0x41, 0x73, 0x6b, 0x12, 0x20, 0x0a, 0x0c, 0x6c, 0x61, 0x73, + 0x74, 0x5f, 0x6d, 0x69, 0x64, 0x5f, 0x62, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x69, 0x64, 0x42, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0c, 0x6c, + 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x64, 0x5f, 0x61, 0x73, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x69, 0x64, 0x41, 0x73, 0x6b, 0x12, 0x35, 0x0a, + 0x17, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, + 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x50, + 0x72, 0x6f, 0x78, 0x79, 0x12, 0x41, 0x0a, 0x1d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x71, 0x75, + 0x69, 0x74, 0x79, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1a, 0x6c, 0x61, 0x73, + 0x74, 0x45, 0x71, 0x75, 0x69, 0x74, 0x79, 0x53, 0x68, 0x61, 0x72, 0x65, 0x44, 0x69, 0x73, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x64, 0x12, 0x40, 0x0a, 0x0c, 0x65, 0x71, 0x75, 0x69, 0x74, + 0x79, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, - 0x2e, 0x54, 0x57, 0x41, 0x50, 0x44, 0x61, 0x74, 0x61, 0x52, 0x10, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x6e, 0x61, 0x6c, 0x54, 0x77, 0x61, 0x70, 0x44, 0x61, 0x74, 0x61, 0x12, 0x4f, 0x0a, 0x11, 0x61, - 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, - 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x52, 0x10, 0x61, 0x75, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x22, 0x3d, 0x0a, 0x0d, - 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x41, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, - 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x22, 0x98, 0x01, 0x0a, 0x10, - 0x50, 0x72, 0x69, 0x63, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, - 0x12, 0x42, 0x0a, 0x0c, 0x66, 0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x62, 0x65, 0x6c, 0x6c, 0x6f, 0x77, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, - 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, - 0x41, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, 0x0b, 0x66, 0x61, 0x6c, 0x6c, 0x73, 0x42, 0x65, - 0x6c, 0x6c, 0x6f, 0x77, 0x12, 0x40, 0x0a, 0x0b, 0x72, 0x69, 0x73, 0x65, 0x73, 0x5f, 0x61, 0x62, - 0x6f, 0x76, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, - 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x73, 0x41, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, 0x0a, 0x72, 0x69, 0x73, 0x65, - 0x73, 0x41, 0x62, 0x6f, 0x76, 0x65, 0x22, 0xc4, 0x01, 0x0a, 0x12, 0x54, 0x72, 0x61, 0x69, 0x6c, - 0x69, 0x6e, 0x67, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x26, 0x0a, - 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, - 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x43, 0x0a, 0x0c, 0x66, 0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x62, - 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x65, - 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x41, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, 0x0b, 0x66, - 0x61, 0x6c, 0x6c, 0x73, 0x42, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x12, 0x41, 0x0a, 0x0b, 0x72, 0x69, - 0x73, 0x65, 0x73, 0x5f, 0x61, 0x62, 0x6f, 0x76, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x20, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, - 0x76, 0x31, 0x2e, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x41, 0x74, 0x50, 0x72, 0x69, 0x63, - 0x65, 0x52, 0x0a, 0x72, 0x69, 0x73, 0x65, 0x73, 0x41, 0x62, 0x6f, 0x76, 0x65, 0x22, 0x40, 0x0a, - 0x0e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x41, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, - 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x22, - 0x62, 0x0a, 0x0e, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x41, 0x74, 0x50, 0x72, 0x69, 0x63, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, - 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x73, 0x41, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x52, 0x07, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x73, 0x22, 0xf7, 0x01, 0x0a, 0x0a, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x73, 0x12, 0x3f, 0x0a, 0x0b, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x73, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x73, 0x12, 0x50, 0x0a, 0x12, 0x70, 0x72, 0x69, 0x63, 0x65, 0x64, 0x5f, 0x73, 0x74, - 0x6f, 0x70, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x22, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, - 0x76, 0x31, 0x2e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, - 0x65, 0x72, 0x73, 0x52, 0x10, 0x70, 0x72, 0x69, 0x63, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x56, 0x0a, 0x14, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x69, 0x6e, - 0x67, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, - 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x53, - 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x12, 0x74, 0x72, 0x61, 0x69, 0x6c, - 0x69, 0x6e, 0x67, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x22, 0x40, 0x0a, - 0x0c, 0x50, 0x65, 0x67, 0x67, 0x65, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x30, 0x0a, - 0x0d, 0x70, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, + 0x2e, 0x45, 0x71, 0x75, 0x69, 0x74, 0x79, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x0b, 0x65, 0x71, + 0x75, 0x69, 0x74, 0x79, 0x53, 0x68, 0x61, 0x72, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4d, 0x61, + 0x72, 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x40, 0x0a, 0x0c, 0x66, 0x65, 0x65, 0x5f, 0x73, + 0x70, 0x6c, 0x69, 0x74, 0x74, 0x65, 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, + 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, + 0x2e, 0x46, 0x65, 0x65, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x74, 0x65, 0x72, 0x52, 0x0b, 0x66, 0x65, + 0x65, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x74, 0x65, 0x72, 0x12, 0x2d, 0x0a, 0x13, 0x6e, 0x65, 0x78, + 0x74, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x74, 0x6f, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, + 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6e, 0x65, 0x78, 0x74, 0x4d, 0x61, 0x72, 0x6b, + 0x54, 0x6f, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x6c, 0x61, 0x73, 0x74, + 0x5f, 0x74, 0x72, 0x61, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x10, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x64, 0x50, + 0x72, 0x69, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, + 0x11, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x16, + 0x0a, 0x06, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, + 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x12, 0x3d, 0x0a, 0x0b, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, + 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, + 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x73, 0x74, 0x6f, 0x70, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x3d, 0x0a, 0x14, 0x65, 0x78, 0x70, 0x69, 0x72, 0x69, 0x6e, + 0x67, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x14, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x52, 0x12, 0x65, 0x78, 0x70, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x73, 0x12, 0x38, 0x0a, 0x0a, 0x66, 0x65, 0x65, 0x73, 0x5f, 0x73, 0x74, 0x61, + 0x74, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x52, 0x09, 0x66, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x1d, + 0x0a, 0x0a, 0x68, 0x61, 0x73, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x65, 0x64, 0x18, 0x16, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x09, 0x68, 0x61, 0x73, 0x54, 0x72, 0x61, 0x64, 0x65, 0x64, 0x12, 0x4c, 0x0a, + 0x10, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, + 0x79, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, + 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, + 0x74, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x72, 0x6b, + 0x65, 0x74, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x22, 0xbc, 0x0e, 0x0a, 0x06, + 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x24, 0x0a, 0x06, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x52, 0x06, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x43, 0x0a, 0x0d, + 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, + 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x6e, 0x69, + 0x74, 0x6f, 0x72, 0x52, 0x0c, 0x70, 0x72, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, + 0x72, 0x12, 0x43, 0x0a, 0x0d, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, + 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x43, 0x0a, 0x0d, 0x70, 0x65, 0x67, 0x67, 0x65, 0x64, + 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, + 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, + 0x2e, 0x50, 0x65, 0x67, 0x67, 0x65, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x0c, 0x70, + 0x65, 0x67, 0x67, 0x65, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x34, 0x0a, 0x0f, 0x65, + 0x78, 0x70, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x52, 0x0c, 0x70, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x22, - 0xad, 0x03, 0x0a, 0x10, 0x53, 0x4c, 0x41, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x62, 0x6f, 0x6e, 0x64, 0x5f, 0x70, 0x65, 0x6e, - 0x61, 0x6c, 0x74, 0x79, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x11, 0x62, 0x6f, 0x6e, 0x64, 0x50, 0x65, 0x6e, 0x61, 0x6c, 0x74, 0x79, 0x46, 0x61, - 0x63, 0x74, 0x6f, 0x72, 0x12, 0x2c, 0x0a, 0x12, 0x65, 0x61, 0x72, 0x6c, 0x79, 0x5f, 0x65, 0x78, - 0x69, 0x74, 0x5f, 0x70, 0x65, 0x6e, 0x61, 0x6c, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x10, 0x65, 0x61, 0x72, 0x6c, 0x79, 0x45, 0x78, 0x69, 0x74, 0x50, 0x65, 0x6e, 0x61, 0x6c, - 0x74, 0x79, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, - 0x69, 0x74, 0x79, 0x5f, 0x66, 0x65, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, - 0x61, 0x78, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x46, 0x65, 0x65, 0x12, 0x46, - 0x0a, 0x20, 0x6e, 0x6f, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, - 0x65, 0x5f, 0x62, 0x6f, 0x6e, 0x64, 0x5f, 0x70, 0x65, 0x6e, 0x61, 0x6c, 0x74, 0x79, 0x5f, 0x6d, - 0x61, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1c, 0x6e, 0x6f, 0x6e, 0x50, 0x65, 0x72, - 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x6f, 0x6e, 0x64, 0x50, 0x65, 0x6e, 0x61, - 0x6c, 0x74, 0x79, 0x4d, 0x61, 0x78, 0x12, 0x4a, 0x0a, 0x22, 0x6e, 0x6f, 0x6e, 0x5f, 0x70, 0x65, - 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x62, 0x6f, 0x6e, 0x64, 0x5f, 0x70, - 0x65, 0x6e, 0x61, 0x6c, 0x74, 0x79, 0x5f, 0x73, 0x6c, 0x6f, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x1e, 0x6e, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, - 0x63, 0x65, 0x42, 0x6f, 0x6e, 0x64, 0x50, 0x65, 0x6e, 0x61, 0x6c, 0x74, 0x79, 0x53, 0x6c, 0x6f, - 0x70, 0x65, 0x12, 0x2d, 0x0a, 0x13, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x63, - 0x63, 0x79, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x10, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x54, 0x6f, 0x43, 0x63, 0x79, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x12, 0x4c, 0x0a, 0x23, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x66, - 0x65, 0x65, 0x5f, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1f, - 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x46, 0x65, 0x65, 0x43, 0x61, 0x6c, 0x63, - 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x65, 0x70, 0x22, - 0x80, 0x03, 0x0a, 0x10, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x73, 0x12, 0x32, 0x0a, 0x07, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, - 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, - 0x07, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x3f, 0x0a, 0x0c, 0x73, 0x70, 0x6f, 0x74, - 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, + 0x72, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x62, + 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x42, 0x65, + 0x73, 0x74, 0x42, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x62, 0x65, + 0x73, 0x74, 0x5f, 0x61, 0x73, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x61, + 0x73, 0x74, 0x42, 0x65, 0x73, 0x74, 0x41, 0x73, 0x6b, 0x12, 0x20, 0x0a, 0x0c, 0x6c, 0x61, 0x73, + 0x74, 0x5f, 0x6d, 0x69, 0x64, 0x5f, 0x62, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x69, 0x64, 0x42, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0c, 0x6c, + 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x64, 0x5f, 0x61, 0x73, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x69, 0x64, 0x41, 0x73, 0x6b, 0x12, 0x35, 0x0a, + 0x17, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, + 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x50, + 0x72, 0x6f, 0x78, 0x79, 0x12, 0x41, 0x0a, 0x1d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x71, 0x75, + 0x69, 0x74, 0x79, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1a, 0x6c, 0x61, 0x73, + 0x74, 0x45, 0x71, 0x75, 0x69, 0x74, 0x79, 0x53, 0x68, 0x61, 0x72, 0x65, 0x44, 0x69, 0x73, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x64, 0x12, 0x40, 0x0a, 0x0c, 0x65, 0x71, 0x75, 0x69, 0x74, + 0x79, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, + 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, + 0x2e, 0x45, 0x71, 0x75, 0x69, 0x74, 0x79, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x0b, 0x65, 0x71, + 0x75, 0x69, 0x74, 0x79, 0x53, 0x68, 0x61, 0x72, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4d, 0x61, + 0x72, 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x72, 0x69, 0x73, 0x6b, 0x5f, + 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x18, 0x0e, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0f, 0x72, 0x69, 0x73, 0x6b, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x53, 0x68, + 0x6f, 0x72, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x72, 0x69, 0x73, 0x6b, 0x5f, 0x66, 0x61, 0x63, 0x74, + 0x6f, 0x72, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, + 0x69, 0x73, 0x6b, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x4c, 0x6f, 0x6e, 0x67, 0x12, 0x41, 0x0a, + 0x1d, 0x72, 0x69, 0x73, 0x6b, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x6e, + 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x63, 0x68, 0x65, 0x64, 0x18, 0x10, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x1a, 0x72, 0x69, 0x73, 0x6b, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, + 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x52, 0x65, 0x61, 0x63, 0x68, 0x65, 0x64, + 0x12, 0x40, 0x0a, 0x0c, 0x66, 0x65, 0x65, 0x5f, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x74, 0x65, 0x72, + 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, + 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x65, 0x53, 0x70, 0x6c, + 0x69, 0x74, 0x74, 0x65, 0x72, 0x52, 0x0b, 0x66, 0x65, 0x65, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x74, + 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x65, 0x74, + 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2d, 0x0a, 0x13, 0x6e, + 0x65, 0x78, 0x74, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x74, 0x6f, 0x5f, 0x6d, 0x61, 0x72, 0x6b, + 0x65, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6e, 0x65, 0x78, 0x74, 0x4d, 0x61, + 0x72, 0x6b, 0x54, 0x6f, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x6c, 0x61, + 0x73, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, + 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, + 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x72, 0x74, 0x69, 0x65, + 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, + 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x06, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x75, 0x63, 0x63, + 0x65, 0x65, 0x64, 0x65, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x73, 0x75, 0x63, + 0x63, 0x65, 0x65, 0x64, 0x65, 0x64, 0x12, 0x3d, 0x0a, 0x0b, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, + 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, + 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x0a, 0x73, 0x74, 0x6f, 0x70, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x3d, 0x0a, 0x14, 0x65, 0x78, 0x70, 0x69, 0x72, 0x69, 0x6e, + 0x67, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x19, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x52, 0x12, 0x65, 0x78, 0x70, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x73, 0x12, 0x33, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, + 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, + 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, + 0x52, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x66, 0x65, 0x65, + 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x46, + 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x09, 0x66, 0x65, 0x65, 0x73, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x12, 0x53, 0x0a, 0x13, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x6d, 0x61, 0x72, + 0x67, 0x69, 0x6e, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x1c, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x23, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x46, + 0x61, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x11, 0x70, 0x61, 0x72, 0x74, 0x79, 0x4d, 0x61, 0x72, 0x67, + 0x69, 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x5e, 0x0a, 0x15, 0x6d, 0x61, 0x72, 0x6b, + 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x6f, + 0x72, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, + 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, + 0x74, 0x6f, 0x72, 0x52, 0x13, 0x6d, 0x61, 0x72, 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x43, 0x61, + 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x7e, 0x0a, 0x23, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x5f, 0x70, + 0x72, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x18, + 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, + 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x6f, + 0x72, 0x48, 0x00, 0x52, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x43, 0x6f, 0x6d, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, 0x43, 0x61, 0x6c, 0x63, 0x75, + 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x22, 0x6e, 0x65, 0x78, 0x74, + 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x65, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x61, 0x6c, 0x63, 0x18, 0x1f, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x1e, 0x6e, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x6c, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, + 0x43, 0x61, 0x6c, 0x63, 0x12, 0x4c, 0x0a, 0x10, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x6c, + 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, - 0x31, 0x2e, 0x53, 0x70, 0x6f, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x0b, 0x73, 0x70, - 0x6f, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x48, 0x0a, 0x0f, 0x73, 0x65, 0x74, - 0x74, 0x6c, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x52, 0x0e, 0x73, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x4d, 0x61, 0x72, 0x6b, - 0x65, 0x74, 0x73, 0x12, 0x3c, 0x0a, 0x0a, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, - 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, - 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x6f, 0x72, 0x73, 0x52, 0x0a, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, - 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, - 0x12, 0x50, 0x0a, 0x12, 0x73, 0x6c, 0x61, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, - 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x76, + 0x31, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, + 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, + 0x74, 0x79, 0x42, 0x26, 0x0a, 0x24, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, + 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, + 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x22, 0x4e, 0x0a, 0x11, 0x50, 0x61, + 0x72, 0x74, 0x79, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, + 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, + 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x61, + 0x72, 0x67, 0x69, 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x42, 0x0a, 0x07, 0x50, 0x72, + 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x2f, 0x0a, 0x05, 0x70, 0x65, 0x72, 0x70, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, + 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x70, 0x73, 0x48, 0x00, 0x52, + 0x05, 0x70, 0x65, 0x72, 0x70, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3f, + 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x70, + 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, + 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, + 0x5b, 0x0a, 0x10, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, + 0x61, 0x6c, 0x73, 0x12, 0x0c, 0x0a, 0x01, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x03, 0x52, 0x01, + 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x53, 0x0a, 0x08, + 0x54, 0x57, 0x41, 0x50, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, + 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x65, 0x6e, 0x64, + 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x75, 0x6d, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, + 0x74, 0x22, 0xc7, 0x03, 0x0a, 0x05, 0x50, 0x65, 0x72, 0x70, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x4b, 0x0a, 0x13, 0x65, + 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, + 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, + 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x11, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x44, + 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x4b, 0x0a, 0x13, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, + 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6f, 0x69, + 0x6e, 0x74, 0x52, 0x11, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, + 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x71, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x03, 0x73, 0x65, 0x71, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x48, 0x0a, 0x12, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x6c, 0x5f, 0x74, 0x77, 0x61, 0x70, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, + 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x57, 0x41, 0x50, 0x44, 0x61, 0x74, 0x61, 0x52, 0x10, + 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x54, 0x77, 0x61, 0x70, 0x44, 0x61, 0x74, 0x61, + 0x12, 0x48, 0x0a, 0x12, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x74, 0x77, 0x61, + 0x70, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x4c, 0x41, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x52, 0x10, 0x73, 0x6c, 0x61, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x22, 0x5e, 0x0a, 0x0a, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x73, - 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x4d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x10, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x73, 0x22, 0x97, 0x02, 0x0a, 0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x19, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, - 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x10, - 0x0a, 0x03, 0x62, 0x75, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x62, 0x75, 0x79, - 0x12, 0x12, 0x0a, 0x04, 0x73, 0x65, 0x6c, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, - 0x73, 0x65, 0x6c, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x62, 0x75, - 0x79, 0x5f, 0x73, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x62, 0x75, 0x79, 0x53, 0x75, 0x6d, 0x50, 0x72, 0x6f, 0x64, 0x75, - 0x63, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x65, 0x6c, 0x6c, 0x5f, 0x73, 0x75, 0x6d, 0x5f, 0x70, - 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x65, - 0x6c, 0x6c, 0x53, 0x75, 0x6d, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x1e, 0x0a, 0x0a, - 0x64, 0x69, 0x73, 0x74, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0a, 0x64, 0x69, 0x73, 0x74, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x13, - 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x72, - 0x69, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x11, 0x61, 0x76, 0x65, 0x72, 0x61, - 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x72, 0x69, 0x63, 0x65, 0x22, 0xb7, 0x01, 0x0a, - 0x0f, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x38, 0x0a, - 0x09, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4d, 0x0a, 0x0f, 0x70, 0x61, 0x72, 0x74, 0x69, - 0x65, 0x73, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x24, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x52, - 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x22, 0x86, 0x02, 0x0a, 0x12, 0x50, 0x61, 0x72, 0x74, 0x79, - 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x14, 0x0a, - 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, - 0x72, 0x74, 0x79, 0x12, 0x35, 0x0a, 0x14, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6f, 0x70, - 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x04, 0x48, 0x00, 0x52, 0x12, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4f, 0x70, 0x65, 0x6e, 0x49, - 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x14, 0x6c, 0x6f, - 0x77, 0x65, 0x73, 0x74, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x65, - 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x12, 0x6c, 0x6f, 0x77, 0x65, - 0x73, 0x74, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x64, 0x65, 0x64, 0x5f, 0x76, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x64, - 0x65, 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x17, 0x0a, 0x15, 0x5f, - 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x65, 0x73, 0x74, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x5f, - 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74, 0x42, 0x10, 0x0a, - 0x0e, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x65, 0x64, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x22, - 0xee, 0x01, 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, - 0x12, 0x26, 0x0a, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x70, 0x72, - 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x4d, - 0x61, 0x72, 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x5b, 0x0a, 0x16, 0x6c, 0x61, 0x73, 0x74, - 0x5f, 0x73, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, - 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x73, 0x74, - 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x14, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x50, 0x6f, 0x73, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x39, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, - 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, - 0x22, 0x56, 0x0a, 0x13, 0x4c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x50, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x29, 0x0a, - 0x10, 0x73, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x73, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x64, - 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x94, 0x01, 0x0a, 0x0f, 0x53, 0x65, 0x74, - 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x12, 0x19, 0x0a, 0x08, - 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x21, 0x0a, - 0x0c, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, - 0x73, 0x69, 0x7a, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x65, 0x77, 0x5f, 0x73, 0x69, 0x7a, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6e, 0x65, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x22, - 0xbd, 0x01, 0x0a, 0x08, 0x41, 0x70, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x68, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, - 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x19, - 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x5f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x22, - 0xc3, 0x01, 0x0a, 0x0a, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x10, - 0x0a, 0x03, 0x73, 0x65, 0x71, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x73, 0x65, 0x71, - 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x36, 0x0a, 0x18, 0x72, 0x65, 0x61, 0x64, 0x79, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x14, 0x72, 0x65, 0x61, 0x64, 0x79, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x72, 0x74, - 0x4e, 0x65, 0x77, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x2b, 0x0a, 0x12, 0x72, 0x65, 0x61, 0x64, - 0x79, 0x5f, 0x74, 0x6f, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x79, 0x54, 0x6f, 0x45, 0x6e, 0x64, - 0x45, 0x70, 0x6f, 0x63, 0x68, 0x22, 0x7b, 0x0a, 0x15, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, - 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x73, 0x12, 0x62, - 0x0a, 0x18, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x73, 0x5f, 0x70, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x28, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, - 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x73, 0x50, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x52, 0x16, 0x73, 0x63, 0x68, 0x65, - 0x64, 0x75, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x50, 0x61, 0x79, 0x6f, - 0x75, 0x74, 0x22, 0x81, 0x01, 0x0a, 0x16, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, - 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x50, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x12, 0x1f, 0x0a, - 0x0b, 0x70, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x0a, 0x70, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x46, - 0x0a, 0x0e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x70, 0x61, 0x79, 0x6f, 0x75, 0x74, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, - 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x73, 0x50, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x52, 0x0d, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, - 0x50, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x22, 0xfc, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x73, 0x50, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, - 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x66, 0x72, 0x6f, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x61, - 0x73, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, - 0x74, 0x12, 0x54, 0x0a, 0x13, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x70, 0x61, 0x72, 0x74, - 0x79, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, + 0x54, 0x57, 0x41, 0x50, 0x44, 0x61, 0x74, 0x61, 0x52, 0x10, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x6c, 0x54, 0x77, 0x61, 0x70, 0x44, 0x61, 0x74, 0x61, 0x12, 0x4f, 0x0a, 0x11, 0x61, 0x75, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, + 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x52, 0x10, 0x61, 0x75, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x22, 0x3d, 0x0a, 0x0d, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x73, 0x41, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, 0x69, + 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x22, 0x98, 0x01, 0x0a, 0x10, 0x50, + 0x72, 0x69, 0x63, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, + 0x42, 0x0a, 0x0c, 0x66, 0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x62, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, + 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x41, + 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, 0x0b, 0x66, 0x61, 0x6c, 0x6c, 0x73, 0x42, 0x65, 0x6c, + 0x6c, 0x6f, 0x77, 0x12, 0x40, 0x0a, 0x0b, 0x72, 0x69, 0x73, 0x65, 0x73, 0x5f, 0x61, 0x62, 0x6f, + 0x76, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, + 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x73, 0x41, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, 0x0a, 0x72, 0x69, 0x73, 0x65, 0x73, + 0x41, 0x62, 0x6f, 0x76, 0x65, 0x22, 0xc4, 0x01, 0x0a, 0x12, 0x54, 0x72, 0x61, 0x69, 0x6c, 0x69, + 0x6e, 0x67, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x26, 0x0a, 0x0f, + 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x65, 0x6e, 0x50, + 0x72, 0x69, 0x63, 0x65, 0x12, 0x43, 0x0a, 0x0c, 0x66, 0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x62, 0x65, + 0x6c, 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x65, 0x67, + 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x66, + 0x66, 0x73, 0x65, 0x74, 0x73, 0x41, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x52, 0x0b, 0x66, 0x61, + 0x6c, 0x6c, 0x73, 0x42, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x12, 0x41, 0x0a, 0x0b, 0x72, 0x69, 0x73, + 0x65, 0x73, 0x5f, 0x61, 0x62, 0x6f, 0x76, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x6d, - 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x11, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x50, 0x61, 0x72, 0x74, - 0x79, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, - 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x70, - 0x6f, 0x63, 0x68, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, - 0x70, 0x6f, 0x63, 0x68, 0x53, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x42, 0x0a, 0x12, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, - 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x70, - 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, - 0x79, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x94, 0x04, 0x0a, 0x0a, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x61, 0x6e, - 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x63, 0x61, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, - 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x61, 0x6e, 0x5f, 0x70, - 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0f, 0x63, 0x61, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x41, 0x73, - 0x73, 0x65, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x5f, 0x6c, - 0x6f, 0x61, 0x64, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x67, 0x65, 0x6e, - 0x65, 0x73, 0x69, 0x73, 0x4c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x70, 0x72, - 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x70, 0x72, 0x6f, 0x70, - 0x6f, 0x73, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, - 0x12, 0x32, 0x0a, 0x15, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x5f, 0x61, 0x73, 0x73, 0x65, - 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x13, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x45, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x64, 0x12, 0x3d, 0x0a, 0x1b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x5f, - 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x66, - 0x72, 0x6f, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x18, 0x70, 0x72, 0x6f, 0x70, 0x6f, - 0x73, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x46, - 0x72, 0x6f, 0x6d, 0x12, 0x3b, 0x0a, 0x1a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x5f, 0x61, - 0x73, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x66, 0x72, 0x6f, - 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x17, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, - 0x41, 0x73, 0x73, 0x65, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, - 0x12, 0x3d, 0x0a, 0x1b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, - 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x53, 0x70, - 0x6f, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, - 0x3f, 0x0a, 0x1c, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x70, 0x73, - 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x19, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x50, 0x65, - 0x72, 0x70, 0x73, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, - 0x22, 0x94, 0x04, 0x0a, 0x0e, 0x56, 0x6f, 0x74, 0x65, 0x53, 0x70, 0x61, 0x6d, 0x50, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x12, 0x4c, 0x0a, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x74, 0x6f, 0x5f, - 0x76, 0x6f, 0x74, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x76, 0x65, 0x67, - 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, - 0x72, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x56, 0x6f, 0x74, 0x65, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x79, 0x54, 0x6f, 0x56, 0x6f, 0x74, - 0x65, 0x12, 0x44, 0x0a, 0x0e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x72, 0x74, - 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x65, 0x67, 0x61, - 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x6e, - 0x6e, 0x65, 0x64, 0x50, 0x61, 0x72, 0x74, 0x79, 0x52, 0x0d, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x64, - 0x50, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x0d, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, + 0x31, 0x2e, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x41, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, + 0x52, 0x0a, 0x72, 0x69, 0x73, 0x65, 0x73, 0x41, 0x62, 0x6f, 0x76, 0x65, 0x22, 0x40, 0x0a, 0x0e, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x41, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x16, + 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x22, 0x62, + 0x0a, 0x0e, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x41, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, + 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x73, 0x41, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x52, 0x07, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x73, 0x22, 0xf7, 0x01, 0x0a, 0x0a, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x73, 0x12, 0x3f, 0x0a, 0x0b, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x0a, 0x73, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x73, 0x12, 0x50, 0x0a, 0x12, 0x70, 0x72, 0x69, 0x63, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x6f, + 0x70, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x61, 0x6c, 0x61, - 0x6e, 0x63, 0x65, 0x52, 0x0c, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, - 0x65, 0x12, 0x5f, 0x0a, 0x1a, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x73, 0x5f, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, - 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, - 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x17, 0x72, 0x65, 0x63, 0x65, 0x6e, - 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x11, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x64, - 0x65, 0x78, 0x12, 0x2e, 0x0a, 0x13, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x63, 0x72, 0x65, - 0x61, 0x73, 0x65, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x11, 0x6c, 0x61, 0x73, 0x74, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x70, - 0x6f, 0x63, 0x68, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x53, 0x65, 0x71, 0x12, 0x37, - 0x0a, 0x18, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x73, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x15, 0x6d, 0x69, 0x6e, 0x56, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x73, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x60, 0x0a, 0x16, 0x50, 0x61, 0x72, 0x74, 0x79, - 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x56, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, - 0x73, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, - 0x73, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x43, 0x0a, 0x11, 0x50, 0x61, 0x72, - 0x74, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, - 0x61, 0x72, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x44, - 0x0a, 0x10, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x14, - 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x22, 0x47, 0x0a, 0x19, 0x53, 0x70, 0x61, 0x6d, 0x50, 0x61, 0x72, 0x74, - 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xc2, 0x02, - 0x0a, 0x10, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x53, 0x70, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x51, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x74, 0x6f, 0x5f, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x76, 0x65, + 0x31, 0x2e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x73, 0x52, 0x10, 0x70, 0x72, 0x69, 0x63, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x73, 0x12, 0x56, 0x0a, 0x14, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, + 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, + 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x53, 0x74, + 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x12, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x69, + 0x6e, 0x67, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x22, 0x40, 0x0a, 0x0c, + 0x50, 0x65, 0x67, 0x67, 0x65, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x30, 0x0a, 0x0d, + 0x70, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x52, 0x0c, 0x70, 0x61, 0x72, 0x6b, 0x65, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x22, 0xad, + 0x03, 0x0a, 0x10, 0x53, 0x4c, 0x41, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x62, 0x6f, 0x6e, 0x64, 0x5f, 0x70, 0x65, 0x6e, 0x61, + 0x6c, 0x74, 0x79, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x11, 0x62, 0x6f, 0x6e, 0x64, 0x50, 0x65, 0x6e, 0x61, 0x6c, 0x74, 0x79, 0x46, 0x61, 0x63, + 0x74, 0x6f, 0x72, 0x12, 0x2c, 0x0a, 0x12, 0x65, 0x61, 0x72, 0x6c, 0x79, 0x5f, 0x65, 0x78, 0x69, + 0x74, 0x5f, 0x70, 0x65, 0x6e, 0x61, 0x6c, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x10, 0x65, 0x61, 0x72, 0x6c, 0x79, 0x45, 0x78, 0x69, 0x74, 0x50, 0x65, 0x6e, 0x61, 0x6c, 0x74, + 0x79, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, + 0x74, 0x79, 0x5f, 0x66, 0x65, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x61, + 0x78, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x46, 0x65, 0x65, 0x12, 0x46, 0x0a, + 0x20, 0x6e, 0x6f, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, + 0x5f, 0x62, 0x6f, 0x6e, 0x64, 0x5f, 0x70, 0x65, 0x6e, 0x61, 0x6c, 0x74, 0x79, 0x5f, 0x6d, 0x61, + 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1c, 0x6e, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x6f, 0x6e, 0x64, 0x50, 0x65, 0x6e, 0x61, 0x6c, + 0x74, 0x79, 0x4d, 0x61, 0x78, 0x12, 0x4a, 0x0a, 0x22, 0x6e, 0x6f, 0x6e, 0x5f, 0x70, 0x65, 0x72, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x62, 0x6f, 0x6e, 0x64, 0x5f, 0x70, 0x65, + 0x6e, 0x61, 0x6c, 0x74, 0x79, 0x5f, 0x73, 0x6c, 0x6f, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x1e, 0x6e, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, + 0x65, 0x42, 0x6f, 0x6e, 0x64, 0x50, 0x65, 0x6e, 0x61, 0x6c, 0x74, 0x79, 0x53, 0x6c, 0x6f, 0x70, + 0x65, 0x12, 0x2d, 0x0a, 0x13, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x63, + 0x79, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, + 0x73, 0x74, 0x61, 0x6b, 0x65, 0x54, 0x6f, 0x43, 0x63, 0x79, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x12, 0x4c, 0x0a, 0x23, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x66, 0x65, + 0x65, 0x5f, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1f, 0x70, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x46, 0x65, 0x65, 0x43, 0x61, 0x6c, 0x63, 0x75, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x65, 0x70, 0x22, 0x80, + 0x03, 0x0a, 0x10, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x72, 0x6b, + 0x65, 0x74, 0x73, 0x12, 0x32, 0x0a, 0x07, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, + 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x07, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x3f, 0x0a, 0x0c, 0x73, 0x70, 0x6f, 0x74, 0x5f, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, + 0x2e, 0x53, 0x70, 0x6f, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x52, 0x0b, 0x73, 0x70, 0x6f, + 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x12, 0x48, 0x0a, 0x0f, 0x73, 0x65, 0x74, 0x74, + 0x6c, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x52, 0x0e, 0x73, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x4d, 0x61, 0x72, 0x6b, 0x65, + 0x74, 0x73, 0x12, 0x3c, 0x0a, 0x0a, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x73, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, + 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x6f, 0x72, 0x73, 0x52, 0x0a, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x73, + 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x05, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x73, 0x12, + 0x50, 0x0a, 0x12, 0x73, 0x6c, 0x61, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, - 0x70, 0x61, 0x6d, 0x50, 0x61, 0x72, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x0c, 0x70, 0x61, 0x72, 0x74, 0x79, 0x54, - 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x0e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x64, - 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, - 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, - 0x31, 0x2e, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x50, 0x61, 0x72, 0x74, 0x79, 0x52, 0x0d, 0x62, - 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x50, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x0d, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, - 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x0c, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x42, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x53, - 0x65, 0x71, 0x22, 0x70, 0x0a, 0x0a, 0x4e, 0x6f, 0x74, 0x61, 0x72, 0x79, 0x53, 0x69, 0x67, 0x73, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, - 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x69, 0x67, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x65, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x70, 0x65, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x22, 0x47, 0x0a, 0x06, 0x4e, 0x6f, 0x74, 0x61, 0x72, 0x79, 0x12, 0x3d, - 0x0a, 0x0b, 0x6e, 0x6f, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x73, 0x69, 0x67, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, - 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x61, 0x72, 0x79, 0x53, 0x69, 0x67, - 0x73, 0x52, 0x0a, 0x6e, 0x6f, 0x74, 0x61, 0x72, 0x79, 0x53, 0x69, 0x67, 0x73, 0x22, 0x6d, 0x0a, - 0x16, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x72, 0x44, 0x65, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x64, 0x12, 0x53, 0x0a, 0x11, 0x70, 0x65, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, - 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x70, 0x65, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x64, 0x22, 0x67, 0x0a, 0x14, - 0x53, 0x74, 0x61, 0x6b, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x64, 0x12, 0x4f, 0x0a, 0x0f, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, - 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, + 0x4c, 0x41, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, + 0x10, 0x73, 0x6c, 0x61, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x22, 0x5e, 0x0a, 0x0a, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x73, 0x12, + 0x23, 0x0a, 0x0d, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x4d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, + 0x72, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x10, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, + 0x73, 0x22, 0x97, 0x02, 0x0a, 0x08, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, + 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x10, 0x0a, + 0x03, 0x62, 0x75, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x62, 0x75, 0x79, 0x12, + 0x12, 0x0a, 0x04, 0x73, 0x65, 0x6c, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, + 0x65, 0x6c, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x62, 0x75, 0x79, + 0x5f, 0x73, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x62, 0x75, 0x79, 0x53, 0x75, 0x6d, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, + 0x74, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x65, 0x6c, 0x6c, 0x5f, 0x73, 0x75, 0x6d, 0x5f, 0x70, 0x72, + 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x65, 0x6c, + 0x6c, 0x53, 0x75, 0x6d, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x64, + 0x69, 0x73, 0x74, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0a, 0x64, 0x69, 0x73, 0x74, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x61, + 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x72, 0x69, + 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x11, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, + 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x72, 0x69, 0x63, 0x65, 0x22, 0xb7, 0x01, 0x0a, 0x0f, + 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x09, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4d, 0x0a, 0x0f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x65, + 0x73, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x24, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x73, 0x22, 0x86, 0x02, 0x0a, 0x12, 0x50, 0x61, 0x72, 0x74, 0x79, 0x50, + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, + 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, + 0x74, 0x79, 0x12, 0x35, 0x0a, 0x14, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6f, 0x70, 0x65, + 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, + 0x48, 0x00, 0x52, 0x12, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x65, 0x73, 0x74, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x14, 0x6c, 0x6f, 0x77, + 0x65, 0x73, 0x74, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x12, 0x6c, 0x6f, 0x77, 0x65, 0x73, + 0x74, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x28, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x64, 0x65, 0x64, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x64, 0x65, + 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6c, + 0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x65, 0x73, 0x74, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6c, 0x6f, 0x77, 0x65, 0x73, 0x74, 0x5f, 0x6f, + 0x70, 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74, 0x42, 0x10, 0x0a, 0x0e, + 0x5f, 0x74, 0x72, 0x61, 0x64, 0x65, 0x64, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x22, 0xee, + 0x01, 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, + 0x26, 0x0a, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x70, 0x72, 0x69, + 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x61, + 0x72, 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x5b, 0x0a, 0x16, 0x6c, 0x61, 0x73, 0x74, 0x5f, + 0x73, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, + 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x61, 0x73, 0x74, 0x53, + 0x65, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x14, + 0x6c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x39, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x04, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, + 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x52, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x22, + 0x56, 0x0a, 0x13, 0x4c, 0x61, 0x73, 0x74, 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x50, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x29, 0x0a, 0x10, + 0x73, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x73, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x64, 0x50, + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x94, 0x01, 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x74, + 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x70, + 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, + 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, + 0x69, 0x7a, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x65, 0x77, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6e, 0x65, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x22, 0xbd, + 0x01, 0x0a, 0x08, 0x41, 0x70, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x68, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, + 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, + 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x22, 0xc3, + 0x01, 0x0a, 0x0a, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x10, 0x0a, + 0x03, 0x73, 0x65, 0x71, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x73, 0x65, 0x71, 0x12, + 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1f, + 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x36, 0x0a, 0x18, 0x72, 0x65, 0x61, 0x64, 0x79, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x14, 0x72, 0x65, 0x61, 0x64, 0x79, 0x54, 0x6f, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4e, + 0x65, 0x77, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x2b, 0x0a, 0x12, 0x72, 0x65, 0x61, 0x64, 0x79, + 0x5f, 0x74, 0x6f, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x79, 0x54, 0x6f, 0x45, 0x6e, 0x64, 0x45, + 0x70, 0x6f, 0x63, 0x68, 0x22, 0x7b, 0x0a, 0x15, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x50, + 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x73, 0x12, 0x62, 0x0a, + 0x18, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x73, 0x5f, 0x70, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x28, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, + 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x73, 0x50, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x52, 0x16, 0x73, 0x63, 0x68, 0x65, 0x64, + 0x75, 0x6c, 0x65, 0x64, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x50, 0x61, 0x79, 0x6f, 0x75, + 0x74, 0x22, 0x81, 0x01, 0x0a, 0x16, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x64, 0x52, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x50, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x12, 0x1f, 0x0a, 0x0b, + 0x70, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0a, 0x70, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x46, 0x0a, + 0x0e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x70, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, + 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, + 0x50, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x52, 0x0d, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x50, + 0x61, 0x79, 0x6f, 0x75, 0x74, 0x22, 0xfc, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x73, 0x50, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x5f, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, + 0x72, 0x6f, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x73, + 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, + 0x12, 0x54, 0x0a, 0x13, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, + 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, - 0x2e, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x72, 0x50, 0x65, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x0e, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x22, 0x85, 0x02, 0x0a, 0x14, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x56, - 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x72, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x29, - 0x0a, 0x10, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, - 0x75, 0x6d, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x76, 0x65, 0x67, - 0x61, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x76, 0x65, 0x67, 0x61, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, - 0x79, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x6c, - 0x6f, 0x67, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, - 0x6c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x13, 0x0a, 0x05, 0x74, 0x78, 0x5f, 0x69, - 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x78, 0x49, 0x64, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x64, 0x0a, - 0x0c, 0x4c, 0x32, 0x45, 0x74, 0x68, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x73, 0x12, 0x54, 0x0a, - 0x14, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x5f, 0x65, 0x74, 0x68, 0x5f, 0x6f, 0x72, - 0x61, 0x63, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x65, - 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x45, 0x74, 0x68, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x73, - 0x52, 0x11, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x45, 0x74, 0x68, 0x4f, 0x72, 0x61, 0x63, - 0x6c, 0x65, 0x73, 0x22, 0x92, 0x02, 0x0a, 0x11, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x45, - 0x74, 0x68, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x49, - 0x64, 0x12, 0x4b, 0x0a, 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, + 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x6d, 0x6f, + 0x75, 0x6e, 0x74, 0x52, 0x11, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x50, 0x61, 0x72, 0x74, 0x79, + 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, + 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x70, 0x6f, + 0x63, 0x68, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x70, + 0x6f, 0x63, 0x68, 0x53, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x22, 0x42, 0x0a, 0x12, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x50, + 0x61, 0x72, 0x74, 0x79, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, + 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, + 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x94, 0x04, 0x0a, 0x0a, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x61, 0x6e, 0x5f, + 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x63, 0x61, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, + 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x61, 0x6e, 0x5f, 0x70, 0x72, + 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0f, 0x63, 0x61, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x41, 0x73, 0x73, + 0x65, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x5f, 0x6c, 0x6f, + 0x61, 0x64, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x67, 0x65, 0x6e, 0x65, + 0x73, 0x69, 0x73, 0x4c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x70, 0x72, 0x6f, + 0x70, 0x6f, 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x70, 0x72, 0x6f, 0x70, 0x6f, + 0x73, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, + 0x32, 0x0a, 0x15, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, + 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, + 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x45, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x64, 0x12, 0x3d, 0x0a, 0x1b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x5f, 0x6d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x66, 0x72, + 0x6f, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x18, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x46, 0x72, + 0x6f, 0x6d, 0x12, 0x3b, 0x0a, 0x1a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x5f, 0x61, 0x73, + 0x73, 0x65, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x66, 0x72, 0x6f, 0x6d, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x17, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x41, + 0x73, 0x73, 0x65, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x12, + 0x3d, 0x0a, 0x1b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x53, 0x70, 0x6f, + 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x3f, + 0x0a, 0x1c, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x70, 0x73, 0x5f, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x19, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x50, 0x65, 0x72, + 0x70, 0x73, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, + 0x94, 0x04, 0x0a, 0x0e, 0x56, 0x6f, 0x74, 0x65, 0x53, 0x70, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x12, 0x4c, 0x0a, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x74, 0x6f, 0x5f, 0x76, + 0x6f, 0x74, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x76, 0x65, 0x67, 0x61, + 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, + 0x74, 0x79, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x56, 0x6f, 0x74, 0x65, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x79, 0x54, 0x6f, 0x56, 0x6f, 0x74, 0x65, + 0x12, 0x44, 0x0a, 0x0e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, + 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, + 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x6e, 0x6e, + 0x65, 0x64, 0x50, 0x61, 0x72, 0x74, 0x79, 0x52, 0x0d, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x50, + 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x0d, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, + 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, + 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x61, 0x6c, 0x61, 0x6e, + 0x63, 0x65, 0x52, 0x0c, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, + 0x12, 0x5f, 0x0a, 0x1a, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x73, 0x5f, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x04, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, + 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x6a, + 0x65, 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x17, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, + 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x64, 0x65, + 0x78, 0x12, 0x2e, 0x0a, 0x13, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x61, + 0x73, 0x65, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, + 0x6c, 0x61, 0x73, 0x74, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x70, 0x6f, + 0x63, 0x68, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x63, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x53, 0x65, 0x71, 0x12, 0x37, 0x0a, + 0x18, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x73, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x15, 0x6d, 0x69, 0x6e, 0x56, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, + 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x60, 0x0a, 0x16, 0x50, 0x61, 0x72, 0x74, 0x79, 0x50, + 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x56, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x43, 0x0a, 0x11, 0x50, 0x61, 0x72, 0x74, + 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, + 0x72, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x44, 0x0a, + 0x10, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, + 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x08, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x14, 0x0a, + 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x22, 0x47, 0x0a, 0x19, 0x53, 0x70, 0x61, 0x6d, 0x50, 0x61, 0x72, 0x74, 0x79, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xc2, 0x02, 0x0a, + 0x10, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x53, 0x70, 0x61, 0x6d, 0x50, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x51, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x74, 0x6f, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x76, 0x65, 0x67, + 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x70, + 0x61, 0x6d, 0x50, 0x61, 0x72, 0x74, 0x79, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x0c, 0x70, 0x61, 0x72, 0x74, 0x79, 0x54, 0x6f, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x0e, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x5f, + 0x70, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, + 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, + 0x2e, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x50, 0x61, 0x72, 0x74, 0x79, 0x52, 0x0d, 0x62, 0x61, + 0x6e, 0x6e, 0x65, 0x64, 0x50, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x0d, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, + 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x0c, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x61, + 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, + 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x53, 0x65, + 0x71, 0x22, 0x70, 0x0a, 0x0a, 0x4e, 0x6f, 0x74, 0x61, 0x72, 0x79, 0x53, 0x69, 0x67, 0x73, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6b, + 0x69, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x69, 0x67, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x65, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x70, 0x65, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x22, 0x47, 0x0a, 0x06, 0x4e, 0x6f, 0x74, 0x61, 0x72, 0x79, 0x12, 0x3d, 0x0a, + 0x0b, 0x6e, 0x6f, 0x74, 0x61, 0x72, 0x79, 0x5f, 0x73, 0x69, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, + 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x74, 0x61, 0x72, 0x79, 0x53, 0x69, 0x67, 0x73, + 0x52, 0x0a, 0x6e, 0x6f, 0x74, 0x61, 0x72, 0x79, 0x53, 0x69, 0x67, 0x73, 0x22, 0x6d, 0x0a, 0x16, + 0x53, 0x74, 0x61, 0x6b, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x72, 0x44, 0x65, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x65, 0x64, 0x12, 0x53, 0x0a, 0x11, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x26, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, + 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x70, 0x65, 0x6e, 0x64, 0x69, + 0x6e, 0x67, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x64, 0x22, 0x67, 0x0a, 0x14, 0x53, + 0x74, 0x61, 0x6b, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x64, 0x12, 0x4f, 0x0a, 0x0f, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x76, + 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, + 0x53, 0x74, 0x61, 0x6b, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x72, 0x50, 0x65, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x52, 0x0e, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x64, 0x22, 0x85, 0x02, 0x0a, 0x14, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x56, 0x65, + 0x72, 0x69, 0x66, 0x69, 0x65, 0x72, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x29, 0x0a, + 0x10, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, + 0x6d, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x76, 0x65, 0x67, 0x61, + 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x76, 0x65, 0x67, 0x61, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, + 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x6f, + 0x67, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6c, + 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x13, 0x0a, 0x05, 0x74, 0x78, 0x5f, 0x69, 0x64, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x78, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x64, 0x0a, 0x0c, + 0x4c, 0x32, 0x45, 0x74, 0x68, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x73, 0x12, 0x54, 0x0a, 0x14, + 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x5f, 0x65, 0x74, 0x68, 0x5f, 0x6f, 0x72, 0x61, + 0x63, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x65, 0x67, + 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, + 0x61, 0x69, 0x6e, 0x49, 0x64, 0x45, 0x74, 0x68, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x73, 0x52, + 0x11, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x45, 0x74, 0x68, 0x4f, 0x72, 0x61, 0x63, 0x6c, + 0x65, 0x73, 0x22, 0x92, 0x02, 0x0a, 0x11, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x45, 0x74, + 0x68, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, + 0x12, 0x4b, 0x0a, 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, + 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x74, 0x68, 0x4f, 0x72, 0x61, 0x63, 0x6c, + 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4c, 0x61, 0x73, 0x74, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x52, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x4b, 0x0a, + 0x0c, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, + 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, + 0x63, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x0b, 0x63, + 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x3b, 0x0a, 0x04, 0x6d, 0x69, + 0x73, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, + 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x74, 0x68, 0x4f, + 0x72, 0x61, 0x63, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4d, 0x69, 0x73, + 0x63, 0x52, 0x04, 0x6d, 0x69, 0x73, 0x63, 0x22, 0x5e, 0x0a, 0x1a, 0x45, 0x74, 0x68, 0x4f, 0x72, + 0x61, 0x63, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4c, 0x61, 0x73, 0x74, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xa5, 0x01, 0x0a, 0x15, 0x45, 0x74, 0x68, 0x4f, + 0x72, 0x61, 0x63, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4d, 0x69, 0x73, + 0x63, 0x12, 0x3d, 0x0a, 0x07, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, + 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x74, 0x68, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x07, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, + 0x12, 0x4d, 0x0a, 0x0b, 0x70, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x74, 0x68, 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4c, 0x61, 0x73, 0x74, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x52, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x4b, - 0x0a, 0x0c, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, - 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x61, 0x63, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x0b, - 0x63, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x3b, 0x0a, 0x04, 0x6d, - 0x69, 0x73, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x76, 0x65, 0x67, 0x61, - 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x74, 0x68, - 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4d, 0x69, - 0x73, 0x63, 0x52, 0x04, 0x6d, 0x69, 0x73, 0x63, 0x22, 0x5e, 0x0a, 0x1a, 0x45, 0x74, 0x68, 0x4f, - 0x72, 0x61, 0x63, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4c, 0x61, 0x73, - 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, - 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xa5, 0x01, 0x0a, 0x15, 0x45, 0x74, 0x68, - 0x4f, 0x72, 0x61, 0x63, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4d, 0x69, - 0x73, 0x63, 0x12, 0x3d, 0x0a, 0x07, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, - 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x74, 0x68, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x07, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x73, 0x12, 0x4d, 0x0a, 0x0b, 0x70, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, - 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x74, 0x68, 0x4f, 0x72, 0x61, - 0x63, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4c, 0x61, 0x73, 0x74, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x0a, 0x70, 0x61, 0x74, 0x63, 0x68, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x22, 0x82, 0x01, 0x0a, 0x16, 0x45, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, - 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x68, 0x0a, 0x1c, 0x70, - 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, - 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x27, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, - 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, - 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x19, 0x70, 0x65, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0xdc, 0x01, 0x0a, 0x15, 0x45, 0x74, 0x68, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x61, 0x63, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, - 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x73, 0x70, 0x65, 0x63, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x12, 0x19, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, - 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x48, - 0x01, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x63, 0x68, 0x61, 0x69, - 0x6e, 0x5f, 0x69, 0x64, 0x22, 0x3b, 0x0a, 0x11, 0x45, 0x74, 0x68, 0x56, 0x65, 0x72, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x61, 0x73, - 0x68, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x65, - 0x73, 0x22, 0x9b, 0x01, 0x0a, 0x12, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, - 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x6e, - 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, - 0x64, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0b, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x75, 0x62, 0x5f, - 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x65, 0x77, 0x50, 0x75, - 0x62, 0x4b, 0x65, 0x79, 0x12, 0x29, 0x0a, 0x11, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x75, 0x62, 0x5f, - 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x0e, 0x6e, 0x65, 0x77, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, - 0xb8, 0x01, 0x0a, 0x1a, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x74, 0x68, 0x65, 0x72, - 0x65, 0x75, 0x6d, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, + 0x6f, 0x63, 0x6b, 0x52, 0x0a, 0x70, 0x61, 0x74, 0x63, 0x68, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x22, + 0x82, 0x01, 0x0a, 0x16, 0x45, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x43, + 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x68, 0x0a, 0x1c, 0x70, 0x65, + 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x5f, 0x63, + 0x61, 0x6c, 0x6c, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x27, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, + 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x43, + 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x19, 0x70, 0x65, 0x6e, 0x64, 0x69, + 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x22, 0xdc, 0x01, 0x0a, 0x15, 0x45, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x61, 0x63, 0x74, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x65, - 0x77, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x6e, 0x65, 0x77, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x73, - 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x6c, 0x64, - 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x6f, 0x6c, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0xdd, 0x04, 0x0a, 0x08, 0x54, - 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x47, 0x0a, 0x0e, 0x76, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x20, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, - 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x52, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x44, 0x61, 0x74, 0x61, - 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x12, - 0x5f, 0x0a, 0x19, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x75, 0x62, 0x5f, 0x6b, - 0x65, 0x79, 0x5f, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, - 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, - 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, - 0x67, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x5b, 0x0a, 0x15, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x70, 0x65, - 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x26, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, - 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x65, 0x72, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x14, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x6f, 0x72, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x71, 0x0a, - 0x1e, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, - 0x6d, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, - 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, - 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x1b, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x74, 0x68, 0x65, - 0x72, 0x65, 0x75, 0x6d, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x43, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, - 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x70, 0x6c, 0x6f, 0x67, 0x79, 0x53, - 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x73, 0x0a, 0x1f, 0x75, 0x6e, 0x73, 0x6f, 0x6c, 0x76, 0x65, - 0x64, 0x5f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x72, - 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, + 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x17, 0x0a, 0x07, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x73, 0x70, 0x65, 0x63, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x12, 0x19, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, + 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, + 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, + 0x5f, 0x69, 0x64, 0x22, 0x3b, 0x0a, 0x11, 0x45, 0x74, 0x68, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x61, 0x73, 0x68, + 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, + 0x22, 0x9b, 0x01, 0x0a, 0x12, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x52, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, + 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, + 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0b, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x75, 0x62, 0x5f, 0x6b, + 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x65, 0x77, 0x50, 0x75, 0x62, + 0x4b, 0x65, 0x79, 0x12, 0x29, 0x0a, 0x11, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x75, 0x62, 0x5f, 0x6b, + 0x65, 0x79, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, + 0x6e, 0x65, 0x77, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0xb8, + 0x01, 0x0a, 0x1a, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, + 0x75, 0x6d, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, + 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x65, 0x77, + 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x6e, 0x65, 0x77, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x75, + 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, + 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x6c, 0x64, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, + 0x6c, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0xdd, 0x04, 0x0a, 0x08, 0x54, 0x6f, + 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x47, 0x0a, 0x0e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x6f, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, - 0x6d, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x1c, 0x75, 0x6e, - 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x4b, 0x65, - 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xde, 0x01, 0x0a, 0x11, 0x54, - 0x6f, 0x70, 0x6c, 0x6f, 0x67, 0x79, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, - 0x12, 0x65, 0x0a, 0x12, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x69, 0x67, 0x6e, - 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x76, - 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, - 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, - 0x69, 0x73, 0x69, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x52, 0x11, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x67, - 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x62, 0x0a, 0x11, 0x69, 0x73, 0x73, 0x75, 0x65, - 0x64, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, - 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x64, 0x45, 0x52, 0x43, 0x32, - 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x73, 0x69, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x10, 0x69, 0x73, 0x73, 0x75, 0x65, - 0x64, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x22, 0xb3, 0x01, 0x0a, 0x24, - 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, - 0x69, 0x73, 0x69, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x61, - 0x74, 0x75, 0x72, 0x65, 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, 0x29, 0x0a, - 0x10, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, - 0x6d, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x1b, - 0x0a, 0x09, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x08, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x53, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x61, - 0x64, 0x64, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, - 0x64, 0x22, 0xb9, 0x01, 0x0a, 0x23, 0x49, 0x73, 0x73, 0x75, 0x65, 0x64, 0x45, 0x52, 0x43, 0x32, - 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x73, 0x69, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x65, 0x74, - 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x41, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, - 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x10, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x22, 0xf2, 0x03, - 0x0a, 0x0e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x12, 0x4a, 0x0a, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, - 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, - 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x0f, 0x76, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x64, 0x64, 0x65, 0x64, 0x12, 0x16, 0x0a, - 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x11, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x46, 0x0a, 0x20, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x1c, 0x6c, 0x61, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x57, 0x69, 0x74, 0x68, 0x50, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x52, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x12, 0x30, 0x0a, - 0x14, 0x65, 0x74, 0x68, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x66, 0x6f, 0x72, 0x77, - 0x61, 0x72, 0x64, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x12, 0x65, 0x74, 0x68, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x64, 0x12, - 0x4f, 0x0a, 0x11, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x5f, 0x74, 0x72, 0x61, - 0x63, 0x6b, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x76, 0x65, 0x67, - 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, - 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x72, 0x52, 0x10, - 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x72, - 0x12, 0x27, 0x0a, 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x70, 0x6f, - 0x77, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x76, 0x61, 0x6c, 0x69, 0x64, - 0x61, 0x74, 0x6f, 0x72, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x37, 0x0a, 0x0d, 0x72, 0x61, 0x6e, - 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x12, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x53, - 0x63, 0x6f, 0x72, 0x65, 0x52, 0x0c, 0x72, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x53, 0x63, 0x6f, - 0x72, 0x65, 0x22, 0xb9, 0x01, 0x0a, 0x10, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, - 0x54, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x12, 0x65, 0x78, 0x70, 0x65, 0x63, - 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x10, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4e, 0x65, 0x78, - 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x37, 0x0a, 0x18, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, - 0x64, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x73, 0x69, 0x6e, 0x63, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x15, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, - 0x64, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x61, 0x73, 0x68, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x1f, - 0x0a, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, - 0x1d, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x69, 0x67, 0x73, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x08, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x69, 0x67, 0x73, 0x22, 0x99, - 0x02, 0x0a, 0x10, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, - 0x61, 0x74, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, - 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, - 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, - 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x65, - 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x64, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x64, 0x12, 0x2a, 0x0a, 0x11, - 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x76, 0x6f, 0x74, 0x65, - 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x48, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x56, 0x6f, 0x74, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, - 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x64, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x48, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x6c, 0x61, - 0x73, 0x74, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, - 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x48, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x22, 0x6c, 0x0a, 0x14, 0x56, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, - 0x63, 0x65, 0x12, 0x54, 0x0a, 0x14, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, - 0x70, 0x65, 0x72, 0x66, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x22, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x52, 0x12, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x50, - 0x65, 0x72, 0x66, 0x53, 0x74, 0x61, 0x74, 0x73, 0x22, 0xae, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x71, - 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, - 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x65, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x6d, 0x61, 0x78, 0x46, 0x65, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x61, 0x78, - 0x5f, 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x53, 0x68, 0x61, 0x70, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, - 0x3b, 0x0a, 0x1a, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x6f, 0x62, 0x6c, 0x69, - 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x17, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x54, 0x6f, 0x4f, 0x62, 0x6c, 0x69, - 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x1b, 0x0a, 0x09, - 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x22, 0x68, 0x0a, 0x1a, 0x4c, 0x69, 0x71, - 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, - 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x70, 0x65, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x11, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x49, 0x64, 0x22, 0x80, 0x01, 0x0a, 0x1f, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, - 0x79, 0x50, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, - 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x40, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x74, 0x79, - 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, + 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x52, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x5f, + 0x0a, 0x19, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x75, 0x62, 0x5f, 0x6b, 0x65, + 0x79, 0x5f, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x24, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, + 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x52, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x5b, 0x0a, 0x15, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x70, 0x65, 0x72, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, + 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, + 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x65, 0x72, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x14, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, + 0x72, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x71, 0x0a, 0x1e, + 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, + 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, + 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x45, + 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x1b, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x74, 0x68, 0x65, 0x72, + 0x65, 0x75, 0x6d, 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x43, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, + 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x70, 0x6c, 0x6f, 0x67, 0x79, 0x53, 0x69, + 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x73, 0x12, 0x73, 0x0a, 0x1f, 0x75, 0x6e, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, + 0x5f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x72, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x0b, 0x70, 0x61, - 0x72, 0x74, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x22, 0x48, 0x0a, 0x0b, 0x50, 0x61, 0x72, 0x74, 0x79, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x23, 0x0a, 0x06, 0x6f, - 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, - 0x67, 0x61, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, - 0x22, 0x77, 0x0a, 0x16, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x61, 0x72, - 0x74, 0x69, 0x65, 0x73, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x40, 0x0a, 0x0c, 0x70, 0x61, - 0x72, 0x74, 0x79, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, - 0x0b, 0x70, 0x61, 0x72, 0x74, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x1b, 0x0a, 0x09, - 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x22, 0x7f, 0x0a, 0x13, 0x4c, 0x69, 0x71, - 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x4b, 0x0a, 0x14, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, - 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, - 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, - 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, - 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1b, 0x0a, - 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x22, 0xa0, 0x01, 0x0a, 0x0f, 0x4c, - 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x36, - 0x0a, 0x17, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, - 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x15, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x41, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, - 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, - 0x69, 0x74, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x06, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, - 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x22, 0x41, 0x0a, - 0x0e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, - 0x22, 0x86, 0x02, 0x0a, 0x15, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x56, 0x32, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x50, 0x0a, 0x15, 0x6d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x5f, 0x73, 0x6c, 0x61, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4c, 0x69, - 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x53, 0x4c, 0x41, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, - 0x74, 0x65, 0x72, 0x73, 0x52, 0x13, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x53, 0x6c, 0x61, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x73, 0x74, 0x61, - 0x6b, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x54, 0x6f, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x62, 0x6f, 0x6e, 0x64, 0x5f, 0x70, 0x65, 0x6e, 0x61, 0x6c, 0x74, - 0x79, 0x5f, 0x73, 0x6c, 0x6f, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x62, - 0x6f, 0x6e, 0x64, 0x50, 0x65, 0x6e, 0x61, 0x6c, 0x74, 0x79, 0x53, 0x6c, 0x6f, 0x70, 0x65, 0x12, - 0x28, 0x0a, 0x10, 0x62, 0x6f, 0x6e, 0x64, 0x5f, 0x70, 0x65, 0x6e, 0x61, 0x6c, 0x74, 0x79, 0x5f, - 0x6d, 0x61, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x62, 0x6f, 0x6e, 0x64, 0x50, - 0x65, 0x6e, 0x61, 0x6c, 0x74, 0x79, 0x4d, 0x61, 0x78, 0x22, 0x75, 0x0a, 0x18, 0x4c, 0x69, 0x71, - 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x56, 0x32, 0x50, 0x61, 0x69, 0x64, 0x46, 0x65, 0x65, 0x73, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x49, 0x64, 0x12, 0x3c, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x26, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x50, 0x61, 0x69, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, - 0x46, 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, - 0x22, 0x81, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x56, 0x32, - 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x4b, 0x0a, 0x14, 0x6c, 0x69, 0x71, 0x75, 0x69, - 0x64, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4c, 0x69, 0x71, - 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, - 0x13, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x97, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, - 0x74, 0x79, 0x56, 0x32, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x76, 0x69, + 0x2e, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, + 0x4b, 0x65, 0x79, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x1c, 0x75, 0x6e, 0x73, + 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x4b, 0x65, 0x79, + 0x52, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xde, 0x01, 0x0a, 0x11, 0x54, 0x6f, + 0x70, 0x6c, 0x6f, 0x67, 0x79, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, + 0x65, 0x0a, 0x12, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x76, 0x65, + 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, + 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, + 0x73, 0x69, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x52, 0x11, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x67, 0x6e, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x62, 0x0a, 0x11, 0x69, 0x73, 0x73, 0x75, 0x65, 0x64, + 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x35, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, + 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x64, 0x45, 0x52, 0x43, 0x32, 0x30, + 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x73, 0x69, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, + 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x10, 0x69, 0x73, 0x73, 0x75, 0x65, 0x64, + 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x22, 0xb3, 0x01, 0x0a, 0x24, 0x50, + 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, + 0x73, 0x69, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, + 0x75, 0x72, 0x65, 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, 0x29, 0x0a, 0x10, + 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x1b, 0x0a, + 0x09, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x08, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x53, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x64, + 0x64, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, + 0x22, 0xb9, 0x01, 0x0a, 0x23, 0x49, 0x73, 0x73, 0x75, 0x65, 0x64, 0x45, 0x52, 0x43, 0x32, 0x30, + 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x73, 0x69, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, + 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x65, 0x74, 0x68, + 0x65, 0x72, 0x65, 0x75, 0x6d, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0f, 0x65, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, + 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x10, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x22, 0xf2, 0x03, 0x0a, + 0x0e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, + 0x4a, 0x0a, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, + 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x0f, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x6f, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x64, 0x64, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x11, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x46, 0x0a, 0x20, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x72, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x1c, + 0x6c, 0x61, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x57, 0x69, 0x74, 0x68, 0x50, 0x6f, 0x73, + 0x69, 0x74, 0x69, 0x76, 0x65, 0x52, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x12, 0x30, 0x0a, 0x14, + 0x65, 0x74, 0x68, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, + 0x72, 0x64, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x12, 0x65, 0x74, 0x68, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x65, 0x64, 0x12, 0x4f, + 0x0a, 0x11, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x63, + 0x6b, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x76, 0x65, 0x67, 0x61, + 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, + 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x72, 0x52, 0x10, 0x68, + 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x72, 0x12, + 0x27, 0x0a, 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x70, 0x6f, 0x77, + 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x6f, 0x72, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x37, 0x0a, 0x0d, 0x72, 0x61, 0x6e, 0x6b, + 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x12, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x53, 0x63, + 0x6f, 0x72, 0x65, 0x52, 0x0c, 0x72, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x22, 0xb9, 0x01, 0x0a, 0x10, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x54, + 0x72, 0x61, 0x63, 0x6b, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x12, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, + 0x65, 0x64, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x10, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4e, 0x65, 0x78, 0x74, + 0x48, 0x61, 0x73, 0x68, 0x12, 0x37, 0x0a, 0x18, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, + 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x15, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, + 0x4e, 0x65, 0x78, 0x74, 0x48, 0x61, 0x73, 0x68, 0x53, 0x69, 0x6e, 0x63, 0x65, 0x12, 0x1f, 0x0a, + 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1d, + 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x69, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x08, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x69, 0x67, 0x73, 0x22, 0x99, 0x02, + 0x0a, 0x10, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, + 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x64, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x6c, + 0x61, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x76, 0x6f, 0x74, 0x65, 0x64, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x48, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x56, 0x6f, 0x74, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x5f, + 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x6c, 0x61, 0x73, + 0x74, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x48, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x45, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x22, 0x6c, 0x0a, 0x14, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, + 0x65, 0x12, 0x54, 0x0a, 0x14, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x70, + 0x65, 0x72, 0x66, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x22, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x52, 0x12, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x65, + 0x72, 0x66, 0x53, 0x74, 0x61, 0x74, 0x73, 0x22, 0xae, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x71, 0x75, + 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, + 0x17, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x65, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x6d, 0x61, 0x78, 0x46, 0x65, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, + 0x73, 0x68, 0x61, 0x70, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x53, 0x68, 0x61, 0x70, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x3b, + 0x0a, 0x1a, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x6f, 0x62, 0x6c, 0x69, 0x67, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x17, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x54, 0x6f, 0x4f, 0x62, 0x6c, 0x69, 0x67, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x6d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x22, 0x68, 0x0a, 0x1a, 0x4c, 0x69, 0x71, 0x75, + 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x76, + 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x11, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, - 0x49, 0x64, 0x12, 0x5a, 0x0a, 0x1c, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x69, - 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, - 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, - 0x6f, 0x6e, 0x52, 0x1a, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x71, 0x75, 0x69, - 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xc6, - 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x56, 0x32, 0x50, 0x65, - 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x65, 0x70, 0x6f, 0x63, 0x68, - 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x0e, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x64, 0x0a, 0x15, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, - 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x30, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x56, 0x32, 0x50, - 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x72, 0x50, 0x61, 0x72, - 0x74, 0x79, 0x52, 0x13, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x50, - 0x65, 0x72, 0x50, 0x61, 0x72, 0x74, 0x79, 0x22, 0x93, 0x05, 0x0a, 0x1e, 0x4c, 0x69, 0x71, 0x75, - 0x69, 0x64, 0x69, 0x74, 0x79, 0x56, 0x32, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, - 0x63, 0x65, 0x50, 0x65, 0x72, 0x50, 0x61, 0x72, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, - 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, - 0x12, 0x4f, 0x0a, 0x25, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x5f, 0x6d, 0x65, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x61, 0x5f, 0x64, 0x75, 0x72, - 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x20, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x65, 0x65, 0x74, - 0x69, 0x6e, 0x67, 0x53, 0x6c, 0x61, 0x44, 0x75, 0x72, 0x69, 0x6e, 0x67, 0x45, 0x70, 0x6f, 0x63, - 0x68, 0x12, 0x32, 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x5f, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x13, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x72, - 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x1e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, - 0x72, 0x65, 0x64, 0x5f, 0x70, 0x65, 0x6e, 0x61, 0x6c, 0x74, 0x69, 0x65, 0x73, 0x5f, 0x70, 0x65, - 0x72, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x1b, 0x72, - 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x50, 0x65, 0x6e, 0x61, 0x6c, 0x74, 0x69, - 0x65, 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x44, 0x0a, 0x1f, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x65, 0x6e, 0x61, 0x6c, 0x74, - 0x69, 0x65, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x1b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x50, - 0x65, 0x6e, 0x61, 0x6c, 0x74, 0x69, 0x65, 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, 0x63, 0x68, - 0x12, 0x4a, 0x0a, 0x23, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x66, - 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x66, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, - 0x6f, 0x6e, 0x5f, 0x62, 0x6f, 0x6f, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1d, 0x6c, - 0x61, 0x73, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x46, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x4f, 0x66, 0x54, 0x69, 0x6d, 0x65, 0x4f, 0x6e, 0x42, 0x6f, 0x6f, 0x6b, 0x12, 0x33, 0x0a, 0x16, - 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x70, - 0x65, 0x6e, 0x61, 0x6c, 0x74, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6c, 0x61, - 0x73, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x46, 0x65, 0x65, 0x50, 0x65, 0x6e, 0x61, 0x6c, 0x74, - 0x79, 0x12, 0x35, 0x0a, 0x17, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, - 0x62, 0x6f, 0x6e, 0x64, 0x5f, 0x70, 0x65, 0x6e, 0x61, 0x6c, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x42, 0x6f, 0x6e, - 0x64, 0x50, 0x65, 0x6e, 0x61, 0x6c, 0x74, 0x79, 0x12, 0x2d, 0x0a, 0x12, 0x72, 0x65, 0x71, 0x75, - 0x69, 0x72, 0x65, 0x64, 0x5f, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x4c, 0x69, - 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x12, 0x30, 0x0a, 0x14, 0x6e, 0x6f, 0x74, 0x69, 0x6f, - 0x6e, 0x61, 0x6c, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x62, 0x75, 0x79, 0x73, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x42, 0x75, 0x79, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x6e, 0x6f, 0x74, - 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x73, 0x65, 0x6c, - 0x6c, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x65, 0x6c, 0x6c, 0x73, 0x22, 0x9a, 0x02, - 0x0a, 0x11, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x56, 0x32, 0x53, 0x63, 0x6f, - 0x72, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, - 0x12, 0x36, 0x0a, 0x17, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x76, 0x65, 0x72, - 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x15, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x41, 0x76, 0x65, 0x72, 0x61, 0x67, - 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x72, - 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, - 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x71, 0x75, - 0x69, 0x64, 0x69, 0x74, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x06, 0x73, 0x63, 0x6f, 0x72, - 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x1a, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x64, - 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x17, 0x6c, 0x61, 0x73, 0x74, 0x46, 0x65, 0x65, 0x44, - 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x39, 0x0a, 0x19, 0x66, 0x65, 0x65, 0x5f, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x16, 0x66, 0x65, 0x65, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x65, 0x70, 0x22, 0xfd, 0x01, 0x0a, 0x13, 0x4c, - 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x56, 0x32, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x69, - 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, - 0x2b, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x5f, 0x72, 0x65, 0x61, - 0x63, 0x68, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x73, - 0x65, 0x6e, 0x73, 0x75, 0x73, 0x52, 0x65, 0x61, 0x63, 0x68, 0x65, 0x64, 0x12, 0x4d, 0x0a, 0x09, - 0x62, 0x69, 0x64, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, + 0x49, 0x64, 0x22, 0x80, 0x01, 0x0a, 0x1f, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, + 0x50, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x40, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, + 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, + 0x50, 0x61, 0x72, 0x74, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x0b, 0x70, 0x61, 0x72, + 0x74, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, + 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, + 0x6b, 0x65, 0x74, 0x49, 0x64, 0x22, 0x48, 0x0a, 0x0b, 0x50, 0x61, 0x72, 0x74, 0x79, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x23, 0x0a, 0x06, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, 0x67, + 0x61, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x22, + 0x77, 0x0a, 0x16, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x61, 0x72, 0x74, + 0x69, 0x65, 0x73, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x40, 0x0a, 0x0c, 0x70, 0x61, 0x72, + 0x74, 0x79, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x0b, + 0x70, 0x61, 0x72, 0x74, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x22, 0x7f, 0x0a, 0x13, 0x4c, 0x69, 0x71, 0x75, + 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x4b, 0x0a, 0x14, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, + 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, + 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, + 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1b, 0x0a, 0x09, + 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x22, 0xa0, 0x01, 0x0a, 0x0f, 0x4c, 0x69, + 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x36, 0x0a, + 0x17, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, + 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x41, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, + 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, + 0x74, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x06, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x12, + 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x22, 0x41, 0x0a, 0x0e, + 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, + 0x63, 0x6f, 0x72, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x22, + 0x86, 0x02, 0x0a, 0x15, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x56, 0x32, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, + 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x50, 0x0a, 0x15, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, + 0x5f, 0x73, 0x6c, 0x61, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4c, 0x69, 0x71, + 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x53, 0x4c, 0x41, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, + 0x65, 0x72, 0x73, 0x52, 0x13, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x53, 0x6c, 0x61, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x6b, + 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x54, 0x6f, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x12, 0x2c, 0x0a, 0x12, 0x62, 0x6f, 0x6e, 0x64, 0x5f, 0x70, 0x65, 0x6e, 0x61, 0x6c, 0x74, 0x79, + 0x5f, 0x73, 0x6c, 0x6f, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x62, 0x6f, + 0x6e, 0x64, 0x50, 0x65, 0x6e, 0x61, 0x6c, 0x74, 0x79, 0x53, 0x6c, 0x6f, 0x70, 0x65, 0x12, 0x28, + 0x0a, 0x10, 0x62, 0x6f, 0x6e, 0x64, 0x5f, 0x70, 0x65, 0x6e, 0x61, 0x6c, 0x74, 0x79, 0x5f, 0x6d, + 0x61, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x62, 0x6f, 0x6e, 0x64, 0x50, 0x65, + 0x6e, 0x61, 0x6c, 0x74, 0x79, 0x4d, 0x61, 0x78, 0x22, 0x75, 0x0a, 0x18, 0x4c, 0x69, 0x71, 0x75, + 0x69, 0x64, 0x69, 0x74, 0x79, 0x56, 0x32, 0x50, 0x61, 0x69, 0x64, 0x46, 0x65, 0x65, 0x73, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, + 0x64, 0x12, 0x3c, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x26, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x61, 0x69, 0x64, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x46, + 0x65, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x22, + 0x81, 0x01, 0x0a, 0x15, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x56, 0x32, 0x50, + 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, + 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x4b, 0x0a, 0x14, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, + 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4c, 0x69, 0x71, 0x75, + 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, + 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x22, 0x97, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, + 0x79, 0x56, 0x32, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, + 0x64, 0x12, 0x5a, 0x0a, 0x1c, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x69, 0x71, + 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4c, + 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x1a, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, + 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xc6, 0x01, + 0x0a, 0x17, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x56, 0x32, 0x50, 0x65, 0x72, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, + 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0e, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x64, 0x0a, 0x15, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x5f, + 0x70, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, - 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x4f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x50, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x50, 0x61, 0x69, - 0x72, 0x52, 0x08, 0x62, 0x69, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x61, - 0x73, 0x6b, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, + 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x56, 0x32, 0x50, 0x65, + 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x65, 0x72, 0x50, 0x61, 0x72, 0x74, + 0x79, 0x52, 0x13, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x50, 0x65, + 0x72, 0x50, 0x61, 0x72, 0x74, 0x79, 0x22, 0x93, 0x05, 0x0a, 0x1e, 0x4c, 0x69, 0x71, 0x75, 0x69, + 0x64, 0x69, 0x74, 0x79, 0x56, 0x32, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, + 0x65, 0x50, 0x65, 0x72, 0x50, 0x61, 0x72, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, + 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, + 0x4f, 0x0a, 0x25, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, + 0x6d, 0x65, 0x65, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x6c, 0x61, 0x5f, 0x64, 0x75, 0x72, 0x69, + 0x6e, 0x67, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x20, + 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x4d, 0x65, 0x65, 0x74, 0x69, + 0x6e, 0x67, 0x53, 0x6c, 0x61, 0x44, 0x75, 0x72, 0x69, 0x6e, 0x67, 0x45, 0x70, 0x6f, 0x63, 0x68, + 0x12, 0x32, 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x13, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x1e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, + 0x65, 0x64, 0x5f, 0x70, 0x65, 0x6e, 0x61, 0x6c, 0x74, 0x69, 0x65, 0x73, 0x5f, 0x70, 0x65, 0x72, + 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x1b, 0x72, 0x65, + 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x50, 0x65, 0x6e, 0x61, 0x6c, 0x74, 0x69, 0x65, + 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x44, 0x0a, 0x1f, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x65, 0x6e, 0x61, 0x6c, 0x74, 0x69, + 0x65, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x1b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x50, 0x65, + 0x6e, 0x61, 0x6c, 0x74, 0x69, 0x65, 0x73, 0x50, 0x65, 0x72, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, + 0x4a, 0x0a, 0x23, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x66, 0x72, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x66, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6f, + 0x6e, 0x5f, 0x62, 0x6f, 0x6f, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1d, 0x6c, 0x61, + 0x73, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x46, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, + 0x66, 0x54, 0x69, 0x6d, 0x65, 0x4f, 0x6e, 0x42, 0x6f, 0x6f, 0x6b, 0x12, 0x33, 0x0a, 0x16, 0x6c, + 0x61, 0x73, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x65, + 0x6e, 0x61, 0x6c, 0x74, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6c, 0x61, 0x73, + 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x46, 0x65, 0x65, 0x50, 0x65, 0x6e, 0x61, 0x6c, 0x74, 0x79, + 0x12, 0x35, 0x0a, 0x17, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x62, + 0x6f, 0x6e, 0x64, 0x5f, 0x70, 0x65, 0x6e, 0x61, 0x6c, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x42, 0x6f, 0x6e, 0x64, + 0x50, 0x65, 0x6e, 0x61, 0x6c, 0x74, 0x79, 0x12, 0x2d, 0x0a, 0x12, 0x72, 0x65, 0x71, 0x75, 0x69, + 0x72, 0x65, 0x64, 0x5f, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x11, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x4c, 0x69, 0x71, + 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x12, 0x30, 0x0a, 0x14, 0x6e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x62, 0x75, 0x79, 0x73, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x42, 0x75, 0x79, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x6e, 0x6f, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x6c, + 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x65, 0x6c, 0x6c, 0x73, 0x22, 0x9a, 0x02, 0x0a, + 0x11, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x56, 0x32, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, + 0x36, 0x0a, 0x17, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x76, 0x65, 0x72, 0x61, + 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x15, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x41, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x72, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, + 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, + 0x64, 0x69, 0x74, 0x79, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x06, 0x73, 0x63, 0x6f, 0x72, 0x65, + 0x73, 0x12, 0x3b, 0x0a, 0x1a, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x64, 0x69, + 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x17, 0x6c, 0x61, 0x73, 0x74, 0x46, 0x65, 0x65, 0x44, 0x69, + 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x39, + 0x0a, 0x19, 0x66, 0x65, 0x65, 0x5f, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x16, 0x66, 0x65, 0x65, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x65, 0x70, 0x22, 0xfd, 0x01, 0x0a, 0x13, 0x4c, 0x69, + 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x56, 0x32, 0x53, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, + 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x2b, + 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x75, 0x73, 0x5f, 0x72, 0x65, 0x61, 0x63, + 0x68, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x73, 0x65, + 0x6e, 0x73, 0x75, 0x73, 0x52, 0x65, 0x61, 0x63, 0x68, 0x65, 0x64, 0x12, 0x4d, 0x0a, 0x09, 0x62, + 0x69, 0x64, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x50, 0x61, 0x69, 0x72, - 0x52, 0x08, 0x61, 0x73, 0x6b, 0x43, 0x61, 0x63, 0x68, 0x65, 0x22, 0xb9, 0x01, 0x0a, 0x16, 0x46, - 0x6c, 0x6f, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x73, - 0x65, 0x6e, 0x73, 0x75, 0x73, 0x12, 0x4d, 0x0a, 0x11, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x21, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, - 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x72, 0x69, 0x67, - 0x67, 0x65, 0x72, 0x52, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x72, 0x69, - 0x67, 0x67, 0x65, 0x72, 0x12, 0x50, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, - 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, + 0x52, 0x08, 0x62, 0x69, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x61, 0x73, + 0x6b, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, - 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, - 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, - 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0xfc, 0x01, 0x0a, 0x15, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x56, 0x61, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, - 0x64, 0x12, 0x5d, 0x0a, 0x12, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x5f, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, - 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, - 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x56, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x11, 0x76, - 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, - 0x12, 0x43, 0x0a, 0x1e, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, - 0x5f, 0x6d, 0x65, 0x61, 0x6e, 0x69, 0x6e, 0x67, 0x66, 0x75, 0x6c, 0x5f, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1b, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x73, - 0x53, 0x69, 0x6e, 0x63, 0x65, 0x4d, 0x65, 0x61, 0x6e, 0x69, 0x6e, 0x67, 0x66, 0x75, 0x6c, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x22, 0x5c, 0x0a, 0x1c, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x69, 0x6e, - 0x67, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x06, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4b, 0x65, 0x79, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x06, 0x62, 0x75, 0x6e, - 0x64, 0x6c, 0x65, 0x22, 0x72, 0x0a, 0x0f, 0x4e, 0x65, 0x78, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x54, - 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, - 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x61, - 0x72, 0x6b, 0x65, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x74, 0x72, 0x69, - 0x67, 0x67, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x6e, 0x65, 0x78, 0x74, - 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x22, 0x9b, 0x03, 0x0a, 0x0d, 0x4d, 0x61, 0x72, 0x6b, - 0x65, 0x74, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x72, 0x12, 0x52, 0x0a, 0x0f, 0x6d, 0x61, 0x72, - 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x41, 0x63, - 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x72, 0x52, 0x0e, 0x6d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x5b, 0x0a, - 0x15, 0x74, 0x61, 0x6b, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, - 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x76, - 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, - 0x31, 0x2e, 0x54, 0x61, 0x6b, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x13, 0x74, 0x61, 0x6b, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, - 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x85, 0x01, 0x0a, 0x25, 0x6d, - 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x74, - 0x61, 0x6b, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x76, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x76, 0x65, 0x67, - 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, - 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x54, 0x6f, 0x50, 0x61, 0x72, 0x74, 0x79, 0x54, 0x61, 0x6b, - 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x52, 0x20, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x54, 0x6f, 0x50, 0x61, 0x72, 0x74, 0x79, 0x54, - 0x61, 0x6b, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x12, 0x51, 0x0a, 0x10, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x74, 0x61, 0x6b, 0x65, - 0x72, 0x5f, 0x66, 0x65, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x76, - 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, - 0x31, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x50, 0x61, 0x72, 0x74, 0x79, 0x54, 0x61, 0x6b, 0x65, - 0x72, 0x46, 0x65, 0x65, 0x73, 0x52, 0x0e, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x54, 0x61, 0x6b, 0x65, - 0x72, 0x46, 0x65, 0x65, 0x73, 0x22, 0x74, 0x0a, 0x16, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x50, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, - 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x40, 0x0a, 0x06, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x76, 0x65, 0x67, 0x61, - 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x52, 0x43, 0x32, 0x30, - 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x80, 0x02, 0x0a, 0x1d, - 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x54, 0x6f, 0x70, - 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x18, 0x0a, - 0x07, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, - 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x56, 0x0a, 0x12, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, - 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x73, 0x50, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x10, 0x65, - 0x76, 0x65, 0x6e, 0x74, 0x73, 0x50, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, - 0x4c, 0x0a, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, - 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, - 0x67, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x53, 0x65, 0x74, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x1f, 0x0a, - 0x0b, 0x73, 0x65, 0x65, 0x6e, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x65, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xbc, - 0x02, 0x0a, 0x1c, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, - 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, - 0x51, 0x0a, 0x0f, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x65, - 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, + 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x50, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x50, 0x61, 0x69, 0x72, 0x52, + 0x08, 0x61, 0x73, 0x6b, 0x43, 0x61, 0x63, 0x68, 0x65, 0x22, 0xb9, 0x01, 0x0a, 0x16, 0x46, 0x6c, + 0x6f, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x73, 0x65, + 0x6e, 0x73, 0x75, 0x73, 0x12, 0x4d, 0x0a, 0x11, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x21, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, + 0x76, 0x31, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x72, 0x69, 0x67, 0x67, + 0x65, 0x72, 0x52, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x72, 0x69, 0x67, + 0x67, 0x65, 0x72, 0x12, 0x50, 0x0a, 0x0f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x76, + 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x73, 0x22, 0xfc, 0x01, 0x0a, 0x15, 0x53, 0x74, 0x61, 0x74, 0x65, 0x56, + 0x61, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, + 0x12, 0x5d, 0x0a, 0x12, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x5f, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x76, + 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, + 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x11, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, + 0x43, 0x0a, 0x1e, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x5f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x5f, + 0x6d, 0x65, 0x61, 0x6e, 0x69, 0x6e, 0x67, 0x66, 0x75, 0x6c, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1b, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x53, + 0x69, 0x6e, 0x63, 0x65, 0x4d, 0x65, 0x61, 0x6e, 0x69, 0x6e, 0x67, 0x66, 0x75, 0x6c, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x22, 0x5c, 0x0a, 0x1c, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x69, 0x6e, 0x67, + 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x06, 0x62, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4b, 0x65, 0x79, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x06, 0x62, 0x75, 0x6e, 0x64, + 0x6c, 0x65, 0x22, 0x72, 0x0a, 0x0f, 0x4e, 0x65, 0x78, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x72, + 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x61, 0x72, + 0x6b, 0x65, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x74, 0x72, 0x69, 0x67, + 0x67, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x6e, 0x65, 0x78, 0x74, 0x54, + 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x22, 0x9b, 0x03, 0x0a, 0x0d, 0x4d, 0x61, 0x72, 0x6b, 0x65, + 0x74, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x72, 0x12, 0x52, 0x0a, 0x0f, 0x6d, 0x61, 0x72, 0x6b, + 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x29, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, + 0x69, 0x76, 0x69, 0x74, 0x79, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x72, 0x52, 0x0e, 0x6d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x5b, 0x0a, 0x15, + 0x74, 0x61, 0x6b, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x76, + 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x76, 0x65, + 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, + 0x2e, 0x54, 0x61, 0x6b, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x13, 0x74, 0x61, 0x6b, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x6c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x85, 0x01, 0x0a, 0x25, 0x6d, 0x61, + 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x74, 0x61, + 0x6b, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x76, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x76, 0x65, 0x67, 0x61, + 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, + 0x61, 0x72, 0x6b, 0x65, 0x74, 0x54, 0x6f, 0x50, 0x61, 0x72, 0x74, 0x79, 0x54, 0x61, 0x6b, 0x65, + 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, + 0x20, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x54, 0x6f, 0x50, 0x61, 0x72, 0x74, 0x79, 0x54, 0x61, + 0x6b, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, + 0x65, 0x12, 0x51, 0x0a, 0x10, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x74, 0x61, 0x6b, 0x65, 0x72, + 0x5f, 0x66, 0x65, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x76, 0x65, + 0x67, 0x61, 0x2e, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2e, 0x76, 0x31, + 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x50, 0x61, 0x72, 0x74, 0x79, 0x54, 0x61, 0x6b, 0x65, 0x72, + 0x46, 0x65, 0x65, 0x73, 0x52, 0x0e, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x54, 0x61, 0x6b, 0x65, 0x72, + 0x46, 0x65, 0x65, 0x73, 0x22, 0x74, 0x0a, 0x16, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x50, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x18, + 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x40, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x52, 0x0e, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, - 0x72, 0x73, 0x12, 0x62, 0x0a, 0x15, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x68, - 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x80, 0x02, 0x0a, 0x1d, 0x45, + 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x54, 0x6f, 0x70, 0x6f, + 0x6c, 0x6f, 0x67, 0x79, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, + 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x73, + 0x69, 0x67, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x56, 0x0a, 0x12, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, + 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x50, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x10, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x50, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4c, + 0x0a, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x53, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x52, 0x13, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, - 0x6f, 0x6c, 0x64, 0x53, 0x65, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x77, 0x69, 0x74, 0x6e, 0x65, 0x73, - 0x73, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x10, 0x77, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x65, 0x64, 0x53, 0x69, 0x67, 0x6e, - 0x65, 0x72, 0x73, 0x12, 0x38, 0x0a, 0x18, 0x77, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x65, 0x64, - 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x73, 0x65, 0x74, 0x73, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x16, 0x77, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x65, 0x64, - 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x53, 0x65, 0x74, 0x73, 0x22, 0xc7, 0x01, - 0x0a, 0x13, 0x45, 0x56, 0x4d, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x73, 0x69, 0x67, 0x54, 0x6f, 0x70, - 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, - 0x12, 0x4b, 0x0a, 0x08, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, - 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, - 0x53, 0x69, 0x67, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x56, 0x65, 0x72, 0x69, 0x66, - 0x69, 0x65, 0x64, 0x52, 0x08, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x48, 0x0a, - 0x07, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, - 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, + 0x74, 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x1f, 0x0a, 0x0b, + 0x73, 0x65, 0x65, 0x6e, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x0a, 0x73, 0x65, 0x65, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xbc, 0x02, + 0x0a, 0x1c, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x54, + 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x51, + 0x0a, 0x0f, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, + 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x52, 0x0e, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, + 0x73, 0x12, 0x62, 0x0a, 0x15, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x68, 0x72, + 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x2e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x54, - 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x07, - 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x72, 0x0a, 0x15, 0x45, 0x56, 0x4d, 0x4d, 0x75, - 0x6c, 0x74, 0x69, 0x73, 0x69, 0x67, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, 0x73, - 0x12, 0x59, 0x0a, 0x15, 0x65, 0x76, 0x6d, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x73, 0x69, 0x67, - 0x5f, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x25, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, - 0x76, 0x31, 0x2e, 0x45, 0x56, 0x4d, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x73, 0x69, 0x67, 0x54, 0x6f, - 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x13, 0x65, 0x76, 0x6d, 0x4d, 0x75, 0x6c, 0x74, 0x69, - 0x73, 0x69, 0x67, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x22, 0xa5, 0x04, 0x0a, 0x0b, - 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x4f, 0x66, 0x57, 0x6f, 0x72, 0x6b, 0x12, 0x21, 0x0a, 0x0c, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x04, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1d, - 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x48, 0x0a, - 0x0c, 0x74, 0x78, 0x5f, 0x61, 0x74, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, - 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x41, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x0a, 0x74, 0x78, 0x41, - 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x4a, 0x0a, 0x0d, 0x74, 0x69, 0x64, 0x5f, 0x61, - 0x74, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, - 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, - 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x41, 0x74, - 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x0b, 0x74, 0x69, 0x64, 0x41, 0x74, 0x48, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x12, 0x35, 0x0a, 0x06, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x18, 0x07, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, - 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x50, 0x61, 0x72, - 0x74, 0x79, 0x52, 0x06, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x12, 0x42, 0x0a, 0x0a, 0x70, 0x6f, - 0x77, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, - 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x4f, 0x66, 0x57, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x52, 0x09, 0x70, 0x6f, 0x77, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x3f, - 0x0a, 0x09, 0x70, 0x6f, 0x77, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x22, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, - 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x4f, 0x66, 0x57, 0x6f, 0x72, 0x6b, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x08, 0x70, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, - 0x2c, 0x0a, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x5f, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x6c, 0x61, 0x73, - 0x74, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x54, 0x0a, - 0x14, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x73, 0x5f, 0x61, 0x74, 0x5f, 0x68, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x65, - 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4e, - 0x6f, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x66, 0x73, 0x41, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x52, 0x11, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x66, 0x73, 0x41, 0x74, 0x48, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x22, 0x39, 0x0a, 0x0b, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x50, 0x61, 0x72, - 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x75, 0x6e, 0x74, 0x69, - 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x75, 0x6e, 0x74, 0x69, 0x6c, 0x22, 0x84, - 0x03, 0x0a, 0x11, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x4f, 0x66, 0x57, 0x6f, 0x72, 0x6b, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x12, 0x41, 0x0a, 0x1e, 0x73, 0x70, 0x61, 0x6d, 0x5f, 0x70, 0x6f, 0x77, - 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x70, 0x61, 0x73, 0x74, 0x5f, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x19, 0x73, 0x70, - 0x61, 0x6d, 0x50, 0x6f, 0x77, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x50, 0x61, 0x73, - 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x73, 0x70, 0x61, 0x6d, 0x5f, - 0x70, 0x6f, 0x77, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x69, 0x63, 0x75, 0x6c, 0x74, 0x79, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x73, 0x70, 0x61, 0x6d, 0x50, 0x6f, 0x77, 0x44, 0x69, 0x66, - 0x66, 0x69, 0x63, 0x75, 0x6c, 0x74, 0x79, 0x12, 0x33, 0x0a, 0x16, 0x73, 0x70, 0x61, 0x6d, 0x5f, - 0x70, 0x6f, 0x77, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x70, 0x61, 0x6d, 0x50, 0x6f, 0x77, - 0x48, 0x61, 0x73, 0x68, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x1f, - 0x73, 0x70, 0x61, 0x6d, 0x5f, 0x70, 0x6f, 0x77, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, - 0x6f, 0x66, 0x5f, 0x74, 0x78, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x19, 0x73, 0x70, 0x61, 0x6d, 0x50, 0x6f, 0x77, 0x4e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x54, 0x78, 0x50, 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x12, 0x43, 0x0a, 0x1e, 0x73, 0x70, 0x61, 0x6d, 0x5f, 0x70, 0x6f, 0x77, 0x5f, 0x69, 0x6e, 0x63, - 0x72, 0x65, 0x61, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x69, 0x63, 0x75, 0x6c, - 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1b, 0x73, 0x70, 0x61, 0x6d, 0x50, 0x6f, - 0x77, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x61, 0x73, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x66, 0x66, 0x69, - 0x63, 0x75, 0x6c, 0x74, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x66, 0x72, 0x6f, 0x6d, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1f, 0x0a, 0x0b, 0x75, 0x6e, 0x74, 0x69, 0x6c, 0x5f, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x6e, 0x74, 0x69, 0x6c, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x58, 0x0a, 0x10, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x4f, 0x66, - 0x57, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x44, 0x0a, 0x09, 0x70, 0x6f, 0x77, - 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x76, - 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, - 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x4f, 0x66, 0x57, 0x6f, 0x72, 0x6b, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x08, 0x70, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, - 0x8c, 0x01, 0x0a, 0x15, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x4f, 0x66, 0x57, 0x6f, 0x72, 0x6b, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x50, 0x0a, 0x0b, - 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x53, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x52, 0x13, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, + 0x6c, 0x64, 0x53, 0x65, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x77, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, + 0x65, 0x64, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x10, 0x77, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x65, 0x64, 0x53, 0x69, 0x67, 0x6e, 0x65, + 0x72, 0x73, 0x12, 0x38, 0x0a, 0x18, 0x77, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x65, 0x64, 0x5f, + 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x73, 0x65, 0x74, 0x73, 0x18, 0x04, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x16, 0x77, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x65, 0x64, 0x54, + 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x53, 0x65, 0x74, 0x73, 0x22, 0xc7, 0x01, 0x0a, + 0x13, 0x45, 0x56, 0x4d, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x73, 0x69, 0x67, 0x54, 0x6f, 0x70, 0x6f, + 0x6c, 0x6f, 0x67, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, + 0x4b, 0x0a, 0x08, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, - 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x4f, 0x66, 0x57, 0x6f, 0x72, 0x6b, - 0x50, 0x61, 0x72, 0x74, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x74, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x85, - 0x01, 0x0a, 0x1d, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x4f, 0x66, 0x57, 0x6f, 0x72, 0x6b, 0x50, 0x61, - 0x72, 0x74, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x65, 0x6e, 0x5f, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x73, 0x65, 0x65, 0x6e, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x13, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x64, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x69, 0x63, 0x75, 0x6c, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x12, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x44, 0x69, 0x66, 0x66, - 0x69, 0x63, 0x75, 0x6c, 0x74, 0x79, 0x22, 0x52, 0x0a, 0x14, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x41, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x16, - 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, - 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x36, 0x0a, 0x08, 0x4e, 0x6f, - 0x6e, 0x63, 0x65, 0x52, 0x65, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, - 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6e, 0x6f, 0x6e, - 0x63, 0x65, 0x22, 0x5b, 0x0a, 0x11, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x66, 0x73, 0x41, - 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, - 0x2e, 0x0a, 0x04, 0x72, 0x65, 0x66, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, + 0x69, 0x67, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, + 0x65, 0x64, 0x52, 0x08, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x48, 0x0a, 0x07, + 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, - 0x2e, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x66, 0x52, 0x04, 0x72, 0x65, 0x66, 0x73, 0x22, - 0xcb, 0x01, 0x0a, 0x18, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, - 0x61, 0x64, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x12, 0x4f, 0x0a, 0x10, - 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x0f, 0x61, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x12, 0x5e, 0x0a, - 0x11, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, - 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, - 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x65, - 0x70, 0x74, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, - 0x61, 0x64, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x10, 0x61, 0x63, 0x63, - 0x65, 0x70, 0x74, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x22, 0x7d, 0x0a, - 0x1f, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, - 0x12, 0x30, 0x0a, 0x14, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x12, - 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x76, 0x65, 0x67, 0x61, 0x5f, 0x72, 0x65, 0x6c, 0x65, 0x61, - 0x73, 0x65, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x76, 0x65, - 0x67, 0x61, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x54, 0x61, 0x67, 0x22, 0x35, 0x0a, 0x05, - 0x54, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x2c, 0x0a, 0x05, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, - 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x05, 0x74, 0x65, - 0x61, 0x6d, 0x73, 0x22, 0xae, 0x02, 0x0a, 0x04, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x38, 0x0a, 0x08, - 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x45, 0x52, 0x43, 0x32, 0x30, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x69, 0x67, 0x54, 0x6f, + 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x70, + 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x72, 0x0a, 0x15, 0x45, 0x56, 0x4d, 0x4d, 0x75, 0x6c, + 0x74, 0x69, 0x73, 0x69, 0x67, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, 0x73, 0x12, + 0x59, 0x0a, 0x15, 0x65, 0x76, 0x6d, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x73, 0x69, 0x67, 0x5f, + 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, - 0x31, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x08, 0x72, 0x65, - 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x08, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, - 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, - 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x08, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x75, 0x72, 0x6c, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x55, 0x72, 0x6c, 0x12, - 0x1d, 0x0a, 0x0a, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x1d, - 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x16, 0x0a, - 0x06, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x63, - 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6c, - 0x69, 0x73, 0x74, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, 0x6c, 0x6f, 0x77, - 0x4c, 0x69, 0x73, 0x74, 0x22, 0x6e, 0x0a, 0x0a, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, - 0x69, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x1b, 0x0a, - 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x41, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x45, - 0x70, 0x6f, 0x63, 0x68, 0x22, 0x51, 0x0a, 0x0c, 0x54, 0x65, 0x61, 0x6d, 0x53, 0x77, 0x69, 0x74, - 0x63, 0x68, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x0d, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x73, 0x77, 0x69, - 0x74, 0x63, 0x68, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, - 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x54, - 0x65, 0x61, 0x6d, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, 0x0c, 0x74, 0x65, 0x61, 0x6d, 0x53, - 0x77, 0x69, 0x74, 0x63, 0x68, 0x65, 0x73, 0x22, 0x67, 0x0a, 0x0a, 0x54, 0x65, 0x61, 0x6d, 0x53, - 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x74, 0x65, - 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x72, 0x6f, - 0x6d, 0x54, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x0a, 0x74, 0x6f, 0x5f, 0x74, 0x65, - 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x54, - 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, - 0x22, 0x4f, 0x0a, 0x07, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x44, 0x0a, 0x0e, 0x70, - 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, - 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x52, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x22, 0xa1, 0x01, 0x0a, 0x0b, 0x50, 0x61, 0x72, 0x74, 0x79, 0x52, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x40, 0x0a, 0x0c, 0x61, 0x73, 0x73, 0x65, 0x74, - 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, + 0x31, 0x2e, 0x45, 0x56, 0x4d, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x73, 0x69, 0x67, 0x54, 0x6f, 0x70, + 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x13, 0x65, 0x76, 0x6d, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x73, + 0x69, 0x67, 0x54, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x22, 0xa5, 0x04, 0x0a, 0x0b, 0x50, + 0x72, 0x6f, 0x6f, 0x66, 0x4f, 0x66, 0x57, 0x6f, 0x72, 0x6b, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, + 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1d, 0x0a, + 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x48, 0x0a, 0x0c, + 0x74, 0x78, 0x5f, 0x61, 0x74, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, + 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x41, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x0a, 0x74, 0x78, 0x41, 0x74, + 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x4a, 0x0a, 0x0d, 0x74, 0x69, 0x64, 0x5f, 0x61, 0x74, + 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, - 0x2e, 0x41, 0x73, 0x73, 0x65, 0x74, 0x4c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x52, 0x0b, 0x61, 0x73, - 0x73, 0x65, 0x74, 0x4c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x12, 0x3a, 0x0a, 0x0a, 0x69, 0x6e, 0x5f, - 0x76, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x41, 0x74, 0x48, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x0b, 0x74, 0x69, 0x64, 0x41, 0x74, 0x48, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x12, 0x35, 0x0a, 0x06, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, + 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x50, 0x61, 0x72, 0x74, + 0x79, 0x52, 0x06, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x12, 0x42, 0x0a, 0x0a, 0x70, 0x6f, 0x77, + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, - 0x2e, 0x49, 0x6e, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x69, 0x6e, 0x56, 0x65, - 0x73, 0x74, 0x69, 0x6e, 0x67, 0x22, 0xed, 0x02, 0x0a, 0x13, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, - 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x12, 0x4d, 0x0a, - 0x11, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x62, 0x79, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, - 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x63, 0x74, - 0x6f, 0x72, 0x42, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x52, 0x0f, 0x66, 0x61, 0x63, - 0x74, 0x6f, 0x72, 0x42, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x12, 0x3e, 0x0a, 0x0f, - 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x52, 0x65, 0x66, - 0x65, 0x72, 0x72, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x0e, 0x63, 0x75, - 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x36, 0x0a, 0x0b, - 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x15, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, - 0x6c, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x0a, 0x6e, 0x65, 0x77, 0x50, 0x72, 0x6f, - 0x67, 0x72, 0x61, 0x6d, 0x12, 0x30, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x72, 0x6f, - 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, - 0x6d, 0x5f, 0x68, 0x61, 0x73, 0x5f, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x48, 0x61, 0x73, 0x45, 0x6e, 0x64, - 0x65, 0x64, 0x12, 0x31, 0x0a, 0x04, 0x73, 0x65, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x52, - 0x04, 0x73, 0x65, 0x74, 0x73, 0x22, 0xd6, 0x03, 0x0a, 0x0b, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, - 0x61, 0x6c, 0x53, 0x65, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, - 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x64, 0x41, 0x74, 0x12, 0x38, 0x0a, 0x08, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, - 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, - 0x68, 0x69, 0x70, 0x52, 0x08, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x12, 0x38, 0x0a, - 0x08, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, - 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x08, 0x72, - 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x0f, 0x72, 0x75, 0x6e, 0x6e, 0x69, - 0x6e, 0x67, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x52, 0x0e, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x73, 0x12, 0x32, 0x0a, 0x15, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x13, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x46, - 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x3c, 0x0a, 0x1a, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, - 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, - 0x69, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x63, 0x75, 0x72, 0x72, 0x65, - 0x6e, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, - 0x69, 0x65, 0x72, 0x12, 0x49, 0x0a, 0x21, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6d, 0x75, - 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1e, - 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x46, 0x61, - 0x63, 0x74, 0x6f, 0x72, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x22, 0x3d, - 0x0a, 0x0d, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, - 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x22, 0x73, 0x0a, - 0x0f, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, + 0x2e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x4f, 0x66, 0x57, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x52, 0x09, 0x70, 0x6f, 0x77, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x3f, 0x0a, + 0x09, 0x70, 0x6f, 0x77, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x22, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x4f, 0x66, 0x57, 0x6f, 0x72, 0x6b, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x52, 0x08, 0x70, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2c, + 0x0a, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x6c, 0x61, 0x73, 0x74, + 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x54, 0x0a, 0x14, + 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x66, 0x73, 0x5f, 0x61, 0x74, 0x5f, 0x68, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x65, 0x67, + 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, + 0x6e, 0x63, 0x65, 0x52, 0x65, 0x66, 0x73, 0x41, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, + 0x11, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x66, 0x73, 0x41, 0x74, 0x48, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x22, 0x39, 0x0a, 0x0b, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x50, 0x61, 0x72, 0x74, + 0x79, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x75, 0x6e, 0x74, 0x69, 0x6c, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x75, 0x6e, 0x74, 0x69, 0x6c, 0x22, 0x84, 0x03, + 0x0a, 0x11, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x4f, 0x66, 0x57, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x12, 0x41, 0x0a, 0x1e, 0x73, 0x70, 0x61, 0x6d, 0x5f, 0x70, 0x6f, 0x77, 0x5f, + 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x70, 0x61, 0x73, 0x74, 0x5f, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x19, 0x73, 0x70, 0x61, + 0x6d, 0x50, 0x6f, 0x77, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x50, 0x61, 0x73, 0x74, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x73, 0x70, 0x61, 0x6d, 0x5f, 0x70, + 0x6f, 0x77, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x69, 0x63, 0x75, 0x6c, 0x74, 0x79, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x11, 0x73, 0x70, 0x61, 0x6d, 0x50, 0x6f, 0x77, 0x44, 0x69, 0x66, 0x66, + 0x69, 0x63, 0x75, 0x6c, 0x74, 0x79, 0x12, 0x33, 0x0a, 0x16, 0x73, 0x70, 0x61, 0x6d, 0x5f, 0x70, + 0x6f, 0x77, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x70, 0x61, 0x6d, 0x50, 0x6f, 0x77, 0x48, + 0x61, 0x73, 0x68, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x1f, 0x73, + 0x70, 0x61, 0x6d, 0x5f, 0x70, 0x6f, 0x77, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, + 0x66, 0x5f, 0x74, 0x78, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x19, 0x73, 0x70, 0x61, 0x6d, 0x50, 0x6f, 0x77, 0x4e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x4f, 0x66, 0x54, 0x78, 0x50, 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, + 0x43, 0x0a, 0x1e, 0x73, 0x70, 0x61, 0x6d, 0x5f, 0x70, 0x6f, 0x77, 0x5f, 0x69, 0x6e, 0x63, 0x72, + 0x65, 0x61, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x69, 0x63, 0x75, 0x6c, 0x74, + 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1b, 0x73, 0x70, 0x61, 0x6d, 0x50, 0x6f, 0x77, + 0x49, 0x6e, 0x63, 0x72, 0x65, 0x61, 0x73, 0x69, 0x6e, 0x67, 0x44, 0x69, 0x66, 0x66, 0x69, 0x63, + 0x75, 0x6c, 0x74, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x66, 0x72, 0x6f, 0x6d, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x12, 0x1f, 0x0a, 0x0b, 0x75, 0x6e, 0x74, 0x69, 0x6c, 0x5f, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x75, 0x6e, 0x74, 0x69, 0x6c, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x58, 0x0a, 0x10, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x4f, 0x66, 0x57, + 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x44, 0x0a, 0x09, 0x70, 0x6f, 0x77, 0x5f, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x76, 0x65, + 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, + 0x72, 0x6f, 0x6f, 0x66, 0x4f, 0x66, 0x57, 0x6f, 0x72, 0x6b, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x52, 0x08, 0x70, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x8c, + 0x01, 0x0a, 0x15, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x4f, 0x66, 0x57, 0x6f, 0x72, 0x6b, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x50, 0x0a, 0x0b, 0x70, + 0x61, 0x72, 0x74, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x2f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x4f, 0x66, 0x57, 0x6f, 0x72, 0x6b, 0x50, + 0x61, 0x72, 0x74, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x74, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x22, 0x85, 0x01, + 0x0a, 0x1d, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x4f, 0x66, 0x57, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, + 0x74, 0x79, 0x53, 0x74, 0x61, 0x74, 0x65, 0x46, 0x6f, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, + 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x65, 0x6e, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x73, 0x65, 0x65, 0x6e, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x13, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, + 0x5f, 0x64, 0x69, 0x66, 0x66, 0x69, 0x63, 0x75, 0x6c, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x12, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x44, 0x69, 0x66, 0x66, 0x69, + 0x63, 0x75, 0x6c, 0x74, 0x79, 0x22, 0x52, 0x0a, 0x14, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x41, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x16, 0x0a, + 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x68, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x36, 0x0a, 0x08, 0x4e, 0x6f, 0x6e, + 0x63, 0x65, 0x52, 0x65, 0x66, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x6e, + 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, + 0x65, 0x22, 0x5b, 0x0a, 0x11, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x66, 0x73, 0x41, 0x74, + 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x2e, + 0x0a, 0x04, 0x72, 0x65, 0x66, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x76, + 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, + 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x66, 0x52, 0x04, 0x72, 0x65, 0x66, 0x73, 0x22, 0xcb, + 0x01, 0x0a, 0x18, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, + 0x64, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x12, 0x4f, 0x0a, 0x10, 0x61, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, + 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x0f, 0x61, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x73, 0x12, 0x5e, 0x0a, 0x11, + 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, + 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, + 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x70, + 0x74, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x55, 0x70, 0x67, 0x72, 0x61, + 0x64, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x10, 0x61, 0x63, 0x63, 0x65, + 0x70, 0x74, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x22, 0x7d, 0x0a, 0x1f, + 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, + 0x30, 0x0a, 0x14, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x12, 0x75, + 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x12, 0x28, 0x0a, 0x10, 0x76, 0x65, 0x67, 0x61, 0x5f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, + 0x65, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x76, 0x65, 0x67, + 0x61, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x54, 0x61, 0x67, 0x22, 0x35, 0x0a, 0x05, 0x54, + 0x65, 0x61, 0x6d, 0x73, 0x12, 0x2c, 0x0a, 0x05, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, + 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x52, 0x05, 0x74, 0x65, 0x61, + 0x6d, 0x73, 0x22, 0xae, 0x02, 0x0a, 0x04, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x38, 0x0a, 0x08, 0x72, + 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, + 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x08, 0x72, 0x65, 0x66, + 0x65, 0x72, 0x72, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x08, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, + 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x08, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x75, 0x72, 0x6c, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x55, 0x72, 0x6c, 0x12, 0x1d, + 0x0a, 0x0a, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, 0x72, 0x6c, 0x12, 0x1d, 0x0a, + 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x16, 0x0a, 0x06, + 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x63, 0x6c, + 0x6f, 0x73, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6c, 0x69, + 0x73, 0x74, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4c, + 0x69, 0x73, 0x74, 0x22, 0x6e, 0x0a, 0x0a, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, + 0x70, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, + 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x41, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x45, 0x70, + 0x6f, 0x63, 0x68, 0x22, 0x51, 0x0a, 0x0c, 0x54, 0x65, 0x61, 0x6d, 0x53, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x0d, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x73, 0x77, 0x69, 0x74, + 0x63, 0x68, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, + 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, + 0x61, 0x6d, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, 0x0c, 0x74, 0x65, 0x61, 0x6d, 0x53, 0x77, + 0x69, 0x74, 0x63, 0x68, 0x65, 0x73, 0x22, 0x67, 0x0a, 0x0a, 0x54, 0x65, 0x61, 0x6d, 0x53, 0x77, + 0x69, 0x74, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x0c, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x74, 0x65, 0x61, + 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, + 0x54, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x0a, 0x74, 0x6f, 0x5f, 0x74, 0x65, 0x61, + 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x6f, 0x54, 0x65, + 0x61, 0x6d, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, 0x79, 0x49, 0x64, 0x22, + 0x4f, 0x0a, 0x07, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x44, 0x0a, 0x0e, 0x70, 0x61, + 0x72, 0x74, 0x69, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, + 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x52, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x22, 0xa1, 0x01, 0x0a, 0x0b, 0x50, 0x61, 0x72, 0x74, 0x79, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x0e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, - 0x21, 0x0a, 0x0c, 0x74, 0x61, 0x6b, 0x65, 0x72, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x74, 0x61, 0x6b, 0x65, 0x72, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x22, 0x6a, 0x0a, 0x0b, 0x41, 0x73, 0x73, 0x65, 0x74, 0x4c, 0x6f, 0x63, 0x6b, 0x65, - 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x12, 0x45, 0x0a, 0x0e, 0x65, 0x70, 0x6f, 0x63, 0x68, - 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, - 0x76, 0x31, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, - 0x0d, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x3e, - 0x0a, 0x0c, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x14, + 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x40, 0x0a, 0x0c, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, + 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, + 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, + 0x41, 0x73, 0x73, 0x65, 0x74, 0x4c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x52, 0x0b, 0x61, 0x73, 0x73, + 0x65, 0x74, 0x4c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x12, 0x3a, 0x0a, 0x0a, 0x69, 0x6e, 0x5f, 0x76, + 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x76, + 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, + 0x49, 0x6e, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x69, 0x6e, 0x56, 0x65, 0x73, + 0x74, 0x69, 0x6e, 0x67, 0x22, 0xed, 0x02, 0x0a, 0x13, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, + 0x6c, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x12, 0x4d, 0x0a, 0x11, + 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x62, 0x79, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, + 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x63, 0x74, 0x6f, + 0x72, 0x42, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x52, 0x0f, 0x66, 0x61, 0x63, 0x74, + 0x6f, 0x72, 0x42, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x12, 0x3e, 0x0a, 0x0f, 0x63, + 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x52, 0x65, 0x66, 0x65, + 0x72, 0x72, 0x61, 0x6c, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x0e, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x36, 0x0a, 0x0b, 0x6e, + 0x65, 0x77, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, + 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x0a, 0x6e, 0x65, 0x77, 0x50, 0x72, 0x6f, 0x67, + 0x72, 0x61, 0x6d, 0x12, 0x30, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x67, + 0x72, 0x61, 0x6d, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x56, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, + 0x5f, 0x68, 0x61, 0x73, 0x5f, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x48, 0x61, 0x73, 0x45, 0x6e, 0x64, 0x65, + 0x64, 0x12, 0x31, 0x0a, 0x04, 0x73, 0x65, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, + 0x76, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x04, + 0x73, 0x65, 0x74, 0x73, 0x22, 0xd6, 0x03, 0x0a, 0x0b, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, + 0x6c, 0x53, 0x65, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x38, 0x0a, 0x08, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, + 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, + 0x69, 0x70, 0x52, 0x08, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x08, + 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, + 0x31, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x08, 0x72, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x0f, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, + 0x67, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, + 0x76, 0x31, 0x2e, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x52, 0x0e, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, + 0x12, 0x32, 0x0a, 0x15, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x13, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x46, 0x61, + 0x63, 0x74, 0x6f, 0x72, 0x12, 0x3c, 0x0a, 0x1a, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, + 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, + 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, + 0x65, 0x72, 0x12, 0x49, 0x0a, 0x21, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6d, 0x75, 0x6c, + 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1e, 0x63, + 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x46, 0x61, 0x63, + 0x74, 0x6f, 0x72, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x22, 0x3d, 0x0a, + 0x0d, 0x52, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x65, - 0x70, 0x6f, 0x63, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x3b, - 0x0a, 0x09, 0x49, 0x6e, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x61, - 0x73, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, - 0x74, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x6f, 0x0a, 0x0e, 0x41, - 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6b, 0x12, 0x5d, 0x0a, - 0x17, 0x70, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, - 0x79, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6b, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, + 0x70, 0x6f, 0x63, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x22, 0x73, 0x0a, 0x0f, + 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, + 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x21, + 0x0a, 0x0c, 0x74, 0x61, 0x6b, 0x65, 0x72, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x74, 0x61, 0x6b, 0x65, 0x72, 0x56, 0x6f, 0x6c, 0x75, 0x6d, + 0x65, 0x22, 0x6a, 0x0a, 0x0b, 0x41, 0x73, 0x73, 0x65, 0x74, 0x4c, 0x6f, 0x63, 0x6b, 0x65, 0x64, + 0x12, 0x14, 0x0a, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x12, 0x45, 0x0a, 0x0e, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, + 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, - 0x74, 0x72, 0x65, 0x61, 0x6b, 0x52, 0x15, 0x70, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x41, 0x63, - 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6b, 0x22, 0xe1, 0x01, 0x0a, - 0x13, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, - 0x72, 0x65, 0x61, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x44, - 0x0a, 0x1e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x1c, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x44, 0x69, - 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, - 0x6c, 0x69, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x19, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x76, - 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, - 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x17, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x56, - 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, - 0x22, 0xb4, 0x04, 0x0a, 0x15, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, - 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, - 0x74, 0x69, 0x65, 0x73, 0x12, 0x53, 0x0a, 0x13, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x70, 0x61, - 0x72, 0x74, 0x79, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, - 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x50, 0x61, 0x72, 0x74, 0x79, 0x56, - 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x52, 0x11, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x50, 0x61, 0x72, - 0x74, 0x79, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x65, 0x70, 0x6f, - 0x63, 0x68, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x0e, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x44, 0x61, 0x74, 0x61, 0x49, 0x6e, - 0x64, 0x65, 0x78, 0x12, 0x4f, 0x0a, 0x14, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x70, - 0x61, 0x72, 0x74, 0x79, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, - 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x52, 0x12, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x50, 0x61, 0x72, 0x74, 0x79, 0x56, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x44, 0x0a, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, - 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x76, 0x65, 0x67, 0x61, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x0e, 0x63, 0x75, 0x72, 0x72, - 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x3c, 0x0a, 0x0b, 0x6e, 0x65, - 0x77, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x0a, 0x6e, 0x65, - 0x77, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x4f, 0x0a, 0x10, 0x66, 0x61, 0x63, 0x74, - 0x6f, 0x72, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x07, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, - 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x0e, 0x66, 0x61, 0x63, 0x74, 0x6f, - 0x72, 0x73, 0x42, 0x79, 0x50, 0x61, 0x72, 0x74, 0x79, 0x12, 0x30, 0x0a, 0x14, 0x6c, 0x61, 0x73, - 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, - 0x67, 0x72, 0x61, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x70, - 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x68, 0x61, 0x73, 0x5f, 0x65, 0x6e, 0x64, 0x65, 0x64, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x48, - 0x61, 0x73, 0x45, 0x6e, 0x64, 0x65, 0x64, 0x22, 0x54, 0x0a, 0x13, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x14, - 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, - 0x61, 0x72, 0x74, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, - 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x55, 0x0a, - 0x11, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x50, 0x61, 0x72, 0x74, 0x79, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x73, 0x12, 0x40, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x76, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, - 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, - 0x79, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x79, 0x56, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x22, 0x3b, 0x0a, 0x0b, 0x50, 0x61, 0x72, 0x74, 0x79, 0x56, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x22, 0x9b, 0x01, 0x0a, 0x0b, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1f, - 0x0a, 0x0b, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x70, 0x6f, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x6f, 0x73, 0x12, - 0x1b, 0x0a, 0x09, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x08, 0x6e, 0x65, 0x78, 0x74, 0x53, 0x74, 0x65, 0x70, 0x12, 0x31, 0x0a, 0x06, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x76, - 0x65, 0x67, 0x61, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, - 0x56, 0x0a, 0x10, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x73, 0x73, 0x65, 0x74, 0x41, 0x6d, 0x6f, - 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x73, 0x73, - 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x12, - 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x73, 0x0a, 0x1b, 0x42, 0x61, 0x6e, 0x6b, 0x69, - 0x6e, 0x67, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x44, 0x69, 0x73, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x54, 0x0a, 0x14, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, - 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, - 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x73, 0x73, - 0x65, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x12, 0x70, 0x61, 0x72, 0x74, 0x79, 0x41, - 0x73, 0x73, 0x65, 0x74, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xe4, 0x02, 0x0a, - 0x18, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, 0x43, - 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x50, 0x72, 0x69, - 0x63, 0x65, 0x12, 0x52, 0x0a, 0x13, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x21, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, - 0x50, 0x72, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x12, 0x70, 0x72, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x54, 0x72, - 0x61, 0x64, 0x65, 0x52, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x70, - 0x72, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x69, 0x63, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x12, 0x37, 0x0a, 0x18, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x03, - 0x28, 0x03, 0x52, 0x15, 0x70, 0x72, 0x69, 0x63, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, - 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x48, 0x0a, 0x12, 0x62, 0x6f, 0x6f, - 0x6b, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, - 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, - 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x72, 0x69, - 0x63, 0x65, 0x52, 0x0f, 0x62, 0x6f, 0x6f, 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x41, 0x74, 0x54, - 0x69, 0x6d, 0x65, 0x22, 0x45, 0x0a, 0x07, 0x50, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x3a, - 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x52, 0x08, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x22, 0x6b, 0x0a, 0x0c, 0x50, 0x61, - 0x72, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, - 0x72, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, - 0x72, 0x74, 0x79, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x2a, 0x0a, 0x08, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, - 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x32, 0x0a, 0x0f, 0x4d, 0x61, 0x72, 0x6b, 0x65, - 0x74, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, - 0x69, 0x63, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x70, 0x72, 0x69, 0x63, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x2a, 0x60, 0x0a, 0x06, 0x46, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x16, 0x0a, 0x12, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, - 0x0c, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x10, 0x01, 0x12, - 0x1b, 0x0a, 0x17, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x5f, - 0x43, 0x4f, 0x4d, 0x50, 0x52, 0x45, 0x53, 0x53, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, - 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x4a, 0x53, 0x4f, 0x4e, 0x10, 0x03, 0x42, 0x33, 0x5a, - 0x31, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x65, 0x67, 0x61, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x73, 0x2f, 0x76, 0x65, 0x67, 0x61, 0x2f, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2f, - 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x31, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x0d, + 0x65, 0x70, 0x6f, 0x63, 0x68, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x3e, 0x0a, + 0x0c, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, + 0x6f, 0x63, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x3b, 0x0a, + 0x09, 0x49, 0x6e, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x73, + 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, + 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x6f, 0x0a, 0x0e, 0x41, 0x63, + 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6b, 0x12, 0x5d, 0x0a, 0x17, + 0x70, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, + 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6b, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, + 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, + 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, + 0x72, 0x65, 0x61, 0x6b, 0x52, 0x15, 0x70, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x41, 0x63, 0x74, + 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6b, 0x22, 0xe1, 0x01, 0x0a, 0x13, + 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x72, + 0x65, 0x61, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x08, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x44, 0x0a, + 0x1e, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x1c, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x44, 0x69, 0x73, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, + 0x69, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x19, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x76, 0x65, + 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x17, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x56, 0x65, + 0x73, 0x74, 0x69, 0x6e, 0x67, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x22, + 0xb4, 0x04, 0x0a, 0x15, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x72, + 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, 0x74, + 0x69, 0x65, 0x73, 0x12, 0x53, 0x0a, 0x13, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x70, 0x61, 0x72, + 0x74, 0x79, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x23, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, + 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x50, 0x61, 0x72, 0x74, 0x79, 0x56, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x52, 0x11, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x50, 0x61, 0x72, 0x74, + 0x79, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x65, 0x70, 0x6f, 0x63, + 0x68, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x0e, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x44, 0x61, 0x74, 0x61, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x12, 0x4f, 0x0a, 0x14, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x61, + 0x72, 0x74, 0x79, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, + 0x12, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x50, 0x61, 0x72, 0x74, 0x79, 0x56, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x12, 0x44, 0x0a, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x70, + 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x76, + 0x65, 0x67, 0x61, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x3c, 0x0a, 0x0b, 0x6e, 0x65, 0x77, + 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, + 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x0a, 0x6e, 0x65, 0x77, + 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x4f, 0x0a, 0x10, 0x66, 0x61, 0x63, 0x74, 0x6f, + 0x72, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x07, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x25, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, + 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x0e, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, + 0x73, 0x42, 0x79, 0x50, 0x61, 0x72, 0x74, 0x79, 0x12, 0x30, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, + 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x67, + 0x72, 0x61, 0x6d, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x72, + 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x68, 0x61, 0x73, 0x5f, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x48, 0x61, + 0x73, 0x45, 0x6e, 0x64, 0x65, 0x64, 0x22, 0x54, 0x0a, 0x13, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x14, 0x0a, + 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, + 0x72, 0x74, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, + 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x69, + 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x55, 0x0a, 0x11, + 0x45, 0x70, 0x6f, 0x63, 0x68, 0x50, 0x61, 0x72, 0x74, 0x79, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x73, 0x12, 0x40, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, + 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, + 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x79, 0x56, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x22, 0x3b, 0x0a, 0x0b, 0x50, 0x61, 0x72, 0x74, 0x79, 0x56, 0x6f, 0x6c, 0x75, + 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x22, 0x9b, 0x01, 0x0a, 0x0b, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1f, 0x0a, + 0x0b, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x70, 0x6f, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0a, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x6f, 0x73, 0x12, 0x1b, + 0x0a, 0x09, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x08, 0x6e, 0x65, 0x78, 0x74, 0x53, 0x74, 0x65, 0x70, 0x12, 0x31, 0x0a, 0x06, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x76, 0x65, + 0x67, 0x61, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, + 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x56, + 0x0a, 0x10, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x73, 0x73, 0x65, 0x74, 0x41, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x73, 0x73, 0x65, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x12, 0x16, + 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x73, 0x0a, 0x1b, 0x42, 0x61, 0x6e, 0x6b, 0x69, 0x6e, + 0x67, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x46, 0x65, 0x65, 0x44, 0x69, 0x73, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x54, 0x0a, 0x14, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, 0x61, + 0x73, 0x73, 0x65, 0x74, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, + 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x41, 0x73, 0x73, 0x65, + 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x12, 0x70, 0x61, 0x72, 0x74, 0x79, 0x41, 0x73, + 0x73, 0x65, 0x74, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xe4, 0x02, 0x0a, 0x18, + 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, 0x43, 0x61, + 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x65, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x50, 0x72, 0x69, 0x63, + 0x65, 0x12, 0x52, 0x0a, 0x13, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, + 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x65, 0x50, + 0x72, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x12, 0x70, 0x72, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x54, 0x72, 0x61, + 0x64, 0x65, 0x52, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, + 0x69, 0x63, 0x65, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x0c, 0x70, 0x72, 0x69, 0x63, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, + 0x37, 0x0a, 0x18, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, + 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x03, 0x52, 0x15, 0x70, 0x72, 0x69, 0x63, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, + 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x48, 0x0a, 0x12, 0x62, 0x6f, 0x6f, 0x6b, + 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, + 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x72, 0x69, 0x63, + 0x65, 0x52, 0x0f, 0x62, 0x6f, 0x6f, 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x41, 0x74, 0x54, 0x69, + 0x6d, 0x65, 0x22, 0x45, 0x0a, 0x07, 0x50, 0x61, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x3a, 0x0a, + 0x08, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1e, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, + 0x08, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x22, 0x6b, 0x0a, 0x0c, 0x50, 0x61, 0x72, + 0x74, 0x79, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x72, + 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72, + 0x74, 0x79, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x2a, 0x0a, 0x08, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x76, + 0x65, 0x67, 0x61, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x32, 0x0a, 0x0f, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, + 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x69, + 0x63, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x70, 0x72, 0x69, 0x63, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x2a, 0x60, 0x0a, 0x06, 0x46, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x12, 0x16, 0x0a, 0x12, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, + 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x10, 0x01, 0x12, 0x1b, + 0x0a, 0x17, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x5f, 0x43, + 0x4f, 0x4d, 0x50, 0x52, 0x45, 0x53, 0x53, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x46, + 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x4a, 0x53, 0x4f, 0x4e, 0x10, 0x03, 0x42, 0x33, 0x5a, 0x31, + 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6c, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x65, 0x67, 0x61, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, + 0x2f, 0x76, 0x65, 0x67, 0x61, 0x2f, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2f, 0x76, + 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var (