diff --git a/CHANGELOG.md b/CHANGELOG.md
index e1c0cdf08d..51c281acc2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -23,6 +23,7 @@
- [9516](https://github.com/vegaprotocol/vega/issues/9516) - Add filter by transfer ID for ledger entries API.
- [9943](https://github.com/vegaprotocol/vega/issues/9943) - Support amending the order size by defining the target size.
- [9231](https://github.com/vegaprotocol/vega/issues/9231) - Add a `JoinTeam API`
+- [10095](https://github.com/vegaprotocol/vega/issues/10095) - Add isolated margin support.
- [10222](https://github.com/vegaprotocol/vega/issues/10222) - Supply bootstrap peers after starting the `IPFS` node to increase reliability.
- [10097](https://github.com/vegaprotocol/vega/issues/10097) - Add funding rate modifiers to perpetual product definition.
- [9981](https://github.com/vegaprotocol/vega/issues/9981) - Support filtering on epoch range on transfers.
diff --git a/commands/batch_market_instructions.go b/commands/batch_market_instructions.go
index 33a3604c28..422a1b1b04 100644
--- a/commands/batch_market_instructions.go
+++ b/commands/batch_market_instructions.go
@@ -36,7 +36,8 @@ func checkBatchMarketInstructions(cmd *commandspb.BatchMarketInstructions) Error
len(cmd.Amendments)+
len(cmd.Submissions)+
len(cmd.StopOrdersSubmission)+
- len(cmd.StopOrdersCancellation) == 0 {
+ len(cmd.StopOrdersCancellation)+
+ len(cmd.UpdateMarginMode) == 0 {
return errs.FinalAddForProperty("batch_market_instructions", ErrEmptyBatchMarketInstructions)
}
diff --git a/commands/update_margin_mode.go b/commands/update_margin_mode.go
index 892a54fb0c..38524d7e5e 100644
--- a/commands/update_margin_mode.go
+++ b/commands/update_margin_mode.go
@@ -33,7 +33,11 @@ func checkUpdateMarginMode(cmd *commandspb.UpdateMarginMode) Errors {
return errs.FinalAddForProperty("update_margin_mode", ErrIsRequired)
}
- if cmd.Mode == commandspb.UpdateMarginMode_MODE_CROSS_UNSPECIFIED {
+ if cmd.Mode == commandspb.UpdateMarginMode_MODE_UNSPECIFIED {
+ errs.AddForProperty("update_margin_mode.margin_mode", ErrIsNotValid)
+ }
+
+ if _, ok := commandspb.UpdateMarginMode_Mode_name[int32(cmd.Mode)]; !ok {
errs.AddForProperty("update_margin_mode.margin_mode", ErrIsNotValid)
}
diff --git a/commands/update_margin_mode_test.go b/commands/update_margin_mode_test.go
index 1cf739e153..8a12ea3ebc 100644
--- a/commands/update_margin_mode_test.go
+++ b/commands/update_margin_mode_test.go
@@ -51,7 +51,7 @@ func TestUpdateMarginMode(t *testing.T) {
{
"unspecified mode",
&commandspb.UpdateMarginMode{
- Mode: commandspb.UpdateMarginMode_MODE_CROSS_UNSPECIFIED,
+ Mode: commandspb.UpdateMarginMode_MODE_UNSPECIFIED,
},
"update_margin_mode.margin_mode",
commands.ErrIsNotValid,
diff --git a/core/collateral/checkpoint.go b/core/collateral/checkpoint.go
index 1782c2a000..c1c6b655da 100644
--- a/core/collateral/checkpoint.go
+++ b/core/collateral/checkpoint.go
@@ -187,7 +187,7 @@ func (e *Engine) getCheckpointBalances() []*checkpoint.AssetBalance {
}
balance.AddSum(acc.Balance)
- case types.AccountTypeMargin, types.AccountTypeGeneral, types.AccountTypeHolding, types.AccountTypeBond, types.AccountTypeFeesLiquidity,
+ case types.AccountTypeMargin, types.AccountTypeOrderMargin, types.AccountTypeGeneral, types.AccountTypeHolding, types.AccountTypeBond, types.AccountTypeFeesLiquidity,
types.AccountTypeInsurance, types.AccountTypeGlobalReward, types.AccountTypeLiquidityFeesBonusDistribution, types.AccountTypeLPLiquidityFees,
types.AccountTypeLPFeeReward, types.AccountTypeMakerReceivedFeeReward, types.AccountTypeMakerPaidFeeReward,
types.AccountTypeMarketProposerReward, types.AccountTypeFeesInfrastructure, types.AccountTypePendingTransfers,
diff --git a/core/collateral/engine.go b/core/collateral/engine.go
index d174a6a84d..301e864725 100644
--- a/core/collateral/engine.go
+++ b/core/collateral/engine.go
@@ -1093,7 +1093,7 @@ func (e *Engine) CheckLeftOverBalance(ctx context.Context, settle *types.Account
// FinalSettlement will process the list of transfers instructed by other engines
// This func currently only expects TransferType_{LOSS,WIN} transfers
// other transfer types have dedicated funcs (MarkToMarket, MarginUpdate).
-func (e *Engine) FinalSettlement(ctx context.Context, marketID string, transfers []*types.Transfer, factor *num.Uint) ([]*types.LedgerMovement, error) {
+func (e *Engine) FinalSettlement(ctx context.Context, marketID string, transfers []*types.Transfer, factor *num.Uint, useGeneralAccountForMarginSearch func(string) bool) ([]*types.LedgerMovement, error) {
// stop immediately if there aren't any transfers, channels are closed
if len(transfers) == 0 {
return nil, nil
@@ -1131,7 +1131,7 @@ func (e *Engine) FinalSettlement(ctx context.Context, marketID string, transfers
break
}
- req, err := e.getTransferRequest(transfer, settle, insurance, &marginUpdate{})
+ req, err := e.getTransferRequest(transfer, settle, insurance, &marginUpdate{}, useGeneralAccountForMarginSearch(transfer.Owner))
if err != nil {
e.log.Error(
"Failed to build transfer request for event",
@@ -1242,7 +1242,7 @@ func (e *Engine) FinalSettlement(ctx context.Context, marketID string, transfers
continue
}
- req, err := e.getTransferRequest(transfer, settle, insurance, &marginUpdate{})
+ req, err := e.getTransferRequest(transfer, settle, insurance, &marginUpdate{}, useGeneralAccountForMarginSearch(transfer.Owner))
if err != nil {
e.log.Error(
"Failed to build transfer request for event",
@@ -1305,17 +1305,17 @@ func (e *Engine) getMTMPartyAccounts(party, marketID, asset string) (gen, margin
// PerpsFundingSettlement will run a funding settlement over given positions.
// This works exactly the same as a MTM settlement, but uses different transfer types.
-func (e *Engine) PerpsFundingSettlement(ctx context.Context, marketID string, transfers []events.Transfer, asset string, round *num.Uint) ([]events.Margin, []*types.LedgerMovement, error) {
- return e.mtmOrFundingSettlement(ctx, marketID, transfers, asset, types.TransferTypePerpFundingWin, round)
+func (e *Engine) PerpsFundingSettlement(ctx context.Context, marketID string, transfers []events.Transfer, asset string, round *num.Uint, useGeneralAccountForMarginSearch func(string) bool) ([]events.Margin, []*types.LedgerMovement, error) {
+ return e.mtmOrFundingSettlement(ctx, marketID, transfers, asset, types.TransferTypePerpFundingWin, round, useGeneralAccountForMarginSearch)
}
// MarkToMarket will run the mark to market settlement over a given set of positions
// return ledger move stuff here, too (separate return value, because we need to stream those).
-func (e *Engine) MarkToMarket(ctx context.Context, marketID string, transfers []events.Transfer, asset string) ([]events.Margin, []*types.LedgerMovement, error) {
- return e.mtmOrFundingSettlement(ctx, marketID, transfers, asset, types.TransferTypeMTMWin, nil)
+func (e *Engine) MarkToMarket(ctx context.Context, marketID string, transfers []events.Transfer, asset string, useGeneralAccountForMarginSearch func(string) bool) ([]events.Margin, []*types.LedgerMovement, error) {
+ return e.mtmOrFundingSettlement(ctx, marketID, transfers, asset, types.TransferTypeMTMWin, nil, useGeneralAccountForMarginSearch)
}
-func (e *Engine) mtmOrFundingSettlement(ctx context.Context, marketID string, transfers []events.Transfer, asset string, winType types.TransferType, round *num.Uint) ([]events.Margin, []*types.LedgerMovement, error) {
+func (e *Engine) mtmOrFundingSettlement(ctx context.Context, marketID string, transfers []events.Transfer, asset string, winType types.TransferType, round *num.Uint, useGeneralAccountForMarginSearch func(string) bool) ([]events.Margin, []*types.LedgerMovement, error) {
// stop immediately if there aren't any transfers, channels are closed
if len(transfers) == 0 {
return nil, nil, nil
@@ -1358,6 +1358,7 @@ func (e *Engine) mtmOrFundingSettlement(ctx context.Context, marketID string, tr
// get the state of the accounts before processing transfers
// so they can be used in the marginEvt, and to calculate the missing funds
marginEvt.general, marginEvt.margin, marginEvt.bond, err = e.getMTMPartyAccounts(party, settle.MarketID, asset)
+ marginEvt.orderMargin, _ = e.GetAccountByID(e.accountID(marginEvt.marketID, party, marginEvt.asset, types.AccountTypeOrderMargin))
if err != nil {
e.log.Error("unable to get party account",
logging.String("party-id", party),
@@ -1380,7 +1381,7 @@ func (e *Engine) mtmOrFundingSettlement(ctx context.Context, marketID string, tr
break
}
- req, err := e.getTransferRequest(transfer, settle, insurance, marginEvt)
+ req, err := e.getTransferRequest(transfer, settle, insurance, marginEvt, useGeneralAccountForMarginSearch(transfer.Owner))
if err != nil {
e.log.Error(
"Failed to build transfer request for event",
@@ -1428,8 +1429,11 @@ func (e *Engine) mtmOrFundingSettlement(ctx context.Context, marketID string, tr
if party != types.NetworkParty {
// no error possible here, we're just reloading the accounts to ensure the correct balance
marginEvt.general, marginEvt.margin, marginEvt.bond, _ = e.getMTMPartyAccounts(party, settle.MarketID, asset)
-
- totalInAccount := num.Sum(marginEvt.general.Balance, marginEvt.margin.Balance)
+ marginEvt.orderMargin, _ = e.GetAccountByID(e.accountID(marginEvt.marketID, party, marginEvt.asset, types.AccountTypeOrderMargin))
+ totalInAccount := marginEvt.margin.Balance.Clone()
+ if useGeneralAccountForMarginSearch(marginEvt.Party()) {
+ totalInAccount.AddSum(marginEvt.general.Balance)
+ }
if marginEvt.bond != nil {
totalInAccount.Add(totalInAccount, marginEvt.bond.Balance)
}
@@ -1516,14 +1520,14 @@ func (e *Engine) mtmOrFundingSettlement(ctx context.Context, marketID string, tr
logging.String("asset", asset),
logging.String("market-id", settle.MarketID))
}
-
+ marginEvt.orderMargin, _ = e.GetAccountByID(e.accountID(marginEvt.marketID, party, marginEvt.asset, types.AccountTypeOrderMargin))
if transfer == nil {
marginEvts = append(marginEvts, marginEvt)
continue
}
}
- req, err := e.getTransferRequest(transfer, settle, insurance, marginEvt)
+ req, err := e.getTransferRequest(transfer, settle, insurance, marginEvt, true)
if err != nil {
e.log.Error(
"Failed to build transfer request for event",
@@ -1611,6 +1615,7 @@ func (e *Engine) GetPartyMargin(pos events.MarketPosition, asset, marketID strin
}
genID := e.accountID(noMarket, pos.Party(), asset, types.AccountTypeGeneral)
marginID := e.accountID(marketID, pos.Party(), asset, types.AccountTypeMargin)
+ orderMarginID := e.accountID(marketID, pos.Party(), asset, types.AccountTypeOrderMargin)
bondID := e.accountID(marketID, pos.Party(), asset, types.AccountTypeBond)
genAcc, err := e.GetAccountByID(genID)
if err != nil {
@@ -1627,6 +1632,10 @@ func (e *Engine) GetPartyMargin(pos events.MarketPosition, asset, marketID strin
logging.String("market-id", marketID))
return nil, ErrPartyAccountsMissing
}
+
+ // can be nil for a party in cross margin mode
+ orderMarAcc, _ := e.GetAccountByID(orderMarginID)
+
// do not check error,
// not all parties have a bond account
bondAcc, _ := e.GetAccountByID(bondID)
@@ -1634,6 +1643,7 @@ func (e *Engine) GetPartyMargin(pos events.MarketPosition, asset, marketID strin
return marginUpdate{
MarketPosition: pos,
margin: marAcc,
+ orderMargin: orderMarAcc,
general: genAcc,
lock: nil,
bond: bondAcc,
@@ -1643,6 +1653,24 @@ func (e *Engine) GetPartyMargin(pos events.MarketPosition, asset, marketID strin
}, nil
}
+// IsolatedMarginUpdate returns margin events for parties that don't meet their margin requirement (i.e. margin balance < maintenance).
+func (e *Engine) IsolatedMarginUpdate(updates []events.Risk) []events.Margin {
+ closed := make([]events.Margin, 0, len(updates))
+ if len(updates) == 0 {
+ return closed
+ }
+ for _, r := range updates {
+ mevt := &marginUpdate{
+ MarketPosition: r,
+ asset: r.Asset(),
+ marketID: r.MarketID(),
+ marginShortFall: num.UintZero(),
+ }
+ closed = append(closed, mevt)
+ }
+ return closed
+}
+
// MarginUpdate will run the margin updates over a set of risk events (margin updates).
func (e *Engine) MarginUpdate(ctx context.Context, marketID string, updates []events.Risk) ([]*types.LedgerMovement, []events.Margin, []events.Margin, error) {
response := make([]*types.LedgerMovement, 0, len(updates))
@@ -1668,7 +1696,7 @@ func (e *Engine) MarginUpdate(ctx context.Context, marketID string, updates []ev
marginShortFall: num.UintZero(),
}
- req, err := e.getTransferRequest(transfer, settle, nil, mevt)
+ req, err := e.getTransferRequest(transfer, settle, nil, mevt, true)
if err != nil {
return response, closed, toPenalise, err
}
@@ -1983,17 +2011,19 @@ func (e *Engine) MarginUpdateOnOrder(ctx context.Context, marketID string, updat
marginShortFall: num.UintZero(),
}
- req, err := e.getTransferRequest(transfer, settle, nil, &mevt)
+ req, err := e.getTransferRequest(transfer, settle, nil, &mevt, true)
if err != nil {
return nil, nil, err
}
// we do not have enough money to get to the minimum amount,
// we return an error.
- if num.Sum(mevt.GeneralBalance(), mevt.MarginBalance()).LT(transfer.MinAmount) {
+ if transfer.Type == types.TransferTypeMarginLow && num.Sum(mevt.GeneralBalance(), mevt.MarginBalance()).LT(transfer.MinAmount) {
+ return nil, mevt, ErrMinAmountNotReached
+ }
+ if transfer.Type == types.TransferTypeOrderMarginLow && num.Sum(mevt.GeneralBalance(), mevt.OrderMarginBalance()).LT(transfer.MinAmount) {
return nil, mevt, ErrMinAmountNotReached
}
-
if mevt.bond != nil && transfer.Amount.Amount.GT(mevt.general.Balance) {
// this is a liquidity provider but it did not have enough funds to
// pay from the general account, we'll have to penalize later on
@@ -2655,7 +2685,7 @@ func (e *Engine) getTransferFundsFeesTransferRequest(ctx context.Context, t *typ
}
// getTransferRequest builds the request, and sets the required accounts based on the type of the Transfer argument.
-func (e *Engine) getTransferRequest(p *types.Transfer, settle, insurance *types.Account, mEvt *marginUpdate) (*types.TransferRequest, error) {
+func (e *Engine) getTransferRequest(p *types.Transfer, settle, insurance *types.Account, mEvt *marginUpdate, useGeneralAccountForMarginSearch bool) (*types.TransferRequest, error) {
var (
asset = p.Amount.Asset
err error
@@ -2689,6 +2719,7 @@ func (e *Engine) getTransferRequest(p *types.Transfer, settle, insurance *types.
return nil, err
}
}
+
// we'll need this account for all transfer types anyway (settlements, margin-risk updates)
if mEvt.general == nil {
mEvt.general, err = e.GetAccountByID(e.accountID(noMarket, p.Owner, asset, types.AccountTypeGeneral))
@@ -2730,23 +2761,38 @@ func (e *Engine) getTransferRequest(p *types.Transfer, settle, insurance *types.
// losses are collected first from the margin account, then the general account, and finally
// taken out of the insurance pool. Network party will only have insurance pool available
if mEvt.bond != nil {
- // network party will never have a bond account, so we know what to do
- req.FromAccount = []*types.Account{
- mEvt.margin,
- mEvt.general,
- mEvt.bond,
- insurance,
+ if useGeneralAccountForMarginSearch {
+ // network party will never have a bond account, so we know what to do
+ req.FromAccount = []*types.Account{
+ mEvt.margin,
+ mEvt.general,
+ mEvt.bond,
+ insurance,
+ }
+ } else {
+ req.FromAccount = []*types.Account{
+ mEvt.margin,
+ mEvt.bond,
+ insurance,
+ }
}
} else if p.Owner == types.NetworkParty {
req.FromAccount = []*types.Account{
insurance,
}
} else {
- // regular party, no bond account:
- req.FromAccount = []*types.Account{
- mEvt.margin,
- mEvt.general,
- insurance,
+ if useGeneralAccountForMarginSearch {
+ // regular party, no bond account:
+ req.FromAccount = []*types.Account{
+ mEvt.margin,
+ mEvt.general,
+ insurance,
+ }
+ } else {
+ req.FromAccount = []*types.Account{
+ mEvt.margin,
+ insurance,
+ }
}
}
case types.TransferTypeWin, types.TransferTypeMTMWin, types.TransferTypePerpFundingWin:
@@ -2795,6 +2841,36 @@ func (e *Engine) getTransferRequest(p *types.Transfer, settle, insurance *types.
}
req.Amount = p.Amount.Amount.Clone()
req.MinAmount = p.MinAmount.Clone()
+ case types.TransferTypeIsolatedMarginLow:
+ mEvt.orderMargin, _ = e.GetAccountByID(e.accountID(settle.MarketID, p.Owner, asset, types.AccountTypeOrderMargin))
+ req.FromAccount = []*types.Account{
+ mEvt.orderMargin,
+ }
+ req.ToAccount = []*types.Account{
+ mEvt.margin,
+ }
+ req.Amount = p.Amount.Amount.Clone()
+ req.MinAmount = p.MinAmount.Clone()
+ case types.TransferTypeOrderMarginLow:
+ mEvt.orderMargin, _ = e.GetAccountByID(e.accountID(settle.MarketID, p.Owner, asset, types.AccountTypeOrderMargin))
+ req.FromAccount = []*types.Account{
+ mEvt.general,
+ }
+ req.ToAccount = []*types.Account{
+ mEvt.orderMargin,
+ }
+ req.Amount = p.Amount.Amount.Clone()
+ req.MinAmount = p.MinAmount.Clone()
+ case types.TransferTypeOrderMarginHigh:
+ mEvt.orderMargin, _ = e.GetAccountByID(e.accountID(settle.MarketID, p.Owner, asset, types.AccountTypeOrderMargin))
+ req.FromAccount = []*types.Account{
+ mEvt.orderMargin,
+ }
+ req.ToAccount = []*types.Account{
+ mEvt.general,
+ }
+ req.Amount = p.Amount.Amount.Clone()
+ req.MinAmount = p.MinAmount.Clone()
case types.TransferTypeDeposit:
// ensure we have the funds req.ToAccount deposit
eacc.Balance = eacc.Balance.Add(eacc.Balance, p.Amount.Amount)
@@ -3033,6 +3109,38 @@ func (e *Engine) ClearMarket(ctx context.Context, mktID, asset string, parties [
// as the entries to the response
resps = append(resps, ledgerEntries)
}
+ // clear order margin account
+ orderMarginAcc, err := e.GetAccountByID(e.accountID(mktID, v, asset, types.AccountTypeOrderMargin))
+ if err != nil {
+ e.log.Debug(
+ "Failed to get the order margin account",
+ logging.String("party-id", v),
+ logging.String("market-id", mktID),
+ logging.String("asset", asset),
+ logging.Error(err))
+ } else {
+ req.FromAccount[0] = orderMarginAcc
+ req.ToAccount[0] = generalAcc
+ req.Amount = orderMarginAcc.Balance
+
+ if e.log.GetLevel() == logging.DebugLevel {
+ e.log.Debug("Clearing party order margin account",
+ logging.String("market-id", mktID),
+ logging.String("asset", asset),
+ logging.String("party", v),
+ logging.BigUint("margin-before", orderMarginAcc.Balance),
+ logging.BigUint("general-before", generalAcc.Balance),
+ logging.BigUint("general-after", num.Sum(generalAcc.Balance, orderMarginAcc.Balance)))
+ }
+
+ ledgerEntries, err := e.clearAccount(ctx, req, v, asset, mktID)
+ if err != nil {
+ e.log.Panic("unable to clear party account", logging.Error(err))
+ }
+
+ // as the entries to the response
+ resps = append(resps, ledgerEntries)
+ }
// Then we do bond account
bondAcc, err := e.GetAccountByID(e.accountID(mktID, v, asset, types.AccountTypeBond))
@@ -3437,6 +3545,12 @@ func (e *Engine) GetPartyMarginAccount(market, party, asset string) (*types.Acco
return e.GetAccountByID(margin)
}
+// GetPartyOrderMarginAccount returns a margin account given the partyID and market.
+func (e *Engine) GetPartyOrderMarginAccount(market, party, asset string) (*types.Account, error) {
+ orderMargin := e.accountID(market, party, asset, types.AccountTypeOrderMargin)
+ return e.GetAccountByID(orderMargin)
+}
+
// GetPartyHoldingAccount returns a holding account given the partyID and market.
func (e *Engine) GetPartyHoldingAccount(party, asset string) (*types.Account, error) {
margin := e.accountID(noMarket, party, asset, types.AccountTypeHolding)
@@ -3552,7 +3666,7 @@ func (e *Engine) GetOrCreatePartyVestedRewardAccount(ctx context.Context, partyI
// RemoveDistressed will remove all distressed party in the event positions
// for a given market and asset.
-func (e *Engine) RemoveDistressed(ctx context.Context, parties []events.MarketPosition, marketID, asset string) (*types.LedgerMovement, error) {
+func (e *Engine) RemoveDistressed(ctx context.Context, parties []events.MarketPosition, marketID, asset string, useGeneralAccount func(string) bool) (*types.LedgerMovement, error) {
tl := len(parties)
if tl == 0 {
return nil, nil
@@ -3597,10 +3711,11 @@ func (e *Engine) RemoveDistressed(ctx context.Context, parties []events.MarketPo
if err := e.UpdateBalance(ctx, bondAcc.ID, bondAcc.Balance.SetUint64(0)); err != nil {
return nil, err
}
+ marginAcc, _ = e.GetAccountByID(e.accountID(marketID, party.Party(), asset, types.AccountTypeMargin))
}
// take whatever is left on the general account, and move to margin balance
// we can take everything from the account, as whatever amount was left here didn't cover the minimum margin requirement
- if genAcc.Balance != nil && !genAcc.Balance.IsZero() {
+ if useGeneralAccount(party.Party()) && genAcc.Balance != nil && !genAcc.Balance.IsZero() {
resp.Entries = append(resp.Entries, &types.LedgerEntry{
FromAccount: genAcc.ToDetails(),
ToAccount: marginAcc.ToDetails(),
@@ -3617,6 +3732,7 @@ func (e *Engine) RemoveDistressed(ctx context.Context, parties []events.MarketPo
if err := e.UpdateBalance(ctx, genAcc.ID, genAcc.Balance.SetUint64(0)); err != nil {
return nil, err
}
+ marginAcc, _ = e.GetAccountByID(e.accountID(marketID, party.Party(), asset, types.AccountTypeMargin))
}
// move monies from the margin account (balance is general, bond, and margin combined now)
if !marginAcc.Balance.IsZero() {
@@ -3639,19 +3755,32 @@ func (e *Engine) RemoveDistressed(ctx context.Context, parties []events.MarketPo
}
// we remove the margin account
- e.removeAccount(marginAcc.ID)
- // remove account from balances tracking
- e.rmPartyAccount(party.Party(), marginAcc.ID)
+ if useGeneralAccount(party.Party()) {
+ e.removeAccount(marginAcc.ID)
+ // remove account from balances tracking
+ e.rmPartyAccount(party.Party(), marginAcc.ID)
+ }
}
return &resp, nil
}
+func (e *Engine) ClearPartyOrderMarginAccount(ctx context.Context, party, market, asset string) (*types.LedgerMovement, error) {
+ acc, err := e.GetAccountByID(e.accountID(market, party, asset, types.AccountTypeOrderMargin))
+ if err != nil {
+ return nil, err
+ }
+ return e.clearPartyMarginAccount(ctx, party, asset, acc, types.TransferTypeOrderMarginHigh)
+}
+
func (e *Engine) ClearPartyMarginAccount(ctx context.Context, party, market, asset string) (*types.LedgerMovement, error) {
acc, err := e.GetAccountByID(e.accountID(market, party, asset, types.AccountTypeMargin))
if err != nil {
return nil, err
}
+ return e.clearPartyMarginAccount(ctx, party, asset, acc, types.TransferTypeMarginHigh)
+}
+func (e *Engine) clearPartyMarginAccount(ctx context.Context, party, asset string, acc *types.Account, transferType types.TransferType) (*types.LedgerMovement, error) {
// preevent returning empty ledger movements
if acc.Balance.IsZero() {
return nil, nil
@@ -3671,7 +3800,7 @@ func (e *Engine) ClearPartyMarginAccount(ctx context.Context, party, market, ass
FromAccount: acc.ToDetails(),
ToAccount: genAcc.ToDetails(),
Amount: acc.Balance.Clone(),
- Type: types.TransferTypeMarginHigh,
+ Type: transferType,
Timestamp: now,
FromAccountBalance: num.UintZero(),
ToAccountBalance: num.Sum(genAcc.Balance, acc.Balance),
@@ -3793,7 +3922,7 @@ func (e *Engine) Withdraw(ctx context.Context, partyID, asset string, amount *nu
mEvt := marginUpdate{
general: acc,
}
- req, err := e.getTransferRequest(&transf, nil, nil, &mEvt)
+ req, err := e.getTransferRequest(&transf, nil, nil, &mEvt, true)
if err != nil {
return nil, err
}
@@ -3904,7 +4033,7 @@ func (e *Engine) Deposit(ctx context.Context, partyID, asset string, amount *num
general: acc,
}
- req, err := e.getTransferRequest(&transf, nil, nil, &mEvt)
+ req, err := e.getTransferRequest(&transf, nil, nil, &mEvt, true)
if err != nil {
return nil, err
}
@@ -4390,6 +4519,28 @@ func (e *Engine) TransferSpot(ctx context.Context, partyID, toPartyID, asset str
return res, nil
}
+func (e *Engine) GetOrCreatePartyOrderMarginAccount(ctx context.Context, partyID, marketID, asset string) (string, error) {
+ if !e.AssetExists(asset) {
+ return "", ErrInvalidAssetID
+ }
+ marginID := e.accountID(marketID, partyID, asset, types.AccountTypeOrderMargin)
+ if _, ok := e.accs[marginID]; !ok {
+ acc := types.Account{
+ ID: marginID,
+ Asset: asset,
+ MarketID: marketID,
+ Balance: num.UintZero(),
+ Owner: partyID,
+ Type: types.AccountTypeOrderMargin,
+ }
+ e.accs[marginID] = &acc
+ e.addPartyAccount(partyID, marginID, &acc)
+ e.addAccountToHashableSlice(&acc)
+ e.broker.Send(events.NewAccountEvent(ctx, acc))
+ }
+ return marginID, nil
+}
+
func (e *Engine) GetVestingAccounts() []*types.Account {
accs := []*types.Account{}
for _, a := range e.accs {
diff --git a/core/collateral/engine_test.go b/core/collateral/engine_test.go
index 2c8358df4d..1f25e01d02 100644
--- a/core/collateral/engine_test.go
+++ b/core/collateral/engine_test.go
@@ -940,7 +940,7 @@ func testTransferLoss(t *testing.T) {
}
eng.broker.EXPECT().Send(gomock.Any()).AnyTimes()
- responses, err := eng.FinalSettlement(context.Background(), testMarketID, pos, num.UintOne())
+ responses, err := eng.FinalSettlement(context.Background(), testMarketID, pos, num.UintOne(), func(string) bool { return true })
assert.NoError(t, err)
assert.Equal(t, 2, len(responses))
resp := responses[0]
@@ -1011,7 +1011,7 @@ func testTransferComplexLoss(t *testing.T) {
}
eng.broker.EXPECT().Send(gomock.Any()).AnyTimes()
- responses, err := eng.FinalSettlement(context.Background(), testMarketID, pos, num.UintOne())
+ responses, err := eng.FinalSettlement(context.Background(), testMarketID, pos, num.UintOne(), func(string) bool { return true })
assert.Equal(t, 2, len(responses))
resp := responses[0]
assert.NoError(t, err)
@@ -1049,7 +1049,7 @@ func testTransferLossMissingPartyAccounts(t *testing.T) {
Type: types.TransferTypeLoss,
},
}
- resp, err := eng.FinalSettlement(context.Background(), testMarketID, pos, num.UintOne())
+ resp, err := eng.FinalSettlement(context.Background(), testMarketID, pos, num.UintOne(), func(string) bool { return true })
assert.Nil(t, resp)
require.Error(t, err)
assert.Contains(t, err.Error(), "account does not exist:")
@@ -1128,7 +1128,7 @@ func testProcessBoth(t *testing.T) {
assert.Equal(t, int64(2000), acc.Balance)
}
})
- responses, err := eng.FinalSettlement(context.Background(), testMarketID, pos, num.UintOne())
+ responses, err := eng.FinalSettlement(context.Background(), testMarketID, pos, num.UintOne(), func(string) bool { return true })
assert.Equal(t, 4, len(responses))
assert.NoError(t, err)
resp := responses[0]
@@ -1237,7 +1237,7 @@ func TestLossSocialization(t *testing.T) {
assert.Equal(t, 534, stringToInt(acc.Balance))
}
})
- raw, err := eng.FinalSettlement(context.Background(), testMarketID, transfers, num.UintOne())
+ raw, err := eng.FinalSettlement(context.Background(), testMarketID, transfers, num.UintOne(), func(string) bool { return true })
assert.NoError(t, err)
assert.Equal(t, 4, len(raw))
@@ -1308,7 +1308,7 @@ func testSettleBalanceNotZero(t *testing.T) {
r := recover()
require.NotNil(t, r)
}()
- _, _, _ = eng.MarkToMarket(context.Background(), testMarketID, transfers, "BTC")
+ _, _, _ = eng.MarkToMarket(context.Background(), testMarketID, transfers, "BTC", func(string) bool { return true })
// this should return an error
}
@@ -1377,7 +1377,7 @@ func testProcessBothProRated(t *testing.T) {
eng.broker.EXPECT().Send(gomock.Any()).AnyTimes()
eng.broker.EXPECT().SendBatch(gomock.Any()).Times(2)
- responses, err := eng.FinalSettlement(context.Background(), testMarketID, pos, num.UintOne())
+ responses, err := eng.FinalSettlement(context.Background(), testMarketID, pos, num.UintOne(), func(string) bool { return true })
assert.Equal(t, 4, len(responses))
assert.NoError(t, err)
@@ -1466,7 +1466,7 @@ func testProcessBothProRatedMTM(t *testing.T) {
eng.broker.EXPECT().SendBatch(gomock.Any()).AnyTimes()
// quickly get the interface mocked for this test
transfers := getMTMTransfer(pos)
- responses, raw, err := eng.MarkToMarket(context.Background(), testMarketID, transfers, "BTC")
+ responses, raw, err := eng.MarkToMarket(context.Background(), testMarketID, transfers, "BTC", func(string) bool { return true })
assert.Equal(t, 4, len(responses))
assert.NoError(t, err, "was error")
assert.NotEmpty(t, raw)
@@ -1516,7 +1516,7 @@ func testRemoveDistressedBalance(t *testing.T) {
assert.Equal(t, num.UintZero().Add(insBalance, num.NewUint(100)).String(), acc.Balance)
}
})
- resp, err := eng.RemoveDistressed(context.Background(), data, testMarketID, testMarketAsset)
+ resp, err := eng.RemoveDistressed(context.Background(), data, testMarketID, testMarketAsset, func(string) bool { return true })
assert.NoError(t, err)
assert.Equal(t, 1, len(resp.Entries))
@@ -1552,7 +1552,7 @@ func testRemoveDistressedNoBalance(t *testing.T) {
party: party,
},
}
- resp, err := eng.RemoveDistressed(context.Background(), data, testMarketID, testMarketAsset)
+ resp, err := eng.RemoveDistressed(context.Background(), data, testMarketID, testMarketAsset, func(string) bool { return true })
assert.NoError(t, err)
assert.Equal(t, 0, len(resp.Entries))
@@ -1644,7 +1644,7 @@ func testPerpFundingSuccess(t *testing.T) {
}
})
transfers := eng.getTestMTMTransfer(pos)
- evts, raw, err := eng.PerpsFundingSettlement(context.Background(), testMarketID, transfers, testMarketAsset, nil)
+ evts, raw, err := eng.PerpsFundingSettlement(context.Background(), testMarketID, transfers, testMarketAsset, nil, func(string) bool { return true })
assert.NoError(t, err)
assert.Equal(t, 4, len(raw))
assert.NotEmpty(t, evts)
@@ -1741,7 +1741,7 @@ func testPerpFundingSuccessWithRound(t *testing.T) {
}
})
transfers := eng.getTestMTMTransfer(pos)
- evts, raw, err := eng.PerpsFundingSettlement(context.Background(), testMarketID, transfers, testMarketAsset, round)
+ evts, raw, err := eng.PerpsFundingSettlement(context.Background(), testMarketID, transfers, testMarketAsset, round, func(string) bool { return true })
assert.NoError(t, err)
assert.Equal(t, 3, len(raw))
assert.NotEmpty(t, evts)
@@ -1847,7 +1847,7 @@ func testMTMSuccess(t *testing.T) {
}
})
transfers := eng.getTestMTMTransfer(pos)
- evts, raw, err := eng.MarkToMarket(context.Background(), testMarketID, transfers, "BTC")
+ evts, raw, err := eng.MarkToMarket(context.Background(), testMarketID, transfers, "BTC", func(string) bool { return true })
assert.NoError(t, err)
assert.Equal(t, 4, len(raw))
assert.NotEmpty(t, evts)
@@ -1885,7 +1885,7 @@ func TestInvalidMarketID(t *testing.T) {
transfers := eng.getTestMTMTransfer(pos)
invalidMarketID := testMarketID + "invalid"
- evts, raw, err := eng.MarkToMarket(context.Background(), invalidMarketID, transfers, "BTC")
+ evts, raw, err := eng.MarkToMarket(context.Background(), invalidMarketID, transfers, "BTC", func(string) bool { return true })
assert.Error(t, err)
assert.Equal(t, 0, len(raw))
assert.Empty(t, evts)
@@ -1922,7 +1922,7 @@ func TestEmptyTransfer(t *testing.T) {
}
transfers := eng.getTestMTMTransfer(pos)
- evts, raw, err := eng.MarkToMarket(context.Background(), testMarketID, transfers, "BTC")
+ evts, raw, err := eng.MarkToMarket(context.Background(), testMarketID, transfers, "BTC", func(string) bool { return true })
assert.NoError(t, err)
assert.Equal(t, 0, len(raw))
assert.Empty(t, evts)
@@ -1957,7 +1957,7 @@ func TestNoMarginAccount(t *testing.T) {
}
transfers := eng.getTestMTMTransfer(pos)
- evts, raw, err := eng.MarkToMarket(context.Background(), testMarketID, transfers, "BTC")
+ evts, raw, err := eng.MarkToMarket(context.Background(), testMarketID, transfers, "BTC", func(string) bool { return true })
assert.Error(t, err)
assert.Equal(t, 0, len(raw))
assert.Empty(t, evts)
@@ -1988,7 +1988,7 @@ func TestNoGeneralAccount(t *testing.T) {
}
transfers := eng.getTestMTMTransfer(pos)
- evts, raw, err := eng.MarkToMarket(context.Background(), testMarketID, transfers, "BTC")
+ evts, raw, err := eng.MarkToMarket(context.Background(), testMarketID, transfers, "BTC", func(string) bool { return true })
assert.Error(t, err)
assert.Equal(t, 0, len(raw))
assert.Empty(t, evts)
@@ -2010,7 +2010,7 @@ func TestMTMNoTransfers(t *testing.T) {
transfers := eng.getTestMTMTransfer(pos)
// Empty list of transfers
- evts, raw, err := eng.MarkToMarket(context.Background(), testMarketID, transfers, "BTC")
+ evts, raw, err := eng.MarkToMarket(context.Background(), testMarketID, transfers, "BTC", func(string) bool { return true })
assert.NoError(t, err)
assert.Equal(t, 0, len(raw))
assert.Empty(t, evts)
@@ -2021,7 +2021,7 @@ func TestMTMNoTransfers(t *testing.T) {
party: "test-party",
}
transfers = append(transfers, mt)
- evts, raw, err = eng.MarkToMarket(context.Background(), testMarketID, transfers, "BTC")
+ evts, raw, err = eng.MarkToMarket(context.Background(), testMarketID, transfers, "BTC", func(string) bool { return true })
assert.NoError(t, err)
assert.Equal(t, 0, len(raw))
assert.Equal(t, len(evts), 1)
@@ -2041,7 +2041,7 @@ func TestFinalSettlementNoTransfers(t *testing.T) {
pos := []*types.Transfer{}
- responses, err := eng.FinalSettlement(context.Background(), testMarketID, pos, num.UintOne())
+ responses, err := eng.FinalSettlement(context.Background(), testMarketID, pos, num.UintOne(), func(string) bool { return true })
assert.NoError(t, err)
assert.Equal(t, 0, len(responses))
}
@@ -2069,7 +2069,7 @@ func TestFinalSettlementNoSystemAccounts(t *testing.T) {
},
}
- responses, err := eng.FinalSettlement(context.Background(), "invalidMarketID", pos, num.UintOne())
+ responses, err := eng.FinalSettlement(context.Background(), "invalidMarketID", pos, num.UintOne(), func(string) bool { return true })
assert.Error(t, err)
assert.Equal(t, 0, len(responses))
}
@@ -2112,7 +2112,7 @@ func TestFinalSettlementNotEnoughMargin(t *testing.T) {
eng.broker.EXPECT().SendBatch(gomock.Any()).AnyTimes()
eng.broker.EXPECT().Send(gomock.Any()).AnyTimes()
- responses, err := eng.FinalSettlement(context.Background(), testMarketID, pos, num.UintOne())
+ responses, err := eng.FinalSettlement(context.Background(), testMarketID, pos, num.UintOne(), func(string) bool { return true })
assert.NoError(t, err)
assert.Equal(t, 2, len(responses))
@@ -2273,7 +2273,7 @@ func TestMTMLossSocialization(t *testing.T) {
}
})
transfers := eng.getTestMTMTransfer(pos)
- evts, raw, err := eng.MarkToMarket(context.Background(), testMarketID, transfers, "BTC")
+ evts, raw, err := eng.MarkToMarket(context.Background(), testMarketID, transfers, "BTC", func(string) bool { return true })
assert.NoError(t, err)
assert.Equal(t, 4, len(raw))
assert.NotEmpty(t, evts)
@@ -3145,8 +3145,10 @@ func (m riskFake) Asset() string { return m.asset }
func (m riskFake) MarketID() string { return "" }
func (m riskFake) MarginBalance() *num.Uint { return num.UintZero() }
func (m riskFake) GeneralBalance() *num.Uint { return num.UintZero() }
+func (m riskFake) GeneralAccountBalance() *num.Uint { return num.UintZero() }
func (m riskFake) BondBalance() *num.Uint { return num.UintZero() }
func (m riskFake) MarginShortFall() *num.Uint { return m.marginShortFall }
+func (m riskFake) OrderMarginBalance() *num.Uint { return num.UintZero() }
type transferFees struct {
tfs []*types.Transfer
diff --git a/core/collateral/margins.go b/core/collateral/margins.go
index 43f8fc738b..6d11a898a4 100644
--- a/core/collateral/margins.go
+++ b/core/collateral/margins.go
@@ -24,6 +24,7 @@ import (
type marginUpdate struct {
events.MarketPosition
margin *types.Account
+ orderMargin *types.Account
general *types.Account
lock *types.Account
bond *types.Account
@@ -51,6 +52,13 @@ func (n marginUpdate) MarginBalance() *num.Uint {
return n.margin.Balance.Clone()
}
+func (n marginUpdate) OrderMarginBalance() *num.Uint {
+ if n.orderMargin == nil {
+ return num.UintZero()
+ }
+ return n.orderMargin.Balance.Clone()
+}
+
// GeneralBalance here we cumulate both the general
// account and bon account so other package do not have
// to worry about how much funds are available in both
@@ -68,6 +76,13 @@ func (n marginUpdate) GeneralBalance() *num.Uint {
return num.Sum(bond, gen)
}
+func (n marginUpdate) GeneralAccountBalance() *num.Uint {
+ if n.general != nil && n.general.Balance != nil {
+ return n.general.Balance
+ }
+ return num.UintZero()
+}
+
func (n marginUpdate) MarginShortFall() *num.Uint {
return n.marginShortFall.Clone()
}
diff --git a/core/collateral/network_mtm_test.go b/core/collateral/network_mtm_test.go
index 74b9ba13fe..e4dec4f397 100644
--- a/core/collateral/network_mtm_test.go
+++ b/core/collateral/network_mtm_test.go
@@ -117,7 +117,7 @@ func testMTMWithNetworkNoLossSoc(t *testing.T) {
}
})
transfers := eng.getTestMTMTransfer(pos)
- evts, raw, err := eng.MarkToMarket(context.Background(), testMarketID, transfers, "BTC")
+ evts, raw, err := eng.MarkToMarket(context.Background(), testMarketID, transfers, "BTC", func(string) bool { return true })
assert.NoError(t, err)
assert.Equal(t, 3, len(raw))
assert.NotEmpty(t, evts)
@@ -219,7 +219,7 @@ func testMTMWithNetworkLossSoc(t *testing.T) {
}
})
transfers := eng.getTestMTMTransfer(pos)
- evts, raw, err := eng.MarkToMarket(context.Background(), testMarketID, transfers, "BTC")
+ evts, raw, err := eng.MarkToMarket(context.Background(), testMarketID, transfers, "BTC", func(string) bool { return true })
assert.NoError(t, err)
assert.Equal(t, 3, len(raw))
assert.NotEmpty(t, evts)
diff --git a/core/events/events.go b/core/events/events.go
index 454b7f10fa..aae49c0889 100644
--- a/core/events/events.go
+++ b/core/events/events.go
@@ -81,10 +81,14 @@ type Margin interface {
MarketPosition
Asset() string
MarginBalance() *num.Uint
+ OrderMarginBalance() *num.Uint
GeneralBalance() *num.Uint
BondBalance() *num.Uint
MarketID() string
MarginShortFall() *num.Uint
+ // as opposed to the GeneralBalance() which actually returns the available balance (general+bond)
+ // this returns the actual balance of the general account
+ GeneralAccountBalance() *num.Uint
}
// Risk is an event that summarizes everything and an eventual update to margin account.
diff --git a/core/execution/common/interfaces.go b/core/execution/common/interfaces.go
index bd98b1fd03..017a3a198f 100644
--- a/core/execution/common/interfaces.go
+++ b/core/execution/common/interfaces.go
@@ -140,6 +140,7 @@ type Collateral interface {
EnableAsset(ctx context.Context, asset types.Asset) error
GetPartyGeneralAccount(party, asset string) (*types.Account, error)
GetPartyBondAccount(market, partyID, asset string) (*types.Account, error)
+ GetOrCreatePartyOrderMarginAccount(ctx context.Context, partyID, marketID, asset string) (string, error)
BondUpdate(ctx context.Context, market string, transfer *types.Transfer) (*types.LedgerMovement, error)
BondSpotUpdate(ctx context.Context, market string, transfer *types.Transfer) (*types.LedgerMovement, error)
RemoveBondAccount(partyID, marketID, asset string) error
@@ -149,10 +150,11 @@ type Collateral interface {
RollbackMarginUpdateOnOrder(ctx context.Context, marketID string, assetID string, transfer *types.Transfer) (*types.LedgerMovement, error)
GetOrCreatePartyBondAccount(ctx context.Context, partyID, marketID, asset string) (*types.Account, error)
CreatePartyMarginAccount(ctx context.Context, partyID, marketID, asset string) (string, error)
- FinalSettlement(ctx context.Context, marketID string, transfers []*types.Transfer, factor *num.Uint) ([]*types.LedgerMovement, error)
+ FinalSettlement(ctx context.Context, marketID string, transfers []*types.Transfer, factor *num.Uint, useGeneralAccountForMarginSearch func(string) bool) ([]*types.LedgerMovement, error)
ClearMarket(ctx context.Context, mktID, asset string, parties []string, keepInsurance bool) ([]*types.LedgerMovement, error)
HasGeneralAccount(party, asset string) bool
ClearPartyMarginAccount(ctx context.Context, party, market, asset string) (*types.LedgerMovement, error)
+ ClearPartyOrderMarginAccount(ctx context.Context, party, market, asset string) (*types.LedgerMovement, error)
CanCoverBond(market, party, asset string, amount *num.Uint) bool
Hash() []byte
TransferFeesContinuousTrading(ctx context.Context, marketID string, assetID string, ft events.FeesTransfer) ([]*types.LedgerMovement, error)
@@ -160,9 +162,10 @@ type Collateral interface {
TransferSpotFees(ctx context.Context, marketID string, assetID string, ft events.FeesTransfer) ([]*types.LedgerMovement, error)
TransferSpotFeesContinuousTrading(ctx context.Context, marketID string, assetID string, ft events.FeesTransfer) ([]*types.LedgerMovement, error)
MarginUpdate(ctx context.Context, marketID string, updates []events.Risk) ([]*types.LedgerMovement, []events.Margin, []events.Margin, error)
- PerpsFundingSettlement(ctx context.Context, marketID string, transfers []events.Transfer, asset string, round *num.Uint) ([]events.Margin, []*types.LedgerMovement, error)
- MarkToMarket(ctx context.Context, marketID string, transfers []events.Transfer, asset string) ([]events.Margin, []*types.LedgerMovement, error)
- RemoveDistressed(ctx context.Context, parties []events.MarketPosition, marketID, asset string) (*types.LedgerMovement, error)
+ IsolatedMarginUpdate(updates []events.Risk) []events.Margin
+ PerpsFundingSettlement(ctx context.Context, marketID string, transfers []events.Transfer, asset string, round *num.Uint, useGeneralAccountForMarginSearch func(string) bool) ([]events.Margin, []*types.LedgerMovement, error)
+ MarkToMarket(ctx context.Context, marketID string, transfers []events.Transfer, asset string, useGeneralAccountForMarginSearch func(string) bool) ([]events.Margin, []*types.LedgerMovement, error)
+ RemoveDistressed(ctx context.Context, parties []events.MarketPosition, marketID, asset string, useGeneralAccount func(string) bool) (*types.LedgerMovement, error)
GetMarketLiquidityFeeAccount(market, asset string) (*types.Account, error)
GetAssetQuantum(asset string) (num.Decimal, error)
GetInsurancePoolBalance(marketID, asset string) (*num.Uint, bool)
diff --git a/core/execution/common/mocks/mocks.go b/core/execution/common/mocks/mocks.go
index 2795cead21..46ddd547e7 100644
--- a/core/execution/common/mocks/mocks.go
+++ b/core/execution/common/mocks/mocks.go
@@ -296,6 +296,21 @@ func (mr *MockCollateralMockRecorder) ClearPartyMarginAccount(arg0, arg1, arg2,
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ClearPartyMarginAccount", reflect.TypeOf((*MockCollateral)(nil).ClearPartyMarginAccount), arg0, arg1, arg2, arg3)
}
+// ClearPartyOrderMarginAccount mocks base method.
+func (m *MockCollateral) ClearPartyOrderMarginAccount(arg0 context.Context, arg1, arg2, arg3 string) (*types.LedgerMovement, error) {
+ m.ctrl.T.Helper()
+ ret := m.ctrl.Call(m, "ClearPartyOrderMarginAccount", arg0, arg1, arg2, arg3)
+ ret0, _ := ret[0].(*types.LedgerMovement)
+ ret1, _ := ret[1].(error)
+ return ret0, ret1
+}
+
+// ClearPartyOrderMarginAccount indicates an expected call of ClearPartyOrderMarginAccount.
+func (mr *MockCollateralMockRecorder) ClearPartyOrderMarginAccount(arg0, arg1, arg2, arg3 interface{}) *gomock.Call {
+ mr.mock.ctrl.T.Helper()
+ return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ClearPartyOrderMarginAccount", reflect.TypeOf((*MockCollateral)(nil).ClearPartyOrderMarginAccount), arg0, arg1, arg2, arg3)
+}
+
// ClearSpotMarket mocks base method.
func (m *MockCollateral) ClearSpotMarket(arg0 context.Context, arg1, arg2 string) ([]*types.LedgerMovement, error) {
m.ctrl.T.Helper()
@@ -401,18 +416,18 @@ func (mr *MockCollateralMockRecorder) EnableAsset(arg0, arg1 interface{}) *gomoc
}
// FinalSettlement mocks base method.
-func (m *MockCollateral) FinalSettlement(arg0 context.Context, arg1 string, arg2 []*types.Transfer, arg3 *num.Uint) ([]*types.LedgerMovement, error) {
+func (m *MockCollateral) FinalSettlement(arg0 context.Context, arg1 string, arg2 []*types.Transfer, arg3 *num.Uint, arg4 func(string) bool) ([]*types.LedgerMovement, error) {
m.ctrl.T.Helper()
- ret := m.ctrl.Call(m, "FinalSettlement", arg0, arg1, arg2, arg3)
+ ret := m.ctrl.Call(m, "FinalSettlement", arg0, arg1, arg2, arg3, arg4)
ret0, _ := ret[0].([]*types.LedgerMovement)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// FinalSettlement indicates an expected call of FinalSettlement.
-func (mr *MockCollateralMockRecorder) FinalSettlement(arg0, arg1, arg2, arg3 interface{}) *gomock.Call {
+func (mr *MockCollateralMockRecorder) FinalSettlement(arg0, arg1, arg2, arg3, arg4 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
- return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalSettlement", reflect.TypeOf((*MockCollateral)(nil).FinalSettlement), arg0, arg1, arg2, arg3)
+ return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FinalSettlement", reflect.TypeOf((*MockCollateral)(nil).FinalSettlement), arg0, arg1, arg2, arg3, arg4)
}
// GetAssetQuantum mocks base method.
@@ -520,6 +535,21 @@ func (mr *MockCollateralMockRecorder) GetOrCreatePartyLiquidityFeeAccount(arg0,
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetOrCreatePartyLiquidityFeeAccount", reflect.TypeOf((*MockCollateral)(nil).GetOrCreatePartyLiquidityFeeAccount), arg0, arg1, arg2, arg3)
}
+// GetOrCreatePartyOrderMarginAccount mocks base method.
+func (m *MockCollateral) GetOrCreatePartyOrderMarginAccount(arg0 context.Context, arg1, arg2, arg3 string) (string, error) {
+ m.ctrl.T.Helper()
+ ret := m.ctrl.Call(m, "GetOrCreatePartyOrderMarginAccount", arg0, arg1, arg2, arg3)
+ ret0, _ := ret[0].(string)
+ ret1, _ := ret[1].(error)
+ return ret0, ret1
+}
+
+// GetOrCreatePartyOrderMarginAccount indicates an expected call of GetOrCreatePartyOrderMarginAccount.
+func (mr *MockCollateralMockRecorder) GetOrCreatePartyOrderMarginAccount(arg0, arg1, arg2, arg3 interface{}) *gomock.Call {
+ mr.mock.ctrl.T.Helper()
+ return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetOrCreatePartyOrderMarginAccount", reflect.TypeOf((*MockCollateral)(nil).GetOrCreatePartyOrderMarginAccount), arg0, arg1, arg2, arg3)
+}
+
// GetPartyBondAccount mocks base method.
func (m *MockCollateral) GetPartyBondAccount(arg0, arg1, arg2 string) (*types.Account, error) {
m.ctrl.T.Helper()
@@ -623,6 +653,20 @@ func (mr *MockCollateralMockRecorder) Hash() *gomock.Call {
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Hash", reflect.TypeOf((*MockCollateral)(nil).Hash))
}
+// IsolatedMarginUpdate mocks base method.
+func (m *MockCollateral) IsolatedMarginUpdate(arg0 []events.Risk) []events.Margin {
+ m.ctrl.T.Helper()
+ ret := m.ctrl.Call(m, "IsolatedMarginUpdate", arg0)
+ ret0, _ := ret[0].([]events.Margin)
+ return ret0
+}
+
+// IsolatedMarginUpdate indicates an expected call of IsolatedMarginUpdate.
+func (mr *MockCollateralMockRecorder) IsolatedMarginUpdate(arg0 interface{}) *gomock.Call {
+ mr.mock.ctrl.T.Helper()
+ return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IsolatedMarginUpdate", reflect.TypeOf((*MockCollateral)(nil).IsolatedMarginUpdate), arg0)
+}
+
// MarginUpdate mocks base method.
func (m *MockCollateral) MarginUpdate(arg0 context.Context, arg1 string, arg2 []events.Risk) ([]*types.LedgerMovement, []events.Margin, []events.Margin, error) {
m.ctrl.T.Helper()
@@ -657,9 +701,9 @@ func (mr *MockCollateralMockRecorder) MarginUpdateOnOrder(arg0, arg1, arg2 inter
}
// MarkToMarket mocks base method.
-func (m *MockCollateral) MarkToMarket(arg0 context.Context, arg1 string, arg2 []events.Transfer, arg3 string) ([]events.Margin, []*types.LedgerMovement, error) {
+func (m *MockCollateral) MarkToMarket(arg0 context.Context, arg1 string, arg2 []events.Transfer, arg3 string, arg4 func(string) bool) ([]events.Margin, []*types.LedgerMovement, error) {
m.ctrl.T.Helper()
- ret := m.ctrl.Call(m, "MarkToMarket", arg0, arg1, arg2, arg3)
+ ret := m.ctrl.Call(m, "MarkToMarket", arg0, arg1, arg2, arg3, arg4)
ret0, _ := ret[0].([]events.Margin)
ret1, _ := ret[1].([]*types.LedgerMovement)
ret2, _ := ret[2].(error)
@@ -667,9 +711,9 @@ func (m *MockCollateral) MarkToMarket(arg0 context.Context, arg1 string, arg2 []
}
// MarkToMarket indicates an expected call of MarkToMarket.
-func (mr *MockCollateralMockRecorder) MarkToMarket(arg0, arg1, arg2, arg3 interface{}) *gomock.Call {
+func (mr *MockCollateralMockRecorder) MarkToMarket(arg0, arg1, arg2, arg3, arg4 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
- return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "MarkToMarket", reflect.TypeOf((*MockCollateral)(nil).MarkToMarket), arg0, arg1, arg2, arg3)
+ return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "MarkToMarket", reflect.TypeOf((*MockCollateral)(nil).MarkToMarket), arg0, arg1, arg2, arg3, arg4)
}
// PartyHasSufficientBalance mocks base method.
@@ -687,9 +731,9 @@ func (mr *MockCollateralMockRecorder) PartyHasSufficientBalance(arg0, arg1, arg2
}
// PerpsFundingSettlement mocks base method.
-func (m *MockCollateral) PerpsFundingSettlement(arg0 context.Context, arg1 string, arg2 []events.Transfer, arg3 string, arg4 *num.Uint) ([]events.Margin, []*types.LedgerMovement, error) {
+func (m *MockCollateral) PerpsFundingSettlement(arg0 context.Context, arg1 string, arg2 []events.Transfer, arg3 string, arg4 *num.Uint, arg5 func(string) bool) ([]events.Margin, []*types.LedgerMovement, error) {
m.ctrl.T.Helper()
- ret := m.ctrl.Call(m, "PerpsFundingSettlement", arg0, arg1, arg2, arg3, arg4)
+ ret := m.ctrl.Call(m, "PerpsFundingSettlement", arg0, arg1, arg2, arg3, arg4, arg5)
ret0, _ := ret[0].([]events.Margin)
ret1, _ := ret[1].([]*types.LedgerMovement)
ret2, _ := ret[2].(error)
@@ -697,9 +741,9 @@ func (m *MockCollateral) PerpsFundingSettlement(arg0 context.Context, arg1 strin
}
// PerpsFundingSettlement indicates an expected call of PerpsFundingSettlement.
-func (mr *MockCollateralMockRecorder) PerpsFundingSettlement(arg0, arg1, arg2, arg3, arg4 interface{}) *gomock.Call {
+func (mr *MockCollateralMockRecorder) PerpsFundingSettlement(arg0, arg1, arg2, arg3, arg4, arg5 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
- return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PerpsFundingSettlement", reflect.TypeOf((*MockCollateral)(nil).PerpsFundingSettlement), arg0, arg1, arg2, arg3, arg4)
+ return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "PerpsFundingSettlement", reflect.TypeOf((*MockCollateral)(nil).PerpsFundingSettlement), arg0, arg1, arg2, arg3, arg4, arg5)
}
// ReleaseFromHoldingAccount mocks base method.
@@ -732,18 +776,18 @@ func (mr *MockCollateralMockRecorder) RemoveBondAccount(arg0, arg1, arg2 interfa
}
// RemoveDistressed mocks base method.
-func (m *MockCollateral) RemoveDistressed(arg0 context.Context, arg1 []events.MarketPosition, arg2, arg3 string) (*types.LedgerMovement, error) {
+func (m *MockCollateral) RemoveDistressed(arg0 context.Context, arg1 []events.MarketPosition, arg2, arg3 string, arg4 func(string) bool) (*types.LedgerMovement, error) {
m.ctrl.T.Helper()
- ret := m.ctrl.Call(m, "RemoveDistressed", arg0, arg1, arg2, arg3)
+ ret := m.ctrl.Call(m, "RemoveDistressed", arg0, arg1, arg2, arg3, arg4)
ret0, _ := ret[0].(*types.LedgerMovement)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// RemoveDistressed indicates an expected call of RemoveDistressed.
-func (mr *MockCollateralMockRecorder) RemoveDistressed(arg0, arg1, arg2, arg3 interface{}) *gomock.Call {
+func (mr *MockCollateralMockRecorder) RemoveDistressed(arg0, arg1, arg2, arg3, arg4 interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
- return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveDistressed", reflect.TypeOf((*MockCollateral)(nil).RemoveDistressed), arg0, arg1, arg2, arg3)
+ return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RemoveDistressed", reflect.TypeOf((*MockCollateral)(nil).RemoveDistressed), arg0, arg1, arg2, arg3, arg4)
}
// RollbackMarginUpdateOnOrder mocks base method.
diff --git a/core/execution/engine_snapshot_test.go b/core/execution/engine_snapshot_test.go
index e224e3ae9d..c1f2c6f879 100644
--- a/core/execution/engine_snapshot_test.go
+++ b/core/execution/engine_snapshot_test.go
@@ -576,7 +576,7 @@ func TestValidSettledMarketSnapshot(t *testing.T) {
engine.collateral.EXPECT().GetMarketLiquidityFeeAccount(gomock.Any(), gomock.Any()).AnyTimes().Return(&types.Account{Balance: num.UintZero()}, nil)
engine.collateral.EXPECT().GetLiquidityFeesBonusDistributionAccount(gomock.Any(), gomock.Any()).AnyTimes().Return(&types.Account{Balance: num.UintZero()}, nil)
engine.collateral.EXPECT().GetInsurancePoolBalance(gomock.Any(), gomock.Any()).AnyTimes().Return(num.UintZero(), true)
- engine.collateral.EXPECT().FinalSettlement(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).AnyTimes().Return(nil, nil)
+ engine.collateral.EXPECT().FinalSettlement(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).AnyTimes().Return(nil, nil)
engine.collateral.EXPECT().ClearMarket(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), true).AnyTimes().Return(nil, nil)
engine.collateral.EXPECT().TransferFees(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).AnyTimes()
engine.timeSvc.EXPECT().GetTimeNow().AnyTimes()
@@ -704,7 +704,7 @@ func TestSuccessorMapSnapshot(t *testing.T) {
engine.collateral.EXPECT().CreateMarketAccounts(gomock.Any(), gomock.Any(), gomock.Any()).AnyTimes()
engine.collateral.EXPECT().GetMarketLiquidityFeeAccount(gomock.Any(), gomock.Any()).AnyTimes().Return(&types.Account{Balance: num.UintZero()}, nil)
engine.collateral.EXPECT().GetInsurancePoolBalance(gomock.Any(), gomock.Any()).AnyTimes().Return(num.UintZero(), true)
- engine.collateral.EXPECT().FinalSettlement(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).AnyTimes().Return(nil, nil)
+ engine.collateral.EXPECT().FinalSettlement(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).AnyTimes().Return(nil, nil)
engine.collateral.EXPECT().ClearMarket(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).AnyTimes().Return(nil, nil)
engine.timeSvc.EXPECT().GetTimeNow().AnyTimes()
engine.broker.EXPECT().Send(gomock.Any()).AnyTimes()
diff --git a/core/execution/future/isolated_margin.go b/core/execution/future/isolated_margin.go
new file mode 100644
index 0000000000..fe6ae8bb82
--- /dev/null
+++ b/core/execution/future/isolated_margin.go
@@ -0,0 +1,75 @@
+// 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 future
+
+import (
+ "context"
+
+ "code.vegaprotocol.io/vega/core/events"
+ "code.vegaprotocol.io/vega/core/positions"
+ "code.vegaprotocol.io/vega/core/types"
+ "code.vegaprotocol.io/vega/libs/num"
+)
+
+func (m *Market) updateIsolatedMarginsOnPositionChange(ctx context.Context, mpos *positions.MarketPosition, order *types.Order, trade *types.Trade) error {
+ pos, err := m.collateral.GetPartyMargin(mpos, m.settlementAsset, m.GetID())
+ if err != nil {
+ return err
+ }
+ price := m.getMarketObservable(order.Price.Clone())
+ increment := m.tradableInstrument.Instrument.Product.GetMarginIncrease(m.timeService.GetTimeNow().UnixNano())
+ orders := m.matching.GetOrdersPerParty(order.Party)
+ marginFactor := m.getMarginFactor(order.Party)
+ r, err := m.risk.UpdateIsolatedMarginsOnPositionChange(ctx, pos, price, increment, orders, []*types.Trade{trade}, order.Side, marginFactor)
+ if err != nil {
+ return err
+ }
+ for _, rr := range r {
+ m.transferMargins(ctx, []events.Risk{rr}, nil)
+ }
+ pos, err = m.collateral.GetPartyMargin(mpos, m.settlementAsset, m.GetID())
+ if err != nil {
+ return err
+ }
+ _, err = m.risk.CheckMarginInvariants(ctx, pos, price, increment, orders, marginFactor)
+ return err
+}
+
+func (m *Market) getIsolatedMarginContext(mpos *positions.MarketPosition, order *types.Order) (*num.Uint, events.Margin, num.Decimal, *num.Uint, num.Decimal, []*types.Order, error) {
+ var orderPrice *num.Uint
+ if order != nil {
+ orderPrice = order.Price.Clone()
+ } else {
+ orderPrice = num.UintZero()
+ }
+ marketObservable := m.getMarketObservable(orderPrice)
+ mID := m.GetID()
+ pos, err := m.collateral.GetPartyMargin(mpos, m.settlementAsset, mID)
+ if err != nil {
+ return nil, nil, num.DecimalZero(), nil, num.DecimalZero(), nil, err
+ }
+ increment := m.tradableInstrument.Instrument.Product.GetMarginIncrease(m.timeService.GetTimeNow().UnixNano())
+ var auctionPrice *num.Uint
+ if m.as.InAuction() {
+ auctionPrice = m.matching.GetIndicativePrice()
+ if markPrice := m.getCurrentMarkPrice(); markPrice != nil && !markPrice.IsZero() && (markPrice.GT(auctionPrice) || auctionPrice == nil) {
+ auctionPrice = markPrice
+ }
+ }
+ marginFactor := m.getMarginFactor(mpos.Party())
+ orders := m.matching.GetOrdersPerParty(mpos.Party())
+ return marketObservable, pos, increment, auctionPrice, marginFactor, orders, nil
+}
diff --git a/core/execution/future/market.go b/core/execution/future/market.go
index 49d363a58b..446d32abeb 100644
--- a/core/execution/future/market.go
+++ b/core/execution/future/market.go
@@ -24,6 +24,7 @@ import (
"time"
"code.vegaprotocol.io/vega/core/assets"
+ "code.vegaprotocol.io/vega/core/collateral"
"code.vegaprotocol.io/vega/core/events"
"code.vegaprotocol.io/vega/core/execution/common"
"code.vegaprotocol.io/vega/core/execution/liquidation"
@@ -155,6 +156,9 @@ type Market struct {
// are applied properly
ensuredMigration73 bool
epoch types.Epoch
+
+ // party ID to isolated margin factor
+ partyMarginFactor map[string]num.Decimal
}
// NewMarket creates a new market using the market framework configuration and creates underlying engines.
@@ -322,6 +326,7 @@ func NewMarket(
perp: marketType == types.MarketTypePerp,
referralDiscountRewardService: referralDiscountRewardService,
volumeDiscountService: volumeDiscountService,
+ partyMarginFactor: map[string]num.Decimal{},
liquidation: le,
banking: banking,
}
@@ -1114,7 +1119,7 @@ func (m *Market) closeMarket(ctx context.Context, t time.Time, finalState types.
m.recordPositionActivity(t)
}
- transfers, err := m.collateral.FinalSettlement(ctx, m.GetID(), positions, round)
+ transfers, err := m.collateral.FinalSettlement(ctx, m.GetID(), positions, round, m.useGeneralAccountForMarginSearch)
if err != nil {
m.log.Error("Failed to get ledger movements after settling closed market",
logging.MarketID(m.GetID()),
@@ -1355,6 +1360,22 @@ func (m *Market) uncrossOnLeaveAuction(ctx context.Context) ([]*types.OrderConfi
// send order events in a single batch, it's more efficient
m.broker.SendBatch(evts)
+
+ // after auction uncrossing we can relax the price requirement and release some excess order margin if any was placed during an auction.
+ for k, d := range m.partyMarginFactor {
+ partyPos, _ := m.position.GetPositionByPartyID(k)
+ if partyPos != nil && (partyPos.Buy() != 0 || partyPos.Sell() != 0) {
+ marketObservable, mpos, increment, _, _, orders, err := m.getIsolatedMarginContext(partyPos, nil)
+ if err != nil {
+ continue
+ }
+ r := m.risk.ReleaseExcessMarginAfterAuctionUncrossing(ctx, mpos, marketObservable, increment, d, orders)
+ if r != nil && r.Transfer() != nil {
+ m.transferMargins(ctx, []events.Risk{r}, nil)
+ }
+ }
+ }
+
return uncrossedOrders, ordersToCancel
}
@@ -1506,6 +1527,9 @@ func (m *Market) validateOrder(ctx context.Context, order *types.Order) (err err
// Validate pegged orders
if order.PeggedOrder != nil {
+ if m.getMarginMode(order.Party) != types.MarginModeCrossMargin {
+ return types.ErrPeggedOrdersNotAllowedInIsolatedMargin
+ }
if reason := order.ValidatePeggedOrder(); reason != types.OrderErrorUnspecified {
order.Reason = reason
if m.log.GetLevel() == logging.DebugLevel {
@@ -1578,6 +1602,7 @@ func (m *Market) releaseExcessMargin(ctx context.Context, positions ...events.Ma
SearchLevel: num.UintZero(),
InitialMargin: num.UintZero(),
CollateralReleaseLevel: num.UintZero(),
+ OrderMargin: num.UintZero(),
MarketID: mktID,
Asset: m.settlementAsset,
Timestamp: m.timeService.GetTimeNow().UnixNano(),
@@ -1605,6 +1630,8 @@ func (m *Market) releaseExcessMargin(ctx context.Context, positions ...events.Ma
continue
}
marginEvt.Party = party
+ marginEvt.MarginFactor = m.getMarginFactor(party)
+ marginEvt.MarginMode = m.getMarginMode(party)
mEvts = append(mEvts, events.NewMarginLevelsEvent(ctx, marginEvt))
if transfers != nil {
@@ -1612,7 +1639,19 @@ func (m *Market) releaseExcessMargin(ctx context.Context, positions ...events.Ma
ctx, []*types.LedgerMovement{transfers}),
)
}
-
+ if marginEvt.MarginMode == types.MarginModeIsolatedMargin {
+ transfers, err = m.collateral.ClearPartyOrderMarginAccount(
+ ctx, party, mktID, m.settlementAsset)
+ if err != nil {
+ m.log.Error("unable to clear party order margin account", logging.Error(err))
+ continue
+ }
+ if transfers != nil {
+ evts = append(evts, events.NewLedgerMovements(
+ ctx, []*types.LedgerMovement{transfers}),
+ )
+ }
+ }
// we can delete the party from the map here
// unless the party is an LP
if !m.liquidityEngine.IsLiquidityProvider(party) {
@@ -2008,9 +2047,11 @@ func (m *Market) submitValidatedOrder(ctx context.Context, order *types.Order) (
// keep track of the eventual reduce only size
order.ReduceOnlyAdjustRemaining(extraSize)
}
+ marginMode := m.getMarginMode(order.Party)
// Perform check and allocate margin unless the order is (partially) closing the party position
- if !order.ReduceOnly && !pos.OrderReducesExposure(order) {
+ // NB: this is only done at this point for cross margin mode
+ if marginMode == types.MarginModeCrossMargin && !order.ReduceOnly && !pos.OrderReducesExposure(order) {
if err := m.checkMarginForOrder(ctx, pos, order); err != nil {
if m.log.GetLevel() <= logging.DebugLevel {
m.log.Debug("Unable to check/add margin for party",
@@ -2085,6 +2126,48 @@ func (m *Market) submitValidatedOrder(ctx context.Context, order *types.Order) (
// the contains the fees information
confirmation.Trades = trades
+ if marginMode == types.MarginModeIsolatedMargin {
+ // NB: this is the position with the trades included and the order sizes updated to remaining!!!
+ // NB: this is not touching the actual position from the position engine but is all done on a clone, so that
+ // in handle confirmation this will be done as per normal.
+ posWithTrades := pos.UpdateInPlaceOnTrades(m.log, order.Side, trades, order)
+ // First, check whether the order will trade, either fully or in part, immediately upon entry. If so:
+ // If the trade would increase the party's position, the required additional funds as specified in the Increasing Position section will be calculated.
+ // The total expected margin balance (current plus new funds) will then be compared to the maintenance margin for the expected position,
+ // if the margin balance would be less than maintenance, instead reject the order in it's entirety.
+ // If the margin will be greater than the maintenance margin their general account will be checked for sufficient funds.
+ // If they have sufficient, that amount will be moved into their margin account and the immediately matching portion of the order will trade.
+ // If they do not have sufficient, the order will be rejected in it's entirety for not meeting margin requirements.
+ // If the trade would decrease the party's position, that portion will trade and margin will be released as in the Decreasing Position.
+ // If the order is not persistent this is the end, if it is persistent any portion of the order which
+ // has not traded in step 1 will move to being placed on the order book.
+ if len(trades) > 0 {
+ if err := m.updateIsolatedMarginOnAggressor(ctx, posWithTrades, order, trades); err != nil {
+ if m.log.GetLevel() <= logging.DebugLevel {
+ m.log.Debug("Unable to check/add immediate trade margin for party",
+ logging.Order(*order), logging.Error(err))
+ }
+ _ = m.unregisterAndReject(
+ ctx, order, types.OrderErrorIsolatedMarginCheckFailed)
+ m.matching.RemoveOrder(order.ID)
+ return nil, nil, common.ErrMarginCheckFailed
+ }
+ }
+ // now we need to check if the party has sufficient funds to cover the order margin for the remaining size
+ // if not the remaining order is cancelled.
+ // if successful the required order margin are transferred to the order margin account.
+ if err := m.updateIsolatedMarginOnOrder(ctx, posWithTrades, order); err != nil {
+ if m.log.GetLevel() <= logging.DebugLevel {
+ m.log.Debug("Unable to check/add margin for party",
+ logging.Order(*order), logging.Error(err))
+ }
+ _ = m.unregisterAndReject(
+ ctx, order, types.OrderErrorMarginCheckFailed)
+ m.matching.RemoveOrder(order.ID)
+ return nil, nil, common.ErrMarginCheckFailed
+ }
+ }
+
// Send out the order update here as handling the confirmation message
// below might trigger an action that can change the order details.
m.broker.Send(events.NewOrderEvent(ctx, order))
@@ -2251,13 +2334,38 @@ func (m *Market) handleConfirmation(ctx context.Context, conf *types.OrderConfir
conf.TradedValue().ToDecimal().Div(m.positionFactor))
for idx, trade := range conf.Trades {
trade.SetIDs(m.idgen.NextID(), conf.Order, conf.PassiveOrdersAffected[idx])
-
tradeEvts = append(tradeEvts, events.NewTradeEvent(ctx, *trade))
-
for _, mp := range m.position.Update(ctx, trade, conf.PassiveOrdersAffected[idx], conf.Order) {
m.marketActivityTracker.RecordPosition(m.settlementAsset, mp.Party(), m.mkt.ID, mp.Size(), trade.Price, m.positionFactor, m.timeService.GetTimeNow())
}
-
+ // if the passive party is in isolated margin we need to update the margin on the position change
+ if m.getMarginMode(conf.PassiveOrdersAffected[idx].Party) == types.MarginModeIsolatedMargin {
+ pos, _ := m.position.GetPositionByPartyID(conf.PassiveOrdersAffected[idx].Party)
+ err := m.updateIsolatedMarginsOnPositionChange(ctx, pos, conf.PassiveOrdersAffected[idx], trade)
+ if err != nil {
+ // if the evaluation after the position update means the party has insufficient funds, all of their orders need to be stopped
+ // but first we need to transfer the margins from the order margin account.
+ if err == risk.ErrInsufficientFundsForMaintenanceMargin {
+ m.handleIsolatedMarginInsufficientOrderMargin(ctx, conf.PassiveOrdersAffected[idx].Party)
+ }
+ m.log.Error("failed to update isolated margin on position change", logging.Error(err))
+ }
+ }
+ // if we're uncrossing an auction then we need to do this also for parties with isolated margin on the "aggressive" side
+ if m.as.InAuction() {
+ aggressor := conf.Order.Party
+ if m.getMarginMode(aggressor) == types.MarginModeIsolatedMargin {
+ aggressorOrder := conf.Order
+ pos, _ := m.position.GetPositionByPartyID(aggressor)
+ err := m.updateIsolatedMarginsOnPositionChange(ctx, pos, aggressorOrder, trade)
+ if err != nil {
+ m.log.Error("failed to update isolated margin on position change", logging.Error(err))
+ if err == risk.ErrInsufficientFundsForMaintenanceMargin {
+ m.handleIsolatedMarginInsufficientOrderMargin(ctx, conf.PassiveOrdersAffected[idx].Party)
+ }
+ }
+ }
+ }
// Record open interest change
if err := m.tsCalc.RecordOpenInterest(m.position.GetOpenInterest(), m.timeService.GetTimeNow()); err != nil {
m.log.Debug("unable record open interest",
@@ -2305,8 +2413,8 @@ func (m *Market) confirmMTM(ctx context.Context, skipMargin bool) {
}
// Only process collateral and risk once per order, not for every trade
- margins := m.collateralAndRisk(ctx, settle)
- orderUpdates := m.handleRiskEvts(ctx, margins)
+ margins, isolatedMarginPartiesToClose := m.collateralAndRisk(ctx, settle)
+ orderUpdates := m.handleRiskEvts(ctx, margins, isolatedMarginPartiesToClose)
// orders updated -> check reference moves
// force check
@@ -2318,10 +2426,11 @@ func (m *Market) confirmMTM(ctx context.Context, skipMargin bool) {
}
}
-func (m *Market) handleRiskEvts(ctx context.Context, margins []events.Risk) []*types.Order {
+func (m *Market) handleRiskEvts(ctx context.Context, margins []events.Risk, isolatedMargin []events.Risk) []*types.Order {
if len(margins) == 0 {
return nil
}
+ isolatedForCloseout := m.collateral.IsolatedMarginUpdate(isolatedMargin)
transfers, closed, bondPenalties, err := m.collateral.MarginUpdate(ctx, m.GetID(), margins)
if err != nil {
m.log.Error("margin update had issues", logging.Error(err))
@@ -2357,6 +2466,7 @@ func (m *Market) handleRiskEvts(ctx context.Context, margins []events.Risk) []*t
closed = closedRecalculated
}
}
+ closed = append(closed, isolatedForCloseout...)
if len(closed) == 0 {
m.updateLiquidityFee(ctx)
return nil
@@ -2431,7 +2541,10 @@ func (m *Market) resolveClosedOutParties(ctx context.Context, distressedMarginEv
logging.PartyID(v.Party()),
logging.MarketID(m.GetID()))
}
- distressedPos = append(distressedPos, v)
+ // we're not removing orders for isolated margin closed out parties
+ if m.getMarginMode(v.Party()) == types.MarginModeCrossMargin {
+ distressedPos = append(distressedPos, v)
+ }
}
rmorders, err := m.matching.RemoveDistressedOrders(distressedPos)
@@ -2537,7 +2650,14 @@ func (m *Market) finalizePartiesCloseOut(
// from settlement engine first
m.settlement.RemoveDistressed(ctx, closed)
// then from positions
- closedMPs = m.position.RemoveDistressed(closedMPs)
+ toRemoveFromPosition := []events.MarketPosition{}
+ for _, mp := range closedMPs {
+ if m.getMarginMode(mp.Party()) == types.MarginModeCrossMargin || (mp.Buy() == 0 && mp.Sell() == 0) {
+ toRemoveFromPosition = append(toRemoveFromPosition, mp)
+ }
+ }
+ m.position.RemoveDistressed(toRemoveFromPosition)
+ // but we want to update the market activity tracker on their 0 position for all of the closed parties
for _, mp := range closedMPs {
// record the updated closed out party's position
m.marketActivityTracker.RecordPosition(m.settlementAsset, mp.Party(), m.mkt.ID, 0, mp.Price(), m.positionFactor, m.timeService.GetTimeNow())
@@ -2545,7 +2665,7 @@ func (m *Market) finalizePartiesCloseOut(
// finally remove from collateral (moving funds where needed)
movements, err := m.collateral.RemoveDistressed(
- ctx, closedMPs, m.GetID(), m.settlementAsset)
+ ctx, closedMPs, m.GetID(), m.settlementAsset, m.useGeneralAccountForMarginSearch)
if err != nil {
m.log.Panic(
"Failed to remove distressed accounts cleanly",
@@ -2558,6 +2678,24 @@ func (m *Market) finalizePartiesCloseOut(
ctx, []*types.LedgerMovement{movements}),
)
}
+
+ for _, mp := range closedMPs {
+ if m.getMarginMode(mp.Party()) == types.MarginModeIsolatedMargin || (mp.Buy() != 0 && mp.Sell() != 0) {
+ pp, _ := m.position.GetPositionByPartyID(mp.Party())
+ if pp == nil {
+ continue
+ }
+ marketObservable, evt, increment, _, marginFactor, orders, err := m.getIsolatedMarginContext(pp, nil)
+ if err != nil {
+ m.log.Panic("failed to get isolated margin context")
+ }
+ _, err = m.risk.CheckMarginInvariants(ctx, evt, marketObservable, increment, orders, marginFactor)
+ if err == risk.ErrInsufficientFundsForOrderMargin {
+ m.log.Debug("party in isolated margin mode has insufficient order margin", logging.String("party", mp.Party()))
+ m.handleIsolatedMarginInsufficientOrderMargin(ctx, mp.Party())
+ }
+ }
+ }
}
func (m *Market) zeroOutNetwork(ctx context.Context, parties []string) {
@@ -2577,6 +2715,12 @@ func (m *Market) zeroOutNetwork(ctx context.Context, parties []string) {
}
for _, p := range parties {
marginLevels.Party = p
+ marginLevels.MarginMode = m.getMarginMode(p)
+ marginLevels.MarginFactor = m.getMarginFactor(p)
+ if marginLevels.MarginMode == types.MarginModeIsolatedMargin {
+ // for isolated margin closed out for position, there may still be a valid order margin
+ marginLevels.OrderMargin = m.risk.CalcOrderMarginsForClosedOutParty(m.matching.GetOrdersPerParty(p), marginLevels.MarginFactor)
+ }
evts = append(evts, events.NewMarginLevelsEvent(ctx, marginLevels))
}
if len(evts) > 0 {
@@ -2585,7 +2729,14 @@ func (m *Market) zeroOutNetwork(ctx context.Context, parties []string) {
}
func (m *Market) recheckMargin(ctx context.Context, pos []events.MarketPosition) {
- risk := m.updateMargin(ctx, pos)
+ posCrossMargin := make([]events.MarketPosition, 0, len(pos))
+
+ for _, mp := range pos {
+ if m.getMarginMode(mp.Party()) == types.MarginModeCrossMargin {
+ posCrossMargin = append(posCrossMargin, mp)
+ }
+ }
+ risk := m.updateMargin(ctx, posCrossMargin)
if len(risk) == 0 {
return
}
@@ -2605,6 +2756,38 @@ func (m *Market) checkMarginForOrder(ctx context.Context, pos *positions.MarketP
return m.transferMargins(ctx, risk, closed)
}
+// updateIsolatedMarginOnAggressor is called when a new or amended order is matched immediately upon submission.
+// it checks that new margin requirements can be satisfied and if so transfers the margin from the general account to the margin account.
+func (m *Market) updateIsolatedMarginOnAggressor(ctx context.Context, pos *positions.MarketPosition, order *types.Order, trades []*types.Trade) error {
+ marketObservable, mpos, increment, _, marginFactor, orders, err := m.getIsolatedMarginContext(pos, order)
+ if err != nil {
+ return err
+ }
+ risk, err := m.risk.UpdateIsolatedMarginOnAggressor(ctx, mpos, marketObservable, increment, orders, trades, marginFactor, order.Side)
+ if err != nil {
+ return err
+ }
+ if risk == nil {
+ return nil
+ }
+ return m.transferMargins(ctx, []events.Risk{risk}, nil)
+}
+
+func (m *Market) updateIsolatedMarginOnOrder(ctx context.Context, mpos *positions.MarketPosition, order *types.Order) error {
+ marketObservable, pos, increment, auctionPrice, marginFactor, orders, err := m.getIsolatedMarginContext(mpos, order)
+ if err != nil {
+ return err
+ }
+ risk, err := m.risk.UpdateIsolatedMarginOnOrder(ctx, pos, orders, marketObservable, auctionPrice, increment, marginFactor)
+ if err != nil {
+ return err
+ }
+ if risk == nil {
+ return nil
+ }
+ return m.transferMargins(ctx, []events.Risk{risk}, nil)
+}
+
func (m *Market) checkMarginForAmendOrder(ctx context.Context, existingOrder *types.Order, amendedOrder *types.Order) error {
origPos, ok := m.position.GetPositionByPartyID(existingOrder.Party)
if !ok {
@@ -2631,16 +2814,16 @@ func (m *Market) setLastTradedPrice(trade *types.Trade) {
// this function handles moving money after settle MTM + risk margin updates
// but does not move the money between party accounts (ie not to/from margin accounts after risk).
-func (m *Market) collateralAndRisk(ctx context.Context, settle []events.Transfer) []events.Risk {
+func (m *Market) collateralAndRisk(ctx context.Context, settle []events.Transfer) ([]events.Risk, []events.Risk) {
timer := metrics.NewTimeCounter(m.mkt.ID, "market", "collateralAndRisk")
defer timer.EngineTimeCounterAdd()
- evts, response, err := m.collateral.MarkToMarket(ctx, m.GetID(), settle, m.settlementAsset)
+ evts, response, err := m.collateral.MarkToMarket(ctx, m.GetID(), settle, m.settlementAsset, m.useGeneralAccountForMarginSearch)
if err != nil {
m.log.Error(
"Failed to process mark to market settlement (collateral)",
logging.Error(err),
)
- return nil
+ return nil, nil
}
// sending response to buffer
if len(response) > 0 {
@@ -2650,12 +2833,32 @@ func (m *Market) collateralAndRisk(ctx context.Context, settle []events.Transfer
// let risk engine do its thing here - it returns a slice of money that needs
// to be moved to and from margin accounts
increment := m.tradableInstrument.Instrument.Product.GetMarginIncrease(m.timeService.GetTimeNow().UnixNano())
- riskUpdates := m.risk.UpdateMarginsOnSettlement(ctx, evts, m.getCurrentMarkPrice(), increment)
- if len(riskUpdates) == 0 {
- return nil
+
+ // split to cross and isolated margins to handle separately
+ crossEvts := make([]events.Margin, 0, len(evts))
+ isolatedEvts := make([]events.Margin, 0, len(evts))
+ for _, evt := range evts {
+ if m.getMarginMode(evt.Party()) == types.MarginModeCrossMargin {
+ crossEvts = append(crossEvts, evt)
+ } else {
+ isolatedEvts = append(isolatedEvts, evt)
+ }
+ }
+
+ crossRiskUpdates := m.risk.UpdateMarginsOnSettlement(ctx, crossEvts, m.getCurrentMarkPrice(), increment)
+ isolatedMarginPartiesToClose := []events.Risk{}
+ for _, evt := range isolatedEvts {
+ mrgns, err := m.risk.CheckMarginInvariants(ctx, evt, m.getMarketObservable(nil), increment, m.matching.GetOrdersPerParty(evt.Party()), m.getMarginFactor(evt.Party()))
+ if err == risk.ErrInsufficientFundsForMaintenanceMargin {
+ m.log.Debug("party in isolated margin mode has insufficient margin", logging.String("party", evt.Party()))
+ isolatedMarginPartiesToClose = append(isolatedMarginPartiesToClose, mrgns)
+ }
}
- return riskUpdates
+ // if len(crossRiskUpdates) == 0 {
+ // return nil, isolatedMarginPartiesToClose
+ // }
+ return crossRiskUpdates, isolatedMarginPartiesToClose
}
func (m *Market) CancelAllStopOrders(ctx context.Context, partyID string) error {
@@ -2856,6 +3059,13 @@ func (m *Market) cancelOrder(ctx context.Context, partyID, orderID string) (*typ
order.UpdatedAt = m.timeService.GetTimeNow().UnixNano()
m.broker.Send(events.NewOrderEvent(ctx, order))
+ if m.getMarginMode(partyID) == types.MarginModeIsolatedMargin {
+ pos, _ := m.position.GetPositionByPartyID(partyID)
+ if err := m.updateIsolatedMarginOnOrder(ctx, pos, order); err != nil {
+ m.log.Panic("failed to update order margin after order cancellation", logging.Order(order), logging.String("party", pos.Party()))
+ }
+ }
+
return &types.OrderCancellationConfirmation{Order: order}, nil
}
@@ -2889,6 +3099,23 @@ func (m *Market) AmendOrder(
return m.AmendOrderWithIDGenerator(ctx, orderAmendment, party, idgen)
}
+// handleIsolatedMarginInsufficientOrderMargin stops all party orders
+// Upon position/order update if there are insufficient funds in the order margin, all open orders are stopped and margin re-evaluated.
+func (m *Market) handleIsolatedMarginInsufficientOrderMargin(ctx context.Context, party string) {
+ orders := m.matching.GetOrdersPerParty(party)
+ for _, o := range orders {
+ if !o.IsFinished() {
+ m.matching.RemoveOrder(o.ID)
+ m.unregisterAndReject(ctx, o, types.OrderErrorIsolatedMarginCheckFailed)
+ }
+ // TODO is there anywhere else that this order needs to be removed from?
+ }
+ pos, _ := m.position.GetPositionByPartyID(party)
+ if err := m.updateIsolatedMarginOnOrder(ctx, pos, nil); err != nil {
+ m.log.Panic("failed to release margin for party with insufficient order margin", logging.String("party", party))
+ }
+}
+
func (m *Market) AmendOrderWithIDGenerator(
ctx context.Context,
orderAmendment *types.OrderAmendment,
@@ -2911,6 +3138,9 @@ func (m *Market) AmendOrderWithIDGenerator(
conf, updatedOrders, err := m.amendOrder(ctx, orderAmendment, party)
if err != nil {
+ if m.getMarginMode(party) == types.MarginModeIsolatedMargin && err == common.ErrMarginCheckFailed {
+ m.handleIsolatedMarginInsufficientOrderMargin(ctx, party)
+ }
return nil, err
}
@@ -3138,6 +3368,7 @@ func (m *Market) amendOrder(
if err := m.checkMarginForAmendOrder(ctx, existingOrder, amendedOrder); err != nil {
return nil, nil, err
}
+
// we were parked, need to unpark
m.peggedOrders.Unpark(amendedOrder.ID)
return m.submitValidatedOrder(ctx, amendedOrder)
@@ -3166,16 +3397,18 @@ func (m *Market) amendOrder(
// will be updated later on for sure.
// always update margin, even for price/size decrease
- if err = m.checkMarginForOrder(ctx, pos, amendedOrder); err != nil {
- // Undo the position registering
- _ = m.position.AmendOrder(ctx, amendedOrder, existingOrder)
+ if m.getMarginMode(party) == types.MarginModeCrossMargin {
+ if err = m.checkMarginForOrder(ctx, pos, amendedOrder); err != nil {
+ // Undo the position registering
+ _ = m.position.AmendOrder(ctx, amendedOrder, existingOrder)
- if m.log.GetLevel() == logging.DebugLevel {
- m.log.Debug("Unable to check/add margin for party",
- logging.String("market-id", m.GetID()),
- logging.Error(err))
+ if m.log.GetLevel() == logging.DebugLevel {
+ m.log.Debug("Unable to check/add margin for party",
+ logging.String("market-id", m.GetID()),
+ logging.Error(err))
+ }
+ return nil, nil, common.ErrMarginCheckFailed
}
- return nil, nil, common.ErrMarginCheckFailed
}
icebergSizeIncrease := false
@@ -3199,9 +3432,19 @@ func (m *Market) amendOrder(
if expiryChange || sizeDecrease || timeInForceChange || icebergSizeIncrease {
ret := m.orderAmendInPlace(existingOrder, amendedOrder)
if sizeDecrease {
- // ensure we release excess if party reduced the size of their order
- m.recheckMargin(ctx, m.position.GetPositionsByParty(amendedOrder.Party))
+ if m.getMarginMode(party) == types.MarginModeCrossMargin {
+ // ensure we release excess if party reduced the size of their order
+ m.recheckMargin(ctx, m.position.GetPositionsByParty(amendedOrder.Party))
+ }
+ }
+ if m.getMarginMode(party) == types.MarginModeIsolatedMargin {
+ pos, _ := m.position.GetPositionByPartyID(amendedOrder.Party)
+ if err := m.updateIsolatedMarginOnOrder(ctx, pos, amendedOrder); err == risk.ErrInsufficientFundsForMarginInGeneralAccount {
+ m.log.Error("party has insufficient margin to cover the order change, going to cancel all orders for the party")
+ return nil, nil, common.ErrMarginCheckFailed
+ }
}
+
m.broker.Send(events.NewOrderEvent(ctx, amendedOrder))
return ret, nil, nil
}
@@ -3297,6 +3540,16 @@ func (m *Market) orderCancelReplace(
m.log.Panic("should never reach this point")
}
+ if m.getMarginMode(newOrder.Party) == types.MarginModeIsolatedMargin {
+ pos, _ := m.position.GetPositionByPartyID(newOrder.Party)
+ if err := m.updateIsolatedMarginOnOrder(ctx, pos, newOrder); err != nil {
+ if m.log.GetLevel() <= logging.DebugLevel {
+ m.log.Debug("Unable to check/add margin for party",
+ logging.Order(*newOrder), logging.Error(err))
+ }
+ return nil, nil, common.ErrMarginCheckFailed
+ }
+ }
return conf, nil, nil
}
@@ -3324,6 +3577,39 @@ func (m *Market) orderCancelReplace(
m.log.Panic("unable to submit order", logging.Error(err))
}
+ marginMode := m.getMarginMode(newOrder.Party)
+ if marginMode == types.MarginModeIsolatedMargin {
+ pos, _ := m.position.GetPositionByPartyID(newOrder.Party)
+ posWithTrades := pos
+ if len(trades) > 0 {
+ posWithTrades = pos.UpdateInPlaceOnTrades(m.log, newOrder.Side, trades, newOrder)
+ // NB: this is the position with the trades included and the order sizes updated to remaining!!!
+ if err := m.updateIsolatedMarginOnAggressor(ctx, posWithTrades, newOrder, trades); err != nil {
+ if m.log.GetLevel() <= logging.DebugLevel {
+ m.log.Debug("Unable to check/add immediate trade margin for party",
+ logging.Order(*newOrder), logging.Error(err))
+ }
+ conf, err = m.matching.ReplaceOrder(newOrder, existingOrder)
+ if err != nil {
+ m.log.Panic("unable to submit order", logging.Error(err))
+ }
+ return nil, nil, common.ErrMarginCheckFailed
+ }
+ }
+ if err := m.updateIsolatedMarginOnOrder(ctx, posWithTrades, newOrder); err != nil {
+ if m.log.GetLevel() <= logging.DebugLevel {
+ m.log.Debug("Unable to check/add margin for party",
+ logging.Order(*newOrder), logging.Error(err))
+ }
+ existingOrder.Status = newOrder.Status
+ conf, err = m.matching.ReplaceOrder(newOrder, existingOrder)
+ if err != nil {
+ m.log.Panic("unable to submit order", logging.Error(err))
+ }
+ return nil, nil, common.ErrMarginCheckFailed
+ }
+ }
+
// replace the trades in the confirmation to have
// the ones with the fees embedded
conf.Trades = trades
@@ -3512,8 +3798,14 @@ func (m *Market) removeExpiredOrders(
// either a pegged + non parked
// or a non-pegged order
if foundOnBook {
- m.position.UnregisterOrder(ctx, order)
+ pos := m.position.UnregisterOrder(ctx, order)
m.matching.DeleteOrder(order)
+ if m.getMarginMode(order.Party) == types.MarginModeIsolatedMargin {
+ err := m.updateIsolatedMarginOnOrder(ctx, pos, order)
+ if err != nil {
+ m.log.Panic("failed to recalculate isolated margin after order cancellation", logging.String("party", order.Party), logging.Order(order))
+ }
+ }
}
// if this was a pegged order
@@ -3791,7 +4083,7 @@ func (m *Market) settlementDataPerp(ctx context.Context, settlementData *num.Num
}
m.broker.Send(events.NewFundingPaymentsEvent(ctx, m.mkt.ID, m.tradableInstrument.Instrument.Product.GetCurrentPeriod(), transfers))
- margins, ledgerMovements, err := m.collateral.PerpsFundingSettlement(ctx, m.GetID(), transfers, m.settlementAsset, round)
+ margins, ledgerMovements, err := m.collateral.PerpsFundingSettlement(ctx, m.GetID(), transfers, m.settlementAsset, round, m.useGeneralAccountForMarginSearch)
if err != nil {
m.log.Error("Failed to get ledger movements when performing the funding settlement",
logging.MarketID(m.GetID()),
@@ -3807,15 +4099,35 @@ func (m *Market) settlementDataPerp(ctx context.Context, settlementData *num.Num
return
}
+ // split to cross and isolated margins to handle separately
+ crossEvts := make([]events.Margin, 0, len(margins))
+ isolatedEvts := make([]events.Margin, 0, len(margins))
+ for _, evt := range margins {
+ if m.getMarginMode(evt.Party()) == types.MarginModeCrossMargin {
+ crossEvts = append(crossEvts, evt)
+ } else {
+ isolatedEvts = append(isolatedEvts, evt)
+ }
+ }
+
// check margin balances
increment := m.tradableInstrument.Instrument.Product.GetMarginIncrease(m.timeService.GetTimeNow().UnixNano())
- riskUpdates := m.risk.UpdateMarginsOnSettlement(ctx, margins, m.getCurrentMarkPrice(), increment)
+ riskUpdates := m.risk.UpdateMarginsOnSettlement(ctx, crossEvts, m.getCurrentMarkPrice(), increment)
+ isolatedMarginPartiesToClose := []events.Risk{}
+ for _, evt := range isolatedEvts {
+ mrgns, err := m.risk.CheckMarginInvariants(ctx, evt, m.getMarketObservable(nil), increment, m.matching.GetOrdersPerParty(evt.Party()), m.getMarginFactor(evt.Party()))
+ if err == risk.ErrInsufficientFundsForMaintenanceMargin {
+ m.log.Debug("party in isolated margin mode has insufficient margin", logging.String("party", evt.Party()))
+ isolatedMarginPartiesToClose = append(isolatedMarginPartiesToClose, mrgns)
+ }
+ }
+
// no margin accounts need updating...
- if len(riskUpdates) == 0 {
+ if len(riskUpdates)+len(isolatedMarginPartiesToClose) == 0 {
return
}
// update margins, close-out any positions that don't have the required margin
- orderUpdates := m.handleRiskEvts(ctx, riskUpdates)
+ orderUpdates := m.handleRiskEvts(ctx, riskUpdates, isolatedMarginPartiesToClose)
m.checkForReferenceMoves(ctx, orderUpdates, false)
}
@@ -3986,5 +4298,128 @@ func (m *Market) GetRiskFactors() *types.RiskFactor {
}
func (m *Market) UpdateMarginMode(ctx context.Context, party string, marginMode types.MarginMode, marginFactor num.Decimal) error {
- return errors.New("Unsupported")
+ return m.switchMarginMode(ctx, party, marginMode, marginFactor)
+}
+
+func (m *Market) getMarginMode(party string) types.MarginMode {
+ marginFactor, ok := m.partyMarginFactor[party]
+ if !ok || marginFactor.IsZero() {
+ return types.MarginModeCrossMargin
+ }
+ return types.MarginModeIsolatedMargin
+}
+
+func (m *Market) useGeneralAccountForMarginSearch(party string) bool {
+ return m.getMarginMode(party) == types.MarginModeCrossMargin
+}
+
+func (m *Market) getMarginFactor(party string) num.Decimal {
+ marginFactor, ok := m.partyMarginFactor[party]
+ if !ok || marginFactor.IsZero() {
+ return num.DecimalZero()
+ }
+ return marginFactor
+}
+
+// switchMarginMode handles a switch between margin modes and/or changes to the margin factor.
+// When switching to isolated margin mode, the following steps will be taken:
+// 1. For any active position, calculate average entry price * abs(position) * margin factor.
+// Calculate the amount of funds which will be added to, or subtracted from, the general account in order to do this.
+// If additional funds must be added which are not available, reject the transaction immediately.
+// 2. For any active orders, calculate the quantity limit price * remaining size * margin factor which needs to be placed in the
+// order margin account. Add this amount to the difference calculated in step 1. If this amount is less than or equal to the
+// amount in the general account, perform the transfers (first move funds into/out of margin account, then move funds into
+// the order margin account). If there are insufficient funds, reject the transaction.
+// 3. Move account to isolated margin mode on this market
+//
+// When switching from isolated margin mode to cross margin mode, the following steps will be taken:
+// 1. Any funds in the order margin account will be moved to the margin account.
+// 2. At this point trading can continue with the account switched to the cross margining account type.
+// If there are excess funds in the margin account they will be freed at the next margin release cycle.
+func (m *Market) switchMarginMode(ctx context.Context, party string, marginMode types.MarginMode, marginFactor num.Decimal) error {
+ defer m.onTxProcessed()
+ if marginMode == m.getMarginMode(party) && marginFactor.Equal(m.getMarginFactor(party)) {
+ return nil
+ }
+
+ pos, ok := m.position.GetPositionByPartyID(party)
+ if !ok {
+ pos = positions.NewMarketPosition(party)
+ }
+
+ margins, err := m.collateral.GetPartyMargin(pos, m.settlementAsset, m.GetID())
+ if err == collateral.ErrPartyAccountsMissing {
+ _, err = m.collateral.CreatePartyMarginAccount(ctx, party, m.mkt.ID, m.settlementAsset)
+ if err != nil {
+ return err
+ }
+ margins, err = m.collateral.GetPartyMargin(pos, m.settlementAsset, m.GetID())
+ if err != nil {
+ return err
+ }
+ } else if err != nil {
+ return err
+ }
+
+ marketObservable := m.getMarketObservable(nil)
+ if marketObservable == nil {
+ return fmt.Errorf("no market observable price")
+ }
+ increment := m.tradableInstrument.Instrument.Product.GetMarginIncrease(m.timeService.GetTimeNow().UnixNano())
+ var auctionPrice *num.Uint
+ if m.as.InAuction() {
+ auctionPrice = marketObservable
+ markPrice := m.getCurrentMarkPrice()
+ if markPrice != nil && marketObservable.LT(markPrice) {
+ auctionPrice = markPrice
+ }
+ }
+ // switching to isolated or changing the margin factor
+ if marginMode == types.MarginModeIsolatedMargin {
+ risk, err := m.risk.SwitchToIsolatedMargin(ctx, margins, marketObservable, increment, m.matching.GetOrdersPerParty(party), marginFactor, auctionPrice)
+ if err != nil {
+ return err
+ }
+ // ensure we have an order margiin account set up
+ m.collateral.GetOrCreatePartyOrderMarginAccount(ctx, party, m.mkt.ID, m.settlementAsset)
+ if len(risk) > 0 {
+ for _, r := range risk {
+ err = m.transferMargins(ctx, []events.Risk{r}, nil)
+ if err != nil {
+ return err
+ }
+ }
+ }
+ m.partyMarginFactor[party] = marginFactor
+ // cancel pegged orders
+ ordersAndParkedPegged := append(m.matching.GetOrdersPerParty(party), m.getPartyParkedPeggedOrders(party)...)
+ for _, o := range ordersAndParkedPegged {
+ if o.PeggedOrder != nil {
+ m.cancelOrder(ctx, o.Party, o.ID)
+ }
+ }
+ return nil
+ } else {
+ // switching from isolated margin to cross margin
+ // 1. Any funds in the order margin account will be moved to the margin account.
+ // 2. At this point trading can continue with the account switched to the cross margining account type. If there are excess funds in the margin account they will be freed at the next margin release cycle.
+ risk := m.risk.SwitchFromIsolatedMargin(ctx, margins, marketObservable, increment)
+ err = m.transferMargins(ctx, []events.Risk{risk}, nil)
+ if err != nil {
+ return err
+ }
+ delete(m.partyMarginFactor, party)
+ return nil
+ }
+}
+
+func (m *Market) getPartyParkedPeggedOrders(party string) []*types.Order {
+ partyParkedPegged := []*types.Order{}
+ p := m.peggedOrders.Parked()
+ for _, o := range p {
+ if o.Party == party {
+ partyParkedPegged = append(partyParkedPegged, o)
+ }
+ }
+ return partyParkedPegged
}
diff --git a/core/execution/future/market_snapshot.go b/core/execution/future/market_snapshot.go
index 9d1ca743bd..67151ab6e4 100644
--- a/core/execution/future/market_snapshot.go
+++ b/core/execution/future/market_snapshot.go
@@ -41,6 +41,7 @@ import (
"code.vegaprotocol.io/vega/libs/num"
"code.vegaprotocol.io/vega/libs/ptr"
"code.vegaprotocol.io/vega/logging"
+ snapshot "code.vegaprotocol.io/vega/protos/vega/snapshot/v1"
"golang.org/x/exp/maps"
)
@@ -193,6 +194,11 @@ func NewMarketFromSnapshot(
}
le := liquidation.New(mkt.LiquidationStrategy, mkt.GetID(), broker, book, as, timeService, marketLiquidity, positionEngine, settleEngine)
+ partyMargin := make(map[string]num.Decimal, len(em.PartyMarginFactors))
+ for _, pmf := range em.PartyMarginFactors {
+ partyMargin[pmf.Party], _ = num.DecimalFromString(pmf.MarginFactor)
+ }
+
now := timeService.GetTimeNow()
marketType := mkt.MarketType()
market := &Market{
@@ -236,6 +242,7 @@ func NewMarketFromSnapshot(
stopOrders: stopOrders,
expiringStopOrders: expiringStopOrders,
perp: marketType == types.MarketTypePerp,
+ partyMarginFactor: partyMargin,
liquidation: le,
banking: banking,
}
@@ -294,6 +301,14 @@ func (m *Market) GetState() *types.ExecMarket {
sort.Strings(parties)
assetQuantum, _ := m.collateral.GetAssetQuantum(m.settlementAsset)
+ partyMarginFactors := make([]*snapshot.PartyMarginFactor, 0, len(m.partyMarginFactor))
+ for k, d := range m.partyMarginFactor {
+ partyMarginFactors = append(partyMarginFactors, &snapshot.PartyMarginFactor{Party: k, MarginFactor: d.String()})
+ }
+ sort.Slice(partyMarginFactors, func(i, j int) bool {
+ return partyMarginFactors[i].Party < partyMarginFactors[j].Party
+ })
+
em := &types.ExecMarket{
Market: m.mkt.DeepClone(),
PriceMonitor: m.pMonitor.GetState(),
@@ -321,6 +336,7 @@ func (m *Market) GetState() *types.ExecMarket {
ExpiringStopOrders: m.expiringStopOrders.GetState(),
Product: m.tradableInstrument.Instrument.Product.Serialize(),
FeesStats: m.fee.GetState(assetQuantum),
+ PartyMarginFactors: partyMarginFactors,
}
return em
diff --git a/core/execution/future/special_orders.go b/core/execution/future/special_orders.go
index 583f22e399..e6393ac470 100644
--- a/core/execution/future/special_orders.go
+++ b/core/execution/future/special_orders.go
@@ -186,6 +186,9 @@ func (m *Market) updateMargins(ctx context.Context, partiesPos map[string]events
)
// now we can check parties positions
for party, pos := range partiesPos {
+ if m.getMarginMode(pos.Party()) == types.MarginModeIsolatedMargin {
+ continue
+ }
positions = append(positions, pos)
mar, err := m.collateral.GetPartyMarginAccount(id, party, m.settlementAsset)
if err != nil {
diff --git a/core/execution/liquidation/engine_test.go b/core/execution/liquidation/engine_test.go
index c60f7565cd..d682de90fd 100644
--- a/core/execution/liquidation/engine_test.go
+++ b/core/execution/liquidation/engine_test.go
@@ -518,10 +518,18 @@ func (m *marginStub) MarginBalance() *num.Uint {
return nil
}
+func (m *marginStub) OrderMarginBalance() *num.Uint {
+ return nil
+}
+
func (m *marginStub) GeneralBalance() *num.Uint {
return nil
}
+func (m *marginStub) GeneralAccountBalance() *num.Uint {
+ return nil
+}
+
func (m *marginStub) BondBalance() *num.Uint {
return nil
}
diff --git a/core/integration/execution_test.go b/core/integration/execution_test.go
index 47d0fa78cf..f96337e6aa 100644
--- a/core/integration/execution_test.go
+++ b/core/integration/execution_test.go
@@ -200,3 +200,7 @@ func (n noopValidation) CheckStopOrdersCancellation(cancel *commandspb.StopOrder
func (n noopValidation) CheckStopOrdersSubmission(order *commandspb.StopOrdersSubmission) error {
return nil
}
+
+func (n noopValidation) CheckUpdateMarginMode(order *commandspb.UpdateMarginMode) error {
+ return nil
+}
diff --git a/core/integration/features/margin/0019-MCAL-032.feature b/core/integration/features/margin/0019-MCAL-032.feature
new file mode 100644
index 0000000000..6fc30acb63
--- /dev/null
+++ b/core/integration/features/margin/0019-MCAL-032.feature
@@ -0,0 +1,248 @@
+Feature: Test magin under isolated margin mode
+ Background:
+ # Set liquidity parameters to allow "zero" target-stake which is needed to construct the order-book defined in the ACs
+ Given the following network parameters are set:
+ | name | value |
+ | network.markPriceUpdateMaximumFrequency | 0s |
+ And the liquidity monitoring parameters:
+ | name | triggering ratio | time window | scaling factor |
+ | lqm-params | 0.00 | 24h | 1e-9 |
+ And the simple risk model named "simple-risk-model":
+ | long | short | max move up | min move down | probability of trading |
+ | 0.1 | 0.1 | 100 | -100 | 0.2 |
+ And the markets:
+ | id | quote name | asset | liquidity monitoring | risk model | margin calculator | auction duration | fees | price monitoring | data source config | linear slippage factor | quadratic slippage factor | sla params |
+ | ETH/FEB23 | ETH | USD | lqm-params | simple-risk-model | default-margin-calculator | 1 | default-none | default-none | default-eth-for-future | 0.25 | 0 | default-futures |
+ | ETH/MAR23 | ETH | USD | lqm-params | simple-risk-model | default-margin-calculator | 1 | default-none | default-none | default-eth-for-future | 100 | 0 | default-futures |
+ @SLABug
+ Scenario: Check margin update when switch between margin modes (0019-MCAL-031, 0019-MCAL-032)
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | buySideProvider | USD | 100000000000 |
+ | sellSideProvider | USD | 100000000000 |
+ | party | USD | 100000000000 |
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | buySideProvider | ETH/FEB23 | buy | 10 | 14900 | 0 | TYPE_LIMIT | TIF_GTC |
+ | buySideProvider | ETH/FEB23 | buy | 1 | 15000 | 0 | TYPE_LIMIT | TIF_GTC |
+ | buySideProvider | ETH/FEB23 | buy | 1 | 15900 | 0 | TYPE_LIMIT | TIF_GTC |
+ | party | ETH/FEB23 | sell | 1 | 15900 | 0 | TYPE_LIMIT | TIF_GTC |
+ | sellSideProvider | ETH/FEB23 | sell | 1 | 100000 | 0 | TYPE_LIMIT | TIF_GTC |
+ | sellSideProvider | ETH/FEB23 | sell | 10 | 100100 | 0 | TYPE_LIMIT | TIF_GTC |
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | buySideProvider | ETH/MAR23 | buy | 10 | 14900 | 0 | TYPE_LIMIT | TIF_GTC |
+ | buySideProvider | ETH/MAR23 | buy | 1 | 15000 | 0 | TYPE_LIMIT | TIF_GTC |
+ | buySideProvider | ETH/MAR23 | buy | 1 | 15900 | 0 | TYPE_LIMIT | TIF_GTC |
+ | party | ETH/MAR23 | sell | 1 | 15900 | 0 | TYPE_LIMIT | TIF_GTC |
+ | sellSideProvider | ETH/MAR23 | sell | 1 | 100000 | 0 | TYPE_LIMIT | TIF_GTC |
+ | sellSideProvider | ETH/MAR23 | sell | 10 | 100100 | 0 | TYPE_LIMIT | TIF_GTC |
+ # Checks for 0019-MCAL-031
+ When the network moves ahead "2" blocks
+ # Check mark-price matches the specification
+ Then the mark price should be "15900" for the market "ETH/FEB23"
+ # Check order book matches the specification
+ And the order book should have the following volumes for market "ETH/FEB23":
+ | side | price | volume |
+ | buy | 14900 | 10 |
+ | buy | 15000 | 1 |
+ | sell | 100000 | 1 |
+ | sell | 100100 | 10 |
+ # Check party margin levels match the specification
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release |
+ | party | ETH/FEB23 | 5565 | 6121 | 6678 | 7791 |
+ #margin = min((100000-15900), 15900*(0.25))+0.1*15900=5565
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general |
+ | party | USD | ETH/FEB23 | 6678 | 99999890494 |
+
+ #AC: 0019-MCAL-032, switch to isolated margin is rejected becuase selected margin factor is too small
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party | ETH/FEB23 | isolated margin | 0.11 | required position margin must be greater than initial margin |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party | ETH/FEB23 | 5565 | 6121 | 6678 | 7791 | cross margin | 0.9 | 0 |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general |
+ | party | USD | ETH/FEB23 | 6678 | 99999890494 |
+
+ And the network moves ahead "1" blocks
+ #AC: 0019-MCAL-033, switch to isolated margin
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor |
+ | party | ETH/FEB23 | isolated margin | 0.9 |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general |
+ | party | USD | ETH/FEB23 | 14310 | 99999882862 |
+ And the network moves ahead "2" blocks
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party | ETH/FEB23 | 5565 | 0 | 6678 | 0 | isolated margin | 0.9 | 0 |
+
+ #AC: 0019-MCAL-031, decrease margin factor
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party | ETH/FEB23 | isolated margin | 0.7 | |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general |
+ | party | USD | ETH/FEB23 | 11130 | 99999886042 |
+ And the network moves ahead "2" blocks
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party | ETH/FEB23 | 5565 | 0 | 6678 | 0 | isolated margin | 0.9 | 0 |
+
+ #AC: 0019-MCAL-059, increase margin factor
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor |
+ | party | ETH/FEB23 | isolated margin | 0.9 |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general |
+ | party | USD | ETH/FEB23 | 14310 | 99999882862 |
+ And the network moves ahead "2" blocks
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party | ETH/FEB23 | 5565 | 0 | 6678 | 0 | isolated margin | 0.9 | 0 |
+
+ #AC: 0019-MCAL-065, switch margin mode from isolated margin to cross margin when party holds position only
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor |
+ | party | ETH/FEB23 | cross margin | |
+ And the network moves ahead "1" blocks
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party | ETH/FEB23 | 5565 | 6121 | 6678 | 7791 | cross margin | 0 | 0 |
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general |
+ | party | USD | ETH/FEB23 | 14310 | 99999882862 |
+
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor |
+ | party | ETH/FEB23 | isolated margin | 0.9 |
+ And the network moves ahead "1" blocks
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general |
+ | party | USD | ETH/FEB23 | 14310 | 99999882862 |
+
+ #trigger MTM
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | buySideProvider | ETH/FEB23 | buy | 1 | 15910 | 0 | TYPE_LIMIT | TIF_GTC |
+ | sellSideProvider | ETH/FEB23 | sell | 1 | 15910 | 1 | TYPE_LIMIT | TIF_GTC |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general |
+ | party | USD | ETH/FEB23 | 14310 | 99999882862 |
+
+ And the network moves ahead "1" blocks
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general |
+ | party | USD | ETH/FEB23 | 14300 | 99999882862 |
+
+ #AC: 0019-MCAL-034, party places a new order which can not offset their position
+ #addional margin should be: limit price x current position x new margin factor = 15910 x 10 x 0.9 = 143190
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | party | ETH/FEB23 | sell | 10 | 15912 | 0 | TYPE_LIMIT | TIF_GTC | sell-10 |
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | party | USD | ETH/FEB23 | 14300 | 99999739654 | 143208 |
+
+ #AC 0019-MCAL-060, Amend order,check the updated order margin
+ When the parties amend the following orders:
+ | party | reference | price | size delta | tif |
+ | party | sell-10 | 15912 | -5 | TIF_GTC |
+ # And the network moves ahead "1" blocks
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | party | USD | ETH/FEB23 | 14300 | 99999811258 | 71604 |
+
+ #AC 0019-MCAL-061, party's order get partially filled, check the updated margin account and order account
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | buySideProvider | ETH/FEB23 | buy | 3 | 15912 | 1 | TYPE_LIMIT | TIF_GTC |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | party | USD | ETH/FEB23 | 57262 | 99999811258 | 28642 |
+
+ Then the order book should have the following volumes for market "ETH/FEB23":
+ | side | price | volume |
+ | sell | 15912 | 2 |
+
+ #AC: 0019-MCAL-063, switch margin mode from isolated margin to cross margin when party holds both position and orders
+ And the parties submit update margin mode:
+ | party | market | margin_mode |
+ | party | ETH/FEB23 | cross margin |
+
+ And the network moves ahead "1" blocks
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | order | margin factor |
+ | party | ETH/FEB23 | 25460 | 28006 | 30552 | 35644 | cross margin | 0 | 0 |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | party | USD | ETH/FEB23 | 30552 | 99999866608 | 0 |
+
+ #AC: 0019-MCAL-064, switch margin mode from cross margin to isolated margin when party holds both position and orders
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor |
+ | party | ETH/FEB23 | isolated margin | 0.9 |
+ And the network moves ahead "1" blocks
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | order | margin factor |
+ | party | ETH/FEB23 | 22277 | 0 | 26732 | 0 | isolated margin | 28641 | 0.9 |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | party | USD | ETH/FEB23 | 57272 | 99999811247 | 28641 |
+
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | buySideProvider | ETH/FEB23 | buy | 1 | 15912 | 1 | TYPE_LIMIT | TIF_GTC |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | party | USD | ETH/FEB23 | 71592 | 99999811247 | 14321 |
+
+ #AC 0019-MCAL-062, when party has no orders, the order margin account shoule be 0
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | buySideProvider | ETH/FEB23 | buy | 1 | 15912 | 1 | TYPE_LIMIT | TIF_GTC |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | party | USD | ETH/FEB23 | 85912 | 99999811248 | 0 |
+
+ #AC: 0019-MCAL-038,when party places a new order which can offset the party's position, no additional margin will be needed
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | party | ETH/FEB23 | buy | 3 | 15912 | 0 | TYPE_LIMIT | TIF_GTC |
+ And the network moves ahead "1" blocks
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | party | USD | ETH/FEB23 | 85912 | 99999811248 | 0 |
+
+ #AC: 0019-MCAL-039,when party places a large order which can offset all of the party's position and then add new orders, additional margin will be needed
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | party | ETH/FEB23 | buy | 10 | 15912 | 0 | TYPE_LIMIT | TIF_GTC |
+ And the network moves ahead "1" blocks
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | party | USD | ETH/FEB23 | 85912 | 99999711003 | 100245 |
+
+
+
+
diff --git a/core/integration/features/margin/0019-MCAL-037.feature b/core/integration/features/margin/0019-MCAL-037.feature
new file mode 100644
index 0000000000..7d5d461940
--- /dev/null
+++ b/core/integration/features/margin/0019-MCAL-037.feature
@@ -0,0 +1,181 @@
+Feature: Test magin under isolated margin mode when there is not enough collateral
+ Background:
+ # Set liquidity parameters to allow "zero" target-stake which is needed to construct the order-book defined in the ACs
+ Given the following network parameters are set:
+ | name | value |
+ | network.markPriceUpdateMaximumFrequency | 0s |
+ And the liquidity monitoring parameters:
+ | name | triggering ratio | time window | scaling factor |
+ | lqm-params | 0.00 | 24h | 1e-9 |
+ And the simple risk model named "simple-risk-model":
+ | long | short | max move up | min move down | probability of trading |
+ | 0.1 | 0.1 | 100 | -100 | 0.2 |
+ And the markets:
+ | id | quote name | asset | liquidity monitoring | risk model | margin calculator | auction duration | fees | price monitoring | data source config | linear slippage factor | quadratic slippage factor | sla params |
+ | ETH/FEB23 | ETH | USD | lqm-params | simple-risk-model | default-margin-calculator | 1 | default-none | default-none | default-eth-for-future | 0.25 | 0 | default-futures |
+
+ @SLABug
+ Scenario: Check margin update when party does not have sufficient collateral
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | buySideProvider | USD | 100000000000 |
+ | sellSideProvider | USD | 100000000000 |
+ | party | USD | 48050 |
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | buySideProvider | ETH/FEB23 | buy | 10 | 14900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | buySideProvider | ETH/FEB23 | buy | 1 | 15000 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | buySideProvider | ETH/FEB23 | buy | 3 | 15900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | party | ETH/FEB23 | sell | 3 | 15900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | party | ETH/FEB23 | sell | 3 | 15900 | 0 | TYPE_LIMIT | TIF_GTC | party-sell |
+ | sellSideProvider | ETH/FEB23 | sell | 1 | 100000 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | sellSideProvider | ETH/FEB23 | sell | 10 | 100100 | 0 | TYPE_LIMIT | TIF_GTC | |
+
+ # Checks for 0019-MCAL-031
+ When the network moves ahead "2" blocks
+ # Check mark-price matches the specification
+ Then the mark price should be "15900" for the market "ETH/FEB23"
+ # Check order book matches the specification
+ And the order book should have the following volumes for market "ETH/FEB23":
+ | side | price | volume |
+ | buy | 14900 | 10 |
+ | buy | 15000 | 1 |
+ | sell | 100000 | 1 |
+ | sell | 100100 | 10 |
+ # Check party margin levels match the specification
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release |
+ | party | ETH/FEB23 | 9540 | 10494 | 11448 | 13356 |
+ #margin = min(3*(100000-15900), 15900*(0.25))+0.1*15900=5565
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general |
+ | party | USD | ETH/FEB23 | 11448 | 36602 |
+
+ #AC: 0019-MCAL-032, switch to isolated margin is rejected becuase selected margin factor is too small
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party | ETH/FEB23 | isolated margin | 0.11 | required position margin must be greater than initial margin |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party | ETH/FEB23 | 9540 | 10494 | 11448 | 13356 | cross margin | 0.9 | 0 |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general |
+ | party | USD | ETH/FEB23 | 11448 | 36602 |
+
+ And the network moves ahead "1" blocks
+
+ #AC: 0019-MCAL-066, 0019-MCAL-037 switch to isolated margin is rejected when party got insufficent balance
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party | ETH/FEB23 | isolated margin | 0.9 | insufficient balance in general account to cover for required order margin |
+ And the network moves ahead "2" blocks
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party | ETH/FEB23 | 9540 | 10494 | 11448 | 13356 | cross margin | 0.9 | 0 |
+
+ #AC: 0019-MCAL-066 switch to isolated margin is accepted when party has sufficent balance
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor |
+ | party | ETH/FEB23 | isolated margin | 0.5 |
+ And the network moves ahead "2" blocks
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party | ETH/FEB23 | 4770 | 0 | 5724 | 0 | isolated margin | 0.5 | 23850 |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | party | USD | ETH/FEB23 | 23850 | 350 | 23850 |
+
+ #AC 0019-MCAL-035 order will be rejected if the party does not have enough asset in the general account
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference | error |
+ | party | ETH/FEB23 | sell | 10 | 15910 | 0 | TYPE_LIMIT | TIF_GTC | sell-order-1 | margin check failed |
+
+ #trigger MTM with party has both short position and short orders
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | buySideProvider | ETH/FEB23 | buy | 1 | 15890 | 0 | TYPE_LIMIT | TIF_GTC |
+ | sellSideProvider | ETH/FEB23 | sell | 1 | 15890 | 1 | TYPE_LIMIT | TIF_GTC |
+
+ And the network moves ahead "1" blocks
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | party | USD | ETH/FEB23 | 23880 | 350 | 23850 |
+
+ #trigger more MTM with party has both short position and short orders
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | buySideProvider | ETH/FEB23 | buy | 1 | 15850 | 0 | TYPE_LIMIT | TIF_GTC |
+ | sellSideProvider | ETH/FEB23 | sell | 1 | 15850 | 1 | TYPE_LIMIT | TIF_GTC |
+
+ And the network moves ahead "1" blocks
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | party | USD | ETH/FEB23 | 24000 | 350 | 23850 |
+
+# #AC 0019-MCAL-068 amend the order so that new side margin + margin account balance < maintenance margin, the remainding should be stopped
+# When the parties amend the following orders:
+# | party | reference | price | size delta | tif | error |
+# | party | party-sell | 19000 | 0 | TIF_GTC | margin check failed |
+# # If the new side margin + margin account balance < maintenance margin =>
+# # As the evaluation is the result of any other position/order update, all open orders are stopped and margin re-evaluated.
+
+# And the orders should have the following status:
+# | party | reference | status |
+# | party | party-sell | STATUS_STOPPED |
+# And the network moves ahead "1" blocks
+
+# # amend the order which had been stopped
+# When the parties amend the following orders:
+# | party | reference | price | size delta | tif | error |
+# | party | party-sell | 16500 | 0 | TIF_GTC | OrderError: Invalid Order ID |
+
+# Then the parties should have the following account balances:
+# | party | asset | market id | margin | general | order margin |
+# | party | USD | ETH/FEB23 | 24000 | 24200 | 0 |
+
+# And the parties place the following orders:
+# | party | market id | side | volume | price | resulting trades | type | tif | reference |
+# | party | ETH/FEB23 | sell | 2 | 15900 | 0 | TYPE_LIMIT | TIF_GTC | party1-sell-2 |
+# | party | ETH/FEB23 | sell | 1 | 15920 | 0 | TYPE_LIMIT | TIF_GTC | party1-sell-3 |
+
+# Then the parties should have the following account balances:
+# | party | asset | market id | margin | general | order margin |
+# | party | USD | ETH/FEB23 | 24000 | 340 | 23860 |
+
+# #AC 0019-MCAL-069 when order is partially filled, the order margin should be udpated
+# And the parties place the following orders:
+# | party | market id | side | volume | price | resulting trades | type | tif |
+# | buySideProvider | ETH/FEB23 | buy | 1 | 15900 | 1 | TYPE_LIMIT | TIF_GTC |
+
+# Then the parties should have the following account balances:
+# | party | asset | market id | margin | general | order margin |
+# | party | USD | ETH/FEB23 | 24000 | 340 | 23860 |
+
+# And the orders should have the following status:
+# | party | reference | status |
+# | party | party1-sell-2 | STATUS_ACTIVE |
+# | party | party1-sell-3 | STATUS_ACTIVE |
+
+# Then the parties should have the following account balances:
+# | party | asset | market id | margin | general | order margin |
+# | party | USD | ETH/FEB23 | 31950 | 340 | 15910 |
+
+# And the order book should have the following volumes for market "ETH/FEB23":
+# | side | price | volume |
+# | sell | 15900 | 1 |
+# | sell | 15920 | 1 |
+
+
+
+
+
+
+
+
diff --git a/core/integration/features/margin/0019-MCAL-041.feature b/core/integration/features/margin/0019-MCAL-041.feature
new file mode 100644
index 0000000000..da357fb74a
--- /dev/null
+++ b/core/integration/features/margin/0019-MCAL-041.feature
@@ -0,0 +1,144 @@
+Feature: Test order margin during auction
+ Background:
+ # Set liquidity parameters to allow "zero" target-stake which is needed to construct the order-book defined in the ACs
+ Given the following network parameters are set:
+ | name | value |
+ | network.markPriceUpdateMaximumFrequency | 0s |
+ And the liquidity monitoring parameters:
+ | name | triggering ratio | time window | scaling factor |
+ | lqm-params | 0.00 | 24h | 1e-9 |
+ And the simple risk model named "simple-risk-model":
+ | long | short | max move up | min move down | probability of trading |
+ | 0.1 | 0.1 | 100 | -100 | 0.2 |
+ And the markets:
+ | id | quote name | asset | liquidity monitoring | risk model | margin calculator | auction duration | fees | price monitoring | data source config | linear slippage factor | quadratic slippage factor | sla params |
+ | ETH/FEB23 | ETH | USD | lqm-params | simple-risk-model | default-margin-calculator | 1 | default-none | default-none | default-eth-for-future | 0.25 | 0 | default-futures |
+
+ And the following network parameters are set:
+ | name | value |
+ | market.auction.minimumDuration | 2 |
+ Given the average block duration is "1"
+
+ Scenario: Check order margin during openning auction
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | buySideProvider | USD | 100000000000 |
+ | sellSideProvider | USD | 100000000000 |
+ | party1 | USD | 48050 |
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | buySideProvider | ETH/FEB23 | buy | 10 | 14900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | buySideProvider | ETH/FEB23 | buy | 1 | 15000 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | buySideProvider | ETH/FEB23 | buy | 1 | 15900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | sellSideProvider | ETH/FEB23 | sell | 1 | 15900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | party1 | ETH/FEB23 | sell | 2 | 15910 | 0 | TYPE_LIMIT | TIF_GTC | s-GTC-2 |
+ | party1 | ETH/FEB23 | sell | 1 | 15920 | 0 | TYPE_LIMIT | TIF_GTC | s-GTC-1 |
+ | sellSideProvider | ETH/FEB23 | sell | 1 | 100000 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | sellSideProvider | ETH/FEB23 | sell | 10 | 100100 | 0 | TYPE_LIMIT | TIF_GTC | |
+
+ And the market data for the market "ETH/FEB23" should be:
+ | mark price | trading mode |
+ | 0 | TRADING_MODE_OPENING_AUCTION |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 4774 | 5251 | 5728 | 6683 | cross margin | 0 | 0 |
+
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.3 | |
+
+ #AC: 0019-MCAL-200, when party has no position, and place 2 short orders during auction, order margin should be updated
+ #order margin short: (2*15910+1*15920)*0.3=14322
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 0 | 0 | 0 | 0 | isolated margin | 0 | 14322 |
+
+ #AC: 0019-MCAL-201, when party has no position, and place short orders size -3 during auction, and long order size 1 which can offset, order margin should be updated using max(price, markPrice, indicativePrice)
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | party1 | ETH/FEB23 | buy | 1 | 15800 | 0 | TYPE_LIMIT | TIF_GTC | b-GTC-1 |
+
+ #order margin short: (2*15910+1*15920)*0.3=14322
+ #order margin long: 1*15800*0.3=5750
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 0 | 0 | 0 | 0 | isolated margin | 0 | 14322 |
+
+ #AC: 0019-MCAL-202, when party has no position, and place short orders size -3 during auction, and long orders size 2 which can offset, order margin should be updated using max(price, markPrice, indicativePrice)
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | party1 | ETH/FEB23 | buy | 1 | 15800 | 0 | TYPE_LIMIT | TIF_GTC | b-GTC-2 |
+
+ #order margin short: (2*15910+1*15920)*0.3=14322
+ #order margin long: 2*15800*0.3=9480
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 0 | 0 | 0 | 0 | isolated margin | 0 | 14322 |
+
+ #AC: 0019-MCAL-203, when party has no position, and place short orders size -3 during auction, and long orders size 3 which can offset, order margin should be updated using max(price, markPrice, indicativePrice)
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | party1 | ETH/FEB23 | buy | 1 | 15800 | 0 | TYPE_LIMIT | TIF_GTC | b-GTC-3 |
+
+ #order margin short: (2*15910+1*15920)*0.3=14322
+ #order margin long: 3*15800*0.3=14220
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 0 | 0 | 0 | 0 | isolated margin | 0 | 14322 |
+
+ #AC: 0019-MCAL-204, when party has no position, and place short orders size -3 during auction, and long orders size 4, which is over the offset size, order margin should be updated using max(price, markPrice, indicativePrice)
+ #order margin short: (2*15910+1*15920)*0.3=14322
+ #order margin long: 4*15900*0.3=19080
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | party1 | ETH/FEB23 | buy | 1 | 15800 | 0 | TYPE_LIMIT | TIF_GTC | b-GTC-4 |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 0 | 0 | 0 | 0 | isolated margin | 0 | 19080 |
+
+ #AC: 0019-MCAL-205,When the party changes the order price during auction, order margin should be updated using max(price, markPrice, indicativePrice)
+ When the parties amend the following orders:
+ | party | reference | price | size delta | tif | error |
+ | party1 | b-GTC-3 | 15750 | 0 | TIF_GTC | |
+ When the network moves ahead "1" blocks
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 0 | 0 | 0 | 0 | isolated margin | 0.3 | 19080 |
+
+ #AC: 0019-MCAL-206,When the party reduces the order size only during auction, the order margin should be reduced
+ When the parties amend the following orders:
+ | party | reference | price | size delta | tif | error |
+ | party1 | b-GTC-4 | 15800 | -1 | TIF_GTC | |
+
+ And the orders should have the following status:
+ | party | reference | status |
+ | party1 | b-GTC-4 | STATUS_CANCELLED |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 0 | 0 | 0 | 0 | isolated margin | 0 | 14322 |
+ When the network moves ahead "2" blocks
+
+ And the market data for the market "ETH/FEB23" should be:
+ | mark price | trading mode |
+ | 15900 | TRADING_MODE_CONTINUOUS |
+
+ #order margin long: 3*15800*0.3=14220
+ #order margin short: (2*15910+1*15920)*0.3=14322
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 0 | 0 | 0 | 0 | isolated margin | 0 | 14322 |
+
+ #AC: 0019-MCAL-207, when party has no position, and place 2 short orders size 3 and 4 long orders of size 4, which is over the offset size, order margin should be updated using max(price, markPrice, indicativePrice)
+ #order margin long: (3*15800+15750)*0.3=18945
+ #order margin short: (2*15910+1*15920)*0.3=14322
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | party1 | ETH/FEB23 | buy | 1 | 15800 | 0 | TYPE_LIMIT | TIF_GTC | b-GTC-4 |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 0 | 0 | 0 | 0 | isolated margin | 0 | 18945 |
+
diff --git a/core/integration/features/margin/0019-MCAL-042.feature b/core/integration/features/margin/0019-MCAL-042.feature
new file mode 100644
index 0000000000..f538da685a
--- /dev/null
+++ b/core/integration/features/margin/0019-MCAL-042.feature
@@ -0,0 +1,165 @@
+Feature: Test order margin during continuous
+ Background:
+ # Set liquidity parameters to allow "zero" target-stake which is needed to construct the order-book defined in the ACs
+ Given the following network parameters are set:
+ | name | value |
+ | network.markPriceUpdateMaximumFrequency | 0s |
+ And the liquidity monitoring parameters:
+ | name | triggering ratio | time window | scaling factor |
+ | lqm-params | 0.00 | 24h | 1e-9 |
+ And the simple risk model named "simple-risk-model":
+ | long | short | max move up | min move down | probability of trading |
+ | 0.1 | 0.2 | 100 | -100 | 0.2 |
+ And the markets:
+ | id | quote name | asset | liquidity monitoring | risk model | margin calculator | auction duration | fees | price monitoring | data source config | linear slippage factor | quadratic slippage factor | sla params |
+ | ETH/FEB23 | ETH | USD | lqm-params | simple-risk-model | default-margin-calculator | 1 | default-none | default-none | default-eth-for-future | 0.25 | 0 | default-futures |
+
+ And the following network parameters are set:
+ | name | value |
+ | market.auction.minimumDuration | 2 |
+ Given the average block duration is "1"
+
+ Scenario: Check order margin during continuous
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | buySideProvider | USD | 100000000000 |
+ | sellSideProvider | USD | 100000000000 |
+ | party1 | USD | 48050 |
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | buySideProvider | ETH/FEB23 | buy | 10 | 14900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | buySideProvider | ETH/FEB23 | buy | 1 | 15000 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | party1 | ETH/FEB23 | buy | 2 | 15800 | 0 | TYPE_LIMIT | TIF_GFA | b-GFA-1 |
+ | buySideProvider | ETH/FEB23 | buy | 1 | 15900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | sellSideProvider | ETH/FEB23 | sell | 1 | 15900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | party1 | ETH/FEB23 | sell | 2 | 15910 | 0 | TYPE_LIMIT | TIF_GTC | s-GTC-2 |
+ | party1 | ETH/FEB23 | sell | 1 | 15920 | 0 | TYPE_LIMIT | TIF_GTC | s-GTC-1 |
+ | sellSideProvider | ETH/FEB23 | sell | 1 | 100000 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | sellSideProvider | ETH/FEB23 | sell | 10 | 100100 | 0 | TYPE_LIMIT | TIF_GTC | |
+
+ When the network moves ahead "3" blocks
+
+ And the market data for the market "ETH/FEB23" should be:
+ | mark price | trading mode |
+ | 15900 | TRADING_MODE_CONTINUOUS |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 9540 | 10494 | 11448 | 13356 | cross margin | 0 | 0 |
+
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.3 | |
+
+ #AC: 0019-MCAL-220, GFA order added during auction should not be used to count order margin in continuous
+ #AC: 0019-MCAL-221, when party has no position, and place 2 short orders during auction, order margin should be updated
+ #order margin short: (2*15910+1*15920)*0.3=14322
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 0 | 0 | 0 | 0 | isolated margin | 0 | 14322 |
+
+ #AC: 0019-MCAL-222,When the party increases the order price during continunous, order margin should increase
+ #order margin short: (2*15912+1*15920)*0.3=14323
+ When the parties amend the following orders:
+ | party | reference | price | size delta | tif | error |
+ | party1 | s-GTC-2 | 15912 | 0 | TIF_GTC | |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 0 | 0 | 0 | 0 | isolated margin | 0 | 14323 |
+
+ #AC: 0019-MCAL-223,When the party decreases the order price during continunous, order margin should decrease
+ #order margin short: (2*15902+1*15920)*0.3=14317
+ When the parties amend the following orders:
+ | party | reference | price | size delta | tif | error |
+ | party1 | s-GTC-2 | 15902 | 0 | TIF_GTC | |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 0 | 0 | 0 | 0 | isolated margin | 0 | 14317 |
+
+ #AC: 0019-MCAL-224,When the party decreases the order volume during continunous, order margin should decrease
+ #order margin short: (1*15902+1*15920)*0.3=9546
+ When the parties amend the following orders:
+ | party | reference | price | size delta | tif | error |
+ | party1 | s-GTC-2 | 15902 | -1 | TIF_GTC | |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 0 | 0 | 0 | 0 | isolated margin | 0 | 9546 |
+
+ #AC: 0019-MCAL-225,When the party increases the order volume while decrease price during continunous, order margin should update accordingly
+ #order margin short: (4*15900+1*15920)*0.3=23856
+ When the parties amend the following orders:
+ | party | reference | price | size delta | tif | error |
+ | party1 | s-GTC-2 | 15900 | 3 | TIF_GTC | |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 0 | 0 | 0 | 0 | isolated margin | 0 | 23856 |
+
+ #AC: 0019-MCAL-226,When the party's order is partially filled during continunous, order margin should update accordingly
+ #order margin short: (3*15900+1*15920)*0.3=19086
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | buySideProvider | ETH/FEB23 | buy | 1 | 15900 | 1 | TYPE_LIMIT | TIF_GTC | |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 3180 | 0 | 3816 | 0 | isolated margin | 0.3 | 19086 |
+
+ When the network moves ahead "1" blocks
+
+ #AC: 0019-MCAL-227,When the party cancel one of the two orders during continunous, order margin should be reduced
+ #order margin short: (3*15900+0*15920)*0.3=14310
+ When the parties amend the following orders:
+ | party | reference | size delta | tif | error |
+ | party1 | s-GTC-1 | -1 | TIF_GTC | |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 3180 | 0 | 3816 | 0 | isolated margin | 0 | 14310 |
+
+ #AC: 0019-MCAL-228, place a GFA order duing continuous, order should be rejected
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference | error |
+ | party1 | ETH/FEB23 | buy | 1 | 15800 | 0 | TYPE_LIMIT | TIF_GFA | GFA-1 | gfa order received during continuous trading |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 3180 | 0 | 3816 | 0 | isolated margin | 0 | 14310 |
+
+ #AC: 0019-MCAL-229,When the party has position -1 and order -3, and new long order with size 1 will be offset
+ #order margin short: 3*15900*0.3=14310
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | party1 | ETH/FEB23 | buy | 1 | 15800 | 0 | TYPE_LIMIT | TIF_GTC | |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 3180 | 0 | 3816 | 0 | isolated margin | 0.3 | 14310 |
+
+ #AC: 0019-MCAL-230,When the party has position -1 and order -3, and new long orders with size 2 will be offset
+ #order margin short: 3*15900*0.3=14310
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | party1 | ETH/FEB23 | buy | 1 | 15800 | 0 | TYPE_LIMIT | TIF_GTC | |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 3180 | 0 | 3816 | 0 | isolated margin | 0.3 | 14310 |
+
+ #AC: 0019-MCAL-231,When the party has position -1 and order -3, and new long orders with size 3 will be offset
+ #order margin short: 3*15900*0.3=14310
+ #order margin short: 3*15800*0.3=14220
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | party1 | ETH/FEB23 | buy | 1 | 15800 | 0 | TYPE_LIMIT | TIF_GTC | |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 3180 | 0 | 3816 | 0 | isolated margin | 0.3 | 14310 |
+
+ And the market data for the market "ETH/FEB23" should be:
+ | mark price | trading mode |
+ | 15900 | TRADING_MODE_CONTINUOUS |
diff --git a/core/integration/features/margin/0019-MCAL-043.feature b/core/integration/features/margin/0019-MCAL-043.feature
new file mode 100644
index 0000000000..d82793f89e
--- /dev/null
+++ b/core/integration/features/margin/0019-MCAL-043.feature
@@ -0,0 +1,1173 @@
+Feature: Iceberg orders in isolated margin mode
+
+ Background:
+ Given the markets:
+ | id | quote name | asset | risk model | margin calculator | auction duration | fees | price monitoring | data source config | linear slippage factor | quadratic slippage factor | sla params |
+ | ETH/DEC19 | BTC | BTC | default-simple-risk-model-3 | default-margin-calculator | 1 | default-none | default-none | default-eth-for-future | 1e6 | 0 | default-futures |
+ And the following network parameters are set:
+ | name | value |
+ | market.auction.minimumDuration | 1 |
+ | network.markPriceUpdateMaximumFrequency | 0s |
+ | limits.markets.maxPeggedOrders | 1500 |
+ Given the average block duration is "1"
+
+ @iceberg
+ Scenario: 001 Iceberg order submission with valid TIF's
+ # setup accounts
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | party1 | BTC | 10000 |
+ | party2 | BTC | 10000 |
+ | aux | BTC | 100000 |
+ | aux2 | BTC | 100000 |
+ | lpprov | BTC | 90000000 |
+
+ When the parties submit the following liquidity provision:
+ | id | party | market id | commitment amount | fee | lp type |
+ | lp1 | lpprov | ETH/DEC19 | 90000000 | 0.1 | submission |
+ | lp1 | lpprov | ETH/DEC19 | 90000000 | 0.1 | submission |
+ And the parties place the following pegged iceberg orders:
+ | party | market id | peak size | minimum visible size | side | pegged reference | volume | offset |
+ | lpprov | ETH/DEC19 | 2 | 1 | buy | BID | 50 | 100 |
+ | lpprov | ETH/DEC19 | 2 | 1 | sell | ASK | 50 | 100 |
+ # place auxiliary orders so we always have best bid and best offer as to not trigger the liquidity auction
+ When the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | aux | ETH/DEC19 | buy | 1 | 1 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux | ETH/DEC19 | sell | 1 | 10001 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux2 | ETH/DEC19 | buy | 1 | 2 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux | ETH/DEC19 | sell | 1 | 2 | 0 | TYPE_LIMIT | TIF_GTC |
+ Then the opening auction period ends for market "ETH/DEC19"
+ And the trading mode should be "TRADING_MODE_CONTINUOUS" for the market "ETH/DEC19"
+
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/DEC19 | isolated margin | 0.15 | |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/DEC19 | 0 | 0 | 0 | 0 | isolated margin | 0.15 | 0 |
+
+ When the parties place the following iceberg orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | peak size | minimum visible size | only |
+ | party1 | ETH/DEC19 | buy | 100 | 10 | 0 | TYPE_LIMIT | TIF_GTC | 10 | 5 | post |
+
+ Then the iceberg orders should have the following states:
+ | party | market id | side | visible volume | price | status | reserved volume |
+ | party1 | ETH/DEC19 | buy | 10 | 10 | STATUS_ACTIVE | 90 |
+
+ When the parties place the following iceberg orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | expires in | peak size | minimum visible size | only |
+ | party2 | ETH/DEC19 | buy | 100 | 10 | 0 | TYPE_LIMIT | TIF_GTT | 3600 | 8 | 4 | post |
+
+ Then the iceberg orders should have the following states:
+ | party | market id | side | visible volume | price | status | reserved volume |
+ | party2 | ETH/DEC19 | buy | 8 | 10 | STATUS_ACTIVE | 92 |
+
+ @iceberg
+ Scenario: 002 An iceberg order with either an ordinary can be submitted, and iceberg order with pegged limit price will be rejected
+ # setup accounts
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | party1 | BTC | 10000 |
+ | party2 | BTC | 10000 |
+ | aux | BTC | 100000 |
+ | aux2 | BTC | 100000 |
+ | lpprov | BTC | 90000000 |
+
+ When the parties submit the following liquidity provision:
+ | id | party | market id | commitment amount | fee | lp type |
+ | lp1 | lpprov | ETH/DEC19 | 90000000 | 0.1 | submission |
+ | lp1 | lpprov | ETH/DEC19 | 90000000 | 0.1 | submission |
+ And the parties place the following pegged iceberg orders:
+ | party | market id | peak size | minimum visible size | side | pegged reference | volume | offset |
+ | lpprov | ETH/DEC19 | 2 | 1 | buy | BID | 50 | 100 |
+ | lpprov | ETH/DEC19 | 2 | 1 | sell | ASK | 50 | 100 |
+ # place auxiliary orders so we always have best bid and best offer as to not trigger the liquidity auction
+ When the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | aux | ETH/DEC19 | buy | 1 | 1 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux | ETH/DEC19 | sell | 1 | 10001 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux2 | ETH/DEC19 | buy | 1 | 2 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux | ETH/DEC19 | sell | 1 | 2 | 0 | TYPE_LIMIT | TIF_GTC |
+ Then the opening auction period ends for market "ETH/DEC19"
+ And the trading mode should be "TRADING_MODE_CONTINUOUS" for the market "ETH/DEC19"
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/DEC19 | isolated margin | 0.15 | |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/DEC19 | 0 | 0 | 0 | 0 | isolated margin | 0.15 | 0 |
+
+ Given the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | party2 | ETH/DEC19 | buy | 1 | 10 | 0 | TYPE_LIMIT | TIF_GTC | best-bid |
+ | party2 | ETH/DEC19 | sell | 1 | 20 | 0 | TYPE_LIMIT | TIF_GTC | best-ask |
+ When the parties place the following iceberg orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | peak size | minimum visible size | reference |
+ | party1 | ETH/DEC19 | buy | 10 | 5 | 0 | TYPE_LIMIT | TIF_GTC | 3 | 1 | ordinary-iceberg |
+ And the parties place the following pegged iceberg orders:
+ | party | market id | side | volume | resulting trades | type | tif | peak size | minimum visible size | pegged reference | offset | reference | error |
+ | party1 | ETH/DEC19 | buy | 10 | 0 | TYPE_LIMIT | TIF_GTC | 2 | 1 | BID | 1 | pegged-iceberg | invalid OrderError |
+ Then the order book should have the following volumes for market "ETH/DEC19":
+ | side | price | volume |
+ | buy | 5 | 3 |
+ | buy | 9 | 0 |
+ | buy | 10 | 1 |
+
+ # Move best-bid and check pegged iceberg order is re-priced
+ When the parties amend the following orders:
+ | party | reference | price | size delta | tif |
+ | party2 | best-bid | 9 | 0 | TIF_GTC |
+ Then the order book should have the following volumes for market "ETH/DEC19":
+ | side | price | volume |
+ | buy | 5 | 3 |
+ | buy | 8 | 0 |
+ | buy | 9 | 1 |
+
+ @iceberg
+ Scenario: 003 Iceberg order margin calculation
+ # setup accounts
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | party1 | BTC | 10000 |
+ | party2 | BTC | 10000 |
+ | aux | BTC | 100000 |
+ | aux2 | BTC | 100000 |
+ | lpprov | BTC | 90000000 |
+
+ When the parties submit the following liquidity provision:
+ | id | party | market id | commitment amount | fee | lp type |
+ | lp1 | lpprov | ETH/DEC19 | 90000000 | 0.1 | submission |
+ | lp1 | lpprov | ETH/DEC19 | 90000000 | 0.1 | submission |
+ And the parties place the following pegged iceberg orders:
+ | party | market id | peak size | minimum visible size | side | pegged reference | volume | offset |
+ | lpprov | ETH/DEC19 | 2 | 1 | buy | BID | 50 | 100 |
+ | lpprov | ETH/DEC19 | 2 | 1 | sell | ASK | 50 | 100 |
+ # place auxiliary orders so we always have best bid and best offer as to not trigger the liquidity auction
+ When the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | aux | ETH/DEC19 | buy | 1 | 1 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux | ETH/DEC19 | sell | 1 | 10001 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux2 | ETH/DEC19 | buy | 1 | 2 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux | ETH/DEC19 | sell | 1 | 2 | 0 | TYPE_LIMIT | TIF_GTC |
+ Then the opening auction period ends for market "ETH/DEC19"
+ And the trading mode should be "TRADING_MODE_CONTINUOUS" for the market "ETH/DEC19"
+
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/DEC19 | isolated margin | 0.15 | |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/DEC19 | 0 | 0 | 0 | 0 | isolated margin | 0.15 | 0 |
+
+ When the parties place the following iceberg orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | peak size | minimum visible size | only | reference |
+ | party1 | ETH/DEC19 | buy | 100 | 10 | 0 | TYPE_LIMIT | TIF_GTC | 10 | 5 | post | iceberg-order-1 |
+
+ Then the iceberg orders should have the following states:
+ | party | market id | side | visible volume | price | status | reserved volume |
+ | party1 | ETH/DEC19 | buy | 10 | 10 | STATUS_ACTIVE | 90 |
+
+ #order margin level: 10*100*0.15=150
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/DEC19 | 0 | 0 | 0 | 0 | isolated margin | 0.15 | 150 |
+
+ And the parties should have the following account balances:
+ | party | asset | market id | margin | general |
+ | party1 | BTC | ETH/DEC19 | 0 | 9850 |
+
+ # And another party places a normal limit order for the same price and quantity, then the same margin should be taken
+ When the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | party2 | ETH/DEC19 | buy | 100 | 10 | 0 | TYPE_LIMIT | TIF_GTC | normal-limit-order-1 |
+
+ And the parties should have the following account balances:
+ | party | asset | market id | margin | general |
+ | party2 | BTC | ETH/DEC19 | 26 | 9974 |
+
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party2 | ETH/DEC19 | isolated margin | 0.15 | |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party2 | ETH/DEC19 | 0 | 0 | 0 | 0 | isolated margin | 0.15 | 150 |
+
+ # Now we cancel the iceberg order
+ Then the parties cancel the following orders:
+ | party | reference |
+ | party1 | iceberg-order-1 |
+
+ # And the margin taken for the iceberg order is released
+ And the parties should have the following account balances:
+ | party | asset | market id | margin | general |
+ | party1 | BTC | ETH/DEC19 | 0 | 10000 |
+
+ # Now we cancel the normal limit order
+ Then the parties cancel the following orders:
+ | party | reference |
+ | party2 | normal-limit-order-1 |
+
+ # And the margin taken for the normal limit order is released
+ And the parties should have the following account balances:
+ | party | asset | market id | margin | general |
+ | party2 | BTC | ETH/DEC19 | 0 | 10000 |
+
+ @iceberg
+ Scenario: 004 iceberg basic refresh
+ # setup accounts
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | party1 | BTC | 10000 |
+ | party2 | BTC | 10000 |
+ | aux | BTC | 100000 |
+ | aux2 | BTC | 100000 |
+ | lpprov | BTC | 90000000 |
+
+ When the parties submit the following liquidity provision:
+ | id | party | market id | commitment amount | fee | lp type |
+ | lp1 | lpprov | ETH/DEC19 | 90000000 | 0.1 | submission |
+ | lp1 | lpprov | ETH/DEC19 | 90000000 | 0.1 | submission |
+ And the parties place the following pegged iceberg orders:
+ | party | market id | peak size | minimum visible size | side | pegged reference | volume | offset |
+ | lpprov | ETH/DEC19 | 2 | 1 | buy | BID | 50 | 100 |
+ | lpprov | ETH/DEC19 | 2 | 1 | sell | ASK | 50 | 100 |
+ # place auxiliary orders so we always have best bid and best offer as to not trigger the liquidity auction
+ When the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | aux | ETH/DEC19 | buy | 1 | 1 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux | ETH/DEC19 | sell | 1 | 10001 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux2 | ETH/DEC19 | buy | 1 | 2 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux | ETH/DEC19 | sell | 1 | 2 | 0 | TYPE_LIMIT | TIF_GTC |
+ Then the opening auction period ends for market "ETH/DEC19"
+ And the trading mode should be "TRADING_MODE_CONTINUOUS" for the market "ETH/DEC19"
+
+ When the parties place the following iceberg orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | peak size | minimum visible size |
+ | party1 | ETH/DEC19 | buy | 100 | 10 | 0 | TYPE_LIMIT | TIF_GTC | 10 | 5 |
+
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/DEC19 | isolated margin | 0.15 | |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/DEC19 | 0 | 0 | 0 | 0 | isolated margin | 0.15 | 150 |
+
+ Then the iceberg orders should have the following states:
+ | party | market id | side | visible volume | price | status | reserved volume |
+ | party1 | ETH/DEC19 | buy | 10 | 10 | STATUS_ACTIVE | 90 |
+
+ When the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | party2 | ETH/DEC19 | sell | 6 | 10 | 1 | TYPE_LIMIT | TIF_GTC |
+
+ Then the iceberg orders should have the following states:
+ | party | market id | side | visible volume | price | status | reserved volume |
+ | party1 | ETH/DEC19 | buy | 10 | 10 | STATUS_ACTIVE | 84 |
+
+ #order margin: 10*94*0.15=141
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/DEC19 | 2 | 0 | 2 | 0 | isolated margin | 0.15 | 141 |
+
+ @iceberg
+ Scenario: 005 Iceberg order trading during auction uncrossing
+ # setup accounts
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | party1 | BTC | 10000 |
+ | party2 | BTC | 10000 |
+ | party3 | BTC | 10000 |
+ | aux | BTC | 100000 |
+ | lpprov | BTC | 90000000 |
+
+ And the parties submit the following liquidity provision:
+ | id | party | market id | commitment amount | fee | lp type |
+ | lp1 | lpprov | ETH/DEC19 | 90000000 | 0.1 | submission |
+ | lp1 | lpprov | ETH/DEC19 | 90000000 | 0.1 | submission |
+ And the parties place the following pegged iceberg orders:
+ | party | market id | peak size | minimum visible size | side | pegged reference | volume | offset |
+ | lpprov | ETH/DEC19 | 2 | 1 | buy | BID | 50 | 100 |
+ | lpprov | ETH/DEC19 | 2 | 1 | sell | ASK | 50 | 100 |
+
+ # place auxiliary orders so we always have best bid and best offer as to not trigger the liquidity auction
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | aux | ETH/DEC19 | buy | 1 | 1 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux | ETH/DEC19 | sell | 1 | 10001 | 0 | TYPE_LIMIT | TIF_GTC |
+
+ Given the parties place the following iceberg orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference | peak size | minimum visible size |
+ | party1 | ETH/DEC19 | buy | 10 | 2 | 0 | TYPE_LIMIT | TIF_GTC | this-order-1 | 2 | 1 |
+
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | party2 | ETH/DEC19 | buy | 8 | 2 | 0 | TYPE_LIMIT | TIF_GTC |
+ When the parties place the following iceberg orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference | peak size | minimum visible size |
+ | party3 | ETH/DEC19 | sell | 10 | 2 | 0 | TYPE_LIMIT | TIF_GTC | this-order-1 | 2 | 1 |
+
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/DEC19 | isolated margin | 0.15 | |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/DEC19 | 0 | 0 | 0 | 0 | isolated margin | 0.15 | 3 |
+ And the opening auction period ends for market "ETH/DEC19"
+ Then the trading mode should be "TRADING_MODE_CONTINUOUS" for the market "ETH/DEC19"
+ # Check only the display volume of party1 is filled and is refreshed at the back of the que
+ And the following trades should be executed:
+ | buyer | seller | price | size |
+ | party1 | party3 | 2 | 2 |
+ # Check the remaining volume of party3s iceberg is filled in a single trade with party2
+ And the following trades should be executed:
+ | buyer | seller | price | size |
+ | party2 | party3 | 2 | 8 |
+
+ @iceberg
+ @margin
+ Scenario: 006 Iceberg increase size success and not losing position in order book
+ # setup accounts
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | party1 | BTC | 10000 |
+ | party2 | BTC | 10000 |
+ | party3 | BTC | 10000 |
+ | aux | BTC | 100000 |
+ | aux2 | BTC | 100000 |
+ | lpprov | BTC | 90000000 |
+
+ When the parties submit the following liquidity provision:
+ | id | party | market id | commitment amount | fee | lp type |
+ | lp1 | lpprov | ETH/DEC19 | 90000000 | 0.1 | submission |
+ | lp1 | lpprov | ETH/DEC19 | 90000000 | 0.1 | submission |
+ And the parties place the following pegged iceberg orders:
+ | party | market id | peak size | minimum visible size | side | pegged reference | volume | offset |
+ | lpprov | ETH/DEC19 | 2 | 1 | buy | BID | 50 | 100 |
+ | lpprov | ETH/DEC19 | 2 | 1 | sell | ASK | 50 | 100 |
+ # place auxiliary orders so we always have best bid and best offer as to not trigger the liquidity auction
+ When the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | aux | ETH/DEC19 | buy | 1 | 1 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux | ETH/DEC19 | sell | 1 | 10001 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux2 | ETH/DEC19 | buy | 1 | 2 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux | ETH/DEC19 | sell | 1 | 2 | 0 | TYPE_LIMIT | TIF_GTC |
+ Then the opening auction period ends for market "ETH/DEC19"
+ And the trading mode should be "TRADING_MODE_CONTINUOUS" for the market "ETH/DEC19"
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/DEC19 | isolated margin | 0.15 | |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/DEC19 | 0 | 0 | 0 | 0 | isolated margin | 0.15 | 0 |
+
+ And the parties place the following iceberg orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference | peak size | minimum visible size |
+ | party1 | ETH/DEC19 | sell | 50 | 2 | 0 | TYPE_LIMIT | TIF_GTC | this-order-1 | 2 | 1 |
+ | party2 | ETH/DEC19 | sell | 5 | 2 | 0 | TYPE_LIMIT | TIF_GTC | this-order-2 | 2 | 1 |
+
+ And the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | party1 | BTC | ETH/DEC19 | 0 | 9985 | 15 |
+
+ # increasing size
+ Then the parties amend the following orders:
+ | party | reference | price | size delta | tif |
+ | party1 | this-order-1 | 2 | 50 | TIF_GTC |
+
+ # the visible is the same and only the reserve amount has increased
+ Then the iceberg orders should have the following states:
+ | party | market id | side | visible volume | price | status | reserved volume |
+ | party1 | ETH/DEC19 | sell | 2 | 2 | STATUS_ACTIVE | 98 |
+
+ And the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | party1 | BTC | ETH/DEC19 | 0 | 9970 | 30 |
+
+ # matching the order now
+ # this should match with the size 2 order of party1
+ Then the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | party3 | ETH/DEC19 | buy | 2 | 2 | 1 | TYPE_LIMIT | TIF_GTC | party3 |
+
+ Then the following trades should be executed:
+ | buyer | seller | price | size |
+ | party3 | party1 | 2 | 2 |
+
+ @iceberg
+ Scenario: 007 Iceberg decrease size success and not losing position in order book
+ # setup accounts
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | party1 | BTC | 10000 |
+ | party2 | BTC | 10000 |
+ | party3 | BTC | 10000 |
+ | aux | BTC | 100000 |
+ | aux2 | BTC | 100000 |
+ | lpprov | BTC | 90000000 |
+
+ When the parties submit the following liquidity provision:
+ | id | party | market id | commitment amount | fee | lp type |
+ | lp1 | lpprov | ETH/DEC19 | 90000000 | 0.1 | submission |
+ | lp1 | lpprov | ETH/DEC19 | 90000000 | 0.1 | submission |
+ And the parties place the following pegged iceberg orders:
+ | party | market id | peak size | minimum visible size | side | pegged reference | volume | offset |
+ | lpprov | ETH/DEC19 | 2 | 1 | buy | BID | 50 | 100 |
+ | lpprov | ETH/DEC19 | 2 | 1 | sell | ASK | 50 | 100 |
+ # place auxiliary orders so we always have best bid and best offer as to not trigger the liquidity auction
+
+ When the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | aux | ETH/DEC19 | buy | 1 | 1 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux | ETH/DEC19 | sell | 1 | 10001 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux2 | ETH/DEC19 | buy | 1 | 2 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux | ETH/DEC19 | sell | 1 | 2 | 0 | TYPE_LIMIT | TIF_GTC |
+
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/DEC19 | isolated margin | 0.15 | |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/DEC19 | 0 | 0 | 0 | 0 | isolated margin | 0.15 | 0 |
+
+ Then the opening auction period ends for market "ETH/DEC19"
+ And the trading mode should be "TRADING_MODE_CONTINUOUS" for the market "ETH/DEC19"
+
+ And the parties place the following iceberg orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference | peak size | minimum visible size |
+ | party1 | ETH/DEC19 | sell | 100 | 2 | 0 | TYPE_LIMIT | TIF_GTC | this-order-1 | 2 | 1 |
+ | party2 | ETH/DEC19 | sell | 100 | 2 | 0 | TYPE_LIMIT | TIF_GTC | this-order-2 | 2 | 1 |
+
+ And the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | party1 | BTC | ETH/DEC19 | 0 | 9970 | 30 |
+
+ # decreasing size
+ Then the parties amend the following orders:
+ | party | reference | price | size delta | tif |
+ | party1 | this-order-1 | 2 | -50 | TIF_GTC |
+
+ # the visible is the same and only the reserve amount has decreased
+ Then the iceberg orders should have the following states:
+ | party | market id | side | visible volume | price | status | reserved volume |
+ | party1 | ETH/DEC19 | sell | 2 | 2 | STATUS_ACTIVE | 48 |
+
+ And the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | party1 | BTC | ETH/DEC19 | 0 | 9985 | 15 |
+
+ # matching the order now
+ # this should match with the size 2 order of party1
+ Then the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | party3 | ETH/DEC19 | buy | 2 | 2 | 1 | TYPE_LIMIT | TIF_GTC | party3 |
+
+ Then the following trades should be executed:
+ | buyer | seller | price | size |
+ | party3 | party1 | 2 | 2 |
+
+ @iceberg
+ Scenario: 008 Iceberg amend price reenters aggressively
+ # setup accounts
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | party1 | BTC | 10000 |
+ | party2 | BTC | 10000 |
+ | aux | BTC | 100000 |
+ | aux2 | BTC | 100000 |
+ | lpprov | BTC | 90000000 |
+
+ When the parties submit the following liquidity provision:
+ | id | party | market id | commitment amount | fee | lp type |
+ | lp1 | lpprov | ETH/DEC19 | 90000000 | 0.1 | submission |
+ | lp1 | lpprov | ETH/DEC19 | 90000000 | 0.1 | submission |
+ And the parties place the following pegged iceberg orders:
+ | party | market id | peak size | minimum visible size | side | pegged reference | volume | offset |
+ | lpprov | ETH/DEC19 | 2 | 1 | buy | BID | 50 | 100 |
+ | lpprov | ETH/DEC19 | 2 | 1 | sell | ASK | 50 | 100 |
+ # place auxiliary orders so we always have best bid and best offer as to not trigger the liquidity auction
+ When the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | aux | ETH/DEC19 | buy | 1 | 1 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux | ETH/DEC19 | sell | 1 | 10001 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux2 | ETH/DEC19 | buy | 1 | 2 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux | ETH/DEC19 | sell | 1 | 2 | 0 | TYPE_LIMIT | TIF_GTC |
+ Then the opening auction period ends for market "ETH/DEC19"
+ And the trading mode should be "TRADING_MODE_CONTINUOUS" for the market "ETH/DEC19"
+
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/DEC19 | isolated margin | 0.15 | |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/DEC19 | 0 | 0 | 0 | 0 | isolated margin | 0.15 | 0 |
+ And the parties place the following iceberg orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference | peak size | minimum visible size |
+ | party1 | ETH/DEC19 | sell | 16 | 5 | 0 | TYPE_LIMIT | TIF_GTC | this-order-1 | 5 | 1 |
+ | party2 | ETH/DEC19 | buy | 10 | 2 | 0 | TYPE_LIMIT | TIF_GTC | this-order-2 | 2 | 1 |
+
+ # amend the buy order so that it will cross with the other iceberg
+ Then the parties amend the following orders:
+ | party | reference | price | size delta | tif |
+ | party2 | this-order-2 | 5 | 0 | TIF_GTC |
+
+ # the amended iceberg will trade aggressively and be fully consumed
+ Then the iceberg orders should have the following states:
+ | party | market id | side | visible volume | price | status | reserved volume |
+ | party1 | ETH/DEC19 | sell | 5 | 5 | STATUS_ACTIVE | 1 |
+ | party2 | ETH/DEC19 | buy | 0 | 5 | STATUS_FILLED | 0 |
+
+ @margin
+ @iceberg
+ Scenario: 009 Cancelling an active iceberg order
+ # setup accounts
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | party1 | BTC | 10000 |
+ | aux | BTC | 100000 |
+ | aux2 | BTC | 100000 |
+ | lpprov | BTC | 90000000 |
+
+ When the parties submit the following liquidity provision:
+ | id | party | market id | commitment amount | fee | lp type |
+ | lp1 | lpprov | ETH/DEC19 | 90000000 | 0.1 | submission |
+ | lp1 | lpprov | ETH/DEC19 | 90000000 | 0.1 | submission |
+ And the parties place the following pegged iceberg orders:
+ | party | market id | peak size | minimum visible size | side | pegged reference | volume | offset |
+ | lpprov | ETH/DEC19 | 2 | 1 | buy | BID | 50 | 100 |
+ | lpprov | ETH/DEC19 | 2 | 1 | sell | ASK | 50 | 100 |
+ # place auxiliary orders so we always have best bid and best offer as to not trigger the liquidity auction
+ When the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | aux | ETH/DEC19 | buy | 1 | 1 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux | ETH/DEC19 | sell | 1 | 10001 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux2 | ETH/DEC19 | buy | 1 | 2 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux | ETH/DEC19 | sell | 1 | 2 | 0 | TYPE_LIMIT | TIF_GTC |
+ Then the opening auction period ends for market "ETH/DEC19"
+ And the trading mode should be "TRADING_MODE_CONTINUOUS" for the market "ETH/DEC19"
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/DEC19 | isolated margin | 0.15 | |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/DEC19 | 0 | 0 | 0 | 0 | isolated margin | 0.15 | 0 |
+
+ Given the parties place the following iceberg orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | peak size | minimum visible size | reference |
+ | party1 | ETH/DEC19 | buy | 100 | 5 | 0 | TYPE_LIMIT | TIF_GTC | 2 | 1 | iceberg |
+ And the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | party1 | BTC | ETH/DEC19 | 0 | 9925 | 75 |
+ And the order book should have the following volumes for market "ETH/DEC19":
+ | side | price | volume |
+ | buy | 5 | 2 |
+ When the parties cancel the following orders:
+ | party | reference |
+ | party1 | iceberg |
+ # The order should be cancelled
+ Then the iceberg orders should have the following states:
+ | party | market id | side | visible volume | price | status | reserved volume | reference |
+ | party1 | ETH/DEC19 | buy | 2 | 5 | STATUS_CANCELLED | 98 | iceberg |
+ # The margin released
+ And the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | party1 | BTC | ETH/DEC19 | 0 | 10000 | 0 |
+ # And the order book updated
+ And the order book should have the following volumes for market "ETH/DEC19":
+ | side | price | volume |
+ | buy | 5 | 0 |
+
+ @iceberg
+ Scenario: 010 An aggressive iceberg order crosses an order with volume > iceberg volume
+ # setup accounts
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | party1 | BTC | 10000000000 |
+ | party2 | BTC | 10000 |
+ | aux | BTC | 100000 |
+ | aux2 | BTC | 100000 |
+ | lpprov | BTC | 90000000 |
+
+ When the parties submit the following liquidity provision:
+ | id | party | market id | commitment amount | fee | lp type |
+ | lp1 | lpprov | ETH/DEC19 | 90000000 | 0.1 | submission |
+ | lp1 | lpprov | ETH/DEC19 | 90000000 | 0.1 | submission |
+ And the parties place the following pegged iceberg orders:
+ | party | market id | peak size | minimum visible size | side | pegged reference | volume | offset | reference |
+ | lpprov | ETH/DEC19 | 2 | 1 | buy | BID | 50 | 100 | p-1 |
+ | lpprov | ETH/DEC19 | 2 | 1 | sell | ASK | 50 | 100 | p-2 |
+ # place auxiliary orders so we always have best bid and best offer as to not trigger the liquidity auction
+ When the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | aux | ETH/DEC19 | buy | 20 | 1 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux | ETH/DEC19 | sell | 1 | 10001 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux2 | ETH/DEC19 | buy | 1 | 2 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux | ETH/DEC19 | sell | 1 | 2 | 0 | TYPE_LIMIT | TIF_GTC |
+ Then the opening auction period ends for market "ETH/DEC19"
+ And the trading mode should be "TRADING_MODE_CONTINUOUS" for the market "ETH/DEC19"
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/DEC19 | isolated margin | 0.15 | |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/DEC19 | 0 | 0 | 0 | 0 | isolated margin | 0.15 | 0 |
+
+ When the network moves ahead "1" blocks
+ And the orders should have the following status:
+ | party | reference | status |
+ | lpprov | p-1 | STATUS_PARKED |
+ | lpprov | p-2 | STATUS_ACTIVE |
+
+ Given the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | party2 | ETH/DEC19 | sell | 15 | 5 | 0 | TYPE_LIMIT | TIF_GTC |
+
+ Then the order book should have the following volumes for market "ETH/DEC19":
+ | side | price | volume |
+ | sell | 105 | 2 |
+ | sell | 5 | 15 |
+
+ #requried position margin: 10*5*0.15 = 7.5
+ #maintenance margin: 10*min(5, 2*1e6)+10*0.1*2=52
+ When the parties place the following iceberg orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | peak size | minimum visible size | error |
+ | party1 | ETH/DEC19 | buy | 10 | 5 | 1 | TYPE_LIMIT | TIF_GTC | 2 | 1 | margin check failed |
+
+ And the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | party1 | BTC | ETH/DEC19 | 0 | 9999999995 | 0 |
+
+ @iceberg
+ Scenario: 011 An aggressive iceberg order crosses an order with volume < iceberg volume
+ # setup accounts
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | party1 | BTC | 10000 |
+ | party2 | BTC | 10000 |
+ | aux | BTC | 100000 |
+ | aux2 | BTC | 100000 |
+ | lpprov | BTC | 90000000 |
+
+ When the parties submit the following liquidity provision:
+ | id | party | market id | commitment amount | fee | lp type |
+ | lp1 | lpprov | ETH/DEC19 | 90000000 | 0.1 | submission |
+ | lp1 | lpprov | ETH/DEC19 | 90000000 | 0.1 | submission |
+ And the parties place the following pegged iceberg orders:
+ | party | market id | peak size | minimum visible size | side | pegged reference | volume | offset |
+ | lpprov | ETH/DEC19 | 2 | 1 | buy | BID | 50 | 100 |
+ | lpprov | ETH/DEC19 | 2 | 1 | sell | ASK | 50 | 100 |
+ # place auxiliary orders so we always have best bid and best offer as to not trigger the liquidity auction
+ When the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | aux | ETH/DEC19 | buy | 1 | 1 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux | ETH/DEC19 | sell | 1 | 10001 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux2 | ETH/DEC19 | buy | 1 | 2 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux | ETH/DEC19 | sell | 1 | 2 | 0 | TYPE_LIMIT | TIF_GTC |
+ Then the opening auction period ends for market "ETH/DEC19"
+ And the trading mode should be "TRADING_MODE_CONTINUOUS" for the market "ETH/DEC19"
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/DEC19 | isolated margin | 0.15 | |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/DEC19 | 0 | 0 | 0 | 0 | isolated margin | 0.15 | 0 |
+
+ Given the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | party2 | ETH/DEC19 | sell | 10 | 5 | 0 | TYPE_LIMIT | TIF_GTC |
+ When the parties place the following iceberg orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | peak size | minimum visible size | error |
+ | party1 | ETH/DEC19 | buy | 15 | 5 | 1 | TYPE_LIMIT | TIF_GTC | 2 | 1 | margin check failed |
+
+ @iceberg
+ Scenario: 012 A passive iceberg order (the only order at the price level) crosses an order with volume > iceberg volume
+ # setup accounts
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | party1 | BTC | 10000 |
+ | party2 | BTC | 10000 |
+ | aux | BTC | 100000 |
+ | aux2 | BTC | 100000 |
+ | lpprov | BTC | 90000000 |
+
+ When the parties submit the following liquidity provision:
+ | id | party | market id | commitment amount | fee | lp type |
+ | lp1 | lpprov | ETH/DEC19 | 90000000 | 0.1 | submission |
+ | lp1 | lpprov | ETH/DEC19 | 90000000 | 0.1 | submission |
+ And the parties place the following pegged iceberg orders:
+ | party | market id | peak size | minimum visible size | side | pegged reference | volume | offset |
+ | lpprov | ETH/DEC19 | 2 | 1 | buy | BID | 50 | 100 |
+ | lpprov | ETH/DEC19 | 2 | 1 | sell | ASK | 50 | 100 |
+ # place auxiliary orders so we always have best bid and best offer as to not trigger the liquidity auction
+ When the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | aux | ETH/DEC19 | buy | 1 | 1 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux | ETH/DEC19 | sell | 1 | 10001 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux2 | ETH/DEC19 | buy | 1 | 2 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux | ETH/DEC19 | sell | 1 | 2 | 0 | TYPE_LIMIT | TIF_GTC |
+ Then the opening auction period ends for market "ETH/DEC19"
+ And the trading mode should be "TRADING_MODE_CONTINUOUS" for the market "ETH/DEC19"
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/DEC19 | isolated margin | 0.15 | |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/DEC19 | 0 | 0 | 0 | 0 | isolated margin | 0.15 | 0 |
+
+ Given the parties place the following iceberg orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | peak size | minimum visible size |
+ | party1 | ETH/DEC19 | buy | 10 | 5 | 0 | TYPE_LIMIT | TIF_GTC | 2 | 1 |
+ When the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | party2 | ETH/DEC19 | sell | 15 | 5 | 1 | TYPE_LIMIT | TIF_GTC |
+ Then the following trades should be executed:
+ | buyer | seller | price | size |
+ | party1 | party2 | 5 | 10 |
+ And the iceberg orders should have the following states:
+ | party | market id | side | visible volume | price | status | reserved volume |
+ | party1 | ETH/DEC19 | buy | 0 | 5 | STATUS_FILLED | 0 |
+
+ @iceberg
+ Scenario: 013 A passive iceberg order (one of multiple orders at the price level) crosses an order with volume > iceberg volume
+ # setup accounts
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | party1 | BTC | 10000 |
+ | party2 | BTC | 10000 |
+ | party3 | BTC | 10000 |
+ | party4 | BTC | 10000 |
+ | aux | BTC | 100000 |
+ | aux2 | BTC | 100000 |
+ | lpprov | BTC | 90000000 |
+
+ When the parties submit the following liquidity provision:
+ | id | party | market id | commitment amount | fee | lp type |
+ | lp1 | lpprov | ETH/DEC19 | 90000000 | 0.1 | submission |
+ | lp1 | lpprov | ETH/DEC19 | 90000000 | 0.1 | submission |
+
+ And the parties place the following pegged iceberg orders:
+ | party | market id | peak size | minimum visible size | side | pegged reference | volume | offset |
+ | lpprov | ETH/DEC19 | 2 | 1 | buy | BID | 50 | 100 |
+ | lpprov | ETH/DEC19 | 2 | 1 | sell | ASK | 50 | 100 |
+ # place auxiliary orders so we always have best bid and best offer as to not trigger the liquidity auction
+ When the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | aux | ETH/DEC19 | buy | 1 | 1 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux | ETH/DEC19 | sell | 1 | 10001 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux2 | ETH/DEC19 | buy | 1 | 2 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux | ETH/DEC19 | sell | 1 | 2 | 0 | TYPE_LIMIT | TIF_GTC |
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/DEC19 | isolated margin | 0.15 | |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/DEC19 | 0 | 0 | 0 | 0 | isolated margin | 0.15 | 0 |
+ Then the opening auction period ends for market "ETH/DEC19"
+ And the trading mode should be "TRADING_MODE_CONTINUOUS" for the market "ETH/DEC19"
+
+ Given the parties place the following iceberg orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | peak size | minimum visible size |
+ | party1 | ETH/DEC19 | buy | 10 | 5 | 0 | TYPE_LIMIT | TIF_GTC | 2 | 1 |
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | party2 | ETH/DEC19 | buy | 7 | 5 | 0 | TYPE_LIMIT | TIF_GTC |
+ | party3 | ETH/DEC19 | buy | 7 | 5 | 0 | TYPE_LIMIT | TIF_GTC |
+ When the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | party4 | ETH/DEC19 | sell | 15 | 5 | 3 | TYPE_LIMIT | TIF_GTC |
+ Then the following trades should be executed:
+ | buyer | seller | price | size |
+ | party1 | party4 | 5 | 2 |
+ | party2 | party4 | 5 | 7 |
+ | party3 | party4 | 5 | 6 |
+ And the iceberg orders should have the following states:
+ | party | market id | side | visible volume | price | status | reserved volume |
+ | party1 | ETH/DEC19 | buy | 2 | 5 | STATUS_ACTIVE | 6 |
+
+ @iceberg
+ Scenario: 014 An aggressive iceberg order crosses orders where the cumulative volume > iceberg volume
+ # setup accounts
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | party1 | BTC | 10000 |
+ | party2 | BTC | 10000 |
+ | party3 | BTC | 10000 |
+ | party4 | BTC | 10000 |
+ | aux | BTC | 100000 |
+ | aux2 | BTC | 100000 |
+ | lpprov | BTC | 90000000 |
+
+ When the parties submit the following liquidity provision:
+ | id | party | market id | commitment amount | fee | lp type |
+ | lp1 | lpprov | ETH/DEC19 | 90000000 | 0.1 | submission |
+ | lp1 | lpprov | ETH/DEC19 | 90000000 | 0.1 | submission |
+
+ And the parties place the following pegged iceberg orders:
+ | party | market id | peak size | minimum visible size | side | pegged reference | volume | offset |
+ | lpprov | ETH/DEC19 | 2 | 1 | buy | BID | 50 | 100 |
+ | lpprov | ETH/DEC19 | 2 | 1 | sell | ASK | 50 | 100 |
+ # place auxiliary orders so we always have best bid and best offer as to not trigger the liquidity auction
+ When the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | aux | ETH/DEC19 | buy | 1 | 1 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux | ETH/DEC19 | sell | 1 | 10001 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux2 | ETH/DEC19 | buy | 1 | 2 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux | ETH/DEC19 | sell | 1 | 2 | 0 | TYPE_LIMIT | TIF_GTC |
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/DEC19 | isolated margin | 0.15 | |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/DEC19 | 0 | 0 | 0 | 0 | isolated margin | 0.15 | 0 |
+ Then the opening auction period ends for market "ETH/DEC19"
+ And the trading mode should be "TRADING_MODE_CONTINUOUS" for the market "ETH/DEC19"
+
+ Given the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | party2 | ETH/DEC19 | sell | 30 | 5 | 0 | TYPE_LIMIT | TIF_GTC |
+ | party3 | ETH/DEC19 | sell | 40 | 5 | 0 | TYPE_LIMIT | TIF_GTC |
+ | party4 | ETH/DEC19 | sell | 50 | 5 | 0 | TYPE_LIMIT | TIF_GTC |
+ When the parties place the following iceberg orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | peak size | minimum visible size | error |
+ | party1 | ETH/DEC19 | buy | 100 | 5 | 3 | TYPE_LIMIT | TIF_GTC | 2 | 1 | margin check failed |
+
+ @iceberg
+ Scenario: 015 An aggressive iceberg order crosses orders where the cumulative volume < iceberg volume
+ # setup accounts
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | party1 | BTC | 10000 |
+ | party2 | BTC | 10000 |
+ | party3 | BTC | 10000 |
+ | party4 | BTC | 10000 |
+ | aux | BTC | 100000 |
+ | aux2 | BTC | 100000 |
+ | lpprov | BTC | 90000000 |
+
+ When the parties submit the following liquidity provision:
+ | id | party | market id | commitment amount | fee | lp type |
+ | lp1 | lpprov | ETH/DEC19 | 90000000 | 0.1 | submission |
+ | lp1 | lpprov | ETH/DEC19 | 90000000 | 0.1 | submission |
+ And the parties place the following pegged iceberg orders:
+ | party | market id | peak size | minimum visible size | side | pegged reference | volume | offset |
+ | lpprov | ETH/DEC19 | 2 | 1 | buy | BID | 50 | 100 |
+ | lpprov | ETH/DEC19 | 2 | 1 | sell | ASK | 50 | 100 |
+ # place auxiliary orders so we always have best bid and best offer as to not trigger the liquidity auction
+ When the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | aux | ETH/DEC19 | buy | 1 | 1 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux | ETH/DEC19 | sell | 1 | 10001 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux2 | ETH/DEC19 | buy | 1 | 2 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux | ETH/DEC19 | sell | 1 | 2 | 0 | TYPE_LIMIT | TIF_GTC |
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/DEC19 | isolated margin | 0.15 | |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/DEC19 | 0 | 0 | 0 | 0 | isolated margin | 0.15 | 0 |
+ Then the opening auction period ends for market "ETH/DEC19"
+ And the trading mode should be "TRADING_MODE_CONTINUOUS" for the market "ETH/DEC19"
+
+ Given the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | party2 | ETH/DEC19 | sell | 30 | 5 | 0 | TYPE_LIMIT | TIF_GTC |
+ | party3 | ETH/DEC19 | sell | 40 | 5 | 0 | TYPE_LIMIT | TIF_GTC |
+ When the parties place the following iceberg orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | peak size | minimum visible size | error |
+ | party1 | ETH/DEC19 | buy | 100 | 5 | 2 | TYPE_LIMIT | TIF_GTC | 2 | 1 | margin check failed |
+
+ @iceberg
+ Scenario: 016 Amended order trades with iceberg order triggering a refresh
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | party1 | BTC | 10000 |
+ | party2 | BTC | 10000 |
+ | party3 | BTC | 10000 |
+ | party4 | BTC | 10000 |
+ | aux | BTC | 100000 |
+ | aux2 | BTC | 100000 |
+ | lpprov | BTC | 90000000 |
+
+ When the parties submit the following liquidity provision:
+ | id | party | market id | commitment amount | fee | lp type |
+ | lp1 | lpprov | ETH/DEC19 | 90000000 | 0.1 | submission |
+ | lp1 | lpprov | ETH/DEC19 | 90000000 | 0.1 | submission |
+ And the parties place the following pegged iceberg orders:
+ | party | market id | peak size | minimum visible size | side | pegged reference | volume | offset |
+ | lpprov | ETH/DEC19 | 2 | 1 | buy | BID | 50 | 100 |
+ | lpprov | ETH/DEC19 | 2 | 1 | sell | ASK | 50 | 100 |
+ # place auxiliary orders so we always have best bid and best offer as to not trigger the liquidity auction
+ When the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | aux | ETH/DEC19 | buy | 1 | 1 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux | ETH/DEC19 | sell | 1 | 10001 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux2 | ETH/DEC19 | buy | 1 | 2 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux | ETH/DEC19 | sell | 1 | 2 | 0 | TYPE_LIMIT | TIF_GTC |
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/DEC19 | isolated margin | 0.15 | |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/DEC19 | 0 | 0 | 0 | 0 | isolated margin | 0.15 | 0 |
+ Then the opening auction period ends for market "ETH/DEC19"
+ And the trading mode should be "TRADING_MODE_CONTINUOUS" for the market "ETH/DEC19"
+
+ Given the parties place the following iceberg orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | peak size | minimum visible size |
+ | party1 | ETH/DEC19 | sell | 10 | 5 | 0 | TYPE_LIMIT | TIF_GTC | 2 | 1 |
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | party2 | ETH/DEC19 | buy | 7 | 4 | 0 | TYPE_LIMIT | TIF_GTC | order-to-amend |
+ | party3 | ETH/DEC19 | sell | 5 | 5 | 0 | TYPE_LIMIT | TIF_GTC | |
+ When the parties amend the following orders:
+ | party | reference | price | size delta | tif |
+ | party2 | order-to-amend | 5 | 0 | TIF_GTC |
+ Then the following trades should be executed:
+ | buyer | seller | price | size |
+ | party2 | party1 | 5 | 2 |
+ | party2 | party3 | 5 | 5 |
+ And the iceberg orders should have the following states:
+ | party | market id | side | visible volume | price | status | reserved volume |
+ | party1 | ETH/DEC19 | sell | 2 | 5 | STATUS_ACTIVE | 6 |
+
+ @iceberg
+ Scenario: 017 Attempting to wash trade with iceberg orders
+ # setup accounts
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | party1 | BTC | 10000 |
+ | party2 | BTC | 10000 |
+ | party3 | BTC | 10000 |
+ | party4 | BTC | 10000 |
+ | aux | BTC | 100000 |
+ | aux2 | BTC | 100000 |
+ | lpprov | BTC | 90000000 |
+
+ When the parties submit the following liquidity provision:
+ | id | party | market id | commitment amount | fee | lp type |
+ | lp1 | lpprov | ETH/DEC19 | 90000000 | 0.1 | submission |
+ | lp1 | lpprov | ETH/DEC19 | 90000000 | 0.1 | submission |
+
+ And the parties place the following pegged iceberg orders:
+ | party | market id | peak size | minimum visible size | side | pegged reference | volume | offset |
+ | lpprov | ETH/DEC19 | 2 | 1 | buy | BID | 50 | 100 |
+ | lpprov | ETH/DEC19 | 2 | 1 | sell | ASK | 50 | 100 |
+ # place auxiliary orders so we always have best bid and best offer as to not trigger the liquidity auction
+ When the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | aux | ETH/DEC19 | buy | 1 | 1 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux | ETH/DEC19 | sell | 1 | 10001 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux2 | ETH/DEC19 | buy | 1 | 2 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux | ETH/DEC19 | sell | 1 | 2 | 0 | TYPE_LIMIT | TIF_GTC |
+
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/DEC19 | isolated margin | 0.15 | |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/DEC19 | 0 | 0 | 0 | 0 | isolated margin | 0.15 | 0 |
+ Then the opening auction period ends for market "ETH/DEC19"
+ And the trading mode should be "TRADING_MODE_CONTINUOUS" for the market "ETH/DEC19"
+
+ Given the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | party2 | ETH/DEC19 | sell | 5 | 5 | 0 | TYPE_LIMIT | TIF_GTC |
+ | party3 | ETH/DEC19 | sell | 5 | 5 | 0 | TYPE_LIMIT | TIF_GTC |
+ And the parties place the following iceberg orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | peak size | minimum visible size | reference |
+ | party1 | ETH/DEC19 | sell | 5 | 5 | 0 | TYPE_LIMIT | TIF_GTC | 2 | 1 | iceberg |
+ When the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference | error |
+ | party1 | ETH/DEC19 | buy | 20 | 5 | 0 | TYPE_LIMIT | TIF_GTC | normal | margin check failed |
+
+ And the iceberg orders should have the following states:
+ | party | market id | reference | side | visible volume | price | status | reserved volume |
+ | party1 | ETH/DEC19 | iceberg | sell | 2 | 5 | STATUS_ACTIVE | 3 |
+
+ @iceberg
+ Scenario: 018 An order matches multiple icebergs at the same level where the order volume < cumulative iceberg display volume
+ # setup accounts
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | party1 | BTC | 10000 |
+ | party2 | BTC | 10000 |
+ | party3 | BTC | 10000 |
+ | party4 | BTC | 10000 |
+ | aux | BTC | 100000 |
+ | aux2 | BTC | 100000 |
+ | lpprov | BTC | 90000000 |
+
+ When the parties submit the following liquidity provision:
+ | id | party | market id | commitment amount | fee | lp type |
+ | lp1 | lpprov | ETH/DEC19 | 90000000 | 0.1 | submission |
+ | lp1 | lpprov | ETH/DEC19 | 90000000 | 0.1 | submission |
+
+ And the parties place the following pegged iceberg orders:
+ | party | market id | peak size | minimum visible size | side | pegged reference | volume | offset |
+ | lpprov | ETH/DEC19 | 2 | 1 | buy | BID | 50 | 100 |
+ | lpprov | ETH/DEC19 | 2 | 1 | sell | ASK | 50 | 100 |
+ # place auxiliary orders so we always have best bid and best offer as to not trigger the liquidity auction
+ When the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | aux | ETH/DEC19 | buy | 1 | 1 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux | ETH/DEC19 | sell | 1 | 10001 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux2 | ETH/DEC19 | buy | 1 | 2 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux | ETH/DEC19 | sell | 1 | 2 | 0 | TYPE_LIMIT | TIF_GTC |
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/DEC19 | isolated margin | 0.15 | |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/DEC19 | 0 | 0 | 0 | 0 | isolated margin | 0.15 | 0 |
+ Then the opening auction period ends for market "ETH/DEC19"
+ And the trading mode should be "TRADING_MODE_CONTINUOUS" for the market "ETH/DEC19"
+
+ Given the parties place the following iceberg orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | peak size | minimum visible size | reference |
+ | party1 | ETH/DEC19 | sell | 200 | 5 | 0 | TYPE_LIMIT | TIF_GTC | 2 | 1 | iceberg |
+ | party2 | ETH/DEC19 | sell | 100 | 5 | 0 | TYPE_LIMIT | TIF_GTC | 2 | 1 | iceberg |
+ | party3 | ETH/DEC19 | sell | 100 | 5 | 0 | TYPE_LIMIT | TIF_GTC | 2 | 1 | iceberg |
+ When the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | party4 | ETH/DEC19 | buy | 300 | 5 | 3 | TYPE_LIMIT | TIF_GTC |
+ Then the following trades should be executed:
+ | buyer | seller | price | size |
+ | party4 | party1 | 5 | 150 |
+ | party4 | party2 | 5 | 75 |
+ | party4 | party3 | 5 | 75 |
+ And the iceberg orders should have the following states:
+ | party | market id | side | visible volume | price | status | reserved volume |
+ | party1 | ETH/DEC19 | sell | 2 | 5 | STATUS_ACTIVE | 48 |
+ | party2 | ETH/DEC19 | sell | 2 | 5 | STATUS_ACTIVE | 23 |
+ | party3 | ETH/DEC19 | sell | 2 | 5 | STATUS_ACTIVE | 23 |
+
+ @iceberg
+ Scenario: 019 An order matches multiple icebergs at the same level where the order volume > cumulative iceberg display volume
+ # setup accounts
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | party1 | BTC | 10000 |
+ | party2 | BTC | 10000 |
+ | party3 | BTC | 10000 |
+ | party4 | BTC | 10000 |
+ | aux | BTC | 100000 |
+ | aux2 | BTC | 100000 |
+ | lpprov | BTC | 90000000 |
+
+ When the parties submit the following liquidity provision:
+ | id | party | market id | commitment amount | fee | lp type |
+ | lp1 | lpprov | ETH/DEC19 | 90000000 | 0.1 | submission |
+ | lp1 | lpprov | ETH/DEC19 | 90000000 | 0.1 | submission |
+
+ And the parties place the following pegged iceberg orders:
+ | party | market id | peak size | minimum visible size | side | pegged reference | volume | offset |
+ | lpprov | ETH/DEC19 | 2 | 1 | buy | BID | 50 | 100 |
+ | lpprov | ETH/DEC19 | 2 | 1 | sell | ASK | 50 | 100 |
+ # place auxiliary orders so we always have best bid and best offer as to not trigger the liquidity auction
+ When the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | aux | ETH/DEC19 | buy | 1 | 1 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux | ETH/DEC19 | sell | 1 | 10001 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux2 | ETH/DEC19 | buy | 1 | 2 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux | ETH/DEC19 | sell | 1 | 2 | 0 | TYPE_LIMIT | TIF_GTC |
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/DEC19 | isolated margin | 0.15 | |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/DEC19 | 0 | 0 | 0 | 0 | isolated margin | 0.15 | 0 |
+ Then the opening auction period ends for market "ETH/DEC19"
+ And the trading mode should be "TRADING_MODE_CONTINUOUS" for the market "ETH/DEC19"
+
+ Given the parties place the following iceberg orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | peak size | minimum visible size | reference |
+ | party1 | ETH/DEC19 | sell | 200 | 5 | 0 | TYPE_LIMIT | TIF_GTC | 2 | 1 | iceberg |
+ | party2 | ETH/DEC19 | sell | 100 | 5 | 0 | TYPE_LIMIT | TIF_GTC | 2 | 1 | iceberg |
+ | party3 | ETH/DEC19 | sell | 100 | 5 | 0 | TYPE_LIMIT | TIF_GTC | 2 | 1 | iceberg |
+ When the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | party4 | ETH/DEC19 | buy | 600 | 5 | 3 | TYPE_LIMIT | TIF_GTC |
+ Then the following trades should be executed:
+ | buyer | seller | price | size |
+ | party4 | party1 | 5 | 200 |
+ | party4 | party2 | 5 | 100 |
+ | party4 | party3 | 5 | 100 |
+
+ @iceberg
+ Scenario: 020 Pegged orders are not re-priced as price-levels are consumed
+ # setup accounts
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | party1 | BTC | 10000 |
+ | party2 | BTC | 10000 |
+ | party3 | BTC | 10000 |
+ | aux | BTC | 100000 |
+ | aux2 | BTC | 100000 |
+ | lpprov | BTC | 90000000 |
+
+ When the parties submit the following liquidity provision:
+ | id | party | market id | commitment amount | fee | lp type |
+ | lp1 | lpprov | ETH/DEC19 | 90000000 | 0.1 | submission |
+ | lp1 | lpprov | ETH/DEC19 | 90000000 | 0.1 | submission |
+
+ And the parties place the following pegged iceberg orders:
+ | party | market id | peak size | minimum visible size | side | pegged reference | volume | offset |
+ | lpprov | ETH/DEC19 | 2 | 1 | buy | BID | 50 | 100 |
+ | lpprov | ETH/DEC19 | 2 | 1 | sell | ASK | 50 | 100 |
+ # place auxiliary orders so we always have best bid and best offer as to not trigger the liquidity auction
+ When the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | aux | ETH/DEC19 | buy | 1 | 1 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux | ETH/DEC19 | sell | 1 | 10001 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux2 | ETH/DEC19 | buy | 1 | 2 | 0 | TYPE_LIMIT | TIF_GTC |
+ | aux | ETH/DEC19 | sell | 1 | 2 | 0 | TYPE_LIMIT | TIF_GTC |
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/DEC19 | isolated margin | 0.15 | |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/DEC19 | 0 | 0 | 0 | 0 | isolated margin | 0.15 | 0 |
+ Then the opening auction period ends for market "ETH/DEC19"
+ And the trading mode should be "TRADING_MODE_CONTINUOUS" for the market "ETH/DEC19"
+
+ Given the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | party2 | ETH/DEC19 | buy | 10 | 5 | 0 | TYPE_LIMIT | TIF_GTC |
+ | party2 | ETH/DEC19 | buy | 1 | 10 | 0 | TYPE_LIMIT | TIF_GTC |
+ | party2 | ETH/DEC19 | sell | 1 | 20 | 0 | TYPE_LIMIT | TIF_GTC |
+ | party2 | ETH/DEC19 | sell | 10 | 25 | 0 | TYPE_LIMIT | TIF_GTC |
+ And the parties place the following pegged iceberg orders:
+ | party | market id | side | volume | resulting trades | type | tif | peak size | minimum visible size | pegged reference | offset | error |
+ | party1 | ETH/DEC19 | buy | 10 | 0 | TYPE_LIMIT | TIF_GTC | 2 | 1 | BID | 1 | invalid OrderError |
+ And the parties place the following pegged orders:
+ | party | market id | side | volume | pegged reference | offset | error |
+ | party1 | ETH/DEC19 | buy | 1 | BID | 2 | invalid OrderError |
+ When the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | party3 | ETH/DEC19 | sell | 12 | 8 | 1 | TYPE_LIMIT | TIF_GTC |
+ # Check pegged ordinary and iceberg orders are not re-priced as the best-bid price-level is consumed
+ Then the following trades should be executed:
+ | buyer | seller | price | size |
+ | party2 | party3 | 10 | 1 |
+
diff --git a/core/integration/features/margin/0019-MCAL-068.feature b/core/integration/features/margin/0019-MCAL-068.feature
new file mode 100644
index 0000000000..c449be527b
--- /dev/null
+++ b/core/integration/features/margin/0019-MCAL-068.feature
@@ -0,0 +1,164 @@
+Feature: Test order amendment which lead to cancellation of all orders and fund returned to the genral account, and active positions shoule be untouched and active
+ Background:
+ # Set liquidity parameters to allow "zero" target-stake which is needed to construct the order-book defined in the ACs
+ Given the following network parameters are set:
+ | name | value |
+ | network.markPriceUpdateMaximumFrequency | 0s |
+ And the liquidity monitoring parameters:
+ | name | triggering ratio | time window | scaling factor |
+ | lqm-params | 0.00 | 24h | 1e-9 |
+ And the simple risk model named "simple-risk-model":
+ | long | short | max move up | min move down | probability of trading |
+ | 0.1 | 0.1 | 100 | -100 | 0.2 |
+ And the markets:
+ | id | quote name | asset | liquidity monitoring | risk model | margin calculator | auction duration | fees | price monitoring | data source config | linear slippage factor | quadratic slippage factor | sla params |
+ | ETH/FEB23 | ETH | USD | lqm-params | simple-risk-model | default-margin-calculator | 1 | default-none | default-none | default-eth-for-future | 0.25 | 0 | default-futures |
+
+ Scenario: 001 when party has open position, check margin and general account when mark price increases and MTM, then closeout (0019-MCAL-070)
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | buySideProvider | USD | 100000000000 |
+ | sellSideProvider | USD | 100000000000 |
+ | party1 | USD | 275500 |
+
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | buySideProvider | ETH/FEB23 | buy | 10 | 14900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | buySideProvider | ETH/FEB23 | buy | 6 | 15800 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | buySideProvider | ETH/FEB23 | buy | 10 | 15900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | party1 | ETH/FEB23 | sell | 10 | 15900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | party1 | ETH/FEB23 | sell | 2 | 49920 | 0 | TYPE_LIMIT | TIF_GTC | sell-1 |
+ | party1 | ETH/FEB23 | sell | 4 | 49940 | 0 | TYPE_LIMIT | TIF_GTC | sell-2 |
+ | sellSideProvider | ETH/FEB23 | sell | 1 | 200000 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | sellSideProvider | ETH/FEB23 | sell | 10 | 200100 | 0 | TYPE_LIMIT | TIF_GTC | |
+
+ When the network moves ahead "2" blocks
+ Then the mark price should be "15900" for the market "ETH/FEB23"
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | initial |
+ | party1 | ETH/FEB23 | 65190 | 78228 |
+ #margin = min(3*(100000-15900), 15900*(0.25))+0.1*15900=5565
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general |
+ | party1 | USD | ETH/FEB23 | 78228 | 197272 |
+
+ #switch to isolated margin
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor |
+ | party1 | ETH/FEB23 | isolated margin | 0.6 |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 55650 | 0 | 66780 | 0 | isolated margin | 0.6 | 179760 |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | party1 | USD | ETH/FEB23 | 95400 | 340 | 179760 |
+
+ #AC 0019-MCAL-068 amend the order (increase size) so that new side margin + margin account balance < maintenance margin, the remainding should be stopped
+ When the parties amend the following orders:
+ | party | reference | price | size delta | tif | error |
+ | party1 | sell-1 | 49940 | 2 | TIF_GTC | margin check failed |
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | party1 | USD | ETH/FEB23 | 95400 | 180100 | 0 |
+
+ And the orders should have the following status:
+ | party | reference | status |
+ | party1 | sell-1 | STATUS_STOPPED |
+ | party1 | sell-2 | STATUS_STOPPED |
+
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | party1 | ETH/FEB23 | sell | 2 | 49920 | 0 | TYPE_LIMIT | TIF_GTC | sell-3 |
+ | party1 | ETH/FEB23 | sell | 4 | 49940 | 0 | TYPE_LIMIT | TIF_GTC | sell-4 |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | party1 | USD | ETH/FEB23 | 95400 | 340 | 179760 |
+
+ #check amendment does happened when new side margin + margin account balance > maintenance margin
+ When the parties amend the following orders:
+ | party | reference | price | size delta | tif | error |
+ | party1 | sell-3 | 49920 | -2 | TIF_GTC | |
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | party1 | USD | ETH/FEB23 | 95400 | 60244 | 119856 |
+
+ And the orders should have the following status:
+ | party | reference | status |
+ | party1 | sell-3 | STATUS_CANCELLED |
+ | party1 | sell-4 | STATUS_ACTIVE |
+
+ And the order book should have the following volumes for market "ETH/FEB23":
+ | side | price | volume |
+ | buy | 14900 | 10 |
+ | buy | 15800 | 6 |
+ | sell | 49920 | 0 |
+ | sell | 200000 | 1 |
+
+ #check amendment does happened when new side margin + margin account balance > maintenance margin
+ When the parties amend the following orders:
+ | party | reference | price | size delta | tif | error |
+ | party1 | sell-4 | 49910 | 0 | TIF_GTC | |
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | party1 | USD | ETH/FEB23 | 95400 | 60316 | 119784 |
+
+ And the orders should have the following status:
+ | party | reference | status |
+ | party1 | sell-3 | STATUS_CANCELLED |
+ | party1 | sell-4 | STATUS_ACTIVE |
+
+ #AC 0019-MCAL-074 amend the order (increase price) so that new side margin + margin account balance < maintenance margin, the remainding should be stopped
+ When the parties amend the following orders:
+ | party | reference | price | size delta | tif | error |
+ | party1 | sell-4 | 109910 | 0 | TIF_GTC | margin check failed |
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | party1 | USD | ETH/FEB23 | 95400 | 180100 | 0 |
+
+ And the orders should have the following status:
+ | party | reference | status |
+ | party1 | sell-3 | STATUS_CANCELLED |
+ | party1 | sell-4 | STATUS_STOPPED |
+
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | party1 | ETH/FEB23 | sell | 2 | 49920 | 0 | TYPE_LIMIT | TIF_GTC | sell-5 |
+ | party1 | ETH/FEB23 | sell | 4 | 49940 | 0 | TYPE_LIMIT | TIF_GTC | sell-6 |
+
+ #AC 0019-MCAL-075 amend the order (decrease size, increase price) so that new side margin + margin account balance < maintenance margin, the remainding should be stopped
+ When the parties amend the following orders:
+ | party | reference | price | size delta | tif | error |
+ | party1 | sell-5 | 109910 | -1 | TIF_GTC | margin check failed |
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | party1 | USD | ETH/FEB23 | 95400 | 180100 | 0 |
+
+ And the orders should have the following status:
+ | party | reference | status |
+ | party1 | sell-5 | STATUS_STOPPED |
+ | party1 | sell-6 | STATUS_STOPPED |
+
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | party1 | ETH/FEB23 | sell | 2 | 49920 | 0 | TYPE_LIMIT | TIF_GTC | sell-7 |
+ | party1 | ETH/FEB23 | sell | 4 | 49940 | 0 | TYPE_LIMIT | TIF_GTC | sell-8 |
+
+ #AC 0019-MCAL-076 amend the order (increase size, decrease price) so that new side margin + margin account balance < maintenance margin, the remainding should be stopped
+ When the parties amend the following orders:
+ | party | reference | price | size delta | tif | error |
+ | party1 | sell-7 | 19920 | 5 | TIF_GTC | margin check failed |
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | party1 | USD | ETH/FEB23 | 95400 | 180100 | 0 |
+
+ And the orders should have the following status:
+ | party | reference | status |
+ | party1 | sell-7 | STATUS_STOPPED |
+ | party1 | sell-8 | STATUS_STOPPED |
+
+
diff --git a/core/integration/features/margin/0019-MCAL-070.feature b/core/integration/features/margin/0019-MCAL-070.feature
new file mode 100644
index 0000000000..778cbb4d66
--- /dev/null
+++ b/core/integration/features/margin/0019-MCAL-070.feature
@@ -0,0 +1,543 @@
+Feature: Test mark price changes and closeout under isolated margin mode
+ Background:
+ # Set liquidity parameters to allow "zero" target-stake which is needed to construct the order-book defined in the ACs
+ Given the following network parameters are set:
+ | name | value |
+ | network.markPriceUpdateMaximumFrequency | 0s |
+ And the liquidity monitoring parameters:
+ | name | triggering ratio | time window | scaling factor |
+ | lqm-params | 0.00 | 24h | 1e-9 |
+ And the simple risk model named "simple-risk-model":
+ | long | short | max move up | min move down | probability of trading |
+ | 0.1 | 0.1 | 100 | -100 | 0.2 |
+ And the markets:
+ | id | quote name | asset | liquidity monitoring | risk model | margin calculator | auction duration | fees | price monitoring | data source config | linear slippage factor | quadratic slippage factor | sla params |
+ | ETH/FEB23 | ETH | USD | lqm-params | simple-risk-model | default-margin-calculator | 1 | default-none | default-none | default-eth-for-future | 0.25 | 0 | default-futures |
+
+ Scenario: 001 closeout when party's open position is under maintenance level (0019-MCAL-070)
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | buySideProvider | USD | 100000000000 |
+ | sellSideProvider | USD | 100000000000 |
+ | party1 | USD | 172500 |
+
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | buySideProvider | ETH/FEB23 | buy | 10 | 14900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | buySideProvider | ETH/FEB23 | buy | 6 | 15800 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | buySideProvider | ETH/FEB23 | buy | 10 | 15900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | party1 | ETH/FEB23 | sell | 10 | 15900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | party1 | ETH/FEB23 | sell | 8 | 15900 | 0 | TYPE_LIMIT | TIF_GTC | s-1 |
+ | sellSideProvider | ETH/FEB23 | sell | 1 | 200000 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | sellSideProvider | ETH/FEB23 | sell | 10 | 200100 | 0 | TYPE_LIMIT | TIF_GTC | |
+
+ When the network moves ahead "2" blocks
+ Then the mark price should be "15900" for the market "ETH/FEB23"
+ And the order book should have the following volumes for market "ETH/FEB23":
+ | side | price | volume |
+ | buy | 14900 | 10 |
+ | buy | 15800 | 6 |
+ | sell | 15900 | 8 |
+ | sell | 200000 | 1 |
+ | sell | 200100 | 10 |
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 68370 | 75207 | 82044 | 95718 | cross margin | 0 | 0 |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general |
+ | party1 | USD | ETH/FEB23 | 82044 | 90456 |
+
+ #switch to isolated margin
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor |
+ | party1 | ETH/FEB23 | isolated margin | 0.6 |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 55650 | 0 | 66780 | 0 | isolated margin | 0.6 | 76320 |
+
+ #order margin: 15900*8*0.6=76320
+ #position margin: 15900*10*0.6=95400
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | party1 | USD | ETH/FEB23 | 95400 | 780 | 76320 |
+
+ #trigger more MTM with party has both short position and short orders
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | buySideProvider | ETH/FEB23 | buy | 10 | 17000 | 1 | TYPE_LIMIT | TIF_GTC |
+ | sellSideProvider | ETH/FEB23 | sell | 2 | 17000 | 1 | TYPE_LIMIT | TIF_GTC |
+
+ And the orders should have the following status:
+ | party | reference | status |
+ | party1 | s-1 | STATUS_FILLED |
+
+ And the market data for the market "ETH/FEB23" should be:
+ | mark price | trading mode |
+ | 15900 | TRADING_MODE_CONTINUOUS |
+ And the network moves ahead "1" blocks
+
+ And the market data for the market "ETH/FEB23" should be:
+ | mark price | trading mode |
+ | 17000 | TRADING_MODE_CONTINUOUS |
+
+ #position margin: 15900*18*0.6=171720
+ #MTM: 171720-(17000-15900)*18=151920
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | party1 | USD | ETH/FEB23 | 151920 | 780 | 0 |
+
+ And the following transfers should happen:
+ | from | to | from account | to account | market id | amount | asset |
+ | party1 | market | ACCOUNT_TYPE_MARGIN | ACCOUNT_TYPE_SETTLEMENT | ETH/FEB23 | 19800 | USD |
+ | market | buySideProvider | ACCOUNT_TYPE_SETTLEMENT | ACCOUNT_TYPE_MARGIN | ETH/FEB23 | 19800 | USD |
+
+ #trigger more MTM with party has short position
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | buySideProvider | ETH/FEB23 | buy | 1 | 20000 | 0 | TYPE_LIMIT | TIF_GTC |
+ | sellSideProvider | ETH/FEB23 | sell | 1 | 20000 | 1 | TYPE_LIMIT | TIF_GTC |
+ And the market data for the market "ETH/FEB23" should be:
+ | mark price | trading mode |
+ | 17000 | TRADING_MODE_CONTINUOUS |
+ And the network moves ahead "1" blocks
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | party1 | USD | ETH/FEB23 | 0 | 780 | 0 |
+
+ And the following transfers should happen:
+ | from | to | from account | to account | market id | amount | asset |
+ | party1 | market | ACCOUNT_TYPE_MARGIN | ACCOUNT_TYPE_SETTLEMENT | ETH/FEB23 | 54000 | USD |
+ | party1 | market | ACCOUNT_TYPE_MARGIN | ACCOUNT_TYPE_INSURANCE | ETH/FEB23 | 97920 | USD |
+
+ Scenario: 002 Open positions should be closed in the case of open positions dropping below maintenance margin level, active orders will be cancelled if closing positions lead order margin level to increase.
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | buySideProvider | USD | 100000000000 |
+ | sellSideProvider | USD | 100000000000 |
+ | party1 | USD | 215500 |
+
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | buySideProvider | ETH/FEB23 | buy | 10 | 14900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | buySideProvider | ETH/FEB23 | buy | 6 | 15800 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | buySideProvider | ETH/FEB23 | buy | 10 | 15900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | party1 | ETH/FEB23 | sell | 10 | 15900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | party1 | ETH/FEB23 | sell | 1 | 200000 | 0 | TYPE_LIMIT | TIF_GTC | party-sell |
+ | sellSideProvider | ETH/FEB23 | sell | 10 | 200000 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | sellSideProvider | ETH/FEB23 | sell | 10 | 200100 | 0 | TYPE_LIMIT | TIF_GTC | |
+
+ When the network moves ahead "2" blocks
+ Then the mark price should be "15900" for the market "ETH/FEB23"
+ And the order book should have the following volumes for market "ETH/FEB23":
+ | side | price | volume |
+ | buy | 14900 | 10 |
+ | buy | 15800 | 6 |
+ | sell | 200000 | 11 |
+ | sell | 200100 | 10 |
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | initial |
+ | party1 | ETH/FEB23 | 57240 | 68688 |
+ #slippage_per_unit: (19500+200000*9)/10-15900)=166050
+ #margin: 10*min(166050, 15900*0.25)+0.1*15900*11=57240
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general |
+ | party1 | USD | ETH/FEB23 | 68688 | 146812 |
+
+ #switch to isolated margin
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor |
+ | party1 | ETH/FEB23 | isolated margin | 0.5 |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 55650 | 0 | 66780 | 0 | isolated margin | 0.5 | 100000 |
+
+ #margin level: 15900*10*0.5=79500
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | party1 | USD | ETH/FEB23 | 79500 | 36000 | 100000 |
+
+ #AC 0019-MCAL-132:increase margin factor in isolated margin with position and with orders successful in continuous mode
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.50001 | |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 55650 | 0 | 66780 | 0 | isolated margin | 0.50001 | 100002 |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | party1 | USD | ETH/FEB23 | 79501 | 35997 | 100002 |
+
+ #at this point you can't change to 0.4 as the initial margin = 66780 and the the position margin with 0.4 would be 63600
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.4 | required position margin must be greater than initial margin |
+
+ #the the position margin with 0.45 would be 71550 which is greater than initial margin, update of margin factor is accepted
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.45 | |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 55650 | 0 | 66780 | 0 | isolated margin | 0.45 | 90000 |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | party1 | USD | ETH/FEB23 | 71550 | 33946 | 110004 |
+
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.6 | |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 55650 | 0 | 66780 | 0 | isolated margin | 0.6 | 120000 |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | party1 | USD | ETH/FEB23 | 95400 | 100 | 120000 |
+
+ #trigger MTM (18000-15900)*10= 21000 with party has both short position and short orders, when party is distressed, order will remain active
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | buySideProvider | ETH/FEB23 | buy | 1 | 18000 | 0 | TYPE_LIMIT | TIF_GTC |
+ | sellSideProvider | ETH/FEB23 | sell | 1 | 18000 | 1 | TYPE_LIMIT | TIF_GTC |
+
+ And the market data for the market "ETH/FEB23" should be:
+ | mark price | trading mode |
+ | 15900 | TRADING_MODE_CONTINUOUS |
+ And the network moves ahead "1" blocks
+
+ #MTM for party1: 95400-21000=74400
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | party1 | USD | ETH/FEB23 | 74400 | 100 | 120000 |
+
+ #trigger MTM (25440-18000)*10= 74400 which will empty the position margin account
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | buySideProvider | ETH/FEB23 | buy | 1 | 25440 | 0 | TYPE_LIMIT | TIF_GTC |
+ | sellSideProvider | ETH/FEB23 | sell | 1 | 25440 | 1 | TYPE_LIMIT | TIF_GTC |
+
+ And the network moves ahead "1" blocks
+ And the following transfers should happen:
+ | from | to | from account | to account | market id | amount | asset |
+ | party1 | market | ACCOUNT_TYPE_MARGIN | ACCOUNT_TYPE_SETTLEMENT | ETH/FEB23 | 74400 | USD |
+ | party1 | party1 | ACCOUNT_TYPE_ORDER_MARGIN | ACCOUNT_TYPE_MARGIN | ETH/FEB23 | 120000 | USD |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | party1 | USD | ETH/FEB23 | 120000 | 100 | 0 |
+
+ #MTM for party1: 10*(25540-25440)=1000
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | buySideProvider | ETH/FEB23 | buy | 1 | 25540 | 0 | TYPE_LIMIT | TIF_GTC |
+ | sellSideProvider | ETH/FEB23 | sell | 1 | 25540 | 1 | TYPE_LIMIT | TIF_GTC |
+
+ And the network moves ahead "1" blocks
+
+ Then the parties should have the following profit and loss:
+ | party | volume | unrealised pnl | realised pnl |
+ | party1 | -1 | 174460 | -269960 |
+
+ And the market data for the market "ETH/FEB23" should be:
+ | mark price | trading mode |
+ | 25540 | TRADING_MODE_CONTINUOUS |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | party1 | USD | ETH/FEB23 | 119900 | 100 | 0 |
+
+ Scenario: 003 When a party (who holds open positions and bond account) gets distressed, open positions will be closed, the bond account will be emptied (0019-MCAL-072)
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | buySideProvider | USD | 100000000000 |
+ | sellSideProvider | USD | 100000000000 |
+ | party1 | USD | 172500 |
+ When the parties submit the following liquidity provision:
+ | id | party | market id | commitment amount | fee | lp type |
+ | lp1 | party1 | ETH/FEB23 | 1000 | 0.1 | submission |
+
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | buySideProvider | ETH/FEB23 | buy | 10 | 14900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | buySideProvider | ETH/FEB23 | buy | 6 | 15800 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | buySideProvider | ETH/FEB23 | buy | 10 | 15900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | party1 | ETH/FEB23 | sell | 10 | 15900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | sellSideProvider | ETH/FEB23 | sell | 1 | 200000 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | sellSideProvider | ETH/FEB23 | sell | 10 | 200100 | 0 | TYPE_LIMIT | TIF_GTC | |
+
+ When the network moves ahead "2" blocks
+ And the market data for the market "ETH/FEB23" should be:
+ | mark price | trading mode |
+ | 15900 | TRADING_MODE_CONTINUOUS |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 55650 | 61215 | 66780 | 77910 | cross margin | 0 | 0 |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | bond |
+ | party1 | USD | ETH/FEB23 | 66780 | 104720 | 1000 |
+
+ #switch to isolated margin
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.5 | |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 55650 | 0 | 66780 | 0 | isolated margin | 0.5 | 0 |
+
+ #order margin: 15900*8*0.6=76320
+ #position margin: 15900*10*0.6=95400
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin | bond |
+ | party1 | USD | ETH/FEB23 | 79500 | 92000 | 0 | 1000 |
+
+ #trigger more MTM (18285-15900)*10=23850 with party has both short position and bond account
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | buySideProvider | ETH/FEB23 | buy | 1 | 18285 | 0 | TYPE_LIMIT | TIF_GTC |
+ | sellSideProvider | ETH/FEB23 | sell | 1 | 18285 | 1 | TYPE_LIMIT | TIF_GTC |
+
+ When the network moves ahead "1" blocks
+ And the market data for the market "ETH/FEB23" should be:
+ | mark price | trading mode |
+ | 18285 | TRADING_MODE_CONTINUOUS |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin | bond |
+ | party1 | USD | ETH/FEB23 | 0 | 92000 | 0 | 0 |
+
+ And the following transfers should happen:
+ | from | to | from account | to account | market id | amount | asset |
+ | party1 | party1 | ACCOUNT_TYPE_BOND | ACCOUNT_TYPE_MARGIN | ETH/FEB23 | 1000 | USD |
+ | party1 | market | ACCOUNT_TYPE_MARGIN | ACCOUNT_TYPE_INSURANCE | ETH/FEB23 | 56650 | USD |
+ | market | market | ACCOUNT_TYPE_INSURANCE | ACCOUNT_TYPE_SETTLEMENT | ETH/FEB23 | 56650 | USD |
+ | market | sellSideProvider | ACCOUNT_TYPE_SETTLEMENT | ACCOUNT_TYPE_MARGIN | ETH/FEB23 | 56650 | USD |
+
+ Scenario: 004 When a party (who holds open positions, orders and bond account) gets distressed, open positions will be closed, the bond account will be emptied (0019-MCAL-073)
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | buySideProvider | USD | 100000000000 |
+ | sellSideProvider | USD | 100000000000 |
+ | party1 | USD | 172500 |
+ When the parties submit the following liquidity provision:
+ | id | party | market id | commitment amount | fee | lp type |
+ | lp1 | party1 | ETH/FEB23 | 1000 | 0.1 | submission |
+
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | buySideProvider | ETH/FEB23 | buy | 10 | 14900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | buySideProvider | ETH/FEB23 | buy | 6 | 15800 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | buySideProvider | ETH/FEB23 | buy | 10 | 15900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | party1 | ETH/FEB23 | sell | 10 | 15900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | sellSideProvider | ETH/FEB23 | sell | 10 | 28900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | party1 | ETH/FEB23 | sell | 2 | 28910 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | sellSideProvider | ETH/FEB23 | sell | 10 | 200100 | 0 | TYPE_LIMIT | TIF_GTC | |
+
+ When the network moves ahead "2" blocks
+ And the market data for the market "ETH/FEB23" should be:
+ | mark price | trading mode |
+ | 15900 | TRADING_MODE_CONTINUOUS |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 58830 | 64713 | 70596 | 82362 | cross margin | 0 | 0 |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | bond |
+ | party1 | USD | ETH/FEB23 | 70596 | 100904 | 1000 |
+
+ #switch to isolated margin
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.5 | |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 55650 | 0 | 66780 | 0 | isolated margin | 0.5 | 28910 |
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin | bond |
+ | party1 | USD | ETH/FEB23 | 79500 | 63090 | 28910 | 1000 |
+
+ #trigger more MTM (18385-15900)*10=24850 with party has both short position and bond account
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | buySideProvider | ETH/FEB23 | buy | 1 | 18385 | 0 | TYPE_LIMIT | TIF_GTC |
+ | sellSideProvider | ETH/FEB23 | sell | 1 | 18385 | 1 | TYPE_LIMIT | TIF_GTC |
+
+ When the network moves ahead "1" blocks
+ And the market data for the market "ETH/FEB23" should be:
+ | mark price | trading mode |
+ | 18385 | TRADING_MODE_CONTINUOUS |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin | bond |
+ | party1 | USD | ETH/FEB23 | 0 | 63090 | 28910 | 0 |
+
+ And the following transfers should happen:
+ | from | to | from account | to account | market id | amount | asset |
+ | party1 | party1 | ACCOUNT_TYPE_BOND | ACCOUNT_TYPE_MARGIN | ETH/FEB23 | 1000 | USD |
+ | party1 | market | ACCOUNT_TYPE_MARGIN | ACCOUNT_TYPE_INSURANCE | ETH/FEB23 | 55650 | USD |
+ | market | market | ACCOUNT_TYPE_INSURANCE | ACCOUNT_TYPE_SETTLEMENT | ETH/FEB23 | 55650 | USD |
+ | market | sellSideProvider | ACCOUNT_TYPE_SETTLEMENT | ACCOUNT_TYPE_MARGIN | ETH/FEB23 | 55650 | USD |
+
+ Scenario: 005 Open positions should be closed in the case of open positions dropping below maintenance margin level, active orders will be cancelled if closing positions lead order margin level to increase. (0019-MCAL-071)
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | buySideProvider | USD | 100000000000 |
+ | sellSideProvider | USD | 100000000000 |
+ | party1 | USD | 172500 |
+
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | buySideProvider | ETH/FEB23 | buy | 10 | 14900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | buySideProvider | ETH/FEB23 | buy | 10 | 15900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | party1 | ETH/FEB23 | sell | 10 | 15900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | sellSideProvider | ETH/FEB23 | sell | 10 | 28900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | sellSideProvider | ETH/FEB23 | sell | 10 | 200100 | 0 | TYPE_LIMIT | TIF_GTC | |
+
+ When the network moves ahead "2" blocks
+ And the market data for the market "ETH/FEB23" should be:
+ | mark price | trading mode |
+ | 15900 | TRADING_MODE_CONTINUOUS |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 55650 | 61215 | 66780 | 77910 | cross margin | 0 | 0 |
+
+ #switch to isolated margin
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.5 | |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 55650 | 0 | 66780 | 0 | isolated margin | 0.5 | 0 |
+ When the network moves ahead "1" blocks
+
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | party1 | ETH/FEB23 | buy | 6 | 15800 | 0 | TYPE_LIMIT | TIF_GTC | b-1 |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | party1 | USD | ETH/FEB23 | 79500 | 93000 | 0 |
+
+ #trigger more MTM (18385-15900)*10=24850 with party has both short position and bond account
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | buySideProvider | ETH/FEB23 | buy | 1 | 18385 | 0 | TYPE_LIMIT | TIF_GTC |
+ | sellSideProvider | ETH/FEB23 | sell | 1 | 18385 | 1 | TYPE_LIMIT | TIF_GTC |
+
+ When the network moves ahead "1" blocks
+ And the market data for the market "ETH/FEB23" should be:
+ | mark price | trading mode |
+ | 18385 | TRADING_MODE_CONTINUOUS |
+ And the orders should have the following status:
+ | party | reference | status |
+ | party1 | b-1 | STATUS_STOPPED |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | party1 | USD | ETH/FEB23 | 0 | 93000 | 0 |
+
+ And the following transfers should happen:
+ | from | to | from account | to account | market id | amount | asset |
+ | party1 | market | ACCOUNT_TYPE_MARGIN | ACCOUNT_TYPE_INSURANCE | ETH/FEB23 | 54650 | USD |
+ | market | market | ACCOUNT_TYPE_INSURANCE | ACCOUNT_TYPE_SETTLEMENT | ETH/FEB23 | 54650 | USD |
+ | market | sellSideProvider | ACCOUNT_TYPE_SETTLEMENT | ACCOUNT_TYPE_MARGIN | ETH/FEB23 | 54650 | USD |
+
+ Scenario: 006 When a party (who holds open positions, orders and bond account) gets distressed, open positions will be closed, the bond account will be emptied (0019-MCAL-074)
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | buySideProvider | USD | 100000000000 |
+ | sellSideProvider | USD | 100000000000 |
+ | party1 | USD | 172500 |
+ When the parties submit the following liquidity provision:
+ | id | party | market id | commitment amount | fee | lp type |
+ | lp1 | party1 | ETH/FEB23 | 1000 | 0.1 | submission |
+
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | buySideProvider | ETH/FEB23 | buy | 10 | 14900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | buySideProvider | ETH/FEB23 | buy | 10 | 15900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | party1 | ETH/FEB23 | sell | 10 | 15900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | sellSideProvider | ETH/FEB23 | sell | 10 | 200000 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | sellSideProvider | ETH/FEB23 | sell | 10 | 200100 | 0 | TYPE_LIMIT | TIF_GTC | |
+
+ When the network moves ahead "2" blocks
+ And the market data for the market "ETH/FEB23" should be:
+ | mark price | trading mode |
+ | 15900 | TRADING_MODE_CONTINUOUS |
+
+ #margin maintenance: min(10*(200000-15900),15900*10*0.25)+10*0.1*15900
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 55650 | 61215 | 66780 | 77910 | cross margin | 0 | 0 |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | bond |
+ | party1 | USD | ETH/FEB23 | 66780 | 104720 | 1000 |
+
+ #switch to isolated margin
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.5 | |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 55650 | 0 | 66780 | 0 | isolated margin | 0.5 | 0 |
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin | bond |
+ | party1 | USD | ETH/FEB23 | 79500 | 92000 | 0 | 1000 |
+
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | party1 | ETH/FEB23 | buy | 6 | 15800 | 0 | TYPE_LIMIT | TIF_GTC | b-1 |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin | bond |
+ | party1 | USD | ETH/FEB23 | 79500 | 92000 | 0 | 1000 |
+
+ #trigger more MTM (18585-15900)*10=26850 with party has both short position and bond account
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | buySideProvider | ETH/FEB23 | buy | 1 | 23585 | 0 | TYPE_LIMIT | TIF_GTC |
+ | sellSideProvider | ETH/FEB23 | sell | 1 | 23585 | 1 | TYPE_LIMIT | TIF_GTC |
+
+ When the network moves ahead "1" blocks
+ #margin maintenance: min(10*(20000-18585),18585*10*0.25)+10*0.1*18585=32735
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 0 | 0 | 0 | 0 | isolated margin | 0.5 | 0 |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin | bond |
+ | party1 | USD | ETH/FEB23 | 0 | 92000 | 0 | 0 |
+
+ And the orders should have the following status:
+ | party | reference | status |
+ | party1 | b-1 | STATUS_STOPPED |
+
+ And the following transfers should happen:
+ | from | to | from account | to account | market id | amount | asset |
+ | party1 | market | ACCOUNT_TYPE_MARGIN | ACCOUNT_TYPE_SETTLEMENT | ETH/FEB23 | 76850 | USD |
+ | market | buySideProvider | ACCOUNT_TYPE_SETTLEMENT | ACCOUNT_TYPE_MARGIN | ETH/FEB23 | 76850 | USD |
+ | party1 | market | ACCOUNT_TYPE_MARGIN | ACCOUNT_TYPE_INSURANCE | ETH/FEB23 | 3650 | USD |
+ | party1 | party1 | ACCOUNT_TYPE_BOND | ACCOUNT_TYPE_MARGIN | ETH/FEB23 | 1000 | USD |
+
+
+
+
+
diff --git a/core/integration/features/margin/0019-MCAL-072.feature b/core/integration/features/margin/0019-MCAL-072.feature
new file mode 100644
index 0000000000..6e36d050ca
--- /dev/null
+++ b/core/integration/features/margin/0019-MCAL-072.feature
@@ -0,0 +1,238 @@
+Feature: Test closeout under isolated margin mode when party has bond account
+ Background:
+ # Set liquidity parameters to allow "zero" target-stake which is needed to construct the order-book defined in the ACs
+ Given the following network parameters are set:
+ | name | value |
+ | network.markPriceUpdateMaximumFrequency | 0s |
+ And the liquidity monitoring parameters:
+ | name | triggering ratio | time window | scaling factor |
+ | lqm-params | 0.00 | 24h | 1e-9 |
+ And the simple risk model named "simple-risk-model":
+ | long | short | max move up | min move down | probability of trading |
+ | 0.1 | 0.1 | 100 | -100 | 0.2 |
+ And the markets:
+ | id | quote name | asset | liquidity monitoring | risk model | margin calculator | auction duration | fees | price monitoring | data source config | linear slippage factor | quadratic slippage factor | sla params |
+ | ETH/FEB23 | ETH | USD | lqm-params | simple-risk-model | default-margin-calculator | 1 | default-none | default-none | default-eth-for-future | 0.25 | 0 | default-futures |
+
+ Scenario: 001 closeout when party has open position and bond account (0019-MCAL-072)
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | buySideProvider | USD | 100000000000 |
+ | sellSideProvider | USD | 100000000000 |
+ | party1 | USD | 173500 |
+
+ When the parties submit the following liquidity provision:
+ | id | party | market id | commitment amount | fee | lp type |
+ | lp1 | party1 | ETH/FEB23 | 1000 | 0.1 | submission |
+
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | buySideProvider | ETH/FEB23 | buy | 10 | 14900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | buySideProvider | ETH/FEB23 | buy | 6 | 15800 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | buySideProvider | ETH/FEB23 | buy | 10 | 15900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | party1 | ETH/FEB23 | sell | 10 | 15900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | party1 | ETH/FEB23 | sell | 8 | 15900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | sellSideProvider | ETH/FEB23 | sell | 1 | 200000 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | sellSideProvider | ETH/FEB23 | sell | 10 | 200100 | 0 | TYPE_LIMIT | TIF_GTC | |
+
+ When the network moves ahead "2" blocks
+ Then the mark price should be "15900" for the market "ETH/FEB23"
+ And the order book should have the following volumes for market "ETH/FEB23":
+ | side | price | volume |
+ | buy | 14900 | 10 |
+ | buy | 15800 | 6 |
+ | sell | 15900 | 8 |
+ | sell | 200000 | 1 |
+ | sell | 200100 | 10 |
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release |
+ | party1 | ETH/FEB23 | 68370 | 75207 | 82044 | 95718 |
+ #margin = min(3*(100000-15900), 15900*(0.25))+0.1*15900=5565
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | bond |
+ | party1 | USD | ETH/FEB23 | 82044 | 90456 | 1000 |
+
+ #switch to isolated margin
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor |
+ | party1 | ETH/FEB23 | isolated margin | 0.6 |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 55650 | 0 | 66780 | 0 | isolated margin | 0.6 | 76320 |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | party1 | USD | ETH/FEB23 | 95400 | 780 | 76320 |
+
+ #trigger more MTM with party has both short position and short orders
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | buySideProvider | ETH/FEB23 | buy | 10 | 17000 | 1 | TYPE_LIMIT | TIF_GTC |
+ | sellSideProvider | ETH/FEB23 | sell | 2 | 17000 | 1 | TYPE_LIMIT | TIF_GTC |
+
+ And the market data for the market "ETH/FEB23" should be:
+ | mark price | trading mode |
+ | 15900 | TRADING_MODE_CONTINUOUS |
+ And the network moves ahead "1" blocks
+
+ And the market data for the market "ETH/FEB23" should be:
+ | mark price | trading mode |
+ | 17000 | TRADING_MODE_CONTINUOUS |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin | bond |
+ | party1 | USD | ETH/FEB23 | 151920 | 780 | 0 | 1000 |
+
+ #MTM for party1: 18*(17000-15900)=19800
+ And the following transfers should happen:
+ | from | to | from account | to account | market id | amount | asset |
+ | party1 | market | ACCOUNT_TYPE_MARGIN | ACCOUNT_TYPE_SETTLEMENT | ETH/FEB23 | 19800 | USD |
+ | market | buySideProvider | ACCOUNT_TYPE_SETTLEMENT | ACCOUNT_TYPE_MARGIN | ETH/FEB23 | 19800 | USD |
+
+ #increase margin factor
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.9 | insufficient balance in general account to cover for required order margin |
+
+ #trigger more MTM with party has both short position and short orders
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | buySideProvider | ETH/FEB23 | buy | 1 | 20000 | 0 | TYPE_LIMIT | TIF_GTC |
+ | sellSideProvider | ETH/FEB23 | sell | 1 | 20000 | 1 | TYPE_LIMIT | TIF_GTC |
+ And the market data for the market "ETH/FEB23" should be:
+ | mark price | trading mode |
+ | 17000 | TRADING_MODE_CONTINUOUS |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin | bond |
+ | party1 | USD | ETH/FEB23 | 151920 | 780 | 0 | 1000 |
+
+ And the network moves ahead "1" blocks
+
+ # what happens here is that the party gets closed out, their general account balance is untouched
+ # but their bond balance is taken and then topped up from the general account
+ # it's a bit weird but that's how it works
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin | bond |
+ | party1 | USD | ETH/FEB23 | 0 | 0 | 0 | 780 |
+
+ And the following transfers should happen:
+ | from | to | from account | to account | market id | amount | asset |
+ | party1 | market | ACCOUNT_TYPE_MARGIN | ACCOUNT_TYPE_SETTLEMENT | ETH/FEB23 | 54000 | USD |
+ | party1 | party1 | ACCOUNT_TYPE_BOND | ACCOUNT_TYPE_MARGIN | ETH/FEB23 | 1000 | USD |
+ | party1 | market | ACCOUNT_TYPE_MARGIN | ACCOUNT_TYPE_INSURANCE | ETH/FEB23 | 98920 | USD |
+
+
+ Scenario: 002 closeout when party has open position, order, and bond account(0019-MCAL-073)
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | buySideProvider | USD | 100000000000 |
+ | sellSideProvider | USD | 100000000000 |
+ | party1 | USD | 216500 |
+ When the parties submit the following liquidity provision:
+ | id | party | market id | commitment amount | fee | lp type |
+ | lp1 | party1 | ETH/FEB23 | 1000 | 0.1 | submission |
+
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | buySideProvider | ETH/FEB23 | buy | 10 | 14900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | buySideProvider | ETH/FEB23 | buy | 6 | 15800 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | buySideProvider | ETH/FEB23 | buy | 10 | 15900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | party1 | ETH/FEB23 | sell | 10 | 15900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | party1 | ETH/FEB23 | sell | 1 | 200000 | 0 | TYPE_LIMIT | TIF_GTC | party-sell |
+ | sellSideProvider | ETH/FEB23 | sell | 10 | 200000 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | sellSideProvider | ETH/FEB23 | sell | 10 | 200100 | 0 | TYPE_LIMIT | TIF_GTC | |
+
+ When the network moves ahead "2" blocks
+ Then the mark price should be "15900" for the market "ETH/FEB23"
+ And the order book should have the following volumes for market "ETH/FEB23":
+ | side | price | volume |
+ | buy | 14900 | 10 |
+ | buy | 15800 | 6 |
+ | sell | 200000 | 11 |
+ # | sell | 200100 | 10 |
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | initial |
+ | party1 | ETH/FEB23 | 57240 | 68688 |
+ #slippage_per_unit: (19500+200000*9)/10-15900)=166050
+ #margin: 10*min(166050, 15900*0.25)+0.1*15900*11=57240
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | bond |
+ | party1 | USD | ETH/FEB23 | 68688 | 146812 | 1000 |
+
+ #switch to isolated margin
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor |
+ | party1 | ETH/FEB23 | isolated margin | 0.6 |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 55650 | 0 | 66780 | 0 | isolated margin | 0.6 | 120000 |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin | bond |
+ | party1 | USD | ETH/FEB23 | 95400 | 100 | 120000 | 1000 |
+
+ #trigger more MTM (18000-15900)*10= 21000 with party has both short position and short orders, when party is distressed, order will remain active
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | buySideProvider | ETH/FEB23 | buy | 1 | 18000 | 0 | TYPE_LIMIT | TIF_GTC |
+ | sellSideProvider | ETH/FEB23 | sell | 1 | 18000 | 1 | TYPE_LIMIT | TIF_GTC |
+
+ And the market data for the market "ETH/FEB23" should be:
+ | mark price | trading mode |
+ | 15900 | TRADING_MODE_CONTINUOUS |
+ And the network moves ahead "1" blocks
+
+ And the market data for the market "ETH/FEB23" should be:
+ | mark price | trading mode |
+ | 18000 | TRADING_MODE_CONTINUOUS |
+
+ #party1's open position is distressed
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin | bond |
+ | party1 | USD | ETH/FEB23 | 74400 | 100 | 120000 | 1000 |
+
+ # #MTM for party1: 10*(25440-18000)=74400
+ #trigger more MTM with party has both short position and short orders and empty the margin account
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | buySideProvider | ETH/FEB23 | buy | 1 | 25440 | 0 | TYPE_LIMIT | TIF_GTC |
+ | sellSideProvider | ETH/FEB23 | sell | 1 | 25440 | 1 | TYPE_LIMIT | TIF_GTC |
+
+ And the network moves ahead "1" blocks
+
+ And the market data for the market "ETH/FEB23" should be:
+ | mark price | trading mode |
+ | 25440 | TRADING_MODE_CONTINUOUS |
+
+ # @jiajia this is quite a funny case... their long position is getting closed out
+ # but they have short order, so the network is trading with them which gets them back into a position
+ # this time the other side
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin | bond |
+ | party1 | USD | ETH/FEB23 | 120000 | 0 | 0 | 100 |
+
+ # #MTM for party1: 10*(25540-25440)=1000
+ #trigger more MTM with party has both short position and the margin account is already empty
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif |
+ | buySideProvider | ETH/FEB23 | buy | 1 | 25540 | 0 | TYPE_LIMIT | TIF_GTC |
+ | sellSideProvider | ETH/FEB23 | sell | 1 | 25540 | 1 | TYPE_LIMIT | TIF_GTC |
+
+ And the network moves ahead "1" blocks
+
+ And the market data for the market "ETH/FEB23" should be:
+ | mark price | trading mode |
+ | 25540 | TRADING_MODE_CONTINUOUS |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin | bond |
+ | party1 | USD | ETH/FEB23 | 119900 | | 0 | 100 |
+
+ And the insurance pool balance should be "0" for the market "ETH/FEB23"
+
+
diff --git a/core/integration/features/margin/0019-MCAL-100.feature b/core/integration/features/margin/0019-MCAL-100.feature
new file mode 100644
index 0000000000..5aed89537d
--- /dev/null
+++ b/core/integration/features/margin/0019-MCAL-100.feature
@@ -0,0 +1,171 @@
+Feature: Test switch between margin mode
+ Background:
+ # Set liquidity parameters to allow "zero" target-stake which is needed to construct the order-book defined in the ACs
+ Given the following network parameters are set:
+ | name | value |
+ | network.markPriceUpdateMaximumFrequency | 0s |
+ And the liquidity monitoring parameters:
+ | name | triggering ratio | time window | scaling factor |
+ | lqm-params | 0.00 | 24h | 1e-9 |
+ And the simple risk model named "simple-risk-model":
+ | long | short | max move up | min move down | probability of trading |
+ | 0.1 | 0.1 | 100 | -100 | 0.2 |
+ And the markets:
+ | id | quote name | asset | liquidity monitoring | risk model | margin calculator | auction duration | fees | price monitoring | data source config | linear slippage factor | quadratic slippage factor | sla params |
+ | ETH/FEB23 | ETH | USD | lqm-params | simple-risk-model | default-margin-calculator | 1 | default-none | default-none | default-eth-for-future | 0.25 | 0 | default-futures |
+
+ Scenario: 001 closeout when party's open position is under maintenance level (0019-MCAL-070)
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | buySideProvider | USD | 100000000000 |
+ | sellSideProvider | USD | 100000000000 |
+ | party1 | USD | 172500 |
+ When the parties submit the following liquidity provision:
+ | id | party | market id | commitment amount | fee | lp type |
+ | lp1 | party1 | ETH/FEB23 | 1000 | 0.1 | submission |
+
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | buySideProvider | ETH/FEB23 | buy | 10 | 14900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | buySideProvider | ETH/FEB23 | buy | 10 | 15900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | buySideProvider | ETH/FEB23 | sell | 1 | 15900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | sellSideProvider | ETH/FEB23 | sell | 1 | 15900 | 0 | TYPE_LIMIT | TIF_GTC | s-1 |
+ | sellSideProvider | ETH/FEB23 | sell | 1 | 200000 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | sellSideProvider | ETH/FEB23 | sell | 10 | 200100 | 0 | TYPE_LIMIT | TIF_GTC | |
+
+ When the network moves ahead "2" blocks
+ Then the mark price should be "15900" for the market "ETH/FEB23"
+
+ #switch to isolated margin
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor |
+ | party1 | ETH/FEB23 | isolated margin | 0.4 |
+
+ #AC0019-MCAL-100:switch to isolated margin with no position and no order (before the first order ever has been sent) in continuous mode
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 0 | 0 | 0 | 0 | isolated margin | 0.4 | 0 |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general |
+ | party1 | USD | ETH/FEB23 | 0 | 171500 |
+
+ When the network moves ahead "2" blocks
+
+ #switch to cross margin
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor |
+ | party1 | ETH/FEB23 | cross margin | 0.4 |
+
+ #AC0019-MCAL-101:switch back to cross margin with no position and no order in continuous mode
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 0 | 0 | 0 | 0 | cross margin | 0.4 | 0 |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general |
+ | party1 | USD | ETH/FEB23 | 0 | 171500 |
+
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | party1 | ETH/FEB23 | buy | 6 | 15800 | 0 | TYPE_LIMIT | TIF_GTC | b-1 |
+ When the network moves ahead "1" blocks
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 9540 | 10494 | 11448 | 13356 | cross margin | 0.4 | 0 |
+
+ #AC0019-MCAL-106:switch to isolated margin without position and with orders with margin factor such that position margin is < initial should fail in continuous
+ #order margin: 6*15800*0.11=10428
+ #maintenance margin level in cross margin: 15900*0.1*6=9540
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.11 | |
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 0 | 0 | 0 | 0 | isolated margin | 0.11 | 10428 |
+
+ And the orders should have the following status:
+ | party | reference | status |
+ | party1 | b-1 | STATUS_ACTIVE |
+
+ Scenario: 002 switch to isolated margin mode without position and no order (0019-MCAL-110)
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | buySideProvider | USD | 100000000000 |
+ | sellSideProvider | USD | 100000000000 |
+ | party1 | USD | 22000 |
+
+ When the parties submit the following liquidity provision:
+ | id | party | market id | commitment amount | fee | lp type |
+ | lp1 | party1 | ETH/FEB23 | 1000 | 0.1 | submission |
+
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | buySideProvider | ETH/FEB23 | buy | 10 | 14900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | buySideProvider | ETH/FEB23 | buy | 3 | 15900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | sellSideProvider | ETH/FEB23 | sell | 1 | 15900 | 0 | TYPE_LIMIT | TIF_GTC | s-1 |
+ | sellSideProvider | ETH/FEB23 | sell | 1 | 200000 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | sellSideProvider | ETH/FEB23 | sell | 10 | 200100 | 0 | TYPE_LIMIT | TIF_GTC | |
+
+ When the network moves ahead "2" blocks
+ Then the mark price should be "15900" for the market "ETH/FEB23"
+
+ #switch to isolated margin
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.4 | |
+
+ #AC0019-MCAL-100:switch to isolated margin with no position and no order (before the first order ever has been sent) in continuous mode
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 0 | 0 | 0 | 0 | isolated margin | 0.4 | 0 |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | bond |
+ | party1 | USD | ETH/FEB23 | 0 | 21000 | 1000 |
+
+ #AC0019-MCAL-117:update margin factor when already in isolated mode to the same cases as in switch to isolated failures.
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.4 | |
+
+ #switch back to cross margin
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | cross margin | | |
+ When the network moves ahead "2" blocks
+
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | party1 | ETH/FEB23 | sell | 5 | 15900 | 1 | TYPE_LIMIT | TIF_GTC | s-2 |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 7950 | 8745 | 9540 | 11130 | cross margin | 0.4 | 0 |
+
+ #AC0019-MCAL-115:switch to isolate margin with out of range margin factor
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.1 | Margin factor (0.1) must be greater than max(riskFactorLong (0.1), riskFactorShort (0.1)) |
+
+ #this number should be validated with correct message
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 1.2 | insufficient balance in general account to cover for required order margin |
+
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | -0.2 | Margin factor (-0.2) must be greater than max(riskFactorLong (0.1), riskFactorShort (0.1)) |
+
+ #AC0019-MCAL-114:switch to isolated margin with position and with orders with margin factor such that there is insufficient balance in the general account in continuous mode
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.4 | insufficient balance in general account to cover for required order margin |
+
+ #AC0019-MCAL-116:submit update margin mode transaction with no state change (already in cross margin, "change" to cross margin, or already in isolated, submit with same margin factor)
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | cross margin | | |
+
+
diff --git a/core/integration/features/margin/0019-MCAL-102.feature b/core/integration/features/margin/0019-MCAL-102.feature
new file mode 100644
index 0000000000..a9fddd45a0
--- /dev/null
+++ b/core/integration/features/margin/0019-MCAL-102.feature
@@ -0,0 +1,122 @@
+Feature: Switch mode during auction
+ Background:
+ # switch to isolated margin with no position and no order (before the first order ever has been sent) in auction
+ Given the following network parameters are set:
+ | name | value |
+ | network.markPriceUpdateMaximumFrequency | 0s |
+ And the liquidity monitoring parameters:
+ | name | triggering ratio | time window | scaling factor |
+ | lqm-params | 0.00 | 24h | 1e-9 |
+ And the simple risk model named "simple-risk-model":
+ | long | short | max move up | min move down | probability of trading |
+ | 0.1 | 0.1 | 100 | -100 | 0.2 |
+ And the markets:
+ | id | quote name | asset | liquidity monitoring | risk model | margin calculator | auction duration | fees | price monitoring | data source config | linear slippage factor | quadratic slippage factor | sla params |
+ | ETH/FEB23 | ETH | USD | lqm-params | simple-risk-model | default-margin-calculator | 1 | default-none | default-none | default-eth-for-future | 0.25 | 0 | default-futures |
+
+ And the following network parameters are set:
+ | name | value |
+ | market.auction.minimumDuration | 2 |
+
+ Scenario: 001 switch to isolated margin with no position and no order (before the first order ever has been sent) in auction (0019-MCAL-102)
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | buySideProvider | USD | 100000000000 |
+ | sellSideProvider | USD | 100000000000 |
+ | party1 | USD | 273500 |
+
+ When the parties submit the following liquidity provision:
+ | id | party | market id | commitment amount | fee | lp type |
+ | lp1 | party1 | ETH/FEB23 | 1000 | 0.1 | submission |
+
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | buySideProvider | ETH/FEB23 | buy | 10 | 14900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | buySideProvider | ETH/FEB23 | buy | 6 | 15800 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | sellSideProvider | ETH/FEB23 | sell | 1 | 200000 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | sellSideProvider | ETH/FEB23 | sell | 10 | 200100 | 0 | TYPE_LIMIT | TIF_GTC | |
+
+ When the network moves ahead "2" blocks
+ And the order book should have the following volumes for market "ETH/FEB23":
+ | side | price | volume |
+ | buy | 14900 | 10 |
+ | buy | 15800 | 6 |
+ | sell | 15900 | 0 |
+ | sell | 200000 | 1 |
+ And the parties should have the following margin levels:
+ | party | market id | maintenance |
+ | buySideProvider | ETH/FEB23 | 24380 |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | bond |
+ | party1 | USD | ETH/FEB23 | 0 | 272500 | 1000 |
+
+ And the market data for the market "ETH/FEB23" should be:
+ | mark price | trading mode |
+ | 0 | TRADING_MODE_OPENING_AUCTION |
+
+ #switch to isolated margin, failed because party has no order
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.6 | no market observable price |
+
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | party1 | ETH/FEB23 | sell | 8 | 15900 | 0 | TYPE_LIMIT | TIF_GTC | party1-sell |
+
+ And the orders should have the following status:
+ | party | reference | status |
+ | party1 | party1-sell | STATUS_ACTIVE |
+
+ And the market data for the market "ETH/FEB23" should be:
+ | mark price | trading mode |
+ | 0 | TRADING_MODE_OPENING_AUCTION |
+ When the network moves ahead "1" blocks
+
+ #switch to isolated margin, failed because of no market observable price
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.6 | no market observable price |
+
+ When the network moves ahead "1" blocks
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | initial | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 12720 | 15264 | cross margin | 0.6 | 0 |
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | bond |
+ | party1 | USD | ETH/FEB23 | 15264 | 257236 | 1000 |
+
+ And the market data for the market "ETH/FEB23" should be:
+ | mark price | trading mode |
+ | 0 | TRADING_MODE_OPENING_AUCTION |
+
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | sellSideProvider | ETH/FEB23 | sell | 1 | 15800 | 0 | TYPE_LIMIT | TIF_GTC | sellP-2 |
+
+ When the network moves ahead "2" blocks
+
+ And the market data for the market "ETH/FEB23" should be:
+ | mark price | trading mode |
+ | 15800 | TRADING_MODE_CONTINUOUS |
+ #MTM from price change
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | initial | search | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 12640 | 15168 | 13904 | 17696 | cross margin | 0.6 | 0 |
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | bond |
+ | party1 | USD | ETH/FEB23 | 15264 | 257236 | 1000 |
+
+ #switch to isolated margin, when there is market observable price
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor |
+ | party1 | ETH/FEB23 | isolated margin | 0.6 |
+ When the network moves ahead "1" blocks
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | release | search | initial | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 0 | 0 | 0 | 0 | isolated margin | 0.6 | 76320 |
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | bond |
+ | party1 | USD | ETH/FEB23 | 0 | 196180 | 1000 |
+
+
diff --git a/core/integration/features/margin/0019-MCAL-105.feature b/core/integration/features/margin/0019-MCAL-105.feature
new file mode 100644
index 0000000000..5f9e2bf65c
--- /dev/null
+++ b/core/integration/features/margin/0019-MCAL-105.feature
@@ -0,0 +1,162 @@
+Feature: switch to isolated margin with position during auction
+ Background:
+ # switch between cross margin and isolated margin mode during auction
+ Given the following network parameters are set:
+ | name | value |
+ | network.markPriceUpdateMaximumFrequency | 0s |
+ And the price monitoring named "my-price-monitoring":
+ | horizon | probability | auction extension |
+ | 5 | 0.95 | 6 |
+ | 10 | 0.99 | 8 |
+ And the liquidity monitoring parameters:
+ | name | triggering ratio | time window | scaling factor |
+ | lqm-params | 0.00 | 24h | 1e-9 |
+ And the simple risk model named "simple-risk-model":
+ | long | short | max move up | min move down | probability of trading |
+ | 0.1 | 0.1 | 100 | -100 | 0.2 |
+ And the markets:
+ | id | quote name | asset | liquidity monitoring | risk model | margin calculator | auction duration | fees | price monitoring | data source config | linear slippage factor | quadratic slippage factor | sla params |
+ | ETH/FEB23 | ETH | USD | lqm-params | simple-risk-model | default-margin-calculator | 1 | default-none | my-price-monitoring | default-eth-for-future | 0.25 | 0 | default-futures |
+
+ And the following network parameters are set:
+ | name | value |
+ | market.auction.minimumDuration | 1 |
+ Given the average block duration is "1"
+
+ Scenario: 001 switch to isolated margin during auction
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | buySideProvider | USD | 100000000000 |
+ | sellSideProvider | USD | 100000000000 |
+ | party1 | USD | 14110 |
+
+ When the parties submit the following liquidity provision:
+ | id | party | market id | commitment amount | fee | lp type |
+ | lp1 | party1 | ETH/FEB23 | 1000 | 0.1 | submission |
+
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | buySideProvider | ETH/FEB23 | buy | 10 | 14900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | buySideProvider | ETH/FEB23 | buy | 3 | 15600 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | buySideProvider | ETH/FEB23 | buy | 1 | 15800 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | party1 | ETH/FEB23 | sell | 1 | 15800 | 0 | TYPE_LIMIT | TIF_GTC | p1-sell |
+ | sellSideProvider | ETH/FEB23 | sell | 1 | 200000 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | sellSideProvider | ETH/FEB23 | sell | 10 | 200100 | 0 | TYPE_LIMIT | TIF_GTC | |
+
+ When the network moves ahead "2" blocks
+ And the market data for the market "ETH/FEB23" should be:
+ | mark price | trading mode | horizon | min bound | max bound | target stake | supplied stake | open interest |
+ | 15800 | TRADING_MODE_CONTINUOUS | 5 | 15701 | 15899 | 0 | 1000 | 1 |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | bond |
+ | party1 | USD | ETH/FEB23 | 6636 | 6474 | 1000 |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 5530 | 6083 | 6636 | 7742 | cross margin | 0 | 0 |
+
+ #AC0019-MCAL-104: switch to isolated margin with position and no orders with margin factor such that position margin is < initial should fail in continuous
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.1 | Margin factor (0.1) must be greater than max(riskFactorLong (0.1), riskFactorShort (0.1)) |
+
+ #AC0019-MCAL-112:switch to isolated margin with position and no orders with margin factor such that there is insufficient balance in the general account in continuous mode
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.9 | insufficient balance in general account to cover for required order margin |
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | bond |
+ | party1 | USD | ETH/FEB23 | 6636 | 6474 | 1000 |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 5530 | 6083 | 6636 | 7742 | cross margin | 0 | 0 |
+
+ #AC0019-MCAL-120: witch to isolated margin with position and no orders successful in continuous mode
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.6 | |
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | bond |
+ | party1 | USD | ETH/FEB23 | 9480 | 3630 | 1000 |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 5530 | 0 | 6636 | 0 | isolated margin | 0.6 | 0 |
+
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | cross margin | | |
+
+ #now trigger price monitoring auction
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | sellSideProvider | ETH/FEB23 | sell | 1 | 15600 | 0 | TYPE_LIMIT | TIF_GTC | |
+ And the market data for the market "ETH/FEB23" should be:
+ | mark price | trading mode |
+ | 15800 | TRADING_MODE_MONITORING_AUCTION |
+
+ #AC0019-MCAL-105: switch to isolated margin with position and no orders with margin factor such that position margin is < initial should fail in auction
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.1 | Margin factor (0.1) must be greater than max(riskFactorLong (0.1), riskFactorShort (0.1)) |
+
+ When the network moves ahead "1" blocks
+ #AC0019-MCAL-113:switch to isolated margin with position and no orders with margin factor such that there is insufficient balance in the general account in continuous mode
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.95 | insufficient balance in general account to cover for required order margin |
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | bond |
+ | party1 | USD | ETH/FEB23 | 9480 | 3630 | 1000 |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 5530 | 6083 | 6636 | 7742 | cross margin | 0 | 0 |
+
+ #AC0019-MCAL-121:switch to isolated margin with position and no orders successful in auction
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.6 | |
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | bond |
+ | party1 | USD | ETH/FEB23 | 9480 | 3630 | 1000 |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 5530 | 0 | 6636 | 0 | isolated margin | 0.6 | 0 |
+
+ #AC0019-MCAL-128:increase margin factor in isolated margin with position and no orders successful in auction
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.7 | |
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | bond |
+ | party1 | USD | ETH/FEB23 | 11060 | 2050 | 1000 |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 5530 | 0 | 6636 | 0 | isolated margin | 0.7 | 0 |
+
+ #AC0019-MCAL-040:When increasing the `margin factor` and the party does not have enough asset in the general account to cover the new maintenance margin, then the new margin factor will be rejected
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.9 | insufficient balance in general account to cover for required order margin |
+
+ #AC0019-MCAL-137:switch to cross margin with position and no orders successful in auction
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | cross margin | | |
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | bond |
+ | party1 | USD | ETH/FEB23 | 11060 | 2050 | 1000 |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 5530 | 6083 | 6636 | 7742 | cross margin | 0 | 0 |
+
+ And the market data for the market "ETH/FEB23" should be:
+ | mark price | trading mode |
+ | 15800 | TRADING_MODE_MONITORING_AUCTION |
+
diff --git a/core/integration/features/margin/0019-MCAL-107.feature b/core/integration/features/margin/0019-MCAL-107.feature
new file mode 100644
index 0000000000..535ee392d2
--- /dev/null
+++ b/core/integration/features/margin/0019-MCAL-107.feature
@@ -0,0 +1,129 @@
+Feature: switch to isolated margin without position and with orders in auction
+ Background:
+ # switch between cross margin and isolated margin mode during auction
+ Given the following network parameters are set:
+ | name | value |
+ | network.markPriceUpdateMaximumFrequency | 0s |
+ And the liquidity monitoring parameters:
+ | name | triggering ratio | time window | scaling factor |
+ | lqm-params | 0.00 | 24h | 1e-9 |
+ And the simple risk model named "simple-risk-model":
+ | long | short | max move up | min move down | probability of trading |
+ | 0.1 | 0.1 | 100 | -100 | 0.2 |
+ And the markets:
+ | id | quote name | asset | liquidity monitoring | risk model | margin calculator | auction duration | fees | price monitoring | data source config | linear slippage factor | quadratic slippage factor | sla params |
+ | ETH/FEB23 | ETH | USD | lqm-params | simple-risk-model | default-margin-calculator | 1 | default-none | default-none | default-eth-for-future | 0.25 | 0 | default-futures |
+
+ And the following network parameters are set:
+ | name | value |
+ | market.auction.minimumDuration | 8 |
+ Given the average block duration is "1"
+
+ Scenario: 001 switch to isolated margin during auction
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | buySideProvider | USD | 100000000000 |
+ | sellSideProvider | USD | 100000000000 |
+ | party1 | USD | 273500 |
+
+ When the parties submit the following liquidity provision:
+ | id | party | market id | commitment amount | fee | lp type |
+ | lp1 | party1 | ETH/FEB23 | 1000 | 0.1 | submission |
+
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | buySideProvider | ETH/FEB23 | buy | 10 | 14900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | buySideProvider | ETH/FEB23 | buy | 6 | 15800 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | party1 | ETH/FEB23 | sell | 1 | 15800 | 0 | TYPE_LIMIT | TIF_GTC | p1-sell |
+ | sellSideProvider | ETH/FEB23 | sell | 1 | 200000 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | sellSideProvider | ETH/FEB23 | sell | 10 | 200100 | 0 | TYPE_LIMIT | TIF_GTC | |
+
+ When the network moves ahead "2" blocks
+ And the order book should have the following volumes for market "ETH/FEB23":
+ | side | price | volume |
+ | buy | 14900 | 10 |
+ | buy | 15800 | 6 |
+ | sell | 15800 | 1 |
+ | sell | 15900 | 0 |
+ | sell | 200000 | 1 |
+ And the parties should have the following margin levels:
+ | party | market id | maintenance |
+ | buySideProvider | ETH/FEB23 | 24380 |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | bond |
+ | party1 | USD | ETH/FEB23 | 1896 | 270604 | 1000 |
+
+ And the market data for the market "ETH/FEB23" should be:
+ | mark price | trading mode |
+ | 0 | TRADING_MODE_OPENING_AUCTION |
+
+ #AC0019-MCAL-107: switch to isolated margin without position and with orders with margin factor such that position margin is < initial should fail in auction
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.1 | Margin factor (0.1) must be greater than max(riskFactorLong (0.1), riskFactorShort (0.1)) |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 1580 | 1738 | 1896 | 2212 | cross margin | 0 | 0 |
+
+ #AC0019-MCAL-123:switch to isolated margin without position and with orders successful in auction
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.6 | |
+
+ # @jiajia
+ # the party has no position so position initial/maintenance is 0...
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 0 | 0 | 0 | 0 | isolated margin | 0.6 | 9480 |
+
+ #AC0019-MCAL-131:increase margin factor in isolated margin without position and with orders successful in auction
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.7 | |
+
+ # same, the don't have position so their maintenance margin (which doesn't consider orders) is 0
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 0 | 0 | 0 | 0 | isolated margin | 0.7 | 11060 |
+
+ And the orders should have the following status:
+ | party | reference | status |
+ | party1 | p1-sell | STATUS_ACTIVE |
+
+ When the parties cancel the following orders:
+ | party | reference |
+ | party1 | p1-sell |
+
+ And the orders should have the following status:
+ | party | reference | status |
+ | party1 | p1-sell | STATUS_CANCELLED |
+
+ And the market data for the market "ETH/FEB23" should be:
+ | mark price | trading mode |
+ | 0 | TRADING_MODE_OPENING_AUCTION |
+
+ #AC0019-MCAL-135:switch to cross margin without position and no orders successful in auction
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | cross margin | | no market observable price |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 0 | 0 | 0 | 0 | isolated margin | 0.7 | 0 |
+
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | sellSideProvider | ETH/FEB23 | sell | 1 | 15800 | 0 | TYPE_LIMIT | TIF_GTC | |
+
+ #AC0019-MCAL-103:switch back to cross margin with no position and no order in continuous mode in auction
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor |
+ | party1 | ETH/FEB23 | cross margin | |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 0 | 0 | 0 | 0 | cross margin | 0.7 | 0 |
+
+
diff --git a/core/integration/features/margin/0019-MCAL-109.feature b/core/integration/features/margin/0019-MCAL-109.feature
new file mode 100644
index 0000000000..bd5cbdfa0d
--- /dev/null
+++ b/core/integration/features/margin/0019-MCAL-109.feature
@@ -0,0 +1,273 @@
+Feature: switch to isolated margin without position and with orders during auction
+ Background:
+ # switch between cross margin and isolated margin mode during auction
+ Given the following network parameters are set:
+ | name | value |
+ | network.markPriceUpdateMaximumFrequency | 0s |
+ And the price monitoring named "my-price-monitoring":
+ | horizon | probability | auction extension |
+ | 5 | 0.95 | 6 |
+ | 10 | 0.99 | 8 |
+ And the liquidity monitoring parameters:
+ | name | triggering ratio | time window | scaling factor |
+ | lqm-params | 0.00 | 24h | 1e-9 |
+ And the simple risk model named "simple-risk-model":
+ | long | short | max move up | min move down | probability of trading |
+ | 0.1 | 0.1 | 100 | -100 | 0.2 |
+ And the markets:
+ | id | quote name | asset | liquidity monitoring | risk model | margin calculator | auction duration | fees | price monitoring | data source config | linear slippage factor | quadratic slippage factor | sla params |
+ | ETH/FEB23 | ETH | USD | lqm-params | simple-risk-model | default-margin-calculator | 1 | default-none | my-price-monitoring | default-eth-for-future | 0.25 | 0 | default-futures |
+
+ And the following network parameters are set:
+ | name | value |
+ | market.auction.minimumDuration | 1 |
+ Given the average block duration is "1"
+
+ Scenario: 001 switch to isolated margin during auction
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | buySideProvider | USD | 100000000000 |
+ | sellSideProvider | USD | 100000000000 |
+ | party1 | USD | 28550 |
+ | party2 | USD | 84110 |
+ | party3 | USD | 84110 |
+ | party4 | USD | 84110 |
+ | party5 | USD | 84110 |
+
+ When the parties submit the following liquidity provision:
+ | id | party | market id | commitment amount | fee | lp type |
+ | lp1 | party1 | ETH/FEB23 | 1000 | 0.1 | submission |
+
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | buySideProvider | ETH/FEB23 | buy | 10 | 14900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | buySideProvider | ETH/FEB23 | buy | 3 | 15600 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | buySideProvider | ETH/FEB23 | buy | 1 | 15800 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | buySideProvider | ETH/FEB23 | buy | 1 | 15800 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | party4 | ETH/FEB23 | sell | 1 | 15800 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | party1 | ETH/FEB23 | sell | 1 | 15800 | 0 | TYPE_LIMIT | TIF_GTC | p1-sell |
+ | party2 | ETH/FEB23 | sell | 1 | 15802 | 0 | TYPE_LIMIT | TIF_GTC | p1-sell |
+ | party1 | ETH/FEB23 | sell | 2 | 15804 | 0 | TYPE_LIMIT | TIF_GTC | p1-sell |
+ | sellSideProvider | ETH/FEB23 | sell | 3 | 200000 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | sellSideProvider | ETH/FEB23 | sell | 10 | 200100 | 0 | TYPE_LIMIT | TIF_GTC | |
+
+ When the network moves ahead "2" blocks
+ And the market data for the market "ETH/FEB23" should be:
+ | mark price | trading mode | horizon | min bound | max bound | target stake | supplied stake | open interest |
+ | 15800 | TRADING_MODE_CONTINUOUS | 5 | 15701 | 15899 | 0 | 1000 | 2 |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | bond |
+ | party1 | USD | ETH/FEB23 | 5689 | 21861 | 1000 |
+
+ #maintenance margin: min((15802-15800),15800*0.1)+0.1*15800+2*0.1*15800=4742
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 4742 | 5216 | 5690 | 6638 | cross margin | 0 | 0 |
+
+ #AC0019-MCAL-134:switch to cross margin without position and no orders successful in continuous mode
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party5 | ETH/FEB23 | isolated margin | 0.4 | |
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party5 | ETH/FEB23 | 0 | 0 | 0 | 0 | isolated margin | 0.4 | 0 |
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party5 | ETH/FEB23 | cross margin | 0.4 | |
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party5 | ETH/FEB23 | 0 | 0 | 0 | 0 | cross margin | 0.4 | 0 |
+
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | party5 | ETH/FEB23 | buy | 1 | 14800 | 0 | TYPE_LIMIT | TIF_GTC | |
+
+ #AC0019-MCAL-130: increase margin factor in isolated margin without position and with orders successful in continuous mode
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party5 | ETH/FEB23 | isolated margin | 0.4 | |
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party5 | ETH/FEB23 | 0 | 0 | 0 | 0 | isolated margin | 0.4 | 5920 |
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party5 | ETH/FEB23 | isolated margin | 0.5 | |
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party5 | ETH/FEB23 | 0 | 0 | 0 | 0 | isolated margin | 0.5 | 7400 |
+
+ #now trigger price monitoring auction
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | sellSideProvider | ETH/FEB23 | sell | 1 | 15600 | 0 | TYPE_LIMIT | TIF_GTC | |
+ And the market data for the market "ETH/FEB23" should be:
+ | mark price | trading mode |
+ | 15800 | TRADING_MODE_MONITORING_AUCTION |
+
+ #AC0019-MCAL-109: switch to isolated margin with position and with orders with margin factor such that position margin is < initial should fail in auction
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.2 | required position margin must be greater than initial margin |
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | bond |
+ | party1 | USD | ETH/FEB23 | 5689 | 21861 | 1000 |
+
+ #AC0019-MCAL-122: switch to isolated margin without position and with orders successful in continuous mode
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party2 | ETH/FEB23 | isolated margin | 0.4 | |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party2 | ETH/FEB23 | 0 | 0 | 0 | 0 | isolated margin | 0.4 | 6320 |
+
+ #AC0019-MCAL-138: switch to cross margin without position and with orders successful in continuous mode
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party2 | ETH/FEB23 | cross margin | | |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party2 | ETH/FEB23 | 1581 | 1739 | 1897 | 2213 | cross margin | 0 | 0 |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 4742 | 5216 | 5690 | 6638 | cross margin | 0 | 0 |
+
+ When the network moves ahead "1" blocks
+ #AC0019-MCAL-142:switch to isolated margin with position and with orders with margin factor such that there is insufficient balance in the general account in continuous mode
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.9 | insufficient balance in general account to cover for required order margin |
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | bond |
+ | party1 | USD | ETH/FEB23 | 5689 | 21861 | 1000 |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 4742 | 5216 | 5690 | 6638 | cross margin | 0 | 0 |
+
+ #AC0019-MCAL-123:switch to isolated margin with position and with orders successful in auction
+ #required position margin: 15800*0.6=9480
+ #maintenance margin for position: 15800*0.25+0.1*15800=5530
+ #initial margin for position: 5530*1.2=6636
+ # @jiajia there's insufficient in the general account here:
+ # for this switch to work they need 22755 in their general account, they only have 21861
+ # requiredPositionMargin 9480
+ # requireOrderMargin 18964.8
+ # total required: 9480 + 18964 - 5689 = 22,755
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.6 | insufficient balance in general account to cover for required order margin |
+
+ #AC0019-MCAL-124:switch to isolated margin with position and with orders successful in continuous mode
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.55 | |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | bond |
+ | party1 | USD | ETH/FEB23 | 8690 | 1476 | 1000 |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 5530 | 0 | 6636 | 0 | isolated margin | 0.55 | 17384 |
+
+ #AC0019-MCAL-141:switch to cross margin with position and with orders successful in auction
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | cross margin | | |
+
+ #AC0019-MCAL-036: When the party switches to cross margin mode, the margin accounts will not be updated until the next MTM
+ When the network moves ahead "1" blocks
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | bond |
+ | party1 | USD | ETH/FEB23 | 26074 | 1476 | 1000 |
+
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 8691 | 9560 | 10429 | 12167 | cross margin | 0 | 0 |
+
+ And the market data for the market "ETH/FEB23" should be:
+ | mark price | trading mode |
+ | 15800 | TRADING_MODE_MONITORING_AUCTION |
+
+ #AC0019-MCAL-119:switch to isolated margin without position and no orders successful in auction
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party3 | ETH/FEB23 | isolated margin | 0.4 | |
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party3 | ETH/FEB23 | 0 | 0 | 0 | 0 | isolated margin | 0.4 | 0 |
+
+ #AC0019-MCAL-126:increase margin factor without position and no orders successful in auction
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party3 | ETH/FEB23 | isolated margin | 0.6 | |
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party3 | ETH/FEB23 | 0 | 0 | 0 | 0 | isolated margin | 0.6 | 0 |
+
+ #AC0019-MCAL-127:increase margin factor without position and no orders successful in auction
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party3 | ETH/FEB23 | isolated margin | 0.65 | |
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party3 | ETH/FEB23 | 0 | 0 | 0 | 0 | isolated margin | 0.65 | 0 |
+
+ #AC0019-MCAL-135:switch to cross margin without position and no orders successful in auction
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party3 | ETH/FEB23 | cross margin | 0.4 | |
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party3 | ETH/FEB23 | 0 | 0 | 0 | 0 | cross margin | 0.4 | 0 |
+
+ #AC0019-MCAL-125:switch to isolated margin with position and orders successful in auction
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.55 | |
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 5530 | 0 | 6636 | 0 | isolated margin | 0.55 | 17384 |
+
+ #AC0019-MCAL-133:increase margin factor in isolated margin with position and with orders successful in auction
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.56 | |
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 5530 | 0 | 6636 | 0 | isolated margin | 0.56 | 17700 |
+
+ #AC0019-MCAL-129:increase margin factor in isolated margin with position and no orders successful in auction
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party4 | ETH/FEB23 | isolated margin | 0.5 | |
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party4 | ETH/FEB23 | 5530 | 0 | 6636 | 0 | isolated margin | 0.5 | 0 |
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party4 | ETH/FEB23 | isolated margin | 0.6 | |
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party4 | ETH/FEB23 | 5530 | 0 | 6636 | 0 | isolated margin | 0.6 | 0 |
+
+ #AC0019-MCAL-140:switch to cross margin with position and orders successful in auction
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | cross margin | 0.4 | |
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 8691 | 9560 | 10429 | 12167 | cross margin | 0.4 | 0 |
+
+ #AC0019-MCAL-139:switch to cross margin without position and with orders successful in auction
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party5 | ETH/FEB23 | cross margin | 0.5 | |
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party5 | ETH/FEB23 | 1480 | 1628 | 1776 | 2072 | cross margin | 0.5 | 0 |
+
diff --git a/core/integration/features/margin/0019-MCAL-128.feature b/core/integration/features/margin/0019-MCAL-128.feature
new file mode 100644
index 0000000000..c87077dc6a
--- /dev/null
+++ b/core/integration/features/margin/0019-MCAL-128.feature
@@ -0,0 +1,132 @@
+Feature: switch to isolated margin with position and without orders during continuous
+ Background:
+ # switch between cross margin and isolated margin mode during auction
+ Given the following network parameters are set:
+ | name | value |
+ | network.markPriceUpdateMaximumFrequency | 0s |
+ And the price monitoring named "my-price-monitoring":
+ | horizon | probability | auction extension |
+ | 5 | 0.95 | 6 |
+ | 10 | 0.99 | 8 |
+ And the liquidity monitoring parameters:
+ | name | triggering ratio | time window | scaling factor |
+ | lqm-params | 0.00 | 24h | 1e-9 |
+ And the simple risk model named "simple-risk-model":
+ | long | short | max move up | min move down | probability of trading |
+ | 0.1 | 0.1 | 100 | -100 | 0.2 |
+ And the markets:
+ | id | quote name | asset | liquidity monitoring | risk model | margin calculator | auction duration | fees | price monitoring | data source config | linear slippage factor | quadratic slippage factor | sla params |
+ | ETH/FEB23 | ETH | USD | lqm-params | simple-risk-model | default-margin-calculator | 1 | default-none | my-price-monitoring | default-eth-for-future | 0.25 | 0 | default-futures |
+
+ And the following network parameters are set:
+ | name | value |
+ | market.auction.minimumDuration | 1 |
+ Given the average block duration is "1"
+
+ Scenario: 001 switch to isolated margin during auction
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | buySideProvider | USD | 100000000000 |
+ | sellSideProvider | USD | 100000000000 |
+ | party1 | USD | 20908 |
+ | party2 | USD | 84110 |
+
+ When the parties submit the following liquidity provision:
+ | id | party | market id | commitment amount | fee | lp type |
+ | lp1 | party1 | ETH/FEB23 | 1000 | 0.1 | submission |
+
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | buySideProvider | ETH/FEB23 | buy | 10 | 14900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | buySideProvider | ETH/FEB23 | buy | 3 | 15600 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | buySideProvider | ETH/FEB23 | buy | 3 | 15800 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | party1 | ETH/FEB23 | sell | 3 | 15800 | 0 | TYPE_LIMIT | TIF_GTC | p1-sell |
+ | sellSideProvider | ETH/FEB23 | sell | 3 | 200000 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | sellSideProvider | ETH/FEB23 | sell | 10 | 200100 | 0 | TYPE_LIMIT | TIF_GTC | |
+
+ When the network moves ahead "2" blocks
+ And the market data for the market "ETH/FEB23" should be:
+ | mark price | trading mode | horizon | min bound | max bound | target stake | supplied stake | open interest |
+ | 15800 | TRADING_MODE_CONTINUOUS | 5 | 15701 | 15899 | 0 | 1000 | 3 |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | bond |
+ | party1 | USD | ETH/FEB23 | 19908 | 0 | 1000 |
+
+ #maintenance margin: min((200000-15800),15800*0.25)+0.1*15800=5530
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 16590 | 18249 | 19908 | 23226 | cross margin | 0 | 0 |
+
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.1 | Margin factor (0.1) must be greater than max(riskFactorLong (0.1), riskFactorShort (0.1)) |
+
+ #AC0019-MCAL-108: switch to isolated margin with position and with orders with margin factor such that position margin is < initial should fail in continuous
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.2 | required position margin must be greater than initial margin |
+
+ #AC0019-MCAL-112: switch to isolated margin with position and no orders with margin factor such that there is insufficient balance in the general account in continuous mode
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.8 | insufficient balance in general account to cover for required order margin |
+
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | party1 | ETH/FEB23 | buy | 2 | 15800 | 0 | TYPE_LIMIT | TIF_GTC | p1-sell-1 |
+ | sellSideProvider | ETH/FEB23 | sell | 2 | 15800 | 1 | TYPE_LIMIT | TIF_GTC | |
+
+ When the network moves ahead "1" blocks
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | bond |
+ | party1 | USD | ETH/FEB23 | 6636 | 13272 | 1000 |
+
+ #AC0019-MCAL-120: switch to isolated margin with position and no orders successful in continuous mode
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.5 | |
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 5530 | 0 | 6636 | 0 | isolated margin | 0.5 | 0 |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | bond |
+ | party1 | USD | ETH/FEB23 | 7900 | 12008 | 1000 |
+
+ #AC0019-MCAL-128: increase margin factor in isolated margin with position and no orders successful in continuous mode
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.7 | |
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 5530 | 0 | 6636 | 0 | isolated margin | 0.7 | 0 |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | bond |
+ | party1 | USD | ETH/FEB23 | 11060 | 8848 | 1000 |
+
+ #AC0019-MCAL-128: decrease margin factor in isolated margin with position and no orders successful in continuous mode
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.6 | |
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 5530 | 0 | 6636 | 0 | isolated margin | 0.6 | 0 |
+
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | bond |
+ | party1 | USD | ETH/FEB23 | 9480 | 10428 | 1000 |
+
+ #AC0019-MCAL-136: switch to cross margin with position and no orders successful in continuous mode
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | cross margin | | |
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 5530 | 6083 | 6636 | 7742 | cross margin | 0 | 0 |
+
+ When the network moves ahead "1" blocks
+ Then the parties should have the following account balances:
+ | party | asset | market id | margin | general | bond |
+ | party1 | USD | ETH/FEB23 | 9480 | 10428 | 1000 |
diff --git a/core/integration/features/margin/0019-MCAL-150.feature b/core/integration/features/margin/0019-MCAL-150.feature
new file mode 100644
index 0000000000..39c9ff349f
--- /dev/null
+++ b/core/integration/features/margin/0019-MCAL-150.feature
@@ -0,0 +1,136 @@
+Feature: pegged order in isoalted margin is not supported
+ Background:
+ Given the following network parameters are set:
+ | name | value |
+ | network.markPriceUpdateMaximumFrequency | 0s |
+ | limits.markets.maxPeggedOrders | 6 |
+ And the price monitoring named "my-price-monitoring-1":
+ | horizon | probability | auction extension |
+ | 5 | 0.99 | 6 |
+
+ And the liquidity monitoring parameters:
+ | name | triggering ratio | time window | scaling factor |
+ | lqm-params | 0.00 | 24h | 1e-9 |
+ And the simple risk model named "simple-risk-model":
+ | long | short | max move up | min move down | probability of trading |
+ | 0.1 | 0.2 | 100 | -100 | 0.2 |
+ And the markets:
+ | id | quote name | asset | liquidity monitoring | risk model | margin calculator | auction duration | fees | price monitoring | data source config | linear slippage factor | quadratic slippage factor | sla params |
+ | ETH/FEB23 | ETH | USD | lqm-params | simple-risk-model | default-margin-calculator | 1 | default-none | my-price-monitoring-1 | default-eth-for-future | 0.25 | 0 | default-futures |
+
+ And the following network parameters are set:
+ | name | value |
+ | market.auction.minimumDuration | 1 |
+ Given the average block duration is "1"
+
+ Scenario: When the party has pegged orders and switches from cross margin mode to isolated margin mode, all the pegged orders will be stopped. (0019-MCAL-050)
+ Given the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | buySideProvider | USD | 100000000000 |
+ | sellSideProvider | USD | 100000000000 |
+ | party1 | USD | 158550 |
+
+ When the parties submit the following liquidity provision:
+ | id | party | market id | commitment amount | fee | lp type |
+ | lp1 | party1 | ETH/FEB23 | 1000 | 0.1 | submission |
+
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | buySideProvider | ETH/FEB23 | buy | 10 | 14900 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | buySideProvider | ETH/FEB23 | buy | 3 | 15600 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | party1 | ETH/FEB23 | buy | 1 | 15700 | 0 | TYPE_LIMIT | TIF_GTC | p1-buy-1 |
+ | buySideProvider | ETH/FEB23 | buy | 3 | 15800 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | party1 | ETH/FEB23 | sell | 3 | 15800 | 0 | TYPE_LIMIT | TIF_GTC | p1-sell-1 |
+ | sellSideProvider | ETH/FEB23 | sell | 6 | 15802 | 0 | TYPE_LIMIT | TIF_GTC | sP-sell |
+ | sellSideProvider | ETH/FEB23 | sell | 3 | 200000 | 0 | TYPE_LIMIT | TIF_GTC | |
+ | sellSideProvider | ETH/FEB23 | sell | 10 | 200100 | 0 | TYPE_LIMIT | TIF_GTC | |
+
+ When the network moves ahead "2" blocks
+ And the market data for the market "ETH/FEB23" should be:
+ | mark price | trading mode | horizon | min bound | max bound | target stake | supplied stake | open interest |
+ | 15800 | TRADING_MODE_CONTINUOUS | 5 | 15701 | 15899 | 0 | 1000 | 3 |
+
+ #now we try to place short pegged order which does offset the current short position, order margin should be 0
+ When the parties place the following pegged orders:
+ | party | market id | side | volume | pegged reference | offset | reference |
+ | party1 | ETH/FEB23 | buy | 1 | BID | 10 | buy_peg_1 |
+ | party1 | ETH/FEB23 | buy | 2 | BID | 20 | buy_peg_2 |
+
+ Then the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 9486 | 10434 | 11383 | 13280 | cross margin | 0 | 0 |
+ And the parties should have the following account balances:
+ | party | asset | market id | margin | general | bond |
+ | party1 | USD | ETH/FEB23 | 11383 | 146167 | 1000 |
+
+ #switch to isolated margin
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.1 | Margin factor (0.1) must be greater than max(riskFactorLong (0.1), riskFactorShort (0.2)) |
+
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.2 | Margin factor (0.2) must be greater than max(riskFactorLong (0.1), riskFactorShort (0.2)) |
+
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.21 | required position margin must be greater than initial margin |
+
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.3 | |
+
+ Then the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 9486 | 0 | 11383 | 0 | isolated margin | 0.3 | 0 |
+
+ Then the orders should have the following status:
+ | party | reference | status |
+ | party1 | buy_peg_1 | STATUS_CANCELLED |
+ | party1 | buy_peg_2 | STATUS_CANCELLED |
+ | party1 | p1-sell-1 | STATUS_FILLED |
+ | party1 | p1-buy-1 | STATUS_ACTIVE |
+
+ #0019-MCAL-049:When the party submit a pegged order, it should be rejected
+ When the parties place the following pegged orders:
+ | party | market id | side | volume | pegged reference | offset | reference | error |
+ | party1 | ETH/FEB23 | buy | 1 | BID | 10 | buy_peg_3 | invalid OrderError |
+ | party1 | ETH/FEB23 | buy | 2 | BID | 20 | buy_peg_4 | invalid OrderError |
+
+ Then the orders should have the following status:
+ | party | reference | status |
+ | party1 | buy_peg_3 | STATUS_REJECTED |
+ | party1 | buy_peg_4 | STATUS_REJECTED |
+
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | cross margin | 0 | |
+ Then the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 9486 | 10434 | 11383 | 13280 | cross margin | 0 | 0 |
+
+ #0019-MCAL-051:When the party has iceberg pegged orders and switches from cross margin mode to isolated margin mode, all the iceberg pegged orders will be stopped.
+ When the parties place the following pegged orders:
+ | party | market id | side | volume | pegged reference | offset | reference | error |
+ | party1 | ETH/FEB23 | buy | 1 | BID | 10 | buy_peg_5 | |
+ | party1 | ETH/FEB23 | buy | 2 | BID | 20 | buy_peg_6 | |
+
+ Then the orders should have the following status:
+ | party | reference | status |
+ | party1 | buy_peg_5 | STATUS_ACTIVE |
+ | party1 | buy_peg_6 | STATUS_ACTIVE |
+
+ And the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | party1 | ETH/FEB23 | isolated margin | 0.3 | |
+
+ Then the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | party1 | ETH/FEB23 | 9486 | 0 | 11383 | 0 | isolated margin | 0.3 | 0 |
+
+ Then the orders should have the following status:
+ | party | reference | status |
+ | party1 | buy_peg_5 | STATUS_CANCELLED |
+ | party1 | buy_peg_6 | STATUS_CANCELLED |
+
+
diff --git a/core/integration/features/margin/margin-for-parked-orders.feature b/core/integration/features/margin/margin-for-parked-orders.feature
new file mode 100644
index 0000000000..c93980fc94
--- /dev/null
+++ b/core/integration/features/margin/margin-for-parked-orders.feature
@@ -0,0 +1,283 @@
+Feature: Test for parked/unparked pegged orders
+ Background: Background name:
+ Given the following network parameters are set:
+ | name | value |
+ | network.markPriceUpdateMaximumFrequency | 0s |
+ | limits.markets.maxPeggedOrders | 6 |
+ And the average block duration is "1"
+ And the liquidity monitoring parameters:
+ | name | triggering ratio | time window | scaling factor |
+ | lqm-params | 0.00 | 24h | 1e-9 |
+ And the simple risk model named "simple-risk-model":
+ | long | short | max move up | min move down | probability of trading |
+ | 0.1 | 0.1 | 100 | -100 | 0.2 |
+ And the price monitoring named "price-monitoring":
+ | horizon | probability | auction extension |
+ | 3600 | 0.95 | 3 |
+ And the markets:
+ | id | quote name | asset | liquidity monitoring | risk model | margin calculator | auction duration | fees | price monitoring | data source config | linear slippage factor | quadratic slippage factor | sla params |
+ | ETH/FEB23 | ETH | USD | lqm-params | simple-risk-model | default-margin-calculator | 1 | default-none | price-monitoring | default-eth-for-future | 0.25 | 0 | default-futures |
+ And the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | lpprov | USD | 100000000000 |
+ | aux_buys | USD | 100000000000 |
+ | aux_sells | USD | 100000000000 |
+ | test_party | USD | 100000 |
+
+ When the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | aux_buys | ETH/FEB23 | buy | 10 | 995 | 0 | TYPE_LIMIT | TIF_GTC | buy-1 |
+ | aux_buys | ETH/FEB23 | buy | 10 | 1000 | 0 | TYPE_LIMIT | TIF_GTC | buy-trade-1 |
+ | aux_sells | ETH/FEB23 | sell | 10 | 1000 | 0 | TYPE_LIMIT | TIF_GTC | sell-trade-1 |
+ | aux_sells | ETH/FEB23 | sell | 10 | 1000 | 0 | TYPE_LIMIT | TIF_GTC | sell-1 |
+ | aux_sells | ETH/FEB23 | sell | 10 | 1505 | 0 | TYPE_LIMIT | TIF_GTC | sell-2 |
+ | lpprov | ETH/FEB23 | buy | 10 | 100 | 0 | TYPE_LIMIT | TIF_GTC | lp-buy-1 |
+ | lpprov | ETH/FEB23 | sell | 10 | 10000 | 0 | TYPE_LIMIT | TIF_GTC | lp-sell-1 |
+ And the parties submit the following liquidity provision:
+ | id | party | market id | commitment amount | fee | lp type |
+ | lp1 | lpprov | ETH/FEB23 | 900000 | 0.1 | submission |
+ | lp1 | lpprov | ETH/FEB23 | 900000 | 0.1 | submission |
+
+ Then the opening auction period ends for market "ETH/FEB23"
+ And the mark price should be "1000" for the market "ETH/FEB23"
+ And the trading mode should be "TRADING_MODE_CONTINUOUS" for the market "ETH/FEB23"
+ And the network moves ahead "1" blocks
+
+ Scenario: In cross margin mode, party park pegged order, switch to isolated margin and the pegged order is cancelled 0019-MCAL-143
+ # enter pegged order here
+ Given the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | test_party | ETH/FEB23 | cross margin | | |
+ When the parties place the following pegged orders:
+ | party | market id | side | volume | pegged reference | offset | reference |
+ | test_party | ETH/FEB23 | buy | 5 | MID | 1 | buy_peg |
+ Then the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | test_party | ETH/FEB23 | 500 | 550 | 600 | 700 | cross margin | | 0 |
+ And the parties should have the following account balances:
+ | party | asset | market id | margin | general |
+ | test_party | USD | ETH/FEB23 | 600 | 99400 |
+
+ Given the orders should have the following status:
+ | party | reference | status |
+ | test_party | buy_peg | STATUS_ACTIVE |
+ When the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | aux_buys | ETH/FEB23 | buy | 1000 | 10000 | 0 | TYPE_LIMIT | TIF_GTC | auction-trigger-1 |
+ Then the trading mode should be "TRADING_MODE_MONITORING_AUCTION" for the market "ETH/FEB23"
+ And the orders should have the following status:
+ | party | reference | status |
+ | test_party | buy_peg | STATUS_PARKED |
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | test_party | ETH/FEB23 | 0 | 0 | 0 | 0 | cross margin | | 0 |
+ And the parties should have the following account balances:
+ | party | asset | market id | margin | general |
+ | test_party | USD | ETH/FEB23 | 0 | 100000 |
+
+ Given the parties cancel the following orders:
+ | party | reference |
+ | aux_buys | auction-trigger-1 |
+ When the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | test_party | ETH/FEB23 | isolated margin | 0.50 | |
+ Then the orders should have the following status:
+ | party | reference | status |
+ | test_party | buy_peg | STATUS_CANCELLED |
+
+ Given the trading mode should be "TRADING_MODE_MONITORING_AUCTION" for the market "ETH/FEB23"
+ When the network moves ahead "4" blocks
+ Then the trading mode should be "TRADING_MODE_CONTINUOUS" for the market "ETH/FEB23"
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | test_party | ETH/FEB23 | 0 | 0 | 0 | 0 | isolated margin | 0.50 | 0 |
+ And the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | test_party | USD | ETH/FEB23 | 0 | 100000 | 0 |
+
+ Scenario: In cross margin mode, party park pegged order, switch to isolated margin and the pegged order is cancelled 0019-MCAL-144
+ # enter pegged iceberg order here
+ Given the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | test_party | ETH/FEB23 | cross margin | | |
+ When the parties place the following pegged iceberg orders:
+ | party | market id | peak size | minimum visible size | side | reference | pegged reference | volume | offset |
+ | test_party | ETH/FEB23 | 5 | 2 | buy | buy_ice_peg | MID | 5 | 1 |
+ # (1000 - 1) * 5 * 0.5 = 2492
+ Then the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | test_party | ETH/FEB23 | 500 | 550 | 600 | 700 | cross margin | | 0 |
+ And the parties should have the following account balances:
+ | party | asset | market id | margin | general |
+ | test_party | USD | ETH/FEB23 | 600 | 99400 |
+
+ Given the orders should have the following status:
+ | party | reference | status |
+ | test_party | buy_ice_peg | STATUS_ACTIVE |
+ When the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | aux_buys | ETH/FEB23 | buy | 1000 | 10000 | 0 | TYPE_LIMIT | TIF_GTC | auction-trigger-1 |
+ Then the trading mode should be "TRADING_MODE_MONITORING_AUCTION" for the market "ETH/FEB23"
+ And the orders should have the following status:
+ | party | reference | status |
+ | test_party | buy_ice_peg | STATUS_PARKED |
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | test_party | ETH/FEB23 | 0 | 0 | 0 | 0 | cross margin | | 0 |
+ And the parties should have the following account balances:
+ | party | asset | market id | margin | general |
+ | test_party | USD | ETH/FEB23 | 0 | 100000 |
+
+ Given the parties cancel the following orders:
+ | party | reference |
+ | aux_buys | auction-trigger-1 |
+ When the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | test_party | ETH/FEB23 | isolated margin | 0.50 | |
+ Then the orders should have the following status:
+ | party | reference | status |
+ | test_party | buy_ice_peg | STATUS_CANCELLED |
+
+ Given the trading mode should be "TRADING_MODE_MONITORING_AUCTION" for the market "ETH/FEB23"
+ When the network moves ahead "4" blocks
+ Then the trading mode should be "TRADING_MODE_CONTINUOUS" for the market "ETH/FEB23"
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | test_party | ETH/FEB23 | 0 | 0 | 0 | 0 | isolated margin | 0.50 | 0 |
+ And the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | test_party | USD | ETH/FEB23 | 0 | 100000 | 0 |
+
+ Scenario: In cross margin mode, partially fill pegged order, park then switch to isolated margin. Pegged order is cancelled 0019-MCAL-147
+ # enter pegged order here
+ Given the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | test_party | ETH/FEB23 | cross margin | | |
+ And the parties place the following pegged orders:
+ | party | market id | side | volume | pegged reference | offset | reference |
+ | test_party | ETH/FEB23 | buy | 5 | MID | 1 | buy_peg |
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | aux_sells | ETH/FEB23 | sell | 2 | 995 | 1 | TYPE_LIMIT | TIF_GTC | pfill_test_order |
+ And the following trades should be executed:
+ | buyer | price | size | seller |
+ | test_party | 997 | 2 | aux_sells |
+ Then the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | test_party | ETH/FEB23 | 500 | 550 | 600 | 700 | cross margin | | 0 |
+ And the parties should have the following account balances:
+ | party | asset | market id | margin | general |
+ | test_party | USD | ETH/FEB23 | 600 | 99400 |
+ Given the orders should have the following status:
+ | party | reference | status |
+ | test_party | buy_peg | STATUS_ACTIVE |
+ When the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | aux_buys | ETH/FEB23 | buy | 1000 | 10000 | 0 | TYPE_LIMIT | TIF_GTC | auction-trigger-1 |
+ Then the trading mode should be "TRADING_MODE_MONITORING_AUCTION" for the market "ETH/FEB23"
+ And the orders should have the following status:
+ | party | reference | status |
+ | test_party | buy_peg | STATUS_PARKED |
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | test_party | ETH/FEB23 | 500 | 550 | 600 | 700 | cross margin | | 0 |
+ And the parties should have the following account balances:
+ | party | asset | market id | margin | general |
+ | test_party | USD | ETH/FEB23 | 600 | 99400 |
+
+ Given the parties cancel the following orders:
+ | party | reference |
+ | aux_buys | auction-trigger-1 |
+ When the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | test_party | ETH/FEB23 | isolated margin | 0.50 | |
+ Then the orders should have the following status:
+ | party | reference | status |
+ | test_party | buy_peg | STATUS_CANCELLED |
+
+ Given the trading mode should be "TRADING_MODE_MONITORING_AUCTION" for the market "ETH/FEB23"
+ When the network moves ahead "4" blocks
+ Then the trading mode should be "TRADING_MODE_CONTINUOUS" for the market "ETH/FEB23"
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | test_party | ETH/FEB23 | 204 | 0 | 244 | 0 | isolated margin | 0.50 | 0 |
+ And the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | test_party | USD | ETH/FEB23 | 997 | 99003 | 0 |
+
+ Scenario: In cross margin mode, partially fill pegged order, park then switch to isolated margin. Pegged order is cancelled 0019-MCAL-148
+ # enter pegged iceberg order here
+ Given the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | test_party | ETH/FEB23 | cross margin | | |
+ When the parties place the following pegged iceberg orders:
+ | party | market id | peak size | minimum visible size | side | reference | pegged reference | volume | offset |
+ | test_party | ETH/FEB23 | 5 | 2 | buy | buy_ice_peg | MID | 5 | 1 |
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | aux_sells | ETH/FEB23 | sell | 2 | 995 | 1 | TYPE_LIMIT | TIF_GTC | pfill_test_order |
+ And the following trades should be executed:
+ | buyer | price | size | seller |
+ | test_party | 997 | 2 | aux_sells |
+ Then the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | test_party | ETH/FEB23 | 500 | 550 | 600 | 700 | cross margin | | 0 |
+ And the parties should have the following account balances:
+ | party | asset | market id | margin | general |
+ | test_party | USD | ETH/FEB23 | 600 | 99400 |
+ Given the orders should have the following status:
+ | party | reference | status |
+ | test_party | buy_ice_peg | STATUS_ACTIVE |
+ When the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | aux_buys | ETH/FEB23 | buy | 1000 | 10000 | 0 | TYPE_LIMIT | TIF_GTC | auction-trigger-1 |
+ Then the trading mode should be "TRADING_MODE_MONITORING_AUCTION" for the market "ETH/FEB23"
+ And the orders should have the following status:
+ | party | reference | status |
+ | test_party | buy_ice_peg | STATUS_PARKED |
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | test_party | ETH/FEB23 | 500 | 550 | 600 | 700 | cross margin | | 0 |
+ And the parties should have the following account balances:
+ | party | asset | market id | margin | general |
+ | test_party | USD | ETH/FEB23 | 600 | 99400 |
+
+ Given the parties cancel the following orders:
+ | party | reference |
+ | aux_buys | auction-trigger-1 |
+ When the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | test_party | ETH/FEB23 | isolated margin | 0.50 | |
+ Then the orders should have the following status:
+ | party | reference | status |
+ | test_party | buy_ice_peg | STATUS_CANCELLED |
+
+ Given the trading mode should be "TRADING_MODE_MONITORING_AUCTION" for the market "ETH/FEB23"
+ When the network moves ahead "4" blocks
+ Then the trading mode should be "TRADING_MODE_CONTINUOUS" for the market "ETH/FEB23"
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | test_party | ETH/FEB23 | 204 | 0 | 244 | 0 | isolated margin | 0.50 | 0 |
+ And the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | test_party | USD | ETH/FEB23 | 997 | 99003 | 0 |
+
+ Scenario: In auction a party in isolated margin mode enter pegged order that is rejected 0019-MCAL-049
+ Given the trading mode should be "TRADING_MODE_CONTINUOUS" for the market "ETH/FEB23"
+ When the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | aux_buys | ETH/FEB23 | buy | 1000 | 10000 | 0 | TYPE_LIMIT | TIF_GTC | auction-trigger-1 |
+ Then the trading mode should be "TRADING_MODE_MONITORING_AUCTION" for the market "ETH/FEB23"
+
+ Given the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | test_party | ETH/FEB23 | isolated margin | 0.5 | |
+ When the parties place the following pegged orders:
+ | party | market id | side | volume | pegged reference | offset | reference | error |
+ | test_party | ETH/FEB23 | buy | 5 | MID | 1 | buy_peg | invalid OrderError |
+ And the parties place the following pegged iceberg orders:
+ | party | market id | peak size | minimum visible size | side | reference | pegged reference | volume | offset | error |
+ | test_party | ETH/FEB23 | 5 | 2 | buy | buy_ice_peg | MID | 5 | 1 | invalid OrderError |
+ Then the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | test_party | ETH/FEB23 | 0 | 0 | 0 | 0 | isolated margin | | 0 |
\ No newline at end of file
diff --git a/core/integration/features/margin/margin-for-pegged-orders.feature b/core/integration/features/margin/margin-for-pegged-orders.feature
new file mode 100644
index 0000000000..14ee89d9de
--- /dev/null
+++ b/core/integration/features/margin/margin-for-pegged-orders.feature
@@ -0,0 +1,246 @@
+Feature: Test pegged order amend under isolated margin mode
+ Background:
+ Given the following network parameters are set:
+ | name | value |
+ | network.markPriceUpdateMaximumFrequency | 0s |
+ | limits.markets.maxPeggedOrders | 6 |
+ And the liquidity monitoring parameters:
+ | name | triggering ratio | time window | scaling factor |
+ | lqm-params | 0.00 | 24h | 1e-9 |
+ And the simple risk model named "simple-risk-model":
+ | long | short | max move up | min move down | probability of trading |
+ | 0.1 | 0.1 | 100 | -100 | 0.2 |
+ And the markets:
+ | id | quote name | asset | liquidity monitoring | risk model | margin calculator | auction duration | fees | price monitoring | data source config | linear slippage factor | quadratic slippage factor | sla params |
+ | ETH/FEB23 | ETH | USD | lqm-params | simple-risk-model | default-margin-calculator | 1 | default-none | default-none | default-eth-for-future | 0.25 | 0 | default-futures |
+ And the parties deposit on asset's general account the following amount:
+ | party | asset | amount |
+ | lpprov | USD | 100000000000 |
+ | aux_buys | USD | 100000000000 |
+ | aux_sells | USD | 100000000000 |
+ | test_party | USD | 100000 |
+ | test_party2 | USD | 100000 |
+
+ When the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | aux_buys | ETH/FEB23 | buy | 10 | 995 | 0 | TYPE_LIMIT | TIF_GTC | ref-1 |
+ | aux_buys | ETH/FEB23 | buy | 10 | 1000 | 0 | TYPE_LIMIT | TIF_GTC | ref-1 |
+ | aux_sells | ETH/FEB23 | sell | 10 | 1000 | 0 | TYPE_LIMIT | TIF_GTC | ref-2 |
+ | aux_sells | ETH/FEB23 | sell | 10 | 1005 | 0 | TYPE_LIMIT | TIF_GTC | ref-2 |
+ | lpprov | ETH/FEB23 | buy | 10 | 100 | 0 | TYPE_LIMIT | TIF_GTC | ref-3 |
+ | lpprov | ETH/FEB23 | sell | 10 | 10000 | 0 | TYPE_LIMIT | TIF_GTC | ref-4 |
+ And the parties submit the following liquidity provision:
+ | id | party | market id | commitment amount | fee | lp type |
+ | lp1 | lpprov | ETH/FEB23 | 900000 | 0.1 | submission |
+ | lp1 | lpprov | ETH/FEB23 | 900000 | 0.1 | submission |
+
+ Then the opening auction period ends for market "ETH/FEB23"
+ And the mark price should be "1000" for the market "ETH/FEB23"
+ And the trading mode should be "TRADING_MODE_CONTINUOUS" for the market "ETH/FEB23"
+
+ Scenario: Party cannot enter a pegged order when in isolated margin mode (0019-MCAL-049)
+ # pegged order
+ Given the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | test_party | ETH/FEB23 | isolated margin | 0.91 | |
+ When the parties place the following pegged orders:
+ | party | market id | side | volume | pegged reference | offset | reference | error |
+ | test_party | ETH/FEB23 | sell | 10 | ASK | 9 | sell_peg | invalid OrderError |
+ | test_party | ETH/FEB23 | buy | 5 | BID | 9 | buy_peg | invalid OrderError |
+ Then the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | test_party | ETH/FEB23 | 0 | 0 | 0 | 0 | isolated margin | 0.91 | 0 |
+ And the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | test_party | USD | ETH/FEB23 | 0 | 100000 | 0 |
+
+ Scenario: Party cannot enter a pegged order when in isolated margin mode (0019-MCAL-052)
+ # pegged iceberg order
+ Given the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | test_party | ETH/FEB23 | isolated margin | 0.91 | |
+ When the parties place the following pegged iceberg orders:
+ | party | market id | peak size | minimum visible size | side | reference | pegged reference | volume | offset | error |
+ | test_party | ETH/FEB23 | 100 | 10 | buy | buy_ice_peg | BID | 100 | 9 | invalid OrderError |
+ | test_party | ETH/FEB23 | 100 | 10 | sell | sell_ice_peg | ASK | 100 | 9 | invalid OrderError |
+ Then the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | test_party | ETH/FEB23 | 0 | 0 | 0 | 0 | isolated margin | 0.91 | 0 |
+ And the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | test_party | USD | ETH/FEB23 | 0 | 100000 | 0 |
+
+ Scenario: When the party has a pegged order in cross margin mode switches to isolated margin mode the pegged order is cancelled (0019-MCAL-050)
+ # pegged order
+ Given the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | test_party | ETH/FEB23 | cross margin | | |
+ When the parties place the following pegged orders:
+ | party | market id | side | volume | pegged reference | offset | reference |
+ | test_party | ETH/FEB23 | buy | 5 | BID | 9 | buy_peg |
+ | test_party | ETH/FEB23 | sell | 10 | ASK | 9 | sell_peg |
+
+ Then the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | test_party | ETH/FEB23 | 1000 | 1100 | 1200 | 1400 | cross margin | | |
+
+ Given the parties should have the following account balances:
+ | party | asset | market id | margin | general |
+ | test_party | USD | ETH/FEB23 | 1200 | 98800 |
+ When the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | test_party | ETH/FEB23 | isolated margin | 0.91 | |
+ Then the orders should have the following status:
+ | party | reference | status |
+ | test_party | buy_peg | STATUS_CANCELLED |
+ | test_party | sell_peg | STATUS_CANCELLED |
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | test_party | ETH/FEB23 | 0 | 0 | 0 | 0 | isolated margin | 0.91 | 0 |
+ And the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | test_party | USD | ETH/FEB23 | 0 | 100000 | 0 |
+
+ Scenario: When the party has a pegged order in cross margin mode switches to isolated margin mode the pegged order is cancelled (0019-MCAL-051)
+ # pegged iceberg
+ Given the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | test_party | ETH/FEB23 | cross margin | | |
+ When the parties place the following pegged iceberg orders:
+ | party | market id | peak size | minimum visible size | side | reference | pegged reference | volume | offset |
+ | test_party | ETH/FEB23 | 100 | 10 | buy | buy_ice_peg | BID | 100 | 9 |
+ | test_party | ETH/FEB23 | 100 | 10 | sell | sell_ice_peg | ASK | 100 | 9 |
+ Then the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | test_party | ETH/FEB23 | 10000 | 11000 | 12000 | 14000 | cross margin | | 0 |
+
+ Given the parties should have the following account balances:
+ | party | asset | market id | margin | general |
+ | test_party | USD | ETH/FEB23 | 12000 | 88000 |
+ When the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | test_party | ETH/FEB23 | isolated margin | 0.5 | |
+ Then the orders should have the following status:
+ | party | reference | status |
+ | test_party | buy_ice_peg | STATUS_CANCELLED |
+ | test_party | sell_ice_peg | STATUS_CANCELLED |
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | test_party | ETH/FEB23 | 0 | 0 | 0 | 0 | isolated margin | 0.91 | 0 |
+ And the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | test_party | USD | ETH/FEB23 | 0 | 100000 | 0 |
+
+ Scenario: When in cross margin mode and multiple parties enter multiple types of orders, when one party switches to isolated margin mode only their pegged orders are cancelled. (0019-MCAL-057)
+ # pegged order
+ Given the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | test_party | ETH/FEB23 | cross margin | | |
+ | test_party2 | ETH/FEB23 | cross margin | | |
+ When the parties place the following pegged orders:
+ | party | market id | side | volume | pegged reference | offset | reference |
+ | test_party | ETH/FEB23 | buy | 5 | BID | 1 | buy_peg |
+ | test_party | ETH/FEB23 | sell | 5 | ASK | 1 | sell_peg |
+ | test_party2 | ETH/FEB23 | buy | 5 | BID | 1 | buy_peg2 |
+ | test_party2 | ETH/FEB23 | sell | 5 | MID | 1 | sell_peg2 |
+ And the parties place the following pegged iceberg orders:
+ | party | market id | peak size | minimum visible size | side | reference | pegged reference | volume | offset |
+ | test_party | ETH/FEB23 | 10 | 5 | buy | buy_ice_peg | BID | 10 | 9 |
+ | test_party | ETH/FEB23 | 10 | 5 | sell | sell_ice_peg | ASK | 10 | 9 |
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | test_party | ETH/FEB23 | buy | 10 | 995 | 0 | TYPE_LIMIT | TIF_GTC | buy_lim |
+ | test_party2 | ETH/FEB23 | buy | 10 | 996 | 0 | TYPE_LIMIT | TIF_GTC | buy_lim2 |
+ | test_party | ETH/FEB23 | sell | 10 | 1005 | 0 | TYPE_LIMIT | TIF_GTC | sell_lim |
+ | test_party2 | ETH/FEB23 | sell | 10 | 1006 | 0 | TYPE_LIMIT | TIF_GTC | sell_lim2 |
+ Then the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | test_party | ETH/FEB23 | 2500 | 2750 | 3000 | 3500 | cross margin | | 0 |
+ | test_party2 | ETH/FEB23 | 1500 | 1650 | 1800 | 2100 | cross margin | | 0 |
+
+ Given the parties should have the following account balances:
+ | party | asset | market id | margin | general |
+ | test_party | USD | ETH/FEB23 | 3000 | 97000 |
+ | test_party2 | USD | ETH/FEB23 | 1800 | 98200 |
+ When the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | test_party | ETH/FEB23 | isolated margin | 0.91 | |
+ Then the orders should have the following status:
+ | party | reference | status |
+ | test_party | buy_peg | STATUS_CANCELLED |
+ | test_party | sell_peg | STATUS_CANCELLED |
+ | test_party | buy_lim | STATUS_ACTIVE |
+ | test_party | sell_lim | STATUS_ACTIVE |
+ | test_party2 | buy_peg2 | STATUS_ACTIVE |
+ | test_party2 | sell_peg2 | STATUS_ACTIVE |
+ | test_party2 | buy_lim2 | STATUS_ACTIVE |
+ | test_party2 | sell_lim2 | STATUS_ACTIVE |
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | test_party | ETH/FEB23 | 0 | 0 | 0 | 0 | isolated margin | 0.91 | 9145 |
+ And the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | test_party | USD | ETH/FEB23 | 0 | 90855 | 9145 |
+
+ Scenario: A party in cross maring mode has a partially filled pegged order, when the party switches to isolated margin mode the pegged order is cancelled (0019-MCAL-075)
+ Given the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | test_party | ETH/FEB23 | cross margin | | |
+ When the parties place the following pegged orders:
+ | party | market id | side | volume | pegged reference | offset | reference |
+ | test_party | ETH/FEB23 | sell | 20 | ASK | -5 | sell_peg |
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | aux_buys | ETH/FEB23 | buy | 10 | 1000 | 1 | TYPE_LIMIT | TIF_GTC | auc-trade-1 |
+
+ Then the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | test_party | ETH/FEB23 | 2000 | 2200 | 2400 | 2800 | cross margin | | 0 |
+
+ Given the parties should have the following account balances:
+ | party | asset | market id | margin | general |
+ | test_party | USD | ETH/FEB23 | 2400 | 97600 |
+ When the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | test_party | ETH/FEB23 | isolated margin | 0.91 | |
+ Then the orders should have the following status:
+ | party | reference | status |
+ | test_party | sell_peg | STATUS_CANCELLED |
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | test_party | ETH/FEB23 | 1050 | 0 | 1260 | 0 | isolated margin | 0.91 | 0 |
+ And the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | test_party | USD | ETH/FEB23 | 9100 | 90900 | 0 |
+
+ Scenario: A party in cross maring mode has a partially filled pegged order, when the party switches to isolated margin mode the pegged order is cancelled (0019-MCAL-078)
+ # iceberg pegged
+ Given the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | test_party | ETH/FEB23 | cross margin | | |
+ When the parties place the following pegged iceberg orders:
+ | party | market id | peak size | minimum visible size | side | reference | pegged reference | volume | offset |
+ | test_party | ETH/FEB23 | 20 | 10 | sell | sell_ice_peg | ASK | 20 | -5 |
+ And the parties place the following orders:
+ | party | market id | side | volume | price | resulting trades | type | tif | reference |
+ | aux_buys | ETH/FEB23 | buy | 10 | 1000 | 1 | TYPE_LIMIT | TIF_GTC | auc-trade-1 |
+
+ Then the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | test_party | ETH/FEB23 | 2000 | 2200 | 2400 | 2800 | cross margin | | 0 |
+
+ Given the parties should have the following account balances:
+ | party | asset | market id | margin | general |
+ | test_party | USD | ETH/FEB23 | 2400 | 97600 |
+ When the parties submit update margin mode:
+ | party | market | margin_mode | margin_factor | error |
+ | test_party | ETH/FEB23 | isolated margin | 0.91 | |
+ Then the orders should have the following status:
+ | party | reference | status |
+ | test_party | sell_ice_peg | STATUS_CANCELLED |
+ And the parties should have the following margin levels:
+ | party | market id | maintenance | search | initial | release | margin mode | margin factor | order |
+ | test_party | ETH/FEB23 | 1050 | 0 | 1260 | 0 | isolated margin | 0.91 | 0 |
+ And the parties should have the following account balances:
+ | party | asset | market id | margin | general | order margin |
+ | test_party | USD | ETH/FEB23 | 9100 | 90900 | 0 |
\ No newline at end of file
diff --git a/core/integration/main_test.go b/core/integration/main_test.go
index 9074d53b22..b5e743fd63 100644
--- a/core/integration/main_test.go
+++ b/core/integration/main_test.go
@@ -167,6 +167,10 @@ func InitializeScenario(s *godog.ScenarioContext) {
s.Step(`the margin calculator named "([^"]*)":$`, func(name string, table *godog.Table) error {
return steps.TheMarginCalculator(marketConfig, name, table)
})
+ s.Step(`^the parties submit update margin mode:$`, func(table *godog.Table) error {
+ return steps.ThePartiesUpdateMarginMode(execsetup.executionEngine, table)
+ })
+
s.Step(`^the markets:$`, func(table *godog.Table) error {
markets, err := steps.TheMarkets(marketConfig, execsetup.executionEngine, execsetup.collateralEngine, execsetup.netParams, execsetup.timeService.GetTimeNow(), table)
execsetup.markets = markets
diff --git a/core/integration/steps/execution.go b/core/integration/steps/execution.go
index 465b37ca52..cf7634d9cc 100644
--- a/core/integration/steps/execution.go
+++ b/core/integration/steps/execution.go
@@ -20,6 +20,7 @@ import (
"time"
"code.vegaprotocol.io/vega/core/types"
+ "code.vegaprotocol.io/vega/libs/num"
)
// the interface for execution engine. The execution engine itself will be wrapped
@@ -52,4 +53,5 @@ type Execution interface {
ProcessBatch(ctx context.Context, party string) error
OnEpochEvent(ctx context.Context, epoch types.Epoch)
UpdateMarketState(ctx context.Context, changes *types.MarketStateUpdateConfiguration) error
+ UpdateMarginMode(ctx context.Context, party, marketID string, marginMode types.MarginMode, marginFactor num.Decimal) error
}
diff --git a/core/integration/steps/parties_amend_the_following_orders.go b/core/integration/steps/parties_amend_the_following_orders.go
index d22a55eab5..f42c0d336b 100644
--- a/core/integration/steps/parties_amend_the_following_orders.go
+++ b/core/integration/steps/parties_amend_the_following_orders.go
@@ -50,13 +50,14 @@ func PartiesAmendTheFollowingOrders(
}
amend := types.OrderAmendment{
- OrderID: o.Id,
- MarketID: o.MarketId,
- Price: row.Price(),
- SizeDelta: row.SizeDelta(),
- Size: row.Size(),
- ExpiresAt: row.ExpirationDate(),
- TimeInForce: row.TimeInForce(),
+ OrderID: o.Id,
+ MarketID: o.MarketId,
+ Price: row.Price(),
+ SizeDelta: row.SizeDelta(),
+ Size: row.Size(),
+ ExpiresAt: row.ExpirationDate(),
+ TimeInForce: row.TimeInForce(),
+ PeggedOffset: row.PeggedOffset(),
}
_, err = exec.AmendOrder(context.Background(), &amend, o.PartyId)
@@ -83,6 +84,7 @@ func parseAmendOrderTable(table *godog.Table) []RowWrapper {
"size",
"error",
"expiration date",
+ "pegged offset",
})
}
@@ -133,3 +135,7 @@ func (r amendOrderRow) Error() string {
func (r amendOrderRow) ExpectError() bool {
return r.row.HasColumn("error")
}
+
+func (r amendOrderRow) PeggedOffset() *num.Uint {
+ return r.row.MaybeUint("pegged offset")
+}
diff --git a/core/integration/steps/parties_should_have_the_following_account_balances.go b/core/integration/steps/parties_should_have_the_following_account_balances.go
index 0571c52fd3..dd2de75d25 100644
--- a/core/integration/steps/parties_should_have_the_following_account_balances.go
+++ b/core/integration/steps/parties_should_have_the_following_account_balances.go
@@ -70,6 +70,25 @@ func PartiesShouldHaveTheFollowingAccountBalances(
}
}
+ if row.ExpectOrderMarginAccountBalance() && len(row.OrderMarginAccountBalance()) > 0 {
+ if !row.ExpectMarketID() {
+ return fmt.Errorf("market id must be specified when expected order margin account balance is supplied")
+ }
+ orderMarginAccount, err := broker.GetPartyOrderMarginAccount(row.Party(), row.MarketID())
+ if err != nil {
+ return errCannotGetPartyOrderMarginAccount(row.Party(), row.MarketID(), err)
+ }
+ if orderMarginAccount.GetAsset() != expectedAsset {
+ return errWrongMarketAccountAsset(orderMarginAccount.GetType().String(), row.Party(), row.MarketID(), expectedAsset, orderMarginAccount.GetAsset())
+ }
+ foundBalance := orderMarginAccount.GetBalance()
+ expectedBalance := row.OrderMarginAccountBalance()
+ if foundBalance != expectedBalance {
+ expectedValues["order margin"] = expectedBalance
+ foundValues["order margin"] = foundBalance
+ }
+ }
+
// check bond
if row.ExpectBondAccountBalance() && len(row.BondAccountBalance()) > 0 {
if !row.ExpectMarketID() {
@@ -141,6 +160,12 @@ func errCannotGetPartyGeneralAccount(party, asset string, err error) error {
)
}
+func errCannotGetPartyOrderMarginAccount(party, market string, err error) error {
+ return fmt.Errorf("couldn't get order margin account for party(%s) and market(%s): %w",
+ party, market, err,
+ )
+}
+
func errCannotGetPartyMarginAccount(party, market string, err error) error {
return fmt.Errorf("couldn't get margin account for party(%s) and market(%s): %w",
party, market, err,
@@ -188,6 +213,7 @@ func parseAccountBalancesTable(table *godog.Table) []RowWrapper {
"bond",
"vesting",
"vested",
+ "order margin",
})
}
@@ -211,6 +237,10 @@ func (r accountBalancesRow) MarginAccountBalance() string {
return r.row.MustStr("margin")
}
+func (r accountBalancesRow) OrderMarginAccountBalance() string {
+ return r.row.MustStr("order margin")
+}
+
func (r accountBalancesRow) GeneralAccountBalance() string {
return r.row.MustStr("general")
}
@@ -227,6 +257,10 @@ func (r accountBalancesRow) ExpectMarginAccountBalance() bool {
return r.row.HasColumn("margin")
}
+func (r accountBalancesRow) ExpectOrderMarginAccountBalance() bool {
+ return r.row.HasColumn("order margin")
+}
+
func (r accountBalancesRow) ExpectAsset() bool {
return r.row.HasColumn("asset")
}
diff --git a/core/integration/steps/parties_should_have_the_following_margin_levels.go b/core/integration/steps/parties_should_have_the_following_margin_levels.go
index 106e8bed13..ff55c4190d 100644
--- a/core/integration/steps/parties_should_have_the_following_margin_levels.go
+++ b/core/integration/steps/parties_should_have_the_following_margin_levels.go
@@ -35,6 +35,9 @@ func ThePartiesShouldHaveTheFollowingMarginLevels(
search, hasSearch := row.U64B("search")
initial, hasInitial := row.U64B("initial")
release, hasRelease := row.U64B("release")
+ order, hasOrder := row.U64B("order")
+ marginMode := row.Str("margin mode")
+ marginFactor := row.Str("margin factor")
levels, err := broker.GetMarginByPartyAndMarket(partyID, marketID)
if err != nil {
@@ -54,8 +57,20 @@ func ThePartiesShouldHaveTheFollowingMarginLevels(
if hasRelease && stringToU64(levels.CollateralReleaseLevel) != release {
hasError = true
}
+ if hasOrder && stringToU64(levels.OrderMargin) != order {
+ hasError = true
+ }
+ if row.HasColumn("margin mode") {
+ if marginMode == "cross margin" && levels.MarginMode != types.MarginMode_MARGIN_MODE_CROSS_MARGIN {
+ hasError = true
+ } else if marginMode == "isolated margin" && levels.MarginMode != types.MarginMode_MARGIN_MODE_ISOLATED_MARGIN {
+ hasError = true
+ } else if marginMode != "cross margin" && marginMode != "isolated margin" {
+ hasError = true
+ }
+ }
if hasError {
- return errInvalidMargins(maintenance, search, initial, release, levels, partyID)
+ return errInvalidMargins(maintenance, search, initial, release, order, levels, partyID, marginMode, marginFactor)
}
}
return nil
@@ -66,22 +81,30 @@ func errCannotGetMarginLevelsForPartyAndMarket(partyID, market string, err error
}
func errInvalidMargins(
- maintenance, search, initial, release uint64,
+ maintenance, search, initial, release, order uint64,
levels types.MarginLevels,
partyID string,
+ marginMode string,
+ marginFactor string,
) error {
return formatDiff(fmt.Sprintf("invalid margins for party \"%s\"", partyID),
map[string]string{
- "maintenance": u64ToS(maintenance),
- "search": u64ToS(search),
- "initial": u64ToS(initial),
- "release": u64ToS(release),
+ "maintenance": u64ToS(maintenance),
+ "search": u64ToS(search),
+ "initial": u64ToS(initial),
+ "release": u64ToS(release),
+ "order": u64ToS(order),
+ "margin mode": marginMode,
+ "margin factor": marginFactor,
},
map[string]string{
- "maintenance": levels.MaintenanceMargin,
- "search": levels.SearchLevel,
- "initial": levels.InitialMargin,
- "release": levels.CollateralReleaseLevel,
+ "maintenance": levels.MaintenanceMargin,
+ "search": levels.SearchLevel,
+ "initial": levels.InitialMargin,
+ "release": levels.CollateralReleaseLevel,
+ "order": levels.OrderMargin,
+ "margin mode": levels.MarginMode.String(),
+ "margin factor": levels.MarginFactor,
},
)
}
@@ -95,6 +118,9 @@ func parseExpectedMarginsTable(table *godog.Table) []RowWrapper {
"search",
"initial",
"release",
+ "order",
+ "margin mode",
+ "margin factor",
},
)
}
diff --git a/core/integration/steps/parties_should_have_the_following_profit_and_loss.go b/core/integration/steps/parties_should_have_the_following_profit_and_loss.go
index bcd8d9e548..42152c8fdd 100644
--- a/core/integration/steps/parties_should_have_the_following_profit_and_loss.go
+++ b/core/integration/steps/parties_should_have_the_following_profit_and_loss.go
@@ -45,12 +45,20 @@ func positionAPIProduceTheFollowingRow(positionService *plugins.Positions, row p
sleepTimeMs := 100
var pos []*types.Position
-
// check position status if needed
ps, checkPS := row.positionState()
party := row.party()
for retries > 0 {
- pos, err = positionService.GetPositionsByParty(party)
+ if len(row.market()) > 0 {
+ p, err := positionService.GetPositionsByMarketAndParty(row.market(), party)
+ pos = []*types.Position{p}
+ if err != nil {
+ return errCannotGetPositionForParty(party, err)
+ }
+ } else {
+ pos, err = positionService.GetPositionsByParty(party)
+ }
+
if err != nil {
return errCannotGetPositionForParty(party, err)
}
@@ -116,6 +124,7 @@ func parseProfitAndLossTable(table *godog.Table) []RowWrapper {
"realised pnl",
}, []string{
"status",
+ "market id",
})
}
@@ -127,6 +136,13 @@ func (r pnlRow) party() string {
return r.row.MustStr("party")
}
+func (r pnlRow) market() string {
+ if r.row.HasColumn("market id") {
+ return r.row.MustStr("market id")
+ }
+ return ""
+}
+
func (r pnlRow) volume() int64 {
return r.row.MustI64("volume")
}
diff --git a/core/integration/steps/the_parties_update_margin_mode.go b/core/integration/steps/the_parties_update_margin_mode.go
new file mode 100644
index 0000000000..cc1c595343
--- /dev/null
+++ b/core/integration/steps/the_parties_update_margin_mode.go
@@ -0,0 +1,69 @@
+// 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 steps
+
+import (
+ "context"
+ "fmt"
+
+ "code.vegaprotocol.io/vega/core/types"
+ "code.vegaprotocol.io/vega/libs/num"
+
+ "github.com/cucumber/godog"
+)
+
+func ThePartiesUpdateMarginMode(
+ execution Execution,
+ table *godog.Table,
+) error {
+ for _, r := range parseUpdateMarginModeTable(table) {
+ party := r.MustStr("party")
+ market := r.MustStr("market")
+ var marginMode types.MarginMode
+ if r.MustStr("margin_mode") == "cross margin" {
+ marginMode = types.MarginModeCrossMargin
+ } else if r.MustStr("margin_mode") == "isolated margin" {
+ marginMode = types.MarginModeIsolatedMargin
+ } else {
+ panic(fmt.Errorf("invalid margin mode"))
+ }
+ factor := num.DecimalZero()
+ if r.HasColumn("margin_factor") && marginMode == types.MarginModeIsolatedMargin {
+ factor = num.MustDecimalFromString(r.MustStr("margin_factor"))
+ }
+ err := execution.UpdateMarginMode(context.Background(), party, market, marginMode, factor)
+ if r.HasColumn("error") && len(r.Str("error")) > 0 && (err == nil || err != nil && r.Str("error") != err.Error()) {
+ gotError := ""
+ if err != nil {
+ gotError = err.Error()
+ }
+ return fmt.Errorf("invalid error expected %v got %v", r.Str("error"), gotError)
+ }
+ }
+
+ return nil
+}
+
+func parseUpdateMarginModeTable(table *godog.Table) []RowWrapper {
+ return StrictParseTable(table, []string{
+ "party",
+ "market",
+ "margin_mode",
+ }, []string{
+ "margin_factor",
+ "error",
+ })
+}
diff --git a/core/integration/stubs/broker_stub.go b/core/integration/stubs/broker_stub.go
index 58b4852ea3..f0f8216a0a 100644
--- a/core/integration/stubs/broker_stub.go
+++ b/core/integration/stubs/broker_stub.go
@@ -823,6 +823,17 @@ func (b *BrokerStub) GetMarketInfrastructureFeePoolAccount(asset string) (vegapb
return vegapb.Account{}, errors.New("account does not exist")
}
+func (b *BrokerStub) GetPartyOrderMarginAccount(party, market string) (vegapb.Account, error) {
+ batch := b.GetAccountEvents()
+ for _, e := range batch {
+ v := e.Account()
+ if v.Owner == party && v.Type == vegapb.AccountType_ACCOUNT_TYPE_ORDER_MARGIN && v.MarketId == market {
+ return v, nil
+ }
+ }
+ return vegapb.Account{}, errors.New("account does not exist")
+}
+
func (b *BrokerStub) GetPartyMarginAccount(party, market string) (vegapb.Account, error) {
batch := b.GetAccountEvents()
for _, e := range batch {
diff --git a/core/positions/market_position.go b/core/positions/market_position.go
index 461da22a58..b2a5686955 100644
--- a/core/positions/market_position.go
+++ b/core/positions/market_position.go
@@ -71,6 +71,23 @@ func (p *MarketPosition) Closed() bool {
return p.size == 0 && p.buy+p.sell == 0
}
+// UpdateInPlaceOnTrades takes a clone of the receiver position, and updates it with the position from the given trades.
+func (p *MarketPosition) UpdateInPlaceOnTrades(log *logging.Logger, traderSide types.Side, trades []*types.Trade, order *types.Order) *MarketPosition {
+ pos := p.Clone()
+ for _, t := range trades {
+ pos.averageEntryPrice = CalcVWAP(pos.averageEntryPrice, pos.size, int64(t.Size), t.Price)
+ if traderSide == types.SideBuy {
+ pos.size += int64(t.Size)
+ } else {
+ pos.size -= int64(t.Size)
+ }
+ // if we bought then we want to decrease the order size for this side so add=false
+ // and vice versa for sell
+ pos.UpdateOnOrderChange(log, traderSide, order.Price, t.Size, false)
+ }
+ return pos
+}
+
func (p *MarketPosition) SetParty(party string) { p.partyID = party }
func (p *MarketPosition) RegisterOrder(log *logging.Logger, order *types.Order) {
diff --git a/core/positions/market_position_test.go b/core/positions/market_position_test.go
new file mode 100644
index 0000000000..b0f9e64204
--- /dev/null
+++ b/core/positions/market_position_test.go
@@ -0,0 +1,78 @@
+// 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 positions_test
+
+import (
+ "testing"
+
+ "code.vegaprotocol.io/vega/core/positions"
+ "code.vegaprotocol.io/vega/core/types"
+ "code.vegaprotocol.io/vega/libs/num"
+
+ "github.com/stretchr/testify/require"
+)
+
+func TestUpdateInPlace(t *testing.T) {
+ pos := positions.NewMarketPosition("zohar")
+ buy := &types.Order{
+ ID: "1",
+ MarketID: "2",
+ Party: "zohar",
+ Side: types.SideBuy,
+ Size: 10,
+ Price: num.NewUint(100),
+ Remaining: 10,
+ }
+ sell := &types.Order{
+ ID: "2",
+ MarketID: "2",
+ Party: "zohar",
+ Side: types.SideSell,
+ Size: 20,
+ Price: num.NewUint(200),
+ Remaining: 20,
+ }
+ pos.RegisterOrder(nil, buy)
+ pos.RegisterOrder(nil, sell)
+ trade1 := &types.Trade{
+ ID: "t1",
+ Size: 3,
+ Price: num.NewUint(120),
+ }
+ updatedPos := pos.UpdateInPlaceOnTrades(nil, types.SideBuy, []*types.Trade{trade1}, buy)
+ require.Equal(t, int64(3), updatedPos.Size())
+ require.Equal(t, int64(7), updatedPos.Buy())
+ require.Equal(t, int64(20), updatedPos.Sell())
+
+ // now trade the whole size of the sell order
+ trade2 := &types.Trade{
+ ID: "t2",
+ Size: 20,
+ Price: num.NewUint(150),
+ }
+ updatedPos = updatedPos.UpdateInPlaceOnTrades(nil, types.SideSell, []*types.Trade{trade2}, sell)
+ require.Equal(t, int64(-17), updatedPos.Size())
+ require.Equal(t, int64(7), updatedPos.Buy())
+ require.Equal(t, int64(0), updatedPos.Sell())
+
+ // now unregister the remaining buy order
+ buy.Remaining = 7
+
+ updatedPos.UnregisterOrder(nil, buy)
+ require.Equal(t, int64(-17), updatedPos.Size())
+ require.Equal(t, int64(0), updatedPos.Buy())
+ require.Equal(t, int64(0), updatedPos.Sell())
+}
diff --git a/core/processor/abci.go b/core/processor/abci.go
index 5e7f7461aa..446bd02c0e 100644
--- a/core/processor/abci.go
+++ b/core/processor/abci.go
@@ -1428,7 +1428,7 @@ func (app *App) CheckBatchMarketInstructions(_ context.Context, tx abci.Tx) erro
}
maxBatchSize := app.maxBatchSize.Load()
- size := uint64(len(bmi.Cancellations) + len(bmi.Amendments) + len(bmi.Submissions) + len(bmi.StopOrdersSubmission) + len(bmi.StopOrdersCancellation))
+ size := uint64(len(bmi.UpdateMarginMode) + len(bmi.Cancellations) + len(bmi.Amendments) + len(bmi.Submissions) + len(bmi.StopOrdersSubmission) + len(bmi.StopOrdersCancellation))
if size > maxBatchSize {
return ErrMarketBatchInstructionTooBig(size, maxBatchSize)
}
diff --git a/core/processor/batch_market_instructions_processor.go b/core/processor/batch_market_instructions_processor.go
index e87d40a033..d352748c08 100644
--- a/core/processor/batch_market_instructions_processor.go
+++ b/core/processor/batch_market_instructions_processor.go
@@ -23,8 +23,10 @@ import (
"code.vegaprotocol.io/vega/commands"
"code.vegaprotocol.io/vega/core/idgeneration"
"code.vegaprotocol.io/vega/core/types"
+ "code.vegaprotocol.io/vega/libs/num"
"code.vegaprotocol.io/vega/libs/ptr"
"code.vegaprotocol.io/vega/logging"
+ "code.vegaprotocol.io/vega/protos/vega"
commandspb "code.vegaprotocol.io/vega/protos/vega/commands/v1"
)
@@ -50,12 +52,17 @@ func (v Validate) CheckStopOrdersSubmission(order *commandspb.StopOrdersSubmissi
return commands.CheckStopOrdersSubmission(order)
}
+func (v Validate) CheckUpdateMarginMode(order *commandspb.UpdateMarginMode) error {
+ return commands.CheckUpdateMarginMode(order)
+}
+
type Validator interface {
CheckOrderCancellation(cancel *commandspb.OrderCancellation) error
CheckOrderAmendment(amend *commandspb.OrderAmendment) error
CheckOrderSubmission(order *commandspb.OrderSubmission) error
CheckStopOrdersCancellation(cancel *commandspb.StopOrdersCancellation) error
CheckStopOrdersSubmission(order *commandspb.StopOrdersSubmission) error
+ CheckUpdateMarginMode(update *commandspb.UpdateMarginMode) error
}
type BMIProcessor struct {
@@ -124,10 +131,28 @@ func (p *BMIProcessor) ProcessBatch(
// these need to be determinitistic
idgen := idgeneration.New(determinitisticID)
+ failedMarkets := map[string]error{}
+ for _, umm := range batch.UpdateMarginMode {
+ err := p.validator.CheckUpdateMarginMode(umm)
+ if err == nil {
+ var marginFactor num.Decimal
+ if umm.MarginFactor == nil || len(*umm.MarginFactor) == 0 {
+ marginFactor = num.DecimalZero()
+ } else {
+ marginFactor = num.MustDecimalFromString(*umm.MarginFactor)
+ }
+ err = p.exec.UpdateMarginMode(ctx, party, umm.MarketId, vega.MarginMode(umm.Mode), marginFactor)
+ }
+ if err != nil {
+ errs.AddForProperty("updateMarginMode", err)
+ errCnt++
+ failedMarkets[umm.MarketId] = fmt.Errorf("Update margin mode transaction failed for market %s. Ignoring all transactions for the market", umm.MarketId)
+ }
+ }
+
// each order will need a new ID, and each stop order can contain up to two orders (rises above, falls below)
// but a stop order could also be invalid and have neither, so we pre-generate the maximum ids we might need
nIDs := len(batch.Submissions) + (2 * len(batch.StopOrdersSubmission))
-
submissionsIDs := make([]string, 0, nIDs)
for i := 0; i < nIDs; i++ {
submissionsIDs = append(submissionsIDs, idgen.NextID())
@@ -137,6 +162,12 @@ func (p *BMIProcessor) ProcessBatch(
for i, cancel := range batch.Cancellations {
err := p.validator.CheckOrderCancellation(cancel)
if err == nil {
+ if err, ok := failedMarkets[cancel.MarketId]; ok {
+ errs.AddForProperty(fmt.Sprintf("%d", i), err)
+ errCnt++
+ idx++
+ continue
+ }
stats.IncTotalCancelOrder()
_, err = p.exec.CancelOrder(
ctx, types.OrderCancellationFromProto(cancel), party, idgen)
@@ -162,6 +193,12 @@ func (p *BMIProcessor) ProcessBatch(
} else {
err = p.validator.CheckOrderAmendment(protoAmend)
if err == nil {
+ if err, ok := failedMarkets[protoAmend.MarketId]; ok {
+ errs.AddForProperty(fmt.Sprintf("%d", idx), err)
+ errCnt++
+ idx++
+ continue
+ }
stats.IncTotalAmendOrder()
var amend *types.OrderAmendment
amend, err = types.NewOrderAmendmentFromProto(protoAmend)
@@ -188,6 +225,12 @@ func (p *BMIProcessor) ProcessBatch(
err := p.validator.CheckOrderSubmission(protoSubmit)
if err == nil {
var submit *types.OrderSubmission
+ if err, ok := failedMarkets[protoSubmit.MarketId]; ok {
+ errs.AddForProperty(fmt.Sprintf("%d", idx), err)
+ errCnt++
+ idx++
+ continue
+ }
stats.IncTotalCreateOrder()
if submit, err = types.NewOrderSubmissionFromProto(protoSubmit); err == nil {
var conf *types.OrderConfirmation
@@ -213,6 +256,12 @@ func (p *BMIProcessor) ProcessBatch(
for i, cancel := range batch.StopOrdersCancellation {
err := p.validator.CheckStopOrdersCancellation(cancel)
if err == nil {
+ if err, ok := failedMarkets[*cancel.MarketId]; ok {
+ errs.AddForProperty(fmt.Sprintf("%d", i), err)
+ errCnt++
+ idx++
+ continue
+ }
stats.IncTotalCancelOrder()
err = p.exec.CancelStopOrders(
ctx, types.NewStopOrderCancellationFromProto(cancel), party, idgen)
@@ -229,6 +278,22 @@ func (p *BMIProcessor) ProcessBatch(
err := p.validator.CheckStopOrdersSubmission(protoSubmit)
if err == nil {
var submit *types.StopOrdersSubmission
+ if protoSubmit.RisesAbove != nil && protoSubmit.RisesAbove.OrderSubmission != nil {
+ if err, ok := failedMarkets[protoSubmit.RisesAbove.OrderSubmission.MarketId]; ok {
+ errs.AddForProperty(fmt.Sprintf("%d", i), err)
+ errCnt++
+ idx++
+ continue
+ }
+ }
+ if protoSubmit.FallsBelow != nil && protoSubmit.FallsBelow.OrderSubmission != nil {
+ if err, ok := failedMarkets[protoSubmit.FallsBelow.OrderSubmission.MarketId]; ok {
+ errs.AddForProperty(fmt.Sprintf("%d", i), err)
+ errCnt++
+ idx++
+ continue
+ }
+ }
stats.IncTotalCreateOrder()
if submit, err = types.NewStopOrderSubmissionFromProto(protoSubmit); err == nil {
var id1, id2 *string
@@ -261,7 +326,7 @@ func (p *BMIProcessor) ProcessBatch(
idx++
}
- errs.isPartial = errCnt != len(batch.Submissions)+len(batch.Amendments)+len(batch.Cancellations)+len(batch.StopOrdersCancellation)+len(batch.StopOrdersSubmission)
+ errs.isPartial = errCnt != len(batch.UpdateMarginMode)+len(batch.Submissions)+len(batch.Amendments)+len(batch.Cancellations)+len(batch.StopOrdersCancellation)+len(batch.StopOrdersSubmission)
return errs.ErrorOrNil()
}
diff --git a/core/processor/batch_market_instructions_processor_test.go b/core/processor/batch_market_instructions_processor_test.go
index dc6b6f0fd7..a526cc1b56 100644
--- a/core/processor/batch_market_instructions_processor_test.go
+++ b/core/processor/batch_market_instructions_processor_test.go
@@ -32,6 +32,7 @@ import (
"github.com/golang/mock/gomock"
"github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
)
func TestBatchMarketInstructionsErrors(t *testing.T) {
@@ -231,6 +232,163 @@ func TestBatchMarketInstructionsContinueProcessingOnError(t *testing.T) {
assert.True(t, perr.IsPartial())
}
+func TestBatchMarketInstructionsContinueFailsAllOrdersForMarketOnSwitchFailure(t *testing.T) {
+ ctrl := gomock.NewController(t)
+ defer ctrl.Finish()
+ exec := mocks.NewMockExecutionEngine(ctrl)
+ proc := processor.NewBMIProcessor(logging.NewTestLogger(), exec, processor.Validate{})
+ stats := stats.New(logging.NewTestLogger(), stats.NewDefaultConfig())
+
+ batch := commandspb.BatchMarketInstructions{
+ UpdateMarginMode: []*commandspb.UpdateMarginMode{
+ {
+ MarketId: "926df3b689a5440fe21cad7069ebcedc46f75b2b23ce11002a1ee2254e339f23",
+ Mode: commandspb.UpdateMarginMode_MODE_ISOLATED_MARGIN,
+ },
+ },
+ Cancellations: []*commandspb.OrderCancellation{
+ {
+ OrderId: "926df3b689a5440fe21cad7069ebcedc46f75b2b23ce11002a1ee2254e339f23",
+ MarketId: "926df3b689a5440fe21cad7069ebcedc46f75b2b23ce11002a1ee2254e339f23",
+ },
+ {
+ OrderId: "47076f002ddd9bfeb7f4679fc75b4686f64446d5a5afcb84584e7c7166d13efa",
+ MarketId: "47076f002ddd9bfeb7f4679fc75b4686f64446d5a5afcb84584e7c7166d13efa",
+ },
+ },
+ Amendments: []*commandspb.OrderAmendment{
+ {
+ MarketId: "47076f002ddd9bfeb7f4679fc75b4686f64446d5a5afcb84584e7c7166d13efa",
+ OrderId: "47076f002ddd9bfeb7f4679fc75b4686f64446d5a5afcb84584e7c7166d13efa",
+ TimeInForce: vega.Order_TIME_IN_FORCE_GTC,
+ },
+ {
+ MarketId: "47076f002ddd9bfeb7f4679fc75b4686f64446d5a5afcb84584e7c7166d13efa",
+ OrderId: "f31f922db56ee0ffee7695e358c5f6c253857b8e0656ddead6dc40474502bc22",
+ TimeInForce: vega.Order_TIME_IN_FORCE_GTC,
+ },
+ {
+ MarketId: "926df3b689a5440fe21cad7069ebcedc46f75b2b23ce11002a1ee2254e339f23",
+ OrderId: "87d4717b42796bda59870f53d6bcb1f57acd53e4236a941077aae8a860fd1bad",
+ TimeInForce: vega.Order_TIME_IN_FORCE_GTC,
+ },
+ },
+ Submissions: []*commandspb.OrderSubmission{
+ {
+ MarketId: "926df3b689a5440fe21cad7069ebcedc46f75b2b23ce11002a1ee2254e339f23",
+ Side: vega.Side_SIDE_BUY,
+ Size: 10,
+ TimeInForce: vega.Order_TIME_IN_FORCE_FOK,
+ Type: vega.Order_TYPE_MARKET,
+ },
+ {
+ MarketId: "47076f002ddd9bfeb7f4679fc75b4686f64446d5a5afcb84584e7c7166d13efa",
+ Side: vega.Side_SIDE_BUY,
+ Size: 10,
+ TimeInForce: vega.Order_TIME_IN_FORCE_FOK,
+ Type: vega.Order_TYPE_MARKET,
+ },
+ {
+ MarketId: "47076f002ddd9bfeb7f4679fc75b4686f64446d5a5afcb84584e7c7166d13efa",
+ Side: vega.Side_SIDE_BUY,
+ Size: 10,
+ TimeInForce: vega.Order_TIME_IN_FORCE_FOK,
+ Type: vega.Order_TYPE_MARKET,
+ },
+ },
+ }
+
+ cancelCnt := 0
+ exec.EXPECT().CancelOrder(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Times(1).DoAndReturn(
+ func(ctx context.Context, order *types.OrderCancellation, party string, idgen common.IDGenerator) ([]*types.OrderCancellationConfirmation, error) {
+ cancelCnt++
+
+ if order.OrderID == "47076f002ddd9bfeb7f4679fc75b4686f64446d5a5afcb84584e7c7166d13efa" {
+ return nil, errors.New("cannot cancel order")
+ }
+ return nil, nil
+ },
+ )
+ amendCnt := 0
+ exec.EXPECT().AmendOrder(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Times(2).DoAndReturn(
+ func(ctx context.Context, order *types.OrderAmendment, party string, idgen common.IDGenerator) ([]*types.OrderConfirmation, error) {
+ amendCnt++
+
+ // if the order is order 2 we return an error
+ if order.OrderID == "f31f922db56ee0ffee7695e358c5f6c253857b8e0656ddead6dc40474502bc22" {
+ return nil, errors.New("cannot amend order")
+ }
+ return nil, nil
+ },
+ )
+
+ orderCnt := 0
+ exec.EXPECT().SubmitOrder(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Times(2).DoAndReturn(
+ func(ctx context.Context, order *types.OrderSubmission, party string, idgen common.IDGenerator, orderID string) (*types.OrderConfirmation, error) {
+ orderCnt++
+
+ // if the order is order 2 we return an error
+ if orderCnt == 2 {
+ return nil, errors.New("cannot submit order")
+ }
+ return &types.OrderConfirmation{Order: nil, Trades: []*types.Trade{{ID: "1"}, {ID: "2"}}, PassiveOrdersAffected: []*types.Order{}}, nil
+ },
+ )
+
+ err := proc.ProcessBatch(
+ context.Background(),
+ &batch,
+ "43f86066fe13743448442022c099c48abbd7e9c5eac1c2558fdac1fbf549e867",
+ "62017b6ae543d2e699f41d37598b22dab025c57ed98ef3c237bb91b948c5f8fc",
+ stats.Blockchain,
+ )
+ errors := err.(*processor.BMIError).Errors
+ require.Equal(t, 7, len(errors))
+ require.Equal(t, 1, len(errors["updateMarginMode"]))
+ require.Equal(t, "update_margin_mode.margin_factor (margin factor must be defined when margin mode is isolated margin)", errors["updateMarginMode"][0].Error())
+
+ require.Equal(t, 1, len(errors["0"])) // cancellation for market with failed update margin mode
+ require.Equal(t, "Update margin mode transaction failed for market 926df3b689a5440fe21cad7069ebcedc46f75b2b23ce11002a1ee2254e339f23. Ignoring all transactions for the market", errors["0"][0].Error())
+
+ require.Equal(t, 1, len(errors["1"])) // cancellation tx failed
+ require.Equal(t, "cannot cancel order", errors["1"][0].Error())
+
+ require.Equal(t, 1, len(errors["3"])) // amend tx failed
+ require.Equal(t, "cannot amend order", errors["3"][0].Error())
+
+ require.Equal(t, 1, len(errors["4"])) // amend for market with failed update margin mode
+ require.Equal(t, "Update margin mode transaction failed for market 926df3b689a5440fe21cad7069ebcedc46f75b2b23ce11002a1ee2254e339f23. Ignoring all transactions for the market", errors["4"][0].Error())
+
+ require.Equal(t, 1, len(errors["5"])) // submit for market with failed update margin mode
+ require.Equal(t, "Update margin mode transaction failed for market 926df3b689a5440fe21cad7069ebcedc46f75b2b23ce11002a1ee2254e339f23. Ignoring all transactions for the market", errors["5"][0].Error())
+
+ require.Equal(t, 1, len(errors["7"])) // submit tx failed
+ require.Equal(t, "cannot submit order", errors["7"][0].Error())
+
+ // one cancellation gets through, the other one is for 926df3b689a5440fe21cad7069ebcedc46f75b2b23ce11002a1ee2254e339f23
+ // which had a failure in updating margin mode
+ assert.Equal(t, uint64(1), stats.Blockchain.TotalCancelOrder())
+
+ // 3 amends:
+ // 1 is rejected for the market's switch margin mode failing
+ assert.Equal(t, uint64(2), stats.Blockchain.TotalAmendOrder())
+
+ // 3 submits:
+ // 1 is rejected for the market's switch margin mode failing
+ assert.Equal(t, uint64(2), stats.Blockchain.TotalCreateOrder())
+
+ stats.Blockchain.NewBatch()
+
+ assert.Equal(t, 2, amendCnt)
+ assert.Equal(t, 1, cancelCnt)
+ assert.Equal(t, 2, orderCnt)
+
+ // // ensure the errors is reported as partial
+ perr, ok := err.(abci.MaybePartialError)
+ assert.True(t, ok)
+ assert.True(t, perr.IsPartial())
+}
+
func TestBatchMarketInstructionsEnsureAllErrorReturnNonPartialError(t *testing.T) {
ctrl := gomock.NewController(t)
defer ctrl.Finish()
diff --git a/core/processor/tx.go b/core/processor/tx.go
index edd5605898..dd4f545557 100644
--- a/core/processor/tx.go
+++ b/core/processor/tx.go
@@ -138,6 +138,8 @@ func (t Tx) Command() txn.Command {
return txn.UpdateReferralSetCommand
case *commandspb.InputData_ApplyReferralCode:
return txn.ApplyReferralCodeCommand
+ case *commandspb.InputData_UpdateMarginMode:
+ return txn.UpdateMarginModeCommand
case *commandspb.InputData_JoinTeam:
return txn.JoinTeamCommand
case *commandspb.InputData_BatchProposalSubmission:
diff --git a/core/risk/engine.go b/core/risk/engine.go
index 33e58d305e..6473f3e614 100644
--- a/core/risk/engine.go
+++ b/core/risk/engine.go
@@ -34,8 +34,11 @@ import (
//go:generate go run github.com/golang/mock/mockgen -destination mocks/mocks.go -package mocks code.vegaprotocol.io/vega/core/risk Orderbook,AuctionState,TimeService,StateVarEngine,Model
var (
- ErrInsufficientFundsForInitialMargin = errors.New("insufficient funds for initial margin")
- ErrRiskFactorsNotAvailableForAsset = errors.New("risk factors not available for the specified asset")
+ ErrInsufficientFundsForInitialMargin = errors.New("insufficient funds for initial margin")
+ ErrInsufficientFundsForMaintenanceMargin = errors.New("insufficient funds for maintenance margin")
+ ErrInsufficientFundsForOrderMargin = errors.New("insufficient funds for order margin")
+ ErrInsufficientFundsForMarginInGeneralAccount = errors.New("insufficient funds to cover margin in general margin")
+ ErrRiskFactorsNotAvailableForAsset = errors.New("risk factors not available for the specified asset")
)
const RiskFactorStateVarName = "risk-factors"
@@ -384,9 +387,7 @@ func (e *Engine) UpdateMarginOnNewOrder(ctx context.Context, evt events.Margin,
// In the case where the CurMargin is smaller to the MaintenanceLevel after trying to
// move monies later, we'll need to close out the party but that cannot be figured out
// now only in later when we try to move monies from the general account.
-func (e *Engine) UpdateMarginsOnSettlement(
- ctx context.Context, evts []events.Margin, markPrice *num.Uint, increment num.Decimal,
-) []events.Risk {
+func (e *Engine) UpdateMarginsOnSettlement(ctx context.Context, evts []events.Margin, markPrice *num.Uint, increment num.Decimal) []events.Risk {
ret := make([]events.Risk, 0, len(evts))
now := e.timeSvc.GetTimeNow().UnixNano()
@@ -412,10 +413,13 @@ func (e *Engine) UpdateMarginsOnSettlement(
SearchLevel: num.UintZero(),
InitialMargin: num.UintZero(),
CollateralReleaseLevel: num.UintZero(),
+ OrderMargin: num.UintZero(),
Party: evt.Party(),
MarketID: evt.MarketID(),
Asset: evt.Asset(),
Timestamp: now,
+ MarginMode: types.MarginModeCrossMargin,
+ MarginFactor: num.DecimalZero(),
}
e.updateMarginLevels(events.NewMarginLevelsEvent(ctx, margins))
ret = append(ret, &marginChange{
@@ -510,9 +514,7 @@ func (e *Engine) UpdateMarginsOnSettlement(
// ExpectMargins is used in the case some parties are in a distressed positions
// in this situation we will only check if the party margin is > to the maintenance margin.
-func (e *Engine) ExpectMargins(
- evts []events.Margin, markPrice *num.Uint, increment num.Decimal,
-) (okMargins []events.Margin, distressedPositions []events.Margin) {
+func (e *Engine) ExpectMargins(evts []events.Margin, markPrice *num.Uint, increment num.Decimal) (okMargins []events.Margin, distressedPositions []events.Margin) {
okMargins = make([]events.Margin, 0, len(evts)/2)
distressedPositions = make([]events.Margin, 0, len(evts)/2)
auction := e.as.InAuction() && !e.as.CanLeave()
diff --git a/core/risk/engine_test.go b/core/risk/engine_test.go
index f781140939..04c4aa0c7c 100644
--- a/core/risk/engine_test.go
+++ b/core/risk/engine_test.go
@@ -69,6 +69,7 @@ type testMargin struct {
transfer *types.Transfer
asset string
margin uint64
+ orderMargin uint64
general uint64
market string
buySumProduct uint64
@@ -1927,7 +1928,11 @@ func getMarginCalculator() *types.MarginCalculator {
}
func (m testMargin) AverageEntryPrice() *num.Uint {
- return num.UintZero()
+ absSize := m.size
+ if absSize < 0 {
+ absSize = -absSize
+ }
+ return num.UintZero().Mul(m.Price(), num.NewUint(uint64(absSize)))
}
func (m testMargin) Party() string {
@@ -1946,10 +1951,18 @@ func (m testMargin) MarginBalance() *num.Uint {
return num.NewUint(m.margin)
}
+func (m testMargin) OrderMarginBalance() *num.Uint {
+ return num.NewUint(m.orderMargin)
+}
+
func (m testMargin) GeneralBalance() *num.Uint {
return num.NewUint(m.general)
}
+func (m testMargin) GeneralAccountBalance() *num.Uint {
+ return num.NewUint(m.general)
+}
+
func (m testMargin) BondBalance() *num.Uint {
return num.UintZero()
}
diff --git a/core/risk/isolated_margin.go b/core/risk/isolated_margin.go
new file mode 100644
index 0000000000..6562f4f269
--- /dev/null
+++ b/core/risk/isolated_margin.go
@@ -0,0 +1,589 @@
+// 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 risk
+
+import (
+ "context"
+ "fmt"
+ "sort"
+
+ "code.vegaprotocol.io/vega/core/events"
+ "code.vegaprotocol.io/vega/core/types"
+ "code.vegaprotocol.io/vega/libs/num"
+)
+
+// calculateIsolatedMargins calculates the required margins for a party in isolated margin mode.
+// It is calculating margin the same way as the cross margin mode does and then enriches the result with the order margin requirement.
+// For isolated margin search levels and release levels are set to 0.
+// auctionPrice is nil if not in an auction, otherwise the max(markPrice, indicativePrice).
+// NB: pure calculation, no events emitted, no state changed.
+func (e *Engine) calculateIsolatedMargins(m events.Margin, marketObservable *num.Uint, inc num.Decimal, marginFactor num.Decimal, auctionPrice *num.Uint, orders []*types.Order) *types.MarginLevels {
+ auction := e.as.InAuction() && !e.as.CanLeave()
+ // NB:we don't include orders when calculating margin for isolated margin as they are margined separately!
+ margins := e.calculateMargins(m, marketObservable, *e.factors, false, auction, inc)
+ margins.OrderMargin = calcOrderMargins(m.Size(), orders, e.positionFactor, marginFactor, auctionPrice)
+ margins.CollateralReleaseLevel = num.UintZero()
+ margins.SearchLevel = num.UintZero()
+ margins.MarginMode = types.MarginModeIsolatedMargin
+ margins.MarginFactor = marginFactor
+ margins.Party = m.Party()
+ margins.Asset = m.Asset()
+ margins.MarketID = m.MarketID()
+ margins.Timestamp = e.timeSvc.GetTimeNow().UnixNano()
+ return margins
+}
+
+// ReleaseExcessMarginAfterAuctionUncrossing is called after auction uncrossing to release excess order margin due to orders placed during an auction
+// when the price used for order margin is the auction price rather than the order price.
+func (e *Engine) ReleaseExcessMarginAfterAuctionUncrossing(ctx context.Context, m events.Margin, marketObservable *num.Uint, increment num.Decimal, marginFactor num.Decimal, orders []*types.Order) events.Risk {
+ margins := e.calculateIsolatedMargins(m, marketObservable, increment, marginFactor, nil, orders)
+ e.updateMarginLevels(events.NewMarginLevelsEvent(ctx, *margins))
+ if margins.OrderMargin.LT(m.OrderMarginBalance()) {
+ amt := num.UintZero().Sub(m.OrderMarginBalance(), margins.OrderMargin)
+ return &marginChange{
+ Margin: m,
+ transfer: &types.Transfer{
+ Owner: m.Party(),
+ Type: types.TransferTypeOrderMarginHigh,
+ Amount: &types.FinancialAmount{
+ Asset: m.Asset(),
+ Amount: amt,
+ },
+ MinAmount: amt.Clone(),
+ },
+ margins: margins,
+ }
+ }
+ return nil
+}
+
+// UpdateIsolatedMarginOnAggressor is called when a new order comes in and is matched immediately.
+// NB: evt has the position after the trades + orders need to include the new order with the updated remaining.
+// returns an error if the new margin is invalid or if the margin account cannot be topped up from general account.
+// if successful it updates the margin level and returns the transfer that is needed for the topup of the margin account or release from the margin account excess.
+func (e *Engine) UpdateIsolatedMarginOnAggressor(ctx context.Context, evt events.Margin, marketObservable *num.Uint, increment num.Decimal, orders []*types.Order, trades []*types.Trade, marginFactor num.Decimal, traderSide types.Side) (events.Risk, error) {
+ if evt == nil {
+ return nil, nil
+ }
+ margins := e.calculateIsolatedMargins(evt, marketObservable, increment, marginFactor, nil, orders)
+ tradedSize := int64(0)
+ side := trades[0].Aggressor
+ requiredMargin := num.UintZero()
+ for _, t := range trades {
+ tradedSize += int64(t.Size)
+ requiredMargin.AddSum(num.UintZero().Mul(t.Price, num.NewUint(t.Size)))
+ }
+ if side == types.SideSell {
+ tradedSize = -tradedSize
+ }
+ oldPosition := evt.Size() - tradedSize
+ if evt.Size()*oldPosition >= 0 { // position didn't switch sides
+ if int64Abs(oldPosition) < int64Abs(evt.Size()) { // position increased
+ requiredMargin, _ = num.UintFromDecimal(requiredMargin.ToDecimal().Div(e.positionFactor).Mul(marginFactor))
+ if num.Sum(requiredMargin, evt.MarginBalance()).LT(margins.MaintenanceMargin) {
+ return nil, ErrInsufficientFundsForMaintenanceMargin
+ }
+ if requiredMargin.GT(evt.GeneralAccountBalance()) {
+ return nil, ErrInsufficientFundsForMarginInGeneralAccount
+ }
+ }
+ } else {
+ // position did switch sides
+ requiredMargin = num.UintZero()
+ pos := int64Abs(oldPosition)
+ totalSize := uint64(0)
+ for _, t := range trades {
+ if pos >= t.Size {
+ pos -= t.Size
+ totalSize += t.Size
+ } else if pos == 0 {
+ requiredMargin.AddSum(num.UintZero().Mul(t.Price, num.NewUint(t.Size)))
+ } else {
+ size := t.Size - pos
+ requiredMargin.AddSum(num.UintZero().Mul(t.Price, num.NewUint(size)))
+ pos = 0
+ }
+ }
+ // The new margin required balance is requiredMargin, so we need to check that:
+ // 1) it's greater than maintenance margin to keep the invariant
+ // 2) there are sufficient funds in what's currently in the margin account + general account to cover for the new required margin
+ requiredMargin, _ = num.UintFromDecimal(requiredMargin.ToDecimal().Div(e.positionFactor).Mul(marginFactor))
+ if num.Sum(requiredMargin, evt.MarginBalance()).LT(margins.MaintenanceMargin) {
+ return nil, ErrInsufficientFundsForMaintenanceMargin
+ }
+ if requiredMargin.GT(num.Sum(evt.GeneralAccountBalance(), evt.MarginBalance())) {
+ return nil, ErrInsufficientFundsForMarginInGeneralAccount
+ }
+ }
+
+ e.updateMarginLevels(events.NewMarginLevelsEvent(ctx, *margins))
+ transfer := getIsolatedMarginTransfersOnPositionChange(evt.Party(), evt.Asset(), trades, traderSide, evt.Size(), e.positionFactor, marginFactor, evt.MarginBalance(), marketObservable, true)
+ if transfer == nil {
+ return nil, nil
+ }
+ change := &marginChange{
+ Margin: evt,
+ transfer: transfer,
+ margins: margins,
+ }
+ return change, nil
+}
+
+// UpdateIsolatedMarginOnOrder checks that the party has sufficient cover for the given orders including the new one. It returns an error if the party doesn't have sufficient cover and the necessary transfers otherwise.
+// NB: auctionPrice should be nil in continuous mode.
+func (e *Engine) UpdateIsolatedMarginOnOrder(ctx context.Context, evt events.Margin, orders []*types.Order, marketObservable *num.Uint, auctionPrice *num.Uint, increment num.Decimal, marginFactor num.Decimal) (events.Risk, error) {
+ auction := e.as.InAuction() && !e.as.CanLeave()
+ var ap *num.Uint
+ if auction {
+ ap = auctionPrice
+ }
+ margins := e.calculateIsolatedMargins(evt, marketObservable, increment, marginFactor, ap, orders)
+
+ // if the margin account balance + the required order margin is less than the maintenance margin, return error
+ if margins.OrderMargin.GT(evt.OrderMarginBalance()) && num.UintZero().Sub(margins.OrderMargin, evt.OrderMarginBalance()).GT(evt.GeneralAccountBalance()) {
+ return nil, ErrInsufficientFundsForMarginInGeneralAccount
+ }
+
+ e.updateMarginLevels(events.NewMarginLevelsEvent(ctx, *margins))
+ var amt *num.Uint
+ tp := types.TransferTypeOrderMarginLow
+ if margins.OrderMargin.GT(evt.OrderMarginBalance()) {
+ amt = num.UintZero().Sub(margins.OrderMargin, evt.OrderMarginBalance())
+ } else {
+ amt = num.UintZero().Sub(evt.OrderMarginBalance(), margins.OrderMargin)
+ tp = types.TransferTypeOrderMarginHigh
+ }
+
+ var trnsfr *types.Transfer
+ if amt.IsZero() {
+ return nil, nil
+ }
+
+ trnsfr = &types.Transfer{
+ Owner: evt.Party(),
+ Type: tp,
+ Amount: &types.FinancialAmount{
+ Asset: evt.Asset(),
+ Amount: amt,
+ },
+ MinAmount: amt.Clone(),
+ }
+
+ change := &marginChange{
+ Margin: evt,
+ transfer: trnsfr,
+ margins: margins,
+ }
+ return change, nil
+}
+
+// UpdateIsolatedMarginOnPositionChanged is called upon changes to the position of a party in isolated margin mode.
+// Depending on the nature of the change it checks if it needs to move funds into our out of the margin account from the
+// order margin account or to the general account.
+// At this point we don't enforce any invariants just calculate transfers.
+func (e *Engine) UpdateIsolatedMarginsOnPositionChange(ctx context.Context, evt events.Margin, marketObservable *num.Uint, increment num.Decimal, orders []*types.Order, trades []*types.Trade, traderSide types.Side, marginFactor num.Decimal) ([]events.Risk, error) {
+ if evt == nil {
+ return nil, nil
+ }
+ margins := e.calculateIsolatedMargins(evt, marketObservable, increment, marginFactor, nil, orders)
+ transfer := getIsolatedMarginTransfersOnPositionChange(evt.Party(), evt.Asset(), trades, traderSide, evt.Size(), e.positionFactor, marginFactor, evt.MarginBalance(), marketObservable, false)
+ e.updateMarginLevels(events.NewMarginLevelsEvent(ctx, *margins))
+ ret := []events.Risk{
+ &marginChange{
+ Margin: evt,
+ transfer: transfer,
+ margins: margins,
+ },
+ }
+
+ var amtForRelease *num.Uint
+ if !evt.OrderMarginBalance().IsZero() && margins.OrderMargin.IsZero() && transfer != nil && evt.OrderMarginBalance().GT(transfer.Amount.Amount) {
+ amtForRelease = num.UintZero().Sub(evt.OrderMarginBalance(), transfer.Amount.Amount)
+ }
+
+ // if there's no more order margin requirement, release remaining order margin
+ if amtForRelease != nil && !amtForRelease.IsZero() {
+ ret = append(ret,
+ &marginChange{
+ Margin: evt,
+ transfer: &types.Transfer{
+ Owner: evt.Party(),
+ Type: types.TransferTypeOrderMarginHigh,
+ Amount: &types.FinancialAmount{
+ Asset: evt.Asset(),
+ Amount: amtForRelease,
+ },
+ MinAmount: amtForRelease.Clone(),
+ },
+ margins: margins,
+ },
+ )
+ }
+ return ret, nil
+}
+
+func (e *Engine) CheckMarginInvariants(ctx context.Context, evt events.Margin, marketObservable *num.Uint, increment num.Decimal, orders []*types.Order, marginFactor num.Decimal) (events.Risk, error) {
+ margins := e.calculateIsolatedMargins(evt, marketObservable, increment, marginFactor, nil, orders)
+ e.updateMarginLevels(events.NewMarginLevelsEvent(ctx, *margins))
+ return e.checkMarginInvariants(evt, margins)
+}
+
+// CheckMarginInvariants returns an error if the margin invariants are invalidated, i.e. if margin balance < margin level or order margin balance < order margin level.
+func (e *Engine) checkMarginInvariants(evt events.Margin, margins *types.MarginLevels) (events.Risk, error) {
+ ret := &marginChange{
+ Margin: evt,
+ transfer: nil,
+ margins: margins,
+ }
+ if evt.MarginBalance().LT(margins.MaintenanceMargin) {
+ return ret, ErrInsufficientFundsForMaintenanceMargin
+ }
+ if evt.OrderMarginBalance().LT(margins.OrderMargin) {
+ return ret, ErrInsufficientFundsForOrderMargin
+ }
+ return ret, nil
+}
+
+// SwitchToIsolatedMargin attempts to switch the party from cross margin mode to isolated mode.
+// Error can be returned if it is not possible for the party to switch at this moment.
+// If successful the new margin levels are buffered and the required margin level, margin balances, and transfers (aka events.risk) is returned.
+func (e *Engine) SwitchToIsolatedMargin(ctx context.Context, evt events.Margin, marketObservable *num.Uint, inc num.Decimal, orders []*types.Order, marginFactor num.Decimal, auctionPrice *num.Uint) ([]events.Risk, error) {
+ margins := e.calculateIsolatedMargins(evt, marketObservable, inc, marginFactor, auctionPrice, orders)
+ risk, err := switchToIsolatedMargin(evt, margins, orders, marginFactor, e.positionFactor)
+ if err != nil {
+ return nil, err
+ }
+
+ e.updateMarginLevels(events.NewMarginLevelsEvent(ctx, *margins))
+ return risk, nil
+}
+
+// SwitchFromIsolatedMargin switches the party from isolated margin mode to cross margin mode.
+// This includes:
+// 1. recalcualtion of the required margin in cross margin mode + margin levels are buffered
+// 2. return a transfer of all the balance from order margin account to margin account
+// NB: cannot fail.
+func (e *Engine) SwitchFromIsolatedMargin(ctx context.Context, evt events.Margin, marketObservable *num.Uint, inc num.Decimal) events.Risk {
+ amt := evt.OrderMarginBalance().Clone()
+ auction := e.as.InAuction() && !e.as.CanLeave()
+ margins := e.calculateMargins(evt, marketObservable, *e.factors, true, auction, inc)
+ margins.Party = evt.Party()
+ margins.Asset = evt.Asset()
+ margins.MarketID = evt.MarketID()
+ margins.Timestamp = e.timeSvc.GetTimeNow().UnixNano()
+ e.updateMarginLevels(events.NewMarginLevelsEvent(ctx, *margins))
+
+ return &marginChange{
+ Margin: evt,
+ transfer: &types.Transfer{
+ Owner: evt.Party(),
+ Type: types.TransferTypeIsolatedMarginLow,
+ MinAmount: amt,
+ Amount: &types.FinancialAmount{
+ Asset: evt.Asset(),
+ Amount: amt.Clone(),
+ },
+ },
+ margins: margins,
+ }
+}
+
+// getIsolatedMarginTransfersOnPositionChange returns the transfers that need to be made to/from the margin account in isolated margin mode
+// when the position changes. This handles the 3 different cases of position change (increase, decrease, switch sides).
+// NB: positionSize is *after* the trades.
+func getIsolatedMarginTransfersOnPositionChange(party, asset string, trades []*types.Trade, traderSide types.Side, positionSize int64, positionFactor, marginFactor num.Decimal, curMarginBalance, markPrice *num.Uint, aggressiveSide bool) *types.Transfer {
+ positionDelta := int64(0)
+ marginToAdd := num.UintZero()
+ vwap := num.UintZero()
+ for _, t := range trades {
+ positionDelta += int64(t.Size)
+ marginToAdd.AddSum(num.UintZero().Mul(t.Price, num.NewUint(t.Size)))
+ vwap.AddSum(num.UintZero().Mul(t.Price, num.NewUint(t.Size)))
+ }
+ vwap = num.UintZero().Div(vwap, num.NewUint(uint64(positionDelta)))
+ if traderSide == types.SideSell {
+ positionDelta = -positionDelta
+ }
+ oldPosition := positionSize - positionDelta
+
+ if positionSize*oldPosition >= 0 { // position didn't switch sides
+ if int64Abs(oldPosition) < int64Abs(positionSize) { // position increased
+ marginToAdd, _ = num.UintFromDecimal(marginToAdd.ToDecimal().Div(positionFactor).Mul(marginFactor))
+ // need to top up the margin account from the order margin account
+ var tp types.TransferType
+ if aggressiveSide {
+ tp = types.TransferTypeMarginLow
+ } else {
+ tp = types.TransferTypeIsolatedMarginLow
+ }
+ return &types.Transfer{
+ Owner: party,
+ Type: tp,
+ Amount: &types.FinancialAmount{
+ Asset: asset,
+ Amount: marginToAdd,
+ },
+ MinAmount: marginToAdd,
+ }
+ }
+ // position decreased
+ // marginToRelease = balanceBefore + positionBefore x (newTradeVWAP - markPrice) x |totalTradeSize|/|positionBefore|
+ theoreticalAccountBalance, _ := num.UintFromDecimal(vwap.ToDecimal().Sub(markPrice.ToDecimal()).Mul(num.DecimalFromInt64(int64(int64Abs(oldPosition)))).Div(positionFactor).Add(curMarginBalance.ToDecimal()))
+ marginToRelease := num.UintZero().Div(num.UintZero().Mul(theoreticalAccountBalance, num.NewUint(int64Abs(positionDelta))), num.NewUint(int64Abs(oldPosition)))
+ // need to top up the margin account
+ return &types.Transfer{
+ Owner: party,
+ Type: types.TransferTypeMarginHigh,
+ Amount: &types.FinancialAmount{
+ Asset: asset,
+ Amount: marginToRelease,
+ },
+ MinAmount: marginToRelease,
+ }
+ }
+
+ // position switched sides, we need to handles the two sides separately
+ // first calculate the amount that would be released
+ marginToRelease := curMarginBalance.Clone()
+ marginToAdd = num.UintZero()
+ pos := int64Abs(oldPosition)
+ totalSize := uint64(0)
+ for _, t := range trades {
+ if pos >= t.Size {
+ pos -= t.Size
+ totalSize += t.Size
+ } else if pos == 0 {
+ marginToAdd.AddSum(num.UintZero().Mul(t.Price, num.NewUint(t.Size)))
+ } else {
+ size := t.Size - pos
+ marginToAdd.AddSum(num.UintZero().Mul(t.Price, num.NewUint(size)))
+ pos = 0
+ }
+ }
+ marginToAdd, _ = num.UintFromDecimal(marginToAdd.ToDecimal().Div(positionFactor).Mul(marginFactor))
+ topup := num.UintZero()
+ release := num.UintZero()
+ if marginToAdd.GT(marginToRelease) {
+ topup = num.UintZero().Sub(marginToAdd, marginToRelease)
+ } else {
+ release = num.UintZero().Sub(marginToRelease, marginToAdd)
+ }
+
+ amt := topup
+ tp := types.TransferTypeMarginLow
+ if aggressiveSide {
+ tp = types.TransferTypeMarginLow
+ }
+ if !release.IsZero() {
+ amt = release
+ tp = types.TransferTypeMarginHigh
+ }
+
+ if amt.IsZero() {
+ return nil
+ }
+
+ return &types.Transfer{
+ Owner: party,
+ Type: tp,
+ Amount: &types.FinancialAmount{
+ Asset: asset,
+ Amount: amt,
+ },
+ MinAmount: amt,
+ }
+}
+
+func (e *Engine) CalcOrderMarginsForClosedOutParty(orders []*types.Order, marginFactor num.Decimal) *num.Uint {
+ return calcOrderMargins(0, orders, e.positionFactor, marginFactor, nil)
+}
+
+// calcOrderMargins calculates the the order margin required for the party given their current orders and margin factor.
+func calcOrderMargins(positionSize int64, orders []*types.Order, positionFactor, marginFactor num.Decimal, auctionPrice *num.Uint) *num.Uint {
+ if len(orders) == 0 {
+ return num.UintZero()
+ }
+ buyOrders := []*types.Order{}
+ sellOrders := []*types.Order{}
+ // split orders by side
+ for _, o := range orders {
+ if o.Side == types.SideBuy {
+ buyOrders = append(buyOrders, o)
+ } else {
+ sellOrders = append(sellOrders, o)
+ }
+ }
+ // sort orders from best to worst
+ sort.Slice(buyOrders, func(i, j int) bool { return buyOrders[i].Price.GT(buyOrders[j].Price) })
+ sort.Slice(sellOrders, func(i, j int) bool { return sellOrders[i].Price.LT(sellOrders[j].Price) })
+
+ // calc the side margin
+ marginByBuy := calcOrderSideMargin(positionSize, buyOrders, positionFactor, marginFactor, auctionPrice)
+ marginBySell := calcOrderSideMargin(positionSize, sellOrders, positionFactor, marginFactor, auctionPrice)
+ orderMargin := marginByBuy
+ if marginBySell.GT(orderMargin) {
+ orderMargin = marginBySell
+ }
+ return orderMargin
+}
+
+// calcOrderSideMargin returns the amount of order margin needed given the current position and party orders.
+// Given the sorted orders of the side for the party (sorted from best to worst)
+// If the party currently has a position x, assign 0 margin requirement the first-to-trade x of volume on the opposite side as this
+// would reduce their position (for example, if a party had a long position 10 and sell orders of 15 at a price of $100 and 10
+// at a price of $150, the first 10 of the sell order at $100 would not require any order margin).
+// For any remaining volume, sum side margin = limit price * size * margin factor for each price level, as this is
+// the worst-case trade price of the remaining component.
+func calcOrderSideMargin(currentPosition int64, orders []*types.Order, positionFactor, marginFactor num.Decimal, auctionPrice *num.Uint) *num.Uint {
+ margin := num.UintZero()
+ remainingCovered := int64Abs(currentPosition)
+ for _, o := range orders {
+ if o.Status != types.OrderStatusActive || o.PeggedOrder != nil {
+ continue
+ }
+ size := o.TrueRemaining()
+ // for long position we don't need to count margin for the top size for sell orders
+ // for short position we don't need to count margin for the top size for buy orders
+ if remainingCovered != 0 && (o.Side == types.SideBuy && currentPosition < 0) || (o.Side == types.SideSell && currentPosition > 0) {
+ if size >= remainingCovered { // part of the order doesn't require margin
+ size = size - remainingCovered
+ remainingCovered = 0
+ } else { // the entire order doesn't require margin
+ remainingCovered -= size
+ size = 0
+ }
+ }
+ if size > 0 {
+ // if we're in auction we need to use the larger between auction price (which is the max(indicativePrice, markPrice)) and the order price
+ p := o.Price
+ if auctionPrice != nil && auctionPrice.GT(p) {
+ p = auctionPrice
+ }
+ // add the margin for the given order
+ margin.AddSum(num.UintZero().Mul(num.NewUint(size), p))
+ }
+ }
+ // factor the margin by margin factor and divide by position factor to get to the right decimals
+ margin, _ = num.UintFromDecimal(margin.ToDecimal().Mul(marginFactor).Div(positionFactor))
+ return margin
+}
+
+// switching from cross margin to isolated margin or changing margin factor
+// 1. For any active position, calculate average entry price * abs(position) * margin factor.
+// Calculate the amount of funds which will be added to, or subtracted from, the general account in order to do this.
+// If additional funds must be added which are not available, reject the transaction immediately.
+// 2. For any active orders, calculate the quantity limit price * remaining size * margin factor which needs to be placed
+// in the order margin account. Add this amount to the difference calculated in step 1.
+// If this amount is less than or equal to the amount in the general account,
+// perform the transfers (first move funds into/out of margin account, then move funds into the order margin account).
+// If there are insufficient funds, reject the transaction.
+// 3. Move account to isolated margin mode on this market
+//
+// If a party has no position nore orders and switches to isolated margin the function returns an empty slice.
+func switchToIsolatedMargin(evt events.Margin, margin *types.MarginLevels, orders []*types.Order, marginFactor, positionFactor num.Decimal) ([]events.Risk, error) {
+ marginAccountBalance := evt.MarginBalance()
+ generalAccountBalance := evt.GeneralAccountBalance()
+ orderMarginAccountBalance := evt.OrderMarginBalance()
+ if orderMarginAccountBalance == nil {
+ orderMarginAccountBalance = num.UintZero()
+ }
+ totalOrderNotional := num.UintZero()
+ for _, o := range orders {
+ if o.Status == types.OrderStatusActive && o.PeggedOrder == nil {
+ totalOrderNotional = totalOrderNotional.AddSum(num.UintZero().Mul(o.Price, num.NewUint(o.TrueRemaining())))
+ }
+ }
+
+ positionSize := int64Abs(evt.Size())
+ requiredPositionMargin := num.UintZero().Mul(evt.AverageEntryPrice(), num.NewUint(positionSize)).ToDecimal().Mul(marginFactor).Div(positionFactor)
+ requireOrderMargin := totalOrderNotional.ToDecimal().Mul(marginFactor).Div(positionFactor)
+
+ // check that we have enough in the general account for any top up needed, i.e.
+ // topupNeeded = requiredPositionMargin + requireOrderMargin - marginAccountBalance
+ // if topupNeeded > generalAccountBalance => fail
+ if requiredPositionMargin.Add(requireOrderMargin).Sub(marginAccountBalance.ToDecimal()).Sub(orderMarginAccountBalance.ToDecimal()).GreaterThan(generalAccountBalance.ToDecimal()) {
+ return nil, fmt.Errorf("insufficient balance in general account to cover for required order margin")
+ }
+
+ // average entry price * current position * new margin factor (aka requiredPositionMargin) must be above the initial margin for the current position or the transaction will be rejected
+ if !requiredPositionMargin.IsZero() && !requiredPositionMargin.GreaterThan(margin.InitialMargin.ToDecimal()) {
+ return nil, fmt.Errorf("required position margin must be greater than initial margin")
+ }
+
+ // we're all good, just need to setup the transfers for collateral topup/release
+ uRequiredPositionMargin, _ := num.UintFromDecimal(requiredPositionMargin)
+ riskEvents := []events.Risk{}
+ if !uRequiredPositionMargin.EQ(marginAccountBalance) {
+ // need to topup or release margin <-> general
+ var amt *num.Uint
+ var tp types.TransferType
+ if uRequiredPositionMargin.GT(marginAccountBalance) {
+ amt = num.UintZero().Sub(uRequiredPositionMargin, marginAccountBalance)
+ tp = types.TransferTypeMarginLow
+ } else {
+ amt = num.UintZero().Sub(marginAccountBalance, uRequiredPositionMargin)
+ tp = types.TransferTypeMarginHigh
+ }
+ riskEvents = append(riskEvents, &marginChange{
+ Margin: evt,
+ transfer: &types.Transfer{
+ Owner: evt.Party(),
+ Type: tp,
+ MinAmount: amt,
+ Amount: &types.FinancialAmount{
+ Asset: evt.Asset(),
+ Amount: amt.Clone(),
+ },
+ },
+ margins: margin,
+ })
+ }
+ uRequireOrderMargin, _ := num.UintFromDecimal(requireOrderMargin)
+ if !uRequireOrderMargin.EQ(orderMarginAccountBalance) {
+ // need to topup or release orderMargin <-> general
+ var amt *num.Uint
+ var tp types.TransferType
+ if requireOrderMargin.GreaterThan(orderMarginAccountBalance.ToDecimal()) {
+ amt = num.UintZero().Sub(uRequireOrderMargin, orderMarginAccountBalance)
+ tp = types.TransferTypeOrderMarginLow
+ } else {
+ amt = num.UintZero().Sub(orderMarginAccountBalance, uRequireOrderMargin)
+ tp = types.TransferTypeOrderMarginLow
+ }
+ riskEvents = append(riskEvents, &marginChange{
+ Margin: evt,
+ transfer: &types.Transfer{
+ Owner: evt.Party(),
+ Type: tp,
+ MinAmount: amt,
+ Amount: &types.FinancialAmount{
+ Asset: evt.Asset(),
+ Amount: amt.Clone(),
+ },
+ },
+ margins: margin,
+ })
+ }
+ return riskEvents, nil
+}
+
+// int64Abs returns the absolute uint64 value of the given int64 n.
+func int64Abs(n int64) uint64 {
+ if n < 0 {
+ return uint64(-n)
+ }
+ return uint64(n)
+}
diff --git a/core/risk/isolated_margin_ex_test.go b/core/risk/isolated_margin_ex_test.go
new file mode 100644
index 0000000000..ab7b0a9146
--- /dev/null
+++ b/core/risk/isolated_margin_ex_test.go
@@ -0,0 +1,116 @@
+// 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 risk_test
+
+import (
+ "context"
+ "testing"
+
+ "code.vegaprotocol.io/vega/core/types"
+ "code.vegaprotocol.io/vega/libs/num"
+
+ "github.com/golang/mock/gomock"
+ "github.com/stretchr/testify/require"
+)
+
+func TestSwitchFromIsolatedMargin(t *testing.T) {
+ e := getTestEngine(t, num.DecimalOne())
+ evt := testMargin{
+ party: "party1",
+ size: 1,
+ price: 1000,
+ asset: "ETH",
+ margin: 10,
+ orderMargin: 20,
+ general: 100000,
+ market: "ETH/DEC19",
+ }
+ // we're switching from margin to isolated, we expect to release all of the order margin
+ e.as.EXPECT().InAuction().Return(false).AnyTimes()
+ e.broker.EXPECT().SendBatch(gomock.Any()).AnyTimes()
+ e.tsvc.EXPECT().GetTimeNow().AnyTimes()
+ e.orderbook.EXPECT().GetCloseoutPrice(gomock.Any(), gomock.Any()).Return(num.NewUint(999), nil)
+ risk := e.SwitchFromIsolatedMargin(context.Background(), evt, num.NewUint(100), num.DecimalOne())
+ require.Equal(t, num.NewUint(20), risk.Transfer().Amount.Amount)
+ require.Equal(t, num.NewUint(20), risk.Transfer().MinAmount)
+ require.Equal(t, types.TransferTypeIsolatedMarginLow, risk.Transfer().Type)
+ require.Equal(t, "party1", risk.Transfer().Owner)
+ require.Equal(t, num.UintZero(), risk.MarginLevels().OrderMargin)
+}
+
+func TestSwithToIsolatedMarginContinuous(t *testing.T) {
+ e := getTestEngine(t, num.DecimalOne())
+ evt := testMargin{
+ party: "party1",
+ size: 1,
+ price: 1000,
+ asset: "ETH",
+ margin: 10,
+ orderMargin: 0,
+ general: 500,
+ market: "ETH/DEC19",
+ }
+ // we're switching from margin to isolated, we expect to release all of the order margin
+ e.as.EXPECT().InAuction().Return(false).AnyTimes()
+ e.tsvc.EXPECT().GetTimeNow().AnyTimes()
+ e.broker.EXPECT().SendBatch(gomock.Any()).AnyTimes()
+ e.orderbook.EXPECT().GetCloseoutPrice(gomock.Any(), gomock.Any()).Return(num.NewUint(999), nil).AnyTimes()
+
+ // margin factor too low - 0.01 * 1000 * 1 = 10 < 31 initial margin
+ _, err := e.SwitchToIsolatedMargin(context.Background(), evt, num.NewUint(100), num.DecimalOne(), []*types.Order{}, num.DecimalFromFloat(0.01), nil)
+ require.Equal(t, "required position margin must be greater than initial margin", err.Error())
+
+ // not enough in general account to cover
+ // required position margin (600) + require order margin (0) - margin balance (10) > general account balance (500)
+ _, err = e.SwitchToIsolatedMargin(context.Background(), evt, num.NewUint(100), num.DecimalOne(), []*types.Order{}, num.DecimalFromFloat(0.6), nil)
+ require.Equal(t, "insufficient balance in general account to cover for required order margin", err.Error())
+
+ // case1 - need to topup margin account only
+ risk, err := e.SwitchToIsolatedMargin(context.Background(), evt, num.NewUint(100), num.DecimalOne(), []*types.Order{}, num.DecimalFromFloat(0.5), nil)
+ require.NoError(t, err)
+ require.Equal(t, 1, len(risk))
+ require.Equal(t, num.NewUint(490), risk[0].Transfer().Amount.Amount)
+ require.Equal(t, num.NewUint(490), risk[0].Transfer().MinAmount)
+ require.Equal(t, types.TransferTypeMarginLow, risk[0].Transfer().Type)
+ require.Equal(t, "party1", risk[0].Transfer().Owner)
+ require.Equal(t, num.NewUint(0), risk[0].MarginLevels().OrderMargin)
+
+ // case2 we have also some orders
+ orders := []*types.Order{
+ {Side: types.SideBuy, Remaining: 1, Price: num.NewUint(1000), Status: types.OrderStatusActive},
+ }
+
+ // not enough in general account to cover
+ // required position margin (300) + require order margin (300) - margin balance (10) > general account balance (500)
+ _, err = e.SwitchToIsolatedMargin(context.Background(), evt, num.NewUint(100), num.DecimalOne(), orders, num.DecimalFromFloat(0.3), nil)
+ require.Equal(t, "insufficient balance in general account to cover for required order margin", err.Error())
+
+ evt.general = 10000
+ risk, err = e.SwitchToIsolatedMargin(context.Background(), evt, num.NewUint(100), num.DecimalOne(), orders, num.DecimalFromFloat(0.3), nil)
+ require.NoError(t, err)
+ require.Equal(t, 2, len(risk))
+ require.Equal(t, num.NewUint(290), risk[0].Transfer().Amount.Amount)
+ require.Equal(t, num.NewUint(290), risk[0].Transfer().MinAmount)
+ require.Equal(t, types.TransferTypeMarginLow, risk[0].Transfer().Type)
+ require.Equal(t, "party1", risk[0].Transfer().Owner)
+ require.Equal(t, num.NewUint(300), risk[0].MarginLevels().OrderMargin)
+
+ require.Equal(t, num.NewUint(300), risk[1].Transfer().Amount.Amount)
+ require.Equal(t, num.NewUint(300), risk[1].Transfer().MinAmount)
+ require.Equal(t, types.TransferTypeOrderMarginLow, risk[1].Transfer().Type)
+ require.Equal(t, "party1", risk[1].Transfer().Owner)
+ require.Equal(t, num.NewUint(300), risk[0].MarginLevels().OrderMargin)
+}
diff --git a/core/risk/isolated_margin_test.go b/core/risk/isolated_margin_test.go
new file mode 100644
index 0000000000..ed08625214
--- /dev/null
+++ b/core/risk/isolated_margin_test.go
@@ -0,0 +1,340 @@
+// 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 risk
+
+import (
+ "testing"
+
+ "code.vegaprotocol.io/vega/core/types"
+ "code.vegaprotocol.io/vega/libs/num"
+
+ "github.com/stretchr/testify/require"
+)
+
+func TestCalcMarginForOrdersBySideBuyContinous(t *testing.T) {
+ orders := []*types.Order{
+ {Side: types.SideBuy, Remaining: 10, Price: num.NewUint(50), Status: types.OrderStatusActive},
+ {Side: types.SideBuy, Remaining: 20, Price: num.NewUint(40), Status: types.OrderStatusActive},
+ {Side: types.SideBuy, Remaining: 30, Price: num.NewUint(20), Status: types.OrderStatusActive},
+ }
+ currentPos := int64(0)
+ marginFactor := num.DecimalFromFloat(0.5)
+ positionFactor := num.DecimalFromInt64(10)
+
+ // no position
+ // orderMargin = 0.5*(10 * 50 + 20 * 40 + 30 * 20)/10 = 95
+ require.Equal(t, num.NewUint(95), calcOrderSideMargin(currentPos, orders, positionFactor, marginFactor, nil))
+
+ // long position - similar to no position, nothing is covered
+ // orderMargin = 0.5*(10 * 50 + 20 * 40 + 30 * 20)/10 = 95
+ currentPos = 20
+ require.Equal(t, num.NewUint(95), calcOrderSideMargin(currentPos, orders, positionFactor, marginFactor, nil))
+
+ // short position
+ // part of the top order is covered, i.e. only 6 count:
+ // orderMargin = 0.5*(6 * 50 + 20 * 40 + 30 * 20)/10 = 85
+ currentPos = -4
+ require.Equal(t, num.NewUint(85), calcOrderSideMargin(currentPos, orders, positionFactor, marginFactor, nil))
+
+ // short position
+ // all of the top order is covered, a some of the second one too
+ // orderMargin = 0.5*(0 * 50 + 10 * 40 + 30 * 20)/10 = 50
+ currentPos = -20
+ require.Equal(t, num.NewUint(50), calcOrderSideMargin(currentPos, orders, positionFactor, marginFactor, nil))
+
+ // short position
+ // all of the orders are covered by position on the other side
+ currentPos = -60
+ require.Equal(t, num.UintZero(), calcOrderSideMargin(currentPos, orders, positionFactor, marginFactor, nil))
+}
+
+func TestCalcMarginForOrdersBySideSellContinous(t *testing.T) {
+ orders := []*types.Order{
+ {Side: types.SideSell, Remaining: 10, Price: num.NewUint(20), Status: types.OrderStatusActive},
+ {Side: types.SideSell, Remaining: 20, Price: num.NewUint(40), Status: types.OrderStatusActive},
+ {Side: types.SideSell, Remaining: 30, Price: num.NewUint(50), Status: types.OrderStatusActive},
+ }
+ currentPos := int64(0)
+ marginFactor := num.DecimalFromFloat(0.5)
+ positionFactor := num.DecimalFromInt64(10)
+
+ // no position
+ // orderMargin = 0.5*(10 * 20 + 20 * 40 + 30 * 50)/10 = 125
+ require.Equal(t, num.NewUint(125), calcOrderSideMargin(currentPos, orders, positionFactor, marginFactor, nil))
+
+ // short position - similar to no position, nothing is covered
+ // orderMargin = 0.5*(10 * 20 + 20 * 40 + 30 * 50)/10 = 125
+ currentPos = -20
+ require.Equal(t, num.NewUint(125), calcOrderSideMargin(currentPos, orders, positionFactor, marginFactor, nil))
+
+ // long position
+ // part of the top order is covered, i.e. only 6 count:
+ // orderMargin = 0.5*(6 * 20 + 20 * 40 + 30 * 50)/10 = 121
+ currentPos = 4
+ require.Equal(t, num.NewUint(121), calcOrderSideMargin(currentPos, orders, positionFactor, marginFactor, nil))
+
+ // long position
+ // all of the top order is covered, a some of the second one too
+ // orderMargin = 0.5*(0 * 20 + 10 * 40 + 30 * 50)/10 = 95
+ currentPos = 20
+ require.Equal(t, num.NewUint(95), calcOrderSideMargin(currentPos, orders, positionFactor, marginFactor, nil))
+
+ // long position
+ // all of the orders are covered by position on the other side
+ currentPos = 60
+ require.Equal(t, num.UintZero(), calcOrderSideMargin(currentPos, orders, positionFactor, marginFactor, nil))
+}
+
+func TestCalcMarginForOrdersBySideBuyAuction(t *testing.T) {
+ orders := []*types.Order{
+ {Side: types.SideBuy, Remaining: 10, Price: num.NewUint(50), Status: types.OrderStatusActive},
+ {Side: types.SideBuy, Remaining: 20, Price: num.NewUint(40), Status: types.OrderStatusActive},
+ {Side: types.SideBuy, Remaining: 30, Price: num.NewUint(20), Status: types.OrderStatusActive},
+ }
+ currentPos := int64(0)
+ marginFactor := num.DecimalFromFloat(0.5)
+ positionFactor := num.DecimalFromInt64(10)
+ auctionPrice := num.NewUint(42)
+
+ // no position
+ // orderMargin = 0.5*(10 * 50 + 20 * 42 + 30 * 42)/10 = 130 (using the max between the order and auction price)
+ require.Equal(t, num.NewUint(130), calcOrderSideMargin(currentPos, orders, positionFactor, marginFactor, auctionPrice))
+
+ // long position - similar to no position, nothing is covered (using the max between the order and auction price)
+ // orderMargin = 0.5*(10 * 50 + 20 * 42 + 30 * 42)/10 = 130
+ currentPos = 20
+ require.Equal(t, num.NewUint(130), calcOrderSideMargin(currentPos, orders, positionFactor, marginFactor, auctionPrice))
+
+ // short position
+ // part of the top order is covered, i.e. only 6 count:
+ // orderMargin = 0.5*(6 * 50 + 20 * 42 + 30 * 42)/10 = 120
+ currentPos = -4
+ require.Equal(t, num.NewUint(120), calcOrderSideMargin(currentPos, orders, positionFactor, marginFactor, auctionPrice))
+
+ // short position
+ // all of the top order is covered, a some of the second one too
+ // orderMargin = 0.5*(0 * 50 + 10 * 42 + 30 * 42)/10 = 84
+ currentPos = -20
+ require.Equal(t, num.NewUint(84), calcOrderSideMargin(currentPos, orders, positionFactor, marginFactor, auctionPrice))
+
+ // short position
+ // all of the orders are covered by position on the other side
+ currentPos = -60
+ require.Equal(t, num.UintZero(), calcOrderSideMargin(currentPos, orders, positionFactor, marginFactor, auctionPrice))
+}
+
+func TestCalcMarginForOrdersBySideSellAuction(t *testing.T) {
+ orders := []*types.Order{
+ {Side: types.SideSell, Remaining: 10, Price: num.NewUint(20), Status: types.OrderStatusActive},
+ {Side: types.SideSell, Remaining: 20, Price: num.NewUint(40), Status: types.OrderStatusActive},
+ {Side: types.SideSell, Remaining: 30, Price: num.NewUint(50), Status: types.OrderStatusActive},
+ }
+ currentPos := int64(0)
+ marginFactor := num.DecimalFromFloat(0.5)
+ positionFactor := num.DecimalFromInt64(10)
+ auctionPrice := num.NewUint(42)
+
+ // no position
+ // orderMargin = 0.5*(10 * 42 + 20 * 42 + 30 * 50)/10 = 138
+ require.Equal(t, num.NewUint(138), calcOrderSideMargin(currentPos, orders, positionFactor, marginFactor, auctionPrice))
+
+ // short position - similar to no position, nothing is covered
+ // orderMargin = 0.5*(10 * 42 + 20 * 42 + 30 * 50)/10 = 138
+ currentPos = -20
+ require.Equal(t, num.NewUint(138), calcOrderSideMargin(currentPos, orders, positionFactor, marginFactor, auctionPrice))
+
+ // long position
+ // part of the top order is covered, i.e. only 6 count:
+ // orderMargin = 0.5*(6 * 42 + 20 * 42 + 30 * 50)/10 = 129
+ currentPos = 4
+ require.Equal(t, num.NewUint(129), calcOrderSideMargin(currentPos, orders, positionFactor, marginFactor, auctionPrice))
+
+ // long position
+ // all of the top order is covered, a some of the second one too
+ // orderMargin = 0.5*(0 * 42 + 10 * 42 + 30 * 50)/10 = 96
+ currentPos = 20
+ require.Equal(t, num.NewUint(96), calcOrderSideMargin(currentPos, orders, positionFactor, marginFactor, auctionPrice))
+
+ // long position
+ // all of the orders are covered by position on the other side
+ currentPos = 60
+ require.Equal(t, num.UintZero(), calcOrderSideMargin(currentPos, orders, positionFactor, marginFactor, auctionPrice))
+}
+
+func TestCalcOrderMarginContinous(t *testing.T) {
+ orders := []*types.Order{
+ {Side: types.SideSell, Remaining: 10, Price: num.NewUint(20), Status: types.OrderStatusActive},
+ {Side: types.SideBuy, Remaining: 10, Price: num.NewUint(50), Status: types.OrderStatusActive},
+ {Side: types.SideSell, Remaining: 20, Price: num.NewUint(40), Status: types.OrderStatusActive},
+ {Side: types.SideBuy, Remaining: 20, Price: num.NewUint(40), Status: types.OrderStatusActive},
+ {Side: types.SideSell, Remaining: 30, Price: num.NewUint(50), Status: types.OrderStatusActive},
+ {Side: types.SideBuy, Remaining: 30, Price: num.NewUint(20), Status: types.OrderStatusActive},
+ }
+ currentPos := int64(0)
+ marginFactor := num.DecimalFromFloat(0.5)
+ positionFactor := num.DecimalFromInt64(10)
+
+ // no position
+ // buy orderMargin = 0.5*(10 * 50 + 20 * 40 + 30 * 20)/10 = 95
+ // sell orderMargin = 0.5*(10 * 20 + 20 * 40 + 30 * 50)/10 = 125
+ // order margin = max(95,125) = 125
+ require.Equal(t, num.NewUint(125), calcOrderMargins(currentPos, orders, positionFactor, marginFactor, nil))
+
+ // long position
+ // buy orderMargin = 0.5*(10 * 50 + 20 * 40 + 30 * 20)/10 = 95
+ // sell orderMargin = 0.5*(6 * 20 + 20 * 40 + 30 * 50)/10 = 121
+ currentPos = 4
+ require.Equal(t, num.NewUint(121), calcOrderMargins(currentPos, orders, positionFactor, marginFactor, nil))
+
+ // longer position
+ // buy orderMargin = 0.5*(10 * 50 + 20 * 40 + 30 * 20)/10 = 95
+ // sell orderMargin = 0.5*(0 * 20 + 5 * 40 + 30 * 50)/10 = 85
+ currentPos = 25
+ require.Equal(t, num.NewUint(95), calcOrderMargins(currentPos, orders, positionFactor, marginFactor, nil))
+
+ // short position
+ // buy orderMargin = 0.5*(6 * 50 + 20 * 40 + 30 * 20)/10 = 85
+ // sell orderMargin = 0.5*(10 * 20 + 20 * 40 + 30 * 50)/10 = 125
+ currentPos = -4
+ require.Equal(t, num.NewUint(125), calcOrderMargins(currentPos, orders, positionFactor, marginFactor, nil))
+
+ // shorter position
+ // buy orderMargin = 0.5*(0 * 50 + 10 * 40 + 30 * 20)/10 = 50
+ // sell orderMargin = 0.5*(10 * 20 + 20 * 40 + 30 * 50)/10 = 125
+ currentPos = -20
+ require.Equal(t, num.NewUint(125), calcOrderMargins(currentPos, orders, positionFactor, marginFactor, nil))
+}
+
+func TestGetIsolatedMarginTransfersOnPositionChangeIncrease(t *testing.T) {
+ party := "Zohar"
+ asset := "BTC"
+
+ marginFactor := num.NewDecimalFromFloat(0.5)
+ curMarginBalance := num.NewUint(1000)
+ positionFactor := num.DecimalFromInt64(10)
+
+ // go long trades
+ trades := []*types.Trade{
+ {Size: 5, Price: num.NewUint(12)},
+ {Size: 10, Price: num.NewUint(10)},
+ }
+
+ // position going up from 0 to 15 (increasing)
+ // required margin topup is equal to: 0.5 * (5*12+10*10)/10 = 8
+ transfer := getIsolatedMarginTransfersOnPositionChange(party, asset, trades, types.SideBuy, 15, positionFactor, marginFactor, curMarginBalance, nil, false)
+ // i.e. take from order margin account to the margin account
+ require.Equal(t, types.TransferTypeIsolatedMarginLow, transfer.Type)
+ require.Equal(t, num.NewUint(8), transfer.Amount.Amount)
+ require.Equal(t, num.NewUint(8), transfer.MinAmount)
+
+ // position going up from 0 to -15 (increasing)
+ // go short trades
+ trades = []*types.Trade{
+ {Size: 10, Price: num.NewUint(10)},
+ {Size: 5, Price: num.NewUint(12)},
+ }
+ // required margin topup is equal to: 0.5 * (5*12+10*10)/10 = 8
+ transfer = getIsolatedMarginTransfersOnPositionChange(party, asset, trades, types.SideSell, -15, positionFactor, marginFactor, curMarginBalance, nil, false)
+ // i.e. take from order margin account to the margin account
+ require.Equal(t, types.TransferTypeIsolatedMarginLow, transfer.Type)
+ require.Equal(t, num.NewUint(8), transfer.Amount.Amount)
+ require.Equal(t, num.NewUint(8), transfer.MinAmount)
+}
+
+func TestGetIsolatedMarginTransfersOnPositionChangeDecrease(t *testing.T) {
+ party := "Zohar"
+ asset := "BTC"
+
+ marginFactor := num.NewDecimalFromFloat(0.5)
+ curMarginBalance := num.NewUint(40)
+ positionFactor := num.DecimalFromInt64(10)
+
+ trades := []*types.Trade{
+ {Size: 5, Price: num.NewUint(12)},
+ {Size: 10, Price: num.NewUint(10)},
+ }
+ markPrice := num.NewUint(12)
+ // position going down from 20 to 5 (decreasing)
+ // required margin topup is equal to: (40+20/10*-2) * 15/20) = 27
+ transfer := getIsolatedMarginTransfersOnPositionChange(party, asset, trades, types.SideSell, 5, positionFactor, marginFactor, curMarginBalance, markPrice, false)
+ // i.e. release from the margin account to the general account
+ require.Equal(t, types.TransferTypeMarginHigh, transfer.Type)
+ require.Equal(t, num.NewUint(27), transfer.Amount.Amount)
+ require.Equal(t, num.NewUint(27), transfer.MinAmount)
+
+ // position going down from 20 to 5 (decreasing)
+ trades = []*types.Trade{
+ {Size: 5, Price: num.NewUint(10)},
+ {Size: 10, Price: num.NewUint(12)},
+ }
+ // required margin release is equal to: (40+20/10*-1) * 15/20) = 28
+ transfer = getIsolatedMarginTransfersOnPositionChange(party, asset, trades, types.SideBuy, -5, positionFactor, marginFactor, curMarginBalance, markPrice, false)
+ // i.e. release from margin account general account
+ require.Equal(t, types.TransferTypeMarginHigh, transfer.Type)
+ require.Equal(t, num.NewUint(28), transfer.Amount.Amount)
+ require.Equal(t, num.NewUint(28), transfer.MinAmount)
+}
+
+func TestGetIsolatedMarginTransfersOnPositionChangeSwitchSides(t *testing.T) {
+ party := "Zohar"
+ asset := "BTC"
+
+ marginFactor := num.NewDecimalFromFloat(0.5)
+ curMarginBalance := num.NewUint(1000)
+ positionFactor := num.DecimalFromInt64(10)
+
+ trades := []*types.Trade{
+ {Size: 15, Price: num.NewUint(11)},
+ {Size: 10, Price: num.NewUint(12)},
+ }
+ // position going from 20 to -5 (switching sides)
+ // required margin release is equal to: we release all 1000 margin, then require 0.5 * 5 * 12 / 10
+ transfer := getIsolatedMarginTransfersOnPositionChange(party, asset, trades, types.SideSell, -5, positionFactor, marginFactor, curMarginBalance, nil, false)
+ // i.e. release from the margin account to the general account
+ require.Equal(t, types.TransferTypeMarginHigh, transfer.Type)
+ require.Equal(t, num.NewUint(997), transfer.Amount.Amount)
+ require.Equal(t, num.NewUint(997), transfer.MinAmount)
+
+ curMarginBalance = num.NewUint(1)
+ transfer = getIsolatedMarginTransfersOnPositionChange(party, asset, trades, types.SideSell, -5, positionFactor, marginFactor, curMarginBalance, nil, false)
+
+ // now we expect to need 2 more to be added from the order margin account
+ require.Equal(t, types.TransferTypeMarginLow, transfer.Type)
+ require.Equal(t, num.NewUint(2), transfer.Amount.Amount)
+ require.Equal(t, num.NewUint(2), transfer.MinAmount)
+
+ curMarginBalance = num.NewUint(1000)
+ trades = []*types.Trade{
+ {Size: 10, Price: num.NewUint(12)},
+ {Size: 15, Price: num.NewUint(11)},
+ }
+ // position going from -20 to 5 (switching sides)
+ // required margin release is equal to: we release all 1000 margin, then require 0.5 * 5 * 11 / 10
+ transfer = getIsolatedMarginTransfersOnPositionChange(party, asset, trades, types.SideBuy, 5, positionFactor, marginFactor, curMarginBalance, nil, false)
+ // i.e. release from the margin account to the general account
+ require.Equal(t, types.TransferTypeMarginHigh, transfer.Type)
+ require.Equal(t, num.NewUint(998), transfer.Amount.Amount)
+ require.Equal(t, num.NewUint(998), transfer.MinAmount)
+
+ // try the same as above for switching sides to short
+ curMarginBalance = num.NewUint(1)
+ transfer = getIsolatedMarginTransfersOnPositionChange(party, asset, trades, types.SideSell, -5, positionFactor, marginFactor, curMarginBalance, nil, false)
+
+ // now we expect to need 1 more to be added from the order margin account
+ require.Equal(t, types.TransferTypeMarginLow, transfer.Type)
+ require.Equal(t, num.NewUint(1), transfer.Amount.Amount)
+ require.Equal(t, num.NewUint(1), transfer.MinAmount)
+}
diff --git a/core/risk/margins_calculation.go b/core/risk/margins_calculation.go
index cc0e7695ab..1bbcec5f6d 100644
--- a/core/risk/margins_calculation.go
+++ b/core/risk/margins_calculation.go
@@ -52,6 +52,9 @@ func newMarginLevels(maintenance num.Decimal, scalingFactors *scalingFactorsUint
SearchLevel: num.UintZero().Div(num.UintZero().Mul(scalingFactors.search, umaintenance), exp),
InitialMargin: num.UintZero().Div(num.UintZero().Mul(scalingFactors.initial, umaintenance), exp),
CollateralReleaseLevel: num.UintZero().Div(num.UintZero().Mul(scalingFactors.release, umaintenance), exp),
+ OrderMargin: num.UintZero(),
+ MarginMode: types.MarginModeCrossMargin,
+ MarginFactor: num.DecimalZero(),
}
}
@@ -80,6 +83,9 @@ func (e *Engine) calculateMargins(m events.Margin, markPrice *num.Uint, rf types
SearchLevel: num.UintZero(),
InitialMargin: num.UintZero(),
CollateralReleaseLevel: num.UintZero(),
+ OrderMargin: num.UintZero(),
+ MarginMode: types.MarginModeCrossMargin,
+ MarginFactor: num.DecimalZero(),
}
}
// negative increment == short positions require extra margin, otherwise long requires extra margin
@@ -266,6 +272,9 @@ func (e *Engine) calculateMargins(m events.Margin, markPrice *num.Uint, rf types
SearchLevel: num.UintZero(),
InitialMargin: num.UintZero(),
CollateralReleaseLevel: num.UintZero(),
+ OrderMargin: num.UintZero(),
+ MarginMode: types.MarginModeCrossMargin,
+ MarginFactor: num.DecimalZero(),
}
}
diff --git a/core/settlement/engine_test.go b/core/settlement/engine_test.go
index 0e9a696914..da2bbcd328 100644
--- a/core/settlement/engine_test.go
+++ b/core/settlement/engine_test.go
@@ -56,8 +56,8 @@ type posValue struct {
type marginVal struct {
events.MarketPosition
- asset, marketID string
- margin, general, marginShortFall uint64
+ asset, marketID string
+ margin, orderMargin, general, marginShortFall uint64
}
func TestMarketExpiry(t *testing.T) {
@@ -1587,10 +1587,18 @@ func (m marginVal) MarginBalance() *num.Uint {
return num.NewUint(m.margin)
}
+func (m marginVal) OrderMarginBalance() *num.Uint {
+ return num.NewUint(m.orderMargin)
+}
+
func (m marginVal) GeneralBalance() *num.Uint {
return num.NewUint(m.general)
}
+func (m marginVal) GeneralAccountBalance() *num.Uint {
+ return num.NewUint(m.general)
+}
+
func (m marginVal) BondBalance() *num.Uint {
return num.UintZero()
}
diff --git a/core/types/matching.go b/core/types/matching.go
index 3be86fbbc7..26c2e3595a 100644
--- a/core/types/matching.go
+++ b/core/types/matching.go
@@ -900,9 +900,11 @@ const (
// An FOK, IOC, or GFN order was rejected because it resulted in trades outside the price bounds.
OrderErrorNonPersistentOrderOutOfPriceBounds OrderError = proto.OrderError_ORDER_ERROR_NON_PERSISTENT_ORDER_OUT_OF_PRICE_BOUNDS
// Unable to submit pegged order, temporarily too many pegged orders across all markets.
- OrderErrorTooManyPeggedOrders OrderError = proto.OrderError_ORDER_ERROR_TOO_MANY_PEGGED_ORDERS
- OrderErrorPostOnlyOrderWouldTrade OrderError = proto.OrderError_ORDER_ERROR_POST_ONLY_ORDER_WOULD_TRADE
- OrderErrorReduceOnlyOrderWouldNotReducePosition OrderError = proto.OrderError_ORDER_ERROR_REDUCE_ONLY_ORDER_WOULD_NOT_REDUCE_POSITION
+ OrderErrorTooManyPeggedOrders OrderError = proto.OrderError_ORDER_ERROR_TOO_MANY_PEGGED_ORDERS
+ OrderErrorPostOnlyOrderWouldTrade OrderError = proto.OrderError_ORDER_ERROR_POST_ONLY_ORDER_WOULD_TRADE
+ OrderErrorReduceOnlyOrderWouldNotReducePosition OrderError = proto.OrderError_ORDER_ERROR_REDUCE_ONLY_ORDER_WOULD_NOT_REDUCE_POSITION
+ OrderErrorIsolatedMarginCheckFailed OrderError = proto.OrderError_ORDER_ERROR_ISOLATED_MARGIN_CHECK_FAILED
+ OrderErrorPeggedOrdersNotAllowedInIsolatedMargin OrderError = proto.OrderError_ORDER_ERROR_PEGGED_ORDERS_NOT_ALLOWED_IN_ISOLATED_MARGIN_MODE
)
var (
@@ -930,6 +932,7 @@ var (
ErrTooManyPeggedOrders = OrderErrorTooManyPeggedOrders
ErrPostOnlyOrderWouldTrade = OrderErrorPostOnlyOrderWouldTrade
ErrReduceOnlyOrderWouldNotReducePosition = OrderErrorReduceOnlyOrderWouldNotReducePosition
+ ErrPeggedOrdersNotAllowedInIsolatedMargin = OrderErrorPeggedOrdersNotAllowedInIsolatedMargin
)
func IsOrderError(err error) (OrderError, bool) {
@@ -940,5 +943,7 @@ func IsOrderError(err error) (OrderError, bool) {
func IsStoppingOrder(o OrderError) bool {
return o == OrderErrorNonPersistentOrderOutOfPriceBounds ||
o == ErrPostOnlyOrderWouldTrade ||
- o == ErrReduceOnlyOrderWouldNotReducePosition
+ o == ErrReduceOnlyOrderWouldNotReducePosition ||
+ o == OrderErrorIsolatedMarginCheckFailed ||
+ o == OrderErrorPeggedOrdersNotAllowedInIsolatedMargin
}
diff --git a/core/types/risk.go b/core/types/risk.go
index 74460b90f3..f8475c3186 100644
--- a/core/types/risk.go
+++ b/core/types/risk.go
@@ -190,10 +190,13 @@ type MarginLevels struct {
SearchLevel *num.Uint
InitialMargin *num.Uint
CollateralReleaseLevel *num.Uint
+ OrderMargin *num.Uint
Party string
MarketID string
Asset string
Timestamp int64
+ MarginMode MarginMode
+ MarginFactor num.Decimal
}
type RiskFactor struct {
@@ -208,16 +211,19 @@ func (m MarginLevels) IntoProto() *proto.MarginLevels {
SearchLevel: num.UintToString(m.SearchLevel),
InitialMargin: num.UintToString(m.InitialMargin),
CollateralReleaseLevel: num.UintToString(m.CollateralReleaseLevel),
+ OrderMargin: num.UintToString(m.OrderMargin),
PartyId: m.Party,
MarketId: m.MarketID,
Asset: m.Asset,
Timestamp: m.Timestamp,
+ MarginMode: m.MarginMode,
+ MarginFactor: m.MarginFactor.String(),
}
}
func (m MarginLevels) String() string {
return fmt.Sprintf(
- "marketID(%s) asset(%s) party(%s) intialMargin(%s) maintenanceMargin(%s) collateralReleaseLevel(%s) searchLevel(%s) timestamp(%v)",
+ "marketID(%s) asset(%s) party(%s) intialMargin(%s) maintenanceMargin(%s) collateralReleaseLevel(%s) searchLevel(%s) orderMargin(%s) timestamp(%v) marginMode(%d) marginFactor(%s)",
m.MarketID,
m.Asset,
m.Party,
@@ -225,7 +231,10 @@ func (m MarginLevels) String() string {
stringer.PtrToString(m.MaintenanceMargin),
stringer.PtrToString(m.CollateralReleaseLevel),
stringer.PtrToString(m.SearchLevel),
+ stringer.PtrToString(m.OrderMargin),
m.Timestamp,
+ m.MarginMode,
+ m.MarginFactor.String(),
)
}
diff --git a/core/types/snapshot_nodes.go b/core/types/snapshot_nodes.go
index e993bc3bf2..75f75f14e3 100644
--- a/core/types/snapshot_nodes.go
+++ b/core/types/snapshot_nodes.go
@@ -450,6 +450,7 @@ type ExecMarket struct {
ExpiringStopOrders []*Order
Product *snapshot.Product
FeesStats *eventspb.FeesStats
+ PartyMarginFactors []*snapshot.PartyMarginFactor
}
type ExecSpotMarket struct {
@@ -3694,6 +3695,7 @@ func ExecMarketFromProto(em *snapshot.Market) *ExecMarket {
StopOrders: em.StopOrders,
Product: em.Product,
FeesStats: em.FeesStats,
+ PartyMarginFactors: em.PartyMarginFactor,
}
for _, o := range em.ExpiringOrders {
@@ -3733,6 +3735,7 @@ func (e ExecMarket) IntoProto() *snapshot.Market {
StopOrders: e.StopOrders,
Product: e.Product,
FeesStats: e.FeesStats,
+ PartyMarginFactor: e.PartyMarginFactors,
}
if e.CurrentMarkPrice != nil {
diff --git a/core/types/transfer.go b/core/types/transfer.go
index dd54105c87..295805659e 100644
--- a/core/types/transfer.go
+++ b/core/types/transfer.go
@@ -214,4 +214,8 @@ const (
TransferTypeFeeReferrerRewardPay TransferType = proto.TransferType_TRANSFER_TYPE_FEE_REFERRER_REWARD_PAY
TransferTypeFeeReferrerRewardDistribute TransferType = proto.TransferType_TRANSFER_TYPE_FEE_REFERRER_REWARD_DISTRIBUTE
+
+ TransferTypeOrderMarginLow TransferType = proto.TransferType_TRANSFER_TYPE_ORDER_MARGIN_LOW
+ TransferTypeOrderMarginHigh TransferType = proto.TransferType_TRANSFER_TYPE_ORDER_MARGIN_HIGH
+ TransferTypeIsolatedMarginLow TransferType = proto.TransferType_TRANSFER_TYPE_ISOLATED_MARGIN_LOW
)
diff --git a/datanode/entities/enums.go b/datanode/entities/enums.go
index 0c01f30bdc..3785a0b410 100644
--- a/datanode/entities/enums.go
+++ b/datanode/entities/enums.go
@@ -1000,3 +1000,28 @@ func (s *LiquidityFeeSettingsMethod) DecodeText(_ *pgtype.ConnInfo, src []byte)
*s = LiquidityFeeSettingsMethod(val)
return nil
}
+
+type MarginMode vega.MarginMode
+
+const (
+ MarginModeUnspecified = MarginMode(vega.MarginMode_MARGIN_MODE_UNSPECIFIED)
+ MarginModeCrossMargin = MarginMode(vega.MarginMode_MARGIN_MODE_CROSS_MARGIN)
+ MarginModeIsolatedMargin = MarginMode(vega.MarginMode_MARGIN_MODE_ISOLATED_MARGIN)
+)
+
+func (m MarginMode) EncodeText(_ *pgtype.ConnInfo, buf []byte) ([]byte, error) {
+ str, ok := vega.MarginMode_name[int32(m)]
+ if !ok {
+ return buf, fmt.Errorf("unknown margin mode: %v", m)
+ }
+ return append(buf, []byte(str)...), nil
+}
+
+func (m *MarginMode) DecodeText(_ *pgtype.ConnInfo, src []byte) error {
+ val, ok := vega.MarginMode_value[string(src)]
+ if !ok {
+ return fmt.Errorf("unknown margin mode: %s", src)
+ }
+ *m = MarginMode(val)
+ return nil
+}
diff --git a/datanode/entities/margin_levels.go b/datanode/entities/margin_levels.go
index d39dce0ded..7620964a11 100644
--- a/datanode/entities/margin_levels.go
+++ b/datanode/entities/margin_levels.go
@@ -29,26 +29,49 @@ import (
type MarginLevels struct {
AccountID AccountID
+ OrderMarginAccountID AccountID
MaintenanceMargin decimal.Decimal
SearchLevel decimal.Decimal
InitialMargin decimal.Decimal
CollateralReleaseLevel decimal.Decimal
+ OrderMargin decimal.Decimal
Timestamp time.Time
TxHash TxHash
VegaTime time.Time
+ MarginMode MarginMode
+ MarginFactor decimal.Decimal
}
func MarginLevelsFromProto(ctx context.Context, margin *vega.MarginLevels, accountSource AccountSource, txHash TxHash, vegaTime time.Time) (MarginLevels, error) {
var (
- maintenanceMargin, searchLevel, initialMargin, collateralReleaseLevel decimal.Decimal
- err error
+ maintenanceMargin, searchLevel, initialMargin, collateralReleaseLevel, orderMargin decimal.Decimal
+ err error
)
+ marginFactor := decimal.NewFromInt32(0)
+ if len(margin.MarginFactor) > 0 {
+ marginFactor, err = decimal.NewFromString(margin.MarginFactor)
+ if err != nil {
+ return MarginLevels{}, fmt.Errorf("failed to obtain margin factor for margin level: %w", err)
+ }
+ }
+ marginMode := MarginModeCrossMargin
+ if margin.MarginMode == vega.MarginMode_MARGIN_MODE_ISOLATED_MARGIN {
+ marginMode = MarginMode(margin.MarginMode)
+ }
marginAccount, err := GetAccountFromMarginLevel(ctx, margin, accountSource, txHash, vegaTime)
if err != nil {
return MarginLevels{}, fmt.Errorf("failed to obtain account for margin level: %w", err)
}
+ orderMarginAccount, err := GetAccountFromOrderMarginLevel(ctx, margin, accountSource, txHash, vegaTime)
+ var orderMarginAccountID AccountID
+ if margin.MarginMode == vega.MarginMode_MARGIN_MODE_ISOLATED_MARGIN && err != nil {
+ return MarginLevels{}, fmt.Errorf("failed to obtain account for order margin level: %w", err)
+ } else {
+ orderMarginAccountID = orderMarginAccount.ID
+ }
+
if maintenanceMargin, err = decimal.NewFromString(margin.MaintenanceMargin); err != nil {
return MarginLevels{}, fmt.Errorf("invalid maintenance margin: %w", err)
}
@@ -65,15 +88,25 @@ func MarginLevelsFromProto(ctx context.Context, margin *vega.MarginLevels, accou
return MarginLevels{}, fmt.Errorf("invalid collateralReleaseLevel: %w", err)
}
+ if len(margin.OrderMargin) == 0 {
+ orderMargin = decimal.NewFromInt32(0)
+ } else if orderMargin, err = decimal.NewFromString(margin.OrderMargin); err != nil {
+ return MarginLevels{}, fmt.Errorf("invalid orderMarginLevel: %w", err)
+ }
+
return MarginLevels{
AccountID: marginAccount.ID,
+ OrderMarginAccountID: orderMarginAccountID,
MaintenanceMargin: maintenanceMargin,
SearchLevel: searchLevel,
InitialMargin: initialMargin,
CollateralReleaseLevel: collateralReleaseLevel,
+ OrderMargin: orderMargin,
Timestamp: time.Unix(0, vegaTime.UnixNano()),
TxHash: txHash,
VegaTime: vegaTime,
+ MarginMode: marginMode,
+ MarginFactor: marginFactor,
}, nil
}
@@ -92,6 +125,21 @@ func GetAccountFromMarginLevel(ctx context.Context, margin *vega.MarginLevels, a
return marginAccount, err
}
+func GetAccountFromOrderMarginLevel(ctx context.Context, margin *vega.MarginLevels, accountSource AccountSource, txHash TxHash, vegaTime time.Time) (Account, error) {
+ orderMarginAccount := Account{
+ ID: "",
+ PartyID: PartyID(margin.PartyId),
+ AssetID: AssetID(margin.Asset),
+ MarketID: MarketID(margin.MarketId),
+ Type: vega.AccountType_ACCOUNT_TYPE_ORDER_MARGIN,
+ TxHash: txHash,
+ VegaTime: vegaTime,
+ }
+
+ err := accountSource.Obtain(ctx, &orderMarginAccount)
+ return orderMarginAccount, err
+}
+
func (ml *MarginLevels) ToProto(ctx context.Context, accountSource AccountSource) (*vega.MarginLevels, error) {
marginAccount, err := accountSource.GetByID(ctx, ml.AccountID)
if err != nil {
@@ -103,10 +151,13 @@ func (ml *MarginLevels) ToProto(ctx context.Context, accountSource AccountSource
SearchLevel: ml.SearchLevel.String(),
InitialMargin: ml.InitialMargin.String(),
CollateralReleaseLevel: ml.CollateralReleaseLevel.String(),
+ OrderMargin: ml.OrderMargin.String(),
PartyId: marginAccount.PartyID.String(),
MarketId: marginAccount.MarketID.String(),
Asset: marginAccount.AssetID.String(),
Timestamp: ml.Timestamp.UnixNano(),
+ MarginMode: vega.MarginMode(ml.MarginMode),
+ MarginFactor: ml.MarginFactor.String(),
}, nil
}
@@ -155,14 +206,16 @@ func (ml MarginLevels) Key() MarginLevelsKey {
func (ml MarginLevels) ToRow() []interface{} {
return []interface{}{
- ml.AccountID, ml.Timestamp, ml.MaintenanceMargin,
- ml.SearchLevel, ml.InitialMargin, ml.CollateralReleaseLevel, ml.TxHash, ml.VegaTime,
+ ml.AccountID, ml.OrderMarginAccountID, ml.Timestamp, ml.MaintenanceMargin,
+ ml.SearchLevel, ml.InitialMargin, ml.CollateralReleaseLevel, ml.OrderMargin, ml.TxHash, ml.VegaTime,
+ ml.MarginMode, ml.MarginFactor,
}
}
var MarginLevelsColumns = []string{
- "account_id", "timestamp", "maintenance_margin",
- "search_level", "initial_margin", "collateral_release_level", "tx_hash", "vega_time",
+ "account_id", "order_margin_account_id", "timestamp", "maintenance_margin",
+ "search_level", "initial_margin", "collateral_release_level", "order_margin", "tx_hash",
+ "vega_time", "margin_mode", "margin_factor",
}
type MarginCursor struct {
diff --git a/datanode/gateway/graphql/generated.go b/datanode/gateway/graphql/generated.go
index 224489b1d6..0303abce49 100644
--- a/datanode/gateway/graphql/generated.go
+++ b/datanode/gateway/graphql/generated.go
@@ -1099,7 +1099,10 @@ type ComplexityRoot struct {
CollateralReleaseLevel func(childComplexity int) int
InitialLevel func(childComplexity int) int
MaintenanceLevel func(childComplexity int) int
+ MarginFactor func(childComplexity int) int
+ MarginMode func(childComplexity int) int
Market func(childComplexity int) int
+ OrderMarginLevel func(childComplexity int) int
Party func(childComplexity int) int
SearchLevel func(childComplexity int) int
Timestamp func(childComplexity int) int
@@ -1110,7 +1113,10 @@ type ComplexityRoot struct {
CollateralReleaseLevel func(childComplexity int) int
InitialLevel func(childComplexity int) int
MaintenanceLevel func(childComplexity int) int
+ MarginFactor func(childComplexity int) int
+ MarginMode func(childComplexity int) int
MarketId func(childComplexity int) int
+ OrderMarginLevel func(childComplexity int) int
PartyId func(childComplexity int) int
SearchLevel func(childComplexity int) int
Timestamp func(childComplexity int) int
@@ -2992,11 +2998,17 @@ type MarginLevelsResolver interface {
MaintenanceLevel(ctx context.Context, obj *vega.MarginLevels) (string, error)
InitialLevel(ctx context.Context, obj *vega.MarginLevels) (string, error)
+ OrderMarginLevel(ctx context.Context, obj *vega.MarginLevels) (string, error)
+
+ MarginMode(ctx context.Context, obj *vega.MarginLevels) (MarginMode, error)
}
type MarginLevelsUpdateResolver interface {
MaintenanceLevel(ctx context.Context, obj *vega.MarginLevels) (string, error)
InitialLevel(ctx context.Context, obj *vega.MarginLevels) (string, error)
+ OrderMarginLevel(ctx context.Context, obj *vega.MarginLevels) (string, error)
+
+ MarginMode(ctx context.Context, obj *vega.MarginLevels) (MarginMode, error)
}
type MarketResolver interface {
DecimalPlaces(ctx context.Context, obj *vega.Market) (int, error)
@@ -7196,6 +7208,20 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in
return e.complexity.MarginLevels.MaintenanceLevel(childComplexity), true
+ case "MarginLevels.marginFactor":
+ if e.complexity.MarginLevels.MarginFactor == nil {
+ break
+ }
+
+ return e.complexity.MarginLevels.MarginFactor(childComplexity), true
+
+ case "MarginLevels.marginMode":
+ if e.complexity.MarginLevels.MarginMode == nil {
+ break
+ }
+
+ return e.complexity.MarginLevels.MarginMode(childComplexity), true
+
case "MarginLevels.market":
if e.complexity.MarginLevels.Market == nil {
break
@@ -7203,6 +7229,13 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in
return e.complexity.MarginLevels.Market(childComplexity), true
+ case "MarginLevels.orderMarginLevel":
+ if e.complexity.MarginLevels.OrderMarginLevel == nil {
+ break
+ }
+
+ return e.complexity.MarginLevels.OrderMarginLevel(childComplexity), true
+
case "MarginLevels.party":
if e.complexity.MarginLevels.Party == nil {
break
@@ -7252,6 +7285,20 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in
return e.complexity.MarginLevelsUpdate.MaintenanceLevel(childComplexity), true
+ case "MarginLevelsUpdate.marginFactor":
+ if e.complexity.MarginLevelsUpdate.MarginFactor == nil {
+ break
+ }
+
+ return e.complexity.MarginLevelsUpdate.MarginFactor(childComplexity), true
+
+ case "MarginLevelsUpdate.marginMode":
+ if e.complexity.MarginLevelsUpdate.MarginMode == nil {
+ break
+ }
+
+ return e.complexity.MarginLevelsUpdate.MarginMode(childComplexity), true
+
case "MarginLevelsUpdate.marketId":
if e.complexity.MarginLevelsUpdate.MarketId == nil {
break
@@ -7259,6 +7306,13 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in
return e.complexity.MarginLevelsUpdate.MarketId(childComplexity), true
+ case "MarginLevelsUpdate.orderMarginLevel":
+ if e.complexity.MarginLevelsUpdate.OrderMarginLevel == nil {
+ break
+ }
+
+ return e.complexity.MarginLevelsUpdate.OrderMarginLevel(childComplexity), true
+
case "MarginLevelsUpdate.partyId":
if e.complexity.MarginLevelsUpdate.PartyId == nil {
break
@@ -29018,10 +29072,16 @@ func (ec *executionContext) fieldContext_Entities_marginLevels(ctx context.Conte
return ec.fieldContext_MarginLevels_searchLevel(ctx, field)
case "initialLevel":
return ec.fieldContext_MarginLevels_initialLevel(ctx, field)
+ case "orderMarginLevel":
+ return ec.fieldContext_MarginLevels_orderMarginLevel(ctx, field)
case "collateralReleaseLevel":
return ec.fieldContext_MarginLevels_collateralReleaseLevel(ctx, field)
case "timestamp":
return ec.fieldContext_MarginLevels_timestamp(ctx, field)
+ case "marginMode":
+ return ec.fieldContext_MarginLevels_marginMode(ctx, field)
+ case "marginFactor":
+ return ec.fieldContext_MarginLevels_marginFactor(ctx, field)
}
return nil, fmt.Errorf("no field named %q was found under type MarginLevels", field.Name)
},
@@ -42396,10 +42456,16 @@ func (ec *executionContext) fieldContext_MarginEdge_node(ctx context.Context, fi
return ec.fieldContext_MarginLevels_searchLevel(ctx, field)
case "initialLevel":
return ec.fieldContext_MarginLevels_initialLevel(ctx, field)
+ case "orderMarginLevel":
+ return ec.fieldContext_MarginLevels_orderMarginLevel(ctx, field)
case "collateralReleaseLevel":
return ec.fieldContext_MarginLevels_collateralReleaseLevel(ctx, field)
case "timestamp":
return ec.fieldContext_MarginLevels_timestamp(ctx, field)
+ case "marginMode":
+ return ec.fieldContext_MarginLevels_marginMode(ctx, field)
+ case "marginFactor":
+ return ec.fieldContext_MarginLevels_marginFactor(ctx, field)
}
return nil, fmt.Errorf("no field named %q was found under type MarginLevels", field.Name)
},
@@ -42499,10 +42565,16 @@ func (ec *executionContext) fieldContext_MarginEstimate_worstCase(ctx context.Co
return ec.fieldContext_MarginLevels_searchLevel(ctx, field)
case "initialLevel":
return ec.fieldContext_MarginLevels_initialLevel(ctx, field)
+ case "orderMarginLevel":
+ return ec.fieldContext_MarginLevels_orderMarginLevel(ctx, field)
case "collateralReleaseLevel":
return ec.fieldContext_MarginLevels_collateralReleaseLevel(ctx, field)
case "timestamp":
return ec.fieldContext_MarginLevels_timestamp(ctx, field)
+ case "marginMode":
+ return ec.fieldContext_MarginLevels_marginMode(ctx, field)
+ case "marginFactor":
+ return ec.fieldContext_MarginLevels_marginFactor(ctx, field)
}
return nil, fmt.Errorf("no field named %q was found under type MarginLevels", field.Name)
},
@@ -42561,10 +42633,16 @@ func (ec *executionContext) fieldContext_MarginEstimate_bestCase(ctx context.Con
return ec.fieldContext_MarginLevels_searchLevel(ctx, field)
case "initialLevel":
return ec.fieldContext_MarginLevels_initialLevel(ctx, field)
+ case "orderMarginLevel":
+ return ec.fieldContext_MarginLevels_orderMarginLevel(ctx, field)
case "collateralReleaseLevel":
return ec.fieldContext_MarginLevels_collateralReleaseLevel(ctx, field)
case "timestamp":
return ec.fieldContext_MarginLevels_timestamp(ctx, field)
+ case "marginMode":
+ return ec.fieldContext_MarginLevels_marginMode(ctx, field)
+ case "marginFactor":
+ return ec.fieldContext_MarginLevels_marginFactor(ctx, field)
}
return nil, fmt.Errorf("no field named %q was found under type MarginLevels", field.Name)
},
@@ -42968,6 +43046,50 @@ func (ec *executionContext) fieldContext_MarginLevels_initialLevel(ctx context.C
return fc, nil
}
+func (ec *executionContext) _MarginLevels_orderMarginLevel(ctx context.Context, field graphql.CollectedField, obj *vega.MarginLevels) (ret graphql.Marshaler) {
+ fc, err := ec.fieldContext_MarginLevels_orderMarginLevel(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.MarginLevels().OrderMarginLevel(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.marshalNString2string(ctx, field.Selections, res)
+}
+
+func (ec *executionContext) fieldContext_MarginLevels_orderMarginLevel(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "MarginLevels",
+ Field: field,
+ IsMethod: true,
+ IsResolver: true,
+ 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) _MarginLevels_collateralReleaseLevel(ctx context.Context, field graphql.CollectedField, obj *vega.MarginLevels) (ret graphql.Marshaler) {
fc, err := ec.fieldContext_MarginLevels_collateralReleaseLevel(ctx, field)
if err != nil {
@@ -43056,6 +43178,94 @@ func (ec *executionContext) fieldContext_MarginLevels_timestamp(ctx context.Cont
return fc, nil
}
+func (ec *executionContext) _MarginLevels_marginMode(ctx context.Context, field graphql.CollectedField, obj *vega.MarginLevels) (ret graphql.Marshaler) {
+ fc, err := ec.fieldContext_MarginLevels_marginMode(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.MarginLevels().MarginMode(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.(MarginMode)
+ fc.Result = res
+ return ec.marshalNMarginMode2codeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐMarginMode(ctx, field.Selections, res)
+}
+
+func (ec *executionContext) fieldContext_MarginLevels_marginMode(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "MarginLevels",
+ Field: field,
+ IsMethod: true,
+ IsResolver: true,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ return nil, errors.New("field of type MarginMode does not have child fields")
+ },
+ }
+ return fc, nil
+}
+
+func (ec *executionContext) _MarginLevels_marginFactor(ctx context.Context, field graphql.CollectedField, obj *vega.MarginLevels) (ret graphql.Marshaler) {
+ fc, err := ec.fieldContext_MarginLevels_marginFactor(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.MarginFactor, 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_MarginLevels_marginFactor(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "MarginLevels",
+ 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) _MarginLevelsUpdate_marketId(ctx context.Context, field graphql.CollectedField, obj *vega.MarginLevels) (ret graphql.Marshaler) {
fc, err := ec.fieldContext_MarginLevelsUpdate_marketId(ctx, field)
if err != nil {
@@ -43320,6 +43530,50 @@ func (ec *executionContext) fieldContext_MarginLevelsUpdate_initialLevel(ctx con
return fc, nil
}
+func (ec *executionContext) _MarginLevelsUpdate_orderMarginLevel(ctx context.Context, field graphql.CollectedField, obj *vega.MarginLevels) (ret graphql.Marshaler) {
+ fc, err := ec.fieldContext_MarginLevelsUpdate_orderMarginLevel(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.MarginLevelsUpdate().OrderMarginLevel(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.marshalNString2string(ctx, field.Selections, res)
+}
+
+func (ec *executionContext) fieldContext_MarginLevelsUpdate_orderMarginLevel(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "MarginLevelsUpdate",
+ Field: field,
+ IsMethod: true,
+ IsResolver: true,
+ 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) _MarginLevelsUpdate_collateralReleaseLevel(ctx context.Context, field graphql.CollectedField, obj *vega.MarginLevels) (ret graphql.Marshaler) {
fc, err := ec.fieldContext_MarginLevelsUpdate_collateralReleaseLevel(ctx, field)
if err != nil {
@@ -43408,6 +43662,94 @@ func (ec *executionContext) fieldContext_MarginLevelsUpdate_timestamp(ctx contex
return fc, nil
}
+func (ec *executionContext) _MarginLevelsUpdate_marginMode(ctx context.Context, field graphql.CollectedField, obj *vega.MarginLevels) (ret graphql.Marshaler) {
+ fc, err := ec.fieldContext_MarginLevelsUpdate_marginMode(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.MarginLevelsUpdate().MarginMode(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.(MarginMode)
+ fc.Result = res
+ return ec.marshalNMarginMode2codeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐMarginMode(ctx, field.Selections, res)
+}
+
+func (ec *executionContext) fieldContext_MarginLevelsUpdate_marginMode(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "MarginLevelsUpdate",
+ Field: field,
+ IsMethod: true,
+ IsResolver: true,
+ Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) {
+ return nil, errors.New("field of type MarginMode does not have child fields")
+ },
+ }
+ return fc, nil
+}
+
+func (ec *executionContext) _MarginLevelsUpdate_marginFactor(ctx context.Context, field graphql.CollectedField, obj *vega.MarginLevels) (ret graphql.Marshaler) {
+ fc, err := ec.fieldContext_MarginLevelsUpdate_marginFactor(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.MarginFactor, 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_MarginLevelsUpdate_marginFactor(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
+ fc = &graphql.FieldContext{
+ Object: "MarginLevelsUpdate",
+ 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) _Market_id(ctx context.Context, field graphql.CollectedField, obj *vega.Market) (ret graphql.Marshaler) {
fc, err := ec.fieldContext_Market_id(ctx, field)
if err != nil {
@@ -57364,10 +57706,16 @@ func (ec *executionContext) fieldContext_OrderEstimate_marginLevels(ctx context.
return ec.fieldContext_MarginLevels_searchLevel(ctx, field)
case "initialLevel":
return ec.fieldContext_MarginLevels_initialLevel(ctx, field)
+ case "orderMarginLevel":
+ return ec.fieldContext_MarginLevels_orderMarginLevel(ctx, field)
case "collateralReleaseLevel":
return ec.fieldContext_MarginLevels_collateralReleaseLevel(ctx, field)
case "timestamp":
return ec.fieldContext_MarginLevels_timestamp(ctx, field)
+ case "marginMode":
+ return ec.fieldContext_MarginLevels_marginMode(ctx, field)
+ case "marginFactor":
+ return ec.fieldContext_MarginLevels_marginFactor(ctx, field)
}
return nil, fmt.Errorf("no field named %q was found under type MarginLevels", field.Name)
},
@@ -82111,10 +82459,16 @@ func (ec *executionContext) fieldContext_Subscription_margins(ctx context.Contex
return ec.fieldContext_MarginLevelsUpdate_searchLevel(ctx, field)
case "initialLevel":
return ec.fieldContext_MarginLevelsUpdate_initialLevel(ctx, field)
+ case "orderMarginLevel":
+ return ec.fieldContext_MarginLevelsUpdate_orderMarginLevel(ctx, field)
case "collateralReleaseLevel":
return ec.fieldContext_MarginLevelsUpdate_collateralReleaseLevel(ctx, field)
case "timestamp":
return ec.fieldContext_MarginLevelsUpdate_timestamp(ctx, field)
+ case "marginMode":
+ return ec.fieldContext_MarginLevelsUpdate_marginMode(ctx, field)
+ case "marginFactor":
+ return ec.fieldContext_MarginLevelsUpdate_marginFactor(ctx, field)
}
return nil, fmt.Errorf("no field named %q was found under type MarginLevelsUpdate", field.Name)
},
@@ -105205,6 +105559,26 @@ func (ec *executionContext) _MarginLevels(ctx context.Context, sel ast.Selection
return res
}
+ out.Concurrently(i, func() graphql.Marshaler {
+ return innerFunc(ctx)
+
+ })
+ case "orderMarginLevel":
+ field := field
+
+ innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
+ defer func() {
+ if r := recover(); r != nil {
+ ec.Error(ctx, ec.Recover(ctx, r))
+ }
+ }()
+ res = ec._MarginLevels_orderMarginLevel(ctx, field, obj)
+ if res == graphql.Null {
+ atomic.AddUint32(&invalids, 1)
+ }
+ return res
+ }
+
out.Concurrently(i, func() graphql.Marshaler {
return innerFunc(ctx)
@@ -105220,6 +105594,33 @@ func (ec *executionContext) _MarginLevels(ctx context.Context, sel ast.Selection
out.Values[i] = ec._MarginLevels_timestamp(ctx, field, obj)
+ if out.Values[i] == graphql.Null {
+ atomic.AddUint32(&invalids, 1)
+ }
+ case "marginMode":
+ field := field
+
+ innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
+ defer func() {
+ if r := recover(); r != nil {
+ ec.Error(ctx, ec.Recover(ctx, r))
+ }
+ }()
+ res = ec._MarginLevels_marginMode(ctx, field, obj)
+ if res == graphql.Null {
+ atomic.AddUint32(&invalids, 1)
+ }
+ return res
+ }
+
+ out.Concurrently(i, func() graphql.Marshaler {
+ return innerFunc(ctx)
+
+ })
+ case "marginFactor":
+
+ out.Values[i] = ec._MarginLevels_marginFactor(ctx, field, obj)
+
if out.Values[i] == graphql.Null {
atomic.AddUint32(&invalids, 1)
}
@@ -105308,6 +105709,26 @@ func (ec *executionContext) _MarginLevelsUpdate(ctx context.Context, sel ast.Sel
return res
}
+ out.Concurrently(i, func() graphql.Marshaler {
+ return innerFunc(ctx)
+
+ })
+ case "orderMarginLevel":
+ field := field
+
+ innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
+ defer func() {
+ if r := recover(); r != nil {
+ ec.Error(ctx, ec.Recover(ctx, r))
+ }
+ }()
+ res = ec._MarginLevelsUpdate_orderMarginLevel(ctx, field, obj)
+ if res == graphql.Null {
+ atomic.AddUint32(&invalids, 1)
+ }
+ return res
+ }
+
out.Concurrently(i, func() graphql.Marshaler {
return innerFunc(ctx)
@@ -105323,6 +105744,33 @@ func (ec *executionContext) _MarginLevelsUpdate(ctx context.Context, sel ast.Sel
out.Values[i] = ec._MarginLevelsUpdate_timestamp(ctx, field, obj)
+ if out.Values[i] == graphql.Null {
+ atomic.AddUint32(&invalids, 1)
+ }
+ case "marginMode":
+ field := field
+
+ innerFunc := func(ctx context.Context) (res graphql.Marshaler) {
+ defer func() {
+ if r := recover(); r != nil {
+ ec.Error(ctx, ec.Recover(ctx, r))
+ }
+ }()
+ res = ec._MarginLevelsUpdate_marginMode(ctx, field, obj)
+ if res == graphql.Null {
+ atomic.AddUint32(&invalids, 1)
+ }
+ return res
+ }
+
+ out.Concurrently(i, func() graphql.Marshaler {
+ return innerFunc(ctx)
+
+ })
+ case "marginFactor":
+
+ out.Values[i] = ec._MarginLevelsUpdate_marginFactor(ctx, field, obj)
+
if out.Values[i] == graphql.Null {
atomic.AddUint32(&invalids, 1)
}
@@ -123607,6 +124055,16 @@ func (ec *executionContext) marshalNMarginLevelsUpdate2ᚖcodeᚗvegaprotocolᚗ
return ec._MarginLevelsUpdate(ctx, sel, v)
}
+func (ec *executionContext) unmarshalNMarginMode2codeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐMarginMode(ctx context.Context, v interface{}) (MarginMode, error) {
+ var res MarginMode
+ err := res.UnmarshalGQL(v)
+ return res, graphql.ErrorOnPath(ctx, err)
+}
+
+func (ec *executionContext) marshalNMarginMode2codeᚗvegaprotocolᚗioᚋvegaᚋdatanodeᚋgatewayᚋgraphqlᚐMarginMode(ctx context.Context, sel ast.SelectionSet, v MarginMode) graphql.Marshaler {
+ return v
+}
+
func (ec *executionContext) marshalNMarket2codeᚗvegaprotocolᚗioᚋvegaᚋprotosᚋvegaᚐMarket(ctx context.Context, sel ast.SelectionSet, v vega.Market) graphql.Marshaler {
return ec._Market(ctx, sel, &v)
}
diff --git a/datanode/gateway/graphql/models.go b/datanode/gateway/graphql/models.go
index 2c75bd599a..93197fe8c4 100644
--- a/datanode/gateway/graphql/models.go
+++ b/datanode/gateway/graphql/models.go
@@ -1012,6 +1012,49 @@ func (e GovernanceTransferType) MarshalGQL(w io.Writer) {
fmt.Fprint(w, strconv.Quote(e.String()))
}
+type MarginMode string
+
+const (
+ // Party is in cross margin mode
+ MarginModeMarginModeCrossMargin MarginMode = "MARGIN_MODE_CROSS_MARGIN"
+ // Party is in isolated margin mode
+ MarginModeMarginModeIsolatedMargin MarginMode = "MARGIN_MODE_ISOLATED_MARGIN"
+)
+
+var AllMarginMode = []MarginMode{
+ MarginModeMarginModeCrossMargin,
+ MarginModeMarginModeIsolatedMargin,
+}
+
+func (e MarginMode) IsValid() bool {
+ switch e {
+ case MarginModeMarginModeCrossMargin, MarginModeMarginModeIsolatedMargin:
+ return true
+ }
+ return false
+}
+
+func (e MarginMode) String() string {
+ return string(e)
+}
+
+func (e *MarginMode) UnmarshalGQL(v interface{}) error {
+ str, ok := v.(string)
+ if !ok {
+ return fmt.Errorf("enums must be strings")
+ }
+
+ *e = MarginMode(str)
+ if !e.IsValid() {
+ return fmt.Errorf("%s is not a valid MarginMode", str)
+ }
+ return nil
+}
+
+func (e MarginMode) MarshalGQL(w io.Writer) {
+ fmt.Fprint(w, strconv.Quote(e.String()))
+}
+
type MarketUpdateType string
const (
diff --git a/datanode/gateway/graphql/resolvers.go b/datanode/gateway/graphql/resolvers.go
index e9ab6c1005..d7a355b646 100644
--- a/datanode/gateway/graphql/resolvers.go
+++ b/datanode/gateway/graphql/resolvers.go
@@ -2431,6 +2431,21 @@ func (r *myMarginLevelsUpdateResolver) MaintenanceLevel(_ context.Context, m *ve
return m.MaintenanceMargin, nil
}
+func (r *myMarginLevelsUpdateResolver) OrderMarginLevel(_ context.Context, m *vegapb.MarginLevels) (string, error) {
+ return m.OrderMargin, nil
+}
+
+func (r *myMarginLevelsUpdateResolver) MarginFactor(_ context.Context, m *vegapb.MarginLevels) (string, error) {
+ return m.MarginFactor, nil
+}
+
+func (r *myMarginLevelsUpdateResolver) MarginMode(_ context.Context, m *vegapb.MarginLevels) (MarginMode, error) {
+ if m.MarginMode == vegapb.MarginMode_MARGIN_MODE_ISOLATED_MARGIN {
+ return MarginModeMarginModeIsolatedMargin, nil
+ }
+ return MarginModeMarginModeCrossMargin, nil
+}
+
// BEGIN: MarginLevels Resolver
type myMarginLevelsResolver VegaResolverRoot
@@ -2475,6 +2490,21 @@ func (r *myMarginLevelsResolver) MaintenanceLevel(_ context.Context, m *vegapb.M
return m.MaintenanceMargin, nil
}
+func (r *myMarginLevelsResolver) OrderMarginLevel(_ context.Context, m *vegapb.MarginLevels) (string, error) {
+ return m.OrderMargin, nil
+}
+
+func (r *myMarginLevelsResolver) MarginFactor(_ context.Context, m *vegapb.MarginLevels) (string, error) {
+ return m.MarginFactor, nil
+}
+
+func (r *myMarginLevelsResolver) MarginMode(_ context.Context, m *vegapb.MarginLevels) (MarginMode, error) {
+ if m.MarginMode == vegapb.MarginMode_MARGIN_MODE_ISOLATED_MARGIN {
+ return MarginModeMarginModeIsolatedMargin, nil
+ }
+ return MarginModeMarginModeCrossMargin, nil
+}
+
// END: MarginLevels Resolver
type myOrderUpdateResolver VegaResolverRoot
diff --git a/datanode/gateway/graphql/schema.graphql b/datanode/gateway/graphql/schema.graphql
index 08a850d079..a1511a94a9 100644
--- a/datanode/gateway/graphql/schema.graphql
+++ b/datanode/gateway/graphql/schema.graphql
@@ -160,6 +160,8 @@ type MarginLevels {
searchLevel: String!
"This is the minimum margin required for a party to place a new order on the network, expressed as unsigned integer"
initialLevel: String!
+ "When in isolated margin, the required order margin level, otherwise, 0"
+ orderMarginLevel: String!
"""
If the margin of the party is greater than this level, then collateral will be released from the margin account into
the general account of the party for the given asset.
@@ -167,6 +169,19 @@ type MarginLevels {
collateralReleaseLevel: String!
"RFC3339Nano time from at which this margin level was relevant"
timestamp: Timestamp!
+
+ "Margin mode of the party, cross margin or isolated margin"
+ marginMode: MarginMode!
+
+ "Margin factor, only relevant for isolated margin mode, else 0"
+ marginFactor: String!
+}
+
+enum MarginMode {
+ "Party is in cross margin mode"
+ MARGIN_MODE_CROSS_MARGIN
+ "Party is in isolated margin mode"
+ MARGIN_MODE_ISOLATED_MARGIN
}
"Margins for a given a party"
@@ -183,6 +198,8 @@ type MarginLevelsUpdate {
searchLevel: String!
"This is the minimum margin required for a party to place a new order on the network (unsigned integer)"
initialLevel: String!
+ "When in isolated margin, the required order margin level, otherwise, 0"
+ orderMarginLevel: String!
"""
If the margin of the party is greater than this level, then collateral will be released from the margin account into
the general account of the party for the given asset.
@@ -190,6 +207,12 @@ type MarginLevelsUpdate {
collateralReleaseLevel: String!
"RFC3339Nano time from at which this margin level was relevant"
timestamp: Timestamp!
+
+ "Margin mode of the party, cross margin or isolated margin"
+ marginMode: MarginMode!
+
+ "Margin factor, only relevant for isolated margin mode, else 0"
+ marginFactor: String!
}
"Details of a perpetual product."
@@ -3998,6 +4021,12 @@ enum OrderRejectionReason {
"A post-only order would produce an aggressive trade and thus it has been rejected"
ORDER_ERROR_POST_ONLY_ORDER_WOULD_TRADE
+
+ "Party has insufficient funds to cover for the order margin for the new or amended order"
+ ORDER_ERROR_ISOLATED_MARGIN_CHECK_FAILED
+
+ "Pegged orders are not allowed for a party in isolated margin mode"
+ ORDER_ERROR_PEGGED_ORDERS_NOT_ALLOWED_IN_ISOLATED_MARGIN_MODE
}
"Types of orders"
@@ -4244,6 +4273,12 @@ enum TransferType {
TRANSFER_TYPE_PERPETUALS_FUNDING_WIN
"Funds moved from the vesting account to the vested account once the vesting period is reached."
TRANSFER_TYPE_REWARDS_VESTED
+ "Funds moved from general account to order margin account."
+ TRANSFER_TYPE_ORDER_MARGIN_LOW
+ "Funds released from order margin account to general."
+ TRANSFER_TYPE_ORDER_MARGIN_HIGH
+ "Funds moved from order margin account to margin account."
+ TRANSFER_TYPE_ISOLATED_MARGIN_LOW
}
union ProductConfiguration = FutureProduct | SpotProduct | PerpetualProduct
diff --git a/datanode/networkhistory/service_test.go b/datanode/networkhistory/service_test.go
index bc688e3bd7..f34df3934a 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, "QmXd9pPeDABM1E266cD2rjyyJyLzEQqb9GidAnXa9BjsDL", snapshots)
- panicIfHistorySegmentIdsNotEqual(goldenSourceHistorySegment[2000].HistorySegmentID, "QmdDHzjfrLmuR1H7dkkQiAWcpYnE3QZxVg35pGRiM61Sdd", snapshots)
- panicIfHistorySegmentIdsNotEqual(goldenSourceHistorySegment[2500].HistorySegmentID, "Qma2pqc4tLMt9cfEBSTCd4NTp755CyEEtinokXrjgvhcPC", snapshots)
- panicIfHistorySegmentIdsNotEqual(goldenSourceHistorySegment[3000].HistorySegmentID, "QmZK67omwqjhQZhjFedF9g3y8PeFXfRq7vgDbYPK7pe4fW", snapshots)
- panicIfHistorySegmentIdsNotEqual(goldenSourceHistorySegment[4000].HistorySegmentID, "QmYePEhEZauB7wzSVCtZekR9wi5Nz3knYsZvKAjvGXLh6P", snapshots)
- panicIfHistorySegmentIdsNotEqual(goldenSourceHistorySegment[5000].HistorySegmentID, "QmYcbU2bv23BBkg5Dnbedp7sRrxPWjTmFJLNTp8dCK3YdN", snapshots)
+ panicIfHistorySegmentIdsNotEqual(goldenSourceHistorySegment[1000].HistorySegmentID, "QmNWBr3L8p72ZzL1KNvuSBFRrQXpikBzAB4aN7Y7eKL9TG", snapshots)
+ panicIfHistorySegmentIdsNotEqual(goldenSourceHistorySegment[2000].HistorySegmentID, "QmRjuFdNWueAka95kGMGzvRCv2qn7zmnsPDif2P2ZdMVfG", snapshots)
+ panicIfHistorySegmentIdsNotEqual(goldenSourceHistorySegment[2500].HistorySegmentID, "QmVVzCJpXoysR2KRdcJjnGsw1vShPfbi3mGZLiHPtbJHoZ", snapshots)
+ panicIfHistorySegmentIdsNotEqual(goldenSourceHistorySegment[3000].HistorySegmentID, "QmRyEhRr3SX3Dy2sKxprFR9kKvmWMZJHf4szaUt6UJ8DDY", snapshots)
+ panicIfHistorySegmentIdsNotEqual(goldenSourceHistorySegment[4000].HistorySegmentID, "QmaZz8SKPqhASo4wDpYwpPTmoenfeF37TtB44TwvFdjZzG", snapshots)
+ panicIfHistorySegmentIdsNotEqual(goldenSourceHistorySegment[5000].HistorySegmentID, "QmWt3TjwwNsiWZGtDZUNp8AKBgXW2c6qMx8j6tE8jgc1aJ", snapshots)
}, postgresRuntimePath, sqlFs)
if exitCode != 0 {
diff --git a/datanode/sqlstore/ledger.go b/datanode/sqlstore/ledger.go
index aee825fa62..dff1a3156c 100644
--- a/datanode/sqlstore/ledger.go
+++ b/datanode/sqlstore/ledger.go
@@ -245,6 +245,7 @@ func (ls *Ledger) Export(
WHEN fa.type=26 THEN 'REWARD_RETURN_VOLATILITY'
WHEN fa.type=27 THEN 'REWARD_VALIDATOR_RANKING'
WHEN fa.type=28 THEN 'PENDING_FEE_REFERRAL_REWARD'
+ WHEN fa.type=29 THEN 'ORDER_MARGIN'
ELSE 'UNKNOWN' END AS account_from_account_type,
l.account_from_balance AS account_from_balance,
encode(ta.market_id, 'hex') AS account_to_market_id,
@@ -281,6 +282,7 @@ func (ls *Ledger) Export(
WHEN ta.type=26 THEN 'REWARD_RETURN_VOLATILITY'
WHEN ta.type=27 THEN 'REWARD_VALIDATOR_RANKING'
WHEN ta.type=28 THEN 'PENDING_FEE_REFERRAL_REWARD'
+ WHEN ta.type=29 THEN 'ORDER_MARGIN'
ELSE 'UNKNOWN' END AS account_to_account_type,
l.account_to_balance AS account_to_balance
FROM
diff --git a/datanode/sqlstore/margin_level_test.go b/datanode/sqlstore/margin_level_test.go
index 04825b3cab..0ad8a73691 100644
--- a/datanode/sqlstore/margin_level_test.go
+++ b/datanode/sqlstore/margin_level_test.go
@@ -165,10 +165,13 @@ func getMarginLevelWithMaintenanceProto(maintenanceMargin, partyID, marketID str
SearchLevel: "1000",
InitialMargin: "1000",
CollateralReleaseLevel: "1000",
+ OrderMargin: "0",
PartyId: partyID,
MarketId: marketID,
Asset: testAssetID,
Timestamp: timestamp,
+ MarginMode: vega.MarginMode_MARGIN_MODE_CROSS_MARGIN,
+ MarginFactor: "0",
}
}
diff --git a/datanode/sqlstore/margin_levels.go b/datanode/sqlstore/margin_levels.go
index 2d73e5f717..f108b07a0c 100644
--- a/datanode/sqlstore/margin_levels.go
+++ b/datanode/sqlstore/margin_levels.go
@@ -41,7 +41,7 @@ type MarginLevels struct {
}
const (
- sqlMarginLevelColumns = `account_id,timestamp,maintenance_margin,search_level,initial_margin,collateral_release_level,tx_hash,vega_time`
+ sqlMarginLevelColumns = `account_id,order_margin_account_id,timestamp,maintenance_margin,search_level,initial_margin,collateral_release_level,order_margin,tx_hash,vega_time,margin_mode,margin_factor`
)
func NewMarginLevels(connectionSource *ConnectionSource) *MarginLevels {
diff --git a/datanode/sqlstore/migrations/0070_isolated_margin.sql b/datanode/sqlstore/migrations/0070_isolated_margin.sql
new file mode 100644
index 0000000000..69b722fa17
--- /dev/null
+++ b/datanode/sqlstore/migrations/0070_isolated_margin.sql
@@ -0,0 +1,147 @@
+-- +goose Up
+DROP TYPE IF EXISTS margin_mode_type;
+create type margin_mode_type as enum('MARGIN_MODE_UNSPECIFIED', 'MARGIN_MODE_CROSS_MARGIN', 'MARGIN_MODE_ISOLATED_MARGIN');
+
+alter table margin_levels
+ add column if not exists margin_mode margin_mode_type,
+ add column if not exists margin_factor NUMERIC,
+ add column if not exists order_margin HUGEINT,
+ add column if not exists order_margin_account_id bytea;
+
+update margin_levels
+ set margin_mode='MARGIN_MODE_CROSS_MARGIN',
+ margin_factor=0,
+ order_margin=0;
+
+alter table margin_levels
+ ALTER COLUMN margin_mode SET NOT NULL,
+ ALTER COLUMN margin_factor SET NOT NULL,
+ ALTER COLUMN order_margin SET NOT NULL;
+
+alter table current_margin_levels
+ add column if not exists margin_mode margin_mode_type,
+ add column if not exists margin_factor NUMERIC,
+ add column if not exists order_margin HUGEINT,
+ add column if not exists order_margin_account_id bytea;
+
+update current_margin_levels
+ set margin_mode='MARGIN_MODE_CROSS_MARGIN',
+ margin_factor=0,
+ order_margin=0;
+
+alter table current_margin_levels
+ ALTER COLUMN margin_mode SET NOT NULL,
+ ALTER COLUMN margin_factor SET NOT NULL,
+ ALTER COLUMN order_margin SET NOT NULL;
+
+-- +goose StatementBegin
+drop trigger if exists update_current_margin_levels on margin_levels;
+CREATE OR REPLACE FUNCTION update_current_margin_levels()
+ RETURNS TRIGGER
+ LANGUAGE PLPGSQL AS
+$$
+BEGIN
+INSERT INTO current_margin_levels(account_id,
+ order_margin_account_id,
+ timestamp,
+ maintenance_margin,
+ search_level,
+ initial_margin,
+ collateral_release_level,
+ order_margin,
+ tx_hash,
+ vega_time,
+ margin_mode,
+ margin_factor) VALUES(NEW.account_id,
+ NEW.order_margin_account_id,
+ NEW.timestamp,
+ NEW.maintenance_margin,
+ NEW.search_level,
+ NEW.initial_margin,
+ NEW.collateral_release_level,
+ NEW.order_margin,
+ NEW.tx_hash,
+ NEW.vega_time,
+ NEW.margin_mode,
+ NEW.margin_factor)
+ ON CONFLICT(account_id) DO UPDATE SET
+ order_margin_account_id=EXCLUDED.order_margin_account_id,
+ timestamp=EXCLUDED.timestamp,
+ maintenance_margin=EXCLUDED.maintenance_margin,
+ search_level=EXCLUDED.search_level,
+ initial_margin=EXCLUDED.initial_margin,
+ collateral_release_level=EXCLUDED.collateral_release_level,
+ order_margin=EXCLUDED.order_margin,
+ tx_hash=EXCLUDED.tx_hash,
+ vega_time=EXCLUDED.vega_time,
+ margin_mode=EXCLUDED.margin_mode,
+ margin_factor=EXCLUDED.margin_factor;
+
+
+RETURN NULL;
+END;
+$$;
+-- +goose StatementEnd
+
+CREATE TRIGGER update_current_margin_levels AFTER INSERT ON margin_levels FOR EACH ROW EXECUTE function update_current_margin_levels();
+
+DROP VIEW all_margin_levels;
+DROP MATERIALIZED VIEW conflated_margin_levels;
+
+
+CREATE MATERIALIZED VIEW conflated_margin_levels
+ WITH (timescaledb.continuous, timescaledb.materialized_only = true) AS
+SELECT account_id,
+ order_margin_account_id,
+ time_bucket('1 minute', vega_time) AS bucket,
+ last(maintenance_margin, vega_time) AS maintenance_margin,
+ last(search_level, vega_time) AS search_level,
+ last(initial_margin, vega_time) AS initial_margin,
+ last(collateral_release_level, vega_time) AS collateral_release_level,
+ last(order_margin, vega_time) AS order_margin,
+ last(timestamp, vega_time) AS timestamp,
+ last(tx_hash, vega_time) AS tx_hash,
+ last(vega_time, vega_time) AS vega_time,
+ last(margin_mode, vega_time) AS margin_mode,
+ last(margin_factor, vega_time) AS margin_factor
+FROM margin_levels
+GROUP BY account_id, order_margin_account_id, bucket WITH NO DATA;
+
+-- start_offset is set to a day, as data is append only this does not impact the processing time and ensures
+-- that the CAGG data will be correct on recovery in the event of a transient outage ( < 1 day )
+SELECT add_continuous_aggregate_policy('conflated_margin_levels', start_offset => INTERVAL '1 day',
+ end_offset => INTERVAL '1 minute', schedule_interval => INTERVAL '1 minute');
+
+CREATE VIEW all_margin_levels AS
+(
+SELECT margin_levels.account_id,
+ margin_levels.order_margin_account_id,
+ margin_levels."timestamp",
+ margin_levels.maintenance_margin,
+ margin_levels.search_level,
+ margin_levels.initial_margin,
+ margin_levels.collateral_release_level,
+ margin_levels.order_margin,
+ margin_levels.tx_hash,
+ margin_levels.vega_time,
+ margin_levels.margin_mode,
+ margin_levels.margin_factor
+FROM margin_levels
+UNION ALL
+SELECT conflated_margin_levels.account_id,
+ conflated_margin_levels.order_margin_account_id,
+ conflated_margin_levels."timestamp",
+ conflated_margin_levels.maintenance_margin,
+ conflated_margin_levels.search_level,
+ conflated_margin_levels.initial_margin,
+ conflated_margin_levels.collateral_release_level,
+ conflated_margin_levels.order_margin,
+ conflated_margin_levels.tx_hash,
+ conflated_margin_levels.vega_time,
+ conflated_margin_levels.margin_mode,
+ conflated_margin_levels.margin_factor
+FROM conflated_margin_levels
+WHERE conflated_margin_levels.vega_time < (SELECT coalesce(min(margin_levels.vega_time), 'infinity') FROM margin_levels));
+
+-- +goose Down
+-- nothing to do, we're not going to convert it back
\ No newline at end of file
diff --git a/datanode/sqlsubscribers/margin_levels_test.go b/datanode/sqlsubscribers/margin_levels_test.go
index b871c5aa1d..045ed918d7 100644
--- a/datanode/sqlsubscribers/margin_levels_test.go
+++ b/datanode/sqlsubscribers/margin_levels_test.go
@@ -46,6 +46,7 @@ func TestMarginLevels_Push(t *testing.T) {
SearchLevel: num.NewUint(1000),
InitialMargin: num.NewUint(1000),
CollateralReleaseLevel: num.NewUint(1000),
+ OrderMargin: num.UintZero(),
Party: "DEADBEEF",
MarketID: "DEADBEEF",
Asset: "DEADBEEF",
diff --git a/protos/sources/vega/commands/v1/commands.proto b/protos/sources/vega/commands/v1/commands.proto
index a5f8a8f2e1..d724fbb449 100644
--- a/protos/sources/vega/commands/v1/commands.proto
+++ b/protos/sources/vega/commands/v1/commands.proto
@@ -26,6 +26,8 @@ message BatchMarketInstructions {
repeated StopOrdersCancellation stop_orders_cancellation = 4;
// List of stop order submissions to be processed sequentially.
repeated StopOrdersSubmission stop_orders_submission = 5;
+ // Update margin mode instruction
+ repeated UpdateMarginMode update_margin_mode = 6;
}
// A command that allows a party to submit a stop order for a given market.
@@ -109,7 +111,7 @@ message IcebergOpts {
message UpdateMarginMode {
enum Mode {
// Never valid.
- MODE_CROSS_UNSPECIFIED = 0;
+ MODE_UNSPECIFIED = 0;
// Cross margin mode - margin is dynamically acquired and released as a position is marked to market
MODE_CROSS_MARGIN = 1;
// Isolated margin mode - margin for any newly opened position volume is transferred to the margin account when the trade is executed
diff --git a/protos/sources/vega/snapshot/v1/snapshot.proto b/protos/sources/vega/snapshot/v1/snapshot.proto
index fca08d4df7..beb9e79bd0 100644
--- a/protos/sources/vega/snapshot/v1/snapshot.proto
+++ b/protos/sources/vega/snapshot/v1/snapshot.proto
@@ -523,6 +523,12 @@ message Market {
repeated vega.Order expiring_stop_orders = 25;
Product product = 26;
vega.events.v1.FeesStats fees_stats = 27;
+ repeated PartyMarginFactor party_margin_factor = 28;
+}
+
+message PartyMarginFactor {
+ string party = 1;
+ string margin_factor = 2;
}
// eventually support multiple products
diff --git a/protos/sources/vega/vega.proto b/protos/sources/vega/vega.proto
index e0d619ab4a..98fefbefab 100644
--- a/protos/sources/vega/vega.proto
+++ b/protos/sources/vega/vega.proto
@@ -478,6 +478,10 @@ enum OrderError {
ORDER_ERROR_POST_ONLY_ORDER_WOULD_TRADE = 49;
// Post order would trade
ORDER_ERROR_REDUCE_ONLY_ORDER_WOULD_NOT_REDUCE_POSITION = 50;
+ // Isolated margin check failed
+ ORDER_ERROR_ISOLATED_MARGIN_CHECK_FAILED = 51;
+ // In isolated margin pegged orders are rejected
+ ORDER_ERROR_PEGGED_ORDERS_NOT_ALLOWED_IN_ISOLATED_MARGIN_MODE = 52;
// Note: If adding an enum value, add a matching entry in:
// - proto/errors.go (func Error)
@@ -977,6 +981,14 @@ enum TransferType {
TRANSFER_TYPE_FEE_REFERRER_REWARD_PAY = 39;
// Fee referrer reward received into general account of the referrer.
TRANSFER_TYPE_FEE_REFERRER_REWARD_DISTRIBUTE = 44;
+ // Funds transferred from general account to meet order margin requirement in isolated margin mode.
+ TRANSFER_TYPE_ORDER_MARGIN_LOW = 45;
+ // Excess order margin amount returned to general account.
+ TRANSFER_TYPE_ORDER_MARGIN_HIGH = 46;
+ // Transfer from order margin account to margin account due to increase of position.
+ TRANSFER_TYPE_ISOLATED_MARGIN_LOW = 47;
+ // Transfer from excess order margin account to general account.
+ TRANSFER_TYPE_ISOLATED_MARGIN_HIGH = 48;
}
// Represents a financial transfer within Vega
@@ -1154,6 +1166,12 @@ message MarginLevels {
string asset = 7;
// Timestamp in Unix nanoseconds for when the ledger entry was created.
int64 timestamp = 8;
+ // Margin required to cover orders in isolated margin mode.
+ string order_margin = 9;
+ // Margin mode for the party, cross margin or isolated margin.
+ MarginMode margin_mode = 10;
+ // Margin factor, relevant only for isolated margin, 0 otherwise.
+ string margin_factor = 11;
}
// Represents market data specific to a perpetual market.
diff --git a/protos/vega/commands/v1/commands.pb.go b/protos/vega/commands/v1/commands.pb.go
index 0c0b3d456e..25e16dea0a 100644
--- a/protos/vega/commands/v1/commands.pb.go
+++ b/protos/vega/commands/v1/commands.pb.go
@@ -25,7 +25,7 @@ type UpdateMarginMode_Mode int32
const (
// Never valid.
- UpdateMarginMode_MODE_CROSS_UNSPECIFIED UpdateMarginMode_Mode = 0
+ UpdateMarginMode_MODE_UNSPECIFIED UpdateMarginMode_Mode = 0
// Cross margin mode - margin is dynamically acquired and released as a position is marked to market
UpdateMarginMode_MODE_CROSS_MARGIN UpdateMarginMode_Mode = 1
// Isolated margin mode - margin for any newly opened position volume is transferred to the margin account when the trade is executed
@@ -35,14 +35,14 @@ const (
// Enum value maps for UpdateMarginMode_Mode.
var (
UpdateMarginMode_Mode_name = map[int32]string{
- 0: "MODE_CROSS_UNSPECIFIED",
+ 0: "MODE_UNSPECIFIED",
1: "MODE_CROSS_MARGIN",
2: "MODE_ISOLATED_MARGIN",
}
UpdateMarginMode_Mode_value = map[string]int32{
- "MODE_CROSS_UNSPECIFIED": 0,
- "MODE_CROSS_MARGIN": 1,
- "MODE_ISOLATED_MARGIN": 2,
+ "MODE_UNSPECIFIED": 0,
+ "MODE_CROSS_MARGIN": 1,
+ "MODE_ISOLATED_MARGIN": 2,
}
)
@@ -146,6 +146,8 @@ type BatchMarketInstructions struct {
StopOrdersCancellation []*StopOrdersCancellation `protobuf:"bytes,4,rep,name=stop_orders_cancellation,json=stopOrdersCancellation,proto3" json:"stop_orders_cancellation,omitempty"`
// List of stop order submissions to be processed sequentially.
StopOrdersSubmission []*StopOrdersSubmission `protobuf:"bytes,5,rep,name=stop_orders_submission,json=stopOrdersSubmission,proto3" json:"stop_orders_submission,omitempty"`
+ // Update margin mode instruction
+ UpdateMarginMode []*UpdateMarginMode `protobuf:"bytes,6,rep,name=update_margin_mode,json=updateMarginMode,proto3" json:"update_margin_mode,omitempty"`
}
func (x *BatchMarketInstructions) Reset() {
@@ -215,6 +217,13 @@ func (x *BatchMarketInstructions) GetStopOrdersSubmission() []*StopOrdersSubmiss
return nil
}
+func (x *BatchMarketInstructions) GetUpdateMarginMode() []*UpdateMarginMode {
+ if x != nil {
+ return x.UpdateMarginMode
+ }
+ return nil
+}
+
// A command that allows a party to submit a stop order for a given market.
// A stop order is a normal order that remains off the order book and is only submitted if a given trigger is breached from a particular direction.
// If both rises-above and falls-below are configured, then if one is triggered the other will be cancelled (OCO).
@@ -714,7 +723,7 @@ func (x *UpdateMarginMode) GetMode() UpdateMarginMode_Mode {
if x != nil {
return x.Mode
}
- return UpdateMarginMode_MODE_CROSS_UNSPECIFIED
+ return UpdateMarginMode_MODE_UNSPECIFIED
}
func (x *UpdateMarginMode) GetMarginFactor() string {
@@ -2287,7 +2296,7 @@ var file_vega_commands_v1_commands_proto_rawDesc = []byte{
0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 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, 0x0f, 0x76, 0x65, 0x67, 0x61, 0x2f, 0x76, 0x65, 0x67, 0x61,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xad, 0x03, 0x0a, 0x17, 0x42, 0x61, 0x74, 0x63, 0x68,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xff, 0x03, 0x0a, 0x17, 0x42, 0x61, 0x74, 0x63, 0x68,
0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f,
0x6e, 0x73, 0x12, 0x49, 0x0a, 0x0d, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69,
0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x65, 0x67, 0x61,
@@ -2314,301 +2323,306 @@ var file_vega_commands_v1_commands_proto_rawDesc = []byte{
0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x70,
0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e,
0x52, 0x14, 0x73, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x53, 0x75, 0x62, 0x6d,
- 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xc6, 0x01, 0x0a, 0x14, 0x53, 0x74, 0x6f, 0x70, 0x4f,
- 0x72, 0x64, 0x65, 0x72, 0x73, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12,
- 0x46, 0x0a, 0x0b, 0x72, 0x69, 0x73, 0x65, 0x73, 0x5f, 0x61, 0x62, 0x6f, 0x76, 0x65, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x6f, 0x6d, 0x6d,
- 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65,
- 0x72, 0x53, 0x65, 0x74, 0x75, 0x70, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x69, 0x73, 0x65, 0x73, 0x41,
- 0x62, 0x6f, 0x76, 0x65, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x0b, 0x66, 0x61, 0x6c, 0x6c, 0x73,
- 0x5f, 0x62, 0x65, 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76,
- 0x65, 0x67, 0x61, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e,
- 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x65, 0x74, 0x75, 0x70, 0x48, 0x01,
- 0x52, 0x0a, 0x66, 0x61, 0x6c, 0x6c, 0x73, 0x42, 0x65, 0x6c, 0x6f, 0x77, 0x88, 0x01, 0x01, 0x42,
- 0x0e, 0x0a, 0x0c, 0x5f, 0x72, 0x69, 0x73, 0x65, 0x73, 0x5f, 0x61, 0x62, 0x6f, 0x76, 0x65, 0x42,
- 0x0e, 0x0a, 0x0c, 0x5f, 0x66, 0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x62, 0x65, 0x6c, 0x6f, 0x77, 0x22,
- 0xd0, 0x02, 0x0a, 0x0e, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x65, 0x74,
- 0x75, 0x70, 0x12, 0x4c, 0x0a, 0x10, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x62, 0x6d,
- 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x76,
- 0x65, 0x67, 0x61, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e,
- 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52,
- 0x0f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e,
- 0x12, 0x22, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41,
- 0x74, 0x88, 0x01, 0x01, 0x12, 0x4c, 0x0a, 0x0f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x5f, 0x73,
- 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x03, 0x20, 0x01, 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, 0x48, 0x02, 0x52,
- 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x88,
- 0x01, 0x01, 0x12, 0x16, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x64, 0x20, 0x01, 0x28,
- 0x09, 0x48, 0x00, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x38, 0x0a, 0x17, 0x74, 0x72,
- 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x5f, 0x6f,
- 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x65, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x15, 0x74,
- 0x72, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x4f, 0x66,
- 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x42,
- 0x0d, 0x0a, 0x0b, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x42, 0x12,
- 0x0a, 0x10, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65,
- 0x67, 0x79, 0x22, 0x83, 0x01, 0x0a, 0x16, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72,
- 0x73, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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,
- 0x27, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0b, 0x73, 0x74, 0x6f, 0x70, 0x4f, 0x72,
- 0x64, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x61, 0x72,
- 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x5f,
- 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x22, 0xe4, 0x03, 0x0a, 0x0f, 0x4f, 0x72, 0x64,
- 0x65, 0x72, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 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, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69,
- 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12,
- 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73,
- 0x69, 0x7a, 0x65, 0x12, 0x1e, 0x0a, 0x04, 0x73, 0x69, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
- 0x0e, 0x32, 0x0a, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x53, 0x69, 0x64, 0x65, 0x52, 0x04, 0x73,
- 0x69, 0x64, 0x65, 0x12, 0x3b, 0x0a, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x69, 0x6e, 0x5f, 0x66,
- 0x6f, 0x72, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x76, 0x65, 0x67,
- 0x61, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x46, 0x6f,
- 0x72, 0x63, 0x65, 0x52, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x46, 0x6f, 0x72, 0x63, 0x65,
- 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, 0x06,
- 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x12,
- 0x24, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e,
- 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52,
- 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
- 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65,
- 0x6e, 0x63, 0x65, 0x12, 0x34, 0x0a, 0x0c, 0x70, 0x65, 0x67, 0x67, 0x65, 0x64, 0x5f, 0x6f, 0x72,
- 0x64, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x76, 0x65, 0x67, 0x61,
- 0x2e, 0x50, 0x65, 0x67, 0x67, 0x65, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x0b, 0x70, 0x65,
- 0x67, 0x67, 0x65, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x73,
- 0x74, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x70, 0x6f,
- 0x73, 0x74, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x64, 0x75, 0x63, 0x65,
- 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x72, 0x65, 0x64,
- 0x75, 0x63, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x45, 0x0a, 0x0c, 0x69, 0x63, 0x65, 0x62, 0x65,
- 0x72, 0x67, 0x5f, 0x6f, 0x70, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e,
- 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31,
- 0x2e, 0x49, 0x63, 0x65, 0x62, 0x65, 0x72, 0x67, 0x4f, 0x70, 0x74, 0x73, 0x48, 0x00, 0x52, 0x0b,
- 0x69, 0x63, 0x65, 0x62, 0x65, 0x72, 0x67, 0x4f, 0x70, 0x74, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0f,
- 0x0a, 0x0d, 0x5f, 0x69, 0x63, 0x65, 0x62, 0x65, 0x72, 0x67, 0x5f, 0x6f, 0x70, 0x74, 0x73, 0x22,
- 0x5c, 0x0a, 0x0b, 0x49, 0x63, 0x65, 0x62, 0x65, 0x72, 0x67, 0x4f, 0x70, 0x74, 0x73, 0x12, 0x1b,
- 0x0a, 0x09, 0x70, 0x65, 0x61, 0x6b, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x04, 0x52, 0x08, 0x70, 0x65, 0x61, 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6d,
- 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x5f, 0x73,
- 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x12, 0x6d, 0x69, 0x6e, 0x69, 0x6d,
- 0x75, 0x6d, 0x56, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0xfd, 0x01,
- 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 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,
- 0x3b, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e,
- 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31,
- 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4d, 0x6f, 0x64,
- 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x28, 0x0a, 0x0d,
- 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x46, 0x61, 0x63,
- 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x22, 0x53, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1a,
- 0x0a, 0x16, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x55, 0x4e, 0x53,
- 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x4d, 0x4f,
- 0x44, 0x45, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x4d, 0x41, 0x52, 0x47, 0x49, 0x4e, 0x10,
- 0x01, 0x12, 0x18, 0x0a, 0x14, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x49, 0x53, 0x4f, 0x4c, 0x41, 0x54,
- 0x45, 0x44, 0x5f, 0x4d, 0x41, 0x52, 0x47, 0x49, 0x4e, 0x10, 0x02, 0x42, 0x10, 0x0a, 0x0e, 0x5f,
- 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x4b, 0x0a,
- 0x11, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 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, 0x22, 0x85, 0x03, 0x0a, 0x0e, 0x4f,
- 0x72, 0x64, 0x65, 0x72, 0x41, 0x6d, 0x65, 0x6e, 0x64, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x0a,
- 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 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, 0x19, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01,
- 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x18, 0x04,
- 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x69, 0x7a, 0x65, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x12,
- 0x22, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20,
- 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74,
- 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x69, 0x6e, 0x5f, 0x66,
- 0x6f, 0x72, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x76, 0x65, 0x67,
- 0x61, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x46, 0x6f,
- 0x72, 0x63, 0x65, 0x52, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x46, 0x6f, 0x72, 0x63, 0x65,
- 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x65, 0x67, 0x67, 0x65, 0x64, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65,
- 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x65, 0x67, 0x67, 0x65, 0x64, 0x4f,
- 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x40, 0x0a, 0x10, 0x70, 0x65, 0x67, 0x67, 0x65, 0x64, 0x5f,
- 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32,
- 0x15, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50, 0x65, 0x67, 0x67, 0x65, 0x64, 0x52, 0x65, 0x66,
- 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0f, 0x70, 0x65, 0x67, 0x67, 0x65, 0x64, 0x52, 0x65,
- 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18,
- 0x09, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01,
- 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x65,
- 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x69,
- 0x7a, 0x65, 0x22, 0xa4, 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79,
- 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73,
- 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, 0x2b, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x61,
- 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x6d,
- 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x10, 0x0a,
- 0x03, 0x66, 0x65, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12,
- 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x4a, 0x04, 0x08,
- 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0x3d, 0x0a, 0x1e, 0x4c, 0x69, 0x71,
- 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x43,
- 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 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, 0x22, 0xa3, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x71,
- 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x41,
- 0x6d, 0x65, 0x6e, 0x64, 0x6d, 0x65, 0x6e, 0x74, 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, 0x6d, 0x6d, 0x69, 0x74, 0x6d,
- 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x10, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75,
- 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x03, 0x66, 0x65, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
- 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
- 0x63, 0x65, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0x67,
- 0x0a, 0x12, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73,
- 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 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, 0x23, 0x0a, 0x03, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x11, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x45,
- 0x78, 0x74, 0x52, 0x03, 0x65, 0x78, 0x74, 0x22, 0x94, 0x01, 0x0a, 0x12, 0x50, 0x72, 0x6f, 0x70,
- 0x6f, 0x73, 0x61, 0x6c, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c,
- 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x29, 0x0a, 0x05,
- 0x74, 0x65, 0x72, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x76, 0x65,
- 0x67, 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x73,
- 0x52, 0x05, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x12, 0x35, 0x0a, 0x09, 0x72, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x61, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x76, 0x65, 0x67,
- 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x61, 0x6c, 0x65, 0x52, 0x09, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x65, 0x22, 0x9e,
- 0x01, 0x0a, 0x17, 0x42, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c,
+ 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x50, 0x0a, 0x12, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
+ 0x5f, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e,
+ 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x72, 0x67,
+ 0x69, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61,
+ 0x72, 0x67, 0x69, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0xc6, 0x01, 0x0a, 0x14, 0x53, 0x74, 0x6f,
+ 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f,
+ 0x6e, 0x12, 0x46, 0x0a, 0x0b, 0x72, 0x69, 0x73, 0x65, 0x73, 0x5f, 0x61, 0x62, 0x6f, 0x76, 0x65,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72,
+ 0x64, 0x65, 0x72, 0x53, 0x65, 0x74, 0x75, 0x70, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x69, 0x73, 0x65,
+ 0x73, 0x41, 0x62, 0x6f, 0x76, 0x65, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x0b, 0x66, 0x61, 0x6c,
+ 0x6c, 0x73, 0x5f, 0x62, 0x65, 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20,
+ 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76,
+ 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x65, 0x74, 0x75, 0x70,
+ 0x48, 0x01, 0x52, 0x0a, 0x66, 0x61, 0x6c, 0x6c, 0x73, 0x42, 0x65, 0x6c, 0x6f, 0x77, 0x88, 0x01,
+ 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x72, 0x69, 0x73, 0x65, 0x73, 0x5f, 0x61, 0x62, 0x6f, 0x76,
+ 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x66, 0x61, 0x6c, 0x6c, 0x73, 0x5f, 0x62, 0x65, 0x6c, 0x6f,
+ 0x77, 0x22, 0xd0, 0x02, 0x0a, 0x0e, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53,
+ 0x65, 0x74, 0x75, 0x70, 0x12, 0x4c, 0x0a, 0x10, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x73, 0x75,
+ 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21,
+ 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76,
+ 0x31, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f,
+ 0x6e, 0x52, 0x0f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69,
+ 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65,
+ 0x73, 0x41, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4c, 0x0a, 0x0f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79,
+ 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x03, 0x20, 0x01, 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, 0x48,
+ 0x02, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67,
+ 0x79, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x64, 0x20,
+ 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x38, 0x0a, 0x17,
+ 0x74, 0x72, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74,
+ 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x65, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52,
+ 0x15, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74,
+ 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65,
+ 0x72, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74,
+ 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x5f, 0x73, 0x74, 0x72, 0x61,
+ 0x74, 0x65, 0x67, 0x79, 0x22, 0x83, 0x01, 0x0a, 0x16, 0x53, 0x74, 0x6f, 0x70, 0x4f, 0x72, 0x64,
+ 0x65, 0x72, 0x73, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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, 0x27, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f,
+ 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0b, 0x73, 0x74, 0x6f, 0x70,
+ 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d,
+ 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x73, 0x74, 0x6f,
+ 0x70, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x22, 0xe4, 0x03, 0x0a, 0x0f, 0x4f,
+ 0x72, 0x64, 0x65, 0x72, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 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, 0x14, 0x0a, 0x05, 0x70,
+ 0x72, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63,
+ 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52,
+ 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x1e, 0x0a, 0x04, 0x73, 0x69, 0x64, 0x65, 0x18, 0x04, 0x20,
+ 0x01, 0x28, 0x0e, 0x32, 0x0a, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x53, 0x69, 0x64, 0x65, 0x52,
+ 0x04, 0x73, 0x69, 0x64, 0x65, 0x12, 0x3b, 0x0a, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x69, 0x6e,
+ 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x76,
+ 0x65, 0x67, 0x61, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x49, 0x6e,
+ 0x46, 0x6f, 0x72, 0x63, 0x65, 0x52, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x46, 0x6f, 0x72,
+ 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74,
+ 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41,
+ 0x74, 0x12, 0x24, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32,
+ 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x2e, 0x54, 0x79, 0x70,
+ 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72,
+ 0x65, 0x6e, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65,
+ 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x34, 0x0a, 0x0c, 0x70, 0x65, 0x67, 0x67, 0x65, 0x64, 0x5f,
+ 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x76, 0x65,
+ 0x67, 0x61, 0x2e, 0x50, 0x65, 0x67, 0x67, 0x65, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x0b,
+ 0x70, 0x65, 0x67, 0x67, 0x65, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x70,
+ 0x6f, 0x73, 0x74, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08,
+ 0x70, 0x6f, 0x73, 0x74, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x64, 0x75,
+ 0x63, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x72,
+ 0x65, 0x64, 0x75, 0x63, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x45, 0x0a, 0x0c, 0x69, 0x63, 0x65,
+ 0x62, 0x65, 0x72, 0x67, 0x5f, 0x6f, 0x70, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x1d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e,
+ 0x76, 0x31, 0x2e, 0x49, 0x63, 0x65, 0x62, 0x65, 0x72, 0x67, 0x4f, 0x70, 0x74, 0x73, 0x48, 0x00,
+ 0x52, 0x0b, 0x69, 0x63, 0x65, 0x62, 0x65, 0x72, 0x67, 0x4f, 0x70, 0x74, 0x73, 0x88, 0x01, 0x01,
+ 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x69, 0x63, 0x65, 0x62, 0x65, 0x72, 0x67, 0x5f, 0x6f, 0x70, 0x74,
+ 0x73, 0x22, 0x5c, 0x0a, 0x0b, 0x49, 0x63, 0x65, 0x62, 0x65, 0x72, 0x67, 0x4f, 0x70, 0x74, 0x73,
+ 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x65, 0x61, 0x6b, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x04, 0x52, 0x08, 0x70, 0x65, 0x61, 0x6b, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x30, 0x0a,
+ 0x14, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65,
+ 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x12, 0x6d, 0x69, 0x6e,
+ 0x69, 0x6d, 0x75, 0x6d, 0x56, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22,
+ 0xf7, 0x01, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 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, 0x3b, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32,
+ 0x27, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e,
+ 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4d,
+ 0x6f, 0x64, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x28,
+ 0x0a, 0x0d, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x46,
+ 0x61, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x22, 0x4d, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65,
+ 0x12, 0x14, 0x0a, 0x10, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49,
+ 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x43,
+ 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x4d, 0x41, 0x52, 0x47, 0x49, 0x4e, 0x10, 0x01, 0x12, 0x18, 0x0a,
+ 0x14, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x49, 0x53, 0x4f, 0x4c, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x4d,
+ 0x41, 0x52, 0x47, 0x49, 0x4e, 0x10, 0x02, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6d, 0x61, 0x72, 0x67,
+ 0x69, 0x6e, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x22, 0x4b, 0x0a, 0x11, 0x4f, 0x72, 0x64,
+ 0x65, 0x72, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19,
+ 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 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, 0x22, 0x85, 0x03, 0x0a, 0x0e, 0x4f, 0x72, 0x64, 0x65, 0x72,
+ 0x41, 0x6d, 0x65, 0x6e, 0x64, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x64,
+ 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64,
+ 0x65, 0x72, 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, 0x19, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
+ 0x48, 0x00, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x0a,
+ 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03,
+ 0x52, 0x09, 0x73, 0x69, 0x7a, 0x65, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x12, 0x22, 0x0a, 0x0a, 0x65,
+ 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x48,
+ 0x01, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x88, 0x01, 0x01, 0x12,
+ 0x3b, 0x0a, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x69, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65,
+ 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4f, 0x72,
+ 0x64, 0x65, 0x72, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x52,
+ 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d,
+ 0x70, 0x65, 0x67, 0x67, 0x65, 0x64, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x07, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x65, 0x67, 0x67, 0x65, 0x64, 0x4f, 0x66, 0x66, 0x73, 0x65,
+ 0x74, 0x12, 0x40, 0x0a, 0x10, 0x70, 0x65, 0x67, 0x67, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x66, 0x65,
+ 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x76, 0x65,
+ 0x67, 0x61, 0x2e, 0x50, 0x65, 0x67, 0x67, 0x65, 0x64, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
+ 0x63, 0x65, 0x52, 0x0f, 0x70, 0x65, 0x67, 0x67, 0x65, 0x64, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65,
+ 0x6e, 0x63, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28,
+ 0x04, 0x48, 0x02, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06,
+ 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72,
+ 0x65, 0x73, 0x5f, 0x61, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x22, 0xa4,
+ 0x01, 0x0a, 0x1c, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76,
+ 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 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, 0x2b, 0x0a, 0x11,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e,
+ 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d,
+ 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x65, 0x65,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72,
+ 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
+ 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a,
+ 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0x3d, 0x0a, 0x1e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69,
+ 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x6e, 0x63, 0x65,
+ 0x6c, 0x6c, 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, 0x22, 0xa3, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69,
+ 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x6d, 0x65, 0x6e, 0x64,
+ 0x6d, 0x65, 0x6e, 0x74, 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, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x5f,
+ 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x10,
+ 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x65, 0x65,
+ 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x06, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x4a, 0x04,
+ 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0x67, 0x0a, 0x12, 0x57, 0x69,
+ 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e,
+ 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x06, 0x61, 0x6d, 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, 0x23,
+ 0x0a, 0x03, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x76, 0x65,
+ 0x67, 0x61, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x45, 0x78, 0x74, 0x52, 0x03,
+ 0x65, 0x78, 0x74, 0x22, 0x94, 0x01, 0x0a, 0x12, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c,
0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65,
0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72,
- 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2e, 0x0a, 0x05, 0x74, 0x65, 0x72, 0x6d,
- 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x42,
- 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x54, 0x65, 0x72, 0x6d,
- 0x73, 0x52, 0x05, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x12, 0x35, 0x0a, 0x09, 0x72, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x61, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x76, 0x65,
- 0x67, 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x61, 0x6c, 0x65, 0x52, 0x09, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x65, 0x22,
- 0x59, 0x0a, 0x0e, 0x56, 0x6f, 0x74, 0x65, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f,
- 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c,
- 0x49, 0x64, 0x12, 0x26, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x0e, 0x32, 0x10, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x56, 0x6f, 0x74, 0x65, 0x2e, 0x56, 0x61,
- 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x45, 0x0a, 0x12, 0x44, 0x65,
- 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e,
- 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, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f,
- 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e,
- 0x74, 0x22, 0xe2, 0x01, 0x0a, 0x14, 0x55, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65,
- 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 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, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x06, 0x6d,
- 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x76, 0x65,
+ 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x29, 0x0a, 0x05, 0x74, 0x65, 0x72, 0x6d,
+ 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50,
+ 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x73, 0x52, 0x05, 0x74, 0x65,
+ 0x72, 0x6d, 0x73, 0x12, 0x35, 0x0a, 0x09, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x65,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50, 0x72,
+ 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x65, 0x52,
+ 0x09, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x65, 0x22, 0x9e, 0x01, 0x0a, 0x17, 0x42,
+ 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x53, 0x75, 0x62, 0x6d,
+ 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65,
+ 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72,
+ 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2e, 0x0a, 0x05, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68,
+ 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x73, 0x52, 0x05, 0x74,
+ 0x65, 0x72, 0x6d, 0x73, 0x12, 0x35, 0x0a, 0x09, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
+ 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50,
+ 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x65,
+ 0x52, 0x09, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x65, 0x22, 0x59, 0x0a, 0x0e, 0x56,
+ 0x6f, 0x74, 0x65, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a,
+ 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x26,
+ 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x10, 0x2e,
+ 0x76, 0x65, 0x67, 0x61, 0x2e, 0x56, 0x6f, 0x74, 0x65, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52,
+ 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x45, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61,
+ 0x74, 0x65, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 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, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xe2, 0x01,
+ 0x0a, 0x14, 0x55, 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x6d,
+ 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 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,
+ 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f,
+ 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x64, 0x65, 0x6c,
+ 0x65, 0x67, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e,
+ 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0x52,
+ 0x0a, 0x06, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x45, 0x54, 0x48,
+ 0x4f, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00,
+ 0x12, 0x0e, 0x0a, 0x0a, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x4e, 0x4f, 0x57, 0x10, 0x01,
+ 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x41, 0x54, 0x5f, 0x45, 0x4e,
+ 0x44, 0x5f, 0x4f, 0x46, 0x5f, 0x45, 0x50, 0x4f, 0x43, 0x48, 0x10, 0x02, 0x22, 0x04, 0x08, 0x03,
+ 0x10, 0x03, 0x22, 0xea, 0x02, 0x0a, 0x08, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12,
+ 0x3d, 0x0a, 0x11, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f,
+ 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 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, 0x0e,
+ 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x74, 0x6f, 0x12, 0x39,
+ 0x0a, 0x0f, 0x74, 0x6f, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70,
+ 0x65, 0x18, 0x03, 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, 0x14, 0x0a, 0x05, 0x61, 0x73, 0x73,
+ 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x12,
+ 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72,
+ 0x65, 0x6e, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65,
+ 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x3b, 0x0a, 0x07, 0x6f, 0x6e, 0x65, 0x5f, 0x6f, 0x66, 0x66,
+ 0x18, 0x65, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x6e, 0x65, 0x4f, 0x66, 0x66,
+ 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x6f, 0x6e, 0x65, 0x4f,
+ 0x66, 0x66, 0x12, 0x43, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x75, 0x72, 0x72, 0x69, 0x6e, 0x67, 0x18,
+ 0x66, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x75, 0x72, 0x72, 0x69,
+ 0x6e, 0x67, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x48, 0x00, 0x52, 0x09, 0x72, 0x65,
+ 0x63, 0x75, 0x72, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22,
+ 0x2f, 0x0a, 0x0e, 0x4f, 0x6e, 0x65, 0x4f, 0x66, 0x66, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65,
+ 0x72, 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,
+ 0x22, 0xc1, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x63, 0x75, 0x72, 0x72, 0x69, 0x6e, 0x67, 0x54, 0x72,
+ 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f,
+ 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x73, 0x74, 0x61,
+ 0x72, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x5f, 0x65,
+ 0x70, 0x6f, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x08, 0x65, 0x6e,
+ 0x64, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x61, 0x63,
+ 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x61, 0x63, 0x74, 0x6f,
+ 0x72, 0x12, 0x43, 0x0a, 0x11, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x74,
+ 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x76,
+ 0x65, 0x67, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x72, 0x61,
+ 0x74, 0x65, 0x67, 0x79, 0x52, 0x10, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74,
+ 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x65,
+ 0x70, 0x6f, 0x63, 0x68, 0x22, 0x31, 0x0a, 0x0e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x54, 0x72,
+ 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66,
+ 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x72, 0x61,
+ 0x6e, 0x73, 0x66, 0x65, 0x72, 0x49, 0x64, 0x22, 0x94, 0x01, 0x0a, 0x0f, 0x49, 0x73, 0x73, 0x75,
+ 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x73,
+ 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
+ 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x12, 0x37, 0x0a, 0x04, 0x6b, 0x69, 0x6e,
+ 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 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, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69,
+ 0x6e, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f,
+ 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x76,
+ 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x22, 0x8d,
+ 0x02, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61,
+ 0x6c, 0x53, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x61, 0x6d, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x41, 0x0a,
+ 0x04, 0x74, 0x65, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x76, 0x65,
+ 0x67, 0x61, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43,
+ 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74,
+ 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x48, 0x00, 0x52, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x88, 0x01, 0x01,
+ 0x1a, 0x92, 0x01, 0x0a, 0x04, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
+ 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a,
+ 0x08, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0b, 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, 0x0c, 0x20, 0x01, 0x28,
+ 0x09, 0x48, 0x01, 0x52, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x55, 0x72, 0x6c, 0x88, 0x01,
+ 0x01, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28,
+ 0x08, 0x52, 0x06, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 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, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x65, 0x61, 0x6d, 0x22, 0xbb,
+ 0x02, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 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, 0x17, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x61, 0x6d, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x41, 0x0a,
+ 0x04, 0x74, 0x65, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x76, 0x65,
0x67, 0x61, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55,
- 0x6e, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x73, 0x73,
- 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68,
- 0x6f, 0x64, 0x22, 0x52, 0x0a, 0x06, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x16, 0x0a, 0x12,
- 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49,
- 0x45, 0x44, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x4e,
- 0x4f, 0x57, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x41,
- 0x54, 0x5f, 0x45, 0x4e, 0x44, 0x5f, 0x4f, 0x46, 0x5f, 0x45, 0x50, 0x4f, 0x43, 0x48, 0x10, 0x02,
- 0x22, 0x04, 0x08, 0x03, 0x10, 0x03, 0x22, 0xea, 0x02, 0x0a, 0x08, 0x54, 0x72, 0x61, 0x6e, 0x73,
- 0x66, 0x65, 0x72, 0x12, 0x3d, 0x0a, 0x11, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x63, 0x63, 0x6f,
- 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 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, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,
- 0x74, 0x6f, 0x12, 0x39, 0x0a, 0x0f, 0x74, 0x6f, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
- 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 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, 0x14, 0x0a,
- 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x73,
- 0x73, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x72,
- 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
- 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x3b, 0x0a, 0x07, 0x6f, 0x6e, 0x65,
- 0x5f, 0x6f, 0x66, 0x66, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x65, 0x67,
- 0x61, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x6e,
- 0x65, 0x4f, 0x66, 0x66, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06,
- 0x6f, 0x6e, 0x65, 0x4f, 0x66, 0x66, 0x12, 0x43, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x75, 0x72, 0x72,
- 0x69, 0x6e, 0x67, 0x18, 0x66, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x76, 0x65, 0x67, 0x61,
- 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63,
- 0x75, 0x72, 0x72, 0x69, 0x6e, 0x67, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x48, 0x00,
- 0x52, 0x09, 0x72, 0x65, 0x63, 0x75, 0x72, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x06, 0x0a, 0x04, 0x6b,
- 0x69, 0x6e, 0x64, 0x22, 0x2f, 0x0a, 0x0e, 0x4f, 0x6e, 0x65, 0x4f, 0x66, 0x66, 0x54, 0x72, 0x61,
- 0x6e, 0x73, 0x66, 0x65, 0x72, 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, 0x22, 0xc1, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x63, 0x75, 0x72, 0x72, 0x69,
- 0x6e, 0x67, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74,
- 0x61, 0x72, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52,
- 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x20, 0x0a, 0x09, 0x65,
- 0x6e, 0x64, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00,
- 0x52, 0x08, 0x65, 0x6e, 0x64, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a,
- 0x06, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66,
- 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x43, 0x0a, 0x11, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63,
- 0x68, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x16, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68,
- 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x10, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74,
- 0x63, 0x68, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x65,
- 0x6e, 0x64, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x22, 0x31, 0x0a, 0x0e, 0x43, 0x61, 0x6e, 0x63,
- 0x65, 0x6c, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x72,
- 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x49, 0x64, 0x22, 0x94, 0x01, 0x0a, 0x0f,
- 0x49, 0x73, 0x73, 0x75, 0x65, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12,
- 0x1c, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x09, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x12, 0x37, 0x0a,
- 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 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, 0x4b, 0x69, 0x6e, 0x64,
- 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61,
- 0x74, 0x6f, 0x72, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x6f, 0x64, 0x65,
- 0x49, 0x64, 0x22, 0x8d, 0x02, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x66,
- 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x74,
- 0x65, 0x61, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, 0x54, 0x65, 0x61,
- 0x6d, 0x12, 0x41, 0x0a, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x28, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e,
- 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61,
- 0x6c, 0x53, 0x65, 0x74, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x48, 0x00, 0x52, 0x04, 0x74, 0x65, 0x61,
- 0x6d, 0x88, 0x01, 0x01, 0x1a, 0x92, 0x01, 0x0a, 0x04, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x12, 0x0a,
- 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
- 0x65, 0x12, 0x1e, 0x0a, 0x08, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0b, 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,
- 0x0c, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x55,
- 0x72, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x18,
- 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 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, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x65,
- 0x61, 0x6d, 0x22, 0xbb, 0x02, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 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, 0x17, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x74,
- 0x65, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, 0x54, 0x65, 0x61,
- 0x6d, 0x12, 0x41, 0x0a, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x28, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2e,
- 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61,
- 0x6c, 0x53, 0x65, 0x74, 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x48, 0x00, 0x52, 0x04, 0x74, 0x65, 0x61,
- 0x6d, 0x88, 0x01, 0x01, 0x1a, 0xb0, 0x01, 0x0a, 0x04, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x17, 0x0a,
- 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e,
- 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x75,
- 0x72, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 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, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x09, 0x61, 0x76,
- 0x61, 0x74, 0x61, 0x72, 0x55, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x63, 0x6c,
- 0x6f, 0x73, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, 0x52, 0x06, 0x63, 0x6c,
- 0x6f, 0x73, 0x65, 0x64, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
- 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, 0x42, 0x09, 0x0a, 0x07,
- 0x5f, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x65, 0x61, 0x6d,
- 0x22, 0x23, 0x0a, 0x11, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61,
- 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x1a, 0x0a, 0x08, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x65, 0x61,
- 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
- 0x64, 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, 0x63, 0x6f, 0x6d, 0x6d, 0x61,
- 0x6e, 0x64, 0x73, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74,
+ 0x2e, 0x54, 0x65, 0x61, 0x6d, 0x48, 0x00, 0x52, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x88, 0x01, 0x01,
+ 0x1a, 0xb0, 0x01, 0x0a, 0x04, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
+ 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88,
+ 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0b,
+ 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 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, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x09, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72,
+ 0x55, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64,
+ 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, 0x52, 0x06, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x64,
+ 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 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, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x6c, 0x6f,
+ 0x73, 0x65, 0x64, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x65, 0x61, 0x6d, 0x22, 0x23, 0x0a, 0x11,
+ 0x41, 0x70, 0x70, 0x6c, 0x79, 0x52, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x43, 0x6f, 0x64,
+ 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
+ 0x64, 0x22, 0x1a, 0x0a, 0x08, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x0e, 0x0a,
+ 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 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, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x2f,
+ 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -2678,38 +2692,39 @@ var file_vega_commands_v1_commands_proto_depIdxs = []int32{
6, // 2: vega.commands.v1.BatchMarketInstructions.submissions:type_name -> vega.commands.v1.OrderSubmission
5, // 3: vega.commands.v1.BatchMarketInstructions.stop_orders_cancellation:type_name -> vega.commands.v1.StopOrdersCancellation
3, // 4: vega.commands.v1.BatchMarketInstructions.stop_orders_submission:type_name -> vega.commands.v1.StopOrdersSubmission
- 4, // 5: vega.commands.v1.StopOrdersSubmission.rises_above:type_name -> vega.commands.v1.StopOrderSetup
- 4, // 6: vega.commands.v1.StopOrdersSubmission.falls_below:type_name -> vega.commands.v1.StopOrderSetup
- 6, // 7: vega.commands.v1.StopOrderSetup.order_submission:type_name -> vega.commands.v1.OrderSubmission
- 31, // 8: vega.commands.v1.StopOrderSetup.expiry_strategy:type_name -> vega.StopOrder.ExpiryStrategy
- 32, // 9: vega.commands.v1.OrderSubmission.side:type_name -> vega.Side
- 33, // 10: vega.commands.v1.OrderSubmission.time_in_force:type_name -> vega.Order.TimeInForce
- 34, // 11: vega.commands.v1.OrderSubmission.type:type_name -> vega.Order.Type
- 35, // 12: vega.commands.v1.OrderSubmission.pegged_order:type_name -> vega.PeggedOrder
- 7, // 13: vega.commands.v1.OrderSubmission.iceberg_opts:type_name -> vega.commands.v1.IcebergOpts
- 0, // 14: vega.commands.v1.UpdateMarginMode.mode:type_name -> vega.commands.v1.UpdateMarginMode.Mode
- 33, // 15: vega.commands.v1.OrderAmendment.time_in_force:type_name -> vega.Order.TimeInForce
- 36, // 16: vega.commands.v1.OrderAmendment.pegged_reference:type_name -> vega.PeggedReference
- 37, // 17: vega.commands.v1.WithdrawSubmission.ext:type_name -> vega.WithdrawExt
- 38, // 18: vega.commands.v1.ProposalSubmission.terms:type_name -> vega.ProposalTerms
- 39, // 19: vega.commands.v1.ProposalSubmission.rationale:type_name -> vega.ProposalRationale
- 40, // 20: vega.commands.v1.BatchProposalSubmission.terms:type_name -> vega.BatchProposalTerms
- 39, // 21: vega.commands.v1.BatchProposalSubmission.rationale:type_name -> vega.ProposalRationale
- 41, // 22: vega.commands.v1.VoteSubmission.value:type_name -> vega.Vote.Value
- 1, // 23: vega.commands.v1.UndelegateSubmission.method:type_name -> vega.commands.v1.UndelegateSubmission.Method
- 42, // 24: vega.commands.v1.Transfer.from_account_type:type_name -> vega.AccountType
- 42, // 25: vega.commands.v1.Transfer.to_account_type:type_name -> vega.AccountType
- 21, // 26: vega.commands.v1.Transfer.one_off:type_name -> vega.commands.v1.OneOffTransfer
- 22, // 27: vega.commands.v1.Transfer.recurring:type_name -> vega.commands.v1.RecurringTransfer
- 43, // 28: vega.commands.v1.RecurringTransfer.dispatch_strategy:type_name -> vega.DispatchStrategy
- 44, // 29: vega.commands.v1.IssueSignatures.kind:type_name -> vega.commands.v1.NodeSignatureKind
- 29, // 30: vega.commands.v1.CreateReferralSet.team:type_name -> vega.commands.v1.CreateReferralSet.Team
- 30, // 31: vega.commands.v1.UpdateReferralSet.team:type_name -> vega.commands.v1.UpdateReferralSet.Team
- 32, // [32:32] is the sub-list for method output_type
- 32, // [32:32] is the sub-list for method input_type
- 32, // [32:32] is the sub-list for extension type_name
- 32, // [32:32] is the sub-list for extension extendee
- 0, // [0:32] is the sub-list for field type_name
+ 8, // 5: vega.commands.v1.BatchMarketInstructions.update_margin_mode:type_name -> vega.commands.v1.UpdateMarginMode
+ 4, // 6: vega.commands.v1.StopOrdersSubmission.rises_above:type_name -> vega.commands.v1.StopOrderSetup
+ 4, // 7: vega.commands.v1.StopOrdersSubmission.falls_below:type_name -> vega.commands.v1.StopOrderSetup
+ 6, // 8: vega.commands.v1.StopOrderSetup.order_submission:type_name -> vega.commands.v1.OrderSubmission
+ 31, // 9: vega.commands.v1.StopOrderSetup.expiry_strategy:type_name -> vega.StopOrder.ExpiryStrategy
+ 32, // 10: vega.commands.v1.OrderSubmission.side:type_name -> vega.Side
+ 33, // 11: vega.commands.v1.OrderSubmission.time_in_force:type_name -> vega.Order.TimeInForce
+ 34, // 12: vega.commands.v1.OrderSubmission.type:type_name -> vega.Order.Type
+ 35, // 13: vega.commands.v1.OrderSubmission.pegged_order:type_name -> vega.PeggedOrder
+ 7, // 14: vega.commands.v1.OrderSubmission.iceberg_opts:type_name -> vega.commands.v1.IcebergOpts
+ 0, // 15: vega.commands.v1.UpdateMarginMode.mode:type_name -> vega.commands.v1.UpdateMarginMode.Mode
+ 33, // 16: vega.commands.v1.OrderAmendment.time_in_force:type_name -> vega.Order.TimeInForce
+ 36, // 17: vega.commands.v1.OrderAmendment.pegged_reference:type_name -> vega.PeggedReference
+ 37, // 18: vega.commands.v1.WithdrawSubmission.ext:type_name -> vega.WithdrawExt
+ 38, // 19: vega.commands.v1.ProposalSubmission.terms:type_name -> vega.ProposalTerms
+ 39, // 20: vega.commands.v1.ProposalSubmission.rationale:type_name -> vega.ProposalRationale
+ 40, // 21: vega.commands.v1.BatchProposalSubmission.terms:type_name -> vega.BatchProposalTerms
+ 39, // 22: vega.commands.v1.BatchProposalSubmission.rationale:type_name -> vega.ProposalRationale
+ 41, // 23: vega.commands.v1.VoteSubmission.value:type_name -> vega.Vote.Value
+ 1, // 24: vega.commands.v1.UndelegateSubmission.method:type_name -> vega.commands.v1.UndelegateSubmission.Method
+ 42, // 25: vega.commands.v1.Transfer.from_account_type:type_name -> vega.AccountType
+ 42, // 26: vega.commands.v1.Transfer.to_account_type:type_name -> vega.AccountType
+ 21, // 27: vega.commands.v1.Transfer.one_off:type_name -> vega.commands.v1.OneOffTransfer
+ 22, // 28: vega.commands.v1.Transfer.recurring:type_name -> vega.commands.v1.RecurringTransfer
+ 43, // 29: vega.commands.v1.RecurringTransfer.dispatch_strategy:type_name -> vega.DispatchStrategy
+ 44, // 30: vega.commands.v1.IssueSignatures.kind:type_name -> vega.commands.v1.NodeSignatureKind
+ 29, // 31: vega.commands.v1.CreateReferralSet.team:type_name -> vega.commands.v1.CreateReferralSet.Team
+ 30, // 32: vega.commands.v1.UpdateReferralSet.team:type_name -> vega.commands.v1.UpdateReferralSet.Team
+ 33, // [33:33] is the sub-list for method output_type
+ 33, // [33:33] is the sub-list for method input_type
+ 33, // [33:33] is the sub-list for extension type_name
+ 33, // [33:33] is the sub-list for extension extendee
+ 0, // [0:33] is the sub-list for field type_name
}
func init() { file_vega_commands_v1_commands_proto_init() }
diff --git a/protos/vega/snapshot/v1/snapshot.pb.go b/protos/vega/snapshot/v1/snapshot.pb.go
index 1c78f74b61..12903c2c1d 100644
--- a/protos/vega/snapshot/v1/snapshot.pb.go
+++ b/protos/vega/snapshot/v1/snapshot.pb.go
@@ -5192,33 +5192,34 @@ type Market struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- Market *vega.Market `protobuf:"bytes,1,opt,name=market,proto3" json:"market,omitempty"`
- PriceMonitor *PriceMonitor `protobuf:"bytes,2,opt,name=price_monitor,json=priceMonitor,proto3" json:"price_monitor,omitempty"`
- AuctionState *AuctionState `protobuf:"bytes,3,opt,name=auction_state,json=auctionState,proto3" json:"auction_state,omitempty"`
- PeggedOrders *PeggedOrders `protobuf:"bytes,4,opt,name=pegged_orders,json=peggedOrders,proto3" json:"pegged_orders,omitempty"`
- ExpiringOrders []*vega.Order `protobuf:"bytes,5,rep,name=expiring_orders,json=expiringOrders,proto3" json:"expiring_orders,omitempty"`
- LastBestBid string `protobuf:"bytes,6,opt,name=last_best_bid,json=lastBestBid,proto3" json:"last_best_bid,omitempty"`
- LastBestAsk string `protobuf:"bytes,7,opt,name=last_best_ask,json=lastBestAsk,proto3" json:"last_best_ask,omitempty"`
- LastMidBid string `protobuf:"bytes,8,opt,name=last_mid_bid,json=lastMidBid,proto3" json:"last_mid_bid,omitempty"`
- LastMidAsk string `protobuf:"bytes,9,opt,name=last_mid_ask,json=lastMidAsk,proto3" json:"last_mid_ask,omitempty"`
- LastMarketValueProxy string `protobuf:"bytes,10,opt,name=last_market_value_proxy,json=lastMarketValueProxy,proto3" json:"last_market_value_proxy,omitempty"`
- LastEquityShareDistributed int64 `protobuf:"varint,11,opt,name=last_equity_share_distributed,json=lastEquityShareDistributed,proto3" json:"last_equity_share_distributed,omitempty"`
- EquityShare *EquityShare `protobuf:"bytes,12,opt,name=equity_share,json=equityShare,proto3" json:"equity_share,omitempty"`
- CurrentMarkPrice string `protobuf:"bytes,13,opt,name=current_mark_price,json=currentMarkPrice,proto3" json:"current_mark_price,omitempty"`
- RiskFactorShort string `protobuf:"bytes,14,opt,name=risk_factor_short,json=riskFactorShort,proto3" json:"risk_factor_short,omitempty"`
- RiskFactorLong string `protobuf:"bytes,15,opt,name=risk_factor_long,json=riskFactorLong,proto3" json:"risk_factor_long,omitempty"`
- RiskFactorConsensusReached bool `protobuf:"varint,16,opt,name=risk_factor_consensus_reached,json=riskFactorConsensusReached,proto3" json:"risk_factor_consensus_reached,omitempty"`
- FeeSplitter *FeeSplitter `protobuf:"bytes,17,opt,name=fee_splitter,json=feeSplitter,proto3" json:"fee_splitter,omitempty"`
- SettlementData string `protobuf:"bytes,18,opt,name=settlement_data,json=settlementData,proto3" json:"settlement_data,omitempty"`
- NextMarkToMarket int64 `protobuf:"varint,19,opt,name=next_mark_to_market,json=nextMarkToMarket,proto3" json:"next_mark_to_market,omitempty"`
- LastTradedPrice string `protobuf:"bytes,20,opt,name=last_traded_price,json=lastTradedPrice,proto3" json:"last_traded_price,omitempty"`
- Parties []string `protobuf:"bytes,21,rep,name=parties,proto3" json:"parties,omitempty"`
- Closed bool `protobuf:"varint,22,opt,name=closed,proto3" json:"closed,omitempty"`
- Succeeded bool `protobuf:"varint,23,opt,name=succeeded,proto3" json:"succeeded,omitempty"`
- StopOrders *StopOrders `protobuf:"bytes,24,opt,name=stop_orders,json=stopOrders,proto3" json:"stop_orders,omitempty"`
- ExpiringStopOrders []*vega.Order `protobuf:"bytes,25,rep,name=expiring_stop_orders,json=expiringStopOrders,proto3" json:"expiring_stop_orders,omitempty"`
- Product *Product `protobuf:"bytes,26,opt,name=product,proto3" json:"product,omitempty"`
- FeesStats *v12.FeesStats `protobuf:"bytes,27,opt,name=fees_stats,json=feesStats,proto3" json:"fees_stats,omitempty"`
+ Market *vega.Market `protobuf:"bytes,1,opt,name=market,proto3" json:"market,omitempty"`
+ PriceMonitor *PriceMonitor `protobuf:"bytes,2,opt,name=price_monitor,json=priceMonitor,proto3" json:"price_monitor,omitempty"`
+ AuctionState *AuctionState `protobuf:"bytes,3,opt,name=auction_state,json=auctionState,proto3" json:"auction_state,omitempty"`
+ PeggedOrders *PeggedOrders `protobuf:"bytes,4,opt,name=pegged_orders,json=peggedOrders,proto3" json:"pegged_orders,omitempty"`
+ ExpiringOrders []*vega.Order `protobuf:"bytes,5,rep,name=expiring_orders,json=expiringOrders,proto3" json:"expiring_orders,omitempty"`
+ LastBestBid string `protobuf:"bytes,6,opt,name=last_best_bid,json=lastBestBid,proto3" json:"last_best_bid,omitempty"`
+ LastBestAsk string `protobuf:"bytes,7,opt,name=last_best_ask,json=lastBestAsk,proto3" json:"last_best_ask,omitempty"`
+ LastMidBid string `protobuf:"bytes,8,opt,name=last_mid_bid,json=lastMidBid,proto3" json:"last_mid_bid,omitempty"`
+ LastMidAsk string `protobuf:"bytes,9,opt,name=last_mid_ask,json=lastMidAsk,proto3" json:"last_mid_ask,omitempty"`
+ LastMarketValueProxy string `protobuf:"bytes,10,opt,name=last_market_value_proxy,json=lastMarketValueProxy,proto3" json:"last_market_value_proxy,omitempty"`
+ LastEquityShareDistributed int64 `protobuf:"varint,11,opt,name=last_equity_share_distributed,json=lastEquityShareDistributed,proto3" json:"last_equity_share_distributed,omitempty"`
+ EquityShare *EquityShare `protobuf:"bytes,12,opt,name=equity_share,json=equityShare,proto3" json:"equity_share,omitempty"`
+ CurrentMarkPrice string `protobuf:"bytes,13,opt,name=current_mark_price,json=currentMarkPrice,proto3" json:"current_mark_price,omitempty"`
+ RiskFactorShort string `protobuf:"bytes,14,opt,name=risk_factor_short,json=riskFactorShort,proto3" json:"risk_factor_short,omitempty"`
+ RiskFactorLong string `protobuf:"bytes,15,opt,name=risk_factor_long,json=riskFactorLong,proto3" json:"risk_factor_long,omitempty"`
+ RiskFactorConsensusReached bool `protobuf:"varint,16,opt,name=risk_factor_consensus_reached,json=riskFactorConsensusReached,proto3" json:"risk_factor_consensus_reached,omitempty"`
+ FeeSplitter *FeeSplitter `protobuf:"bytes,17,opt,name=fee_splitter,json=feeSplitter,proto3" json:"fee_splitter,omitempty"`
+ SettlementData string `protobuf:"bytes,18,opt,name=settlement_data,json=settlementData,proto3" json:"settlement_data,omitempty"`
+ NextMarkToMarket int64 `protobuf:"varint,19,opt,name=next_mark_to_market,json=nextMarkToMarket,proto3" json:"next_mark_to_market,omitempty"`
+ LastTradedPrice string `protobuf:"bytes,20,opt,name=last_traded_price,json=lastTradedPrice,proto3" json:"last_traded_price,omitempty"`
+ Parties []string `protobuf:"bytes,21,rep,name=parties,proto3" json:"parties,omitempty"`
+ Closed bool `protobuf:"varint,22,opt,name=closed,proto3" json:"closed,omitempty"`
+ Succeeded bool `protobuf:"varint,23,opt,name=succeeded,proto3" json:"succeeded,omitempty"`
+ StopOrders *StopOrders `protobuf:"bytes,24,opt,name=stop_orders,json=stopOrders,proto3" json:"stop_orders,omitempty"`
+ ExpiringStopOrders []*vega.Order `protobuf:"bytes,25,rep,name=expiring_stop_orders,json=expiringStopOrders,proto3" json:"expiring_stop_orders,omitempty"`
+ Product *Product `protobuf:"bytes,26,opt,name=product,proto3" json:"product,omitempty"`
+ FeesStats *v12.FeesStats `protobuf:"bytes,27,opt,name=fees_stats,json=feesStats,proto3" json:"fees_stats,omitempty"`
+ PartyMarginFactor []*PartyMarginFactor `protobuf:"bytes,28,rep,name=party_margin_factor,json=partyMarginFactor,proto3" json:"party_margin_factor,omitempty"`
}
func (x *Market) Reset() {
@@ -5442,6 +5443,68 @@ func (x *Market) GetFeesStats() *v12.FeesStats {
return nil
}
+func (x *Market) GetPartyMarginFactor() []*PartyMarginFactor {
+ if x != nil {
+ return x.PartyMarginFactor
+ }
+ return nil
+}
+
+type PartyMarginFactor struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Party string `protobuf:"bytes,1,opt,name=party,proto3" json:"party,omitempty"`
+ MarginFactor string `protobuf:"bytes,2,opt,name=margin_factor,json=marginFactor,proto3" json:"margin_factor,omitempty"`
+}
+
+func (x *PartyMarginFactor) Reset() {
+ *x = PartyMarginFactor{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[66]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *PartyMarginFactor) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PartyMarginFactor) ProtoMessage() {}
+
+func (x *PartyMarginFactor) ProtoReflect() protoreflect.Message {
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[66]
+ 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 PartyMarginFactor.ProtoReflect.Descriptor instead.
+func (*PartyMarginFactor) Descriptor() ([]byte, []int) {
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{66}
+}
+
+func (x *PartyMarginFactor) GetParty() string {
+ if x != nil {
+ return x.Party
+ }
+ return ""
+}
+
+func (x *PartyMarginFactor) GetMarginFactor() string {
+ if x != nil {
+ return x.MarginFactor
+ }
+ return ""
+}
+
// eventually support multiple products
type Product struct {
state protoimpl.MessageState
@@ -5457,7 +5520,7 @@ type Product struct {
func (x *Product) Reset() {
*x = Product{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[66]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[67]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -5470,7 +5533,7 @@ func (x *Product) String() string {
func (*Product) ProtoMessage() {}
func (x *Product) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[66]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[67]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -5483,7 +5546,7 @@ func (x *Product) ProtoReflect() protoreflect.Message {
// Deprecated: Use Product.ProtoReflect.Descriptor instead.
func (*Product) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{66}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{67}
}
func (m *Product) GetType() isProduct_Type {
@@ -5522,7 +5585,7 @@ type DataPoint struct {
func (x *DataPoint) Reset() {
*x = DataPoint{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[67]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[68]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -5535,7 +5598,7 @@ func (x *DataPoint) String() string {
func (*DataPoint) ProtoMessage() {}
func (x *DataPoint) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[67]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[68]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -5548,7 +5611,7 @@ func (x *DataPoint) ProtoReflect() protoreflect.Message {
// Deprecated: Use DataPoint.ProtoReflect.Descriptor instead.
func (*DataPoint) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{67}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{68}
}
func (x *DataPoint) GetPrice() string {
@@ -5578,7 +5641,7 @@ type AuctionIntervals struct {
func (x *AuctionIntervals) Reset() {
*x = AuctionIntervals{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[68]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[69]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -5591,7 +5654,7 @@ func (x *AuctionIntervals) String() string {
func (*AuctionIntervals) ProtoMessage() {}
func (x *AuctionIntervals) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[68]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[69]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -5604,7 +5667,7 @@ func (x *AuctionIntervals) ProtoReflect() protoreflect.Message {
// Deprecated: Use AuctionIntervals.ProtoReflect.Descriptor instead.
func (*AuctionIntervals) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{68}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{69}
}
func (x *AuctionIntervals) GetT() []int64 {
@@ -5641,7 +5704,7 @@ type TWAPData struct {
func (x *TWAPData) Reset() {
*x = TWAPData{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[69]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[70]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -5654,7 +5717,7 @@ func (x *TWAPData) String() string {
func (*TWAPData) ProtoMessage() {}
func (x *TWAPData) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[69]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[70]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -5667,7 +5730,7 @@ func (x *TWAPData) ProtoReflect() protoreflect.Message {
// Deprecated: Use TWAPData.ProtoReflect.Descriptor instead.
func (*TWAPData) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{69}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{70}
}
func (x *TWAPData) GetStart() int64 {
@@ -5709,7 +5772,7 @@ type Perps struct {
func (x *Perps) Reset() {
*x = Perps{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[70]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[71]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -5722,7 +5785,7 @@ func (x *Perps) String() string {
func (*Perps) ProtoMessage() {}
func (x *Perps) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[70]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[71]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -5735,7 +5798,7 @@ func (x *Perps) ProtoReflect() protoreflect.Message {
// Deprecated: Use Perps.ProtoReflect.Descriptor instead.
func (*Perps) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{70}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{71}
}
func (x *Perps) GetId() string {
@@ -5806,7 +5869,7 @@ type OrdersAtPrice struct {
func (x *OrdersAtPrice) Reset() {
*x = OrdersAtPrice{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[71]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[72]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -5819,7 +5882,7 @@ func (x *OrdersAtPrice) String() string {
func (*OrdersAtPrice) ProtoMessage() {}
func (x *OrdersAtPrice) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[71]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[72]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -5832,7 +5895,7 @@ func (x *OrdersAtPrice) ProtoReflect() protoreflect.Message {
// Deprecated: Use OrdersAtPrice.ProtoReflect.Descriptor instead.
func (*OrdersAtPrice) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{71}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{72}
}
func (x *OrdersAtPrice) GetPrice() string {
@@ -5861,7 +5924,7 @@ type PricedStopOrders struct {
func (x *PricedStopOrders) Reset() {
*x = PricedStopOrders{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[72]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[73]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -5874,7 +5937,7 @@ func (x *PricedStopOrders) String() string {
func (*PricedStopOrders) ProtoMessage() {}
func (x *PricedStopOrders) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[72]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[73]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -5887,7 +5950,7 @@ func (x *PricedStopOrders) ProtoReflect() protoreflect.Message {
// Deprecated: Use PricedStopOrders.ProtoReflect.Descriptor instead.
func (*PricedStopOrders) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{72}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{73}
}
func (x *PricedStopOrders) GetFallsBellow() []*OrdersAtPrice {
@@ -5917,7 +5980,7 @@ type TrailingStopOrders struct {
func (x *TrailingStopOrders) Reset() {
*x = TrailingStopOrders{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[73]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[74]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -5930,7 +5993,7 @@ func (x *TrailingStopOrders) String() string {
func (*TrailingStopOrders) ProtoMessage() {}
func (x *TrailingStopOrders) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[73]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[74]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -5943,7 +6006,7 @@ func (x *TrailingStopOrders) ProtoReflect() protoreflect.Message {
// Deprecated: Use TrailingStopOrders.ProtoReflect.Descriptor instead.
func (*TrailingStopOrders) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{73}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{74}
}
func (x *TrailingStopOrders) GetLastSeenPrice() string {
@@ -5979,7 +6042,7 @@ type OrdersAtOffset struct {
func (x *OrdersAtOffset) Reset() {
*x = OrdersAtOffset{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[74]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[75]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -5992,7 +6055,7 @@ func (x *OrdersAtOffset) String() string {
func (*OrdersAtOffset) ProtoMessage() {}
func (x *OrdersAtOffset) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[74]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[75]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6005,7 +6068,7 @@ func (x *OrdersAtOffset) ProtoReflect() protoreflect.Message {
// Deprecated: Use OrdersAtOffset.ProtoReflect.Descriptor instead.
func (*OrdersAtOffset) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{74}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{75}
}
func (x *OrdersAtOffset) GetOffset() string {
@@ -6034,7 +6097,7 @@ type OffsetsAtPrice struct {
func (x *OffsetsAtPrice) Reset() {
*x = OffsetsAtPrice{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[75]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[76]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -6047,7 +6110,7 @@ func (x *OffsetsAtPrice) String() string {
func (*OffsetsAtPrice) ProtoMessage() {}
func (x *OffsetsAtPrice) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[75]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[76]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6060,7 +6123,7 @@ func (x *OffsetsAtPrice) ProtoReflect() protoreflect.Message {
// Deprecated: Use OffsetsAtPrice.ProtoReflect.Descriptor instead.
func (*OffsetsAtPrice) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{75}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{76}
}
func (x *OffsetsAtPrice) GetPrice() string {
@@ -6090,7 +6153,7 @@ type StopOrders struct {
func (x *StopOrders) Reset() {
*x = StopOrders{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[76]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[77]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -6103,7 +6166,7 @@ func (x *StopOrders) String() string {
func (*StopOrders) ProtoMessage() {}
func (x *StopOrders) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[76]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[77]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6116,7 +6179,7 @@ func (x *StopOrders) ProtoReflect() protoreflect.Message {
// Deprecated: Use StopOrders.ProtoReflect.Descriptor instead.
func (*StopOrders) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{76}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{77}
}
func (x *StopOrders) GetStopOrders() []*v12.StopOrderEvent {
@@ -6151,7 +6214,7 @@ type PeggedOrders struct {
func (x *PeggedOrders) Reset() {
*x = PeggedOrders{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[77]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[78]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -6164,7 +6227,7 @@ func (x *PeggedOrders) String() string {
func (*PeggedOrders) ProtoMessage() {}
func (x *PeggedOrders) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[77]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[78]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6177,7 +6240,7 @@ func (x *PeggedOrders) ProtoReflect() protoreflect.Message {
// Deprecated: Use PeggedOrders.ProtoReflect.Descriptor instead.
func (*PeggedOrders) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{77}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{78}
}
func (x *PeggedOrders) GetParkedOrders() []*vega.Order {
@@ -6204,7 +6267,7 @@ type SLANetworkParams struct {
func (x *SLANetworkParams) Reset() {
*x = SLANetworkParams{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[78]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[79]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -6217,7 +6280,7 @@ func (x *SLANetworkParams) String() string {
func (*SLANetworkParams) ProtoMessage() {}
func (x *SLANetworkParams) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[78]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[79]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6230,7 +6293,7 @@ func (x *SLANetworkParams) ProtoReflect() protoreflect.Message {
// Deprecated: Use SLANetworkParams.ProtoReflect.Descriptor instead.
func (*SLANetworkParams) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{78}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{79}
}
func (x *SLANetworkParams) GetBondPenaltyFactor() string {
@@ -6298,7 +6361,7 @@ type ExecutionMarkets struct {
func (x *ExecutionMarkets) Reset() {
*x = ExecutionMarkets{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[79]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[80]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -6311,7 +6374,7 @@ func (x *ExecutionMarkets) String() string {
func (*ExecutionMarkets) ProtoMessage() {}
func (x *ExecutionMarkets) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[79]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[80]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6324,7 +6387,7 @@ func (x *ExecutionMarkets) ProtoReflect() protoreflect.Message {
// Deprecated: Use ExecutionMarkets.ProtoReflect.Descriptor instead.
func (*ExecutionMarkets) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{79}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{80}
}
func (x *ExecutionMarkets) GetMarkets() []*Market {
@@ -6381,7 +6444,7 @@ type Successors struct {
func (x *Successors) Reset() {
*x = Successors{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[80]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[81]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -6394,7 +6457,7 @@ func (x *Successors) String() string {
func (*Successors) ProtoMessage() {}
func (x *Successors) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[80]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[81]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6407,7 +6470,7 @@ func (x *Successors) ProtoReflect() protoreflect.Message {
// Deprecated: Use Successors.ProtoReflect.Descriptor instead.
func (*Successors) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{80}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{81}
}
func (x *Successors) GetParentMarket() string {
@@ -6443,7 +6506,7 @@ type Position struct {
func (x *Position) Reset() {
*x = Position{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[81]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[82]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -6456,7 +6519,7 @@ func (x *Position) String() string {
func (*Position) ProtoMessage() {}
func (x *Position) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[81]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[82]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6469,7 +6532,7 @@ func (x *Position) ProtoReflect() protoreflect.Message {
// Deprecated: Use Position.ProtoReflect.Descriptor instead.
func (*Position) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{81}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{82}
}
func (x *Position) GetPartyId() string {
@@ -6548,7 +6611,7 @@ type MarketPositions struct {
func (x *MarketPositions) Reset() {
*x = MarketPositions{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[82]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[83]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -6561,7 +6624,7 @@ func (x *MarketPositions) String() string {
func (*MarketPositions) ProtoMessage() {}
func (x *MarketPositions) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[82]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[83]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6574,7 +6637,7 @@ func (x *MarketPositions) ProtoReflect() protoreflect.Message {
// Deprecated: Use MarketPositions.ProtoReflect.Descriptor instead.
func (*MarketPositions) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{82}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{83}
}
func (x *MarketPositions) GetMarketId() string {
@@ -6612,7 +6675,7 @@ type PartyPositionStats struct {
func (x *PartyPositionStats) Reset() {
*x = PartyPositionStats{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[83]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[84]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -6625,7 +6688,7 @@ func (x *PartyPositionStats) String() string {
func (*PartyPositionStats) ProtoMessage() {}
func (x *PartyPositionStats) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[83]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[84]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6638,7 +6701,7 @@ func (x *PartyPositionStats) ProtoReflect() protoreflect.Message {
// Deprecated: Use PartyPositionStats.ProtoReflect.Descriptor instead.
func (*PartyPositionStats) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{83}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{84}
}
func (x *PartyPositionStats) GetParty() string {
@@ -6683,7 +6746,7 @@ type SettlementState struct {
func (x *SettlementState) Reset() {
*x = SettlementState{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[84]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[85]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -6696,7 +6759,7 @@ func (x *SettlementState) String() string {
func (*SettlementState) ProtoMessage() {}
func (x *SettlementState) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[84]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[85]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6709,7 +6772,7 @@ func (x *SettlementState) ProtoReflect() protoreflect.Message {
// Deprecated: Use SettlementState.ProtoReflect.Descriptor instead.
func (*SettlementState) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{84}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{85}
}
func (x *SettlementState) GetMarketId() string {
@@ -6752,7 +6815,7 @@ type LastSettledPosition struct {
func (x *LastSettledPosition) Reset() {
*x = LastSettledPosition{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[85]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[86]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -6765,7 +6828,7 @@ func (x *LastSettledPosition) String() string {
func (*LastSettledPosition) ProtoMessage() {}
func (x *LastSettledPosition) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[85]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[86]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6778,7 +6841,7 @@ func (x *LastSettledPosition) ProtoReflect() protoreflect.Message {
// Deprecated: Use LastSettledPosition.ProtoReflect.Descriptor instead.
func (*LastSettledPosition) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{85}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{86}
}
func (x *LastSettledPosition) GetParty() string {
@@ -6810,7 +6873,7 @@ type SettlementTrade struct {
func (x *SettlementTrade) Reset() {
*x = SettlementTrade{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[86]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[87]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -6823,7 +6886,7 @@ func (x *SettlementTrade) String() string {
func (*SettlementTrade) ProtoMessage() {}
func (x *SettlementTrade) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[86]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[87]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6836,7 +6899,7 @@ func (x *SettlementTrade) ProtoReflect() protoreflect.Message {
// Deprecated: Use SettlementTrade.ProtoReflect.Descriptor instead.
func (*SettlementTrade) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{86}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{87}
}
func (x *SettlementTrade) GetPartyId() string {
@@ -6890,7 +6953,7 @@ type AppState struct {
func (x *AppState) Reset() {
*x = AppState{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[87]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[88]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -6903,7 +6966,7 @@ func (x *AppState) String() string {
func (*AppState) ProtoMessage() {}
func (x *AppState) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[87]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[88]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -6916,7 +6979,7 @@ func (x *AppState) ProtoReflect() protoreflect.Message {
// Deprecated: Use AppState.ProtoReflect.Descriptor instead.
func (*AppState) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{87}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{88}
}
func (x *AppState) GetHeight() uint64 {
@@ -6982,7 +7045,7 @@ type EpochState struct {
func (x *EpochState) Reset() {
*x = EpochState{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[88]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[89]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -6995,7 +7058,7 @@ func (x *EpochState) String() string {
func (*EpochState) ProtoMessage() {}
func (x *EpochState) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[88]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[89]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7008,7 +7071,7 @@ func (x *EpochState) ProtoReflect() protoreflect.Message {
// Deprecated: Use EpochState.ProtoReflect.Descriptor instead.
func (*EpochState) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{88}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{89}
}
func (x *EpochState) GetSeq() uint64 {
@@ -7057,7 +7120,7 @@ type RewardsPendingPayouts struct {
func (x *RewardsPendingPayouts) Reset() {
*x = RewardsPendingPayouts{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[89]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[90]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7070,7 +7133,7 @@ func (x *RewardsPendingPayouts) String() string {
func (*RewardsPendingPayouts) ProtoMessage() {}
func (x *RewardsPendingPayouts) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[89]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[90]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7083,7 +7146,7 @@ func (x *RewardsPendingPayouts) ProtoReflect() protoreflect.Message {
// Deprecated: Use RewardsPendingPayouts.ProtoReflect.Descriptor instead.
func (*RewardsPendingPayouts) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{89}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{90}
}
func (x *RewardsPendingPayouts) GetScheduledRewardsPayout() []*ScheduledRewardsPayout {
@@ -7105,7 +7168,7 @@ type ScheduledRewardsPayout struct {
func (x *ScheduledRewardsPayout) Reset() {
*x = ScheduledRewardsPayout{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[90]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[91]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7118,7 +7181,7 @@ func (x *ScheduledRewardsPayout) String() string {
func (*ScheduledRewardsPayout) ProtoMessage() {}
func (x *ScheduledRewardsPayout) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[90]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[91]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7131,7 +7194,7 @@ func (x *ScheduledRewardsPayout) ProtoReflect() protoreflect.Message {
// Deprecated: Use ScheduledRewardsPayout.ProtoReflect.Descriptor instead.
func (*ScheduledRewardsPayout) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{90}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{91}
}
func (x *ScheduledRewardsPayout) GetPayoutTime() int64 {
@@ -7164,7 +7227,7 @@ type RewardsPayout struct {
func (x *RewardsPayout) Reset() {
*x = RewardsPayout{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[91]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[92]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7177,7 +7240,7 @@ func (x *RewardsPayout) String() string {
func (*RewardsPayout) ProtoMessage() {}
func (x *RewardsPayout) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[91]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[92]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7190,7 +7253,7 @@ func (x *RewardsPayout) ProtoReflect() protoreflect.Message {
// Deprecated: Use RewardsPayout.ProtoReflect.Descriptor instead.
func (*RewardsPayout) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{91}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{92}
}
func (x *RewardsPayout) GetFromAccount() string {
@@ -7247,7 +7310,7 @@ type RewardsPartyAmount struct {
func (x *RewardsPartyAmount) Reset() {
*x = RewardsPartyAmount{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[92]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[93]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7260,7 +7323,7 @@ func (x *RewardsPartyAmount) String() string {
func (*RewardsPartyAmount) ProtoMessage() {}
func (x *RewardsPartyAmount) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[92]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[93]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7273,7 +7336,7 @@ func (x *RewardsPartyAmount) ProtoReflect() protoreflect.Message {
// Deprecated: Use RewardsPartyAmount.ProtoReflect.Descriptor instead.
func (*RewardsPartyAmount) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{92}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{93}
}
func (x *RewardsPartyAmount) GetParty() string {
@@ -7316,7 +7379,7 @@ type LimitState struct {
func (x *LimitState) Reset() {
*x = LimitState{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[93]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[94]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7329,7 +7392,7 @@ func (x *LimitState) String() string {
func (*LimitState) ProtoMessage() {}
func (x *LimitState) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[93]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[94]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7342,7 +7405,7 @@ func (x *LimitState) ProtoReflect() protoreflect.Message {
// Deprecated: Use LimitState.ProtoReflect.Descriptor instead.
func (*LimitState) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{93}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{94}
}
func (x *LimitState) GetBlockCount() uint32 {
@@ -7433,7 +7496,7 @@ type VoteSpamPolicy struct {
func (x *VoteSpamPolicy) Reset() {
*x = VoteSpamPolicy{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[94]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[95]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7446,7 +7509,7 @@ func (x *VoteSpamPolicy) String() string {
func (*VoteSpamPolicy) ProtoMessage() {}
func (x *VoteSpamPolicy) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[94]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[95]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7459,7 +7522,7 @@ func (x *VoteSpamPolicy) ProtoReflect() protoreflect.Message {
// Deprecated: Use VoteSpamPolicy.ProtoReflect.Descriptor instead.
func (*VoteSpamPolicy) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{94}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{95}
}
func (x *VoteSpamPolicy) GetPartyToVote() []*PartyProposalVoteCount {
@@ -7531,7 +7594,7 @@ type PartyProposalVoteCount struct {
func (x *PartyProposalVoteCount) Reset() {
*x = PartyProposalVoteCount{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[95]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[96]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7544,7 +7607,7 @@ func (x *PartyProposalVoteCount) String() string {
func (*PartyProposalVoteCount) ProtoMessage() {}
func (x *PartyProposalVoteCount) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[95]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[96]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7557,7 +7620,7 @@ func (x *PartyProposalVoteCount) ProtoReflect() protoreflect.Message {
// Deprecated: Use PartyProposalVoteCount.ProtoReflect.Descriptor instead.
func (*PartyProposalVoteCount) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{95}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{96}
}
func (x *PartyProposalVoteCount) GetParty() string {
@@ -7593,7 +7656,7 @@ type PartyTokenBalance struct {
func (x *PartyTokenBalance) Reset() {
*x = PartyTokenBalance{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[96]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[97]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7606,7 +7669,7 @@ func (x *PartyTokenBalance) String() string {
func (*PartyTokenBalance) ProtoMessage() {}
func (x *PartyTokenBalance) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[96]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[97]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7619,7 +7682,7 @@ func (x *PartyTokenBalance) ProtoReflect() protoreflect.Message {
// Deprecated: Use PartyTokenBalance.ProtoReflect.Descriptor instead.
func (*PartyTokenBalance) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{96}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{97}
}
func (x *PartyTokenBalance) GetParty() string {
@@ -7648,7 +7711,7 @@ type BlockRejectStats struct {
func (x *BlockRejectStats) Reset() {
*x = BlockRejectStats{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[97]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[98]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7661,7 +7724,7 @@ func (x *BlockRejectStats) String() string {
func (*BlockRejectStats) ProtoMessage() {}
func (x *BlockRejectStats) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[97]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[98]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7674,7 +7737,7 @@ func (x *BlockRejectStats) ProtoReflect() protoreflect.Message {
// Deprecated: Use BlockRejectStats.ProtoReflect.Descriptor instead.
func (*BlockRejectStats) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{97}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{98}
}
func (x *BlockRejectStats) GetRejected() uint64 {
@@ -7703,7 +7766,7 @@ type SpamPartyTransactionCount struct {
func (x *SpamPartyTransactionCount) Reset() {
*x = SpamPartyTransactionCount{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[98]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[99]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7716,7 +7779,7 @@ func (x *SpamPartyTransactionCount) String() string {
func (*SpamPartyTransactionCount) ProtoMessage() {}
func (x *SpamPartyTransactionCount) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[98]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[99]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7729,7 +7792,7 @@ func (x *SpamPartyTransactionCount) ProtoReflect() protoreflect.Message {
// Deprecated: Use SpamPartyTransactionCount.ProtoReflect.Descriptor instead.
func (*SpamPartyTransactionCount) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{98}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{99}
}
func (x *SpamPartyTransactionCount) GetParty() string {
@@ -7761,7 +7824,7 @@ type SimpleSpamPolicy struct {
func (x *SimpleSpamPolicy) Reset() {
*x = SimpleSpamPolicy{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[99]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[100]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7774,7 +7837,7 @@ func (x *SimpleSpamPolicy) String() string {
func (*SimpleSpamPolicy) ProtoMessage() {}
func (x *SimpleSpamPolicy) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[99]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[100]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7787,7 +7850,7 @@ func (x *SimpleSpamPolicy) ProtoReflect() protoreflect.Message {
// Deprecated: Use SimpleSpamPolicy.ProtoReflect.Descriptor instead.
func (*SimpleSpamPolicy) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{99}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{100}
}
func (x *SimpleSpamPolicy) GetPolicyName() string {
@@ -7840,7 +7903,7 @@ type NotarySigs struct {
func (x *NotarySigs) Reset() {
*x = NotarySigs{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[100]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[101]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7853,7 +7916,7 @@ func (x *NotarySigs) String() string {
func (*NotarySigs) ProtoMessage() {}
func (x *NotarySigs) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[100]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[101]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7866,7 +7929,7 @@ func (x *NotarySigs) ProtoReflect() protoreflect.Message {
// Deprecated: Use NotarySigs.ProtoReflect.Descriptor instead.
func (*NotarySigs) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{100}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{101}
}
func (x *NotarySigs) GetId() string {
@@ -7915,7 +7978,7 @@ type Notary struct {
func (x *Notary) Reset() {
*x = Notary{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[101]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[102]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7928,7 +7991,7 @@ func (x *Notary) String() string {
func (*Notary) ProtoMessage() {}
func (x *Notary) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[101]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[102]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7941,7 +8004,7 @@ func (x *Notary) ProtoReflect() protoreflect.Message {
// Deprecated: Use Notary.ProtoReflect.Descriptor instead.
func (*Notary) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{101}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{102}
}
func (x *Notary) GetNotarySigs() []*NotarySigs {
@@ -7962,7 +8025,7 @@ type StakeVerifierDeposited struct {
func (x *StakeVerifierDeposited) Reset() {
*x = StakeVerifierDeposited{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[102]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[103]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -7975,7 +8038,7 @@ func (x *StakeVerifierDeposited) String() string {
func (*StakeVerifierDeposited) ProtoMessage() {}
func (x *StakeVerifierDeposited) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[102]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[103]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -7988,7 +8051,7 @@ func (x *StakeVerifierDeposited) ProtoReflect() protoreflect.Message {
// Deprecated: Use StakeVerifierDeposited.ProtoReflect.Descriptor instead.
func (*StakeVerifierDeposited) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{102}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{103}
}
func (x *StakeVerifierDeposited) GetPendingDeposited() []*StakeVerifierPending {
@@ -8009,7 +8072,7 @@ type StakeVerifierRemoved struct {
func (x *StakeVerifierRemoved) Reset() {
*x = StakeVerifierRemoved{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[103]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[104]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -8022,7 +8085,7 @@ func (x *StakeVerifierRemoved) String() string {
func (*StakeVerifierRemoved) ProtoMessage() {}
func (x *StakeVerifierRemoved) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[103]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[104]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8035,7 +8098,7 @@ func (x *StakeVerifierRemoved) ProtoReflect() protoreflect.Message {
// Deprecated: Use StakeVerifierRemoved.ProtoReflect.Descriptor instead.
func (*StakeVerifierRemoved) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{103}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{104}
}
func (x *StakeVerifierRemoved) GetPendingRemoved() []*StakeVerifierPending {
@@ -8063,7 +8126,7 @@ type StakeVerifierPending struct {
func (x *StakeVerifierPending) Reset() {
*x = StakeVerifierPending{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[104]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[105]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -8076,7 +8139,7 @@ func (x *StakeVerifierPending) String() string {
func (*StakeVerifierPending) ProtoMessage() {}
func (x *StakeVerifierPending) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[104]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[105]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8089,7 +8152,7 @@ func (x *StakeVerifierPending) ProtoReflect() protoreflect.Message {
// Deprecated: Use StakeVerifierPending.ProtoReflect.Descriptor instead.
func (*StakeVerifierPending) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{104}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{105}
}
func (x *StakeVerifierPending) GetEthereumAddress() string {
@@ -8160,7 +8223,7 @@ type EthOracleVerifierLastBlock struct {
func (x *EthOracleVerifierLastBlock) Reset() {
*x = EthOracleVerifierLastBlock{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[105]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[106]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -8173,7 +8236,7 @@ func (x *EthOracleVerifierLastBlock) String() string {
func (*EthOracleVerifierLastBlock) ProtoMessage() {}
func (x *EthOracleVerifierLastBlock) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[105]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[106]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8186,7 +8249,7 @@ func (x *EthOracleVerifierLastBlock) ProtoReflect() protoreflect.Message {
// Deprecated: Use EthOracleVerifierLastBlock.ProtoReflect.Descriptor instead.
func (*EthOracleVerifierLastBlock) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{105}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{106}
}
func (x *EthOracleVerifierLastBlock) GetBlockHeight() uint64 {
@@ -8214,7 +8277,7 @@ type EthContractCallResults struct {
func (x *EthContractCallResults) Reset() {
*x = EthContractCallResults{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[106]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[107]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -8227,7 +8290,7 @@ func (x *EthContractCallResults) String() string {
func (*EthContractCallResults) ProtoMessage() {}
func (x *EthContractCallResults) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[106]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[107]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8240,7 +8303,7 @@ func (x *EthContractCallResults) ProtoReflect() protoreflect.Message {
// Deprecated: Use EthContractCallResults.ProtoReflect.Descriptor instead.
func (*EthContractCallResults) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{106}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{107}
}
func (x *EthContractCallResults) GetPendingContractCallResult() []*EthContractCallResult {
@@ -8265,7 +8328,7 @@ type EthContractCallResult struct {
func (x *EthContractCallResult) Reset() {
*x = EthContractCallResult{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[107]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[108]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -8278,7 +8341,7 @@ func (x *EthContractCallResult) String() string {
func (*EthContractCallResult) ProtoMessage() {}
func (x *EthContractCallResult) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[107]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[108]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8291,7 +8354,7 @@ func (x *EthContractCallResult) ProtoReflect() protoreflect.Message {
// Deprecated: Use EthContractCallResult.ProtoReflect.Descriptor instead.
func (*EthContractCallResult) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{107}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{108}
}
func (x *EthContractCallResult) GetBlockHeight() uint64 {
@@ -8343,7 +8406,7 @@ type PendingKeyRotation struct {
func (x *PendingKeyRotation) Reset() {
*x = PendingKeyRotation{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[108]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[109]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -8356,7 +8419,7 @@ func (x *PendingKeyRotation) String() string {
func (*PendingKeyRotation) ProtoMessage() {}
func (x *PendingKeyRotation) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[108]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[109]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8369,7 +8432,7 @@ func (x *PendingKeyRotation) ProtoReflect() protoreflect.Message {
// Deprecated: Use PendingKeyRotation.ProtoReflect.Descriptor instead.
func (*PendingKeyRotation) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{108}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{109}
}
func (x *PendingKeyRotation) GetBlockHeight() uint64 {
@@ -8415,7 +8478,7 @@ type PendingEthereumKeyRotation struct {
func (x *PendingEthereumKeyRotation) Reset() {
*x = PendingEthereumKeyRotation{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[109]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[110]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -8428,7 +8491,7 @@ func (x *PendingEthereumKeyRotation) String() string {
func (*PendingEthereumKeyRotation) ProtoMessage() {}
func (x *PendingEthereumKeyRotation) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[109]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[110]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8441,7 +8504,7 @@ func (x *PendingEthereumKeyRotation) ProtoReflect() protoreflect.Message {
// Deprecated: Use PendingEthereumKeyRotation.ProtoReflect.Descriptor instead.
func (*PendingEthereumKeyRotation) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{109}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{110}
}
func (x *PendingEthereumKeyRotation) GetBlockHeight() uint64 {
@@ -8496,7 +8559,7 @@ type Topology struct {
func (x *Topology) Reset() {
*x = Topology{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[110]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[111]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -8509,7 +8572,7 @@ func (x *Topology) String() string {
func (*Topology) ProtoMessage() {}
func (x *Topology) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[110]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[111]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8522,7 +8585,7 @@ func (x *Topology) ProtoReflect() protoreflect.Message {
// Deprecated: Use Topology.ProtoReflect.Descriptor instead.
func (*Topology) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{110}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{111}
}
func (x *Topology) GetValidatorData() []*ValidatorState {
@@ -8586,7 +8649,7 @@ type ToplogySignatures struct {
func (x *ToplogySignatures) Reset() {
*x = ToplogySignatures{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[111]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[112]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -8599,7 +8662,7 @@ func (x *ToplogySignatures) String() string {
func (*ToplogySignatures) ProtoMessage() {}
func (x *ToplogySignatures) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[111]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[112]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8612,7 +8675,7 @@ func (x *ToplogySignatures) ProtoReflect() protoreflect.Message {
// Deprecated: Use ToplogySignatures.ProtoReflect.Descriptor instead.
func (*ToplogySignatures) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{111}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{112}
}
func (x *ToplogySignatures) GetPendingSignatures() []*PendingERC20MultisigControlSignature {
@@ -8644,7 +8707,7 @@ type PendingERC20MultisigControlSignature struct {
func (x *PendingERC20MultisigControlSignature) Reset() {
*x = PendingERC20MultisigControlSignature{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[112]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[113]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -8657,7 +8720,7 @@ func (x *PendingERC20MultisigControlSignature) String() string {
func (*PendingERC20MultisigControlSignature) ProtoMessage() {}
func (x *PendingERC20MultisigControlSignature) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[112]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[113]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8670,7 +8733,7 @@ func (x *PendingERC20MultisigControlSignature) ProtoReflect() protoreflect.Messa
// Deprecated: Use PendingERC20MultisigControlSignature.ProtoReflect.Descriptor instead.
func (*PendingERC20MultisigControlSignature) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{112}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{113}
}
func (x *PendingERC20MultisigControlSignature) GetNodeId() string {
@@ -8721,7 +8784,7 @@ type IssuedERC20MultisigControlSignature struct {
func (x *IssuedERC20MultisigControlSignature) Reset() {
*x = IssuedERC20MultisigControlSignature{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[113]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[114]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -8734,7 +8797,7 @@ func (x *IssuedERC20MultisigControlSignature) String() string {
func (*IssuedERC20MultisigControlSignature) ProtoMessage() {}
func (x *IssuedERC20MultisigControlSignature) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[113]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[114]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8747,7 +8810,7 @@ func (x *IssuedERC20MultisigControlSignature) ProtoReflect() protoreflect.Messag
// Deprecated: Use IssuedERC20MultisigControlSignature.ProtoReflect.Descriptor instead.
func (*IssuedERC20MultisigControlSignature) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{113}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{114}
}
func (x *IssuedERC20MultisigControlSignature) GetResourceId() string {
@@ -8790,7 +8853,7 @@ type ValidatorState struct {
func (x *ValidatorState) Reset() {
*x = ValidatorState{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[114]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[115]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -8803,7 +8866,7 @@ func (x *ValidatorState) String() string {
func (*ValidatorState) ProtoMessage() {}
func (x *ValidatorState) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[114]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[115]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8816,7 +8879,7 @@ func (x *ValidatorState) ProtoReflect() protoreflect.Message {
// Deprecated: Use ValidatorState.ProtoReflect.Descriptor instead.
func (*ValidatorState) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{114}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{115}
}
func (x *ValidatorState) GetValidatorUpdate() *v12.ValidatorUpdate {
@@ -8896,7 +8959,7 @@ type HeartbeatTracker struct {
func (x *HeartbeatTracker) Reset() {
*x = HeartbeatTracker{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[115]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[116]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -8909,7 +8972,7 @@ func (x *HeartbeatTracker) String() string {
func (*HeartbeatTracker) ProtoMessage() {}
func (x *HeartbeatTracker) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[115]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[116]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8922,7 +8985,7 @@ func (x *HeartbeatTracker) ProtoReflect() protoreflect.Message {
// Deprecated: Use HeartbeatTracker.ProtoReflect.Descriptor instead.
func (*HeartbeatTracker) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{115}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{116}
}
func (x *HeartbeatTracker) GetExpectedNextHash() string {
@@ -8970,7 +9033,7 @@ type PerformanceStats struct {
func (x *PerformanceStats) Reset() {
*x = PerformanceStats{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[116]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[117]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -8983,7 +9046,7 @@ func (x *PerformanceStats) String() string {
func (*PerformanceStats) ProtoMessage() {}
func (x *PerformanceStats) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[116]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[117]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -8996,7 +9059,7 @@ func (x *PerformanceStats) ProtoReflect() protoreflect.Message {
// Deprecated: Use PerformanceStats.ProtoReflect.Descriptor instead.
func (*PerformanceStats) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{116}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{117}
}
func (x *PerformanceStats) GetValidatorAddress() string {
@@ -9059,7 +9122,7 @@ type ValidatorPerformance struct {
func (x *ValidatorPerformance) Reset() {
*x = ValidatorPerformance{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[117]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[118]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -9072,7 +9135,7 @@ func (x *ValidatorPerformance) String() string {
func (*ValidatorPerformance) ProtoMessage() {}
func (x *ValidatorPerformance) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[117]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[118]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9085,7 +9148,7 @@ func (x *ValidatorPerformance) ProtoReflect() protoreflect.Message {
// Deprecated: Use ValidatorPerformance.ProtoReflect.Descriptor instead.
func (*ValidatorPerformance) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{117}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{118}
}
func (x *ValidatorPerformance) GetValidatorPerfStats() []*PerformanceStats {
@@ -9110,7 +9173,7 @@ type LiquidityParameters struct {
func (x *LiquidityParameters) Reset() {
*x = LiquidityParameters{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[118]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[119]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -9123,7 +9186,7 @@ func (x *LiquidityParameters) String() string {
func (*LiquidityParameters) ProtoMessage() {}
func (x *LiquidityParameters) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[118]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[119]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9136,7 +9199,7 @@ func (x *LiquidityParameters) ProtoReflect() protoreflect.Message {
// Deprecated: Use LiquidityParameters.ProtoReflect.Descriptor instead.
func (*LiquidityParameters) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{118}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{119}
}
func (x *LiquidityParameters) GetMaxFee() string {
@@ -9180,7 +9243,7 @@ type LiquidityPendingProvisions struct {
func (x *LiquidityPendingProvisions) Reset() {
*x = LiquidityPendingProvisions{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[119]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[120]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -9193,7 +9256,7 @@ func (x *LiquidityPendingProvisions) String() string {
func (*LiquidityPendingProvisions) ProtoMessage() {}
func (x *LiquidityPendingProvisions) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[119]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[120]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9206,7 +9269,7 @@ func (x *LiquidityPendingProvisions) ProtoReflect() protoreflect.Message {
// Deprecated: Use LiquidityPendingProvisions.ProtoReflect.Descriptor instead.
func (*LiquidityPendingProvisions) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{119}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{120}
}
func (x *LiquidityPendingProvisions) GetPendingProvisions() []string {
@@ -9236,7 +9299,7 @@ type LiquidityPartiesLiquidityOrders struct {
func (x *LiquidityPartiesLiquidityOrders) Reset() {
*x = LiquidityPartiesLiquidityOrders{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[120]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[121]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -9249,7 +9312,7 @@ func (x *LiquidityPartiesLiquidityOrders) String() string {
func (*LiquidityPartiesLiquidityOrders) ProtoMessage() {}
func (x *LiquidityPartiesLiquidityOrders) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[120]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[121]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9262,7 +9325,7 @@ func (x *LiquidityPartiesLiquidityOrders) ProtoReflect() protoreflect.Message {
// Deprecated: Use LiquidityPartiesLiquidityOrders.ProtoReflect.Descriptor instead.
func (*LiquidityPartiesLiquidityOrders) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{120}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{121}
}
func (x *LiquidityPartiesLiquidityOrders) GetPartyOrders() []*PartyOrders {
@@ -9291,7 +9354,7 @@ type PartyOrders struct {
func (x *PartyOrders) Reset() {
*x = PartyOrders{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[121]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[122]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -9304,7 +9367,7 @@ func (x *PartyOrders) String() string {
func (*PartyOrders) ProtoMessage() {}
func (x *PartyOrders) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[121]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[122]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9317,7 +9380,7 @@ func (x *PartyOrders) ProtoReflect() protoreflect.Message {
// Deprecated: Use PartyOrders.ProtoReflect.Descriptor instead.
func (*PartyOrders) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{121}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{122}
}
func (x *PartyOrders) GetParty() string {
@@ -9347,7 +9410,7 @@ type LiquidityPartiesOrders struct {
func (x *LiquidityPartiesOrders) Reset() {
*x = LiquidityPartiesOrders{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[122]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[123]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -9360,7 +9423,7 @@ func (x *LiquidityPartiesOrders) String() string {
func (*LiquidityPartiesOrders) ProtoMessage() {}
func (x *LiquidityPartiesOrders) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[122]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[123]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9373,7 +9436,7 @@ func (x *LiquidityPartiesOrders) ProtoReflect() protoreflect.Message {
// Deprecated: Use LiquidityPartiesOrders.ProtoReflect.Descriptor instead.
func (*LiquidityPartiesOrders) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{122}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{123}
}
func (x *LiquidityPartiesOrders) GetPartyOrders() []*PartyOrders {
@@ -9403,7 +9466,7 @@ type LiquidityProvisions struct {
func (x *LiquidityProvisions) Reset() {
*x = LiquidityProvisions{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[123]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[124]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -9416,7 +9479,7 @@ func (x *LiquidityProvisions) String() string {
func (*LiquidityProvisions) ProtoMessage() {}
func (x *LiquidityProvisions) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[123]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[124]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9429,7 +9492,7 @@ func (x *LiquidityProvisions) ProtoReflect() protoreflect.Message {
// Deprecated: Use LiquidityProvisions.ProtoReflect.Descriptor instead.
func (*LiquidityProvisions) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{123}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{124}
}
func (x *LiquidityProvisions) GetLiquidityProvisions() []*vega.LiquidityProvision {
@@ -9459,7 +9522,7 @@ type LiquidityScores struct {
func (x *LiquidityScores) Reset() {
*x = LiquidityScores{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[124]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[125]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -9472,7 +9535,7 @@ func (x *LiquidityScores) String() string {
func (*LiquidityScores) ProtoMessage() {}
func (x *LiquidityScores) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[124]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[125]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9485,7 +9548,7 @@ func (x *LiquidityScores) ProtoReflect() protoreflect.Message {
// Deprecated: Use LiquidityScores.ProtoReflect.Descriptor instead.
func (*LiquidityScores) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{124}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{125}
}
func (x *LiquidityScores) GetRunningAverageCounter() int32 {
@@ -9521,7 +9584,7 @@ type LiquidityScore struct {
func (x *LiquidityScore) Reset() {
*x = LiquidityScore{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[125]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[126]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -9534,7 +9597,7 @@ func (x *LiquidityScore) String() string {
func (*LiquidityScore) ProtoMessage() {}
func (x *LiquidityScore) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[125]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[126]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9547,7 +9610,7 @@ func (x *LiquidityScore) ProtoReflect() protoreflect.Message {
// Deprecated: Use LiquidityScore.ProtoReflect.Descriptor instead.
func (*LiquidityScore) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{125}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{126}
}
func (x *LiquidityScore) GetScore() string {
@@ -9584,7 +9647,7 @@ type LiquidityV2Parameters struct {
func (x *LiquidityV2Parameters) Reset() {
*x = LiquidityV2Parameters{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[126]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[127]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -9597,7 +9660,7 @@ func (x *LiquidityV2Parameters) String() string {
func (*LiquidityV2Parameters) ProtoMessage() {}
func (x *LiquidityV2Parameters) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[126]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[127]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9610,7 +9673,7 @@ func (x *LiquidityV2Parameters) ProtoReflect() protoreflect.Message {
// Deprecated: Use LiquidityV2Parameters.ProtoReflect.Descriptor instead.
func (*LiquidityV2Parameters) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{126}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{127}
}
func (x *LiquidityV2Parameters) GetMarketId() string {
@@ -9661,7 +9724,7 @@ type LiquidityV2PaidFeesStats struct {
func (x *LiquidityV2PaidFeesStats) Reset() {
*x = LiquidityV2PaidFeesStats{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[127]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[128]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -9674,7 +9737,7 @@ func (x *LiquidityV2PaidFeesStats) String() string {
func (*LiquidityV2PaidFeesStats) ProtoMessage() {}
func (x *LiquidityV2PaidFeesStats) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[127]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[128]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9687,7 +9750,7 @@ func (x *LiquidityV2PaidFeesStats) ProtoReflect() protoreflect.Message {
// Deprecated: Use LiquidityV2PaidFeesStats.ProtoReflect.Descriptor instead.
func (*LiquidityV2PaidFeesStats) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{127}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{128}
}
func (x *LiquidityV2PaidFeesStats) GetMarketId() string {
@@ -9717,7 +9780,7 @@ type LiquidityV2Provisions struct {
func (x *LiquidityV2Provisions) Reset() {
*x = LiquidityV2Provisions{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[128]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[129]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -9730,7 +9793,7 @@ func (x *LiquidityV2Provisions) String() string {
func (*LiquidityV2Provisions) ProtoMessage() {}
func (x *LiquidityV2Provisions) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[128]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[129]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9743,7 +9806,7 @@ func (x *LiquidityV2Provisions) ProtoReflect() protoreflect.Message {
// Deprecated: Use LiquidityV2Provisions.ProtoReflect.Descriptor instead.
func (*LiquidityV2Provisions) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{128}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{129}
}
func (x *LiquidityV2Provisions) GetMarketId() string {
@@ -9773,7 +9836,7 @@ type LiquidityV2PendingProvisions struct {
func (x *LiquidityV2PendingProvisions) Reset() {
*x = LiquidityV2PendingProvisions{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[129]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[130]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -9786,7 +9849,7 @@ func (x *LiquidityV2PendingProvisions) String() string {
func (*LiquidityV2PendingProvisions) ProtoMessage() {}
func (x *LiquidityV2PendingProvisions) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[129]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[130]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9799,7 +9862,7 @@ func (x *LiquidityV2PendingProvisions) ProtoReflect() protoreflect.Message {
// Deprecated: Use LiquidityV2PendingProvisions.ProtoReflect.Descriptor instead.
func (*LiquidityV2PendingProvisions) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{129}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{130}
}
func (x *LiquidityV2PendingProvisions) GetMarketId() string {
@@ -9830,7 +9893,7 @@ type LiquidityV2Performances struct {
func (x *LiquidityV2Performances) Reset() {
*x = LiquidityV2Performances{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[130]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[131]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -9843,7 +9906,7 @@ func (x *LiquidityV2Performances) String() string {
func (*LiquidityV2Performances) ProtoMessage() {}
func (x *LiquidityV2Performances) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[130]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[131]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9856,7 +9919,7 @@ func (x *LiquidityV2Performances) ProtoReflect() protoreflect.Message {
// Deprecated: Use LiquidityV2Performances.ProtoReflect.Descriptor instead.
func (*LiquidityV2Performances) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{130}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{131}
}
func (x *LiquidityV2Performances) GetMarketId() string {
@@ -9901,7 +9964,7 @@ type LiquidityV2PerformancePerParty struct {
func (x *LiquidityV2PerformancePerParty) Reset() {
*x = LiquidityV2PerformancePerParty{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[131]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[132]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -9914,7 +9977,7 @@ func (x *LiquidityV2PerformancePerParty) String() string {
func (*LiquidityV2PerformancePerParty) ProtoMessage() {}
func (x *LiquidityV2PerformancePerParty) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[131]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[132]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -9927,7 +9990,7 @@ func (x *LiquidityV2PerformancePerParty) ProtoReflect() protoreflect.Message {
// Deprecated: Use LiquidityV2PerformancePerParty.ProtoReflect.Descriptor instead.
func (*LiquidityV2PerformancePerParty) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{131}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{132}
}
func (x *LiquidityV2PerformancePerParty) GetParty() string {
@@ -10023,7 +10086,7 @@ type LiquidityV2Scores struct {
func (x *LiquidityV2Scores) Reset() {
*x = LiquidityV2Scores{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[132]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[133]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -10036,7 +10099,7 @@ func (x *LiquidityV2Scores) String() string {
func (*LiquidityV2Scores) ProtoMessage() {}
func (x *LiquidityV2Scores) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[132]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[133]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10049,7 +10112,7 @@ func (x *LiquidityV2Scores) ProtoReflect() protoreflect.Message {
// Deprecated: Use LiquidityV2Scores.ProtoReflect.Descriptor instead.
func (*LiquidityV2Scores) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{132}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{133}
}
func (x *LiquidityV2Scores) GetMarketId() string {
@@ -10102,7 +10165,7 @@ type LiquidityV2Supplied struct {
func (x *LiquidityV2Supplied) Reset() {
*x = LiquidityV2Supplied{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[133]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[134]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -10115,7 +10178,7 @@ func (x *LiquidityV2Supplied) String() string {
func (*LiquidityV2Supplied) ProtoMessage() {}
func (x *LiquidityV2Supplied) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[133]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[134]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10128,7 +10191,7 @@ func (x *LiquidityV2Supplied) ProtoReflect() protoreflect.Message {
// Deprecated: Use LiquidityV2Supplied.ProtoReflect.Descriptor instead.
func (*LiquidityV2Supplied) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{133}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{134}
}
func (x *LiquidityV2Supplied) GetMarketId() string {
@@ -10172,7 +10235,7 @@ type FloatingPointConsensus struct {
func (x *FloatingPointConsensus) Reset() {
*x = FloatingPointConsensus{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[134]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[135]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -10185,7 +10248,7 @@ func (x *FloatingPointConsensus) String() string {
func (*FloatingPointConsensus) ProtoMessage() {}
func (x *FloatingPointConsensus) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[134]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[135]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10198,7 +10261,7 @@ func (x *FloatingPointConsensus) ProtoReflect() protoreflect.Message {
// Deprecated: Use FloatingPointConsensus.ProtoReflect.Descriptor instead.
func (*FloatingPointConsensus) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{134}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{135}
}
func (x *FloatingPointConsensus) GetNextTimeTrigger() []*NextTimeTrigger {
@@ -10230,7 +10293,7 @@ type StateVarInternalState struct {
func (x *StateVarInternalState) Reset() {
*x = StateVarInternalState{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[135]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[136]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -10243,7 +10306,7 @@ func (x *StateVarInternalState) String() string {
func (*StateVarInternalState) ProtoMessage() {}
func (x *StateVarInternalState) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[135]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[136]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10256,7 +10319,7 @@ func (x *StateVarInternalState) ProtoReflect() protoreflect.Message {
// Deprecated: Use StateVarInternalState.ProtoReflect.Descriptor instead.
func (*StateVarInternalState) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{135}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{136}
}
func (x *StateVarInternalState) GetId() string {
@@ -10306,7 +10369,7 @@ type FloatingPointValidatorResult struct {
func (x *FloatingPointValidatorResult) Reset() {
*x = FloatingPointValidatorResult{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[136]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[137]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -10319,7 +10382,7 @@ func (x *FloatingPointValidatorResult) String() string {
func (*FloatingPointValidatorResult) ProtoMessage() {}
func (x *FloatingPointValidatorResult) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[136]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[137]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10332,7 +10395,7 @@ func (x *FloatingPointValidatorResult) ProtoReflect() protoreflect.Message {
// Deprecated: Use FloatingPointValidatorResult.ProtoReflect.Descriptor instead.
func (*FloatingPointValidatorResult) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{136}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{137}
}
func (x *FloatingPointValidatorResult) GetId() string {
@@ -10363,7 +10426,7 @@ type NextTimeTrigger struct {
func (x *NextTimeTrigger) Reset() {
*x = NextTimeTrigger{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[137]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[138]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -10376,7 +10439,7 @@ func (x *NextTimeTrigger) String() string {
func (*NextTimeTrigger) ProtoMessage() {}
func (x *NextTimeTrigger) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[137]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[138]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10389,7 +10452,7 @@ func (x *NextTimeTrigger) ProtoReflect() protoreflect.Message {
// Deprecated: Use NextTimeTrigger.ProtoReflect.Descriptor instead.
func (*NextTimeTrigger) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{137}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{138}
}
func (x *NextTimeTrigger) GetAsset() string {
@@ -10432,7 +10495,7 @@ type MarketTracker struct {
func (x *MarketTracker) Reset() {
*x = MarketTracker{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[138]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[139]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -10445,7 +10508,7 @@ func (x *MarketTracker) String() string {
func (*MarketTracker) ProtoMessage() {}
func (x *MarketTracker) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[138]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[139]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10458,7 +10521,7 @@ func (x *MarketTracker) ProtoReflect() protoreflect.Message {
// Deprecated: Use MarketTracker.ProtoReflect.Descriptor instead.
func (*MarketTracker) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{138}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{139}
}
func (x *MarketTracker) GetMarketActivity() []*v11.MarketActivityTracker {
@@ -10487,7 +10550,7 @@ type SignerEventsPerAddress struct {
func (x *SignerEventsPerAddress) Reset() {
*x = SignerEventsPerAddress{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[139]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[140]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -10500,7 +10563,7 @@ func (x *SignerEventsPerAddress) String() string {
func (*SignerEventsPerAddress) ProtoMessage() {}
func (x *SignerEventsPerAddress) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[139]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[140]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10513,7 +10576,7 @@ func (x *SignerEventsPerAddress) ProtoReflect() protoreflect.Message {
// Deprecated: Use SignerEventsPerAddress.ProtoReflect.Descriptor instead.
func (*SignerEventsPerAddress) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{139}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{140}
}
func (x *SignerEventsPerAddress) GetAddress() string {
@@ -10544,7 +10607,7 @@ type ERC20MultiSigTopologyVerified struct {
func (x *ERC20MultiSigTopologyVerified) Reset() {
*x = ERC20MultiSigTopologyVerified{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[140]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[141]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -10557,7 +10620,7 @@ func (x *ERC20MultiSigTopologyVerified) String() string {
func (*ERC20MultiSigTopologyVerified) ProtoMessage() {}
func (x *ERC20MultiSigTopologyVerified) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[140]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[141]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10570,7 +10633,7 @@ func (x *ERC20MultiSigTopologyVerified) ProtoReflect() protoreflect.Message {
// Deprecated: Use ERC20MultiSigTopologyVerified.ProtoReflect.Descriptor instead.
func (*ERC20MultiSigTopologyVerified) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{140}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{141}
}
func (x *ERC20MultiSigTopologyVerified) GetSigners() []string {
@@ -10615,7 +10678,7 @@ type ERC20MultiSigTopologyPending struct {
func (x *ERC20MultiSigTopologyPending) Reset() {
*x = ERC20MultiSigTopologyPending{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[141]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[142]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -10628,7 +10691,7 @@ func (x *ERC20MultiSigTopologyPending) String() string {
func (*ERC20MultiSigTopologyPending) ProtoMessage() {}
func (x *ERC20MultiSigTopologyPending) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[141]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[142]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10641,7 +10704,7 @@ func (x *ERC20MultiSigTopologyPending) ProtoReflect() protoreflect.Message {
// Deprecated: Use ERC20MultiSigTopologyPending.ProtoReflect.Descriptor instead.
func (*ERC20MultiSigTopologyPending) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{141}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{142}
}
func (x *ERC20MultiSigTopologyPending) GetPendingSigners() []*v12.ERC20MultiSigSignerEvent {
@@ -10691,7 +10754,7 @@ type ProofOfWork struct {
func (x *ProofOfWork) Reset() {
*x = ProofOfWork{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[142]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[143]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -10704,7 +10767,7 @@ func (x *ProofOfWork) String() string {
func (*ProofOfWork) ProtoMessage() {}
func (x *ProofOfWork) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[142]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[143]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10717,7 +10780,7 @@ func (x *ProofOfWork) ProtoReflect() protoreflect.Message {
// Deprecated: Use ProofOfWork.ProtoReflect.Descriptor instead.
func (*ProofOfWork) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{142}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{143}
}
func (x *ProofOfWork) GetBlockHeight() []uint64 {
@@ -10795,7 +10858,7 @@ type BannedParty struct {
func (x *BannedParty) Reset() {
*x = BannedParty{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[143]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[144]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -10808,7 +10871,7 @@ func (x *BannedParty) String() string {
func (*BannedParty) ProtoMessage() {}
func (x *BannedParty) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[143]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[144]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10821,7 +10884,7 @@ func (x *BannedParty) ProtoReflect() protoreflect.Message {
// Deprecated: Use BannedParty.ProtoReflect.Descriptor instead.
func (*BannedParty) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{143}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{144}
}
func (x *BannedParty) GetParty() string {
@@ -10855,7 +10918,7 @@ type ProofOfWorkParams struct {
func (x *ProofOfWorkParams) Reset() {
*x = ProofOfWorkParams{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[144]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[145]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -10868,7 +10931,7 @@ func (x *ProofOfWorkParams) String() string {
func (*ProofOfWorkParams) ProtoMessage() {}
func (x *ProofOfWorkParams) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[144]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[145]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10881,7 +10944,7 @@ func (x *ProofOfWorkParams) ProtoReflect() protoreflect.Message {
// Deprecated: Use ProofOfWorkParams.ProtoReflect.Descriptor instead.
func (*ProofOfWorkParams) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{144}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{145}
}
func (x *ProofOfWorkParams) GetSpamPowNumberOfPastBlocks() uint64 {
@@ -10944,7 +11007,7 @@ type ProofOfWorkState struct {
func (x *ProofOfWorkState) Reset() {
*x = ProofOfWorkState{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[145]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[146]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -10957,7 +11020,7 @@ func (x *ProofOfWorkState) String() string {
func (*ProofOfWorkState) ProtoMessage() {}
func (x *ProofOfWorkState) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[145]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[146]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -10970,7 +11033,7 @@ func (x *ProofOfWorkState) ProtoReflect() protoreflect.Message {
// Deprecated: Use ProofOfWorkState.ProtoReflect.Descriptor instead.
func (*ProofOfWorkState) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{145}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{146}
}
func (x *ProofOfWorkState) GetPowState() []*ProofOfWorkBlockState {
@@ -10992,7 +11055,7 @@ type ProofOfWorkBlockState struct {
func (x *ProofOfWorkBlockState) Reset() {
*x = ProofOfWorkBlockState{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[146]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[147]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -11005,7 +11068,7 @@ func (x *ProofOfWorkBlockState) String() string {
func (*ProofOfWorkBlockState) ProtoMessage() {}
func (x *ProofOfWorkBlockState) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[146]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[147]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11018,7 +11081,7 @@ func (x *ProofOfWorkBlockState) ProtoReflect() protoreflect.Message {
// Deprecated: Use ProofOfWorkBlockState.ProtoReflect.Descriptor instead.
func (*ProofOfWorkBlockState) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{146}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{147}
}
func (x *ProofOfWorkBlockState) GetBlockHeight() uint64 {
@@ -11048,7 +11111,7 @@ type ProofOfWorkPartyStateForBlock struct {
func (x *ProofOfWorkPartyStateForBlock) Reset() {
*x = ProofOfWorkPartyStateForBlock{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[147]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[148]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -11061,7 +11124,7 @@ func (x *ProofOfWorkPartyStateForBlock) String() string {
func (*ProofOfWorkPartyStateForBlock) ProtoMessage() {}
func (x *ProofOfWorkPartyStateForBlock) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[147]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[148]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11074,7 +11137,7 @@ func (x *ProofOfWorkPartyStateForBlock) ProtoReflect() protoreflect.Message {
// Deprecated: Use ProofOfWorkPartyStateForBlock.ProtoReflect.Descriptor instead.
func (*ProofOfWorkPartyStateForBlock) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{147}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{148}
}
func (x *ProofOfWorkPartyStateForBlock) GetParty() string {
@@ -11110,7 +11173,7 @@ type TransactionsAtHeight struct {
func (x *TransactionsAtHeight) Reset() {
*x = TransactionsAtHeight{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[148]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[149]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -11123,7 +11186,7 @@ func (x *TransactionsAtHeight) String() string {
func (*TransactionsAtHeight) ProtoMessage() {}
func (x *TransactionsAtHeight) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[148]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[149]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11136,7 +11199,7 @@ func (x *TransactionsAtHeight) ProtoReflect() protoreflect.Message {
// Deprecated: Use TransactionsAtHeight.ProtoReflect.Descriptor instead.
func (*TransactionsAtHeight) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{148}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{149}
}
func (x *TransactionsAtHeight) GetHeight() uint64 {
@@ -11165,7 +11228,7 @@ type NonceRef struct {
func (x *NonceRef) Reset() {
*x = NonceRef{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[149]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[150]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -11178,7 +11241,7 @@ func (x *NonceRef) String() string {
func (*NonceRef) ProtoMessage() {}
func (x *NonceRef) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[149]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[150]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11191,7 +11254,7 @@ func (x *NonceRef) ProtoReflect() protoreflect.Message {
// Deprecated: Use NonceRef.ProtoReflect.Descriptor instead.
func (*NonceRef) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{149}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{150}
}
func (x *NonceRef) GetParty() string {
@@ -11220,7 +11283,7 @@ type NonceRefsAtHeight struct {
func (x *NonceRefsAtHeight) Reset() {
*x = NonceRefsAtHeight{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[150]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[151]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -11233,7 +11296,7 @@ func (x *NonceRefsAtHeight) String() string {
func (*NonceRefsAtHeight) ProtoMessage() {}
func (x *NonceRefsAtHeight) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[150]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[151]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11246,7 +11309,7 @@ func (x *NonceRefsAtHeight) ProtoReflect() protoreflect.Message {
// Deprecated: Use NonceRefsAtHeight.ProtoReflect.Descriptor instead.
func (*NonceRefsAtHeight) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{150}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{151}
}
func (x *NonceRefsAtHeight) GetHeight() uint64 {
@@ -11275,7 +11338,7 @@ type ProtocolUpgradeProposals struct {
func (x *ProtocolUpgradeProposals) Reset() {
*x = ProtocolUpgradeProposals{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[151]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[152]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -11288,7 +11351,7 @@ func (x *ProtocolUpgradeProposals) String() string {
func (*ProtocolUpgradeProposals) ProtoMessage() {}
func (x *ProtocolUpgradeProposals) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[151]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[152]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11301,7 +11364,7 @@ func (x *ProtocolUpgradeProposals) ProtoReflect() protoreflect.Message {
// Deprecated: Use ProtocolUpgradeProposals.ProtoReflect.Descriptor instead.
func (*ProtocolUpgradeProposals) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{151}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{152}
}
func (x *ProtocolUpgradeProposals) GetActiveProposals() []*v12.ProtocolUpgradeEvent {
@@ -11332,7 +11395,7 @@ type AcceptedProtocolUpgradeProposal struct {
func (x *AcceptedProtocolUpgradeProposal) Reset() {
*x = AcceptedProtocolUpgradeProposal{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[152]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[153]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -11345,7 +11408,7 @@ func (x *AcceptedProtocolUpgradeProposal) String() string {
func (*AcceptedProtocolUpgradeProposal) ProtoMessage() {}
func (x *AcceptedProtocolUpgradeProposal) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[152]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[153]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11358,7 +11421,7 @@ func (x *AcceptedProtocolUpgradeProposal) ProtoReflect() protoreflect.Message {
// Deprecated: Use AcceptedProtocolUpgradeProposal.ProtoReflect.Descriptor instead.
func (*AcceptedProtocolUpgradeProposal) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{152}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{153}
}
func (x *AcceptedProtocolUpgradeProposal) GetUpgradeBlockHeight() uint64 {
@@ -11386,7 +11449,7 @@ type Teams struct {
func (x *Teams) Reset() {
*x = Teams{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[153]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[154]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -11399,7 +11462,7 @@ func (x *Teams) String() string {
func (*Teams) ProtoMessage() {}
func (x *Teams) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[153]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[154]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11412,7 +11475,7 @@ func (x *Teams) ProtoReflect() protoreflect.Message {
// Deprecated: Use Teams.ProtoReflect.Descriptor instead.
func (*Teams) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{153}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{154}
}
func (x *Teams) GetTeams() []*Team {
@@ -11440,7 +11503,7 @@ type Team struct {
func (x *Team) Reset() {
*x = Team{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[154]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[155]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -11453,7 +11516,7 @@ func (x *Team) String() string {
func (*Team) ProtoMessage() {}
func (x *Team) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[154]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[155]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11466,7 +11529,7 @@ func (x *Team) ProtoReflect() protoreflect.Message {
// Deprecated: Use Team.ProtoReflect.Descriptor instead.
func (*Team) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{154}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{155}
}
func (x *Team) GetId() string {
@@ -11538,7 +11601,7 @@ type Membership struct {
func (x *Membership) Reset() {
*x = Membership{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[155]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[156]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -11551,7 +11614,7 @@ func (x *Membership) String() string {
func (*Membership) ProtoMessage() {}
func (x *Membership) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[155]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[156]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11564,7 +11627,7 @@ func (x *Membership) ProtoReflect() protoreflect.Message {
// Deprecated: Use Membership.ProtoReflect.Descriptor instead.
func (*Membership) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{155}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{156}
}
func (x *Membership) GetPartyId() string {
@@ -11599,7 +11662,7 @@ type TeamSwitches struct {
func (x *TeamSwitches) Reset() {
*x = TeamSwitches{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[156]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[157]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -11612,7 +11675,7 @@ func (x *TeamSwitches) String() string {
func (*TeamSwitches) ProtoMessage() {}
func (x *TeamSwitches) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[156]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[157]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11625,7 +11688,7 @@ func (x *TeamSwitches) ProtoReflect() protoreflect.Message {
// Deprecated: Use TeamSwitches.ProtoReflect.Descriptor instead.
func (*TeamSwitches) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{156}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{157}
}
func (x *TeamSwitches) GetTeamSwitches() []*TeamSwitch {
@@ -11648,7 +11711,7 @@ type TeamSwitch struct {
func (x *TeamSwitch) Reset() {
*x = TeamSwitch{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[157]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[158]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -11661,7 +11724,7 @@ func (x *TeamSwitch) String() string {
func (*TeamSwitch) ProtoMessage() {}
func (x *TeamSwitch) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[157]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[158]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11674,7 +11737,7 @@ func (x *TeamSwitch) ProtoReflect() protoreflect.Message {
// Deprecated: Use TeamSwitch.ProtoReflect.Descriptor instead.
func (*TeamSwitch) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{157}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{158}
}
func (x *TeamSwitch) GetFromTeamId() string {
@@ -11709,7 +11772,7 @@ type Vesting struct {
func (x *Vesting) Reset() {
*x = Vesting{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[158]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[159]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -11722,7 +11785,7 @@ func (x *Vesting) String() string {
func (*Vesting) ProtoMessage() {}
func (x *Vesting) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[158]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[159]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11735,7 +11798,7 @@ func (x *Vesting) ProtoReflect() protoreflect.Message {
// Deprecated: Use Vesting.ProtoReflect.Descriptor instead.
func (*Vesting) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{158}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{159}
}
func (x *Vesting) GetPartiesReward() []*PartyReward {
@@ -11758,7 +11821,7 @@ type PartyReward struct {
func (x *PartyReward) Reset() {
*x = PartyReward{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[159]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[160]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -11771,7 +11834,7 @@ func (x *PartyReward) String() string {
func (*PartyReward) ProtoMessage() {}
func (x *PartyReward) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[159]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[160]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11784,7 +11847,7 @@ func (x *PartyReward) ProtoReflect() protoreflect.Message {
// Deprecated: Use PartyReward.ProtoReflect.Descriptor instead.
func (*PartyReward) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{159}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{160}
}
func (x *PartyReward) GetParty() string {
@@ -11824,7 +11887,7 @@ type ReferralProgramData struct {
func (x *ReferralProgramData) Reset() {
*x = ReferralProgramData{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[160]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[161]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -11837,7 +11900,7 @@ func (x *ReferralProgramData) String() string {
func (*ReferralProgramData) ProtoMessage() {}
func (x *ReferralProgramData) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[160]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[161]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11850,7 +11913,7 @@ func (x *ReferralProgramData) ProtoReflect() protoreflect.Message {
// Deprecated: Use ReferralProgramData.ProtoReflect.Descriptor instead.
func (*ReferralProgramData) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{160}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{161}
}
func (x *ReferralProgramData) GetFactorByReferee() []*FactorByReferee {
@@ -11914,7 +11977,7 @@ type ReferralSet struct {
func (x *ReferralSet) Reset() {
*x = ReferralSet{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[161]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[162]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -11927,7 +11990,7 @@ func (x *ReferralSet) String() string {
func (*ReferralSet) ProtoMessage() {}
func (x *ReferralSet) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[161]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[162]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -11940,7 +12003,7 @@ func (x *ReferralSet) ProtoReflect() protoreflect.Message {
// Deprecated: Use ReferralSet.ProtoReflect.Descriptor instead.
func (*ReferralSet) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{161}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{162}
}
func (x *ReferralSet) GetId() string {
@@ -12018,7 +12081,7 @@ type RunningVolume struct {
func (x *RunningVolume) Reset() {
*x = RunningVolume{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[162]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[163]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -12031,7 +12094,7 @@ func (x *RunningVolume) String() string {
func (*RunningVolume) ProtoMessage() {}
func (x *RunningVolume) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[162]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[163]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -12044,7 +12107,7 @@ func (x *RunningVolume) ProtoReflect() protoreflect.Message {
// Deprecated: Use RunningVolume.ProtoReflect.Descriptor instead.
func (*RunningVolume) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{162}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{163}
}
func (x *RunningVolume) GetEpoch() uint64 {
@@ -12074,7 +12137,7 @@ type FactorByReferee struct {
func (x *FactorByReferee) Reset() {
*x = FactorByReferee{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[163]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[164]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -12087,7 +12150,7 @@ func (x *FactorByReferee) String() string {
func (*FactorByReferee) ProtoMessage() {}
func (x *FactorByReferee) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[163]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[164]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -12100,7 +12163,7 @@ func (x *FactorByReferee) ProtoReflect() protoreflect.Message {
// Deprecated: Use FactorByReferee.ProtoReflect.Descriptor instead.
func (*FactorByReferee) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{163}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{164}
}
func (x *FactorByReferee) GetParty() string {
@@ -12136,7 +12199,7 @@ type AssetLocked struct {
func (x *AssetLocked) Reset() {
*x = AssetLocked{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[164]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[165]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -12149,7 +12212,7 @@ func (x *AssetLocked) String() string {
func (*AssetLocked) ProtoMessage() {}
func (x *AssetLocked) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[164]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[165]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -12162,7 +12225,7 @@ func (x *AssetLocked) ProtoReflect() protoreflect.Message {
// Deprecated: Use AssetLocked.ProtoReflect.Descriptor instead.
func (*AssetLocked) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{164}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{165}
}
func (x *AssetLocked) GetAsset() string {
@@ -12191,7 +12254,7 @@ type EpochBalance struct {
func (x *EpochBalance) Reset() {
*x = EpochBalance{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[165]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[166]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -12204,7 +12267,7 @@ func (x *EpochBalance) String() string {
func (*EpochBalance) ProtoMessage() {}
func (x *EpochBalance) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[165]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[166]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -12217,7 +12280,7 @@ func (x *EpochBalance) ProtoReflect() protoreflect.Message {
// Deprecated: Use EpochBalance.ProtoReflect.Descriptor instead.
func (*EpochBalance) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{165}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{166}
}
func (x *EpochBalance) GetEpoch() uint64 {
@@ -12246,7 +12309,7 @@ type InVesting struct {
func (x *InVesting) Reset() {
*x = InVesting{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[166]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[167]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -12259,7 +12322,7 @@ func (x *InVesting) String() string {
func (*InVesting) ProtoMessage() {}
func (x *InVesting) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[166]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[167]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -12272,7 +12335,7 @@ func (x *InVesting) ProtoReflect() protoreflect.Message {
// Deprecated: Use InVesting.ProtoReflect.Descriptor instead.
func (*InVesting) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{166}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{167}
}
func (x *InVesting) GetAsset() string {
@@ -12300,7 +12363,7 @@ type ActivityStreak struct {
func (x *ActivityStreak) Reset() {
*x = ActivityStreak{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[167]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[168]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -12313,7 +12376,7 @@ func (x *ActivityStreak) String() string {
func (*ActivityStreak) ProtoMessage() {}
func (x *ActivityStreak) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[167]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[168]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -12326,7 +12389,7 @@ func (x *ActivityStreak) ProtoReflect() protoreflect.Message {
// Deprecated: Use ActivityStreak.ProtoReflect.Descriptor instead.
func (*ActivityStreak) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{167}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{168}
}
func (x *ActivityStreak) GetPartiesActivityStreak() []*PartyActivityStreak {
@@ -12351,7 +12414,7 @@ type PartyActivityStreak struct {
func (x *PartyActivityStreak) Reset() {
*x = PartyActivityStreak{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[168]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[169]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -12364,7 +12427,7 @@ func (x *PartyActivityStreak) String() string {
func (*PartyActivityStreak) ProtoMessage() {}
func (x *PartyActivityStreak) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[168]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[169]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -12377,7 +12440,7 @@ func (x *PartyActivityStreak) ProtoReflect() protoreflect.Message {
// Deprecated: Use PartyActivityStreak.ProtoReflect.Descriptor instead.
func (*PartyActivityStreak) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{168}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{169}
}
func (x *PartyActivityStreak) GetParty() string {
@@ -12434,7 +12497,7 @@ type VolumeDiscountProgram struct {
func (x *VolumeDiscountProgram) Reset() {
*x = VolumeDiscountProgram{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[169]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[170]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -12447,7 +12510,7 @@ func (x *VolumeDiscountProgram) String() string {
func (*VolumeDiscountProgram) ProtoMessage() {}
func (x *VolumeDiscountProgram) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[169]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[170]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -12460,7 +12523,7 @@ func (x *VolumeDiscountProgram) ProtoReflect() protoreflect.Message {
// Deprecated: Use VolumeDiscountProgram.ProtoReflect.Descriptor instead.
func (*VolumeDiscountProgram) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{169}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{170}
}
func (x *VolumeDiscountProgram) GetParties() []string {
@@ -12538,7 +12601,7 @@ type VolumeDiscountStats struct {
func (x *VolumeDiscountStats) Reset() {
*x = VolumeDiscountStats{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[170]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[171]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -12551,7 +12614,7 @@ func (x *VolumeDiscountStats) String() string {
func (*VolumeDiscountStats) ProtoMessage() {}
func (x *VolumeDiscountStats) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[170]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[171]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -12564,7 +12627,7 @@ func (x *VolumeDiscountStats) ProtoReflect() protoreflect.Message {
// Deprecated: Use VolumeDiscountStats.ProtoReflect.Descriptor instead.
func (*VolumeDiscountStats) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{170}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{171}
}
func (x *VolumeDiscountStats) GetParty() string {
@@ -12592,7 +12655,7 @@ type EpochPartyVolumes struct {
func (x *EpochPartyVolumes) Reset() {
*x = EpochPartyVolumes{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[171]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[172]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -12605,7 +12668,7 @@ func (x *EpochPartyVolumes) String() string {
func (*EpochPartyVolumes) ProtoMessage() {}
func (x *EpochPartyVolumes) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[171]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[172]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -12618,7 +12681,7 @@ func (x *EpochPartyVolumes) ProtoReflect() protoreflect.Message {
// Deprecated: Use EpochPartyVolumes.ProtoReflect.Descriptor instead.
func (*EpochPartyVolumes) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{171}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{172}
}
func (x *EpochPartyVolumes) GetPartyVolume() []*PartyVolume {
@@ -12640,7 +12703,7 @@ type PartyVolume struct {
func (x *PartyVolume) Reset() {
*x = PartyVolume{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[172]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[173]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -12653,7 +12716,7 @@ func (x *PartyVolume) String() string {
func (*PartyVolume) ProtoMessage() {}
func (x *PartyVolume) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[172]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[173]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -12666,7 +12729,7 @@ func (x *PartyVolume) ProtoReflect() protoreflect.Message {
// Deprecated: Use PartyVolume.ProtoReflect.Descriptor instead.
func (*PartyVolume) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{172}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{173}
}
func (x *PartyVolume) GetParty() string {
@@ -12697,7 +12760,7 @@ type Liquidation struct {
func (x *Liquidation) Reset() {
*x = Liquidation{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[173]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[174]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -12710,7 +12773,7 @@ func (x *Liquidation) String() string {
func (*Liquidation) ProtoMessage() {}
func (x *Liquidation) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[173]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[174]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -12723,7 +12786,7 @@ func (x *Liquidation) ProtoReflect() protoreflect.Message {
// Deprecated: Use Liquidation.ProtoReflect.Descriptor instead.
func (*Liquidation) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{173}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{174}
}
func (x *Liquidation) GetMarketId() string {
@@ -12767,7 +12830,7 @@ type PartyAssetAmount struct {
func (x *PartyAssetAmount) Reset() {
*x = PartyAssetAmount{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[174]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[175]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -12780,7 +12843,7 @@ func (x *PartyAssetAmount) String() string {
func (*PartyAssetAmount) ProtoMessage() {}
func (x *PartyAssetAmount) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[174]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[175]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -12793,7 +12856,7 @@ func (x *PartyAssetAmount) ProtoReflect() protoreflect.Message {
// Deprecated: Use PartyAssetAmount.ProtoReflect.Descriptor instead.
func (*PartyAssetAmount) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{174}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{175}
}
func (x *PartyAssetAmount) GetParty() string {
@@ -12828,7 +12891,7 @@ type BankingTransferFeeDiscounts struct {
func (x *BankingTransferFeeDiscounts) Reset() {
*x = BankingTransferFeeDiscounts{}
if protoimpl.UnsafeEnabled {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[175]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[176]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -12841,7 +12904,7 @@ func (x *BankingTransferFeeDiscounts) String() string {
func (*BankingTransferFeeDiscounts) ProtoMessage() {}
func (x *BankingTransferFeeDiscounts) ProtoReflect() protoreflect.Message {
- mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[175]
+ mi := &file_vega_snapshot_v1_snapshot_proto_msgTypes[176]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -12854,7 +12917,7 @@ func (x *BankingTransferFeeDiscounts) ProtoReflect() protoreflect.Message {
// Deprecated: Use BankingTransferFeeDiscounts.ProtoReflect.Descriptor instead.
func (*BankingTransferFeeDiscounts) Descriptor() ([]byte, []int) {
- return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{175}
+ return file_vega_snapshot_v1_snapshot_proto_rawDescGZIP(), []int{176}
}
func (x *BankingTransferFeeDiscounts) GetPartyAssetDiscount() []*PartyAssetAmount {
@@ -13864,7 +13927,7 @@ var file_vega_snapshot_v1_snapshot_proto_rawDesc = []byte{
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,
- 0x22, 0xc5, 0x0a, 0x0a, 0x06, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x24, 0x0a, 0x06, 0x6d,
+ 0x22, 0x9a, 0x0b, 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,
@@ -13948,1286 +14011,1296 @@ var file_vega_snapshot_v1_snapshot_proto_rawDesc = []byte{
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, 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, 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,
+ 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, 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, 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, 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, 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,
+ 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, 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, 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,
+ 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, 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, 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, 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, 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,
+ 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, 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, 0x04, 0x20, 0x03, 0x28, 0x0b,
+ 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, 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,
+ 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, 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, 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, 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,
- 0xaf, 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, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x65, 0x72, 0x72, 0x6f,
- 0x72, 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,
+ 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,
+ 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,
+ 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, 0xaf, 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,
+ 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, 0x42, 0x08, 0x0a, 0x06,
+ 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 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, 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, 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,
+ 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, 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, 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, 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, 0x9e, 0x01, 0x0a, 0x23, 0x49, 0x73, 0x73, 0x75, 0x65, 0x64, 0x45, 0x52, 0x43, 0x32,
+ 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, 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, 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, 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,
+ 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, 0x9e, 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, 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, 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, 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,
+ 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, 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, 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, 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, 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, 0xc0, 0x01, 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, 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, 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, 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, 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,
+ 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, 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, 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, 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, 0xc0, 0x01, 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, 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, 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,
+ 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, 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, 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, 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,
- 0x8f, 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, 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, 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,
+ 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,
- 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,
+ 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, 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, 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, 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,
+ 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, 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,
+ 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, 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,
+ 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, 0x8f, 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, 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, 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, 0x09, 0x20,
+ 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, 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,
+ 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, 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, 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, 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, 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,
+ 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, 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 (
@@ -15243,7 +15316,7 @@ func file_vega_snapshot_v1_snapshot_proto_rawDescGZIP() []byte {
}
var file_vega_snapshot_v1_snapshot_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_vega_snapshot_v1_snapshot_proto_msgTypes = make([]protoimpl.MessageInfo, 176)
+var file_vega_snapshot_v1_snapshot_proto_msgTypes = make([]protoimpl.MessageInfo, 177)
var file_vega_snapshot_v1_snapshot_proto_goTypes = []interface{}{
(Format)(0), // 0: vega.snapshot.v1.Format
(*Snapshot)(nil), // 1: vega.snapshot.v1.Snapshot
@@ -15312,157 +15385,158 @@ var file_vega_snapshot_v1_snapshot_proto_goTypes = []interface{}{
(*FeeSplitter)(nil), // 64: vega.snapshot.v1.FeeSplitter
(*SpotMarket)(nil), // 65: vega.snapshot.v1.SpotMarket
(*Market)(nil), // 66: vega.snapshot.v1.Market
- (*Product)(nil), // 67: vega.snapshot.v1.Product
- (*DataPoint)(nil), // 68: vega.snapshot.v1.DataPoint
- (*AuctionIntervals)(nil), // 69: vega.snapshot.v1.AuctionIntervals
- (*TWAPData)(nil), // 70: vega.snapshot.v1.TWAPData
- (*Perps)(nil), // 71: vega.snapshot.v1.Perps
- (*OrdersAtPrice)(nil), // 72: vega.snapshot.v1.OrdersAtPrice
- (*PricedStopOrders)(nil), // 73: vega.snapshot.v1.PricedStopOrders
- (*TrailingStopOrders)(nil), // 74: vega.snapshot.v1.TrailingStopOrders
- (*OrdersAtOffset)(nil), // 75: vega.snapshot.v1.OrdersAtOffset
- (*OffsetsAtPrice)(nil), // 76: vega.snapshot.v1.OffsetsAtPrice
- (*StopOrders)(nil), // 77: vega.snapshot.v1.StopOrders
- (*PeggedOrders)(nil), // 78: vega.snapshot.v1.PeggedOrders
- (*SLANetworkParams)(nil), // 79: vega.snapshot.v1.SLANetworkParams
- (*ExecutionMarkets)(nil), // 80: vega.snapshot.v1.ExecutionMarkets
- (*Successors)(nil), // 81: vega.snapshot.v1.Successors
- (*Position)(nil), // 82: vega.snapshot.v1.Position
- (*MarketPositions)(nil), // 83: vega.snapshot.v1.MarketPositions
- (*PartyPositionStats)(nil), // 84: vega.snapshot.v1.PartyPositionStats
- (*SettlementState)(nil), // 85: vega.snapshot.v1.SettlementState
- (*LastSettledPosition)(nil), // 86: vega.snapshot.v1.LastSettledPosition
- (*SettlementTrade)(nil), // 87: vega.snapshot.v1.SettlementTrade
- (*AppState)(nil), // 88: vega.snapshot.v1.AppState
- (*EpochState)(nil), // 89: vega.snapshot.v1.EpochState
- (*RewardsPendingPayouts)(nil), // 90: vega.snapshot.v1.RewardsPendingPayouts
- (*ScheduledRewardsPayout)(nil), // 91: vega.snapshot.v1.ScheduledRewardsPayout
- (*RewardsPayout)(nil), // 92: vega.snapshot.v1.RewardsPayout
- (*RewardsPartyAmount)(nil), // 93: vega.snapshot.v1.RewardsPartyAmount
- (*LimitState)(nil), // 94: vega.snapshot.v1.LimitState
- (*VoteSpamPolicy)(nil), // 95: vega.snapshot.v1.VoteSpamPolicy
- (*PartyProposalVoteCount)(nil), // 96: vega.snapshot.v1.PartyProposalVoteCount
- (*PartyTokenBalance)(nil), // 97: vega.snapshot.v1.PartyTokenBalance
- (*BlockRejectStats)(nil), // 98: vega.snapshot.v1.BlockRejectStats
- (*SpamPartyTransactionCount)(nil), // 99: vega.snapshot.v1.SpamPartyTransactionCount
- (*SimpleSpamPolicy)(nil), // 100: vega.snapshot.v1.SimpleSpamPolicy
- (*NotarySigs)(nil), // 101: vega.snapshot.v1.NotarySigs
- (*Notary)(nil), // 102: vega.snapshot.v1.Notary
- (*StakeVerifierDeposited)(nil), // 103: vega.snapshot.v1.StakeVerifierDeposited
- (*StakeVerifierRemoved)(nil), // 104: vega.snapshot.v1.StakeVerifierRemoved
- (*StakeVerifierPending)(nil), // 105: vega.snapshot.v1.StakeVerifierPending
- (*EthOracleVerifierLastBlock)(nil), // 106: vega.snapshot.v1.EthOracleVerifierLastBlock
- (*EthContractCallResults)(nil), // 107: vega.snapshot.v1.EthContractCallResults
- (*EthContractCallResult)(nil), // 108: vega.snapshot.v1.EthContractCallResult
- (*PendingKeyRotation)(nil), // 109: vega.snapshot.v1.PendingKeyRotation
- (*PendingEthereumKeyRotation)(nil), // 110: vega.snapshot.v1.PendingEthereumKeyRotation
- (*Topology)(nil), // 111: vega.snapshot.v1.Topology
- (*ToplogySignatures)(nil), // 112: vega.snapshot.v1.ToplogySignatures
- (*PendingERC20MultisigControlSignature)(nil), // 113: vega.snapshot.v1.PendingERC20MultisigControlSignature
- (*IssuedERC20MultisigControlSignature)(nil), // 114: vega.snapshot.v1.IssuedERC20MultisigControlSignature
- (*ValidatorState)(nil), // 115: vega.snapshot.v1.ValidatorState
- (*HeartbeatTracker)(nil), // 116: vega.snapshot.v1.HeartbeatTracker
- (*PerformanceStats)(nil), // 117: vega.snapshot.v1.PerformanceStats
- (*ValidatorPerformance)(nil), // 118: vega.snapshot.v1.ValidatorPerformance
- (*LiquidityParameters)(nil), // 119: vega.snapshot.v1.LiquidityParameters
- (*LiquidityPendingProvisions)(nil), // 120: vega.snapshot.v1.LiquidityPendingProvisions
- (*LiquidityPartiesLiquidityOrders)(nil), // 121: vega.snapshot.v1.LiquidityPartiesLiquidityOrders
- (*PartyOrders)(nil), // 122: vega.snapshot.v1.PartyOrders
- (*LiquidityPartiesOrders)(nil), // 123: vega.snapshot.v1.LiquidityPartiesOrders
- (*LiquidityProvisions)(nil), // 124: vega.snapshot.v1.LiquidityProvisions
- (*LiquidityScores)(nil), // 125: vega.snapshot.v1.LiquidityScores
- (*LiquidityScore)(nil), // 126: vega.snapshot.v1.LiquidityScore
- (*LiquidityV2Parameters)(nil), // 127: vega.snapshot.v1.LiquidityV2Parameters
- (*LiquidityV2PaidFeesStats)(nil), // 128: vega.snapshot.v1.LiquidityV2PaidFeesStats
- (*LiquidityV2Provisions)(nil), // 129: vega.snapshot.v1.LiquidityV2Provisions
- (*LiquidityV2PendingProvisions)(nil), // 130: vega.snapshot.v1.LiquidityV2PendingProvisions
- (*LiquidityV2Performances)(nil), // 131: vega.snapshot.v1.LiquidityV2Performances
- (*LiquidityV2PerformancePerParty)(nil), // 132: vega.snapshot.v1.LiquidityV2PerformancePerParty
- (*LiquidityV2Scores)(nil), // 133: vega.snapshot.v1.LiquidityV2Scores
- (*LiquidityV2Supplied)(nil), // 134: vega.snapshot.v1.LiquidityV2Supplied
- (*FloatingPointConsensus)(nil), // 135: vega.snapshot.v1.FloatingPointConsensus
- (*StateVarInternalState)(nil), // 136: vega.snapshot.v1.StateVarInternalState
- (*FloatingPointValidatorResult)(nil), // 137: vega.snapshot.v1.FloatingPointValidatorResult
- (*NextTimeTrigger)(nil), // 138: vega.snapshot.v1.NextTimeTrigger
- (*MarketTracker)(nil), // 139: vega.snapshot.v1.MarketTracker
- (*SignerEventsPerAddress)(nil), // 140: vega.snapshot.v1.SignerEventsPerAddress
- (*ERC20MultiSigTopologyVerified)(nil), // 141: vega.snapshot.v1.ERC20MultiSigTopologyVerified
- (*ERC20MultiSigTopologyPending)(nil), // 142: vega.snapshot.v1.ERC20MultiSigTopologyPending
- (*ProofOfWork)(nil), // 143: vega.snapshot.v1.ProofOfWork
- (*BannedParty)(nil), // 144: vega.snapshot.v1.BannedParty
- (*ProofOfWorkParams)(nil), // 145: vega.snapshot.v1.ProofOfWorkParams
- (*ProofOfWorkState)(nil), // 146: vega.snapshot.v1.ProofOfWorkState
- (*ProofOfWorkBlockState)(nil), // 147: vega.snapshot.v1.ProofOfWorkBlockState
- (*ProofOfWorkPartyStateForBlock)(nil), // 148: vega.snapshot.v1.ProofOfWorkPartyStateForBlock
- (*TransactionsAtHeight)(nil), // 149: vega.snapshot.v1.TransactionsAtHeight
- (*NonceRef)(nil), // 150: vega.snapshot.v1.NonceRef
- (*NonceRefsAtHeight)(nil), // 151: vega.snapshot.v1.NonceRefsAtHeight
- (*ProtocolUpgradeProposals)(nil), // 152: vega.snapshot.v1.ProtocolUpgradeProposals
- (*AcceptedProtocolUpgradeProposal)(nil), // 153: vega.snapshot.v1.AcceptedProtocolUpgradeProposal
- (*Teams)(nil), // 154: vega.snapshot.v1.Teams
- (*Team)(nil), // 155: vega.snapshot.v1.Team
- (*Membership)(nil), // 156: vega.snapshot.v1.Membership
- (*TeamSwitches)(nil), // 157: vega.snapshot.v1.TeamSwitches
- (*TeamSwitch)(nil), // 158: vega.snapshot.v1.TeamSwitch
- (*Vesting)(nil), // 159: vega.snapshot.v1.Vesting
- (*PartyReward)(nil), // 160: vega.snapshot.v1.PartyReward
- (*ReferralProgramData)(nil), // 161: vega.snapshot.v1.ReferralProgramData
- (*ReferralSet)(nil), // 162: vega.snapshot.v1.ReferralSet
- (*RunningVolume)(nil), // 163: vega.snapshot.v1.RunningVolume
- (*FactorByReferee)(nil), // 164: vega.snapshot.v1.FactorByReferee
- (*AssetLocked)(nil), // 165: vega.snapshot.v1.AssetLocked
- (*EpochBalance)(nil), // 166: vega.snapshot.v1.EpochBalance
- (*InVesting)(nil), // 167: vega.snapshot.v1.InVesting
- (*ActivityStreak)(nil), // 168: vega.snapshot.v1.ActivityStreak
- (*PartyActivityStreak)(nil), // 169: vega.snapshot.v1.PartyActivityStreak
- (*VolumeDiscountProgram)(nil), // 170: vega.snapshot.v1.VolumeDiscountProgram
- (*VolumeDiscountStats)(nil), // 171: vega.snapshot.v1.VolumeDiscountStats
- (*EpochPartyVolumes)(nil), // 172: vega.snapshot.v1.EpochPartyVolumes
- (*PartyVolume)(nil), // 173: vega.snapshot.v1.PartyVolume
- (*Liquidation)(nil), // 174: vega.snapshot.v1.Liquidation
- (*PartyAssetAmount)(nil), // 175: vega.snapshot.v1.PartyAssetAmount
- (*BankingTransferFeeDiscounts)(nil), // 176: vega.snapshot.v1.BankingTransferFeeDiscounts
- (*v1.Signer)(nil), // 177: vega.data.v1.Signer
- (*v1.Property)(nil), // 178: vega.data.v1.Property
- (*vega.Account)(nil), // 179: vega.Account
- (*vega.Asset)(nil), // 180: vega.Asset
- (*vega.Withdrawal)(nil), // 181: vega.Withdrawal
- (*vega.Deposit)(nil), // 182: vega.Deposit
- (*v11.AssetAction)(nil), // 183: vega.checkpoint.v1.AssetAction
- (*v11.RecurringTransfers)(nil), // 184: vega.checkpoint.v1.RecurringTransfers
- (*v11.ScheduledTransferAtTime)(nil), // 185: vega.checkpoint.v1.ScheduledTransferAtTime
- (*v11.GovernanceTransfer)(nil), // 186: vega.checkpoint.v1.GovernanceTransfer
- (*v11.ScheduledGovernanceTransferAtTime)(nil), // 187: vega.checkpoint.v1.ScheduledGovernanceTransferAtTime
- (*v11.BridgeState)(nil), // 188: vega.checkpoint.v1.BridgeState
- (*vega.Delegation)(nil), // 189: vega.Delegation
- (*vega.Proposal)(nil), // 190: vega.Proposal
- (*vega.Vote)(nil), // 191: vega.Vote
- (*v12.StakeLinking)(nil), // 192: vega.events.v1.StakeLinking
- (*vega.StakeTotalSupply)(nil), // 193: vega.StakeTotalSupply
- (*vega.Order)(nil), // 194: vega.Order
- (*vega.NetworkParameter)(nil), // 195: vega.NetworkParameter
- (*vega.PriceMonitoringTrigger)(nil), // 196: vega.PriceMonitoringTrigger
- (vega.Market_TradingMode)(0), // 197: vega.Market.TradingMode
- (vega.AuctionTrigger)(0), // 198: vega.AuctionTrigger
- (*vega.AuctionDuration)(nil), // 199: vega.AuctionDuration
- (*vega.Market)(nil), // 200: vega.Market
- (*v12.FeesStats)(nil), // 201: vega.events.v1.FeesStats
- (*v12.StopOrderEvent)(nil), // 202: vega.events.v1.StopOrderEvent
- (*v11.MarketState)(nil), // 203: vega.checkpoint.v1.MarketState
- (*v12.ValidatorUpdate)(nil), // 204: vega.events.v1.ValidatorUpdate
- (*vega.RankingScore)(nil), // 205: vega.RankingScore
- (*vega.LiquidityProvision)(nil), // 206: vega.LiquidityProvision
- (*vega.LiquiditySLAParameters)(nil), // 207: vega.LiquiditySLAParameters
- (*v12.PaidLiquidityFeesStats)(nil), // 208: vega.events.v1.PaidLiquidityFeesStats
- (*vega.KeyValueBundle)(nil), // 209: vega.KeyValueBundle
- (*v11.MarketActivityTracker)(nil), // 210: vega.checkpoint.v1.MarketActivityTracker
- (*v11.TakerNotionalVolume)(nil), // 211: vega.checkpoint.v1.TakerNotionalVolume
- (*v12.ERC20MultiSigSignerEvent)(nil), // 212: vega.events.v1.ERC20MultiSigSignerEvent
- (*v12.ERC20MultiSigThresholdSetEvent)(nil), // 213: vega.events.v1.ERC20MultiSigThresholdSetEvent
- (*v12.ProtocolUpgradeEvent)(nil), // 214: vega.events.v1.ProtocolUpgradeEvent
- (*vega.ReferralProgram)(nil), // 215: vega.ReferralProgram
- (*vega.VolumeDiscountProgram)(nil), // 216: vega.VolumeDiscountProgram
- (*vega.LiquidationStrategy)(nil), // 217: vega.LiquidationStrategy
+ (*PartyMarginFactor)(nil), // 67: vega.snapshot.v1.PartyMarginFactor
+ (*Product)(nil), // 68: vega.snapshot.v1.Product
+ (*DataPoint)(nil), // 69: vega.snapshot.v1.DataPoint
+ (*AuctionIntervals)(nil), // 70: vega.snapshot.v1.AuctionIntervals
+ (*TWAPData)(nil), // 71: vega.snapshot.v1.TWAPData
+ (*Perps)(nil), // 72: vega.snapshot.v1.Perps
+ (*OrdersAtPrice)(nil), // 73: vega.snapshot.v1.OrdersAtPrice
+ (*PricedStopOrders)(nil), // 74: vega.snapshot.v1.PricedStopOrders
+ (*TrailingStopOrders)(nil), // 75: vega.snapshot.v1.TrailingStopOrders
+ (*OrdersAtOffset)(nil), // 76: vega.snapshot.v1.OrdersAtOffset
+ (*OffsetsAtPrice)(nil), // 77: vega.snapshot.v1.OffsetsAtPrice
+ (*StopOrders)(nil), // 78: vega.snapshot.v1.StopOrders
+ (*PeggedOrders)(nil), // 79: vega.snapshot.v1.PeggedOrders
+ (*SLANetworkParams)(nil), // 80: vega.snapshot.v1.SLANetworkParams
+ (*ExecutionMarkets)(nil), // 81: vega.snapshot.v1.ExecutionMarkets
+ (*Successors)(nil), // 82: vega.snapshot.v1.Successors
+ (*Position)(nil), // 83: vega.snapshot.v1.Position
+ (*MarketPositions)(nil), // 84: vega.snapshot.v1.MarketPositions
+ (*PartyPositionStats)(nil), // 85: vega.snapshot.v1.PartyPositionStats
+ (*SettlementState)(nil), // 86: vega.snapshot.v1.SettlementState
+ (*LastSettledPosition)(nil), // 87: vega.snapshot.v1.LastSettledPosition
+ (*SettlementTrade)(nil), // 88: vega.snapshot.v1.SettlementTrade
+ (*AppState)(nil), // 89: vega.snapshot.v1.AppState
+ (*EpochState)(nil), // 90: vega.snapshot.v1.EpochState
+ (*RewardsPendingPayouts)(nil), // 91: vega.snapshot.v1.RewardsPendingPayouts
+ (*ScheduledRewardsPayout)(nil), // 92: vega.snapshot.v1.ScheduledRewardsPayout
+ (*RewardsPayout)(nil), // 93: vega.snapshot.v1.RewardsPayout
+ (*RewardsPartyAmount)(nil), // 94: vega.snapshot.v1.RewardsPartyAmount
+ (*LimitState)(nil), // 95: vega.snapshot.v1.LimitState
+ (*VoteSpamPolicy)(nil), // 96: vega.snapshot.v1.VoteSpamPolicy
+ (*PartyProposalVoteCount)(nil), // 97: vega.snapshot.v1.PartyProposalVoteCount
+ (*PartyTokenBalance)(nil), // 98: vega.snapshot.v1.PartyTokenBalance
+ (*BlockRejectStats)(nil), // 99: vega.snapshot.v1.BlockRejectStats
+ (*SpamPartyTransactionCount)(nil), // 100: vega.snapshot.v1.SpamPartyTransactionCount
+ (*SimpleSpamPolicy)(nil), // 101: vega.snapshot.v1.SimpleSpamPolicy
+ (*NotarySigs)(nil), // 102: vega.snapshot.v1.NotarySigs
+ (*Notary)(nil), // 103: vega.snapshot.v1.Notary
+ (*StakeVerifierDeposited)(nil), // 104: vega.snapshot.v1.StakeVerifierDeposited
+ (*StakeVerifierRemoved)(nil), // 105: vega.snapshot.v1.StakeVerifierRemoved
+ (*StakeVerifierPending)(nil), // 106: vega.snapshot.v1.StakeVerifierPending
+ (*EthOracleVerifierLastBlock)(nil), // 107: vega.snapshot.v1.EthOracleVerifierLastBlock
+ (*EthContractCallResults)(nil), // 108: vega.snapshot.v1.EthContractCallResults
+ (*EthContractCallResult)(nil), // 109: vega.snapshot.v1.EthContractCallResult
+ (*PendingKeyRotation)(nil), // 110: vega.snapshot.v1.PendingKeyRotation
+ (*PendingEthereumKeyRotation)(nil), // 111: vega.snapshot.v1.PendingEthereumKeyRotation
+ (*Topology)(nil), // 112: vega.snapshot.v1.Topology
+ (*ToplogySignatures)(nil), // 113: vega.snapshot.v1.ToplogySignatures
+ (*PendingERC20MultisigControlSignature)(nil), // 114: vega.snapshot.v1.PendingERC20MultisigControlSignature
+ (*IssuedERC20MultisigControlSignature)(nil), // 115: vega.snapshot.v1.IssuedERC20MultisigControlSignature
+ (*ValidatorState)(nil), // 116: vega.snapshot.v1.ValidatorState
+ (*HeartbeatTracker)(nil), // 117: vega.snapshot.v1.HeartbeatTracker
+ (*PerformanceStats)(nil), // 118: vega.snapshot.v1.PerformanceStats
+ (*ValidatorPerformance)(nil), // 119: vega.snapshot.v1.ValidatorPerformance
+ (*LiquidityParameters)(nil), // 120: vega.snapshot.v1.LiquidityParameters
+ (*LiquidityPendingProvisions)(nil), // 121: vega.snapshot.v1.LiquidityPendingProvisions
+ (*LiquidityPartiesLiquidityOrders)(nil), // 122: vega.snapshot.v1.LiquidityPartiesLiquidityOrders
+ (*PartyOrders)(nil), // 123: vega.snapshot.v1.PartyOrders
+ (*LiquidityPartiesOrders)(nil), // 124: vega.snapshot.v1.LiquidityPartiesOrders
+ (*LiquidityProvisions)(nil), // 125: vega.snapshot.v1.LiquidityProvisions
+ (*LiquidityScores)(nil), // 126: vega.snapshot.v1.LiquidityScores
+ (*LiquidityScore)(nil), // 127: vega.snapshot.v1.LiquidityScore
+ (*LiquidityV2Parameters)(nil), // 128: vega.snapshot.v1.LiquidityV2Parameters
+ (*LiquidityV2PaidFeesStats)(nil), // 129: vega.snapshot.v1.LiquidityV2PaidFeesStats
+ (*LiquidityV2Provisions)(nil), // 130: vega.snapshot.v1.LiquidityV2Provisions
+ (*LiquidityV2PendingProvisions)(nil), // 131: vega.snapshot.v1.LiquidityV2PendingProvisions
+ (*LiquidityV2Performances)(nil), // 132: vega.snapshot.v1.LiquidityV2Performances
+ (*LiquidityV2PerformancePerParty)(nil), // 133: vega.snapshot.v1.LiquidityV2PerformancePerParty
+ (*LiquidityV2Scores)(nil), // 134: vega.snapshot.v1.LiquidityV2Scores
+ (*LiquidityV2Supplied)(nil), // 135: vega.snapshot.v1.LiquidityV2Supplied
+ (*FloatingPointConsensus)(nil), // 136: vega.snapshot.v1.FloatingPointConsensus
+ (*StateVarInternalState)(nil), // 137: vega.snapshot.v1.StateVarInternalState
+ (*FloatingPointValidatorResult)(nil), // 138: vega.snapshot.v1.FloatingPointValidatorResult
+ (*NextTimeTrigger)(nil), // 139: vega.snapshot.v1.NextTimeTrigger
+ (*MarketTracker)(nil), // 140: vega.snapshot.v1.MarketTracker
+ (*SignerEventsPerAddress)(nil), // 141: vega.snapshot.v1.SignerEventsPerAddress
+ (*ERC20MultiSigTopologyVerified)(nil), // 142: vega.snapshot.v1.ERC20MultiSigTopologyVerified
+ (*ERC20MultiSigTopologyPending)(nil), // 143: vega.snapshot.v1.ERC20MultiSigTopologyPending
+ (*ProofOfWork)(nil), // 144: vega.snapshot.v1.ProofOfWork
+ (*BannedParty)(nil), // 145: vega.snapshot.v1.BannedParty
+ (*ProofOfWorkParams)(nil), // 146: vega.snapshot.v1.ProofOfWorkParams
+ (*ProofOfWorkState)(nil), // 147: vega.snapshot.v1.ProofOfWorkState
+ (*ProofOfWorkBlockState)(nil), // 148: vega.snapshot.v1.ProofOfWorkBlockState
+ (*ProofOfWorkPartyStateForBlock)(nil), // 149: vega.snapshot.v1.ProofOfWorkPartyStateForBlock
+ (*TransactionsAtHeight)(nil), // 150: vega.snapshot.v1.TransactionsAtHeight
+ (*NonceRef)(nil), // 151: vega.snapshot.v1.NonceRef
+ (*NonceRefsAtHeight)(nil), // 152: vega.snapshot.v1.NonceRefsAtHeight
+ (*ProtocolUpgradeProposals)(nil), // 153: vega.snapshot.v1.ProtocolUpgradeProposals
+ (*AcceptedProtocolUpgradeProposal)(nil), // 154: vega.snapshot.v1.AcceptedProtocolUpgradeProposal
+ (*Teams)(nil), // 155: vega.snapshot.v1.Teams
+ (*Team)(nil), // 156: vega.snapshot.v1.Team
+ (*Membership)(nil), // 157: vega.snapshot.v1.Membership
+ (*TeamSwitches)(nil), // 158: vega.snapshot.v1.TeamSwitches
+ (*TeamSwitch)(nil), // 159: vega.snapshot.v1.TeamSwitch
+ (*Vesting)(nil), // 160: vega.snapshot.v1.Vesting
+ (*PartyReward)(nil), // 161: vega.snapshot.v1.PartyReward
+ (*ReferralProgramData)(nil), // 162: vega.snapshot.v1.ReferralProgramData
+ (*ReferralSet)(nil), // 163: vega.snapshot.v1.ReferralSet
+ (*RunningVolume)(nil), // 164: vega.snapshot.v1.RunningVolume
+ (*FactorByReferee)(nil), // 165: vega.snapshot.v1.FactorByReferee
+ (*AssetLocked)(nil), // 166: vega.snapshot.v1.AssetLocked
+ (*EpochBalance)(nil), // 167: vega.snapshot.v1.EpochBalance
+ (*InVesting)(nil), // 168: vega.snapshot.v1.InVesting
+ (*ActivityStreak)(nil), // 169: vega.snapshot.v1.ActivityStreak
+ (*PartyActivityStreak)(nil), // 170: vega.snapshot.v1.PartyActivityStreak
+ (*VolumeDiscountProgram)(nil), // 171: vega.snapshot.v1.VolumeDiscountProgram
+ (*VolumeDiscountStats)(nil), // 172: vega.snapshot.v1.VolumeDiscountStats
+ (*EpochPartyVolumes)(nil), // 173: vega.snapshot.v1.EpochPartyVolumes
+ (*PartyVolume)(nil), // 174: vega.snapshot.v1.PartyVolume
+ (*Liquidation)(nil), // 175: vega.snapshot.v1.Liquidation
+ (*PartyAssetAmount)(nil), // 176: vega.snapshot.v1.PartyAssetAmount
+ (*BankingTransferFeeDiscounts)(nil), // 177: vega.snapshot.v1.BankingTransferFeeDiscounts
+ (*v1.Signer)(nil), // 178: vega.data.v1.Signer
+ (*v1.Property)(nil), // 179: vega.data.v1.Property
+ (*vega.Account)(nil), // 180: vega.Account
+ (*vega.Asset)(nil), // 181: vega.Asset
+ (*vega.Withdrawal)(nil), // 182: vega.Withdrawal
+ (*vega.Deposit)(nil), // 183: vega.Deposit
+ (*v11.AssetAction)(nil), // 184: vega.checkpoint.v1.AssetAction
+ (*v11.RecurringTransfers)(nil), // 185: vega.checkpoint.v1.RecurringTransfers
+ (*v11.ScheduledTransferAtTime)(nil), // 186: vega.checkpoint.v1.ScheduledTransferAtTime
+ (*v11.GovernanceTransfer)(nil), // 187: vega.checkpoint.v1.GovernanceTransfer
+ (*v11.ScheduledGovernanceTransferAtTime)(nil), // 188: vega.checkpoint.v1.ScheduledGovernanceTransferAtTime
+ (*v11.BridgeState)(nil), // 189: vega.checkpoint.v1.BridgeState
+ (*vega.Delegation)(nil), // 190: vega.Delegation
+ (*vega.Proposal)(nil), // 191: vega.Proposal
+ (*vega.Vote)(nil), // 192: vega.Vote
+ (*v12.StakeLinking)(nil), // 193: vega.events.v1.StakeLinking
+ (*vega.StakeTotalSupply)(nil), // 194: vega.StakeTotalSupply
+ (*vega.Order)(nil), // 195: vega.Order
+ (*vega.NetworkParameter)(nil), // 196: vega.NetworkParameter
+ (*vega.PriceMonitoringTrigger)(nil), // 197: vega.PriceMonitoringTrigger
+ (vega.Market_TradingMode)(0), // 198: vega.Market.TradingMode
+ (vega.AuctionTrigger)(0), // 199: vega.AuctionTrigger
+ (*vega.AuctionDuration)(nil), // 200: vega.AuctionDuration
+ (*vega.Market)(nil), // 201: vega.Market
+ (*v12.FeesStats)(nil), // 202: vega.events.v1.FeesStats
+ (*v12.StopOrderEvent)(nil), // 203: vega.events.v1.StopOrderEvent
+ (*v11.MarketState)(nil), // 204: vega.checkpoint.v1.MarketState
+ (*v12.ValidatorUpdate)(nil), // 205: vega.events.v1.ValidatorUpdate
+ (*vega.RankingScore)(nil), // 206: vega.RankingScore
+ (*vega.LiquidityProvision)(nil), // 207: vega.LiquidityProvision
+ (*vega.LiquiditySLAParameters)(nil), // 208: vega.LiquiditySLAParameters
+ (*v12.PaidLiquidityFeesStats)(nil), // 209: vega.events.v1.PaidLiquidityFeesStats
+ (*vega.KeyValueBundle)(nil), // 210: vega.KeyValueBundle
+ (*v11.MarketActivityTracker)(nil), // 211: vega.checkpoint.v1.MarketActivityTracker
+ (*v11.TakerNotionalVolume)(nil), // 212: vega.checkpoint.v1.TakerNotionalVolume
+ (*v12.ERC20MultiSigSignerEvent)(nil), // 213: vega.events.v1.ERC20MultiSigSignerEvent
+ (*v12.ERC20MultiSigThresholdSetEvent)(nil), // 214: vega.events.v1.ERC20MultiSigThresholdSetEvent
+ (*v12.ProtocolUpgradeEvent)(nil), // 215: vega.events.v1.ProtocolUpgradeEvent
+ (*vega.ReferralProgram)(nil), // 216: vega.ReferralProgram
+ (*vega.VolumeDiscountProgram)(nil), // 217: vega.VolumeDiscountProgram
+ (*vega.LiquidationStrategy)(nil), // 218: vega.LiquidationStrategy
}
var file_vega_snapshot_v1_snapshot_proto_depIdxs = []int32{
0, // 0: vega.snapshot.v1.Snapshot.format:type_name -> vega.snapshot.v1.Format
@@ -15485,63 +15559,63 @@ var file_vega_snapshot_v1_snapshot_proto_depIdxs = []int32{
49, // 17: vega.snapshot.v1.Payload.staking_accounts:type_name -> vega.snapshot.v1.StakingAccounts
50, // 18: vega.snapshot.v1.Payload.matching_book:type_name -> vega.snapshot.v1.MatchingBook
51, // 19: vega.snapshot.v1.Payload.network_parameters:type_name -> vega.snapshot.v1.NetParams
- 80, // 20: vega.snapshot.v1.Payload.execution_markets:type_name -> vega.snapshot.v1.ExecutionMarkets
- 83, // 21: vega.snapshot.v1.Payload.market_positions:type_name -> vega.snapshot.v1.MarketPositions
- 88, // 22: vega.snapshot.v1.Payload.app_state:type_name -> vega.snapshot.v1.AppState
- 89, // 23: vega.snapshot.v1.Payload.epoch:type_name -> vega.snapshot.v1.EpochState
- 90, // 24: vega.snapshot.v1.Payload.rewards_pending_payouts:type_name -> vega.snapshot.v1.RewardsPendingPayouts
+ 81, // 20: vega.snapshot.v1.Payload.execution_markets:type_name -> vega.snapshot.v1.ExecutionMarkets
+ 84, // 21: vega.snapshot.v1.Payload.market_positions:type_name -> vega.snapshot.v1.MarketPositions
+ 89, // 22: vega.snapshot.v1.Payload.app_state:type_name -> vega.snapshot.v1.AppState
+ 90, // 23: vega.snapshot.v1.Payload.epoch:type_name -> vega.snapshot.v1.EpochState
+ 91, // 24: vega.snapshot.v1.Payload.rewards_pending_payouts:type_name -> vega.snapshot.v1.RewardsPendingPayouts
47, // 25: vega.snapshot.v1.Payload.governance_node:type_name -> vega.snapshot.v1.GovernanceNode
- 94, // 26: vega.snapshot.v1.Payload.limit_state:type_name -> vega.snapshot.v1.LimitState
- 95, // 27: vega.snapshot.v1.Payload.vote_spam_policy:type_name -> vega.snapshot.v1.VoteSpamPolicy
- 100, // 28: vega.snapshot.v1.Payload.simple_spam_policy:type_name -> vega.snapshot.v1.SimpleSpamPolicy
- 102, // 29: vega.snapshot.v1.Payload.notary:type_name -> vega.snapshot.v1.Notary
+ 95, // 26: vega.snapshot.v1.Payload.limit_state:type_name -> vega.snapshot.v1.LimitState
+ 96, // 27: vega.snapshot.v1.Payload.vote_spam_policy:type_name -> vega.snapshot.v1.VoteSpamPolicy
+ 101, // 28: vega.snapshot.v1.Payload.simple_spam_policy:type_name -> vega.snapshot.v1.SimpleSpamPolicy
+ 103, // 29: vega.snapshot.v1.Payload.notary:type_name -> vega.snapshot.v1.Notary
19, // 30: vega.snapshot.v1.Payload.event_forwarder:type_name -> vega.snapshot.v1.EventForwarder
- 103, // 31: vega.snapshot.v1.Payload.stake_verifier_deposited:type_name -> vega.snapshot.v1.StakeVerifierDeposited
- 104, // 32: vega.snapshot.v1.Payload.stake_verifier_removed:type_name -> vega.snapshot.v1.StakeVerifierRemoved
+ 104, // 31: vega.snapshot.v1.Payload.stake_verifier_deposited:type_name -> vega.snapshot.v1.StakeVerifierDeposited
+ 105, // 32: vega.snapshot.v1.Payload.stake_verifier_removed:type_name -> vega.snapshot.v1.StakeVerifierRemoved
17, // 33: vega.snapshot.v1.Payload.witness:type_name -> vega.snapshot.v1.Witness
38, // 34: vega.snapshot.v1.Payload.delegation_last_reconciliation_time:type_name -> vega.snapshot.v1.DelegationLastReconciliationTime
- 111, // 35: vega.snapshot.v1.Payload.topology:type_name -> vega.snapshot.v1.Topology
+ 112, // 35: vega.snapshot.v1.Payload.topology:type_name -> vega.snapshot.v1.Topology
14, // 36: vega.snapshot.v1.Payload.oracle_data:type_name -> vega.snapshot.v1.OracleDataBatch
- 119, // 37: vega.snapshot.v1.Payload.liquidity_parameters:type_name -> vega.snapshot.v1.LiquidityParameters
- 120, // 38: vega.snapshot.v1.Payload.liquidity_pending_provisions:type_name -> vega.snapshot.v1.LiquidityPendingProvisions
- 121, // 39: vega.snapshot.v1.Payload.liquidity_parties_liquidity_orders:type_name -> vega.snapshot.v1.LiquidityPartiesLiquidityOrders
- 123, // 40: vega.snapshot.v1.Payload.liquidity_parties_orders:type_name -> vega.snapshot.v1.LiquidityPartiesOrders
- 124, // 41: vega.snapshot.v1.Payload.liquidity_provisions:type_name -> vega.snapshot.v1.LiquidityProvisions
+ 120, // 37: vega.snapshot.v1.Payload.liquidity_parameters:type_name -> vega.snapshot.v1.LiquidityParameters
+ 121, // 38: vega.snapshot.v1.Payload.liquidity_pending_provisions:type_name -> vega.snapshot.v1.LiquidityPendingProvisions
+ 122, // 39: vega.snapshot.v1.Payload.liquidity_parties_liquidity_orders:type_name -> vega.snapshot.v1.LiquidityPartiesLiquidityOrders
+ 124, // 40: vega.snapshot.v1.Payload.liquidity_parties_orders:type_name -> vega.snapshot.v1.LiquidityPartiesOrders
+ 125, // 41: vega.snapshot.v1.Payload.liquidity_provisions:type_name -> vega.snapshot.v1.LiquidityProvisions
13, // 42: vega.snapshot.v1.Payload.liquidity_supplied:type_name -> vega.snapshot.v1.LiquiditySupplied
10, // 43: vega.snapshot.v1.Payload.liquidity_target:type_name -> vega.snapshot.v1.LiquidityTarget
- 135, // 44: vega.snapshot.v1.Payload.floating_point_consensus:type_name -> vega.snapshot.v1.FloatingPointConsensus
- 139, // 45: vega.snapshot.v1.Payload.market_tracker:type_name -> vega.snapshot.v1.MarketTracker
+ 136, // 44: vega.snapshot.v1.Payload.floating_point_consensus:type_name -> vega.snapshot.v1.FloatingPointConsensus
+ 140, // 45: vega.snapshot.v1.Payload.market_tracker:type_name -> vega.snapshot.v1.MarketTracker
32, // 46: vega.snapshot.v1.Payload.banking_recurring_transfers:type_name -> vega.snapshot.v1.BankingRecurringTransfers
33, // 47: vega.snapshot.v1.Payload.banking_scheduled_transfers:type_name -> vega.snapshot.v1.BankingScheduledTransfers
- 141, // 48: vega.snapshot.v1.Payload.erc20_multisig_topology_verified:type_name -> vega.snapshot.v1.ERC20MultiSigTopologyVerified
- 142, // 49: vega.snapshot.v1.Payload.erc20_multisig_topology_pending:type_name -> vega.snapshot.v1.ERC20MultiSigTopologyPending
- 143, // 50: vega.snapshot.v1.Payload.proof_of_work:type_name -> vega.snapshot.v1.ProofOfWork
+ 142, // 48: vega.snapshot.v1.Payload.erc20_multisig_topology_verified:type_name -> vega.snapshot.v1.ERC20MultiSigTopologyVerified
+ 143, // 49: vega.snapshot.v1.Payload.erc20_multisig_topology_pending:type_name -> vega.snapshot.v1.ERC20MultiSigTopologyPending
+ 144, // 50: vega.snapshot.v1.Payload.proof_of_work:type_name -> vega.snapshot.v1.ProofOfWork
24, // 51: vega.snapshot.v1.Payload.pending_asset_updates:type_name -> vega.snapshot.v1.PendingAssetUpdates
- 152, // 52: vega.snapshot.v1.Payload.protocol_upgrade_proposals:type_name -> vega.snapshot.v1.ProtocolUpgradeProposals
+ 153, // 52: vega.snapshot.v1.Payload.protocol_upgrade_proposals:type_name -> vega.snapshot.v1.ProtocolUpgradeProposals
36, // 53: vega.snapshot.v1.Payload.banking_bridge_state:type_name -> vega.snapshot.v1.BankingBridgeState
- 85, // 54: vega.snapshot.v1.Payload.settlement_state:type_name -> vega.snapshot.v1.SettlementState
- 125, // 55: vega.snapshot.v1.Payload.liquidity_scores:type_name -> vega.snapshot.v1.LiquidityScores
+ 86, // 54: vega.snapshot.v1.Payload.settlement_state:type_name -> vega.snapshot.v1.SettlementState
+ 126, // 55: vega.snapshot.v1.Payload.liquidity_scores:type_name -> vega.snapshot.v1.LiquidityScores
11, // 56: vega.snapshot.v1.Payload.spot_liquidity_target:type_name -> vega.snapshot.v1.SpotLiquidityTarget
34, // 57: vega.snapshot.v1.Payload.banking_recurring_governance_transfers:type_name -> vega.snapshot.v1.BankingRecurringGovernanceTransfers
35, // 58: vega.snapshot.v1.Payload.banking_scheduled_governance_transfers:type_name -> vega.snapshot.v1.BankingScheduledGovernanceTransfers
- 107, // 59: vega.snapshot.v1.Payload.eth_contract_call_results:type_name -> vega.snapshot.v1.EthContractCallResults
- 106, // 60: vega.snapshot.v1.Payload.eth_oracle_verifier_last_block:type_name -> vega.snapshot.v1.EthOracleVerifierLastBlock
- 129, // 61: vega.snapshot.v1.Payload.liquidity_v2_provisions:type_name -> vega.snapshot.v1.LiquidityV2Provisions
- 130, // 62: vega.snapshot.v1.Payload.liquidity_v2_pending_provisions:type_name -> vega.snapshot.v1.LiquidityV2PendingProvisions
- 131, // 63: vega.snapshot.v1.Payload.liquidity_v2_performances:type_name -> vega.snapshot.v1.LiquidityV2Performances
- 134, // 64: vega.snapshot.v1.Payload.liquidity_v2_supplied:type_name -> vega.snapshot.v1.LiquidityV2Supplied
- 133, // 65: vega.snapshot.v1.Payload.liquidity_v2_scores:type_name -> vega.snapshot.v1.LiquidityV2Scores
+ 108, // 59: vega.snapshot.v1.Payload.eth_contract_call_results:type_name -> vega.snapshot.v1.EthContractCallResults
+ 107, // 60: vega.snapshot.v1.Payload.eth_oracle_verifier_last_block:type_name -> vega.snapshot.v1.EthOracleVerifierLastBlock
+ 130, // 61: vega.snapshot.v1.Payload.liquidity_v2_provisions:type_name -> vega.snapshot.v1.LiquidityV2Provisions
+ 131, // 62: vega.snapshot.v1.Payload.liquidity_v2_pending_provisions:type_name -> vega.snapshot.v1.LiquidityV2PendingProvisions
+ 132, // 63: vega.snapshot.v1.Payload.liquidity_v2_performances:type_name -> vega.snapshot.v1.LiquidityV2Performances
+ 135, // 64: vega.snapshot.v1.Payload.liquidity_v2_supplied:type_name -> vega.snapshot.v1.LiquidityV2Supplied
+ 134, // 65: vega.snapshot.v1.Payload.liquidity_v2_scores:type_name -> vega.snapshot.v1.LiquidityV2Scores
7, // 66: vega.snapshot.v1.Payload.holding_account_tracker:type_name -> vega.snapshot.v1.HoldingAccountTracker
- 154, // 67: vega.snapshot.v1.Payload.teams:type_name -> vega.snapshot.v1.Teams
- 157, // 68: vega.snapshot.v1.Payload.team_switches:type_name -> vega.snapshot.v1.TeamSwitches
- 159, // 69: vega.snapshot.v1.Payload.vesting:type_name -> vega.snapshot.v1.Vesting
- 161, // 70: vega.snapshot.v1.Payload.referral_program:type_name -> vega.snapshot.v1.ReferralProgramData
- 168, // 71: vega.snapshot.v1.Payload.activity_streak:type_name -> vega.snapshot.v1.ActivityStreak
- 170, // 72: vega.snapshot.v1.Payload.volume_discount_program:type_name -> vega.snapshot.v1.VolumeDiscountProgram
- 127, // 73: vega.snapshot.v1.Payload.liquidity_v2_parameters:type_name -> vega.snapshot.v1.LiquidityV2Parameters
- 128, // 74: vega.snapshot.v1.Payload.liquidity_v2_paid_fees_stats:type_name -> vega.snapshot.v1.LiquidityV2PaidFeesStats
- 174, // 75: vega.snapshot.v1.Payload.liquidation:type_name -> vega.snapshot.v1.Liquidation
- 176, // 76: vega.snapshot.v1.Payload.banking_transfer_fee_discounts:type_name -> vega.snapshot.v1.BankingTransferFeeDiscounts
+ 155, // 67: vega.snapshot.v1.Payload.teams:type_name -> vega.snapshot.v1.Teams
+ 158, // 68: vega.snapshot.v1.Payload.team_switches:type_name -> vega.snapshot.v1.TeamSwitches
+ 160, // 69: vega.snapshot.v1.Payload.vesting:type_name -> vega.snapshot.v1.Vesting
+ 162, // 70: vega.snapshot.v1.Payload.referral_program:type_name -> vega.snapshot.v1.ReferralProgramData
+ 169, // 71: vega.snapshot.v1.Payload.activity_streak:type_name -> vega.snapshot.v1.ActivityStreak
+ 171, // 72: vega.snapshot.v1.Payload.volume_discount_program:type_name -> vega.snapshot.v1.VolumeDiscountProgram
+ 128, // 73: vega.snapshot.v1.Payload.liquidity_v2_parameters:type_name -> vega.snapshot.v1.LiquidityV2Parameters
+ 129, // 74: vega.snapshot.v1.Payload.liquidity_v2_paid_fees_stats:type_name -> vega.snapshot.v1.LiquidityV2PaidFeesStats
+ 175, // 75: vega.snapshot.v1.Payload.liquidation:type_name -> vega.snapshot.v1.Liquidation
+ 177, // 76: vega.snapshot.v1.Payload.banking_transfer_fee_discounts:type_name -> vega.snapshot.v1.BankingTransferFeeDiscounts
46, // 77: vega.snapshot.v1.Payload.governance_batch_active:type_name -> vega.snapshot.v1.GovernanceBatchActive
6, // 78: vega.snapshot.v1.HoldingAccountTracker.order_holding:type_name -> vega.snapshot.v1.OrderHoldingQuantities
9, // 79: vega.snapshot.v1.LiquidityTarget.previous_open_interests:type_name -> vega.snapshot.v1.TimestampedOpenInterest
@@ -15551,46 +15625,46 @@ var file_vega_snapshot_v1_snapshot_proto_depIdxs = []int32{
12, // 83: vega.snapshot.v1.LiquiditySupplied.bid_cache:type_name -> vega.snapshot.v1.LiquidityOffsetProbabilityPair
12, // 84: vega.snapshot.v1.LiquiditySupplied.ask_cache:type_name -> vega.snapshot.v1.LiquidityOffsetProbabilityPair
15, // 85: vega.snapshot.v1.OracleDataBatch.oracle_data:type_name -> vega.snapshot.v1.OracleData
- 177, // 86: vega.snapshot.v1.OracleData.signers:type_name -> vega.data.v1.Signer
+ 178, // 86: vega.snapshot.v1.OracleData.signers:type_name -> vega.data.v1.Signer
16, // 87: vega.snapshot.v1.OracleData.data:type_name -> vega.snapshot.v1.OracleDataPair
- 178, // 88: vega.snapshot.v1.OracleData.meta_data:type_name -> vega.data.v1.Property
+ 179, // 88: vega.snapshot.v1.OracleData.meta_data:type_name -> vega.data.v1.Property
18, // 89: vega.snapshot.v1.Witness.resources:type_name -> vega.snapshot.v1.Resource
- 179, // 90: vega.snapshot.v1.CollateralAccounts.accounts:type_name -> vega.Account
- 180, // 91: vega.snapshot.v1.CollateralAssets.assets:type_name -> vega.Asset
- 180, // 92: vega.snapshot.v1.ActiveAssets.assets:type_name -> vega.Asset
- 180, // 93: vega.snapshot.v1.PendingAssets.assets:type_name -> vega.Asset
- 180, // 94: vega.snapshot.v1.PendingAssetUpdates.assets:type_name -> vega.Asset
- 181, // 95: vega.snapshot.v1.Withdrawal.withdrawal:type_name -> vega.Withdrawal
- 182, // 96: vega.snapshot.v1.Deposit.deposit:type_name -> vega.Deposit
+ 180, // 90: vega.snapshot.v1.CollateralAccounts.accounts:type_name -> vega.Account
+ 181, // 91: vega.snapshot.v1.CollateralAssets.assets:type_name -> vega.Asset
+ 181, // 92: vega.snapshot.v1.ActiveAssets.assets:type_name -> vega.Asset
+ 181, // 93: vega.snapshot.v1.PendingAssets.assets:type_name -> vega.Asset
+ 181, // 94: vega.snapshot.v1.PendingAssetUpdates.assets:type_name -> vega.Asset
+ 182, // 95: vega.snapshot.v1.Withdrawal.withdrawal:type_name -> vega.Withdrawal
+ 183, // 96: vega.snapshot.v1.Deposit.deposit:type_name -> vega.Deposit
25, // 97: vega.snapshot.v1.BankingWithdrawals.withdrawals:type_name -> vega.snapshot.v1.Withdrawal
26, // 98: vega.snapshot.v1.BankingDeposits.deposit:type_name -> vega.snapshot.v1.Deposit
- 183, // 99: vega.snapshot.v1.BankingAssetActions.asset_action:type_name -> vega.checkpoint.v1.AssetAction
- 184, // 100: vega.snapshot.v1.BankingRecurringTransfers.recurring_transfers:type_name -> vega.checkpoint.v1.RecurringTransfers
- 185, // 101: vega.snapshot.v1.BankingScheduledTransfers.transfers_at_time:type_name -> vega.checkpoint.v1.ScheduledTransferAtTime
- 186, // 102: vega.snapshot.v1.BankingRecurringGovernanceTransfers.recurring_transfers:type_name -> vega.checkpoint.v1.GovernanceTransfer
- 187, // 103: vega.snapshot.v1.BankingScheduledGovernanceTransfers.transfers_at_time:type_name -> vega.checkpoint.v1.ScheduledGovernanceTransferAtTime
- 188, // 104: vega.snapshot.v1.BankingBridgeState.bridge_state:type_name -> vega.checkpoint.v1.BridgeState
- 189, // 105: vega.snapshot.v1.DelegationActive.delegations:type_name -> vega.Delegation
- 189, // 106: vega.snapshot.v1.DelegationPending.delegations:type_name -> vega.Delegation
- 189, // 107: vega.snapshot.v1.DelegationPending.undelegation:type_name -> vega.Delegation
- 190, // 108: vega.snapshot.v1.ProposalData.proposal:type_name -> vega.Proposal
- 191, // 109: vega.snapshot.v1.ProposalData.yes:type_name -> vega.Vote
- 191, // 110: vega.snapshot.v1.ProposalData.no:type_name -> vega.Vote
- 191, // 111: vega.snapshot.v1.ProposalData.invalid:type_name -> vega.Vote
+ 184, // 99: vega.snapshot.v1.BankingAssetActions.asset_action:type_name -> vega.checkpoint.v1.AssetAction
+ 185, // 100: vega.snapshot.v1.BankingRecurringTransfers.recurring_transfers:type_name -> vega.checkpoint.v1.RecurringTransfers
+ 186, // 101: vega.snapshot.v1.BankingScheduledTransfers.transfers_at_time:type_name -> vega.checkpoint.v1.ScheduledTransferAtTime
+ 187, // 102: vega.snapshot.v1.BankingRecurringGovernanceTransfers.recurring_transfers:type_name -> vega.checkpoint.v1.GovernanceTransfer
+ 188, // 103: vega.snapshot.v1.BankingScheduledGovernanceTransfers.transfers_at_time:type_name -> vega.checkpoint.v1.ScheduledGovernanceTransferAtTime
+ 189, // 104: vega.snapshot.v1.BankingBridgeState.bridge_state:type_name -> vega.checkpoint.v1.BridgeState
+ 190, // 105: vega.snapshot.v1.DelegationActive.delegations:type_name -> vega.Delegation
+ 190, // 106: vega.snapshot.v1.DelegationPending.delegations:type_name -> vega.Delegation
+ 190, // 107: vega.snapshot.v1.DelegationPending.undelegation:type_name -> vega.Delegation
+ 191, // 108: vega.snapshot.v1.ProposalData.proposal:type_name -> vega.Proposal
+ 192, // 109: vega.snapshot.v1.ProposalData.yes:type_name -> vega.Vote
+ 192, // 110: vega.snapshot.v1.ProposalData.no:type_name -> vega.Vote
+ 192, // 111: vega.snapshot.v1.ProposalData.invalid:type_name -> vega.Vote
42, // 112: vega.snapshot.v1.GovernanceEnacted.proposals:type_name -> vega.snapshot.v1.ProposalData
42, // 113: vega.snapshot.v1.GovernanceActive.proposals:type_name -> vega.snapshot.v1.ProposalData
42, // 114: vega.snapshot.v1.BatchProposalData.batch_proposal:type_name -> vega.snapshot.v1.ProposalData
- 190, // 115: vega.snapshot.v1.BatchProposalData.proposals:type_name -> vega.Proposal
+ 191, // 115: vega.snapshot.v1.BatchProposalData.proposals:type_name -> vega.Proposal
45, // 116: vega.snapshot.v1.GovernanceBatchActive.batch_proposals:type_name -> vega.snapshot.v1.BatchProposalData
- 190, // 117: vega.snapshot.v1.GovernanceNode.proposals:type_name -> vega.Proposal
+ 191, // 117: vega.snapshot.v1.GovernanceNode.proposals:type_name -> vega.Proposal
42, // 118: vega.snapshot.v1.GovernanceNode.proposal_data:type_name -> vega.snapshot.v1.ProposalData
- 192, // 119: vega.snapshot.v1.StakingAccount.events:type_name -> vega.events.v1.StakeLinking
+ 193, // 119: vega.snapshot.v1.StakingAccount.events:type_name -> vega.events.v1.StakeLinking
48, // 120: vega.snapshot.v1.StakingAccounts.accounts:type_name -> vega.snapshot.v1.StakingAccount
- 193, // 121: vega.snapshot.v1.StakingAccounts.pending_stake_total_supply:type_name -> vega.StakeTotalSupply
- 194, // 122: vega.snapshot.v1.MatchingBook.buy:type_name -> vega.Order
- 194, // 123: vega.snapshot.v1.MatchingBook.sell:type_name -> vega.Order
- 195, // 124: vega.snapshot.v1.NetParams.params:type_name -> vega.NetworkParameter
- 196, // 125: vega.snapshot.v1.PriceBound.trigger:type_name -> vega.PriceMonitoringTrigger
+ 194, // 121: vega.snapshot.v1.StakingAccounts.pending_stake_total_supply:type_name -> vega.StakeTotalSupply
+ 195, // 122: vega.snapshot.v1.MatchingBook.buy:type_name -> vega.Order
+ 195, // 123: vega.snapshot.v1.MatchingBook.sell:type_name -> vega.Order
+ 196, // 124: vega.snapshot.v1.NetParams.params:type_name -> vega.NetworkParameter
+ 197, // 125: vega.snapshot.v1.PriceBound.trigger:type_name -> vega.PriceMonitoringTrigger
56, // 126: vega.snapshot.v1.PriceRangeCache.bound:type_name -> vega.snapshot.v1.PriceBound
55, // 127: vega.snapshot.v1.PriceRangeCache.range:type_name -> vega.snapshot.v1.PriceRange
52, // 128: vega.snapshot.v1.PriceMonitor.fp_horizons:type_name -> vega.snapshot.v1.DecimalMap
@@ -15599,147 +15673,148 @@ var file_vega_snapshot_v1_snapshot_proto_depIdxs = []int32{
52, // 131: vega.snapshot.v1.PriceMonitor.ref_price_cache:type_name -> vega.snapshot.v1.DecimalMap
58, // 132: vega.snapshot.v1.PriceMonitor.prices_now:type_name -> vega.snapshot.v1.CurrentPrice
59, // 133: vega.snapshot.v1.PriceMonitor.prices_past:type_name -> vega.snapshot.v1.PastPrice
- 197, // 134: vega.snapshot.v1.AuctionState.mode:type_name -> vega.Market.TradingMode
- 197, // 135: vega.snapshot.v1.AuctionState.default_mode:type_name -> vega.Market.TradingMode
- 198, // 136: vega.snapshot.v1.AuctionState.trigger:type_name -> vega.AuctionTrigger
- 199, // 137: vega.snapshot.v1.AuctionState.end:type_name -> vega.AuctionDuration
- 198, // 138: vega.snapshot.v1.AuctionState.extension:type_name -> vega.AuctionTrigger
+ 198, // 134: vega.snapshot.v1.AuctionState.mode:type_name -> vega.Market.TradingMode
+ 198, // 135: vega.snapshot.v1.AuctionState.default_mode:type_name -> vega.Market.TradingMode
+ 199, // 136: vega.snapshot.v1.AuctionState.trigger:type_name -> vega.AuctionTrigger
+ 200, // 137: vega.snapshot.v1.AuctionState.end:type_name -> vega.AuctionDuration
+ 199, // 138: vega.snapshot.v1.AuctionState.extension:type_name -> vega.AuctionTrigger
62, // 139: vega.snapshot.v1.EquityShare.lps:type_name -> vega.snapshot.v1.EquityShareLP
- 200, // 140: vega.snapshot.v1.SpotMarket.market:type_name -> vega.Market
+ 201, // 140: vega.snapshot.v1.SpotMarket.market:type_name -> vega.Market
60, // 141: vega.snapshot.v1.SpotMarket.price_monitor:type_name -> vega.snapshot.v1.PriceMonitor
61, // 142: vega.snapshot.v1.SpotMarket.auction_state:type_name -> vega.snapshot.v1.AuctionState
- 78, // 143: vega.snapshot.v1.SpotMarket.pegged_orders:type_name -> vega.snapshot.v1.PeggedOrders
- 194, // 144: vega.snapshot.v1.SpotMarket.expiring_orders:type_name -> vega.Order
+ 79, // 143: vega.snapshot.v1.SpotMarket.pegged_orders:type_name -> vega.snapshot.v1.PeggedOrders
+ 195, // 144: vega.snapshot.v1.SpotMarket.expiring_orders:type_name -> vega.Order
63, // 145: vega.snapshot.v1.SpotMarket.equity_share:type_name -> vega.snapshot.v1.EquityShare
64, // 146: vega.snapshot.v1.SpotMarket.fee_splitter:type_name -> vega.snapshot.v1.FeeSplitter
- 77, // 147: vega.snapshot.v1.SpotMarket.stop_orders:type_name -> vega.snapshot.v1.StopOrders
- 194, // 148: vega.snapshot.v1.SpotMarket.expiring_stop_orders:type_name -> vega.Order
- 201, // 149: vega.snapshot.v1.SpotMarket.fees_stats:type_name -> vega.events.v1.FeesStats
- 200, // 150: vega.snapshot.v1.Market.market:type_name -> vega.Market
+ 78, // 147: vega.snapshot.v1.SpotMarket.stop_orders:type_name -> vega.snapshot.v1.StopOrders
+ 195, // 148: vega.snapshot.v1.SpotMarket.expiring_stop_orders:type_name -> vega.Order
+ 202, // 149: vega.snapshot.v1.SpotMarket.fees_stats:type_name -> vega.events.v1.FeesStats
+ 201, // 150: vega.snapshot.v1.Market.market:type_name -> vega.Market
60, // 151: vega.snapshot.v1.Market.price_monitor:type_name -> vega.snapshot.v1.PriceMonitor
61, // 152: vega.snapshot.v1.Market.auction_state:type_name -> vega.snapshot.v1.AuctionState
- 78, // 153: vega.snapshot.v1.Market.pegged_orders:type_name -> vega.snapshot.v1.PeggedOrders
- 194, // 154: vega.snapshot.v1.Market.expiring_orders:type_name -> vega.Order
+ 79, // 153: vega.snapshot.v1.Market.pegged_orders:type_name -> vega.snapshot.v1.PeggedOrders
+ 195, // 154: vega.snapshot.v1.Market.expiring_orders:type_name -> vega.Order
63, // 155: vega.snapshot.v1.Market.equity_share:type_name -> vega.snapshot.v1.EquityShare
64, // 156: vega.snapshot.v1.Market.fee_splitter:type_name -> vega.snapshot.v1.FeeSplitter
- 77, // 157: vega.snapshot.v1.Market.stop_orders:type_name -> vega.snapshot.v1.StopOrders
- 194, // 158: vega.snapshot.v1.Market.expiring_stop_orders:type_name -> vega.Order
- 67, // 159: vega.snapshot.v1.Market.product:type_name -> vega.snapshot.v1.Product
- 201, // 160: vega.snapshot.v1.Market.fees_stats:type_name -> vega.events.v1.FeesStats
- 71, // 161: vega.snapshot.v1.Product.perps:type_name -> vega.snapshot.v1.Perps
- 68, // 162: vega.snapshot.v1.Perps.external_data_point:type_name -> vega.snapshot.v1.DataPoint
- 68, // 163: vega.snapshot.v1.Perps.internal_data_point:type_name -> vega.snapshot.v1.DataPoint
- 70, // 164: vega.snapshot.v1.Perps.external_twap_data:type_name -> vega.snapshot.v1.TWAPData
- 70, // 165: vega.snapshot.v1.Perps.internal_twap_data:type_name -> vega.snapshot.v1.TWAPData
- 69, // 166: vega.snapshot.v1.Perps.auction_intervals:type_name -> vega.snapshot.v1.AuctionIntervals
- 72, // 167: vega.snapshot.v1.PricedStopOrders.falls_bellow:type_name -> vega.snapshot.v1.OrdersAtPrice
- 72, // 168: vega.snapshot.v1.PricedStopOrders.rises_above:type_name -> vega.snapshot.v1.OrdersAtPrice
- 76, // 169: vega.snapshot.v1.TrailingStopOrders.falls_bellow:type_name -> vega.snapshot.v1.OffsetsAtPrice
- 76, // 170: vega.snapshot.v1.TrailingStopOrders.rises_above:type_name -> vega.snapshot.v1.OffsetsAtPrice
- 75, // 171: vega.snapshot.v1.OffsetsAtPrice.offsets:type_name -> vega.snapshot.v1.OrdersAtOffset
- 202, // 172: vega.snapshot.v1.StopOrders.stop_orders:type_name -> vega.events.v1.StopOrderEvent
- 73, // 173: vega.snapshot.v1.StopOrders.priced_stop_orders:type_name -> vega.snapshot.v1.PricedStopOrders
- 74, // 174: vega.snapshot.v1.StopOrders.trailing_stop_orders:type_name -> vega.snapshot.v1.TrailingStopOrders
- 194, // 175: vega.snapshot.v1.PeggedOrders.parked_orders:type_name -> vega.Order
- 66, // 176: vega.snapshot.v1.ExecutionMarkets.markets:type_name -> vega.snapshot.v1.Market
- 65, // 177: vega.snapshot.v1.ExecutionMarkets.spot_markets:type_name -> vega.snapshot.v1.SpotMarket
- 203, // 178: vega.snapshot.v1.ExecutionMarkets.settled_markets:type_name -> vega.checkpoint.v1.MarketState
- 81, // 179: vega.snapshot.v1.ExecutionMarkets.successors:type_name -> vega.snapshot.v1.Successors
- 79, // 180: vega.snapshot.v1.ExecutionMarkets.sla_network_params:type_name -> vega.snapshot.v1.SLANetworkParams
- 82, // 181: vega.snapshot.v1.MarketPositions.positions:type_name -> vega.snapshot.v1.Position
- 84, // 182: vega.snapshot.v1.MarketPositions.parties_records:type_name -> vega.snapshot.v1.PartyPositionStats
- 86, // 183: vega.snapshot.v1.SettlementState.last_settled_positions:type_name -> vega.snapshot.v1.LastSettledPosition
- 87, // 184: vega.snapshot.v1.SettlementState.trades:type_name -> vega.snapshot.v1.SettlementTrade
- 91, // 185: vega.snapshot.v1.RewardsPendingPayouts.scheduled_rewards_payout:type_name -> vega.snapshot.v1.ScheduledRewardsPayout
- 92, // 186: vega.snapshot.v1.ScheduledRewardsPayout.rewards_payout:type_name -> vega.snapshot.v1.RewardsPayout
- 93, // 187: vega.snapshot.v1.RewardsPayout.reward_party_amount:type_name -> vega.snapshot.v1.RewardsPartyAmount
- 96, // 188: vega.snapshot.v1.VoteSpamPolicy.party_to_vote:type_name -> vega.snapshot.v1.PartyProposalVoteCount
- 144, // 189: vega.snapshot.v1.VoteSpamPolicy.banned_parties:type_name -> vega.snapshot.v1.BannedParty
- 97, // 190: vega.snapshot.v1.VoteSpamPolicy.token_balance:type_name -> vega.snapshot.v1.PartyTokenBalance
- 98, // 191: vega.snapshot.v1.VoteSpamPolicy.recent_blocks_reject_stats:type_name -> vega.snapshot.v1.BlockRejectStats
- 99, // 192: vega.snapshot.v1.SimpleSpamPolicy.party_to_count:type_name -> vega.snapshot.v1.SpamPartyTransactionCount
- 144, // 193: vega.snapshot.v1.SimpleSpamPolicy.banned_parties:type_name -> vega.snapshot.v1.BannedParty
- 97, // 194: vega.snapshot.v1.SimpleSpamPolicy.token_balance:type_name -> vega.snapshot.v1.PartyTokenBalance
- 101, // 195: vega.snapshot.v1.Notary.notary_sigs:type_name -> vega.snapshot.v1.NotarySigs
- 105, // 196: vega.snapshot.v1.StakeVerifierDeposited.pending_deposited:type_name -> vega.snapshot.v1.StakeVerifierPending
- 105, // 197: vega.snapshot.v1.StakeVerifierRemoved.pending_removed:type_name -> vega.snapshot.v1.StakeVerifierPending
- 108, // 198: vega.snapshot.v1.EthContractCallResults.pending_contract_call_result:type_name -> vega.snapshot.v1.EthContractCallResult
- 115, // 199: vega.snapshot.v1.Topology.validator_data:type_name -> vega.snapshot.v1.ValidatorState
- 109, // 200: vega.snapshot.v1.Topology.pending_pub_key_rotations:type_name -> vega.snapshot.v1.PendingKeyRotation
- 118, // 201: vega.snapshot.v1.Topology.validator_performance:type_name -> vega.snapshot.v1.ValidatorPerformance
- 110, // 202: vega.snapshot.v1.Topology.pending_ethereum_key_rotations:type_name -> vega.snapshot.v1.PendingEthereumKeyRotation
- 112, // 203: vega.snapshot.v1.Topology.signatures:type_name -> vega.snapshot.v1.ToplogySignatures
- 110, // 204: vega.snapshot.v1.Topology.unsolved_ethereum_key_rotations:type_name -> vega.snapshot.v1.PendingEthereumKeyRotation
- 113, // 205: vega.snapshot.v1.ToplogySignatures.pending_signatures:type_name -> vega.snapshot.v1.PendingERC20MultisigControlSignature
- 114, // 206: vega.snapshot.v1.ToplogySignatures.issued_signatures:type_name -> vega.snapshot.v1.IssuedERC20MultisigControlSignature
- 204, // 207: vega.snapshot.v1.ValidatorState.validator_update:type_name -> vega.events.v1.ValidatorUpdate
- 116, // 208: vega.snapshot.v1.ValidatorState.heartbeat_tracker:type_name -> vega.snapshot.v1.HeartbeatTracker
- 205, // 209: vega.snapshot.v1.ValidatorState.ranking_score:type_name -> vega.RankingScore
- 117, // 210: vega.snapshot.v1.ValidatorPerformance.validator_perf_stats:type_name -> vega.snapshot.v1.PerformanceStats
- 122, // 211: vega.snapshot.v1.LiquidityPartiesLiquidityOrders.party_orders:type_name -> vega.snapshot.v1.PartyOrders
- 194, // 212: vega.snapshot.v1.PartyOrders.orders:type_name -> vega.Order
- 122, // 213: vega.snapshot.v1.LiquidityPartiesOrders.party_orders:type_name -> vega.snapshot.v1.PartyOrders
- 206, // 214: vega.snapshot.v1.LiquidityProvisions.liquidity_provisions:type_name -> vega.LiquidityProvision
- 126, // 215: vega.snapshot.v1.LiquidityScores.scores:type_name -> vega.snapshot.v1.LiquidityScore
- 207, // 216: vega.snapshot.v1.LiquidityV2Parameters.market_sla_parameters:type_name -> vega.LiquiditySLAParameters
- 208, // 217: vega.snapshot.v1.LiquidityV2PaidFeesStats.stats:type_name -> vega.events.v1.PaidLiquidityFeesStats
- 206, // 218: vega.snapshot.v1.LiquidityV2Provisions.liquidity_provisions:type_name -> vega.LiquidityProvision
- 206, // 219: vega.snapshot.v1.LiquidityV2PendingProvisions.pending_liquidity_provisions:type_name -> vega.LiquidityProvision
- 132, // 220: vega.snapshot.v1.LiquidityV2Performances.performance_per_party:type_name -> vega.snapshot.v1.LiquidityV2PerformancePerParty
- 126, // 221: vega.snapshot.v1.LiquidityV2Scores.scores:type_name -> vega.snapshot.v1.LiquidityScore
- 12, // 222: vega.snapshot.v1.LiquidityV2Supplied.bid_cache:type_name -> vega.snapshot.v1.LiquidityOffsetProbabilityPair
- 12, // 223: vega.snapshot.v1.LiquidityV2Supplied.ask_cache:type_name -> vega.snapshot.v1.LiquidityOffsetProbabilityPair
- 138, // 224: vega.snapshot.v1.FloatingPointConsensus.next_time_trigger:type_name -> vega.snapshot.v1.NextTimeTrigger
- 136, // 225: vega.snapshot.v1.FloatingPointConsensus.state_variables:type_name -> vega.snapshot.v1.StateVarInternalState
- 137, // 226: vega.snapshot.v1.StateVarInternalState.validators_results:type_name -> vega.snapshot.v1.FloatingPointValidatorResult
- 209, // 227: vega.snapshot.v1.FloatingPointValidatorResult.bundle:type_name -> vega.KeyValueBundle
- 210, // 228: vega.snapshot.v1.MarketTracker.market_activity:type_name -> vega.checkpoint.v1.MarketActivityTracker
- 211, // 229: vega.snapshot.v1.MarketTracker.taker_notional_volume:type_name -> vega.checkpoint.v1.TakerNotionalVolume
- 212, // 230: vega.snapshot.v1.SignerEventsPerAddress.events:type_name -> vega.events.v1.ERC20MultiSigSignerEvent
- 140, // 231: vega.snapshot.v1.ERC20MultiSigTopologyVerified.events_per_address:type_name -> vega.snapshot.v1.SignerEventsPerAddress
- 213, // 232: vega.snapshot.v1.ERC20MultiSigTopologyVerified.threshold:type_name -> vega.events.v1.ERC20MultiSigThresholdSetEvent
- 212, // 233: vega.snapshot.v1.ERC20MultiSigTopologyPending.pending_signers:type_name -> vega.events.v1.ERC20MultiSigSignerEvent
- 213, // 234: vega.snapshot.v1.ERC20MultiSigTopologyPending.pending_threshold_set:type_name -> vega.events.v1.ERC20MultiSigThresholdSetEvent
- 149, // 235: vega.snapshot.v1.ProofOfWork.tx_at_height:type_name -> vega.snapshot.v1.TransactionsAtHeight
- 149, // 236: vega.snapshot.v1.ProofOfWork.tid_at_height:type_name -> vega.snapshot.v1.TransactionsAtHeight
- 144, // 237: vega.snapshot.v1.ProofOfWork.banned:type_name -> vega.snapshot.v1.BannedParty
- 145, // 238: vega.snapshot.v1.ProofOfWork.pow_params:type_name -> vega.snapshot.v1.ProofOfWorkParams
- 146, // 239: vega.snapshot.v1.ProofOfWork.pow_state:type_name -> vega.snapshot.v1.ProofOfWorkState
- 151, // 240: vega.snapshot.v1.ProofOfWork.nonce_refs_at_height:type_name -> vega.snapshot.v1.NonceRefsAtHeight
- 147, // 241: vega.snapshot.v1.ProofOfWorkState.pow_state:type_name -> vega.snapshot.v1.ProofOfWorkBlockState
- 148, // 242: vega.snapshot.v1.ProofOfWorkBlockState.party_state:type_name -> vega.snapshot.v1.ProofOfWorkPartyStateForBlock
- 150, // 243: vega.snapshot.v1.NonceRefsAtHeight.refs:type_name -> vega.snapshot.v1.NonceRef
- 214, // 244: vega.snapshot.v1.ProtocolUpgradeProposals.active_proposals:type_name -> vega.events.v1.ProtocolUpgradeEvent
- 153, // 245: vega.snapshot.v1.ProtocolUpgradeProposals.accepted_proposal:type_name -> vega.snapshot.v1.AcceptedProtocolUpgradeProposal
- 155, // 246: vega.snapshot.v1.Teams.teams:type_name -> vega.snapshot.v1.Team
- 156, // 247: vega.snapshot.v1.Team.referrer:type_name -> vega.snapshot.v1.Membership
- 156, // 248: vega.snapshot.v1.Team.referees:type_name -> vega.snapshot.v1.Membership
- 158, // 249: vega.snapshot.v1.TeamSwitches.team_switches:type_name -> vega.snapshot.v1.TeamSwitch
- 160, // 250: vega.snapshot.v1.Vesting.parties_reward:type_name -> vega.snapshot.v1.PartyReward
- 165, // 251: vega.snapshot.v1.PartyReward.asset_locked:type_name -> vega.snapshot.v1.AssetLocked
- 167, // 252: vega.snapshot.v1.PartyReward.in_vesting:type_name -> vega.snapshot.v1.InVesting
- 164, // 253: vega.snapshot.v1.ReferralProgramData.factor_by_referee:type_name -> vega.snapshot.v1.FactorByReferee
- 215, // 254: vega.snapshot.v1.ReferralProgramData.current_program:type_name -> vega.ReferralProgram
- 215, // 255: vega.snapshot.v1.ReferralProgramData.new_program:type_name -> vega.ReferralProgram
- 162, // 256: vega.snapshot.v1.ReferralProgramData.sets:type_name -> vega.snapshot.v1.ReferralSet
- 156, // 257: vega.snapshot.v1.ReferralSet.referrer:type_name -> vega.snapshot.v1.Membership
- 156, // 258: vega.snapshot.v1.ReferralSet.referees:type_name -> vega.snapshot.v1.Membership
- 163, // 259: vega.snapshot.v1.ReferralSet.running_volumes:type_name -> vega.snapshot.v1.RunningVolume
- 166, // 260: vega.snapshot.v1.AssetLocked.epoch_balances:type_name -> vega.snapshot.v1.EpochBalance
- 169, // 261: vega.snapshot.v1.ActivityStreak.parties_activity_streak:type_name -> vega.snapshot.v1.PartyActivityStreak
- 172, // 262: vega.snapshot.v1.VolumeDiscountProgram.epoch_party_volumes:type_name -> vega.snapshot.v1.EpochPartyVolumes
- 173, // 263: vega.snapshot.v1.VolumeDiscountProgram.average_party_volume:type_name -> vega.snapshot.v1.PartyVolume
- 216, // 264: vega.snapshot.v1.VolumeDiscountProgram.current_program:type_name -> vega.VolumeDiscountProgram
- 216, // 265: vega.snapshot.v1.VolumeDiscountProgram.new_program:type_name -> vega.VolumeDiscountProgram
- 171, // 266: vega.snapshot.v1.VolumeDiscountProgram.factors_by_party:type_name -> vega.snapshot.v1.VolumeDiscountStats
- 173, // 267: vega.snapshot.v1.EpochPartyVolumes.party_volume:type_name -> vega.snapshot.v1.PartyVolume
- 217, // 268: vega.snapshot.v1.Liquidation.config:type_name -> vega.LiquidationStrategy
- 175, // 269: vega.snapshot.v1.BankingTransferFeeDiscounts.party_asset_discount:type_name -> vega.snapshot.v1.PartyAssetAmount
- 270, // [270:270] is the sub-list for method output_type
- 270, // [270:270] is the sub-list for method input_type
- 270, // [270:270] is the sub-list for extension type_name
- 270, // [270:270] is the sub-list for extension extendee
- 0, // [0:270] is the sub-list for field type_name
+ 78, // 157: vega.snapshot.v1.Market.stop_orders:type_name -> vega.snapshot.v1.StopOrders
+ 195, // 158: vega.snapshot.v1.Market.expiring_stop_orders:type_name -> vega.Order
+ 68, // 159: vega.snapshot.v1.Market.product:type_name -> vega.snapshot.v1.Product
+ 202, // 160: vega.snapshot.v1.Market.fees_stats:type_name -> vega.events.v1.FeesStats
+ 67, // 161: vega.snapshot.v1.Market.party_margin_factor:type_name -> vega.snapshot.v1.PartyMarginFactor
+ 72, // 162: vega.snapshot.v1.Product.perps:type_name -> vega.snapshot.v1.Perps
+ 69, // 163: vega.snapshot.v1.Perps.external_data_point:type_name -> vega.snapshot.v1.DataPoint
+ 69, // 164: vega.snapshot.v1.Perps.internal_data_point:type_name -> vega.snapshot.v1.DataPoint
+ 71, // 165: vega.snapshot.v1.Perps.external_twap_data:type_name -> vega.snapshot.v1.TWAPData
+ 71, // 166: vega.snapshot.v1.Perps.internal_twap_data:type_name -> vega.snapshot.v1.TWAPData
+ 70, // 167: vega.snapshot.v1.Perps.auction_intervals:type_name -> vega.snapshot.v1.AuctionIntervals
+ 73, // 168: vega.snapshot.v1.PricedStopOrders.falls_bellow:type_name -> vega.snapshot.v1.OrdersAtPrice
+ 73, // 169: vega.snapshot.v1.PricedStopOrders.rises_above:type_name -> vega.snapshot.v1.OrdersAtPrice
+ 77, // 170: vega.snapshot.v1.TrailingStopOrders.falls_bellow:type_name -> vega.snapshot.v1.OffsetsAtPrice
+ 77, // 171: vega.snapshot.v1.TrailingStopOrders.rises_above:type_name -> vega.snapshot.v1.OffsetsAtPrice
+ 76, // 172: vega.snapshot.v1.OffsetsAtPrice.offsets:type_name -> vega.snapshot.v1.OrdersAtOffset
+ 203, // 173: vega.snapshot.v1.StopOrders.stop_orders:type_name -> vega.events.v1.StopOrderEvent
+ 74, // 174: vega.snapshot.v1.StopOrders.priced_stop_orders:type_name -> vega.snapshot.v1.PricedStopOrders
+ 75, // 175: vega.snapshot.v1.StopOrders.trailing_stop_orders:type_name -> vega.snapshot.v1.TrailingStopOrders
+ 195, // 176: vega.snapshot.v1.PeggedOrders.parked_orders:type_name -> vega.Order
+ 66, // 177: vega.snapshot.v1.ExecutionMarkets.markets:type_name -> vega.snapshot.v1.Market
+ 65, // 178: vega.snapshot.v1.ExecutionMarkets.spot_markets:type_name -> vega.snapshot.v1.SpotMarket
+ 204, // 179: vega.snapshot.v1.ExecutionMarkets.settled_markets:type_name -> vega.checkpoint.v1.MarketState
+ 82, // 180: vega.snapshot.v1.ExecutionMarkets.successors:type_name -> vega.snapshot.v1.Successors
+ 80, // 181: vega.snapshot.v1.ExecutionMarkets.sla_network_params:type_name -> vega.snapshot.v1.SLANetworkParams
+ 83, // 182: vega.snapshot.v1.MarketPositions.positions:type_name -> vega.snapshot.v1.Position
+ 85, // 183: vega.snapshot.v1.MarketPositions.parties_records:type_name -> vega.snapshot.v1.PartyPositionStats
+ 87, // 184: vega.snapshot.v1.SettlementState.last_settled_positions:type_name -> vega.snapshot.v1.LastSettledPosition
+ 88, // 185: vega.snapshot.v1.SettlementState.trades:type_name -> vega.snapshot.v1.SettlementTrade
+ 92, // 186: vega.snapshot.v1.RewardsPendingPayouts.scheduled_rewards_payout:type_name -> vega.snapshot.v1.ScheduledRewardsPayout
+ 93, // 187: vega.snapshot.v1.ScheduledRewardsPayout.rewards_payout:type_name -> vega.snapshot.v1.RewardsPayout
+ 94, // 188: vega.snapshot.v1.RewardsPayout.reward_party_amount:type_name -> vega.snapshot.v1.RewardsPartyAmount
+ 97, // 189: vega.snapshot.v1.VoteSpamPolicy.party_to_vote:type_name -> vega.snapshot.v1.PartyProposalVoteCount
+ 145, // 190: vega.snapshot.v1.VoteSpamPolicy.banned_parties:type_name -> vega.snapshot.v1.BannedParty
+ 98, // 191: vega.snapshot.v1.VoteSpamPolicy.token_balance:type_name -> vega.snapshot.v1.PartyTokenBalance
+ 99, // 192: vega.snapshot.v1.VoteSpamPolicy.recent_blocks_reject_stats:type_name -> vega.snapshot.v1.BlockRejectStats
+ 100, // 193: vega.snapshot.v1.SimpleSpamPolicy.party_to_count:type_name -> vega.snapshot.v1.SpamPartyTransactionCount
+ 145, // 194: vega.snapshot.v1.SimpleSpamPolicy.banned_parties:type_name -> vega.snapshot.v1.BannedParty
+ 98, // 195: vega.snapshot.v1.SimpleSpamPolicy.token_balance:type_name -> vega.snapshot.v1.PartyTokenBalance
+ 102, // 196: vega.snapshot.v1.Notary.notary_sigs:type_name -> vega.snapshot.v1.NotarySigs
+ 106, // 197: vega.snapshot.v1.StakeVerifierDeposited.pending_deposited:type_name -> vega.snapshot.v1.StakeVerifierPending
+ 106, // 198: vega.snapshot.v1.StakeVerifierRemoved.pending_removed:type_name -> vega.snapshot.v1.StakeVerifierPending
+ 109, // 199: vega.snapshot.v1.EthContractCallResults.pending_contract_call_result:type_name -> vega.snapshot.v1.EthContractCallResult
+ 116, // 200: vega.snapshot.v1.Topology.validator_data:type_name -> vega.snapshot.v1.ValidatorState
+ 110, // 201: vega.snapshot.v1.Topology.pending_pub_key_rotations:type_name -> vega.snapshot.v1.PendingKeyRotation
+ 119, // 202: vega.snapshot.v1.Topology.validator_performance:type_name -> vega.snapshot.v1.ValidatorPerformance
+ 111, // 203: vega.snapshot.v1.Topology.pending_ethereum_key_rotations:type_name -> vega.snapshot.v1.PendingEthereumKeyRotation
+ 113, // 204: vega.snapshot.v1.Topology.signatures:type_name -> vega.snapshot.v1.ToplogySignatures
+ 111, // 205: vega.snapshot.v1.Topology.unsolved_ethereum_key_rotations:type_name -> vega.snapshot.v1.PendingEthereumKeyRotation
+ 114, // 206: vega.snapshot.v1.ToplogySignatures.pending_signatures:type_name -> vega.snapshot.v1.PendingERC20MultisigControlSignature
+ 115, // 207: vega.snapshot.v1.ToplogySignatures.issued_signatures:type_name -> vega.snapshot.v1.IssuedERC20MultisigControlSignature
+ 205, // 208: vega.snapshot.v1.ValidatorState.validator_update:type_name -> vega.events.v1.ValidatorUpdate
+ 117, // 209: vega.snapshot.v1.ValidatorState.heartbeat_tracker:type_name -> vega.snapshot.v1.HeartbeatTracker
+ 206, // 210: vega.snapshot.v1.ValidatorState.ranking_score:type_name -> vega.RankingScore
+ 118, // 211: vega.snapshot.v1.ValidatorPerformance.validator_perf_stats:type_name -> vega.snapshot.v1.PerformanceStats
+ 123, // 212: vega.snapshot.v1.LiquidityPartiesLiquidityOrders.party_orders:type_name -> vega.snapshot.v1.PartyOrders
+ 195, // 213: vega.snapshot.v1.PartyOrders.orders:type_name -> vega.Order
+ 123, // 214: vega.snapshot.v1.LiquidityPartiesOrders.party_orders:type_name -> vega.snapshot.v1.PartyOrders
+ 207, // 215: vega.snapshot.v1.LiquidityProvisions.liquidity_provisions:type_name -> vega.LiquidityProvision
+ 127, // 216: vega.snapshot.v1.LiquidityScores.scores:type_name -> vega.snapshot.v1.LiquidityScore
+ 208, // 217: vega.snapshot.v1.LiquidityV2Parameters.market_sla_parameters:type_name -> vega.LiquiditySLAParameters
+ 209, // 218: vega.snapshot.v1.LiquidityV2PaidFeesStats.stats:type_name -> vega.events.v1.PaidLiquidityFeesStats
+ 207, // 219: vega.snapshot.v1.LiquidityV2Provisions.liquidity_provisions:type_name -> vega.LiquidityProvision
+ 207, // 220: vega.snapshot.v1.LiquidityV2PendingProvisions.pending_liquidity_provisions:type_name -> vega.LiquidityProvision
+ 133, // 221: vega.snapshot.v1.LiquidityV2Performances.performance_per_party:type_name -> vega.snapshot.v1.LiquidityV2PerformancePerParty
+ 127, // 222: vega.snapshot.v1.LiquidityV2Scores.scores:type_name -> vega.snapshot.v1.LiquidityScore
+ 12, // 223: vega.snapshot.v1.LiquidityV2Supplied.bid_cache:type_name -> vega.snapshot.v1.LiquidityOffsetProbabilityPair
+ 12, // 224: vega.snapshot.v1.LiquidityV2Supplied.ask_cache:type_name -> vega.snapshot.v1.LiquidityOffsetProbabilityPair
+ 139, // 225: vega.snapshot.v1.FloatingPointConsensus.next_time_trigger:type_name -> vega.snapshot.v1.NextTimeTrigger
+ 137, // 226: vega.snapshot.v1.FloatingPointConsensus.state_variables:type_name -> vega.snapshot.v1.StateVarInternalState
+ 138, // 227: vega.snapshot.v1.StateVarInternalState.validators_results:type_name -> vega.snapshot.v1.FloatingPointValidatorResult
+ 210, // 228: vega.snapshot.v1.FloatingPointValidatorResult.bundle:type_name -> vega.KeyValueBundle
+ 211, // 229: vega.snapshot.v1.MarketTracker.market_activity:type_name -> vega.checkpoint.v1.MarketActivityTracker
+ 212, // 230: vega.snapshot.v1.MarketTracker.taker_notional_volume:type_name -> vega.checkpoint.v1.TakerNotionalVolume
+ 213, // 231: vega.snapshot.v1.SignerEventsPerAddress.events:type_name -> vega.events.v1.ERC20MultiSigSignerEvent
+ 141, // 232: vega.snapshot.v1.ERC20MultiSigTopologyVerified.events_per_address:type_name -> vega.snapshot.v1.SignerEventsPerAddress
+ 214, // 233: vega.snapshot.v1.ERC20MultiSigTopologyVerified.threshold:type_name -> vega.events.v1.ERC20MultiSigThresholdSetEvent
+ 213, // 234: vega.snapshot.v1.ERC20MultiSigTopologyPending.pending_signers:type_name -> vega.events.v1.ERC20MultiSigSignerEvent
+ 214, // 235: vega.snapshot.v1.ERC20MultiSigTopologyPending.pending_threshold_set:type_name -> vega.events.v1.ERC20MultiSigThresholdSetEvent
+ 150, // 236: vega.snapshot.v1.ProofOfWork.tx_at_height:type_name -> vega.snapshot.v1.TransactionsAtHeight
+ 150, // 237: vega.snapshot.v1.ProofOfWork.tid_at_height:type_name -> vega.snapshot.v1.TransactionsAtHeight
+ 145, // 238: vega.snapshot.v1.ProofOfWork.banned:type_name -> vega.snapshot.v1.BannedParty
+ 146, // 239: vega.snapshot.v1.ProofOfWork.pow_params:type_name -> vega.snapshot.v1.ProofOfWorkParams
+ 147, // 240: vega.snapshot.v1.ProofOfWork.pow_state:type_name -> vega.snapshot.v1.ProofOfWorkState
+ 152, // 241: vega.snapshot.v1.ProofOfWork.nonce_refs_at_height:type_name -> vega.snapshot.v1.NonceRefsAtHeight
+ 148, // 242: vega.snapshot.v1.ProofOfWorkState.pow_state:type_name -> vega.snapshot.v1.ProofOfWorkBlockState
+ 149, // 243: vega.snapshot.v1.ProofOfWorkBlockState.party_state:type_name -> vega.snapshot.v1.ProofOfWorkPartyStateForBlock
+ 151, // 244: vega.snapshot.v1.NonceRefsAtHeight.refs:type_name -> vega.snapshot.v1.NonceRef
+ 215, // 245: vega.snapshot.v1.ProtocolUpgradeProposals.active_proposals:type_name -> vega.events.v1.ProtocolUpgradeEvent
+ 154, // 246: vega.snapshot.v1.ProtocolUpgradeProposals.accepted_proposal:type_name -> vega.snapshot.v1.AcceptedProtocolUpgradeProposal
+ 156, // 247: vega.snapshot.v1.Teams.teams:type_name -> vega.snapshot.v1.Team
+ 157, // 248: vega.snapshot.v1.Team.referrer:type_name -> vega.snapshot.v1.Membership
+ 157, // 249: vega.snapshot.v1.Team.referees:type_name -> vega.snapshot.v1.Membership
+ 159, // 250: vega.snapshot.v1.TeamSwitches.team_switches:type_name -> vega.snapshot.v1.TeamSwitch
+ 161, // 251: vega.snapshot.v1.Vesting.parties_reward:type_name -> vega.snapshot.v1.PartyReward
+ 166, // 252: vega.snapshot.v1.PartyReward.asset_locked:type_name -> vega.snapshot.v1.AssetLocked
+ 168, // 253: vega.snapshot.v1.PartyReward.in_vesting:type_name -> vega.snapshot.v1.InVesting
+ 165, // 254: vega.snapshot.v1.ReferralProgramData.factor_by_referee:type_name -> vega.snapshot.v1.FactorByReferee
+ 216, // 255: vega.snapshot.v1.ReferralProgramData.current_program:type_name -> vega.ReferralProgram
+ 216, // 256: vega.snapshot.v1.ReferralProgramData.new_program:type_name -> vega.ReferralProgram
+ 163, // 257: vega.snapshot.v1.ReferralProgramData.sets:type_name -> vega.snapshot.v1.ReferralSet
+ 157, // 258: vega.snapshot.v1.ReferralSet.referrer:type_name -> vega.snapshot.v1.Membership
+ 157, // 259: vega.snapshot.v1.ReferralSet.referees:type_name -> vega.snapshot.v1.Membership
+ 164, // 260: vega.snapshot.v1.ReferralSet.running_volumes:type_name -> vega.snapshot.v1.RunningVolume
+ 167, // 261: vega.snapshot.v1.AssetLocked.epoch_balances:type_name -> vega.snapshot.v1.EpochBalance
+ 170, // 262: vega.snapshot.v1.ActivityStreak.parties_activity_streak:type_name -> vega.snapshot.v1.PartyActivityStreak
+ 173, // 263: vega.snapshot.v1.VolumeDiscountProgram.epoch_party_volumes:type_name -> vega.snapshot.v1.EpochPartyVolumes
+ 174, // 264: vega.snapshot.v1.VolumeDiscountProgram.average_party_volume:type_name -> vega.snapshot.v1.PartyVolume
+ 217, // 265: vega.snapshot.v1.VolumeDiscountProgram.current_program:type_name -> vega.VolumeDiscountProgram
+ 217, // 266: vega.snapshot.v1.VolumeDiscountProgram.new_program:type_name -> vega.VolumeDiscountProgram
+ 172, // 267: vega.snapshot.v1.VolumeDiscountProgram.factors_by_party:type_name -> vega.snapshot.v1.VolumeDiscountStats
+ 174, // 268: vega.snapshot.v1.EpochPartyVolumes.party_volume:type_name -> vega.snapshot.v1.PartyVolume
+ 218, // 269: vega.snapshot.v1.Liquidation.config:type_name -> vega.LiquidationStrategy
+ 176, // 270: vega.snapshot.v1.BankingTransferFeeDiscounts.party_asset_discount:type_name -> vega.snapshot.v1.PartyAssetAmount
+ 271, // [271:271] is the sub-list for method output_type
+ 271, // [271:271] is the sub-list for method input_type
+ 271, // [271:271] is the sub-list for extension type_name
+ 271, // [271:271] is the sub-list for extension extendee
+ 0, // [0:271] is the sub-list for field type_name
}
func init() { file_vega_snapshot_v1_snapshot_proto_init() }
@@ -16541,7 +16616,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Product); i {
+ switch v := v.(*PartyMarginFactor); i {
case 0:
return &v.state
case 1:
@@ -16553,7 +16628,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DataPoint); i {
+ switch v := v.(*Product); i {
case 0:
return &v.state
case 1:
@@ -16565,7 +16640,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AuctionIntervals); i {
+ switch v := v.(*DataPoint); i {
case 0:
return &v.state
case 1:
@@ -16577,7 +16652,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*TWAPData); i {
+ switch v := v.(*AuctionIntervals); i {
case 0:
return &v.state
case 1:
@@ -16589,7 +16664,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Perps); i {
+ switch v := v.(*TWAPData); i {
case 0:
return &v.state
case 1:
@@ -16601,7 +16676,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*OrdersAtPrice); i {
+ switch v := v.(*Perps); i {
case 0:
return &v.state
case 1:
@@ -16613,7 +16688,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PricedStopOrders); i {
+ switch v := v.(*OrdersAtPrice); i {
case 0:
return &v.state
case 1:
@@ -16625,7 +16700,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*TrailingStopOrders); i {
+ switch v := v.(*PricedStopOrders); i {
case 0:
return &v.state
case 1:
@@ -16637,7 +16712,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*OrdersAtOffset); i {
+ switch v := v.(*TrailingStopOrders); i {
case 0:
return &v.state
case 1:
@@ -16649,7 +16724,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*OffsetsAtPrice); i {
+ switch v := v.(*OrdersAtOffset); i {
case 0:
return &v.state
case 1:
@@ -16661,7 +16736,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StopOrders); i {
+ switch v := v.(*OffsetsAtPrice); i {
case 0:
return &v.state
case 1:
@@ -16673,7 +16748,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PeggedOrders); i {
+ switch v := v.(*StopOrders); i {
case 0:
return &v.state
case 1:
@@ -16685,7 +16760,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SLANetworkParams); i {
+ switch v := v.(*PeggedOrders); i {
case 0:
return &v.state
case 1:
@@ -16697,7 +16772,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ExecutionMarkets); i {
+ switch v := v.(*SLANetworkParams); i {
case 0:
return &v.state
case 1:
@@ -16709,7 +16784,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Successors); i {
+ switch v := v.(*ExecutionMarkets); i {
case 0:
return &v.state
case 1:
@@ -16721,7 +16796,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Position); i {
+ switch v := v.(*Successors); i {
case 0:
return &v.state
case 1:
@@ -16733,7 +16808,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*MarketPositions); i {
+ switch v := v.(*Position); i {
case 0:
return &v.state
case 1:
@@ -16745,7 +16820,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PartyPositionStats); i {
+ switch v := v.(*MarketPositions); i {
case 0:
return &v.state
case 1:
@@ -16757,7 +16832,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SettlementState); i {
+ switch v := v.(*PartyPositionStats); i {
case 0:
return &v.state
case 1:
@@ -16769,7 +16844,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LastSettledPosition); i {
+ switch v := v.(*SettlementState); i {
case 0:
return &v.state
case 1:
@@ -16781,7 +16856,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SettlementTrade); i {
+ switch v := v.(*LastSettledPosition); i {
case 0:
return &v.state
case 1:
@@ -16793,7 +16868,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AppState); i {
+ switch v := v.(*SettlementTrade); i {
case 0:
return &v.state
case 1:
@@ -16805,7 +16880,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*EpochState); i {
+ switch v := v.(*AppState); i {
case 0:
return &v.state
case 1:
@@ -16817,7 +16892,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RewardsPendingPayouts); i {
+ switch v := v.(*EpochState); i {
case 0:
return &v.state
case 1:
@@ -16829,7 +16904,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ScheduledRewardsPayout); i {
+ switch v := v.(*RewardsPendingPayouts); i {
case 0:
return &v.state
case 1:
@@ -16841,7 +16916,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RewardsPayout); i {
+ switch v := v.(*ScheduledRewardsPayout); i {
case 0:
return &v.state
case 1:
@@ -16853,7 +16928,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RewardsPartyAmount); i {
+ switch v := v.(*RewardsPayout); i {
case 0:
return &v.state
case 1:
@@ -16865,7 +16940,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LimitState); i {
+ switch v := v.(*RewardsPartyAmount); i {
case 0:
return &v.state
case 1:
@@ -16877,7 +16952,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*VoteSpamPolicy); i {
+ switch v := v.(*LimitState); i {
case 0:
return &v.state
case 1:
@@ -16889,7 +16964,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PartyProposalVoteCount); i {
+ switch v := v.(*VoteSpamPolicy); i {
case 0:
return &v.state
case 1:
@@ -16901,7 +16976,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PartyTokenBalance); i {
+ switch v := v.(*PartyProposalVoteCount); i {
case 0:
return &v.state
case 1:
@@ -16913,7 +16988,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*BlockRejectStats); i {
+ switch v := v.(*PartyTokenBalance); i {
case 0:
return &v.state
case 1:
@@ -16925,7 +17000,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SpamPartyTransactionCount); i {
+ switch v := v.(*BlockRejectStats); i {
case 0:
return &v.state
case 1:
@@ -16937,7 +17012,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SimpleSpamPolicy); i {
+ switch v := v.(*SpamPartyTransactionCount); i {
case 0:
return &v.state
case 1:
@@ -16949,7 +17024,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NotarySigs); i {
+ switch v := v.(*SimpleSpamPolicy); i {
case 0:
return &v.state
case 1:
@@ -16961,7 +17036,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Notary); i {
+ switch v := v.(*NotarySigs); i {
case 0:
return &v.state
case 1:
@@ -16973,7 +17048,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StakeVerifierDeposited); i {
+ switch v := v.(*Notary); i {
case 0:
return &v.state
case 1:
@@ -16985,7 +17060,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StakeVerifierRemoved); i {
+ switch v := v.(*StakeVerifierDeposited); i {
case 0:
return &v.state
case 1:
@@ -16997,7 +17072,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StakeVerifierPending); i {
+ switch v := v.(*StakeVerifierRemoved); i {
case 0:
return &v.state
case 1:
@@ -17009,7 +17084,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*EthOracleVerifierLastBlock); i {
+ switch v := v.(*StakeVerifierPending); i {
case 0:
return &v.state
case 1:
@@ -17021,7 +17096,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*EthContractCallResults); i {
+ switch v := v.(*EthOracleVerifierLastBlock); i {
case 0:
return &v.state
case 1:
@@ -17033,7 +17108,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*EthContractCallResult); i {
+ switch v := v.(*EthContractCallResults); i {
case 0:
return &v.state
case 1:
@@ -17045,7 +17120,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PendingKeyRotation); i {
+ switch v := v.(*EthContractCallResult); i {
case 0:
return &v.state
case 1:
@@ -17057,7 +17132,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PendingEthereumKeyRotation); i {
+ switch v := v.(*PendingKeyRotation); i {
case 0:
return &v.state
case 1:
@@ -17069,7 +17144,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Topology); i {
+ switch v := v.(*PendingEthereumKeyRotation); i {
case 0:
return &v.state
case 1:
@@ -17081,7 +17156,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ToplogySignatures); i {
+ switch v := v.(*Topology); i {
case 0:
return &v.state
case 1:
@@ -17093,7 +17168,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PendingERC20MultisigControlSignature); i {
+ switch v := v.(*ToplogySignatures); i {
case 0:
return &v.state
case 1:
@@ -17105,7 +17180,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*IssuedERC20MultisigControlSignature); i {
+ switch v := v.(*PendingERC20MultisigControlSignature); i {
case 0:
return &v.state
case 1:
@@ -17117,7 +17192,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ValidatorState); i {
+ switch v := v.(*IssuedERC20MultisigControlSignature); i {
case 0:
return &v.state
case 1:
@@ -17129,7 +17204,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*HeartbeatTracker); i {
+ switch v := v.(*ValidatorState); i {
case 0:
return &v.state
case 1:
@@ -17141,7 +17216,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PerformanceStats); i {
+ switch v := v.(*HeartbeatTracker); i {
case 0:
return &v.state
case 1:
@@ -17153,7 +17228,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ValidatorPerformance); i {
+ switch v := v.(*PerformanceStats); i {
case 0:
return &v.state
case 1:
@@ -17165,7 +17240,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LiquidityParameters); i {
+ switch v := v.(*ValidatorPerformance); i {
case 0:
return &v.state
case 1:
@@ -17177,7 +17252,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LiquidityPendingProvisions); i {
+ switch v := v.(*LiquidityParameters); i {
case 0:
return &v.state
case 1:
@@ -17189,7 +17264,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LiquidityPartiesLiquidityOrders); i {
+ switch v := v.(*LiquidityPendingProvisions); i {
case 0:
return &v.state
case 1:
@@ -17201,7 +17276,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PartyOrders); i {
+ switch v := v.(*LiquidityPartiesLiquidityOrders); i {
case 0:
return &v.state
case 1:
@@ -17213,7 +17288,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LiquidityPartiesOrders); i {
+ switch v := v.(*PartyOrders); i {
case 0:
return &v.state
case 1:
@@ -17225,7 +17300,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LiquidityProvisions); i {
+ switch v := v.(*LiquidityPartiesOrders); i {
case 0:
return &v.state
case 1:
@@ -17237,7 +17312,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LiquidityScores); i {
+ switch v := v.(*LiquidityProvisions); i {
case 0:
return &v.state
case 1:
@@ -17249,7 +17324,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LiquidityScore); i {
+ switch v := v.(*LiquidityScores); i {
case 0:
return &v.state
case 1:
@@ -17261,7 +17336,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LiquidityV2Parameters); i {
+ switch v := v.(*LiquidityScore); i {
case 0:
return &v.state
case 1:
@@ -17273,7 +17348,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LiquidityV2PaidFeesStats); i {
+ switch v := v.(*LiquidityV2Parameters); i {
case 0:
return &v.state
case 1:
@@ -17285,7 +17360,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LiquidityV2Provisions); i {
+ switch v := v.(*LiquidityV2PaidFeesStats); i {
case 0:
return &v.state
case 1:
@@ -17297,7 +17372,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LiquidityV2PendingProvisions); i {
+ switch v := v.(*LiquidityV2Provisions); i {
case 0:
return &v.state
case 1:
@@ -17309,7 +17384,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LiquidityV2Performances); i {
+ switch v := v.(*LiquidityV2PendingProvisions); i {
case 0:
return &v.state
case 1:
@@ -17321,7 +17396,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LiquidityV2PerformancePerParty); i {
+ switch v := v.(*LiquidityV2Performances); i {
case 0:
return &v.state
case 1:
@@ -17333,7 +17408,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LiquidityV2Scores); i {
+ switch v := v.(*LiquidityV2PerformancePerParty); i {
case 0:
return &v.state
case 1:
@@ -17345,7 +17420,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LiquidityV2Supplied); i {
+ switch v := v.(*LiquidityV2Scores); i {
case 0:
return &v.state
case 1:
@@ -17357,7 +17432,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*FloatingPointConsensus); i {
+ switch v := v.(*LiquidityV2Supplied); i {
case 0:
return &v.state
case 1:
@@ -17369,7 +17444,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StateVarInternalState); i {
+ switch v := v.(*FloatingPointConsensus); i {
case 0:
return &v.state
case 1:
@@ -17381,7 +17456,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*FloatingPointValidatorResult); i {
+ switch v := v.(*StateVarInternalState); i {
case 0:
return &v.state
case 1:
@@ -17393,7 +17468,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NextTimeTrigger); i {
+ switch v := v.(*FloatingPointValidatorResult); i {
case 0:
return &v.state
case 1:
@@ -17405,7 +17480,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*MarketTracker); i {
+ switch v := v.(*NextTimeTrigger); i {
case 0:
return &v.state
case 1:
@@ -17417,7 +17492,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*SignerEventsPerAddress); i {
+ switch v := v.(*MarketTracker); i {
case 0:
return &v.state
case 1:
@@ -17429,7 +17504,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[140].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ERC20MultiSigTopologyVerified); i {
+ switch v := v.(*SignerEventsPerAddress); i {
case 0:
return &v.state
case 1:
@@ -17441,7 +17516,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[141].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ERC20MultiSigTopologyPending); i {
+ switch v := v.(*ERC20MultiSigTopologyVerified); i {
case 0:
return &v.state
case 1:
@@ -17453,7 +17528,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[142].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ProofOfWork); i {
+ switch v := v.(*ERC20MultiSigTopologyPending); i {
case 0:
return &v.state
case 1:
@@ -17465,7 +17540,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[143].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*BannedParty); i {
+ switch v := v.(*ProofOfWork); i {
case 0:
return &v.state
case 1:
@@ -17477,7 +17552,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[144].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ProofOfWorkParams); i {
+ switch v := v.(*BannedParty); i {
case 0:
return &v.state
case 1:
@@ -17489,7 +17564,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[145].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ProofOfWorkState); i {
+ switch v := v.(*ProofOfWorkParams); i {
case 0:
return &v.state
case 1:
@@ -17501,7 +17576,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[146].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ProofOfWorkBlockState); i {
+ switch v := v.(*ProofOfWorkState); i {
case 0:
return &v.state
case 1:
@@ -17513,7 +17588,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[147].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ProofOfWorkPartyStateForBlock); i {
+ switch v := v.(*ProofOfWorkBlockState); i {
case 0:
return &v.state
case 1:
@@ -17525,7 +17600,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[148].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*TransactionsAtHeight); i {
+ switch v := v.(*ProofOfWorkPartyStateForBlock); i {
case 0:
return &v.state
case 1:
@@ -17537,7 +17612,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[149].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NonceRef); i {
+ switch v := v.(*TransactionsAtHeight); i {
case 0:
return &v.state
case 1:
@@ -17549,7 +17624,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[150].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*NonceRefsAtHeight); i {
+ switch v := v.(*NonceRef); i {
case 0:
return &v.state
case 1:
@@ -17561,7 +17636,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[151].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ProtocolUpgradeProposals); i {
+ switch v := v.(*NonceRefsAtHeight); i {
case 0:
return &v.state
case 1:
@@ -17573,7 +17648,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[152].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AcceptedProtocolUpgradeProposal); i {
+ switch v := v.(*ProtocolUpgradeProposals); i {
case 0:
return &v.state
case 1:
@@ -17585,7 +17660,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[153].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Teams); i {
+ switch v := v.(*AcceptedProtocolUpgradeProposal); i {
case 0:
return &v.state
case 1:
@@ -17597,7 +17672,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[154].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Team); i {
+ switch v := v.(*Teams); i {
case 0:
return &v.state
case 1:
@@ -17609,7 +17684,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[155].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Membership); i {
+ switch v := v.(*Team); i {
case 0:
return &v.state
case 1:
@@ -17621,7 +17696,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[156].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*TeamSwitches); i {
+ switch v := v.(*Membership); i {
case 0:
return &v.state
case 1:
@@ -17633,7 +17708,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[157].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*TeamSwitch); i {
+ switch v := v.(*TeamSwitches); i {
case 0:
return &v.state
case 1:
@@ -17645,7 +17720,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[158].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Vesting); i {
+ switch v := v.(*TeamSwitch); i {
case 0:
return &v.state
case 1:
@@ -17657,7 +17732,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[159].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PartyReward); i {
+ switch v := v.(*Vesting); i {
case 0:
return &v.state
case 1:
@@ -17669,7 +17744,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[160].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ReferralProgramData); i {
+ switch v := v.(*PartyReward); i {
case 0:
return &v.state
case 1:
@@ -17681,7 +17756,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[161].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ReferralSet); i {
+ switch v := v.(*ReferralProgramData); i {
case 0:
return &v.state
case 1:
@@ -17693,7 +17768,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[162].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RunningVolume); i {
+ switch v := v.(*ReferralSet); i {
case 0:
return &v.state
case 1:
@@ -17705,7 +17780,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[163].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*FactorByReferee); i {
+ switch v := v.(*RunningVolume); i {
case 0:
return &v.state
case 1:
@@ -17717,7 +17792,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[164].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AssetLocked); i {
+ switch v := v.(*FactorByReferee); i {
case 0:
return &v.state
case 1:
@@ -17729,7 +17804,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[165].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*EpochBalance); i {
+ switch v := v.(*AssetLocked); i {
case 0:
return &v.state
case 1:
@@ -17741,7 +17816,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[166].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*InVesting); i {
+ switch v := v.(*EpochBalance); i {
case 0:
return &v.state
case 1:
@@ -17753,7 +17828,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[167].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ActivityStreak); i {
+ switch v := v.(*InVesting); i {
case 0:
return &v.state
case 1:
@@ -17765,7 +17840,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[168].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PartyActivityStreak); i {
+ switch v := v.(*ActivityStreak); i {
case 0:
return &v.state
case 1:
@@ -17777,7 +17852,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[169].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*VolumeDiscountProgram); i {
+ switch v := v.(*PartyActivityStreak); i {
case 0:
return &v.state
case 1:
@@ -17789,7 +17864,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[170].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*VolumeDiscountStats); i {
+ switch v := v.(*VolumeDiscountProgram); i {
case 0:
return &v.state
case 1:
@@ -17801,7 +17876,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[171].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*EpochPartyVolumes); i {
+ switch v := v.(*VolumeDiscountStats); i {
case 0:
return &v.state
case 1:
@@ -17813,7 +17888,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[172].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PartyVolume); i {
+ switch v := v.(*EpochPartyVolumes); i {
case 0:
return &v.state
case 1:
@@ -17825,7 +17900,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[173].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Liquidation); i {
+ switch v := v.(*PartyVolume); i {
case 0:
return &v.state
case 1:
@@ -17837,7 +17912,7 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[174].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PartyAssetAmount); i {
+ switch v := v.(*Liquidation); i {
case 0:
return &v.state
case 1:
@@ -17849,6 +17924,18 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
}
}
file_vega_snapshot_v1_snapshot_proto_msgTypes[175].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*PartyAssetAmount); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_vega_snapshot_v1_snapshot_proto_msgTypes[176].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*BankingTransferFeeDiscounts); i {
case 0:
return &v.state
@@ -17938,18 +18025,18 @@ func file_vega_snapshot_v1_snapshot_proto_init() {
(*Payload_BankingTransferFeeDiscounts)(nil),
(*Payload_GovernanceBatchActive)(nil),
}
- file_vega_snapshot_v1_snapshot_proto_msgTypes[66].OneofWrappers = []interface{}{
+ file_vega_snapshot_v1_snapshot_proto_msgTypes[67].OneofWrappers = []interface{}{
(*Product_Perps)(nil),
}
- file_vega_snapshot_v1_snapshot_proto_msgTypes[83].OneofWrappers = []interface{}{}
- file_vega_snapshot_v1_snapshot_proto_msgTypes[107].OneofWrappers = []interface{}{}
+ file_vega_snapshot_v1_snapshot_proto_msgTypes[84].OneofWrappers = []interface{}{}
+ file_vega_snapshot_v1_snapshot_proto_msgTypes[108].OneofWrappers = []interface{}{}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_vega_snapshot_v1_snapshot_proto_rawDesc,
NumEnums: 1,
- NumMessages: 176,
+ NumMessages: 177,
NumExtensions: 0,
NumServices: 0,
},
diff --git a/protos/vega/vega.pb.go b/protos/vega/vega.pb.go
index d0d74123aa..f4f828ee8a 100644
--- a/protos/vega/vega.pb.go
+++ b/protos/vega/vega.pb.go
@@ -458,6 +458,10 @@ const (
OrderError_ORDER_ERROR_POST_ONLY_ORDER_WOULD_TRADE OrderError = 49
// Post order would trade
OrderError_ORDER_ERROR_REDUCE_ONLY_ORDER_WOULD_NOT_REDUCE_POSITION OrderError = 50
+ // Isolated margin check failed
+ OrderError_ORDER_ERROR_ISOLATED_MARGIN_CHECK_FAILED OrderError = 51
+ // In isolated margin pegged orders are rejected
+ OrderError_ORDER_ERROR_PEGGED_ORDERS_NOT_ALLOWED_IN_ISOLATED_MARGIN_MODE OrderError = 52
)
// Enum value maps for OrderError.
@@ -512,6 +516,8 @@ var (
48: "ORDER_ERROR_TOO_MANY_PEGGED_ORDERS",
49: "ORDER_ERROR_POST_ONLY_ORDER_WOULD_TRADE",
50: "ORDER_ERROR_REDUCE_ONLY_ORDER_WOULD_NOT_REDUCE_POSITION",
+ 51: "ORDER_ERROR_ISOLATED_MARGIN_CHECK_FAILED",
+ 52: "ORDER_ERROR_PEGGED_ORDERS_NOT_ALLOWED_IN_ISOLATED_MARGIN_MODE",
}
OrderError_value = map[string]int32{
"ORDER_ERROR_UNSPECIFIED": 0,
@@ -563,6 +569,8 @@ var (
"ORDER_ERROR_TOO_MANY_PEGGED_ORDERS": 48,
"ORDER_ERROR_POST_ONLY_ORDER_WOULD_TRADE": 49,
"ORDER_ERROR_REDUCE_ONLY_ORDER_WOULD_NOT_REDUCE_POSITION": 50,
+ "ORDER_ERROR_ISOLATED_MARGIN_CHECK_FAILED": 51,
+ "ORDER_ERROR_PEGGED_ORDERS_NOT_ALLOWED_IN_ISOLATED_MARGIN_MODE": 52,
}
)
@@ -904,6 +912,14 @@ const (
TransferType_TRANSFER_TYPE_FEE_REFERRER_REWARD_PAY TransferType = 39
// Fee referrer reward received into general account of the referrer.
TransferType_TRANSFER_TYPE_FEE_REFERRER_REWARD_DISTRIBUTE TransferType = 44
+ // Funds transferred from general account to meet order margin requirement in isolated margin mode.
+ TransferType_TRANSFER_TYPE_ORDER_MARGIN_LOW TransferType = 45
+ // Excess order margin amount returned to general account.
+ TransferType_TRANSFER_TYPE_ORDER_MARGIN_HIGH TransferType = 46
+ // Transfer from order margin account to margin account due to increase of position.
+ TransferType_TRANSFER_TYPE_ISOLATED_MARGIN_LOW TransferType = 47
+ // Transfer from excess order margin account to general account.
+ TransferType_TRANSFER_TYPE_ISOLATED_MARGIN_HIGH TransferType = 48
)
// Enum value maps for TransferType.
@@ -948,6 +964,10 @@ var (
38: "TRANSFER_TYPE_REWARDS_VESTED",
39: "TRANSFER_TYPE_FEE_REFERRER_REWARD_PAY",
44: "TRANSFER_TYPE_FEE_REFERRER_REWARD_DISTRIBUTE",
+ 45: "TRANSFER_TYPE_ORDER_MARGIN_LOW",
+ 46: "TRANSFER_TYPE_ORDER_MARGIN_HIGH",
+ 47: "TRANSFER_TYPE_ISOLATED_MARGIN_LOW",
+ 48: "TRANSFER_TYPE_ISOLATED_MARGIN_HIGH",
}
TransferType_value = map[string]int32{
"TRANSFER_TYPE_UNSPECIFIED": 0,
@@ -989,6 +1009,10 @@ var (
"TRANSFER_TYPE_REWARDS_VESTED": 38,
"TRANSFER_TYPE_FEE_REFERRER_REWARD_PAY": 39,
"TRANSFER_TYPE_FEE_REFERRER_REWARD_DISTRIBUTE": 44,
+ "TRANSFER_TYPE_ORDER_MARGIN_LOW": 45,
+ "TRANSFER_TYPE_ORDER_MARGIN_HIGH": 46,
+ "TRANSFER_TYPE_ISOLATED_MARGIN_LOW": 47,
+ "TRANSFER_TYPE_ISOLATED_MARGIN_HIGH": 48,
}
)
@@ -5162,6 +5186,12 @@ type MarginLevels struct {
Asset string `protobuf:"bytes,7,opt,name=asset,proto3" json:"asset,omitempty"`
// Timestamp in Unix nanoseconds for when the ledger entry was created.
Timestamp int64 `protobuf:"varint,8,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
+ // Margin required to cover orders in isolated margin mode.
+ OrderMargin string `protobuf:"bytes,9,opt,name=order_margin,json=orderMargin,proto3" json:"order_margin,omitempty"`
+ // Margin mode for the party, cross margin or isolated margin.
+ MarginMode MarginMode `protobuf:"varint,10,opt,name=margin_mode,json=marginMode,proto3,enum=vega.MarginMode" json:"margin_mode,omitempty"`
+ // Margin factor, relevant only for isolated margin, 0 otherwise.
+ MarginFactor string `protobuf:"bytes,11,opt,name=margin_factor,json=marginFactor,proto3" json:"margin_factor,omitempty"`
}
func (x *MarginLevels) Reset() {
@@ -5252,6 +5282,27 @@ func (x *MarginLevels) GetTimestamp() int64 {
return 0
}
+func (x *MarginLevels) GetOrderMargin() string {
+ if x != nil {
+ return x.OrderMargin
+ }
+ return ""
+}
+
+func (x *MarginLevels) GetMarginMode() MarginMode {
+ if x != nil {
+ return x.MarginMode
+ }
+ return MarginMode_MARGIN_MODE_UNSPECIFIED
+}
+
+func (x *MarginLevels) GetMarginFactor() string {
+ if x != nil {
+ return x.MarginFactor
+ }
+ return ""
+}
+
// Represents market data specific to a perpetual market.
type PerpetualData struct {
state protoimpl.MessageState
@@ -9494,7 +9545,7 @@ var file_vega_vega_proto_rawDesc = []byte{
0x72, 0x69, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73,
0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50, 0x6f,
0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63,
- 0x65, 0x52, 0x08, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x22, 0xad, 0x02, 0x0a, 0x0c,
+ 0x65, 0x52, 0x08, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x22, 0xa8, 0x03, 0x0a, 0x0c,
0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x12, 0x2d, 0x0a, 0x12,
0x6d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6d, 0x61, 0x72, 0x67,
0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x65,
@@ -9513,1072 +9564,1096 @@ var file_vega_vega_proto_rawDesc = []byte{
0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74,
0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x12, 0x1c, 0x0a,
0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03,
- 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0xdd, 0x01, 0x0a, 0x0d,
- 0x50, 0x65, 0x72, 0x70, 0x65, 0x74, 0x75, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x12, 0x27, 0x0a,
- 0x0f, 0x66, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x66, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50,
- 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x75, 0x6e, 0x64, 0x69, 0x6e,
- 0x67, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x75,
- 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x74, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x74,
- 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x74, 0x77, 0x61, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x54, 0x77, 0x61, 0x70, 0x12, 0x23,
- 0x0a, 0x0d, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x74, 0x77, 0x61, 0x70, 0x18,
- 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x54,
- 0x77, 0x61, 0x70, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x65, 0x71, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x05,
- 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x65, 0x71, 0x4e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a,
- 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03,
- 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x53, 0x0a, 0x0b, 0x50,
- 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3c, 0x0a, 0x0e, 0x70, 0x65,
- 0x72, 0x70, 0x65, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x1f, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50, 0x65, 0x72, 0x70, 0x65, 0x74,
- 0x75, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x65, 0x72, 0x70, 0x65,
- 0x74, 0x75, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61,
- 0x22, 0xa8, 0x0c, 0x0a, 0x0a, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12,
- 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x24,
- 0x0a, 0x0e, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x62, 0x69, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x62, 0x65, 0x73, 0x74, 0x42, 0x69, 0x64, 0x50,
- 0x72, 0x69, 0x63, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x62, 0x69, 0x64,
- 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x62,
- 0x65, 0x73, 0x74, 0x42, 0x69, 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x10,
- 0x62, 0x65, 0x73, 0x74, 0x5f, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x62, 0x65, 0x73, 0x74, 0x4f, 0x66, 0x66, 0x65,
- 0x72, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x6f,
- 0x66, 0x66, 0x65, 0x72, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28,
- 0x04, 0x52, 0x0f, 0x62, 0x65, 0x73, 0x74, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x56, 0x6f, 0x6c, 0x75,
- 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x15, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x69,
- 0x63, 0x5f, 0x62, 0x69, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x12, 0x62, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x42, 0x69, 0x64,
- 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x33, 0x0a, 0x16, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x74,
- 0x61, 0x74, 0x69, 0x63, 0x5f, 0x62, 0x69, 0x64, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18,
- 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x13, 0x62, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69,
- 0x63, 0x42, 0x69, 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x17, 0x62, 0x65,
- 0x73, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x5f,
- 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x62, 0x65, 0x73,
- 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x69, 0x63,
- 0x65, 0x12, 0x37, 0x0a, 0x18, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63,
- 0x5f, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x09, 0x20,
- 0x01, 0x28, 0x04, 0x52, 0x15, 0x62, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x4f,
- 0x66, 0x66, 0x65, 0x72, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x69,
- 0x64, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d,
- 0x69, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x69,
- 0x63, 0x5f, 0x6d, 0x69, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x4d, 0x69, 0x64, 0x50, 0x72, 0x69, 0x63,
- 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x06, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d,
- 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69,
- 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x6e, 0x5f,
- 0x69, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c,
- 0x6f, 0x70, 0x65, 0x6e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b,
- 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28,
- 0x03, 0x52, 0x0a, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x12, 0x23, 0x0a,
- 0x0d, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x10,
- 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61,
- 0x72, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x69, 0x76, 0x65,
- 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x69, 0x6e,
- 0x64, 0x69, 0x63, 0x61, 0x74, 0x69, 0x76, 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x2b, 0x0a,
- 0x11, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x76, 0x6f, 0x6c, 0x75,
- 0x6d, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61,
- 0x74, 0x69, 0x76, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x48, 0x0a, 0x13, 0x6d, 0x61,
- 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64,
- 0x65, 0x18, 0x13, 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, 0x11, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67,
- 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x2e, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18,
- 0x14, 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, 0x41, 0x0a, 0x11, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
- 0x6e, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x15, 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, 0x10, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
- 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x61, 0x72, 0x67, 0x65,
- 0x74, 0x5f, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74,
- 0x61, 0x72, 0x67, 0x65, 0x74, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x75,
- 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x18, 0x17, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x0d, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x53, 0x74, 0x61, 0x6b,
- 0x65, 0x12, 0x53, 0x0a, 0x17, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x6d, 0x6f, 0x6e, 0x69, 0x74,
- 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x18, 0x18, 0x20, 0x03,
- 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4d,
- 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x52,
- 0x15, 0x70, 0x72, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67,
- 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74,
- 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x18, 0x19, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x10, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x50,
- 0x72, 0x6f, 0x78, 0x79, 0x12, 0x60, 0x0a, 0x1c, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74,
- 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x73,
- 0x68, 0x61, 0x72, 0x65, 0x18, 0x1a, 0x20, 0x03, 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, 0x19, 0x6c, 0x69, 0x71,
- 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x46, 0x65,
- 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x12, 0x35, 0x0a, 0x0c, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74,
- 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x76,
- 0x65, 0x67, 0x61, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65,
- 0x52, 0x0b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a,
- 0x13, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x74, 0x6f, 0x5f, 0x6d, 0x61,
- 0x72, 0x6b, 0x65, 0x74, 0x18, 0x1c, 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, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61,
- 0x64, 0x65, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x72, 0x6b,
- 0x65, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x77, 0x74, 0x68, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x0c, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x77, 0x74, 0x68, 0x12, 0x39, 0x0a,
- 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x1f, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75,
- 0x63, 0x74, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63,
- 0x74, 0x44, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, 0x16, 0x6c, 0x69, 0x71, 0x75,
- 0x69, 0x64, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x73,
- 0x6c, 0x61, 0x18, 0x20, 0x20, 0x03, 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, 0x14, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50,
- 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x53, 0x6c, 0x61, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70,
- 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x22, 0xdf, 0x01, 0x0a, 0x19,
- 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, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72,
- 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12,
- 0x2a, 0x0a, 0x11, 0x65, 0x71, 0x75, 0x69, 0x74, 0x79, 0x5f, 0x6c, 0x69, 0x6b, 0x65, 0x5f, 0x73,
- 0x68, 0x61, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x65, 0x71, 0x75, 0x69,
- 0x74, 0x79, 0x4c, 0x69, 0x6b, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x12, 0x36, 0x0a, 0x17, 0x61,
- 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x76, 0x61, 0x6c,
- 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x61, 0x76,
- 0x65, 0x72, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x73,
- 0x63, 0x6f, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x76, 0x65, 0x72,
- 0x61, 0x67, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x76, 0x69, 0x72, 0x74,
- 0x75, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x0c, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x22, 0x92, 0x04,
- 0x0a, 0x14, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69,
- 0x64, 0x65, 0x72, 0x53, 0x4c, 0x41, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x50, 0x0a, 0x26,
- 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 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, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x20, 0x63, 0x75,
- 0x72, 0x72, 0x65, 0x6e, 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, 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, 0x03, 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, 0x04, 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, 0x05, 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, 0x45, 0x0a, 0x1f, 0x68, 0x79, 0x73, 0x74, 0x65, 0x72,
- 0x65, 0x73, 0x69, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x66, 0x65, 0x65, 0x5f,
- 0x70, 0x65, 0x6e, 0x61, 0x6c, 0x74, 0x69, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52,
- 0x1c, 0x68, 0x79, 0x73, 0x74, 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x50, 0x65, 0x72, 0x69, 0x6f,
- 0x64, 0x46, 0x65, 0x65, 0x50, 0x65, 0x6e, 0x61, 0x6c, 0x74, 0x69, 0x65, 0x73, 0x12, 0x2d, 0x0a,
- 0x12, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64,
- 0x69, 0x74, 0x79, 0x18, 0x07, 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, 0x08, 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, 0x09, 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, 0xc8, 0x01, 0x0a, 0x15, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x6e, 0x69,
- 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x12, 0x26, 0x0a, 0x0f,
- 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x69, 0x6e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x50,
- 0x72, 0x69, 0x63, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x69,
- 0x64, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6d,
- 0x61, 0x78, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x36, 0x0a, 0x07,
- 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e,
+ 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x21, 0x0a, 0x0c, 0x6f,
+ 0x72, 0x64, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x12, 0x31,
+ 0x0a, 0x0b, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0a, 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, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e, 0x5f, 0x66, 0x61, 0x63, 0x74,
+ 0x6f, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x61, 0x72, 0x67, 0x69, 0x6e,
+ 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xdd, 0x01, 0x0a, 0x0d, 0x50, 0x65, 0x72, 0x70, 0x65,
+ 0x74, 0x75, 0x61, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x75, 0x6e, 0x64,
+ 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0e, 0x66, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e,
+ 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x61, 0x74,
+ 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67,
+ 0x52, 0x61, 0x74, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c,
+ 0x5f, 0x74, 0x77, 0x61, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e, 0x74,
+ 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x54, 0x77, 0x61, 0x70, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x78, 0x74,
+ 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x74, 0x77, 0x61, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0c, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x54, 0x77, 0x61, 0x70, 0x12, 0x17,
+ 0x0a, 0x07, 0x73, 0x65, 0x71, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52,
+ 0x06, 0x73, 0x65, 0x71, 0x4e, 0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74,
+ 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61,
+ 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x53, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63,
+ 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3c, 0x0a, 0x0e, 0x70, 0x65, 0x72, 0x70, 0x65, 0x74, 0x75,
+ 0x61, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e,
+ 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50, 0x65, 0x72, 0x70, 0x65, 0x74, 0x75, 0x61, 0x6c, 0x44, 0x61,
+ 0x74, 0x61, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x65, 0x72, 0x70, 0x65, 0x74, 0x75, 0x61, 0x6c, 0x44,
+ 0x61, 0x74, 0x61, 0x42, 0x06, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xa8, 0x0c, 0x0a, 0x0a,
+ 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61,
+ 0x72, 0x6b, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
+ 0x6d, 0x61, 0x72, 0x6b, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x62, 0x65, 0x73,
+ 0x74, 0x5f, 0x62, 0x69, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0c, 0x62, 0x65, 0x73, 0x74, 0x42, 0x69, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12,
+ 0x26, 0x0a, 0x0f, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x62, 0x69, 0x64, 0x5f, 0x76, 0x6f, 0x6c, 0x75,
+ 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x62, 0x65, 0x73, 0x74, 0x42, 0x69,
+ 0x64, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x62, 0x65, 0x73, 0x74, 0x5f,
+ 0x6f, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x0e, 0x62, 0x65, 0x73, 0x74, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x69, 0x63,
+ 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x5f,
+ 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x62, 0x65,
+ 0x73, 0x74, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x31, 0x0a,
+ 0x15, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x62, 0x69, 0x64,
+ 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x62, 0x65,
+ 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x42, 0x69, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65,
+ 0x12, 0x33, 0x0a, 0x16, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f,
+ 0x62, 0x69, 0x64, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04,
+ 0x52, 0x13, 0x62, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x42, 0x69, 0x64, 0x56,
+ 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x17, 0x62, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x74,
+ 0x61, 0x74, 0x69, 0x63, 0x5f, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65,
+ 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x62, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74,
+ 0x69, 0x63, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x37, 0x0a, 0x18,
+ 0x62, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x6f, 0x66, 0x66, 0x65,
+ 0x72, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x15,
+ 0x62, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x56,
+ 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x69, 0x64, 0x5f, 0x70, 0x72, 0x69,
+ 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x69, 0x64, 0x50, 0x72, 0x69,
+ 0x63, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x6d, 0x69, 0x64,
+ 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x74,
+ 0x61, 0x74, 0x69, 0x63, 0x4d, 0x69, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06,
+ 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x61,
+ 0x72, 0x6b, 0x65, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
+ 0x70, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
+ 0x6d, 0x70, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72,
+ 0x65, 0x73, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x6e, 0x49,
+ 0x6e, 0x74, 0x65, 0x72, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x75, 0x63, 0x74, 0x69,
+ 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x61, 0x75,
+ 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x75, 0x63, 0x74,
+ 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52,
+ 0x0c, 0x61, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x29, 0x0a,
+ 0x10, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x70, 0x72, 0x69, 0x63,
+ 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74,
+ 0x69, 0x76, 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x69, 0x6e, 0x64, 0x69,
+ 0x63, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x12, 0x20,
+ 0x01, 0x28, 0x04, 0x52, 0x10, 0x69, 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x69, 0x76, 0x65, 0x56,
+ 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x48, 0x0a, 0x13, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f,
+ 0x74, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x13, 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, 0x11, 0x6d, 0x61,
+ 0x72, 0x6b, 0x65, 0x74, 0x54, 0x72, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x12,
+ 0x2e, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x14, 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,
+ 0x41, 0x0a, 0x11, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x72, 0x69,
+ 0x67, 0x67, 0x65, 0x72, 0x18, 0x15, 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, 0x10, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67,
+ 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x73, 0x74, 0x61,
+ 0x6b, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
+ 0x53, 0x74, 0x61, 0x6b, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65,
+ 0x64, 0x5f, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73,
+ 0x75, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x12, 0x53, 0x0a, 0x17,
+ 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67,
+ 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x18, 0x18, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 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, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
- 0x65, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72,
- 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, 0x22, 0x51, 0x0a,
- 0x0b, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x12, 0x0a, 0x04,
- 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65,
- 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e,
- 0x6e, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6e, 0x6e, 0x65, 0x72,
- 0x22, 0x3a, 0x0a, 0x10, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d,
- 0x65, 0x74, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xfa, 0x03, 0x0a,
- 0x0d, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x2c,
- 0x0a, 0x12, 0x63, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x5f, 0x6d, 0x61,
- 0x72, 0x6b, 0x65, 0x74, 0x18, 0x01, 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, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x63, 0x61, 0x6e, 0x50, 0x72, 0x6f, 0x70,
- 0x6f, 0x73, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 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, 0x04, 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, 0x05, 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, 0x25, 0x0a, 0x0e, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x5f, 0x6c, 0x6f,
- 0x61, 0x64, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x67, 0x65, 0x6e, 0x65,
- 0x73, 0x69, 0x73, 0x4c, 0x6f, 0x61, 0x64, 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, 0x08, 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, 0x09, 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, 0x35, 0x0a, 0x17, 0x63, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x6f,
- 0x70, 0x6f, 0x73, 0x65, 0x5f, 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74,
- 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x63, 0x61, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x6f,
- 0x73, 0x65, 0x53, 0x70, 0x6f, 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x3f, 0x0a, 0x1c,
- 0x63, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x70,
- 0x65, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x18, 0x0b, 0x20, 0x01,
- 0x28, 0x08, 0x52, 0x19, 0x63, 0x61, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x50, 0x65,
- 0x72, 0x70, 0x65, 0x74, 0x75, 0x61, 0x6c, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x4a, 0x04, 0x08,
- 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x22, 0x7d, 0x0a, 0x0e, 0x4c, 0x69, 0x71,
- 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x33, 0x0a, 0x09, 0x72,
- 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15,
- 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50, 0x65, 0x67, 0x67, 0x65, 0x64, 0x52, 0x65, 0x66, 0x65,
- 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
- 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6f, 0x6e,
- 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x73, 0x0a, 0x17, 0x4c, 0x69, 0x71, 0x75,
- 0x69, 0x64, 0x69, 0x74, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65,
- 0x6e, 0x63, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x3d,
- 0x0a, 0x0f, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x5f, 0x6f, 0x72, 0x64, 0x65,
- 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4c,
- 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x0e, 0x6c,
- 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x22, 0xd2, 0x04,
- 0x0a, 0x12, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69,
- 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x02, 0x69, 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,
- 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, 0x1b, 0x0a,
- 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x6f,
- 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18,
- 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e,
- 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x07,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, 0x33, 0x0a, 0x05, 0x73, 0x65, 0x6c,
- 0x6c, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e,
- 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65,
- 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x05, 0x73, 0x65, 0x6c, 0x6c, 0x73, 0x12, 0x31,
- 0x0a, 0x04, 0x62, 0x75, 0x79, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76,
- 0x65, 0x67, 0x61, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x4f, 0x72, 0x64,
- 0x65, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x04, 0x62, 0x75, 0x79,
- 0x73, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01,
- 0x28, 0x04, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x06, 0x73,
- 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x76, 0x65,
- 0x67, 0x61, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76,
- 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74,
- 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
- 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
- 0x63, 0x65, 0x22, 0x9d, 0x01, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a,
- 0x12, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
- 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f,
- 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x54, 0x41, 0x54,
- 0x55, 0x53, 0x5f, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10,
- 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x45, 0x44,
- 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x45, 0x4a,
- 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x04, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x55,
- 0x53, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x45, 0x44, 0x10, 0x05, 0x12, 0x12,
- 0x0a, 0x0e, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47,
- 0x10, 0x06, 0x22, 0xd0, 0x03, 0x0a, 0x0e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x43,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
- 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x65, 0x74, 0x77, 0x6f,
- 0x72, 0x6b, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12,
- 0x5a, 0x0a, 0x1a, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x5f, 0x62, 0x72,
- 0x69, 0x64, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72,
- 0x65, 0x75, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69,
- 0x67, 0x52, 0x18, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x42, 0x72, 0x69,
- 0x64, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x63,
- 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01,
- 0x28, 0x0d, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x73, 0x12, 0x54, 0x0a, 0x17, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x72, 0x69,
- 0x64, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01,
+ 0x72, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x52, 0x15, 0x70, 0x72, 0x69, 0x63,
+ 0x65, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x75, 0x6e, 0x64,
+ 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d,
+ 0x61, 0x72, 0x6b, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x12,
+ 0x60, 0x0a, 0x1c, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x5f, 0x70, 0x72, 0x6f,
+ 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x18,
+ 0x1a, 0x20, 0x03, 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, 0x19, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74,
+ 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x46, 0x65, 0x65, 0x53, 0x68, 0x61, 0x72,
+ 0x65, 0x12, 0x35, 0x0a, 0x0c, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74,
+ 0x65, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4d,
+ 0x61, 0x72, 0x6b, 0x65, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x6d, 0x61, 0x72,
+ 0x6b, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x13, 0x6e, 0x65, 0x78, 0x74,
+ 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x74, 0x6f, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x18,
+ 0x1c, 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, 0x1d, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x61, 0x64, 0x65, 0x64, 0x50, 0x72,
+ 0x69, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x67, 0x72,
+ 0x6f, 0x77, 0x74, 0x68, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x61, 0x72, 0x6b,
+ 0x65, 0x74, 0x47, 0x72, 0x6f, 0x77, 0x74, 0x68, 0x12, 0x39, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x64,
+ 0x75, 0x63, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11,
+ 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x44, 0x61, 0x74,
+ 0x61, 0x48, 0x00, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x44, 0x61, 0x74, 0x61,
+ 0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, 0x16, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79,
+ 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x73, 0x6c, 0x61, 0x18, 0x20, 0x20,
+ 0x03, 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,
+ 0x14, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64,
+ 0x65, 0x72, 0x53, 0x6c, 0x61, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63,
+ 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x22, 0xdf, 0x01, 0x0a, 0x19, 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, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x2a, 0x0a, 0x11, 0x65, 0x71,
+ 0x75, 0x69, 0x74, 0x79, 0x5f, 0x6c, 0x69, 0x6b, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x65, 0x71, 0x75, 0x69, 0x74, 0x79, 0x4c, 0x69, 0x6b,
+ 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x12, 0x36, 0x0a, 0x17, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67,
+ 0x65, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65,
+ 0x45, 0x6e, 0x74, 0x72, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23,
+ 0x0a, 0x0d, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18,
+ 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x53, 0x63,
+ 0x6f, 0x72, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x73,
+ 0x74, 0x61, 0x6b, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x76, 0x69, 0x72, 0x74,
+ 0x75, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x22, 0x92, 0x04, 0x0a, 0x14, 0x4c, 0x69, 0x71,
+ 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x53, 0x4c,
+ 0x41, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x05, 0x70, 0x61, 0x72, 0x74, 0x79, 0x12, 0x50, 0x0a, 0x26, 0x63, 0x75, 0x72, 0x72, 0x65,
+ 0x6e, 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, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 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, 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, 0x03, 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,
+ 0x04, 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, 0x05, 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, 0x45, 0x0a, 0x1f, 0x68, 0x79, 0x73, 0x74, 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x5f,
+ 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x65, 0x6e, 0x61, 0x6c,
+ 0x74, 0x69, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x1c, 0x68, 0x79, 0x73, 0x74,
+ 0x65, 0x72, 0x65, 0x73, 0x69, 0x73, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x46, 0x65, 0x65, 0x50,
+ 0x65, 0x6e, 0x61, 0x6c, 0x74, 0x69, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x72, 0x65, 0x71, 0x75,
+ 0x69, 0x72, 0x65, 0x64, 0x5f, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x18, 0x07,
+ 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,
+ 0x08, 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, 0x09, 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, 0xc8, 0x01,
+ 0x0a, 0x15, 0x50, 0x72, 0x69, 0x63, 0x65, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e,
+ 0x67, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6d, 0x69, 0x6e, 0x5f, 0x76,
+ 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0d, 0x6d, 0x69, 0x6e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12,
+ 0x26, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x70, 0x72, 0x69,
+ 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x56, 0x61, 0x6c,
+ 0x69, 0x64, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67,
+ 0x65, 0x72, 0x18, 0x03, 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, 0x12,
+ 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x69,
+ 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65,
+ 0x6e, 0x63, 0x65, 0x50, 0x72, 0x69, 0x63, 0x65, 0x22, 0x51, 0x0a, 0x0b, 0x45, 0x72, 0x72, 0x6f,
+ 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d,
+ 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65,
+ 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x22, 0x3a, 0x0a, 0x10, 0x4e,
+ 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12,
+ 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
+ 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xfa, 0x03, 0x0a, 0x0d, 0x4e, 0x65, 0x74, 0x77,
+ 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x61, 0x6e,
+ 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x18,
+ 0x01, 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, 0x02, 0x20, 0x01,
+ 0x28, 0x08, 0x52, 0x0f, 0x63, 0x61, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x41, 0x73,
+ 0x73, 0x65, 0x74, 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, 0x04, 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, 0x05, 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, 0x25, 0x0a,
+ 0x0e, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x18,
+ 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x4c, 0x6f,
+ 0x61, 0x64, 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, 0x08, 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, 0x09, 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, 0x35, 0x0a, 0x17, 0x63, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x5f,
+ 0x73, 0x70, 0x6f, 0x74, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28,
+ 0x08, 0x52, 0x14, 0x63, 0x61, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x53, 0x70, 0x6f,
+ 0x74, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x12, 0x3f, 0x0a, 0x1c, 0x63, 0x61, 0x6e, 0x5f, 0x70,
+ 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x70, 0x65, 0x74, 0x75, 0x61, 0x6c,
+ 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x19, 0x63,
+ 0x61, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x50, 0x65, 0x72, 0x70, 0x65, 0x74, 0x75,
+ 0x61, 0x6c, 0x4d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04,
+ 0x08, 0x06, 0x10, 0x07, 0x22, 0x7d, 0x0a, 0x0e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74,
+ 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x33, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65,
+ 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x76, 0x65, 0x67, 0x61,
+ 0x2e, 0x50, 0x65, 0x67, 0x67, 0x65, 0x64, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
+ 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70,
+ 0x72, 0x6f, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52,
+ 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x6f,
+ 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x66, 0x66,
+ 0x73, 0x65, 0x74, 0x22, 0x73, 0x0a, 0x17, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79,
+ 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x19,
+ 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x0f, 0x6c, 0x69, 0x71,
+ 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69, 0x64,
+ 0x69, 0x74, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x0e, 0x6c, 0x69, 0x71, 0x75, 0x69, 0x64,
+ 0x69, 0x74, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x22, 0xd2, 0x04, 0x0a, 0x12, 0x4c, 0x69, 0x71,
+ 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12,
+ 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 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, 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, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b,
+ 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72,
+ 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d,
+ 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x10, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75,
+ 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x03, 0x66, 0x65, 0x65, 0x12, 0x33, 0x0a, 0x05, 0x73, 0x65, 0x6c, 0x6c, 0x73, 0x18, 0x08, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4c, 0x69, 0x71, 0x75, 0x69,
+ 0x64, 0x69, 0x74, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
+ 0x63, 0x65, 0x52, 0x05, 0x73, 0x65, 0x6c, 0x6c, 0x73, 0x12, 0x31, 0x0a, 0x04, 0x62, 0x75, 0x79,
+ 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4c,
+ 0x69, 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x66,
+ 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x04, 0x62, 0x75, 0x79, 0x73, 0x12, 0x18, 0x0a, 0x07,
+ 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x76,
+ 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
+ 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4c, 0x69,
+ 0x71, 0x75, 0x69, 0x64, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e,
+ 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
+ 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x0c, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x22, 0x9d, 0x01,
+ 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x54, 0x41, 0x54,
+ 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00,
+ 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56,
+ 0x45, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x54,
+ 0x4f, 0x50, 0x50, 0x45, 0x44, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x54, 0x41, 0x54, 0x55,
+ 0x53, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x12, 0x13, 0x0a,
+ 0x0f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x45, 0x44,
+ 0x10, 0x04, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x44,
+ 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x45, 0x44, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x54, 0x41,
+ 0x54, 0x55, 0x53, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x06, 0x22, 0xd0, 0x03,
+ 0x0a, 0x0e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
+ 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12,
+ 0x19, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x5a, 0x0a, 0x1a, 0x63, 0x6f,
+ 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f,
+ 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c,
+ 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x43, 0x6f,
+ 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x18, 0x63, 0x6f,
+ 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x43, 0x6f,
+ 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72,
+ 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x63,
+ 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x54, 0x0a, 0x17,
+ 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x63,
+ 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e,
+ 0x76, 0x65, 0x67, 0x61, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x43, 0x6f, 0x6e,
+ 0x74, 0x72, 0x61, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x15, 0x73, 0x74, 0x61,
+ 0x6b, 0x69, 0x6e, 0x67, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61,
+ 0x63, 0x74, 0x12, 0x52, 0x0a, 0x16, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x65, 0x73, 0x74,
+ 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x06, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65,
0x75, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
- 0x52, 0x15, 0x73, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x43,
- 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x52, 0x0a, 0x16, 0x74, 0x6f, 0x6b, 0x65, 0x6e,
- 0x5f, 0x76, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63,
- 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x45,
- 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x43,
- 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x14, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x65, 0x73, 0x74,
- 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x58, 0x0a, 0x19, 0x6d,
- 0x75, 0x6c, 0x74, 0x69, 0x73, 0x69, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f,
- 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c,
- 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x43, 0x6f,
- 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x17, 0x6d, 0x75,
- 0x6c, 0x74, 0x69, 0x73, 0x69, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, 0x6f, 0x6e,
- 0x74, 0x72, 0x61, 0x63, 0x74, 0x22, 0x6a, 0x0a, 0x16, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75,
- 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12,
- 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x64, 0x65, 0x70,
- 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65,
- 0x69, 0x67, 0x68, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x15, 0x64, 0x65, 0x70, 0x6c,
- 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68,
- 0x74, 0x22, 0xac, 0x01, 0x0a, 0x0f, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x73,
- 0x74, 0x61, 0x6d, 0x70, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74,
- 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74,
- 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x5f, 0x74,
- 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72,
- 0x79, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d,
- 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65,
- 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18,
- 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x66, 0x69, 0x72, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63,
- 0x6b, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18,
- 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b,
- 0x22, 0xb0, 0x01, 0x0a, 0x05, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65,
- 0x71, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x73, 0x65, 0x71, 0x12, 0x35, 0x0a, 0x0a,
- 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x15, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x54, 0x69, 0x6d,
- 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x52, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
- 0x6d, 0x70, 0x73, 0x12, 0x2a, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72,
- 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4e,
- 0x6f, 0x64, 0x65, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12,
- 0x32, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04,
- 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, 0x8e, 0x01, 0x0a, 0x12, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x50, 0x61, 0x72,
- 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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, 0x12, 0x18, 0x0a,
- 0x07, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07,
- 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x6e, 0x6c, 0x69, 0x6e,
- 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x12,
- 0x23, 0x0a, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73,
- 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x77,
- 0x61, 0x72, 0x64, 0x73, 0x22, 0x53, 0x0a, 0x09, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x44, 0x61, 0x74,
- 0x61, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
- 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x66, 0x66, 0x6c, 0x69,
- 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e,
- 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x05, 0x52, 0x06, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x22, 0x9b, 0x02, 0x0a, 0x0c, 0x52, 0x61,
- 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74,
- 0x61, 0x6b, 0x65, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x0a, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x70,
- 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61,
- 0x6e, 0x63, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x42, 0x0a, 0x0f, 0x70, 0x72, 0x65, 0x76,
- 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28,
- 0x0e, 0x32, 0x19, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
- 0x6f, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0e, 0x70, 0x72,
- 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x31, 0x0a, 0x06,
- 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x76,
+ 0x52, 0x14, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f,
+ 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x58, 0x0a, 0x19, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x73,
+ 0x69, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72,
+ 0x61, 0x63, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x76, 0x65, 0x67, 0x61,
+ 0x2e, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63,
+ 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x17, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x73, 0x69,
+ 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74,
+ 0x22, 0x6a, 0x0a, 0x16, 0x45, 0x74, 0x68, 0x65, 0x72, 0x65, 0x75, 0x6d, 0x43, 0x6f, 0x6e, 0x74,
+ 0x72, 0x61, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64,
+ 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64,
+ 0x72, 0x65, 0x73, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65,
+ 0x6e, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18,
+ 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x15, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e,
+ 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0xac, 0x01, 0x0a,
+ 0x0f, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73,
+ 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12,
+ 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65,
+ 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x03, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x66,
+ 0x69, 0x72, 0x73, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04,
+ 0x52, 0x0a, 0x66, 0x69, 0x72, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1d, 0x0a, 0x0a,
+ 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04,
+ 0x52, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0xb0, 0x01, 0x0a, 0x05,
+ 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x71, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x04, 0x52, 0x03, 0x73, 0x65, 0x71, 0x12, 0x35, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x73,
+ 0x74, 0x61, 0x6d, 0x70, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x76, 0x65,
+ 0x67, 0x61, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
+ 0x70, 0x73, 0x52, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x73, 0x12, 0x2a,
+ 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03,
+ 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x0a,
+ 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x32, 0x0a, 0x0b, 0x64, 0x65,
+ 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 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, 0x8e,
+ 0x01, 0x0a, 0x12, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 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, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x66, 0x66, 0x6c,
+ 0x69, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x6f, 0x66, 0x66, 0x6c, 0x69,
+ 0x6e, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x04, 0x52, 0x06, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x6f,
+ 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x01, 0x52, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x22,
+ 0x53, 0x0a, 0x09, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05,
+ 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x6f, 0x74,
+ 0x61, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x05, 0x52, 0x07, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x16, 0x0a, 0x06,
+ 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x6e,
+ 0x6c, 0x69, 0x6e, 0x65, 0x22, 0x9b, 0x02, 0x0a, 0x0c, 0x52, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67,
+ 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x5f, 0x73,
+ 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x6b,
+ 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72,
+ 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x10, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x63,
+ 0x6f, 0x72, 0x65, 0x12, 0x42, 0x0a, 0x0f, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f,
+ 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x76,
0x65, 0x67, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x6f, 0x64,
- 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
- 0x21, 0x0a, 0x0c, 0x76, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x18,
- 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x76, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x77,
- 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x63,
- 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x61, 0x6e, 0x6b, 0x69,
- 0x6e, 0x67, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x22, 0xab, 0x02, 0x0a, 0x0b, 0x52, 0x65, 0x77, 0x61,
- 0x72, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x72, 0x61, 0x77, 0x5f, 0x76,
- 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x72, 0x61, 0x77, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74,
- 0x6f, 0x72, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x70, 0x65, 0x72, 0x66, 0x6f,
- 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x10, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x53,
- 0x63, 0x6f, 0x72, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x73, 0x69, 0x67,
- 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x75,
- 0x6c, 0x74, 0x69, 0x73, 0x69, 0x67, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x76,
- 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x04,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53,
- 0x63, 0x6f, 0x72, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x73,
- 0x65, 0x64, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f,
- 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x73, 0x65, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12,
- 0x44, 0x0a, 0x10, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x74, 0x61,
- 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x76, 0x65, 0x67, 0x61,
- 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74,
- 0x61, 0x74, 0x75, 0x73, 0x52, 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53,
- 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xb3, 0x05, 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65, 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, 0x2c, 0x0a, 0x12, 0x73, 0x74, 0x61, 0x6b, 0x65,
- 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x07, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x64, 0x42, 0x79, 0x4f, 0x70, 0x65,
- 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x2e, 0x0a, 0x13, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x64, 0x5f,
- 0x62, 0x79, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x11, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x64, 0x42, 0x79, 0x44, 0x65, 0x6c, 0x65,
- 0x67, 0x61, 0x74, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x64, 0x5f,
- 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x74, 0x61,
- 0x6b, 0x65, 0x64, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x5f,
- 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x18, 0x0a,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x65,
- 0x64, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e,
- 0x67, 0x5f, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70,
- 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x12, 0x2e, 0x0a, 0x0a, 0x65,
- 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x0f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x44, 0x61, 0x74, 0x61,
- 0x52, 0x09, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x44, 0x61, 0x74, 0x61, 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, 0x32, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0e, 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, 0x72, 0x65, 0x77,
- 0x61, 0x72, 0x64, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x11, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x53, 0x63, 0x6f,
- 0x72, 0x65, 0x52, 0x0b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12,
- 0x37, 0x0a, 0x0d, 0x72, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65,
- 0x18, 0x10, 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, 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, 0x9c, 0x01, 0x0a, 0x07,
- 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x1a, 0x0a,
- 0x08, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52,
- 0x08, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f,
- 0x6d, 0x6f, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f,
- 0x6d, 0x6f, 0x74, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x64,
- 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x64, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x64, 0x12,
- 0x1d, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d,
- 0x48, 0x00, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x88, 0x01, 0x01, 0x42, 0x0a,
- 0x0a, 0x08, 0x5f, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x22, 0xad, 0x02, 0x0a, 0x08, 0x4e,
- 0x6f, 0x64, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x6b, 0x65,
- 0x64, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73,
- 0x74, 0x61, 0x6b, 0x65, 0x64, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f,
- 0x74, 0x61, 0x6c, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52,
- 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x69,
- 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x6f, 0x64,
- 0x65, 0x73, 0x12, 0x38, 0x0a, 0x10, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74,
- 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x76,
- 0x65, 0x67, 0x61, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x74, 0x52, 0x0f, 0x74, 0x65, 0x6e,
- 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x0c,
- 0x65, 0x72, 0x73, 0x61, 0x74, 0x7a, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65,
- 0x74, 0x52, 0x0b, 0x65, 0x72, 0x73, 0x61, 0x74, 0x7a, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x32,
- 0x0a, 0x0d, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18,
- 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4e, 0x6f, 0x64,
- 0x65, 0x53, 0x65, 0x74, 0x52, 0x0c, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4e, 0x6f, 0x64,
- 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01,
- 0x28, 0x02, 0x52, 0x06, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x70, 0x0a, 0x0a, 0x44, 0x65,
- 0x6c, 0x65, 0x67, 0x61, 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, 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, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e,
- 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12,
- 0x1b, 0x0a, 0x09, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x04, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x08, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x53, 0x65, 0x71, 0x22, 0xa4, 0x03, 0x0a,
- 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 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, 0x14, 0x0a,
- 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70,
- 0x6f, 0x63, 0x68, 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, 0x2e, 0x0a, 0x13, 0x70,
- 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x6f, 0x66, 0x5f, 0x74, 0x6f, 0x74,
- 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e,
- 0x74, 0x61, 0x67, 0x65, 0x4f, 0x66, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x72,
- 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03,
- 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1b, 0x0a, 0x09,
- 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x08, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x77,
- 0x61, 0x72, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
- 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x6c, 0x6f,
- 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x6e, 0x74, 0x69, 0x6c, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68,
- 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x6e,
- 0x74, 0x69, 0x6c, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x25, 0x0a, 0x0e, 0x71, 0x75, 0x61, 0x6e,
- 0x74, 0x75, 0x6d, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0d, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12,
- 0x1c, 0x0a, 0x07, 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09,
- 0x48, 0x00, 0x52, 0x06, 0x67, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a,
- 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01,
- 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f,
- 0x67, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x65, 0x61, 0x6d,
- 0x5f, 0x69, 0x64, 0x22, 0x5d, 0x0a, 0x0d, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d,
- 0x6d, 0x61, 0x72, 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,
- 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, 0x16, 0x0a, 0x06, 0x61, 0x6d,
- 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75,
- 0x6e, 0x74, 0x22, 0x9b, 0x01, 0x0a, 0x12, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x65, 0x77, 0x61,
- 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f,
- 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12,
- 0x19, 0x0a, 0x08, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x52, 0x07, 0x61, 0x73, 0x73, 0x65, 0x74, 0x49, 0x64, 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, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x77, 0x61, 0x72,
- 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65,
- 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 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, 0x79, 0x0a, 0x12, 0x53, 0x74, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x50, 0x72,
- 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x20, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f,
- 0x76, 0x61, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74,
- 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e,
- 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x76, 0x65, 0x6e,
- 0x74, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x03, 0x6b, 0x76, 0x62, 0x18, 0x03, 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, 0x03, 0x6b, 0x76, 0x62, 0x22, 0x6b, 0x0a, 0x0e, 0x4b,
- 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x10, 0x0a,
- 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
- 0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x09, 0x74, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x29, 0x0a,
- 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x76,
- 0x65, 0x67, 0x61, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x56, 0x61, 0x6c, 0x75,
- 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xb4, 0x01, 0x0a, 0x0d, 0x53, 0x74, 0x61,
- 0x74, 0x65, 0x56, 0x61, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x32, 0x0a, 0x0a, 0x73, 0x63,
- 0x61, 0x6c, 0x61, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11,
- 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x56, 0x61, 0x6c, 0x75,
- 0x65, 0x48, 0x00, 0x52, 0x09, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x56, 0x61, 0x6c, 0x12, 0x32,
- 0x0a, 0x0a, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01,
+ 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x0e, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75,
+ 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x31, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75,
+ 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x56,
+ 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74,
+ 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x76, 0x6f,
+ 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6f, 0x77, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d,
+ 0x52, 0x0b, 0x76, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x23, 0x0a,
+ 0x0d, 0x72, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x06,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x53, 0x63, 0x6f,
+ 0x72, 0x65, 0x22, 0xab, 0x02, 0x0a, 0x0b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x53, 0x63, 0x6f,
+ 0x72, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x72, 0x61, 0x77, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61,
+ 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x11, 0x72, 0x61, 0x77, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x63, 0x6f,
+ 0x72, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63,
+ 0x65, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70,
+ 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12,
+ 0x25, 0x0a, 0x0e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x73, 0x69, 0x67, 0x5f, 0x73, 0x63, 0x6f, 0x72,
+ 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x73, 0x69,
+ 0x67, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61,
+ 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x0e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12,
+ 0x29, 0x0a, 0x10, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x73, 0x63,
+ 0x6f, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x6f, 0x72, 0x6d, 0x61,
+ 0x6c, 0x69, 0x73, 0x65, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x44, 0x0a, 0x10, 0x76, 0x61,
+ 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06,
+ 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x56, 0x61, 0x6c, 0x69,
+ 0x64, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52,
+ 0x0f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
+ 0x22, 0xb3, 0x05, 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65, 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, 0x2c, 0x0a, 0x12, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f,
+ 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10,
+ 0x73, 0x74, 0x61, 0x6b, 0x65, 0x64, 0x42, 0x79, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72,
+ 0x12, 0x2e, 0x0a, 0x13, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x64, 0x65,
+ 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73,
+ 0x74, 0x61, 0x6b, 0x65, 0x64, 0x42, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x65, 0x73,
+ 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c,
+ 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x64, 0x54, 0x6f,
+ 0x74, 0x61, 0x6c, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x6e,
+ 0x64, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x10, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x53, 0x74, 0x61, 0x6b,
+ 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x61,
+ 0x6b, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e,
+ 0x67, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x12, 0x2e, 0x0a, 0x0a, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x5f,
+ 0x64, 0x61, 0x74, 0x61, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x76, 0x65, 0x67,
+ 0x61, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x65, 0x70, 0x6f,
+ 0x63, 0x68, 0x44, 0x61, 0x74, 0x61, 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, 0x32, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18,
+ 0x0e, 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, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x73,
+ 0x63, 0x6f, 0x72, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x76, 0x65, 0x67,
+ 0x61, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x0b, 0x72,
+ 0x65, 0x77, 0x61, 0x72, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x37, 0x0a, 0x0d, 0x72, 0x61,
+ 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x10, 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, 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, 0x9c, 0x01, 0x0a, 0x07, 0x4e, 0x6f, 0x64, 0x65, 0x53,
+ 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x0d, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x61, 0x63,
+ 0x74, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x69, 0x6e, 0x61, 0x63,
+ 0x74, 0x69, 0x76, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x64,
+ 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x64,
+ 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28,
+ 0x09, 0x52, 0x07, 0x64, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x07, 0x6d, 0x61,
+ 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x07, 0x6d,
+ 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6d, 0x61,
+ 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x22, 0xad, 0x02, 0x0a, 0x08, 0x4e, 0x6f, 0x64, 0x65, 0x44, 0x61,
+ 0x74, 0x61, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x74,
+ 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x64,
+ 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6e,
+ 0x6f, 0x64, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61,
+ 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69,
+ 0x76, 0x65, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d,
+ 0x69, 0x6e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x38, 0x0a,
+ 0x10, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x74, 0x5f, 0x6e, 0x6f, 0x64, 0x65,
+ 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4e,
+ 0x6f, 0x64, 0x65, 0x53, 0x65, 0x74, 0x52, 0x0f, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x6d, 0x69,
+ 0x6e, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x0c, 0x65, 0x72, 0x73, 0x61, 0x74,
+ 0x7a, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e,
+ 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x74, 0x52, 0x0b, 0x65, 0x72,
+ 0x73, 0x61, 0x74, 0x7a, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x0d, 0x70, 0x65, 0x6e,
+ 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x0d, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x74, 0x52,
+ 0x0c, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x16, 0x0a,
+ 0x06, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x75,
+ 0x70, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x70, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 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, 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, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x70,
+ 0x6f, 0x63, 0x68, 0x5f, 0x73, 0x65, 0x71, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65,
+ 0x70, 0x6f, 0x63, 0x68, 0x53, 0x65, 0x71, 0x22, 0xa4, 0x03, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61,
+ 0x72, 0x64, 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, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63,
+ 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 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, 0x2e, 0x0a, 0x13, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e,
+ 0x74, 0x61, 0x67, 0x65, 0x5f, 0x6f, 0x66, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x05, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x11, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x4f,
+ 0x66, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76,
+ 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x72, 0x65, 0x63,
+ 0x65, 0x69, 0x76, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x72, 0x6b, 0x65,
+ 0x74, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x72, 0x6b,
+ 0x65, 0x74, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x74,
+ 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x77, 0x61, 0x72,
+ 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x5f,
+ 0x75, 0x6e, 0x74, 0x69, 0x6c, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28,
+ 0x04, 0x52, 0x10, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x6e, 0x74, 0x69, 0x6c, 0x45, 0x70,
+ 0x6f, 0x63, 0x68, 0x12, 0x25, 0x0a, 0x0e, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x5f, 0x61,
+ 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x71, 0x75, 0x61,
+ 0x6e, 0x74, 0x75, 0x6d, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x07, 0x67, 0x61,
+ 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x67,
+ 0x61, 0x6d, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d,
+ 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x06, 0x74, 0x65, 0x61,
+ 0x6d, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x5f,
+ 0x69, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x22, 0x5d,
+ 0x0a, 0x0d, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 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, 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, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x9b, 0x01,
+ 0x0a, 0x12, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d,
+ 0x6d, 0x61, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x04, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x73,
+ 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x73,
+ 0x73, 0x65, 0x74, 0x49, 0x64, 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, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x74, 0x79, 0x70,
+ 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x54,
+ 0x79, 0x70, 0x65, 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, 0x79, 0x0a, 0x12, 0x53,
+ 0x74, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61,
+ 0x6c, 0x12, 0x20, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x5f, 0x69,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x65, 0x56, 0x61,
+ 0x72, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x26,
+ 0x0a, 0x03, 0x6b, 0x76, 0x62, 0x18, 0x03, 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, 0x03, 0x6b, 0x76, 0x62, 0x22, 0x6b, 0x0a, 0x0e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c,
+ 0x75, 0x65, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f,
+ 0x6c, 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74,
+ 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x29, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x53,
+ 0x74, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61,
+ 0x6c, 0x75, 0x65, 0x22, 0xb4, 0x01, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x56, 0x61, 0x72,
+ 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x32, 0x0a, 0x0a, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x5f,
+ 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x76, 0x65, 0x67, 0x61,
+ 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x09,
+ 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x56, 0x61, 0x6c, 0x12, 0x32, 0x0a, 0x0a, 0x76, 0x65, 0x63,
+ 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e,
+ 0x76, 0x65, 0x67, 0x61, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65,
+ 0x48, 0x00, 0x52, 0x09, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x56, 0x61, 0x6c, 0x12, 0x32, 0x0a,
+ 0x0a, 0x6d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x11, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x56,
+ 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x09, 0x6d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x56, 0x61,
+ 0x6c, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x23, 0x0a, 0x0b, 0x53, 0x63,
+ 0x61, 0x6c, 0x61, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
+ 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22,
+ 0x23, 0x0a, 0x0b, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14,
+ 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x22, 0x36, 0x0a, 0x0b, 0x4d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x56, 0x61,
+ 0x6c, 0x75, 0x65, 0x12, 0x27, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x11, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72,
- 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x09, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x56,
- 0x61, 0x6c, 0x12, 0x32, 0x0a, 0x0a, 0x6d, 0x61, 0x74, 0x72, 0x69, 0x78, 0x5f, 0x76, 0x61, 0x6c,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x4d, 0x61,
- 0x74, 0x72, 0x69, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x09, 0x6d, 0x61, 0x74,
- 0x72, 0x69, 0x78, 0x56, 0x61, 0x6c, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22,
- 0x23, 0x0a, 0x0b, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14,
- 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76,
- 0x61, 0x6c, 0x75, 0x65, 0x22, 0x23, 0x0a, 0x0b, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x56, 0x61,
- 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x03,
- 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x36, 0x0a, 0x0b, 0x4d, 0x61, 0x74,
- 0x72, 0x69, 0x78, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x27, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x56,
- 0x65, 0x63, 0x74, 0x6f, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x22, 0x89, 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, 0x22, 0x9b, 0x01,
- 0x0a, 0x11, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x42, 0x65, 0x6e, 0x65, 0x66, 0x69, 0x74, 0x54,
- 0x69, 0x65, 0x72, 0x12, 0x50, 0x0a, 0x25, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 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, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x21, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 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, 0x34, 0x0a, 0x16, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f,
- 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73,
- 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xf6, 0x01, 0x0a, 0x0b,
- 0x42, 0x65, 0x6e, 0x65, 0x66, 0x69, 0x74, 0x54, 0x69, 0x65, 0x72, 0x12, 0x50, 0x0a, 0x25, 0x6d,
- 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 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, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x21, 0x6d, 0x69, 0x6e, 0x69,
- 0x6d, 0x75, 0x6d, 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, 0x25, 0x0a,
- 0x0e, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x45, 0x70,
- 0x6f, 0x63, 0x68, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c,
- 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x52, 0x65,
- 0x77, 0x61, 0x72, 0x64, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x38, 0x0a, 0x18, 0x72, 0x65,
- 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f,
- 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x72, 0x65,
- 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x61,
- 0x63, 0x74, 0x6f, 0x72, 0x22, 0x45, 0x0a, 0x13, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x42,
- 0x65, 0x6e, 0x65, 0x66, 0x69, 0x74, 0x54, 0x69, 0x65, 0x72, 0x73, 0x12, 0x2e, 0x0a, 0x05, 0x74,
- 0x69, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x65, 0x67,
- 0x61, 0x2e, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x65, 0x6e, 0x65, 0x66, 0x69, 0x74,
- 0x54, 0x69, 0x65, 0x72, 0x52, 0x05, 0x74, 0x69, 0x65, 0x72, 0x73, 0x22, 0x79, 0x0a, 0x12, 0x56,
- 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x65, 0x6e, 0x65, 0x66, 0x69, 0x74, 0x54, 0x69, 0x65,
- 0x72, 0x12, 0x36, 0x0a, 0x17, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x71, 0x75, 0x61,
- 0x6e, 0x74, 0x75, 0x6d, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x15, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x51, 0x75, 0x61, 0x6e, 0x74,
- 0x75, 0x6d, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x77,
- 0x61, 0x72, 0x64, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4d, 0x75, 0x6c, 0x74,
- 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x22, 0x7f, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e,
- 0x67, 0x54, 0x69, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x15, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d,
- 0x5f, 0x73, 0x74, 0x61, 0x6b, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x53, 0x74, 0x61,
- 0x6b, 0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x3c, 0x0a, 0x1a, 0x72, 0x65, 0x66,
- 0x65, 0x72, 0x72, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x6d, 0x75, 0x6c,
- 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x72,
- 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4d, 0x75, 0x6c,
- 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x22, 0xdd, 0x01, 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, 0x22, 0x53, 0x0a, 0x1a, 0x41, 0x63, 0x74, 0x69, 0x76,
- 0x69, 0x74, 0x79, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6b, 0x42, 0x65, 0x6e, 0x65, 0x66, 0x69, 0x74,
- 0x54, 0x69, 0x65, 0x72, 0x73, 0x12, 0x35, 0x0a, 0x05, 0x74, 0x69, 0x65, 0x72, 0x73, 0x18, 0x01,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x41, 0x63, 0x74, 0x69,
+ 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x89, 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, 0x22, 0x9b, 0x01, 0x0a, 0x11, 0x56, 0x6f, 0x6c,
+ 0x75, 0x6d, 0x65, 0x42, 0x65, 0x6e, 0x65, 0x66, 0x69, 0x74, 0x54, 0x69, 0x65, 0x72, 0x12, 0x50,
+ 0x0a, 0x25, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 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, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x21, 0x6d,
+ 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 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, 0x34, 0x0a, 0x16, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f,
+ 0x75, 0x6e, 0x74, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x14, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74,
+ 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xf6, 0x01, 0x0a, 0x0b, 0x42, 0x65, 0x6e, 0x65, 0x66,
+ 0x69, 0x74, 0x54, 0x69, 0x65, 0x72, 0x12, 0x50, 0x0a, 0x25, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75,
+ 0x6d, 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,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x21, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 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, 0x25, 0x0a, 0x0e, 0x6d, 0x69, 0x6e, 0x69,
+ 0x6d, 0x75, 0x6d, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x0d, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x73, 0x12,
+ 0x34, 0x0a, 0x16, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x77, 0x61,
+ 0x72, 0x64, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x14, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x46,
+ 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x38, 0x0a, 0x18, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61,
+ 0x6c, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f,
+ 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61,
+ 0x6c, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x22,
+ 0x45, 0x0a, 0x13, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x65, 0x6e, 0x65, 0x66, 0x69,
+ 0x74, 0x54, 0x69, 0x65, 0x72, 0x73, 0x12, 0x2e, 0x0a, 0x05, 0x74, 0x69, 0x65, 0x72, 0x73, 0x18,
+ 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x56, 0x65, 0x73,
+ 0x74, 0x69, 0x6e, 0x67, 0x42, 0x65, 0x6e, 0x65, 0x66, 0x69, 0x74, 0x54, 0x69, 0x65, 0x72, 0x52,
+ 0x05, 0x74, 0x69, 0x65, 0x72, 0x73, 0x22, 0x79, 0x0a, 0x12, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e,
+ 0x67, 0x42, 0x65, 0x6e, 0x65, 0x66, 0x69, 0x74, 0x54, 0x69, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x17,
+ 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x5f,
+ 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x6d,
+ 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x51, 0x75, 0x61, 0x6e, 0x74, 0x75, 0x6d, 0x42, 0x61, 0x6c,
+ 0x61, 0x6e, 0x63, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x6d,
+ 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x10, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65,
+ 0x72, 0x22, 0x7f, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x65, 0x72,
+ 0x12, 0x32, 0x0a, 0x15, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x73, 0x74, 0x61, 0x6b,
+ 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x13, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x53, 0x74, 0x61, 0x6b, 0x65, 0x64, 0x54, 0x6f,
+ 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x3c, 0x0a, 0x1a, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x61, 0x6c,
+ 0x5f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69,
+ 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72,
+ 0x61, 0x6c, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69,
+ 0x65, 0x72, 0x22, 0xdd, 0x01, 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, 0x22, 0x53, 0x0a, 0x1a, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74,
+ 0x72, 0x65, 0x61, 0x6b, 0x42, 0x65, 0x6e, 0x65, 0x66, 0x69, 0x74, 0x54, 0x69, 0x65, 0x72, 0x73,
+ 0x12, 0x35, 0x0a, 0x05, 0x74, 0x69, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x1f, 0x2e, 0x76, 0x65, 0x67, 0x61, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53,
+ 0x74, 0x72, 0x65, 0x61, 0x6b, 0x42, 0x65, 0x6e, 0x65, 0x66, 0x69, 0x74, 0x54, 0x69, 0x65, 0x72,
+ 0x52, 0x05, 0x74, 0x69, 0x65, 0x72, 0x73, 0x22, 0xaf, 0x01, 0x0a, 0x19, 0x41, 0x63, 0x74, 0x69,
0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6b, 0x42, 0x65, 0x6e, 0x65, 0x66, 0x69,
- 0x74, 0x54, 0x69, 0x65, 0x72, 0x52, 0x05, 0x74, 0x69, 0x65, 0x72, 0x73, 0x22, 0xaf, 0x01, 0x0a,
- 0x19, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6b, 0x42,
- 0x65, 0x6e, 0x65, 0x66, 0x69, 0x74, 0x54, 0x69, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x17, 0x6d, 0x69,
- 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x5f, 0x73,
- 0x74, 0x72, 0x65, 0x61, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x15, 0x6d, 0x69, 0x6e,
- 0x69, 0x6d, 0x75, 0x6d, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x72, 0x65,
- 0x61, 0x6b, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x6d, 0x75, 0x6c,
- 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72,
- 0x65, 0x77, 0x61, 0x72, 0x64, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x12,
- 0x2d, 0x0a, 0x12, 0x76, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69,
- 0x70, 0x6c, 0x69, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x76, 0x65, 0x73,
- 0x74, 0x69, 0x6e, 0x67, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x2a, 0x39,
- 0x0a, 0x04, 0x53, 0x69, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x49, 0x44, 0x45, 0x5f, 0x55,
- 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08,
- 0x53, 0x49, 0x44, 0x45, 0x5f, 0x42, 0x55, 0x59, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x49,
- 0x44, 0x45, 0x5f, 0x53, 0x45, 0x4c, 0x4c, 0x10, 0x02, 0x2a, 0x99, 0x02, 0x0a, 0x08, 0x49, 0x6e,
- 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x18, 0x0a, 0x14, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56,
- 0x41, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00,
- 0x12, 0x1b, 0x0a, 0x0e, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x5f, 0x42, 0x4c, 0x4f,
- 0x43, 0x4b, 0x10, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x12, 0x10, 0x0a,
- 0x0c, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x5f, 0x49, 0x31, 0x4d, 0x10, 0x3c, 0x12,
- 0x11, 0x0a, 0x0c, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x5f, 0x49, 0x35, 0x4d, 0x10,
- 0xac, 0x02, 0x12, 0x12, 0x0a, 0x0d, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x5f, 0x49,
- 0x31, 0x35, 0x4d, 0x10, 0x84, 0x07, 0x12, 0x12, 0x0a, 0x0d, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56,
- 0x41, 0x4c, 0x5f, 0x49, 0x33, 0x30, 0x4d, 0x10, 0x88, 0x0e, 0x12, 0x11, 0x0a, 0x0c, 0x49, 0x4e,
- 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x5f, 0x49, 0x31, 0x48, 0x10, 0x90, 0x1c, 0x12, 0x11, 0x0a,
- 0x0c, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x5f, 0x49, 0x34, 0x48, 0x10, 0xc0, 0x70,
- 0x12, 0x12, 0x0a, 0x0c, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x5f, 0x49, 0x36, 0x48,
- 0x10, 0xe0, 0xa8, 0x01, 0x12, 0x12, 0x0a, 0x0c, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c,
- 0x5f, 0x49, 0x38, 0x48, 0x10, 0x80, 0xe1, 0x01, 0x12, 0x13, 0x0a, 0x0d, 0x49, 0x4e, 0x54, 0x45,
- 0x52, 0x56, 0x41, 0x4c, 0x5f, 0x49, 0x31, 0x32, 0x48, 0x10, 0xc0, 0xd1, 0x02, 0x12, 0x12, 0x0a,
- 0x0c, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x5f, 0x49, 0x31, 0x44, 0x10, 0x80, 0xa3,
- 0x05, 0x12, 0x12, 0x0a, 0x0c, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x5f, 0x49, 0x37,
- 0x44, 0x10, 0x80, 0xf5, 0x24, 0x2a, 0x94, 0x01, 0x0a, 0x0e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69,
- 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x4f, 0x53, 0x49,
- 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50,
- 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x4f, 0x53,
- 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4f, 0x52, 0x44,
- 0x45, 0x52, 0x53, 0x5f, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a,
- 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f,
- 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0x5f, 0x4f, 0x55, 0x54, 0x10, 0x02, 0x12, 0x1e, 0x0a, 0x1a,
- 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f,
- 0x44, 0x49, 0x53, 0x54, 0x52, 0x45, 0x53, 0x53, 0x45, 0x44, 0x10, 0x04, 0x2a, 0xb0, 0x02, 0x0a,
- 0x0e, 0x41, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12,
- 0x1f, 0x0a, 0x1b, 0x41, 0x55, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47,
- 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00,
- 0x12, 0x19, 0x0a, 0x15, 0x41, 0x55, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x49, 0x47,
- 0x47, 0x45, 0x52, 0x5f, 0x42, 0x41, 0x54, 0x43, 0x48, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x41,
- 0x55, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x4f,
- 0x50, 0x45, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x55, 0x43, 0x54,
- 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x49, 0x43,
- 0x45, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x55, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54,
- 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x51, 0x55, 0x49, 0x44, 0x49, 0x54, 0x59,
- 0x10, 0x04, 0x12, 0x2c, 0x0a, 0x28, 0x41, 0x55, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52,
- 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x51, 0x55, 0x49, 0x44, 0x49, 0x54, 0x59, 0x5f,
- 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x4d, 0x45, 0x54, 0x10, 0x05,
- 0x12, 0x32, 0x0a, 0x2a, 0x41, 0x55, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x49, 0x47,
- 0x47, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x4f, 0x5f, 0x44, 0x45,
- 0x50, 0x4c, 0x4f, 0x59, 0x5f, 0x4c, 0x50, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x53, 0x10, 0x06,
- 0x1a, 0x02, 0x08, 0x01, 0x12, 0x29, 0x0a, 0x25, 0x41, 0x55, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f,
- 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x47, 0x4f, 0x56, 0x45, 0x52, 0x4e, 0x41, 0x4e,
- 0x43, 0x45, 0x5f, 0x53, 0x55, 0x53, 0x50, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x07, 0x2a,
- 0x8b, 0x01, 0x0a, 0x0f, 0x50, 0x65, 0x67, 0x67, 0x65, 0x64, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65,
- 0x6e, 0x63, 0x65, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x45, 0x47, 0x47, 0x45, 0x44, 0x5f, 0x52, 0x45,
- 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
- 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x45, 0x47, 0x47, 0x45, 0x44, 0x5f,
- 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x4d, 0x49, 0x44, 0x10, 0x01, 0x12,
- 0x1d, 0x0a, 0x19, 0x50, 0x45, 0x47, 0x47, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45,
- 0x4e, 0x43, 0x45, 0x5f, 0x42, 0x45, 0x53, 0x54, 0x5f, 0x42, 0x49, 0x44, 0x10, 0x02, 0x12, 0x1d,
- 0x0a, 0x19, 0x50, 0x45, 0x47, 0x47, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e,
- 0x43, 0x45, 0x5f, 0x42, 0x45, 0x53, 0x54, 0x5f, 0x41, 0x53, 0x4b, 0x10, 0x03, 0x2a, 0xc9, 0x10,
- 0x0a, 0x0a, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x1b, 0x0a, 0x17,
- 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50,
- 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1d, 0x4f, 0x52, 0x44,
- 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44,
- 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x54, 0x5f, 0x49, 0x44, 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c,
- 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x56, 0x41,
- 0x4c, 0x49, 0x44, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x49, 0x44, 0x10, 0x02, 0x12, 0x1f,
- 0x0a, 0x1b, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4f, 0x55,
- 0x54, 0x5f, 0x4f, 0x46, 0x5f, 0x53, 0x45, 0x51, 0x55, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x03, 0x12,
- 0x26, 0x0a, 0x22, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x49,
- 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x52, 0x45, 0x4d, 0x41, 0x49, 0x4e, 0x49, 0x4e, 0x47,
- 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x04, 0x12, 0x1c, 0x0a, 0x18, 0x4f, 0x52, 0x44, 0x45, 0x52,
- 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x46, 0x41, 0x49, 0x4c,
- 0x55, 0x52, 0x45, 0x10, 0x05, 0x12, 0x1f, 0x0a, 0x1b, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45,
- 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x41, 0x4c, 0x5f, 0x46, 0x41, 0x49,
- 0x4c, 0x55, 0x52, 0x45, 0x10, 0x06, 0x12, 0x2b, 0x0a, 0x27, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f,
- 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x45, 0x58,
- 0x50, 0x49, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x41, 0x54, 0x45, 0x54, 0x49, 0x4d,
- 0x45, 0x10, 0x07, 0x12, 0x27, 0x0a, 0x23, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52,
- 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52,
- 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x08, 0x12, 0x20, 0x0a, 0x1c,
- 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x45, 0x44, 0x49, 0x54,
- 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44, 0x10, 0x09, 0x12, 0x1d,
- 0x0a, 0x19, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x41, 0x4d,
- 0x45, 0x4e, 0x44, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x10, 0x0a, 0x12, 0x19, 0x0a,
- 0x15, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4e, 0x4f, 0x54,
- 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x0b, 0x12, 0x20, 0x0a, 0x1c, 0x4f, 0x52, 0x44, 0x45,
- 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f,
- 0x50, 0x41, 0x52, 0x54, 0x59, 0x5f, 0x49, 0x44, 0x10, 0x0c, 0x12, 0x1d, 0x0a, 0x19, 0x4f, 0x52,
- 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x54,
- 0x5f, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0x10, 0x0d, 0x12, 0x23, 0x0a, 0x1f, 0x4f, 0x52, 0x44,
- 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4d, 0x41, 0x52, 0x47, 0x49, 0x4e, 0x5f,
- 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x0e, 0x12, 0x27,
- 0x0a, 0x23, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4d, 0x49,
- 0x53, 0x53, 0x49, 0x4e, 0x47, 0x5f, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x41, 0x4c, 0x5f, 0x41, 0x43,
- 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x0f, 0x12, 0x1e, 0x0a, 0x1a, 0x4f, 0x52, 0x44, 0x45, 0x52,
- 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f,
- 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x10, 0x12, 0x1c, 0x0a, 0x18, 0x4f, 0x52, 0x44, 0x45, 0x52,
- 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x53,
- 0x49, 0x5a, 0x45, 0x10, 0x11, 0x12, 0x23, 0x0a, 0x1f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45,
- 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x50, 0x45, 0x52,
- 0x53, 0x49, 0x53, 0x54, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x12, 0x12, 0x1c, 0x0a, 0x18, 0x4f, 0x52,
+ 0x74, 0x54, 0x69, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x17, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d,
+ 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6b,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x15, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x41,
+ 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6b, 0x12, 0x2b, 0x0a,
+ 0x11, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69,
+ 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64,
+ 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x12, 0x2d, 0x0a, 0x12, 0x76, 0x65,
+ 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x76, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x4d,
+ 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x2a, 0x39, 0x0a, 0x04, 0x53, 0x69, 0x64,
+ 0x65, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x49, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43,
+ 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x49, 0x44, 0x45, 0x5f,
+ 0x42, 0x55, 0x59, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x49, 0x44, 0x45, 0x5f, 0x53, 0x45,
+ 0x4c, 0x4c, 0x10, 0x02, 0x2a, 0x99, 0x02, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61,
+ 0x6c, 0x12, 0x18, 0x0a, 0x14, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x5f, 0x55, 0x4e,
+ 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x0e, 0x49,
+ 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0xff, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x4e, 0x54, 0x45,
+ 0x52, 0x56, 0x41, 0x4c, 0x5f, 0x49, 0x31, 0x4d, 0x10, 0x3c, 0x12, 0x11, 0x0a, 0x0c, 0x49, 0x4e,
+ 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x5f, 0x49, 0x35, 0x4d, 0x10, 0xac, 0x02, 0x12, 0x12, 0x0a,
+ 0x0d, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x5f, 0x49, 0x31, 0x35, 0x4d, 0x10, 0x84,
+ 0x07, 0x12, 0x12, 0x0a, 0x0d, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x5f, 0x49, 0x33,
+ 0x30, 0x4d, 0x10, 0x88, 0x0e, 0x12, 0x11, 0x0a, 0x0c, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41,
+ 0x4c, 0x5f, 0x49, 0x31, 0x48, 0x10, 0x90, 0x1c, 0x12, 0x11, 0x0a, 0x0c, 0x49, 0x4e, 0x54, 0x45,
+ 0x52, 0x56, 0x41, 0x4c, 0x5f, 0x49, 0x34, 0x48, 0x10, 0xc0, 0x70, 0x12, 0x12, 0x0a, 0x0c, 0x49,
+ 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x5f, 0x49, 0x36, 0x48, 0x10, 0xe0, 0xa8, 0x01, 0x12,
+ 0x12, 0x0a, 0x0c, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x5f, 0x49, 0x38, 0x48, 0x10,
+ 0x80, 0xe1, 0x01, 0x12, 0x13, 0x0a, 0x0d, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x5f,
+ 0x49, 0x31, 0x32, 0x48, 0x10, 0xc0, 0xd1, 0x02, 0x12, 0x12, 0x0a, 0x0c, 0x49, 0x4e, 0x54, 0x45,
+ 0x52, 0x56, 0x41, 0x4c, 0x5f, 0x49, 0x31, 0x44, 0x10, 0x80, 0xa3, 0x05, 0x12, 0x12, 0x0a, 0x0c,
+ 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x5f, 0x49, 0x37, 0x44, 0x10, 0x80, 0xf5, 0x24,
+ 0x2a, 0x94, 0x01, 0x0a, 0x0e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61,
+ 0x74, 0x75, 0x73, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f,
+ 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49,
+ 0x45, 0x44, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e,
+ 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x53, 0x5f, 0x43,
+ 0x4c, 0x4f, 0x53, 0x45, 0x44, 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x4f, 0x53, 0x49, 0x54,
+ 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x4c, 0x4f, 0x53, 0x45,
+ 0x44, 0x5f, 0x4f, 0x55, 0x54, 0x10, 0x02, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x4f, 0x53, 0x49, 0x54,
+ 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x49, 0x53, 0x54, 0x52,
+ 0x45, 0x53, 0x53, 0x45, 0x44, 0x10, 0x04, 0x2a, 0xb0, 0x02, 0x0a, 0x0e, 0x41, 0x75, 0x63, 0x74,
+ 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x55,
+ 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x55, 0x4e,
+ 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x41,
+ 0x55, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x42,
+ 0x41, 0x54, 0x43, 0x48, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x55, 0x43, 0x54, 0x49, 0x4f,
+ 0x4e, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x4f, 0x50, 0x45, 0x4e, 0x49, 0x4e,
+ 0x47, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x55, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54,
+ 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x49, 0x43, 0x45, 0x10, 0x03, 0x12, 0x1d,
+ 0x0a, 0x19, 0x41, 0x55, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45,
+ 0x52, 0x5f, 0x4c, 0x49, 0x51, 0x55, 0x49, 0x44, 0x49, 0x54, 0x59, 0x10, 0x04, 0x12, 0x2c, 0x0a,
+ 0x28, 0x41, 0x55, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52,
+ 0x5f, 0x4c, 0x49, 0x51, 0x55, 0x49, 0x44, 0x49, 0x54, 0x59, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45,
+ 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x4d, 0x45, 0x54, 0x10, 0x05, 0x12, 0x32, 0x0a, 0x2a, 0x41,
+ 0x55, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x55,
+ 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x4f, 0x5f, 0x44, 0x45, 0x50, 0x4c, 0x4f, 0x59, 0x5f,
+ 0x4c, 0x50, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x53, 0x10, 0x06, 0x1a, 0x02, 0x08, 0x01, 0x12,
+ 0x29, 0x0a, 0x25, 0x41, 0x55, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x49, 0x47, 0x47,
+ 0x45, 0x52, 0x5f, 0x47, 0x4f, 0x56, 0x45, 0x52, 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x53, 0x55,
+ 0x53, 0x50, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x07, 0x2a, 0x8b, 0x01, 0x0a, 0x0f, 0x50,
+ 0x65, 0x67, 0x67, 0x65, 0x64, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x20,
+ 0x0a, 0x1c, 0x50, 0x45, 0x47, 0x47, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e,
+ 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00,
+ 0x12, 0x18, 0x0a, 0x14, 0x50, 0x45, 0x47, 0x47, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52,
+ 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x4d, 0x49, 0x44, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x45,
+ 0x47, 0x47, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x42,
+ 0x45, 0x53, 0x54, 0x5f, 0x42, 0x49, 0x44, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x45, 0x47,
+ 0x47, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x42, 0x45,
+ 0x53, 0x54, 0x5f, 0x41, 0x53, 0x4b, 0x10, 0x03, 0x2a, 0xba, 0x11, 0x0a, 0x0a, 0x4f, 0x72, 0x64,
+ 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x52, 0x44, 0x45, 0x52,
+ 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49,
+ 0x45, 0x44, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1d, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52,
+ 0x52, 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x4d, 0x41, 0x52, 0x4b,
+ 0x45, 0x54, 0x5f, 0x49, 0x44, 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x4f, 0x52, 0x44, 0x45, 0x52,
+ 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x4f,
+ 0x52, 0x44, 0x45, 0x52, 0x5f, 0x49, 0x44, 0x10, 0x02, 0x12, 0x1f, 0x0a, 0x1b, 0x4f, 0x52, 0x44,
+ 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x4f, 0x46, 0x5f,
+ 0x53, 0x45, 0x51, 0x55, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x03, 0x12, 0x26, 0x0a, 0x22, 0x4f, 0x52,
0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49,
- 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x13, 0x12, 0x1c, 0x0a, 0x18, 0x4f, 0x52, 0x44, 0x45,
- 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x53, 0x45, 0x4c, 0x46, 0x5f, 0x54, 0x52, 0x41,
- 0x44, 0x49, 0x4e, 0x47, 0x10, 0x14, 0x12, 0x2e, 0x0a, 0x2a, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f,
- 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x53, 0x55, 0x46, 0x46, 0x49, 0x43, 0x49, 0x45,
- 0x4e, 0x54, 0x5f, 0x46, 0x55, 0x4e, 0x44, 0x53, 0x5f, 0x54, 0x4f, 0x5f, 0x50, 0x41, 0x59, 0x5f,
- 0x46, 0x45, 0x45, 0x53, 0x10, 0x15, 0x12, 0x25, 0x0a, 0x21, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f,
- 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43, 0x54, 0x5f,
- 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x16, 0x12, 0x25, 0x0a,
- 0x21, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x56,
- 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x49, 0x4e, 0x5f, 0x46, 0x4f, 0x52,
- 0x43, 0x45, 0x10, 0x17, 0x12, 0x37, 0x0a, 0x33, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52,
- 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x41, 0x4e, 0x4e, 0x4f, 0x54, 0x5f, 0x53, 0x45, 0x4e, 0x44, 0x5f,
- 0x47, 0x46, 0x4e, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x44, 0x55, 0x52, 0x49, 0x4e, 0x47,
- 0x5f, 0x41, 0x4e, 0x5f, 0x41, 0x55, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x18, 0x12, 0x3f, 0x0a,
- 0x3b, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x41, 0x4e,
- 0x4e, 0x4f, 0x54, 0x5f, 0x53, 0x45, 0x4e, 0x44, 0x5f, 0x47, 0x46, 0x41, 0x5f, 0x4f, 0x52, 0x44,
- 0x45, 0x52, 0x5f, 0x44, 0x55, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e,
- 0x55, 0x4f, 0x55, 0x53, 0x5f, 0x54, 0x52, 0x41, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x19, 0x12, 0x34,
- 0x0a, 0x30, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x41,
- 0x4e, 0x4e, 0x4f, 0x54, 0x5f, 0x41, 0x4d, 0x45, 0x4e, 0x44, 0x5f, 0x54, 0x4f, 0x5f, 0x47, 0x54,
- 0x54, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x4f, 0x55, 0x54, 0x5f, 0x45, 0x58, 0x50, 0x49, 0x52, 0x59,
- 0x41, 0x54, 0x10, 0x1a, 0x12, 0x29, 0x0a, 0x25, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52,
- 0x52, 0x4f, 0x52, 0x5f, 0x45, 0x58, 0x50, 0x49, 0x52, 0x59, 0x41, 0x54, 0x5f, 0x42, 0x45, 0x46,
- 0x4f, 0x52, 0x45, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x41, 0x54, 0x10, 0x1b, 0x12,
- 0x2c, 0x0a, 0x28, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43,
- 0x41, 0x4e, 0x4e, 0x4f, 0x54, 0x5f, 0x48, 0x41, 0x56, 0x45, 0x5f, 0x47, 0x54, 0x43, 0x5f, 0x41,
- 0x4e, 0x44, 0x5f, 0x45, 0x58, 0x50, 0x49, 0x52, 0x59, 0x41, 0x54, 0x10, 0x1c, 0x12, 0x2a, 0x0a,
- 0x26, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x41, 0x4e,
- 0x4e, 0x4f, 0x54, 0x5f, 0x41, 0x4d, 0x45, 0x4e, 0x44, 0x5f, 0x54, 0x4f, 0x5f, 0x46, 0x4f, 0x4b,
- 0x5f, 0x4f, 0x52, 0x5f, 0x49, 0x4f, 0x43, 0x10, 0x1d, 0x12, 0x2a, 0x0a, 0x26, 0x4f, 0x52, 0x44,
- 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x41, 0x4e, 0x4e, 0x4f, 0x54, 0x5f,
- 0x41, 0x4d, 0x45, 0x4e, 0x44, 0x5f, 0x54, 0x4f, 0x5f, 0x47, 0x46, 0x41, 0x5f, 0x4f, 0x52, 0x5f,
- 0x47, 0x46, 0x4e, 0x10, 0x1e, 0x12, 0x2c, 0x0a, 0x28, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45,
- 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x41, 0x4e, 0x4e, 0x4f, 0x54, 0x5f, 0x41, 0x4d, 0x45, 0x4e,
- 0x44, 0x5f, 0x46, 0x52, 0x4f, 0x4d, 0x5f, 0x47, 0x46, 0x41, 0x5f, 0x4f, 0x52, 0x5f, 0x47, 0x46,
- 0x4e, 0x10, 0x1f, 0x12, 0x34, 0x0a, 0x30, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52,
- 0x4f, 0x52, 0x5f, 0x43, 0x41, 0x4e, 0x4e, 0x4f, 0x54, 0x5f, 0x53, 0x45, 0x4e, 0x44, 0x5f, 0x49,
- 0x4f, 0x43, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x44, 0x55, 0x52, 0x49, 0x4e, 0x47, 0x5f,
- 0x41, 0x55, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x20, 0x12, 0x34, 0x0a, 0x30, 0x4f, 0x52, 0x44,
+ 0x44, 0x5f, 0x52, 0x45, 0x4d, 0x41, 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x49, 0x5a, 0x45,
+ 0x10, 0x04, 0x12, 0x1c, 0x0a, 0x18, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f,
+ 0x52, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x10, 0x05,
+ 0x12, 0x1f, 0x0a, 0x1b, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f,
+ 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x41, 0x4c, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x10,
+ 0x06, 0x12, 0x2b, 0x0a, 0x27, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52,
+ 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x45, 0x58, 0x50, 0x49, 0x52, 0x41, 0x54,
+ 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x41, 0x54, 0x45, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x07, 0x12, 0x27,
+ 0x0a, 0x23, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x49, 0x4e,
+ 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x46, 0x45,
+ 0x52, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x08, 0x12, 0x20, 0x0a, 0x1c, 0x4f, 0x52, 0x44, 0x45, 0x52,
+ 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x45, 0x44, 0x49, 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x5f,
+ 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44, 0x10, 0x09, 0x12, 0x1d, 0x0a, 0x19, 0x4f, 0x52, 0x44,
+ 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x41, 0x4d, 0x45, 0x4e, 0x44, 0x5f, 0x46,
+ 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x10, 0x0a, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x52, 0x44, 0x45,
+ 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e,
+ 0x44, 0x10, 0x0b, 0x12, 0x20, 0x0a, 0x1c, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52,
+ 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x50, 0x41, 0x52, 0x54, 0x59,
+ 0x5f, 0x49, 0x44, 0x10, 0x0c, 0x12, 0x1d, 0x0a, 0x19, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45,
+ 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x4c, 0x4f, 0x53,
+ 0x45, 0x44, 0x10, 0x0d, 0x12, 0x23, 0x0a, 0x1f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52,
+ 0x52, 0x4f, 0x52, 0x5f, 0x4d, 0x41, 0x52, 0x47, 0x49, 0x4e, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b,
+ 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x0e, 0x12, 0x27, 0x0a, 0x23, 0x4f, 0x52, 0x44,
+ 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4e, 0x47,
+ 0x5f, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x41, 0x4c, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54,
+ 0x10, 0x0f, 0x12, 0x1e, 0x0a, 0x1a, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f,
+ 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52,
+ 0x10, 0x10, 0x12, 0x1c, 0x0a, 0x18, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f,
+ 0x52, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x11,
+ 0x12, 0x23, 0x0a, 0x1f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f,
+ 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x50, 0x45, 0x52, 0x53, 0x49, 0x53, 0x54, 0x45,
+ 0x4e, 0x43, 0x45, 0x10, 0x12, 0x12, 0x1c, 0x0a, 0x18, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45,
+ 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x54, 0x59, 0x50,
+ 0x45, 0x10, 0x13, 0x12, 0x1c, 0x0a, 0x18, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52,
+ 0x4f, 0x52, 0x5f, 0x53, 0x45, 0x4c, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x44, 0x49, 0x4e, 0x47, 0x10,
+ 0x14, 0x12, 0x2e, 0x0a, 0x2a, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52,
+ 0x5f, 0x49, 0x4e, 0x53, 0x55, 0x46, 0x46, 0x49, 0x43, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x46, 0x55,
+ 0x4e, 0x44, 0x53, 0x5f, 0x54, 0x4f, 0x5f, 0x50, 0x41, 0x59, 0x5f, 0x46, 0x45, 0x45, 0x53, 0x10,
+ 0x15, 0x12, 0x25, 0x0a, 0x21, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52,
+ 0x5f, 0x49, 0x4e, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43, 0x54, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45,
+ 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x16, 0x12, 0x25, 0x0a, 0x21, 0x4f, 0x52, 0x44, 0x45,
+ 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f,
+ 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x49, 0x4e, 0x5f, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x10, 0x17, 0x12,
+ 0x37, 0x0a, 0x33, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43,
+ 0x41, 0x4e, 0x4e, 0x4f, 0x54, 0x5f, 0x53, 0x45, 0x4e, 0x44, 0x5f, 0x47, 0x46, 0x4e, 0x5f, 0x4f,
+ 0x52, 0x44, 0x45, 0x52, 0x5f, 0x44, 0x55, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x41, 0x4e, 0x5f, 0x41,
+ 0x55, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x18, 0x12, 0x3f, 0x0a, 0x3b, 0x4f, 0x52, 0x44, 0x45,
+ 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x41, 0x4e, 0x4e, 0x4f, 0x54, 0x5f, 0x53,
+ 0x45, 0x4e, 0x44, 0x5f, 0x47, 0x46, 0x41, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x44, 0x55,
+ 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x55, 0x4f, 0x55, 0x53, 0x5f,
+ 0x54, 0x52, 0x41, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x19, 0x12, 0x34, 0x0a, 0x30, 0x4f, 0x52, 0x44,
0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x41, 0x4e, 0x4e, 0x4f, 0x54, 0x5f,
- 0x53, 0x45, 0x4e, 0x44, 0x5f, 0x46, 0x4f, 0x4b, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x44,
- 0x55, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x41, 0x55, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x21, 0x12,
- 0x23, 0x0a, 0x1f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4d,
- 0x55, 0x53, 0x54, 0x5f, 0x42, 0x45, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x4f, 0x52, 0x44,
- 0x45, 0x52, 0x10, 0x22, 0x12, 0x22, 0x0a, 0x1e, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52,
- 0x52, 0x4f, 0x52, 0x5f, 0x4d, 0x55, 0x53, 0x54, 0x5f, 0x42, 0x45, 0x5f, 0x47, 0x54, 0x54, 0x5f,
- 0x4f, 0x52, 0x5f, 0x47, 0x54, 0x43, 0x10, 0x23, 0x12, 0x27, 0x0a, 0x23, 0x4f, 0x52, 0x44, 0x45,
- 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x4f, 0x55, 0x54, 0x5f,
- 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x50, 0x52, 0x49, 0x43, 0x45, 0x10,
- 0x24, 0x12, 0x33, 0x0a, 0x2f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52,
- 0x5f, 0x42, 0x55, 0x59, 0x5f, 0x43, 0x41, 0x4e, 0x4e, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x46, 0x45,
- 0x52, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x42, 0x45, 0x53, 0x54, 0x5f, 0x41, 0x53, 0x4b, 0x5f, 0x50,
- 0x52, 0x49, 0x43, 0x45, 0x10, 0x25, 0x12, 0x37, 0x0a, 0x33, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f,
- 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x5f, 0x4d, 0x55, 0x53,
- 0x54, 0x5f, 0x42, 0x45, 0x5f, 0x47, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x5f, 0x4f, 0x52, 0x5f,
- 0x45, 0x51, 0x55, 0x41, 0x4c, 0x5f, 0x54, 0x4f, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x28, 0x12,
- 0x34, 0x0a, 0x30, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x53,
- 0x45, 0x4c, 0x4c, 0x5f, 0x43, 0x41, 0x4e, 0x4e, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52,
- 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x42, 0x45, 0x53, 0x54, 0x5f, 0x42, 0x49, 0x44, 0x5f, 0x50, 0x52,
- 0x49, 0x43, 0x45, 0x10, 0x29, 0x12, 0x30, 0x0a, 0x2c, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45,
- 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x5f, 0x4d, 0x55, 0x53, 0x54,
- 0x5f, 0x42, 0x45, 0x5f, 0x47, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x48, 0x41, 0x4e,
- 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x2a, 0x12, 0x2a, 0x0a, 0x26, 0x4f, 0x52, 0x44, 0x45, 0x52,
- 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x53, 0x55, 0x46, 0x46, 0x49, 0x43, 0x49,
- 0x45, 0x4e, 0x54, 0x5f, 0x41, 0x53, 0x53, 0x45, 0x54, 0x5f, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43,
- 0x45, 0x10, 0x2b, 0x12, 0x45, 0x0a, 0x41, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52,
- 0x4f, 0x52, 0x5f, 0x43, 0x41, 0x4e, 0x4e, 0x4f, 0x54, 0x5f, 0x41, 0x4d, 0x45, 0x4e, 0x44, 0x5f,
- 0x50, 0x45, 0x47, 0x47, 0x45, 0x44, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x54,
- 0x41, 0x49, 0x4c, 0x53, 0x5f, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x4e, 0x5f, 0x50, 0x45, 0x47, 0x47,
- 0x45, 0x44, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x10, 0x2c, 0x12, 0x2e, 0x0a, 0x2a, 0x4f, 0x52,
- 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x55, 0x4e, 0x41, 0x42, 0x4c, 0x45,
- 0x5f, 0x54, 0x4f, 0x5f, 0x52, 0x45, 0x50, 0x52, 0x49, 0x43, 0x45, 0x5f, 0x50, 0x45, 0x47, 0x47,
- 0x45, 0x44, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x10, 0x2d, 0x12, 0x35, 0x0a, 0x31, 0x4f, 0x52,
- 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x55, 0x4e, 0x41, 0x42, 0x4c, 0x45,
- 0x5f, 0x54, 0x4f, 0x5f, 0x41, 0x4d, 0x45, 0x4e, 0x44, 0x5f, 0x50, 0x52, 0x49, 0x43, 0x45, 0x5f,
- 0x4f, 0x4e, 0x5f, 0x50, 0x45, 0x47, 0x47, 0x45, 0x44, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x10,
- 0x2e, 0x12, 0x38, 0x0a, 0x34, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52,
- 0x5f, 0x4e, 0x4f, 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x53, 0x49, 0x53, 0x54, 0x45, 0x4e, 0x54, 0x5f,
- 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x4f, 0x46, 0x5f, 0x50, 0x52, 0x49,
- 0x43, 0x45, 0x5f, 0x42, 0x4f, 0x55, 0x4e, 0x44, 0x53, 0x10, 0x2f, 0x12, 0x26, 0x0a, 0x22, 0x4f,
- 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x54, 0x4f, 0x4f, 0x5f, 0x4d,
- 0x41, 0x4e, 0x59, 0x5f, 0x50, 0x45, 0x47, 0x47, 0x45, 0x44, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52,
- 0x53, 0x10, 0x30, 0x12, 0x2b, 0x0a, 0x27, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52,
- 0x4f, 0x52, 0x5f, 0x50, 0x4f, 0x53, 0x54, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x5f, 0x4f, 0x52, 0x44,
- 0x45, 0x52, 0x5f, 0x57, 0x4f, 0x55, 0x4c, 0x44, 0x5f, 0x54, 0x52, 0x41, 0x44, 0x45, 0x10, 0x31,
- 0x12, 0x3b, 0x0a, 0x37, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f,
- 0x52, 0x45, 0x44, 0x55, 0x43, 0x45, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x5f, 0x4f, 0x52, 0x44, 0x45,
- 0x52, 0x5f, 0x57, 0x4f, 0x55, 0x4c, 0x44, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x44, 0x55,
- 0x43, 0x45, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x32, 0x22, 0x04, 0x08,
- 0x26, 0x10, 0x26, 0x22, 0x04, 0x08, 0x27, 0x10, 0x27, 0x2a, 0x82, 0x01, 0x0a, 0x0b, 0x43, 0x68,
- 0x61, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x48, 0x41,
- 0x49, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43,
- 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x48, 0x41, 0x49, 0x4e,
- 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x4e, 0x4e, 0x45,
- 0x43, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f,
- 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x59, 0x49, 0x4e, 0x47,
- 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54,
- 0x55, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x03, 0x2a, 0x92,
- 0x08, 0x0a, 0x0b, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c,
- 0x0a, 0x18, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55,
- 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16,
- 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x53,
- 0x55, 0x52, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x43, 0x43, 0x4f,
- 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x4c, 0x45, 0x4d,
- 0x45, 0x4e, 0x54, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54,
- 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x41, 0x52, 0x47, 0x49, 0x4e, 0x10, 0x03, 0x12, 0x18,
- 0x0a, 0x14, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47,
- 0x45, 0x4e, 0x45, 0x52, 0x41, 0x4c, 0x10, 0x04, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x43, 0x4f,
- 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x45, 0x45, 0x53, 0x5f, 0x49, 0x4e,
- 0x46, 0x52, 0x41, 0x53, 0x54, 0x52, 0x55, 0x43, 0x54, 0x55, 0x52, 0x45, 0x10, 0x05, 0x12, 0x1f,
- 0x0a, 0x1b, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46,
- 0x45, 0x45, 0x53, 0x5f, 0x4c, 0x49, 0x51, 0x55, 0x49, 0x44, 0x49, 0x54, 0x59, 0x10, 0x06, 0x12,
- 0x1b, 0x0a, 0x17, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
- 0x46, 0x45, 0x45, 0x53, 0x5f, 0x4d, 0x41, 0x4b, 0x45, 0x52, 0x10, 0x07, 0x12, 0x15, 0x0a, 0x11,
- 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x4f, 0x4e,
- 0x44, 0x10, 0x09, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54,
- 0x59, 0x50, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x0a, 0x12, 0x21,
- 0x0a, 0x1d, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47,
- 0x4c, 0x4f, 0x42, 0x41, 0x4c, 0x5f, 0x49, 0x4e, 0x53, 0x55, 0x52, 0x41, 0x4e, 0x43, 0x45, 0x10,
- 0x0b, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50,
- 0x45, 0x5f, 0x47, 0x4c, 0x4f, 0x42, 0x41, 0x4c, 0x5f, 0x52, 0x45, 0x57, 0x41, 0x52, 0x44, 0x10,
- 0x0c, 0x12, 0x22, 0x0a, 0x1e, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50,
- 0x45, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46,
- 0x45, 0x52, 0x53, 0x10, 0x0d, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54,
- 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x57, 0x41, 0x52, 0x44, 0x5f, 0x4d, 0x41, 0x4b,
- 0x45, 0x52, 0x5f, 0x50, 0x41, 0x49, 0x44, 0x5f, 0x46, 0x45, 0x45, 0x53, 0x10, 0x0e, 0x12, 0x2b,
- 0x0a, 0x27, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52,
- 0x45, 0x57, 0x41, 0x52, 0x44, 0x5f, 0x4d, 0x41, 0x4b, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x43, 0x45,
- 0x49, 0x56, 0x45, 0x44, 0x5f, 0x46, 0x45, 0x45, 0x53, 0x10, 0x0f, 0x12, 0x28, 0x0a, 0x24, 0x41,
- 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x57, 0x41,
- 0x52, 0x44, 0x5f, 0x4c, 0x50, 0x5f, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, 0x44, 0x5f, 0x46,
- 0x45, 0x45, 0x53, 0x10, 0x10, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54,
- 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x57, 0x41, 0x52, 0x44, 0x5f, 0x4d, 0x41, 0x52,
- 0x4b, 0x45, 0x54, 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x45, 0x52, 0x53, 0x10, 0x11, 0x12,
- 0x18, 0x0a, 0x14, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
- 0x48, 0x4f, 0x4c, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x12, 0x12, 0x22, 0x0a, 0x1e, 0x41, 0x43, 0x43,
- 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x50, 0x5f, 0x4c, 0x49, 0x51,
- 0x55, 0x49, 0x44, 0x49, 0x54, 0x59, 0x5f, 0x46, 0x45, 0x45, 0x53, 0x10, 0x13, 0x12, 0x32, 0x0a,
- 0x2e, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x49,
- 0x51, 0x55, 0x49, 0x44, 0x49, 0x54, 0x59, 0x5f, 0x46, 0x45, 0x45, 0x53, 0x5f, 0x42, 0x4f, 0x4e,
- 0x55, 0x53, 0x5f, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x10,
- 0x14, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50,
- 0x45, 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x54, 0x52, 0x45, 0x41, 0x53, 0x55,
- 0x52, 0x59, 0x10, 0x15, 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f,
- 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x45, 0x53, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x57,
- 0x41, 0x52, 0x44, 0x53, 0x10, 0x16, 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e,
- 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x45, 0x53, 0x54, 0x45, 0x44, 0x5f, 0x52, 0x45,
- 0x57, 0x41, 0x52, 0x44, 0x53, 0x10, 0x17, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x43, 0x4f, 0x55,
- 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x57, 0x41, 0x52, 0x44, 0x5f, 0x41,
- 0x56, 0x45, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x10,
- 0x18, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50,
- 0x45, 0x5f, 0x52, 0x45, 0x57, 0x41, 0x52, 0x44, 0x5f, 0x52, 0x45, 0x4c, 0x41, 0x54, 0x49, 0x56,
- 0x45, 0x5f, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4e, 0x10, 0x19, 0x12, 0x29, 0x0a, 0x25, 0x41, 0x43,
+ 0x41, 0x4d, 0x45, 0x4e, 0x44, 0x5f, 0x54, 0x4f, 0x5f, 0x47, 0x54, 0x54, 0x5f, 0x57, 0x49, 0x54,
+ 0x48, 0x4f, 0x55, 0x54, 0x5f, 0x45, 0x58, 0x50, 0x49, 0x52, 0x59, 0x41, 0x54, 0x10, 0x1a, 0x12,
+ 0x29, 0x0a, 0x25, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x45,
+ 0x58, 0x50, 0x49, 0x52, 0x59, 0x41, 0x54, 0x5f, 0x42, 0x45, 0x46, 0x4f, 0x52, 0x45, 0x5f, 0x43,
+ 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x41, 0x54, 0x10, 0x1b, 0x12, 0x2c, 0x0a, 0x28, 0x4f, 0x52,
+ 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x41, 0x4e, 0x4e, 0x4f, 0x54,
+ 0x5f, 0x48, 0x41, 0x56, 0x45, 0x5f, 0x47, 0x54, 0x43, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x45, 0x58,
+ 0x50, 0x49, 0x52, 0x59, 0x41, 0x54, 0x10, 0x1c, 0x12, 0x2a, 0x0a, 0x26, 0x4f, 0x52, 0x44, 0x45,
+ 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x41, 0x4e, 0x4e, 0x4f, 0x54, 0x5f, 0x41,
+ 0x4d, 0x45, 0x4e, 0x44, 0x5f, 0x54, 0x4f, 0x5f, 0x46, 0x4f, 0x4b, 0x5f, 0x4f, 0x52, 0x5f, 0x49,
+ 0x4f, 0x43, 0x10, 0x1d, 0x12, 0x2a, 0x0a, 0x26, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52,
+ 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x41, 0x4e, 0x4e, 0x4f, 0x54, 0x5f, 0x41, 0x4d, 0x45, 0x4e, 0x44,
+ 0x5f, 0x54, 0x4f, 0x5f, 0x47, 0x46, 0x41, 0x5f, 0x4f, 0x52, 0x5f, 0x47, 0x46, 0x4e, 0x10, 0x1e,
+ 0x12, 0x2c, 0x0a, 0x28, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f,
+ 0x43, 0x41, 0x4e, 0x4e, 0x4f, 0x54, 0x5f, 0x41, 0x4d, 0x45, 0x4e, 0x44, 0x5f, 0x46, 0x52, 0x4f,
+ 0x4d, 0x5f, 0x47, 0x46, 0x41, 0x5f, 0x4f, 0x52, 0x5f, 0x47, 0x46, 0x4e, 0x10, 0x1f, 0x12, 0x34,
+ 0x0a, 0x30, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x41,
+ 0x4e, 0x4e, 0x4f, 0x54, 0x5f, 0x53, 0x45, 0x4e, 0x44, 0x5f, 0x49, 0x4f, 0x43, 0x5f, 0x4f, 0x52,
+ 0x44, 0x45, 0x52, 0x5f, 0x44, 0x55, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x41, 0x55, 0x43, 0x54, 0x49,
+ 0x4f, 0x4e, 0x10, 0x20, 0x12, 0x34, 0x0a, 0x30, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52,
+ 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x41, 0x4e, 0x4e, 0x4f, 0x54, 0x5f, 0x53, 0x45, 0x4e, 0x44, 0x5f,
+ 0x46, 0x4f, 0x4b, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x44, 0x55, 0x52, 0x49, 0x4e, 0x47,
+ 0x5f, 0x41, 0x55, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x21, 0x12, 0x23, 0x0a, 0x1f, 0x4f, 0x52,
+ 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4d, 0x55, 0x53, 0x54, 0x5f, 0x42,
+ 0x45, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x10, 0x22, 0x12,
+ 0x22, 0x0a, 0x1e, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4d,
+ 0x55, 0x53, 0x54, 0x5f, 0x42, 0x45, 0x5f, 0x47, 0x54, 0x54, 0x5f, 0x4f, 0x52, 0x5f, 0x47, 0x54,
+ 0x43, 0x10, 0x23, 0x12, 0x27, 0x0a, 0x23, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52,
+ 0x4f, 0x52, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x4f, 0x55, 0x54, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52,
+ 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x50, 0x52, 0x49, 0x43, 0x45, 0x10, 0x24, 0x12, 0x33, 0x0a, 0x2f,
+ 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x42, 0x55, 0x59, 0x5f,
+ 0x43, 0x41, 0x4e, 0x4e, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45,
+ 0x5f, 0x42, 0x45, 0x53, 0x54, 0x5f, 0x41, 0x53, 0x4b, 0x5f, 0x50, 0x52, 0x49, 0x43, 0x45, 0x10,
+ 0x25, 0x12, 0x37, 0x0a, 0x33, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52,
+ 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x5f, 0x4d, 0x55, 0x53, 0x54, 0x5f, 0x42, 0x45, 0x5f,
+ 0x47, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x5f, 0x4f, 0x52, 0x5f, 0x45, 0x51, 0x55, 0x41, 0x4c,
+ 0x5f, 0x54, 0x4f, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x28, 0x12, 0x34, 0x0a, 0x30, 0x4f, 0x52,
+ 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x53, 0x45, 0x4c, 0x4c, 0x5f, 0x43,
+ 0x41, 0x4e, 0x4e, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x5f,
+ 0x42, 0x45, 0x53, 0x54, 0x5f, 0x42, 0x49, 0x44, 0x5f, 0x50, 0x52, 0x49, 0x43, 0x45, 0x10, 0x29,
+ 0x12, 0x30, 0x0a, 0x2c, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f,
+ 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x5f, 0x4d, 0x55, 0x53, 0x54, 0x5f, 0x42, 0x45, 0x5f, 0x47,
+ 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x48, 0x41, 0x4e, 0x5f, 0x5a, 0x45, 0x52, 0x4f,
+ 0x10, 0x2a, 0x12, 0x2a, 0x0a, 0x26, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f,
+ 0x52, 0x5f, 0x49, 0x4e, 0x53, 0x55, 0x46, 0x46, 0x49, 0x43, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x41,
+ 0x53, 0x53, 0x45, 0x54, 0x5f, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x2b, 0x12, 0x45,
+ 0x0a, 0x41, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x41,
+ 0x4e, 0x4e, 0x4f, 0x54, 0x5f, 0x41, 0x4d, 0x45, 0x4e, 0x44, 0x5f, 0x50, 0x45, 0x47, 0x47, 0x45,
+ 0x44, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x54, 0x41, 0x49, 0x4c, 0x53, 0x5f,
+ 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x4e, 0x5f, 0x50, 0x45, 0x47, 0x47, 0x45, 0x44, 0x5f, 0x4f, 0x52,
+ 0x44, 0x45, 0x52, 0x10, 0x2c, 0x12, 0x2e, 0x0a, 0x2a, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45,
+ 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x55, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x4f, 0x5f, 0x52,
+ 0x45, 0x50, 0x52, 0x49, 0x43, 0x45, 0x5f, 0x50, 0x45, 0x47, 0x47, 0x45, 0x44, 0x5f, 0x4f, 0x52,
+ 0x44, 0x45, 0x52, 0x10, 0x2d, 0x12, 0x35, 0x0a, 0x31, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45,
+ 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x55, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x4f, 0x5f, 0x41,
+ 0x4d, 0x45, 0x4e, 0x44, 0x5f, 0x50, 0x52, 0x49, 0x43, 0x45, 0x5f, 0x4f, 0x4e, 0x5f, 0x50, 0x45,
+ 0x47, 0x47, 0x45, 0x44, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x10, 0x2e, 0x12, 0x38, 0x0a, 0x34,
+ 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4e, 0x4f, 0x4e, 0x5f,
+ 0x50, 0x45, 0x52, 0x53, 0x49, 0x53, 0x54, 0x45, 0x4e, 0x54, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52,
+ 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x4f, 0x46, 0x5f, 0x50, 0x52, 0x49, 0x43, 0x45, 0x5f, 0x42, 0x4f,
+ 0x55, 0x4e, 0x44, 0x53, 0x10, 0x2f, 0x12, 0x26, 0x0a, 0x22, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f,
+ 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x54, 0x4f, 0x4f, 0x5f, 0x4d, 0x41, 0x4e, 0x59, 0x5f, 0x50,
+ 0x45, 0x47, 0x47, 0x45, 0x44, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x53, 0x10, 0x30, 0x12, 0x2b,
+ 0x0a, 0x27, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x50, 0x4f,
+ 0x53, 0x54, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x57, 0x4f,
+ 0x55, 0x4c, 0x44, 0x5f, 0x54, 0x52, 0x41, 0x44, 0x45, 0x10, 0x31, 0x12, 0x3b, 0x0a, 0x37, 0x4f,
+ 0x52, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x52, 0x45, 0x44, 0x55, 0x43,
+ 0x45, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x57, 0x4f, 0x55,
+ 0x4c, 0x44, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x44, 0x55, 0x43, 0x45, 0x5f, 0x50, 0x4f,
+ 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x32, 0x12, 0x2c, 0x0a, 0x28, 0x4f, 0x52, 0x44, 0x45,
+ 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x49, 0x53, 0x4f, 0x4c, 0x41, 0x54, 0x45, 0x44,
+ 0x5f, 0x4d, 0x41, 0x52, 0x47, 0x49, 0x4e, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x46, 0x41,
+ 0x49, 0x4c, 0x45, 0x44, 0x10, 0x33, 0x12, 0x41, 0x0a, 0x3d, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f,
+ 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x50, 0x45, 0x47, 0x47, 0x45, 0x44, 0x5f, 0x4f, 0x52, 0x44,
+ 0x45, 0x52, 0x53, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44, 0x5f,
+ 0x49, 0x4e, 0x5f, 0x49, 0x53, 0x4f, 0x4c, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x4d, 0x41, 0x52, 0x47,
+ 0x49, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x34, 0x22, 0x04, 0x08, 0x26, 0x10, 0x26, 0x22,
+ 0x04, 0x08, 0x27, 0x10, 0x27, 0x2a, 0x82, 0x01, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x53,
+ 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x53,
+ 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45,
+ 0x44, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x53, 0x54, 0x41,
+ 0x54, 0x55, 0x53, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x45, 0x44,
+ 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54,
+ 0x55, 0x53, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x59, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x1a,
+ 0x0a, 0x16, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43,
+ 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x03, 0x2a, 0x92, 0x08, 0x0a, 0x0b, 0x41,
+ 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x43,
+ 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45,
+ 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x43, 0x43, 0x4f,
+ 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x53, 0x55, 0x52, 0x41, 0x4e,
+ 0x43, 0x45, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f,
+ 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x4c, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x10,
+ 0x02, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50,
+ 0x45, 0x5f, 0x4d, 0x41, 0x52, 0x47, 0x49, 0x4e, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x43,
+ 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x45, 0x4e, 0x45, 0x52,
+ 0x41, 0x4c, 0x10, 0x04, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f,
+ 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x45, 0x45, 0x53, 0x5f, 0x49, 0x4e, 0x46, 0x52, 0x41, 0x53,
+ 0x54, 0x52, 0x55, 0x43, 0x54, 0x55, 0x52, 0x45, 0x10, 0x05, 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x43,
+ 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x45, 0x45, 0x53, 0x5f,
+ 0x4c, 0x49, 0x51, 0x55, 0x49, 0x44, 0x49, 0x54, 0x59, 0x10, 0x06, 0x12, 0x1b, 0x0a, 0x17, 0x41,
+ 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x45, 0x45, 0x53,
+ 0x5f, 0x4d, 0x41, 0x4b, 0x45, 0x52, 0x10, 0x07, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x43, 0x43, 0x4f,
+ 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x4f, 0x4e, 0x44, 0x10, 0x09, 0x12,
+ 0x19, 0x0a, 0x15, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
+ 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x0a, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x43,
+ 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x4c, 0x4f, 0x42, 0x41,
+ 0x4c, 0x5f, 0x49, 0x4e, 0x53, 0x55, 0x52, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x0b, 0x12, 0x1e, 0x0a,
+ 0x1a, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x4c,
+ 0x4f, 0x42, 0x41, 0x4c, 0x5f, 0x52, 0x45, 0x57, 0x41, 0x52, 0x44, 0x10, 0x0c, 0x12, 0x22, 0x0a,
+ 0x1e, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x45,
+ 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x53, 0x10,
+ 0x0d, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50,
+ 0x45, 0x5f, 0x52, 0x45, 0x57, 0x41, 0x52, 0x44, 0x5f, 0x4d, 0x41, 0x4b, 0x45, 0x52, 0x5f, 0x50,
+ 0x41, 0x49, 0x44, 0x5f, 0x46, 0x45, 0x45, 0x53, 0x10, 0x0e, 0x12, 0x2b, 0x0a, 0x27, 0x41, 0x43,
0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x57, 0x41, 0x52,
- 0x44, 0x5f, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4e, 0x5f, 0x56, 0x4f, 0x4c, 0x41, 0x54, 0x49, 0x4c,
- 0x49, 0x54, 0x59, 0x10, 0x1a, 0x12, 0x29, 0x0a, 0x25, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54,
- 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x57, 0x41, 0x52, 0x44, 0x5f, 0x56, 0x41, 0x4c,
- 0x49, 0x44, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x49, 0x4e, 0x47, 0x10, 0x1b,
- 0x12, 0x2c, 0x0a, 0x28, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45,
- 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x46, 0x45, 0x45, 0x5f, 0x52, 0x45, 0x46,
- 0x45, 0x52, 0x52, 0x41, 0x4c, 0x5f, 0x52, 0x45, 0x57, 0x41, 0x52, 0x44, 0x10, 0x1c, 0x12, 0x1d,
- 0x0a, 0x19, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f,
- 0x52, 0x44, 0x45, 0x52, 0x5f, 0x4d, 0x41, 0x52, 0x47, 0x49, 0x4e, 0x10, 0x1d, 0x22, 0x04, 0x08,
- 0x08, 0x10, 0x08, 0x2a, 0xbc, 0x0b, 0x0a, 0x0c, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72,
- 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52,
- 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45,
- 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f,
- 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x4f, 0x53, 0x53, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x54,
- 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x57, 0x49, 0x4e,
- 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54,
- 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x54, 0x4d, 0x5f, 0x4c, 0x4f, 0x53, 0x53, 0x10, 0x04, 0x12, 0x19,
- 0x0a, 0x15, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
- 0x4d, 0x54, 0x4d, 0x5f, 0x57, 0x49, 0x4e, 0x10, 0x05, 0x12, 0x1c, 0x0a, 0x18, 0x54, 0x52, 0x41,
- 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x41, 0x52, 0x47, 0x49,
- 0x4e, 0x5f, 0x4c, 0x4f, 0x57, 0x10, 0x06, 0x12, 0x1d, 0x0a, 0x19, 0x54, 0x52, 0x41, 0x4e, 0x53,
- 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x41, 0x52, 0x47, 0x49, 0x4e, 0x5f,
- 0x48, 0x49, 0x47, 0x48, 0x10, 0x07, 0x12, 0x24, 0x0a, 0x20, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46,
- 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x41, 0x52, 0x47, 0x49, 0x4e, 0x5f, 0x43,
- 0x4f, 0x4e, 0x46, 0x49, 0x53, 0x43, 0x41, 0x54, 0x45, 0x44, 0x10, 0x08, 0x12, 0x1f, 0x0a, 0x1b,
- 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x41,
- 0x4b, 0x45, 0x52, 0x5f, 0x46, 0x45, 0x45, 0x5f, 0x50, 0x41, 0x59, 0x10, 0x09, 0x12, 0x23, 0x0a,
- 0x1f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d,
- 0x41, 0x4b, 0x45, 0x52, 0x5f, 0x46, 0x45, 0x45, 0x5f, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45,
- 0x10, 0x0a, 0x12, 0x28, 0x0a, 0x24, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54,
- 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x52, 0x41, 0x53, 0x54, 0x52, 0x55, 0x43, 0x54, 0x55,
- 0x52, 0x45, 0x5f, 0x46, 0x45, 0x45, 0x5f, 0x50, 0x41, 0x59, 0x10, 0x0b, 0x12, 0x2f, 0x0a, 0x2b,
- 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e,
- 0x46, 0x52, 0x41, 0x53, 0x54, 0x52, 0x55, 0x43, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x46, 0x45, 0x45,
- 0x5f, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x10, 0x0c, 0x12, 0x23, 0x0a,
- 0x1f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c,
- 0x49, 0x51, 0x55, 0x49, 0x44, 0x49, 0x54, 0x59, 0x5f, 0x46, 0x45, 0x45, 0x5f, 0x50, 0x41, 0x59,
- 0x10, 0x0d, 0x12, 0x2a, 0x0a, 0x26, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54,
- 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x49, 0x51, 0x55, 0x49, 0x44, 0x49, 0x54, 0x59, 0x5f, 0x46, 0x45,
- 0x45, 0x5f, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x10, 0x0e, 0x12, 0x1a,
+ 0x44, 0x5f, 0x4d, 0x41, 0x4b, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, 0x44,
+ 0x5f, 0x46, 0x45, 0x45, 0x53, 0x10, 0x0f, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x43, 0x4f, 0x55,
+ 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x57, 0x41, 0x52, 0x44, 0x5f, 0x4c,
+ 0x50, 0x5f, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, 0x44, 0x5f, 0x46, 0x45, 0x45, 0x53, 0x10,
+ 0x10, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50,
+ 0x45, 0x5f, 0x52, 0x45, 0x57, 0x41, 0x52, 0x44, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x54, 0x5f,
+ 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x45, 0x52, 0x53, 0x10, 0x11, 0x12, 0x18, 0x0a, 0x14, 0x41,
+ 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x48, 0x4f, 0x4c, 0x44,
+ 0x49, 0x4e, 0x47, 0x10, 0x12, 0x12, 0x22, 0x0a, 0x1e, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54,
+ 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x50, 0x5f, 0x4c, 0x49, 0x51, 0x55, 0x49, 0x44, 0x49,
+ 0x54, 0x59, 0x5f, 0x46, 0x45, 0x45, 0x53, 0x10, 0x13, 0x12, 0x32, 0x0a, 0x2e, 0x41, 0x43, 0x43,
+ 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x49, 0x51, 0x55, 0x49, 0x44,
+ 0x49, 0x54, 0x59, 0x5f, 0x46, 0x45, 0x45, 0x53, 0x5f, 0x42, 0x4f, 0x4e, 0x55, 0x53, 0x5f, 0x44,
+ 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x14, 0x12, 0x21, 0x0a,
+ 0x1d, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x45,
+ 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x54, 0x52, 0x45, 0x41, 0x53, 0x55, 0x52, 0x59, 0x10, 0x15,
+ 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45,
+ 0x5f, 0x56, 0x45, 0x53, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x57, 0x41, 0x52, 0x44, 0x53,
+ 0x10, 0x16, 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59,
+ 0x50, 0x45, 0x5f, 0x56, 0x45, 0x53, 0x54, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x57, 0x41, 0x52, 0x44,
+ 0x53, 0x10, 0x17, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54,
+ 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x57, 0x41, 0x52, 0x44, 0x5f, 0x41, 0x56, 0x45, 0x52, 0x41,
+ 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x18, 0x12, 0x27, 0x0a,
+ 0x23, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45,
+ 0x57, 0x41, 0x52, 0x44, 0x5f, 0x52, 0x45, 0x4c, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x52, 0x45,
+ 0x54, 0x55, 0x52, 0x4e, 0x10, 0x19, 0x12, 0x29, 0x0a, 0x25, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e,
+ 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x57, 0x41, 0x52, 0x44, 0x5f, 0x52, 0x45,
+ 0x54, 0x55, 0x52, 0x4e, 0x5f, 0x56, 0x4f, 0x4c, 0x41, 0x54, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x10,
+ 0x1a, 0x12, 0x29, 0x0a, 0x25, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50,
+ 0x45, 0x5f, 0x52, 0x45, 0x57, 0x41, 0x52, 0x44, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54,
+ 0x4f, 0x52, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x49, 0x4e, 0x47, 0x10, 0x1b, 0x12, 0x2c, 0x0a, 0x28,
+ 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x45, 0x4e,
+ 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x46, 0x45, 0x45, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x52, 0x41,
+ 0x4c, 0x5f, 0x52, 0x45, 0x57, 0x41, 0x52, 0x44, 0x10, 0x1c, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x43,
+ 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52,
+ 0x5f, 0x4d, 0x41, 0x52, 0x47, 0x49, 0x4e, 0x10, 0x1d, 0x22, 0x04, 0x08, 0x08, 0x10, 0x08, 0x2a,
+ 0xd4, 0x0c, 0x0a, 0x0c, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65,
+ 0x12, 0x1d, 0x0a, 0x19, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50,
+ 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12,
+ 0x16, 0x0a, 0x12, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45,
+ 0x5f, 0x4c, 0x4f, 0x53, 0x53, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x52, 0x41, 0x4e, 0x53,
+ 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x57, 0x49, 0x4e, 0x10, 0x02, 0x12, 0x1a,
0x0a, 0x16, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
- 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x4c, 0x4f, 0x57, 0x10, 0x0f, 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x52,
- 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x4f, 0x4e, 0x44,
- 0x5f, 0x48, 0x49, 0x47, 0x48, 0x10, 0x10, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x52, 0x41, 0x4e, 0x53,
- 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x44, 0x52, 0x41,
- 0x57, 0x10, 0x12, 0x12, 0x19, 0x0a, 0x15, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f,
- 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x45, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x10, 0x13, 0x12, 0x1f,
- 0x0a, 0x1b, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
- 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x53, 0x4c, 0x41, 0x53, 0x48, 0x49, 0x4e, 0x47, 0x10, 0x14, 0x12,
- 0x1f, 0x0a, 0x1b, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45,
- 0x5f, 0x52, 0x45, 0x57, 0x41, 0x52, 0x44, 0x5f, 0x50, 0x41, 0x59, 0x4f, 0x55, 0x54, 0x10, 0x15,
- 0x12, 0x25, 0x0a, 0x21, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50,
- 0x45, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x46, 0x55, 0x4e, 0x44, 0x53,
- 0x5f, 0x53, 0x45, 0x4e, 0x44, 0x10, 0x16, 0x12, 0x2b, 0x0a, 0x27, 0x54, 0x52, 0x41, 0x4e, 0x53,
- 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45,
- 0x52, 0x5f, 0x46, 0x55, 0x4e, 0x44, 0x53, 0x5f, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55,
- 0x54, 0x45, 0x10, 0x17, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52,
- 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4c, 0x45, 0x41, 0x52, 0x5f, 0x41, 0x43, 0x43, 0x4f,
- 0x55, 0x4e, 0x54, 0x10, 0x18, 0x12, 0x2c, 0x0a, 0x28, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45,
- 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x50, 0x4f, 0x49, 0x4e,
- 0x54, 0x5f, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x4f, 0x52,
- 0x45, 0x10, 0x19, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f,
- 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x50, 0x4f, 0x54, 0x10, 0x1a, 0x12, 0x1e, 0x0a, 0x1a, 0x54,
- 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x48, 0x4f, 0x4c,
- 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x1b, 0x12, 0x21, 0x0a, 0x1d, 0x54,
- 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x48, 0x4f, 0x4c,
- 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x4c, 0x45, 0x41, 0x53, 0x45, 0x10, 0x1c, 0x12, 0x2e,
- 0x0a, 0x2a, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
- 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x53, 0x55, 0x52, 0x41,
- 0x4e, 0x43, 0x45, 0x5f, 0x46, 0x52, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x1d, 0x12, 0x28,
+ 0x4d, 0x54, 0x4d, 0x5f, 0x4c, 0x4f, 0x53, 0x53, 0x10, 0x04, 0x12, 0x19, 0x0a, 0x15, 0x54, 0x52,
+ 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x54, 0x4d, 0x5f,
+ 0x57, 0x49, 0x4e, 0x10, 0x05, 0x12, 0x1c, 0x0a, 0x18, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45,
+ 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x41, 0x52, 0x47, 0x49, 0x4e, 0x5f, 0x4c, 0x4f,
+ 0x57, 0x10, 0x06, 0x12, 0x1d, 0x0a, 0x19, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f,
+ 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x41, 0x52, 0x47, 0x49, 0x4e, 0x5f, 0x48, 0x49, 0x47, 0x48,
+ 0x10, 0x07, 0x12, 0x24, 0x0a, 0x20, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54,
+ 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x41, 0x52, 0x47, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49,
+ 0x53, 0x43, 0x41, 0x54, 0x45, 0x44, 0x10, 0x08, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x52, 0x41, 0x4e,
+ 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x41, 0x4b, 0x45, 0x52, 0x5f,
+ 0x46, 0x45, 0x45, 0x5f, 0x50, 0x41, 0x59, 0x10, 0x09, 0x12, 0x23, 0x0a, 0x1f, 0x54, 0x52, 0x41,
+ 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x41, 0x4b, 0x45, 0x52,
+ 0x5f, 0x46, 0x45, 0x45, 0x5f, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, 0x10, 0x0a, 0x12, 0x28,
0x0a, 0x24, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
- 0x4c, 0x49, 0x51, 0x55, 0x49, 0x44, 0x49, 0x54, 0x59, 0x5f, 0x46, 0x45, 0x45, 0x5f, 0x41, 0x4c,
- 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x45, 0x10, 0x1e, 0x12, 0x2e, 0x0a, 0x2a, 0x54, 0x52, 0x41, 0x4e,
- 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x49, 0x51, 0x55, 0x49, 0x44,
- 0x49, 0x54, 0x59, 0x5f, 0x46, 0x45, 0x45, 0x5f, 0x4e, 0x45, 0x54, 0x5f, 0x44, 0x49, 0x53, 0x54,
- 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x10, 0x1f, 0x12, 0x28, 0x0a, 0x24, 0x54, 0x52, 0x41, 0x4e,
- 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x4c, 0x41, 0x5f, 0x50, 0x45,
- 0x4e, 0x41, 0x4c, 0x54, 0x59, 0x5f, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x59,
- 0x10, 0x20, 0x12, 0x2a, 0x0a, 0x26, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54,
- 0x59, 0x50, 0x45, 0x5f, 0x53, 0x4c, 0x41, 0x5f, 0x50, 0x45, 0x4e, 0x41, 0x4c, 0x54, 0x59, 0x5f,
- 0x4c, 0x50, 0x5f, 0x46, 0x45, 0x45, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x59, 0x10, 0x21, 0x12, 0x2e,
- 0x0a, 0x2a, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
- 0x4c, 0x49, 0x51, 0x55, 0x49, 0x44, 0x49, 0x54, 0x59, 0x5f, 0x46, 0x45, 0x45, 0x5f, 0x55, 0x4e,
- 0x50, 0x41, 0x49, 0x44, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, 0x45, 0x43, 0x54, 0x10, 0x22, 0x12, 0x32,
- 0x0a, 0x2e, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
- 0x53, 0x4c, 0x41, 0x5f, 0x50, 0x45, 0x52, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x4e, 0x43, 0x45, 0x5f,
- 0x42, 0x4f, 0x4e, 0x55, 0x53, 0x5f, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45,
- 0x10, 0x23, 0x12, 0x29, 0x0a, 0x25, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54,
- 0x59, 0x50, 0x45, 0x5f, 0x50, 0x45, 0x52, 0x50, 0x45, 0x54, 0x55, 0x41, 0x4c, 0x53, 0x5f, 0x46,
- 0x55, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x4c, 0x4f, 0x53, 0x53, 0x10, 0x24, 0x12, 0x28, 0x0a,
- 0x24, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50,
- 0x45, 0x52, 0x50, 0x45, 0x54, 0x55, 0x41, 0x4c, 0x53, 0x5f, 0x46, 0x55, 0x4e, 0x44, 0x49, 0x4e,
- 0x47, 0x5f, 0x57, 0x49, 0x4e, 0x10, 0x25, 0x12, 0x20, 0x0a, 0x1c, 0x54, 0x52, 0x41, 0x4e, 0x53,
- 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x57, 0x41, 0x52, 0x44, 0x53,
- 0x5f, 0x56, 0x45, 0x53, 0x54, 0x45, 0x44, 0x10, 0x26, 0x12, 0x29, 0x0a, 0x25, 0x54, 0x52, 0x41,
- 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x45, 0x45, 0x5f, 0x52,
- 0x45, 0x46, 0x45, 0x52, 0x52, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x57, 0x41, 0x52, 0x44, 0x5f, 0x50,
- 0x41, 0x59, 0x10, 0x27, 0x12, 0x30, 0x0a, 0x2c, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52,
- 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x45, 0x45, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x52,
- 0x45, 0x52, 0x5f, 0x52, 0x45, 0x57, 0x41, 0x52, 0x44, 0x5f, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49,
- 0x42, 0x55, 0x54, 0x45, 0x10, 0x2c, 0x22, 0x04, 0x08, 0x03, 0x10, 0x03, 0x22, 0x04, 0x08, 0x11,
- 0x10, 0x11, 0x2a, 0xe0, 0x02, 0x0a, 0x0e, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x4d,
- 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x1f, 0x0a, 0x1b, 0x44, 0x49, 0x53, 0x50, 0x41, 0x54, 0x43,
- 0x48, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49,
- 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1f, 0x44, 0x49, 0x53, 0x50, 0x41, 0x54,
- 0x43, 0x48, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x5f, 0x4d, 0x41, 0x4b, 0x45, 0x52, 0x5f,
- 0x46, 0x45, 0x45, 0x53, 0x5f, 0x50, 0x41, 0x49, 0x44, 0x10, 0x01, 0x12, 0x27, 0x0a, 0x23, 0x44,
- 0x49, 0x53, 0x50, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x5f, 0x4d,
- 0x41, 0x4b, 0x45, 0x52, 0x5f, 0x46, 0x45, 0x45, 0x53, 0x5f, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56,
- 0x45, 0x44, 0x10, 0x02, 0x12, 0x24, 0x0a, 0x20, 0x44, 0x49, 0x53, 0x50, 0x41, 0x54, 0x43, 0x48,
- 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x5f, 0x4c, 0x50, 0x5f, 0x46, 0x45, 0x45, 0x53, 0x5f,
- 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, 0x44, 0x10, 0x03, 0x12, 0x20, 0x0a, 0x1c, 0x44, 0x49,
+ 0x49, 0x4e, 0x46, 0x52, 0x41, 0x53, 0x54, 0x52, 0x55, 0x43, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x46,
+ 0x45, 0x45, 0x5f, 0x50, 0x41, 0x59, 0x10, 0x0b, 0x12, 0x2f, 0x0a, 0x2b, 0x54, 0x52, 0x41, 0x4e,
+ 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x52, 0x41, 0x53,
+ 0x54, 0x52, 0x55, 0x43, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x46, 0x45, 0x45, 0x5f, 0x44, 0x49, 0x53,
+ 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x10, 0x0c, 0x12, 0x23, 0x0a, 0x1f, 0x54, 0x52, 0x41,
+ 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x49, 0x51, 0x55, 0x49,
+ 0x44, 0x49, 0x54, 0x59, 0x5f, 0x46, 0x45, 0x45, 0x5f, 0x50, 0x41, 0x59, 0x10, 0x0d, 0x12, 0x2a,
+ 0x0a, 0x26, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
+ 0x4c, 0x49, 0x51, 0x55, 0x49, 0x44, 0x49, 0x54, 0x59, 0x5f, 0x46, 0x45, 0x45, 0x5f, 0x44, 0x49,
+ 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x10, 0x0e, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x52,
+ 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x4f, 0x4e, 0x44,
+ 0x5f, 0x4c, 0x4f, 0x57, 0x10, 0x0f, 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46,
+ 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x48, 0x49, 0x47,
+ 0x48, 0x10, 0x10, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f,
+ 0x54, 0x59, 0x50, 0x45, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x44, 0x52, 0x41, 0x57, 0x10, 0x12, 0x12,
+ 0x19, 0x0a, 0x15, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45,
+ 0x5f, 0x44, 0x45, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x10, 0x13, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x52,
+ 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x4f, 0x4e, 0x44,
+ 0x5f, 0x53, 0x4c, 0x41, 0x53, 0x48, 0x49, 0x4e, 0x47, 0x10, 0x14, 0x12, 0x1f, 0x0a, 0x1b, 0x54,
+ 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x57,
+ 0x41, 0x52, 0x44, 0x5f, 0x50, 0x41, 0x59, 0x4f, 0x55, 0x54, 0x10, 0x15, 0x12, 0x25, 0x0a, 0x21,
+ 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x52,
+ 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x46, 0x55, 0x4e, 0x44, 0x53, 0x5f, 0x53, 0x45, 0x4e,
+ 0x44, 0x10, 0x16, 0x12, 0x2b, 0x0a, 0x27, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f,
+ 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x46, 0x55,
+ 0x4e, 0x44, 0x53, 0x5f, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x10, 0x17,
+ 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50,
+ 0x45, 0x5f, 0x43, 0x4c, 0x45, 0x41, 0x52, 0x5f, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10,
+ 0x18, 0x12, 0x2c, 0x0a, 0x28, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59,
+ 0x50, 0x45, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x41,
+ 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x10, 0x19, 0x12,
+ 0x16, 0x0a, 0x12, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45,
+ 0x5f, 0x53, 0x50, 0x4f, 0x54, 0x10, 0x1a, 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x52, 0x41, 0x4e, 0x53,
+ 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x48, 0x4f, 0x4c, 0x44, 0x49, 0x4e, 0x47,
+ 0x5f, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x1b, 0x12, 0x21, 0x0a, 0x1d, 0x54, 0x52, 0x41, 0x4e, 0x53,
+ 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x48, 0x4f, 0x4c, 0x44, 0x49, 0x4e, 0x47,
+ 0x5f, 0x52, 0x45, 0x4c, 0x45, 0x41, 0x53, 0x45, 0x10, 0x1c, 0x12, 0x2e, 0x0a, 0x2a, 0x54, 0x52,
+ 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x55, 0x43, 0x43,
+ 0x45, 0x53, 0x53, 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x53, 0x55, 0x52, 0x41, 0x4e, 0x43, 0x45, 0x5f,
+ 0x46, 0x52, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x1d, 0x12, 0x28, 0x0a, 0x24, 0x54, 0x52,
+ 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x49, 0x51, 0x55,
+ 0x49, 0x44, 0x49, 0x54, 0x59, 0x5f, 0x46, 0x45, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x41,
+ 0x54, 0x45, 0x10, 0x1e, 0x12, 0x2e, 0x0a, 0x2a, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52,
+ 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x49, 0x51, 0x55, 0x49, 0x44, 0x49, 0x54, 0x59, 0x5f,
+ 0x46, 0x45, 0x45, 0x5f, 0x4e, 0x45, 0x54, 0x5f, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55,
+ 0x54, 0x45, 0x10, 0x1f, 0x12, 0x28, 0x0a, 0x24, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52,
+ 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x4c, 0x41, 0x5f, 0x50, 0x45, 0x4e, 0x41, 0x4c, 0x54,
+ 0x59, 0x5f, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x59, 0x10, 0x20, 0x12, 0x2a,
+ 0x0a, 0x26, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
+ 0x53, 0x4c, 0x41, 0x5f, 0x50, 0x45, 0x4e, 0x41, 0x4c, 0x54, 0x59, 0x5f, 0x4c, 0x50, 0x5f, 0x46,
+ 0x45, 0x45, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x59, 0x10, 0x21, 0x12, 0x2e, 0x0a, 0x2a, 0x54, 0x52,
+ 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x49, 0x51, 0x55,
+ 0x49, 0x44, 0x49, 0x54, 0x59, 0x5f, 0x46, 0x45, 0x45, 0x5f, 0x55, 0x4e, 0x50, 0x41, 0x49, 0x44,
+ 0x5f, 0x43, 0x4f, 0x4c, 0x4c, 0x45, 0x43, 0x54, 0x10, 0x22, 0x12, 0x32, 0x0a, 0x2e, 0x54, 0x52,
+ 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x4c, 0x41, 0x5f,
+ 0x50, 0x45, 0x52, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x42, 0x4f, 0x4e, 0x55,
+ 0x53, 0x5f, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x10, 0x23, 0x12, 0x29,
+ 0x0a, 0x25, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
+ 0x50, 0x45, 0x52, 0x50, 0x45, 0x54, 0x55, 0x41, 0x4c, 0x53, 0x5f, 0x46, 0x55, 0x4e, 0x44, 0x49,
+ 0x4e, 0x47, 0x5f, 0x4c, 0x4f, 0x53, 0x53, 0x10, 0x24, 0x12, 0x28, 0x0a, 0x24, 0x54, 0x52, 0x41,
+ 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x45, 0x52, 0x50, 0x45,
+ 0x54, 0x55, 0x41, 0x4c, 0x53, 0x5f, 0x46, 0x55, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x57, 0x49,
+ 0x4e, 0x10, 0x25, 0x12, 0x20, 0x0a, 0x1c, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f,
+ 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x57, 0x41, 0x52, 0x44, 0x53, 0x5f, 0x56, 0x45, 0x53,
+ 0x54, 0x45, 0x44, 0x10, 0x26, 0x12, 0x29, 0x0a, 0x25, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45,
+ 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x45, 0x45, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52,
+ 0x52, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x57, 0x41, 0x52, 0x44, 0x5f, 0x50, 0x41, 0x59, 0x10, 0x27,
+ 0x12, 0x30, 0x0a, 0x2c, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50,
+ 0x45, 0x5f, 0x46, 0x45, 0x45, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x52, 0x45, 0x52, 0x5f, 0x52,
+ 0x45, 0x57, 0x41, 0x52, 0x44, 0x5f, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45,
+ 0x10, 0x2c, 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54,
+ 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x4d, 0x41, 0x52, 0x47, 0x49, 0x4e,
+ 0x5f, 0x4c, 0x4f, 0x57, 0x10, 0x2d, 0x12, 0x23, 0x0a, 0x1f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46,
+ 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x5f, 0x4d, 0x41,
+ 0x52, 0x47, 0x49, 0x4e, 0x5f, 0x48, 0x49, 0x47, 0x48, 0x10, 0x2e, 0x12, 0x25, 0x0a, 0x21, 0x54,
+ 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x53, 0x4f,
+ 0x4c, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x4d, 0x41, 0x52, 0x47, 0x49, 0x4e, 0x5f, 0x4c, 0x4f, 0x57,
+ 0x10, 0x2f, 0x12, 0x26, 0x0a, 0x22, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x5f, 0x54,
+ 0x59, 0x50, 0x45, 0x5f, 0x49, 0x53, 0x4f, 0x4c, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x4d, 0x41, 0x52,
+ 0x47, 0x49, 0x4e, 0x5f, 0x48, 0x49, 0x47, 0x48, 0x10, 0x30, 0x22, 0x04, 0x08, 0x03, 0x10, 0x03,
+ 0x22, 0x04, 0x08, 0x11, 0x10, 0x11, 0x2a, 0xe0, 0x02, 0x0a, 0x0e, 0x44, 0x69, 0x73, 0x70, 0x61,
+ 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x1f, 0x0a, 0x1b, 0x44, 0x49, 0x53,
+ 0x50, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x5f, 0x55, 0x4e, 0x53,
+ 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1f, 0x44, 0x49,
0x53, 0x50, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x5f, 0x4d, 0x41,
- 0x52, 0x4b, 0x45, 0x54, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x04, 0x12, 0x24, 0x0a, 0x20,
- 0x44, 0x49, 0x53, 0x50, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x5f,
- 0x41, 0x56, 0x45, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e,
- 0x10, 0x05, 0x12, 0x23, 0x0a, 0x1f, 0x44, 0x49, 0x53, 0x50, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x4d,
- 0x45, 0x54, 0x52, 0x49, 0x43, 0x5f, 0x52, 0x45, 0x4c, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x52,
- 0x45, 0x54, 0x55, 0x52, 0x4e, 0x10, 0x06, 0x12, 0x25, 0x0a, 0x21, 0x44, 0x49, 0x53, 0x50, 0x41,
- 0x54, 0x43, 0x48, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x5f, 0x52, 0x45, 0x54, 0x55, 0x52,
- 0x4e, 0x5f, 0x56, 0x4f, 0x4c, 0x41, 0x54, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x10, 0x07, 0x12, 0x25,
- 0x0a, 0x21, 0x44, 0x49, 0x53, 0x50, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49,
- 0x43, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x52, 0x41, 0x4e, 0x4b,
- 0x49, 0x4e, 0x47, 0x10, 0x08, 0x2a, 0x61, 0x0a, 0x0b, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x53,
- 0x63, 0x6f, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x53,
+ 0x4b, 0x45, 0x52, 0x5f, 0x46, 0x45, 0x45, 0x53, 0x5f, 0x50, 0x41, 0x49, 0x44, 0x10, 0x01, 0x12,
+ 0x27, 0x0a, 0x23, 0x44, 0x49, 0x53, 0x50, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x4d, 0x45, 0x54, 0x52,
+ 0x49, 0x43, 0x5f, 0x4d, 0x41, 0x4b, 0x45, 0x52, 0x5f, 0x46, 0x45, 0x45, 0x53, 0x5f, 0x52, 0x45,
+ 0x43, 0x45, 0x49, 0x56, 0x45, 0x44, 0x10, 0x02, 0x12, 0x24, 0x0a, 0x20, 0x44, 0x49, 0x53, 0x50,
+ 0x41, 0x54, 0x43, 0x48, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x5f, 0x4c, 0x50, 0x5f, 0x46,
+ 0x45, 0x45, 0x53, 0x5f, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, 0x44, 0x10, 0x03, 0x12, 0x20,
+ 0x0a, 0x1c, 0x44, 0x49, 0x53, 0x50, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49,
+ 0x43, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x54, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x04,
+ 0x12, 0x24, 0x0a, 0x20, 0x44, 0x49, 0x53, 0x50, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x4d, 0x45, 0x54,
+ 0x52, 0x49, 0x43, 0x5f, 0x41, 0x56, 0x45, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x53, 0x49,
+ 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x05, 0x12, 0x23, 0x0a, 0x1f, 0x44, 0x49, 0x53, 0x50, 0x41, 0x54,
+ 0x43, 0x48, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x5f, 0x52, 0x45, 0x4c, 0x41, 0x54, 0x49,
+ 0x56, 0x45, 0x5f, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4e, 0x10, 0x06, 0x12, 0x25, 0x0a, 0x21, 0x44,
+ 0x49, 0x53, 0x50, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x5f, 0x52,
+ 0x45, 0x54, 0x55, 0x52, 0x4e, 0x5f, 0x56, 0x4f, 0x4c, 0x41, 0x54, 0x49, 0x4c, 0x49, 0x54, 0x59,
+ 0x10, 0x07, 0x12, 0x25, 0x0a, 0x21, 0x44, 0x49, 0x53, 0x50, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x4d,
+ 0x45, 0x54, 0x52, 0x49, 0x43, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x4f, 0x52, 0x5f,
+ 0x52, 0x41, 0x4e, 0x4b, 0x49, 0x4e, 0x47, 0x10, 0x08, 0x2a, 0x61, 0x0a, 0x0b, 0x45, 0x6e, 0x74,
+ 0x69, 0x74, 0x79, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x45, 0x4e, 0x54, 0x49,
+ 0x54, 0x59, 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49,
+ 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59,
+ 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x44, 0x49, 0x56, 0x49, 0x44, 0x55, 0x41,
+ 0x4c, 0x53, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x53,
+ 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x54, 0x45, 0x41, 0x4d, 0x53, 0x10, 0x02, 0x2a, 0x8d, 0x01, 0x0a,
+ 0x0f, 0x49, 0x6e, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x70, 0x65,
+ 0x12, 0x20, 0x0a, 0x1c, 0x49, 0x4e, 0x44, 0x49, 0x56, 0x49, 0x44, 0x55, 0x41, 0x4c, 0x5f, 0x53,
0x43, 0x4f, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44,
- 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x53, 0x43, 0x4f,
- 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x44, 0x49, 0x56, 0x49, 0x44, 0x55, 0x41, 0x4c, 0x53, 0x10, 0x01,
- 0x12, 0x16, 0x0a, 0x12, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45,
- 0x5f, 0x54, 0x45, 0x41, 0x4d, 0x53, 0x10, 0x02, 0x2a, 0x8d, 0x01, 0x0a, 0x0f, 0x49, 0x6e, 0x64,
- 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x1c,
+ 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x49, 0x4e, 0x44, 0x49, 0x56, 0x49, 0x44, 0x55, 0x41, 0x4c,
+ 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18,
0x49, 0x4e, 0x44, 0x49, 0x56, 0x49, 0x44, 0x55, 0x41, 0x4c, 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45,
- 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18,
- 0x0a, 0x14, 0x49, 0x4e, 0x44, 0x49, 0x56, 0x49, 0x44, 0x55, 0x41, 0x4c, 0x5f, 0x53, 0x43, 0x4f,
- 0x50, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x49, 0x4e, 0x44, 0x49,
- 0x56, 0x49, 0x44, 0x55, 0x41, 0x4c, 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x5f,
- 0x54, 0x45, 0x41, 0x4d, 0x10, 0x02, 0x12, 0x20, 0x0a, 0x1c, 0x49, 0x4e, 0x44, 0x49, 0x56, 0x49,
- 0x44, 0x55, 0x41, 0x4c, 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x49,
- 0x4e, 0x5f, 0x54, 0x45, 0x41, 0x4d, 0x10, 0x03, 0x2a, 0x81, 0x01, 0x0a, 0x14, 0x44, 0x69, 0x73,
- 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67,
- 0x79, 0x12, 0x25, 0x0a, 0x21, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f,
- 0x4e, 0x5f, 0x53, 0x54, 0x52, 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45,
- 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x44, 0x49, 0x53, 0x54,
- 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x52, 0x41, 0x54, 0x45, 0x47,
- 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x5f, 0x52, 0x41, 0x54, 0x41, 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a,
+ 0x5f, 0x49, 0x4e, 0x5f, 0x54, 0x45, 0x41, 0x4d, 0x10, 0x02, 0x12, 0x20, 0x0a, 0x1c, 0x49, 0x4e,
+ 0x44, 0x49, 0x56, 0x49, 0x44, 0x55, 0x41, 0x4c, 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x4e,
+ 0x4f, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x54, 0x45, 0x41, 0x4d, 0x10, 0x03, 0x2a, 0x81, 0x01, 0x0a,
+ 0x14, 0x44, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72,
+ 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x25, 0x0a, 0x21, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42,
+ 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x52, 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, 0x55,
+ 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e,
0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x52,
- 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x10, 0x02, 0x2a, 0x63, 0x0a, 0x0a,
- 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x17, 0x4e, 0x4f,
- 0x44, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43,
- 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x4e, 0x4f, 0x44, 0x45, 0x5f,
- 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x4f, 0x52,
- 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55,
- 0x53, 0x5f, 0x4e, 0x4f, 0x4e, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x4f, 0x52, 0x10,
- 0x02, 0x2a, 0x59, 0x0a, 0x0b, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e,
- 0x12, 0x1c, 0x0a, 0x18, 0x45, 0x50, 0x4f, 0x43, 0x48, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e,
- 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16,
- 0x0a, 0x12, 0x45, 0x50, 0x4f, 0x43, 0x48, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53,
- 0x54, 0x41, 0x52, 0x54, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x50, 0x4f, 0x43, 0x48, 0x5f,
- 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x44, 0x10, 0x02, 0x2a, 0xa7, 0x01, 0x0a,
- 0x13, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74,
- 0x61, 0x74, 0x75, 0x73, 0x12, 0x25, 0x0a, 0x21, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x4f,
- 0x52, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e,
- 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x24, 0x0a, 0x20, 0x56,
- 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54,
- 0x41, 0x54, 0x55, 0x53, 0x5f, 0x54, 0x45, 0x4e, 0x44, 0x45, 0x52, 0x4d, 0x49, 0x4e, 0x54, 0x10,
- 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x4e,
- 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x45, 0x52, 0x53, 0x41, 0x54,
- 0x5a, 0x10, 0x02, 0x12, 0x21, 0x0a, 0x1d, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x4f, 0x52,
- 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x50, 0x45, 0x4e,
- 0x44, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x2a, 0x68, 0x0a, 0x0a, 0x4d, 0x61, 0x72, 0x67, 0x69, 0x6e,
- 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x4d, 0x41, 0x52, 0x47, 0x49, 0x4e, 0x5f, 0x4d,
- 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10,
- 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x41, 0x52, 0x47, 0x49, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45,
- 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x4d, 0x41, 0x52, 0x47, 0x49, 0x4e, 0x10, 0x01, 0x12,
- 0x1f, 0x0a, 0x1b, 0x4d, 0x41, 0x52, 0x47, 0x49, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x49,
- 0x53, 0x4f, 0x4c, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x4d, 0x41, 0x52, 0x47, 0x49, 0x4e, 0x10, 0x02,
- 0x42, 0x27, 0x5a, 0x25, 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, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x33,
+ 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x5f, 0x52, 0x41, 0x54, 0x41, 0x10, 0x01,
+ 0x12, 0x1e, 0x0a, 0x1a, 0x44, 0x49, 0x53, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x49, 0x4f, 0x4e,
+ 0x5f, 0x53, 0x54, 0x52, 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x10, 0x02,
+ 0x2a, 0x63, 0x0a, 0x0a, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b,
+ 0x0a, 0x17, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e,
+ 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x4e,
+ 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44,
+ 0x41, 0x54, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x53,
+ 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4e, 0x4f, 0x4e, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41,
+ 0x54, 0x4f, 0x52, 0x10, 0x02, 0x2a, 0x59, 0x0a, 0x0b, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x41, 0x63,
+ 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x18, 0x45, 0x50, 0x4f, 0x43, 0x48, 0x5f, 0x41, 0x43,
+ 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44,
+ 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x45, 0x50, 0x4f, 0x43, 0x48, 0x5f, 0x41, 0x43, 0x54, 0x49,
+ 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x50,
+ 0x4f, 0x43, 0x48, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x44, 0x10, 0x02,
+ 0x2a, 0xa7, 0x01, 0x0a, 0x13, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x4e, 0x6f,
+ 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x25, 0x0a, 0x21, 0x56, 0x41, 0x4c, 0x49,
+ 0x44, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55,
+ 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12,
+ 0x24, 0x0a, 0x20, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x4e, 0x4f, 0x44,
+ 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x54, 0x45, 0x4e, 0x44, 0x45, 0x52, 0x4d,
+ 0x49, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54,
+ 0x4f, 0x52, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x45,
+ 0x52, 0x53, 0x41, 0x54, 0x5a, 0x10, 0x02, 0x12, 0x21, 0x0a, 0x1d, 0x56, 0x41, 0x4c, 0x49, 0x44,
+ 0x41, 0x54, 0x4f, 0x52, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53,
+ 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x2a, 0x68, 0x0a, 0x0a, 0x4d, 0x61,
+ 0x72, 0x67, 0x69, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x4d, 0x41, 0x52, 0x47,
+ 0x49, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
+ 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x41, 0x52, 0x47, 0x49, 0x4e, 0x5f,
+ 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x5f, 0x4d, 0x41, 0x52, 0x47, 0x49,
+ 0x4e, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x4d, 0x41, 0x52, 0x47, 0x49, 0x4e, 0x5f, 0x4d, 0x4f,
+ 0x44, 0x45, 0x5f, 0x49, 0x53, 0x4f, 0x4c, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x4d, 0x41, 0x52, 0x47,
+ 0x49, 0x4e, 0x10, 0x02, 0x42, 0x27, 0x5a, 0x25, 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, 0x62, 0x06, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -10753,56 +10828,57 @@ var file_vega_vega_proto_depIdxs = []int32{
56, // 46: vega.PostTransferBalance.account:type_name -> vega.AccountDetails
57, // 47: vega.LedgerMovement.entries:type_name -> vega.LedgerEntry
58, // 48: vega.LedgerMovement.balances:type_name -> vega.PostTransferBalance
- 61, // 49: vega.ProductData.perpetual_data:type_name -> vega.PerpetualData
- 103, // 50: vega.MarketData.market_trading_mode:type_name -> vega.Market.TradingMode
- 3, // 51: vega.MarketData.trigger:type_name -> vega.AuctionTrigger
- 3, // 52: vega.MarketData.extension_trigger:type_name -> vega.AuctionTrigger
- 66, // 53: vega.MarketData.price_monitoring_bounds:type_name -> vega.PriceMonitoringBounds
- 64, // 54: vega.MarketData.liquidity_provider_fee_share:type_name -> vega.LiquidityProviderFeeShare
- 104, // 55: vega.MarketData.market_state:type_name -> vega.Market.State
- 62, // 56: vega.MarketData.product_data:type_name -> vega.ProductData
- 65, // 57: vega.MarketData.liquidity_provider_sla:type_name -> vega.LiquidityProviderSLA
- 105, // 58: vega.PriceMonitoringBounds.trigger:type_name -> vega.PriceMonitoringTrigger
- 4, // 59: vega.LiquidityOrder.reference:type_name -> vega.PeggedReference
- 70, // 60: vega.LiquidityOrderReference.liquidity_order:type_name -> vega.LiquidityOrder
- 71, // 61: vega.LiquidityProvision.sells:type_name -> vega.LiquidityOrderReference
- 71, // 62: vega.LiquidityProvision.buys:type_name -> vega.LiquidityOrderReference
- 27, // 63: vega.LiquidityProvision.status:type_name -> vega.LiquidityProvision.Status
- 74, // 64: vega.EthereumConfig.collateral_bridge_contract:type_name -> vega.EthereumContractConfig
- 74, // 65: vega.EthereumConfig.staking_bridge_contract:type_name -> vega.EthereumContractConfig
- 74, // 66: vega.EthereumConfig.token_vesting_contract:type_name -> vega.EthereumContractConfig
- 74, // 67: vega.EthereumConfig.multisig_control_contract:type_name -> vega.EthereumContractConfig
- 75, // 68: vega.Epoch.timestamps:type_name -> vega.EpochTimestamps
- 81, // 69: vega.Epoch.validators:type_name -> vega.Node
- 84, // 70: vega.Epoch.delegations:type_name -> vega.Delegation
- 76, // 71: vega.EpochParticipation.epoch:type_name -> vega.Epoch
- 15, // 72: vega.RankingScore.previous_status:type_name -> vega.ValidatorNodeStatus
- 15, // 73: vega.RankingScore.status:type_name -> vega.ValidatorNodeStatus
- 15, // 74: vega.RewardScore.validator_status:type_name -> vega.ValidatorNodeStatus
- 78, // 75: vega.Node.epoch_data:type_name -> vega.EpochData
- 13, // 76: vega.Node.status:type_name -> vega.NodeStatus
- 84, // 77: vega.Node.delegations:type_name -> vega.Delegation
- 80, // 78: vega.Node.reward_score:type_name -> vega.RewardScore
- 79, // 79: vega.Node.ranking_score:type_name -> vega.RankingScore
- 82, // 80: vega.NodeData.tendermint_nodes:type_name -> vega.NodeSet
- 82, // 81: vega.NodeData.ersatz_nodes:type_name -> vega.NodeSet
- 82, // 82: vega.NodeData.pending_nodes:type_name -> vega.NodeSet
- 89, // 83: vega.StateValueProposal.kvb:type_name -> vega.KeyValueBundle
- 90, // 84: vega.KeyValueBundle.value:type_name -> vega.StateVarValue
- 91, // 85: vega.StateVarValue.scalar_val:type_name -> vega.ScalarValue
- 92, // 86: vega.StateVarValue.vector_val:type_name -> vega.VectorValue
- 93, // 87: vega.StateVarValue.matrix_val:type_name -> vega.MatrixValue
- 92, // 88: vega.MatrixValue.value:type_name -> vega.VectorValue
- 96, // 89: vega.ReferralProgram.benefit_tiers:type_name -> vega.BenefitTier
- 99, // 90: vega.ReferralProgram.staking_tiers:type_name -> vega.StakingTier
- 98, // 91: vega.VestingBenefitTiers.tiers:type_name -> vega.VestingBenefitTier
- 95, // 92: vega.VolumeDiscountProgram.benefit_tiers:type_name -> vega.VolumeBenefitTier
- 102, // 93: vega.ActivityStreakBenefitTiers.tiers:type_name -> vega.ActivityStreakBenefitTier
- 94, // [94:94] is the sub-list for method output_type
- 94, // [94:94] is the sub-list for method input_type
- 94, // [94:94] is the sub-list for extension type_name
- 94, // [94:94] is the sub-list for extension extendee
- 0, // [0:94] is the sub-list for field type_name
+ 16, // 49: vega.MarginLevels.margin_mode:type_name -> vega.MarginMode
+ 61, // 50: vega.ProductData.perpetual_data:type_name -> vega.PerpetualData
+ 103, // 51: vega.MarketData.market_trading_mode:type_name -> vega.Market.TradingMode
+ 3, // 52: vega.MarketData.trigger:type_name -> vega.AuctionTrigger
+ 3, // 53: vega.MarketData.extension_trigger:type_name -> vega.AuctionTrigger
+ 66, // 54: vega.MarketData.price_monitoring_bounds:type_name -> vega.PriceMonitoringBounds
+ 64, // 55: vega.MarketData.liquidity_provider_fee_share:type_name -> vega.LiquidityProviderFeeShare
+ 104, // 56: vega.MarketData.market_state:type_name -> vega.Market.State
+ 62, // 57: vega.MarketData.product_data:type_name -> vega.ProductData
+ 65, // 58: vega.MarketData.liquidity_provider_sla:type_name -> vega.LiquidityProviderSLA
+ 105, // 59: vega.PriceMonitoringBounds.trigger:type_name -> vega.PriceMonitoringTrigger
+ 4, // 60: vega.LiquidityOrder.reference:type_name -> vega.PeggedReference
+ 70, // 61: vega.LiquidityOrderReference.liquidity_order:type_name -> vega.LiquidityOrder
+ 71, // 62: vega.LiquidityProvision.sells:type_name -> vega.LiquidityOrderReference
+ 71, // 63: vega.LiquidityProvision.buys:type_name -> vega.LiquidityOrderReference
+ 27, // 64: vega.LiquidityProvision.status:type_name -> vega.LiquidityProvision.Status
+ 74, // 65: vega.EthereumConfig.collateral_bridge_contract:type_name -> vega.EthereumContractConfig
+ 74, // 66: vega.EthereumConfig.staking_bridge_contract:type_name -> vega.EthereumContractConfig
+ 74, // 67: vega.EthereumConfig.token_vesting_contract:type_name -> vega.EthereumContractConfig
+ 74, // 68: vega.EthereumConfig.multisig_control_contract:type_name -> vega.EthereumContractConfig
+ 75, // 69: vega.Epoch.timestamps:type_name -> vega.EpochTimestamps
+ 81, // 70: vega.Epoch.validators:type_name -> vega.Node
+ 84, // 71: vega.Epoch.delegations:type_name -> vega.Delegation
+ 76, // 72: vega.EpochParticipation.epoch:type_name -> vega.Epoch
+ 15, // 73: vega.RankingScore.previous_status:type_name -> vega.ValidatorNodeStatus
+ 15, // 74: vega.RankingScore.status:type_name -> vega.ValidatorNodeStatus
+ 15, // 75: vega.RewardScore.validator_status:type_name -> vega.ValidatorNodeStatus
+ 78, // 76: vega.Node.epoch_data:type_name -> vega.EpochData
+ 13, // 77: vega.Node.status:type_name -> vega.NodeStatus
+ 84, // 78: vega.Node.delegations:type_name -> vega.Delegation
+ 80, // 79: vega.Node.reward_score:type_name -> vega.RewardScore
+ 79, // 80: vega.Node.ranking_score:type_name -> vega.RankingScore
+ 82, // 81: vega.NodeData.tendermint_nodes:type_name -> vega.NodeSet
+ 82, // 82: vega.NodeData.ersatz_nodes:type_name -> vega.NodeSet
+ 82, // 83: vega.NodeData.pending_nodes:type_name -> vega.NodeSet
+ 89, // 84: vega.StateValueProposal.kvb:type_name -> vega.KeyValueBundle
+ 90, // 85: vega.KeyValueBundle.value:type_name -> vega.StateVarValue
+ 91, // 86: vega.StateVarValue.scalar_val:type_name -> vega.ScalarValue
+ 92, // 87: vega.StateVarValue.vector_val:type_name -> vega.VectorValue
+ 93, // 88: vega.StateVarValue.matrix_val:type_name -> vega.MatrixValue
+ 92, // 89: vega.MatrixValue.value:type_name -> vega.VectorValue
+ 96, // 90: vega.ReferralProgram.benefit_tiers:type_name -> vega.BenefitTier
+ 99, // 91: vega.ReferralProgram.staking_tiers:type_name -> vega.StakingTier
+ 98, // 92: vega.VestingBenefitTiers.tiers:type_name -> vega.VestingBenefitTier
+ 95, // 93: vega.VolumeDiscountProgram.benefit_tiers:type_name -> vega.VolumeBenefitTier
+ 102, // 94: vega.ActivityStreakBenefitTiers.tiers:type_name -> vega.ActivityStreakBenefitTier
+ 95, // [95:95] is the sub-list for method output_type
+ 95, // [95:95] is the sub-list for method input_type
+ 95, // [95:95] is the sub-list for extension type_name
+ 95, // [95:95] is the sub-list for extension extendee
+ 0, // [0:95] is the sub-list for field type_name
}
func init() { file_vega_vega_proto_init() }