From ed266118bb1196eabda012686d8ac0a643f24596 Mon Sep 17 00:00:00 2001 From: John Letey Date: Fri, 9 Jun 2023 15:18:18 +0200 Subject: [PATCH] feat: backport expedited proposals to `v0.47.x` Minimal backport of cosmos/cosmos-sdk#14720 --- api/cosmos/gov/v1/gov.pulsar.go | 650 +++++++++++++++++++++++++------ api/cosmos/gov/v1/tx.pulsar.go | 317 +++++++++------ proto/cosmos/gov/v1/gov.proto | 18 + proto/cosmos/gov/v1/tx.proto | 5 + x/gov/abci.go | 42 +- x/gov/client/cli/tx.go | 4 +- x/gov/client/cli/util.go | 23 +- x/gov/client/cli/util_test.go | 16 +- x/gov/migrations/v3/json_test.go | 1 + x/gov/migrations/v4/json.go | 3 + x/gov/migrations/v4/json_test.go | 8 + x/gov/migrations/v4/store.go | 3 + x/gov/simulation/genesis.go | 125 ++++-- x/gov/simulation/genesis_test.go | 33 +- x/gov/types/events.go | 25 +- x/gov/types/v1/gov.pb.go | 408 ++++++++++++++----- x/gov/types/v1/msgs.go | 8 + x/gov/types/v1/params.go | 66 +++- x/gov/types/v1/proposal.go | 16 + x/gov/types/v1/tx.pb.go | 161 +++++--- 20 files changed, 1424 insertions(+), 508 deletions(-) diff --git a/api/cosmos/gov/v1/gov.pulsar.go b/api/cosmos/gov/v1/gov.pulsar.go index ceb82da18d45..ada561562cc0 100644 --- a/api/cosmos/gov/v1/gov.pulsar.go +++ b/api/cosmos/gov/v1/gov.pulsar.go @@ -1210,6 +1210,7 @@ var ( fd_Proposal_title protoreflect.FieldDescriptor fd_Proposal_summary protoreflect.FieldDescriptor fd_Proposal_proposer protoreflect.FieldDescriptor + fd_Proposal_expedited protoreflect.FieldDescriptor ) func init() { @@ -1228,6 +1229,7 @@ func init() { fd_Proposal_title = md_Proposal.Fields().ByName("title") fd_Proposal_summary = md_Proposal.Fields().ByName("summary") fd_Proposal_proposer = md_Proposal.Fields().ByName("proposer") + fd_Proposal_expedited = md_Proposal.Fields().ByName("expedited") } var _ protoreflect.Message = (*fastReflection_Proposal)(nil) @@ -1373,6 +1375,12 @@ func (x *fastReflection_Proposal) Range(f func(protoreflect.FieldDescriptor, pro return } } + if x.Expedited != false { + value := protoreflect.ValueOfBool(x.Expedited) + if !f(fd_Proposal_expedited, value) { + return + } + } } // Has reports whether a field is populated. @@ -1414,6 +1422,8 @@ func (x *fastReflection_Proposal) Has(fd protoreflect.FieldDescriptor) bool { return x.Summary != "" case "cosmos.gov.v1.Proposal.proposer": return x.Proposer != "" + case "cosmos.gov.v1.Proposal.expedited": + return x.Expedited != false default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1.Proposal")) @@ -1456,6 +1466,8 @@ func (x *fastReflection_Proposal) Clear(fd protoreflect.FieldDescriptor) { x.Summary = "" case "cosmos.gov.v1.Proposal.proposer": x.Proposer = "" + case "cosmos.gov.v1.Proposal.expedited": + x.Expedited = false default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1.Proposal")) @@ -1517,6 +1529,9 @@ func (x *fastReflection_Proposal) Get(descriptor protoreflect.FieldDescriptor) p case "cosmos.gov.v1.Proposal.proposer": value := x.Proposer return protoreflect.ValueOfString(value) + case "cosmos.gov.v1.Proposal.expedited": + value := x.Expedited + return protoreflect.ValueOfBool(value) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1.Proposal")) @@ -1567,6 +1582,8 @@ func (x *fastReflection_Proposal) Set(fd protoreflect.FieldDescriptor, value pro x.Summary = value.Interface().(string) case "cosmos.gov.v1.Proposal.proposer": x.Proposer = value.Interface().(string) + case "cosmos.gov.v1.Proposal.expedited": + x.Expedited = value.Bool() default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1.Proposal")) @@ -1636,6 +1653,8 @@ func (x *fastReflection_Proposal) Mutable(fd protoreflect.FieldDescriptor) proto panic(fmt.Errorf("field summary of message cosmos.gov.v1.Proposal is not mutable")) case "cosmos.gov.v1.Proposal.proposer": panic(fmt.Errorf("field proposer of message cosmos.gov.v1.Proposal is not mutable")) + case "cosmos.gov.v1.Proposal.expedited": + panic(fmt.Errorf("field expedited of message cosmos.gov.v1.Proposal is not mutable")) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1.Proposal")) @@ -1682,6 +1701,8 @@ func (x *fastReflection_Proposal) NewField(fd protoreflect.FieldDescriptor) prot return protoreflect.ValueOfString("") case "cosmos.gov.v1.Proposal.proposer": return protoreflect.ValueOfString("") + case "cosmos.gov.v1.Proposal.expedited": + return protoreflect.ValueOfBool(false) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1.Proposal")) @@ -1805,6 +1826,9 @@ func (x *fastReflection_Proposal) ProtoMethods() *protoiface.Methods { if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } + if x.Expedited { + n += 2 + } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -1834,6 +1858,16 @@ func (x *fastReflection_Proposal) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } + if x.Expedited { + i-- + if x.Expedited { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x70 + } if len(x.Proposer) > 0 { i -= len(x.Proposer) copy(dAtA[i:], x.Proposer) @@ -2437,6 +2471,26 @@ func (x *fastReflection_Proposal) ProtoMethods() *protoiface.Methods { } x.Proposer = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 14: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Expedited", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + x.Expedited = bool(v != 0) default: iNdEx = preIndex skippy, err := runtime.Skip(dAtA[iNdEx:]) @@ -5361,6 +5415,57 @@ func (x *_Params_1_list) IsValid() bool { return x.list != nil } +var _ protoreflect.List = (*_Params_12_list)(nil) + +type _Params_12_list struct { + list *[]*v1beta1.Coin +} + +func (x *_Params_12_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_Params_12_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_Params_12_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*v1beta1.Coin) + (*x.list)[i] = concreteValue +} + +func (x *_Params_12_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*v1beta1.Coin) + *x.list = append(*x.list, concreteValue) +} + +func (x *_Params_12_list) AppendMutable() protoreflect.Value { + v := new(v1beta1.Coin) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_Params_12_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_Params_12_list) NewElement() protoreflect.Value { + v := new(v1beta1.Coin) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_Params_12_list) IsValid() bool { + return x.list != nil +} + var ( md_Params protoreflect.MessageDescriptor fd_Params_min_deposit protoreflect.FieldDescriptor @@ -5370,6 +5475,9 @@ var ( fd_Params_threshold protoreflect.FieldDescriptor fd_Params_veto_threshold protoreflect.FieldDescriptor fd_Params_min_initial_deposit_ratio protoreflect.FieldDescriptor + fd_Params_expedited_voting_period protoreflect.FieldDescriptor + fd_Params_expedited_threshold protoreflect.FieldDescriptor + fd_Params_expedited_min_deposit protoreflect.FieldDescriptor fd_Params_burn_vote_quorum protoreflect.FieldDescriptor fd_Params_burn_proposal_deposit_prevote protoreflect.FieldDescriptor fd_Params_burn_vote_veto protoreflect.FieldDescriptor @@ -5385,6 +5493,9 @@ func init() { fd_Params_threshold = md_Params.Fields().ByName("threshold") fd_Params_veto_threshold = md_Params.Fields().ByName("veto_threshold") fd_Params_min_initial_deposit_ratio = md_Params.Fields().ByName("min_initial_deposit_ratio") + fd_Params_expedited_voting_period = md_Params.Fields().ByName("expedited_voting_period") + fd_Params_expedited_threshold = md_Params.Fields().ByName("expedited_threshold") + fd_Params_expedited_min_deposit = md_Params.Fields().ByName("expedited_min_deposit") fd_Params_burn_vote_quorum = md_Params.Fields().ByName("burn_vote_quorum") fd_Params_burn_proposal_deposit_prevote = md_Params.Fields().ByName("burn_proposal_deposit_prevote") fd_Params_burn_vote_veto = md_Params.Fields().ByName("burn_vote_veto") @@ -5497,6 +5608,24 @@ func (x *fastReflection_Params) Range(f func(protoreflect.FieldDescriptor, proto return } } + if x.ExpeditedVotingPeriod != nil { + value := protoreflect.ValueOfMessage(x.ExpeditedVotingPeriod.ProtoReflect()) + if !f(fd_Params_expedited_voting_period, value) { + return + } + } + if x.ExpeditedThreshold != "" { + value := protoreflect.ValueOfString(x.ExpeditedThreshold) + if !f(fd_Params_expedited_threshold, value) { + return + } + } + if len(x.ExpeditedMinDeposit) != 0 { + value := protoreflect.ValueOfList(&_Params_12_list{list: &x.ExpeditedMinDeposit}) + if !f(fd_Params_expedited_min_deposit, value) { + return + } + } if x.BurnVoteQuorum != false { value := protoreflect.ValueOfBool(x.BurnVoteQuorum) if !f(fd_Params_burn_vote_quorum, value) { @@ -5544,6 +5673,12 @@ func (x *fastReflection_Params) Has(fd protoreflect.FieldDescriptor) bool { return x.VetoThreshold != "" case "cosmos.gov.v1.Params.min_initial_deposit_ratio": return x.MinInitialDepositRatio != "" + case "cosmos.gov.v1.Params.expedited_voting_period": + return x.ExpeditedVotingPeriod != nil + case "cosmos.gov.v1.Params.expedited_threshold": + return x.ExpeditedThreshold != "" + case "cosmos.gov.v1.Params.expedited_min_deposit": + return len(x.ExpeditedMinDeposit) != 0 case "cosmos.gov.v1.Params.burn_vote_quorum": return x.BurnVoteQuorum != false case "cosmos.gov.v1.Params.burn_proposal_deposit_prevote": @@ -5580,6 +5715,12 @@ func (x *fastReflection_Params) Clear(fd protoreflect.FieldDescriptor) { x.VetoThreshold = "" case "cosmos.gov.v1.Params.min_initial_deposit_ratio": x.MinInitialDepositRatio = "" + case "cosmos.gov.v1.Params.expedited_voting_period": + x.ExpeditedVotingPeriod = nil + case "cosmos.gov.v1.Params.expedited_threshold": + x.ExpeditedThreshold = "" + case "cosmos.gov.v1.Params.expedited_min_deposit": + x.ExpeditedMinDeposit = nil case "cosmos.gov.v1.Params.burn_vote_quorum": x.BurnVoteQuorum = false case "cosmos.gov.v1.Params.burn_proposal_deposit_prevote": @@ -5626,6 +5767,18 @@ func (x *fastReflection_Params) Get(descriptor protoreflect.FieldDescriptor) pro case "cosmos.gov.v1.Params.min_initial_deposit_ratio": value := x.MinInitialDepositRatio return protoreflect.ValueOfString(value) + case "cosmos.gov.v1.Params.expedited_voting_period": + value := x.ExpeditedVotingPeriod + return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "cosmos.gov.v1.Params.expedited_threshold": + value := x.ExpeditedThreshold + return protoreflect.ValueOfString(value) + case "cosmos.gov.v1.Params.expedited_min_deposit": + if len(x.ExpeditedMinDeposit) == 0 { + return protoreflect.ValueOfList(&_Params_12_list{}) + } + listValue := &_Params_12_list{list: &x.ExpeditedMinDeposit} + return protoreflect.ValueOfList(listValue) case "cosmos.gov.v1.Params.burn_vote_quorum": value := x.BurnVoteQuorum return protoreflect.ValueOfBool(value) @@ -5671,6 +5824,14 @@ func (x *fastReflection_Params) Set(fd protoreflect.FieldDescriptor, value proto x.VetoThreshold = value.Interface().(string) case "cosmos.gov.v1.Params.min_initial_deposit_ratio": x.MinInitialDepositRatio = value.Interface().(string) + case "cosmos.gov.v1.Params.expedited_voting_period": + x.ExpeditedVotingPeriod = value.Message().Interface().(*durationpb.Duration) + case "cosmos.gov.v1.Params.expedited_threshold": + x.ExpeditedThreshold = value.Interface().(string) + case "cosmos.gov.v1.Params.expedited_min_deposit": + lv := value.List() + clv := lv.(*_Params_12_list) + x.ExpeditedMinDeposit = *clv.list case "cosmos.gov.v1.Params.burn_vote_quorum": x.BurnVoteQuorum = value.Bool() case "cosmos.gov.v1.Params.burn_proposal_deposit_prevote": @@ -5713,6 +5874,17 @@ func (x *fastReflection_Params) Mutable(fd protoreflect.FieldDescriptor) protore x.VotingPeriod = new(durationpb.Duration) } return protoreflect.ValueOfMessage(x.VotingPeriod.ProtoReflect()) + case "cosmos.gov.v1.Params.expedited_voting_period": + if x.ExpeditedVotingPeriod == nil { + x.ExpeditedVotingPeriod = new(durationpb.Duration) + } + return protoreflect.ValueOfMessage(x.ExpeditedVotingPeriod.ProtoReflect()) + case "cosmos.gov.v1.Params.expedited_min_deposit": + if x.ExpeditedMinDeposit == nil { + x.ExpeditedMinDeposit = []*v1beta1.Coin{} + } + value := &_Params_12_list{list: &x.ExpeditedMinDeposit} + return protoreflect.ValueOfList(value) case "cosmos.gov.v1.Params.quorum": panic(fmt.Errorf("field quorum of message cosmos.gov.v1.Params is not mutable")) case "cosmos.gov.v1.Params.threshold": @@ -5721,6 +5893,8 @@ func (x *fastReflection_Params) Mutable(fd protoreflect.FieldDescriptor) protore panic(fmt.Errorf("field veto_threshold of message cosmos.gov.v1.Params is not mutable")) case "cosmos.gov.v1.Params.min_initial_deposit_ratio": panic(fmt.Errorf("field min_initial_deposit_ratio of message cosmos.gov.v1.Params is not mutable")) + case "cosmos.gov.v1.Params.expedited_threshold": + panic(fmt.Errorf("field expedited_threshold of message cosmos.gov.v1.Params is not mutable")) case "cosmos.gov.v1.Params.burn_vote_quorum": panic(fmt.Errorf("field burn_vote_quorum of message cosmos.gov.v1.Params is not mutable")) case "cosmos.gov.v1.Params.burn_proposal_deposit_prevote": @@ -5757,6 +5931,14 @@ func (x *fastReflection_Params) NewField(fd protoreflect.FieldDescriptor) protor return protoreflect.ValueOfString("") case "cosmos.gov.v1.Params.min_initial_deposit_ratio": return protoreflect.ValueOfString("") + case "cosmos.gov.v1.Params.expedited_voting_period": + m := new(durationpb.Duration) + return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "cosmos.gov.v1.Params.expedited_threshold": + return protoreflect.ValueOfString("") + case "cosmos.gov.v1.Params.expedited_min_deposit": + list := []*v1beta1.Coin{} + return protoreflect.ValueOfList(&_Params_12_list{list: &list}) case "cosmos.gov.v1.Params.burn_vote_quorum": return protoreflect.ValueOfBool(false) case "cosmos.gov.v1.Params.burn_proposal_deposit_prevote": @@ -5862,6 +6044,20 @@ func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } + if x.ExpeditedVotingPeriod != nil { + l = options.Size(x.ExpeditedVotingPeriod) + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.ExpeditedThreshold) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + if len(x.ExpeditedMinDeposit) > 0 { + for _, e := range x.ExpeditedMinDeposit { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } + } if x.BurnVoteQuorum { n += 2 } @@ -5930,6 +6126,43 @@ func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { i-- dAtA[i] = 0x68 } + if len(x.ExpeditedMinDeposit) > 0 { + for iNdEx := len(x.ExpeditedMinDeposit) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.ExpeditedMinDeposit[iNdEx]) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x62 + } + } + if len(x.ExpeditedThreshold) > 0 { + i -= len(x.ExpeditedThreshold) + copy(dAtA[i:], x.ExpeditedThreshold) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.ExpeditedThreshold))) + i-- + dAtA[i] = 0x5a + } + if x.ExpeditedVotingPeriod != nil { + encoded, err := options.Marshal(x.ExpeditedVotingPeriod) + if err != nil { + return protoiface.MarshalOutput{ + NoUnkeyedLiterals: input.NoUnkeyedLiterals, + Buf: input.Buf, + }, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) + i-- + dAtA[i] = 0x52 + } if len(x.MinInitialDepositRatio) > 0 { i -= len(x.MinInitialDepositRatio) copy(dAtA[i:], x.MinInitialDepositRatio) @@ -6285,6 +6518,108 @@ func (x *fastReflection_Params) ProtoMethods() *protoiface.Methods { } x.MinInitialDepositRatio = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 10: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ExpeditedVotingPeriod", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + if x.ExpeditedVotingPeriod == nil { + x.ExpeditedVotingPeriod = &durationpb.Duration{} + } + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.ExpeditedVotingPeriod); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex + case 11: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ExpeditedThreshold", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.ExpeditedThreshold = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 12: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ExpeditedMinDeposit", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.ExpeditedMinDeposit = append(x.ExpeditedMinDeposit, &v1beta1.Coin{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.ExpeditedMinDeposit[len(x.ExpeditedMinDeposit)-1]); err != nil { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err + } + iNdEx = postIndex case 13: if wireType != 0 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field BurnVoteQuorum", wireType) @@ -6668,6 +7003,10 @@ type Proposal struct { // // Since: cosmos-sdk 0.47 Proposer string `protobuf:"bytes,13,opt,name=proposer,proto3" json:"proposer,omitempty"` + // expedited defines if the proposal is expedited + // + // Since: cosmos-sdk 0.50 + Expedited bool `protobuf:"varint,14,opt,name=expedited,proto3" json:"expedited,omitempty"` } func (x *Proposal) Reset() { @@ -6781,6 +7120,13 @@ func (x *Proposal) GetProposer() string { return "" } +func (x *Proposal) GetExpedited() bool { + if x != nil { + return x.Expedited + } + return false +} + // TallyResult defines a standard tally for a governance proposal. type TallyResult struct { state protoimpl.MessageState @@ -7076,6 +7422,16 @@ type Params struct { VetoThreshold string `protobuf:"bytes,6,opt,name=veto_threshold,json=vetoThreshold,proto3" json:"veto_threshold,omitempty"` // The ratio representing the proportion of the deposit value that must be paid at proposal submission. MinInitialDepositRatio string `protobuf:"bytes,7,opt,name=min_initial_deposit_ratio,json=minInitialDepositRatio,proto3" json:"min_initial_deposit_ratio,omitempty"` + // Duration of the voting period of an expedited proposal. + // + // Since: cosmos-sdk 0.50 + ExpeditedVotingPeriod *durationpb.Duration `protobuf:"bytes,10,opt,name=expedited_voting_period,json=expeditedVotingPeriod,proto3" json:"expedited_voting_period,omitempty"` + // Minimum proportion of Yes votes for proposal to pass. Default value: 0.67. + // + // Since: cosmos-sdk 0.50 + ExpeditedThreshold string `protobuf:"bytes,11,opt,name=expedited_threshold,json=expeditedThreshold,proto3" json:"expedited_threshold,omitempty"` + // Minimum expedited deposit for a proposal to enter voting period. + ExpeditedMinDeposit []*v1beta1.Coin `protobuf:"bytes,12,rep,name=expedited_min_deposit,json=expeditedMinDeposit,proto3" json:"expedited_min_deposit,omitempty"` // burn deposits if a proposal does not meet quorum BurnVoteQuorum bool `protobuf:"varint,13,opt,name=burn_vote_quorum,json=burnVoteQuorum,proto3" json:"burn_vote_quorum,omitempty"` // burn deposits if the proposal does not enter voting period @@ -7153,6 +7509,27 @@ func (x *Params) GetMinInitialDepositRatio() string { return "" } +func (x *Params) GetExpeditedVotingPeriod() *durationpb.Duration { + if x != nil { + return x.ExpeditedVotingPeriod + } + return nil +} + +func (x *Params) GetExpeditedThreshold() string { + if x != nil { + return x.ExpeditedThreshold + } + return "" +} + +func (x *Params) GetExpeditedMinDeposit() []*v1beta1.Coin { + if x != nil { + return x.ExpeditedMinDeposit + } + return nil +} + func (x *Params) GetBurnVoteQuorum() bool { if x != nil { return x.BurnVoteQuorum @@ -7208,7 +7585,7 @@ var file_cosmos_gov_v1_gov_proto_rawDesc = []byte{ 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, - 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xc1, 0x05, 0x0a, + 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xdf, 0x05, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, @@ -7253,130 +7630,147 @@ var file_cosmos_gov_v1_gov_proto_rawDesc = []byte{ 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, - 0x22, 0xd7, 0x01, 0x0a, 0x0b, 0x54, 0x61, 0x6c, 0x6c, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x12, 0x2b, 0x0a, 0x09, 0x79, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x49, 0x6e, 0x74, 0x52, 0x08, 0x79, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x33, 0x0a, - 0x0d, 0x61, 0x62, 0x73, 0x74, 0x61, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x0c, 0x61, 0x62, 0x73, 0x74, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x08, 0x6e, 0x6f, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x07, 0x6e, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3b, 0x0a, - 0x12, 0x6e, 0x6f, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x74, 0x6f, 0x5f, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x0f, 0x6e, 0x6f, 0x57, 0x69, 0x74, - 0x68, 0x56, 0x65, 0x74, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xb6, 0x01, 0x0a, 0x04, 0x56, - 0x6f, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, - 0x61, 0x6c, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x76, - 0x6f, 0x74, 0x65, 0x72, 0x12, 0x3b, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, - 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x56, 0x6f, - 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4a, 0x04, 0x08, - 0x03, 0x10, 0x04, 0x22, 0xd9, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x59, 0x0a, 0x0b, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x1d, 0xc8, 0xde, 0x1f, 0x00, 0xea, 0xde, 0x1f, 0x15, 0x6d, - 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x2c, 0x6f, 0x6d, 0x69, 0x74, 0x65, - 0x6d, 0x70, 0x74, 0x79, 0x52, 0x0a, 0x6d, 0x69, 0x6e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x12, 0x6d, 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x5f, - 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x24, 0xea, 0xde, 0x1f, 0x1c, 0x6d, 0x61, 0x78, - 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x2c, - 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x98, 0xdf, 0x1f, 0x01, 0x52, 0x10, 0x6d, - 0x61, 0x78, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x22, - 0x54, 0x0a, 0x0c, 0x56, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, - 0x44, 0x0a, 0x0d, 0x76, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x04, 0x98, 0xdf, 0x1f, 0x01, 0x52, 0x0c, 0x76, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x50, - 0x65, 0x72, 0x69, 0x6f, 0x64, 0x22, 0x9a, 0x01, 0x0a, 0x0b, 0x54, 0x61, 0x6c, 0x6c, 0x79, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x26, 0x0a, 0x06, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x06, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x12, 0x2c, 0x0a, - 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, - 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x35, 0x0a, 0x0e, 0x76, - 0x65, 0x74, 0x6f, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x03, 0x20, + 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x78, 0x70, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x18, 0x0e, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x09, 0x65, 0x78, 0x70, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x22, 0xd7, + 0x01, 0x0a, 0x0b, 0x54, 0x61, 0x6c, 0x6c, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2b, + 0x0a, 0x09, 0x79, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, + 0x74, 0x52, 0x08, 0x79, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x33, 0x0a, 0x0d, 0x61, + 0x62, 0x73, 0x74, 0x61, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, + 0x6e, 0x74, 0x52, 0x0c, 0x61, 0x62, 0x73, 0x74, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x29, 0x0a, 0x08, 0x6e, 0x6f, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, + 0x6e, 0x74, 0x52, 0x07, 0x6e, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x12, 0x6e, + 0x6f, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x0f, 0x6e, 0x6f, 0x57, 0x69, 0x74, 0x68, 0x56, + 0x65, 0x74, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xb6, 0x01, 0x0a, 0x04, 0x56, 0x6f, 0x74, + 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, + 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x76, 0x6f, 0x74, + 0x65, 0x72, 0x12, 0x3b, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, + 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x56, 0x6f, 0x74, 0x65, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4a, 0x04, 0x08, 0x03, 0x10, + 0x04, 0x22, 0xd9, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x12, 0x59, 0x0a, 0x0b, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, + 0x6f, 0x69, 0x6e, 0x42, 0x1d, 0xc8, 0xde, 0x1f, 0x00, 0xea, 0xde, 0x1f, 0x15, 0x6d, 0x69, 0x6e, + 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x2c, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x6d, 0x70, + 0x74, 0x79, 0x52, 0x0a, 0x6d, 0x69, 0x6e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, 0x6d, + 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x5f, 0x70, 0x65, + 0x72, 0x69, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x24, 0xea, 0xde, 0x1f, 0x1c, 0x6d, 0x61, 0x78, 0x5f, 0x64, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x2c, 0x6f, 0x6d, + 0x69, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x98, 0xdf, 0x1f, 0x01, 0x52, 0x10, 0x6d, 0x61, 0x78, + 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x22, 0x54, 0x0a, + 0x0c, 0x56, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x44, 0x0a, + 0x0d, 0x76, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, + 0x04, 0x98, 0xdf, 0x1f, 0x01, 0x52, 0x0c, 0x76, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, + 0x69, 0x6f, 0x64, 0x22, 0x9a, 0x01, 0x0a, 0x0b, 0x54, 0x61, 0x6c, 0x6c, 0x79, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x12, 0x26, 0x0a, 0x06, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x44, 0x65, 0x63, 0x52, 0x0d, 0x76, 0x65, 0x74, 0x6f, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, - 0x6c, 0x64, 0x22, 0xcf, 0x04, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x45, 0x0a, - 0x0b, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, - 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x09, 0xc8, - 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0a, 0x6d, 0x69, 0x6e, 0x44, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x12, 0x4d, 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x44, 0x65, 0x63, 0x52, 0x06, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x12, 0x2c, 0x0a, 0x09, 0x74, + 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, + 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x09, + 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x35, 0x0a, 0x0e, 0x76, 0x65, 0x74, + 0x6f, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, + 0x63, 0x52, 0x0d, 0x76, 0x65, 0x74, 0x6f, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, + 0x22, 0xc3, 0x06, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x45, 0x0a, 0x0b, 0x6d, + 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, + 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0a, 0x6d, 0x69, 0x6e, 0x44, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x12, 0x4d, 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x04, 0x98, 0xdf, 0x1f, 0x01, 0x52, + 0x10, 0x6d, 0x61, 0x78, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x50, 0x65, 0x72, 0x69, 0x6f, + 0x64, 0x12, 0x44, 0x0a, 0x0d, 0x76, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, 0x69, + 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x42, 0x04, 0x98, 0xdf, 0x1f, 0x01, 0x52, 0x0c, 0x76, 0x6f, 0x74, 0x69, 0x6e, + 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x26, 0x0a, 0x06, 0x71, 0x75, 0x6f, 0x72, 0x75, + 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x06, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x12, + 0x2c, 0x0a, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, + 0x65, 0x63, 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x35, 0x0a, + 0x0e, 0x76, 0x65, 0x74, 0x6f, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x0d, 0x76, 0x65, 0x74, 0x6f, 0x54, 0x68, 0x72, 0x65, 0x73, + 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x49, 0x0a, 0x19, 0x6d, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x69, 0x74, + 0x69, 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x5f, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x16, 0x6d, 0x69, 0x6e, 0x49, 0x6e, 0x69, 0x74, + 0x69, 0x61, 0x6c, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, + 0x57, 0x0a, 0x17, 0x65, 0x78, 0x70, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x76, 0x6f, 0x74, + 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x04, 0x98, 0xdf, 0x1f, - 0x01, 0x52, 0x10, 0x6d, 0x61, 0x78, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x50, 0x65, 0x72, - 0x69, 0x6f, 0x64, 0x12, 0x44, 0x0a, 0x0d, 0x76, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x65, - 0x72, 0x69, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x04, 0x98, 0xdf, 0x1f, 0x01, 0x52, 0x0c, 0x76, 0x6f, 0x74, - 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x26, 0x0a, 0x06, 0x71, 0x75, 0x6f, - 0x72, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x06, 0x71, 0x75, 0x6f, 0x72, 0x75, - 0x6d, 0x12, 0x2c, 0x0a, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x44, 0x65, 0x63, 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, - 0x35, 0x0a, 0x0e, 0x76, 0x65, 0x74, 0x6f, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, - 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x0d, 0x76, 0x65, 0x74, 0x6f, 0x54, 0x68, 0x72, - 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x49, 0x0a, 0x19, 0x6d, 0x69, 0x6e, 0x5f, 0x69, 0x6e, - 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x5f, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x16, 0x6d, 0x69, 0x6e, 0x49, 0x6e, - 0x69, 0x74, 0x69, 0x61, 0x6c, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x61, 0x74, 0x69, - 0x6f, 0x12, 0x28, 0x0a, 0x10, 0x62, 0x75, 0x72, 0x6e, 0x5f, 0x76, 0x6f, 0x74, 0x65, 0x5f, 0x71, - 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x62, 0x75, 0x72, - 0x6e, 0x56, 0x6f, 0x74, 0x65, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x12, 0x41, 0x0a, 0x1d, 0x62, - 0x75, 0x72, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x76, 0x6f, 0x74, 0x65, 0x18, 0x0e, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x1a, 0x62, 0x75, 0x72, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, - 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x50, 0x72, 0x65, 0x76, 0x6f, 0x74, 0x65, 0x12, 0x24, - 0x0a, 0x0e, 0x62, 0x75, 0x72, 0x6e, 0x5f, 0x76, 0x6f, 0x74, 0x65, 0x5f, 0x76, 0x65, 0x74, 0x6f, - 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x62, 0x75, 0x72, 0x6e, 0x56, 0x6f, 0x74, 0x65, - 0x56, 0x65, 0x74, 0x6f, 0x2a, 0x89, 0x01, 0x0a, 0x0a, 0x56, 0x6f, 0x74, 0x65, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x17, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x13, 0x0a, 0x0f, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x59, 0x45, 0x53, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x42, 0x53, 0x54, 0x41, 0x49, 0x4e, 0x10, 0x02, 0x12, 0x12, - 0x0a, 0x0e, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, - 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x4e, 0x4f, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x56, 0x45, 0x54, 0x4f, 0x10, 0x04, - 0x2a, 0xce, 0x01, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x45, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x5f, - 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x52, 0x4f, 0x50, - 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x56, 0x4f, 0x54, 0x49, - 0x4e, 0x47, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x50, - 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x50, - 0x41, 0x53, 0x53, 0x45, 0x44, 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x52, 0x4f, 0x50, 0x4f, - 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x45, 0x4a, 0x45, 0x43, - 0x54, 0x45, 0x44, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, - 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, - 0x05, 0x42, 0x99, 0x01, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x42, 0x08, 0x47, 0x6f, 0x76, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x50, 0x01, 0x5a, 0x24, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, - 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x67, 0x6f, 0x76, - 0x2f, 0x76, 0x31, 0x3b, 0x67, 0x6f, 0x76, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x47, 0x58, 0xaa, - 0x02, 0x0d, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x47, 0x6f, 0x76, 0x2e, 0x56, 0x31, 0xca, - 0x02, 0x0d, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x47, 0x6f, 0x76, 0x5c, 0x56, 0x31, 0xe2, - 0x02, 0x19, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x47, 0x6f, 0x76, 0x5c, 0x56, 0x31, 0x5c, - 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0f, 0x43, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x47, 0x6f, 0x76, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x01, 0x52, 0x15, 0x65, 0x78, 0x70, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x56, 0x6f, 0x74, 0x69, + 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x3f, 0x0a, 0x13, 0x65, 0x78, 0x70, 0x65, + 0x64, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x12, 0x65, 0x78, 0x70, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, + 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x58, 0x0a, 0x15, 0x65, 0x78, 0x70, + 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, + 0x6f, 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x13, + 0x65, 0x78, 0x70, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x4d, 0x69, 0x6e, 0x44, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x62, 0x75, 0x72, 0x6e, 0x5f, 0x76, 0x6f, 0x74, 0x65, + 0x5f, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x62, + 0x75, 0x72, 0x6e, 0x56, 0x6f, 0x74, 0x65, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x12, 0x41, 0x0a, + 0x1d, 0x62, 0x75, 0x72, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x64, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x76, 0x6f, 0x74, 0x65, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x1a, 0x62, 0x75, 0x72, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x61, 0x6c, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x50, 0x72, 0x65, 0x76, 0x6f, 0x74, 0x65, + 0x12, 0x24, 0x0a, 0x0e, 0x62, 0x75, 0x72, 0x6e, 0x5f, 0x76, 0x6f, 0x74, 0x65, 0x5f, 0x76, 0x65, + 0x74, 0x6f, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x62, 0x75, 0x72, 0x6e, 0x56, 0x6f, + 0x74, 0x65, 0x56, 0x65, 0x74, 0x6f, 0x2a, 0x89, 0x01, 0x0a, 0x0a, 0x56, 0x6f, 0x74, 0x65, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x17, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x59, 0x45, 0x53, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x56, 0x4f, 0x54, 0x45, 0x5f, + 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x42, 0x53, 0x54, 0x41, 0x49, 0x4e, 0x10, 0x02, + 0x12, 0x12, 0x0a, 0x0e, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x4e, 0x4f, 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x56, 0x45, 0x54, 0x4f, + 0x10, 0x04, 0x2a, 0xce, 0x01, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, + 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, + 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x45, 0x50, 0x4f, 0x53, 0x49, + 0x54, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x52, + 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x56, 0x4f, + 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x10, 0x02, 0x12, 0x1a, 0x0a, + 0x16, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, + 0x5f, 0x50, 0x41, 0x53, 0x53, 0x45, 0x44, 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x52, 0x4f, + 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x45, 0x4a, + 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x52, 0x4f, 0x50, 0x4f, + 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, + 0x44, 0x10, 0x05, 0x42, 0x99, 0x01, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x42, 0x08, 0x47, 0x6f, 0x76, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x24, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, + 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x67, + 0x6f, 0x76, 0x2f, 0x76, 0x31, 0x3b, 0x67, 0x6f, 0x76, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x47, + 0x58, 0xaa, 0x02, 0x0d, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x47, 0x6f, 0x76, 0x2e, 0x56, + 0x31, 0xca, 0x02, 0x0d, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x47, 0x6f, 0x76, 0x5c, 0x56, + 0x31, 0xe2, 0x02, 0x19, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x47, 0x6f, 0x76, 0x5c, 0x56, + 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0f, + 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x47, 0x6f, 0x76, 0x3a, 0x3a, 0x56, 0x31, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -7428,11 +7822,13 @@ var file_cosmos_gov_v1_gov_proto_depIdxs = []int32{ 11, // 14: cosmos.gov.v1.Params.min_deposit:type_name -> cosmos.base.v1beta1.Coin 14, // 15: cosmos.gov.v1.Params.max_deposit_period:type_name -> google.protobuf.Duration 14, // 16: cosmos.gov.v1.Params.voting_period:type_name -> google.protobuf.Duration - 17, // [17:17] is the sub-list for method output_type - 17, // [17:17] is the sub-list for method input_type - 17, // [17:17] is the sub-list for extension type_name - 17, // [17:17] is the sub-list for extension extendee - 0, // [0:17] is the sub-list for field type_name + 14, // 17: cosmos.gov.v1.Params.expedited_voting_period:type_name -> google.protobuf.Duration + 11, // 18: cosmos.gov.v1.Params.expedited_min_deposit:type_name -> cosmos.base.v1beta1.Coin + 19, // [19:19] is the sub-list for method output_type + 19, // [19:19] is the sub-list for method input_type + 19, // [19:19] is the sub-list for extension type_name + 19, // [19:19] is the sub-list for extension extendee + 0, // [0:19] is the sub-list for field type_name } func init() { file_cosmos_gov_v1_gov_proto_init() } diff --git a/api/cosmos/gov/v1/tx.pulsar.go b/api/cosmos/gov/v1/tx.pulsar.go index e2062e7017eb..da79e6b7f73a 100644 --- a/api/cosmos/gov/v1/tx.pulsar.go +++ b/api/cosmos/gov/v1/tx.pulsar.go @@ -128,6 +128,7 @@ var ( fd_MsgSubmitProposal_metadata protoreflect.FieldDescriptor fd_MsgSubmitProposal_title protoreflect.FieldDescriptor fd_MsgSubmitProposal_summary protoreflect.FieldDescriptor + fd_MsgSubmitProposal_expedited protoreflect.FieldDescriptor ) func init() { @@ -139,6 +140,7 @@ func init() { fd_MsgSubmitProposal_metadata = md_MsgSubmitProposal.Fields().ByName("metadata") fd_MsgSubmitProposal_title = md_MsgSubmitProposal.Fields().ByName("title") fd_MsgSubmitProposal_summary = md_MsgSubmitProposal.Fields().ByName("summary") + fd_MsgSubmitProposal_expedited = md_MsgSubmitProposal.Fields().ByName("expedited") } var _ protoreflect.Message = (*fastReflection_MsgSubmitProposal)(nil) @@ -242,6 +244,12 @@ func (x *fastReflection_MsgSubmitProposal) Range(f func(protoreflect.FieldDescri return } } + if x.Expedited != false { + value := protoreflect.ValueOfBool(x.Expedited) + if !f(fd_MsgSubmitProposal_expedited, value) { + return + } + } } // Has reports whether a field is populated. @@ -269,6 +277,8 @@ func (x *fastReflection_MsgSubmitProposal) Has(fd protoreflect.FieldDescriptor) return x.Title != "" case "cosmos.gov.v1.MsgSubmitProposal.summary": return x.Summary != "" + case "cosmos.gov.v1.MsgSubmitProposal.expedited": + return x.Expedited != false default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1.MsgSubmitProposal")) @@ -297,6 +307,8 @@ func (x *fastReflection_MsgSubmitProposal) Clear(fd protoreflect.FieldDescriptor x.Title = "" case "cosmos.gov.v1.MsgSubmitProposal.summary": x.Summary = "" + case "cosmos.gov.v1.MsgSubmitProposal.expedited": + x.Expedited = false default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1.MsgSubmitProposal")) @@ -337,6 +349,9 @@ func (x *fastReflection_MsgSubmitProposal) Get(descriptor protoreflect.FieldDesc case "cosmos.gov.v1.MsgSubmitProposal.summary": value := x.Summary return protoreflect.ValueOfString(value) + case "cosmos.gov.v1.MsgSubmitProposal.expedited": + value := x.Expedited + return protoreflect.ValueOfBool(value) default: if descriptor.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1.MsgSubmitProposal")) @@ -373,6 +388,8 @@ func (x *fastReflection_MsgSubmitProposal) Set(fd protoreflect.FieldDescriptor, x.Title = value.Interface().(string) case "cosmos.gov.v1.MsgSubmitProposal.summary": x.Summary = value.Interface().(string) + case "cosmos.gov.v1.MsgSubmitProposal.expedited": + x.Expedited = value.Bool() default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1.MsgSubmitProposal")) @@ -413,6 +430,8 @@ func (x *fastReflection_MsgSubmitProposal) Mutable(fd protoreflect.FieldDescript panic(fmt.Errorf("field title of message cosmos.gov.v1.MsgSubmitProposal is not mutable")) case "cosmos.gov.v1.MsgSubmitProposal.summary": panic(fmt.Errorf("field summary of message cosmos.gov.v1.MsgSubmitProposal is not mutable")) + case "cosmos.gov.v1.MsgSubmitProposal.expedited": + panic(fmt.Errorf("field expedited of message cosmos.gov.v1.MsgSubmitProposal is not mutable")) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1.MsgSubmitProposal")) @@ -440,6 +459,8 @@ func (x *fastReflection_MsgSubmitProposal) NewField(fd protoreflect.FieldDescrip return protoreflect.ValueOfString("") case "cosmos.gov.v1.MsgSubmitProposal.summary": return protoreflect.ValueOfString("") + case "cosmos.gov.v1.MsgSubmitProposal.expedited": + return protoreflect.ValueOfBool(false) default: if fd.IsExtension() { panic(fmt.Errorf("proto3 declared messages do not support extensions: cosmos.gov.v1.MsgSubmitProposal")) @@ -537,6 +558,9 @@ func (x *fastReflection_MsgSubmitProposal) ProtoMethods() *protoiface.Methods { if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } + if x.Expedited { + n += 2 + } if x.unknownFields != nil { n += len(x.unknownFields) } @@ -566,6 +590,16 @@ func (x *fastReflection_MsgSubmitProposal) ProtoMethods() *protoiface.Methods { i -= len(x.unknownFields) copy(dAtA[i:], x.unknownFields) } + if x.Expedited { + i-- + if x.Expedited { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x38 + } if len(x.Summary) > 0 { i -= len(x.Summary) copy(dAtA[i:], x.Summary) @@ -871,6 +905,26 @@ func (x *fastReflection_MsgSubmitProposal) ProtoMethods() *protoiface.Methods { } x.Summary = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 7: + if wireType != 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Expedited", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + x.Expedited = bool(v != 0) default: iNdEx = preIndex skippy, err := runtime.Skip(dAtA[iNdEx:]) @@ -5982,6 +6036,10 @@ type MsgSubmitProposal struct { // // Since: cosmos-sdk 0.47 Summary string `protobuf:"bytes,6,opt,name=summary,proto3" json:"summary,omitempty"` + // expedited defines if the proposal is expedited or not + // + // Since: cosmos-sdk 0.50 + Expedited bool `protobuf:"varint,7,opt,name=expedited,proto3" json:"expedited,omitempty"` } func (x *MsgSubmitProposal) Reset() { @@ -6046,6 +6104,13 @@ func (x *MsgSubmitProposal) GetSummary() string { return "" } +func (x *MsgSubmitProposal) GetExpedited() bool { + if x != nil { + return x.Expedited + } + return false +} + // MsgSubmitProposalResponse defines the Msg/SubmitProposal response type. type MsgSubmitProposalResponse struct { state protoimpl.MessageState @@ -6517,7 +6582,7 @@ var file_cosmos_gov_v1_tx_proto_rawDesc = []byte{ 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x6d, 0x73, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x11, 0x61, 0x6d, 0x69, 0x6e, 0x6f, 0x2f, 0x61, 0x6d, 0x69, - 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc9, 0x02, 0x0a, 0x11, 0x4d, 0x73, 0x67, + 0x6e, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe7, 0x02, 0x0a, 0x11, 0x4d, 0x73, 0x67, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x30, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, @@ -6535,133 +6600,135 @@ var file_cosmos_gov_v1_tx_proto_rawDesc = []byte{ 0x61, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, - 0x79, 0x3a, 0x31, 0x82, 0xe7, 0xb0, 0x2a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, - 0x8a, 0xe7, 0xb0, 0x2a, 0x1f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, - 0x76, 0x31, 0x2f, 0x4d, 0x73, 0x67, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x50, 0x72, 0x6f, 0x70, - 0x6f, 0x73, 0x61, 0x6c, 0x22, 0x3c, 0x0a, 0x19, 0x4d, 0x73, 0x67, 0x53, 0x75, 0x62, 0x6d, 0x69, - 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, - 0x49, 0x64, 0x22, 0xbb, 0x01, 0x0a, 0x14, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, 0x63, 0x4c, 0x65, - 0x67, 0x61, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x4e, 0x0a, 0x07, 0x63, - 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, - 0x6e, 0x79, 0x42, 0x1e, 0xca, 0xb4, 0x2d, 0x1a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, - 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, - 0x6e, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x61, - 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x3a, 0x35, 0x82, 0xe7, 0xb0, 0x2a, 0x09, - 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x22, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x76, 0x31, 0x2f, 0x4d, 0x73, 0x67, 0x45, - 0x78, 0x65, 0x63, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x22, 0x1e, 0x0a, 0x1c, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, 0x63, 0x4c, 0x65, 0x67, 0x61, 0x63, - 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0xe5, 0x01, 0x0a, 0x07, 0x4d, 0x73, 0x67, 0x56, 0x6f, 0x74, 0x65, 0x12, 0x35, 0x0a, 0x0b, - 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x42, 0x14, 0xea, 0xde, 0x1f, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, - 0x69, 0x64, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, - 0x6c, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x76, 0x6f, - 0x74, 0x65, 0x72, 0x12, 0x31, 0x0a, 0x06, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, - 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x6f, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x3a, 0x24, 0x82, 0xe7, 0xb0, 0x2a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x72, 0x8a, 0xe7, - 0xb0, 0x2a, 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x76, 0x31, - 0x2f, 0x4d, 0x73, 0x67, 0x56, 0x6f, 0x74, 0x65, 0x22, 0x11, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x56, - 0x6f, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xff, 0x01, 0x0a, 0x0f, - 0x4d, 0x73, 0x67, 0x56, 0x6f, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x12, - 0x35, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x42, 0x14, 0xea, 0xde, 0x1f, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, - 0x61, 0x6c, 0x5f, 0x69, 0x64, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, - 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x72, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, - 0x05, 0x76, 0x6f, 0x74, 0x65, 0x72, 0x12, 0x3b, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, - 0x56, 0x6f, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, - 0x2c, 0x82, 0xe7, 0xb0, 0x2a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x72, 0x8a, 0xe7, 0xb0, 0x2a, 0x1d, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x76, 0x31, 0x2f, 0x4d, 0x73, - 0x67, 0x56, 0x6f, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x22, 0x19, 0x0a, - 0x17, 0x4d, 0x73, 0x67, 0x56, 0x6f, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe6, 0x01, 0x0a, 0x0a, 0x4d, 0x73, 0x67, - 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, 0x35, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, - 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x14, 0xea, 0xde, - 0x1f, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0xa8, 0xe7, 0xb0, - 0x2a, 0x01, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x36, - 0x0a, 0x09, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x64, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x12, 0x3c, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, - 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x61, 0x6d, - 0x6f, 0x75, 0x6e, 0x74, 0x3a, 0x2b, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x64, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x6f, 0x72, 0x8a, 0xe7, 0xb0, 0x2a, 0x18, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, - 0x73, 0x64, 0x6b, 0x2f, 0x76, 0x31, 0x2f, 0x4d, 0x73, 0x67, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x22, 0x14, 0x0a, 0x12, 0x4d, 0x73, 0x67, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xbb, 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x61, - 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, - 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x12, 0x38, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, - 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3a, 0x36, 0x82, - 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, - 0x2a, 0x23, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x78, 0x2f, 0x67, - 0x6f, 0x76, 0x2f, 0x76, 0x31, 0x2f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x32, 0x8a, 0x04, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x5c, 0x0a, 0x0e, 0x53, 0x75, 0x62, 0x6d, - 0x69, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x20, 0x2e, 0x63, 0x6f, 0x73, + 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x78, 0x70, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x65, 0x78, 0x70, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x3a, + 0x31, 0x82, 0xe7, 0xb0, 0x2a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x72, 0x8a, 0xe7, + 0xb0, 0x2a, 0x1f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x76, 0x31, + 0x2f, 0x4d, 0x73, 0x67, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x61, 0x6c, 0x22, 0x3c, 0x0a, 0x19, 0x4d, 0x73, 0x67, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x50, + 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, + 0x22, 0xbb, 0x01, 0x0a, 0x14, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, 0x63, 0x4c, 0x65, 0x67, 0x61, + 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x4e, 0x0a, 0x07, 0x63, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, + 0x42, 0x1e, 0xca, 0xb4, 0x2d, 0x1a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x3a, 0x35, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x22, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x76, 0x31, 0x2f, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, + 0x63, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x1e, + 0x0a, 0x1c, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, 0x63, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x43, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe5, + 0x01, 0x0a, 0x07, 0x4d, 0x73, 0x67, 0x56, 0x6f, 0x74, 0x65, 0x12, 0x35, 0x0a, 0x0b, 0x70, 0x72, + 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, + 0x14, 0xea, 0xde, 0x1f, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, + 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x49, + 0x64, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x76, 0x6f, 0x74, 0x65, + 0x72, 0x12, 0x31, 0x0a, 0x06, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, + 0x31, 0x2e, 0x56, 0x6f, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x3a, 0x24, 0x82, 0xe7, 0xb0, 0x2a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x72, 0x8a, 0xe7, 0xb0, 0x2a, + 0x15, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x76, 0x31, 0x2f, 0x4d, + 0x73, 0x67, 0x56, 0x6f, 0x74, 0x65, 0x22, 0x11, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x56, 0x6f, 0x74, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xff, 0x01, 0x0a, 0x0f, 0x4d, 0x73, + 0x67, 0x56, 0x6f, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x12, 0x35, 0x0a, + 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x42, 0x14, 0xea, 0xde, 0x1f, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, + 0x5f, 0x69, 0x64, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x61, 0x6c, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x76, + 0x6f, 0x74, 0x65, 0x72, 0x12, 0x3b, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, + 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x56, 0x6f, + 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x2c, 0x82, + 0xe7, 0xb0, 0x2a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x72, 0x8a, 0xe7, 0xb0, 0x2a, 0x1d, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x76, 0x31, 0x2f, 0x4d, 0x73, 0x67, 0x56, + 0x6f, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x22, 0x19, 0x0a, 0x17, 0x4d, + 0x73, 0x67, 0x56, 0x6f, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe6, 0x01, 0x0a, 0x0a, 0x4d, 0x73, 0x67, 0x44, 0x65, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, 0x35, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, + 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x14, 0xea, 0xde, 0x1f, 0x0b, + 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, + 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x09, + 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x64, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x6f, 0x72, 0x12, 0x3c, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, + 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, + 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x3a, 0x2b, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x6f, 0x72, 0x8a, 0xe7, 0xb0, 0x2a, 0x18, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, + 0x6b, 0x2f, 0x76, 0x31, 0x2f, 0x4d, 0x73, 0x67, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x22, + 0x14, 0x0a, 0x12, 0x4d, 0x73, 0x67, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xbb, 0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, + 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x12, 0x38, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, + 0xb0, 0x2a, 0x01, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3a, 0x36, 0x82, 0xe7, 0xb0, + 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x8a, 0xe7, 0xb0, 0x2a, 0x23, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x78, 0x2f, 0x67, 0x6f, 0x76, + 0x2f, 0x76, 0x31, 0x2f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x8a, + 0x04, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x5c, 0x0a, 0x0e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, + 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x12, 0x20, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x75, 0x62, 0x6d, + 0x69, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x1a, 0x28, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x53, 0x75, - 0x62, 0x6d, 0x69, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x1a, 0x28, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, - 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x11, 0x45, 0x78, 0x65, 0x63, 0x4c, 0x65, - 0x67, 0x61, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x45, - 0x78, 0x65, 0x63, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x1a, 0x2b, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, - 0x2e, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, 0x63, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x43, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, - 0x04, 0x56, 0x6f, 0x74, 0x65, 0x12, 0x16, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, - 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x56, 0x6f, 0x74, 0x65, 0x1a, 0x1e, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, - 0x67, 0x56, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, - 0x0c, 0x56, 0x6f, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x12, 0x1e, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, - 0x67, 0x56, 0x6f, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x1a, 0x26, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, - 0x67, 0x56, 0x6f, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x07, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x12, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, - 0x2e, 0x4d, 0x73, 0x67, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x44, - 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, - 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1e, + 0x62, 0x6d, 0x69, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x11, 0x45, 0x78, 0x65, 0x63, 0x4c, 0x65, 0x67, 0x61, + 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x23, 0x2e, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x45, 0x78, 0x65, + 0x63, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x1a, 0x2b, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x4d, - 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x26, + 0x73, 0x67, 0x45, 0x78, 0x65, 0x63, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x04, 0x56, + 0x6f, 0x74, 0x65, 0x12, 0x16, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, + 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x56, 0x6f, 0x74, 0x65, 0x1a, 0x1e, 0x2e, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x56, + 0x6f, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x0c, 0x56, + 0x6f, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x12, 0x1e, 0x2e, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x56, + 0x6f, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x1a, 0x26, 0x2e, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x56, + 0x6f, 0x74, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x07, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x4d, - 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0x98, 0x01, - 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, - 0x2e, 0x76, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x24, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x67, 0x6f, 0x76, 0x2f, 0x76, 0x31, 0x3b, 0x67, - 0x6f, 0x76, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x47, 0x58, 0xaa, 0x02, 0x0d, 0x43, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x2e, 0x47, 0x6f, 0x76, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0d, 0x43, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x5c, 0x47, 0x6f, 0x76, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x19, 0x43, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x5c, 0x47, 0x6f, 0x76, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0f, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, - 0x3a, 0x47, 0x6f, 0x76, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x73, 0x67, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x44, 0x65, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x0c, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1e, 0x2e, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x26, 0x2e, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x05, 0x80, 0xe7, 0xb0, 0x2a, 0x01, 0x42, 0x98, 0x01, 0x0a, 0x11, + 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, + 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x24, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x67, 0x6f, 0x76, 0x2f, 0x76, 0x31, 0x3b, 0x67, 0x6f, 0x76, + 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x47, 0x58, 0xaa, 0x02, 0x0d, 0x43, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x47, 0x6f, 0x76, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0d, 0x43, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x5c, 0x47, 0x6f, 0x76, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x19, 0x43, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x5c, 0x47, 0x6f, 0x76, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0f, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x47, + 0x6f, 0x76, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/proto/cosmos/gov/v1/gov.proto b/proto/cosmos/gov/v1/gov.proto index 49bfcc264b49..5e28f7b2c7c5 100644 --- a/proto/cosmos/gov/v1/gov.proto +++ b/proto/cosmos/gov/v1/gov.proto @@ -96,6 +96,11 @@ message Proposal { // // Since: cosmos-sdk 0.47 string proposer = 13 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + + // expedited defines if the proposal is expedited + // + // Since: cosmos-sdk 0.50 + bool expedited = 14; } // ProposalStatus enumerates the valid statuses of a proposal. @@ -209,6 +214,19 @@ message Params { // The ratio representing the proportion of the deposit value that must be paid at proposal submission. string min_initial_deposit_ratio = 7 [(cosmos_proto.scalar) = "cosmos.Dec"]; + // Duration of the voting period of an expedited proposal. + // + // Since: cosmos-sdk 0.50 + google.protobuf.Duration expedited_voting_period = 10 [(gogoproto.stdduration) = true]; + + // Minimum proportion of Yes votes for proposal to pass. Default value: 0.67. + // + // Since: cosmos-sdk 0.50 + string expedited_threshold = 11 [(cosmos_proto.scalar) = "cosmos.Dec"]; + + // Minimum expedited deposit for a proposal to enter voting period. + repeated cosmos.base.v1beta1.Coin expedited_min_deposit = 12 [(gogoproto.nullable) = false, (amino.dont_omitempty) = true]; + // burn deposits if a proposal does not meet quorum bool burn_vote_quorum = 13; diff --git a/proto/cosmos/gov/v1/tx.proto b/proto/cosmos/gov/v1/tx.proto index 1708066c6598..78b5e9663291 100644 --- a/proto/cosmos/gov/v1/tx.proto +++ b/proto/cosmos/gov/v1/tx.proto @@ -66,6 +66,11 @@ message MsgSubmitProposal { // // Since: cosmos-sdk 0.47 string summary = 6; + + // expedited defines if the proposal is expedited or not + // + // Since: cosmos-sdk 0.50 + bool expedited = 7; } // MsgSubmitProposalResponse defines the Msg/SubmitProposal response type. diff --git a/x/gov/abci.go b/x/gov/abci.go index fd0df2981779..38f0251b0a36 100644 --- a/x/gov/abci.go +++ b/x/gov/abci.go @@ -43,7 +43,9 @@ func EndBlocker(ctx sdk.Context, keeper *keeper.Keeper) { logger.Info( "proposal did not meet minimum deposit; deleted", "proposal", proposal.Id, - "min_deposit", sdk.NewCoins(params.MinDeposit...).String(), + "expedited", proposal.Expedited, + "title", proposal.Title, + "min_deposit", sdk.NewCoins(proposal.GetMinDepositFromParams(keeper.GetParams(ctx))...).String(), "total_deposit", sdk.NewCoins(proposal.TotalDeposit...).String(), ) @@ -56,13 +58,22 @@ func EndBlocker(ctx sdk.Context, keeper *keeper.Keeper) { passes, burnDeposits, tallyResults := keeper.Tally(ctx, proposal) - if burnDeposits { - keeper.DeleteAndBurnDeposits(ctx, proposal.Id) - } else { - keeper.RefundAndDeleteDeposits(ctx, proposal.Id) + // If an expedited proposal fails, we do not want to update + // the deposit at this point since the proposal is converted to regular. + // As a result, the deposits are either deleted or refunded in all cases + // EXCEPT when an expedited proposal fails. + if !(proposal.Expedited && !passes) { + if burnDeposits { + keeper.DeleteAndBurnDeposits(ctx, proposal.Id) + } else { + keeper.RefundAndDeleteDeposits(ctx, proposal.Id) + } } - if passes { + keeper.RemoveFromActiveProposalQueue(ctx, proposal.Id, *proposal.VotingEndTime) + + switch { + case passes: var ( idx int events sdk.Events @@ -106,7 +117,21 @@ func EndBlocker(ctx sdk.Context, keeper *keeper.Keeper) { tagValue = types.AttributeValueProposalFailed logMsg = fmt.Sprintf("passed, but msg %d (%s) failed on execution: %s", idx, sdk.MsgTypeURL(msg), err) } - } else { + case proposal.Expedited: + // When expedited proposal fails, it is converted + // to a regular proposal. As a result, the voting period is extended, and, + // once the regular voting period expires again, the tally is repeated + // according to the regular proposal rules. + proposal.Expedited = false + params := keeper.GetParams(ctx) + endTime := proposal.VotingStartTime.Add(*params.VotingPeriod) + proposal.VotingEndTime = &endTime + + keeper.InsertActiveProposalQueue(ctx, proposal.Id, *proposal.VotingEndTime) + + tagValue = types.AttributeValueExpeditedProposalRejected + logMsg = "expedited proposal converted to regular" + default: proposal.Status = v1.StatusRejected tagValue = types.AttributeValueProposalRejected logMsg = "rejected" @@ -115,7 +140,6 @@ func EndBlocker(ctx sdk.Context, keeper *keeper.Keeper) { proposal.FinalTallyResult = &tallyResults keeper.SetProposal(ctx, proposal) - keeper.RemoveFromActiveProposalQueue(ctx, proposal.Id, *proposal.VotingEndTime) // when proposal become active keeper.Hooks().AfterProposalVotingPeriodEnded(ctx, proposal.Id) @@ -123,6 +147,8 @@ func EndBlocker(ctx sdk.Context, keeper *keeper.Keeper) { logger.Info( "proposal tallied", "proposal", proposal.Id, + "expedited", proposal.Expedited, + "title", proposal.Title, "results", logMsg, ) diff --git a/x/gov/client/cli/tx.go b/x/gov/client/cli/tx.go index 16f1ca1d9e75..ed0573286d5f 100644 --- a/x/gov/client/cli/tx.go +++ b/x/gov/client/cli/tx.go @@ -131,12 +131,12 @@ metadata example: return err } - msgs, metadata, title, summary, deposit, err := parseSubmitProposal(clientCtx.Codec, args[0]) + proposal, msgs, deposit, err := parseSubmitProposal(clientCtx.Codec, args[0]) if err != nil { return err } - msg, err := v1.NewMsgSubmitProposal(msgs, deposit, clientCtx.GetFromAddress().String(), metadata, title, summary) + msg, err := v1.NewMsgSubmitExpeditedProposal(msgs, deposit, clientCtx.GetFromAddress().String(), proposal.Metadata, proposal.Title, proposal.Summary, proposal.Expedited) if err != nil { return fmt.Errorf("invalid message: %w", err) } diff --git a/x/gov/client/cli/util.go b/x/gov/client/cli/util.go index fe3e8d0a26e3..63be49dc354e 100644 --- a/x/gov/client/cli/util.go +++ b/x/gov/client/cli/util.go @@ -82,25 +82,26 @@ func parseSubmitLegacyProposal(fs *pflag.FlagSet) (*legacyProposal, error) { // proposal defines the new Msg-based proposal. type proposal struct { // Msgs defines an array of sdk.Msgs proto-JSON-encoded as Anys. - Messages []json.RawMessage `json:"messages,omitempty"` - Metadata string `json:"metadata"` - Deposit string `json:"deposit"` - Title string `json:"title"` - Summary string `json:"summary"` + Messages []json.RawMessage `json:"messages,omitempty"` + Metadata string `json:"metadata"` + Deposit string `json:"deposit"` + Title string `json:"title"` + Summary string `json:"summary"` + Expedited bool `json:"expedited"` } // parseSubmitProposal reads and parses the proposal. -func parseSubmitProposal(cdc codec.Codec, path string) ([]sdk.Msg, string, string, string, sdk.Coins, error) { +func parseSubmitProposal(cdc codec.Codec, path string) (proposal, []sdk.Msg, sdk.Coins, error) { var proposal proposal contents, err := os.ReadFile(path) if err != nil { - return nil, "", "", "", nil, err + return proposal, nil, nil, err } err = json.Unmarshal(contents, &proposal) if err != nil { - return nil, "", "", "", nil, err + return proposal, nil, nil, err } msgs := make([]sdk.Msg, len(proposal.Messages)) @@ -108,7 +109,7 @@ func parseSubmitProposal(cdc codec.Codec, path string) ([]sdk.Msg, string, strin var msg sdk.Msg err := cdc.UnmarshalInterfaceJSON(anyJSON, &msg) if err != nil { - return nil, "", "", "", nil, err + return proposal, nil, nil, err } msgs[i] = msg @@ -116,10 +117,10 @@ func parseSubmitProposal(cdc codec.Codec, path string) ([]sdk.Msg, string, strin deposit, err := sdk.ParseCoinsNormalized(proposal.Deposit) if err != nil { - return nil, "", "", "", nil, err + return proposal, nil, nil, err } - return msgs, proposal.Metadata, proposal.Title, proposal.Summary, deposit, nil + return proposal, msgs, deposit, nil } // AddGovPropFlagsToCmd adds flags for defining MsgSubmitProposal fields. diff --git a/x/gov/client/cli/util_test.go b/x/gov/client/cli/util_test.go index 7abfd86c0eb4..64306b9fa580 100644 --- a/x/gov/client/cli/util_test.go +++ b/x/gov/client/cli/util_test.go @@ -163,25 +163,26 @@ func TestParseSubmitProposal(t *testing.T) { "metadata": "%s", "title": "My awesome title", "summary": "My awesome summary", - "deposit": "1000test" + "deposit": "1000test", + "expedited": true } `, addr, addr, addr, addr, addr, base64.StdEncoding.EncodeToString(expectedMetadata))) badJSON := testutil.WriteToNewTempFile(t, "bad json") // nonexistent json - _, _, _, _, _, err := parseSubmitProposal(cdc, "fileDoesNotExist") //nolint: dogsled + _, _, _, err := parseSubmitProposal(cdc, "fileDoesNotExist") //nolint: dogsled require.Error(t, err) // invalid json - _, _, _, _, _, err = parseSubmitProposal(cdc, badJSON.Name()) //nolint: dogsled + _, _, _, err = parseSubmitProposal(cdc, badJSON.Name()) //nolint: dogsled require.Error(t, err) // ok json - msgs, metadata, title, summary, deposit, err := parseSubmitProposal(cdc, okJSON.Name()) + proposal, msgs, deposit, err := parseSubmitProposal(cdc, okJSON.Name()) require.NoError(t, err, "unexpected error") require.Equal(t, sdk.NewCoins(sdk.NewCoin("test", sdk.NewInt(1000))), deposit) - require.Equal(t, base64.StdEncoding.EncodeToString(expectedMetadata), metadata) + require.Equal(t, base64.StdEncoding.EncodeToString(expectedMetadata), proposal.Metadata) require.Len(t, msgs, 3) msg1, ok := msgs[0].(*banktypes.MsgSend) require.True(t, ok) @@ -200,8 +201,9 @@ func TestParseSubmitProposal(t *testing.T) { require.True(t, ok) require.Equal(t, "My awesome title", textProp.Title) require.Equal(t, "My awesome description", textProp.Description) - require.Equal(t, "My awesome title", title) - require.Equal(t, "My awesome summary", summary) + require.Equal(t, "My awesome title", proposal.Title) + require.Equal(t, "My awesome summary", proposal.Summary) + require.Equal(t, true, proposal.Expedited) err = okJSON.Close() require.Nil(t, err, "unexpected error") diff --git a/x/gov/migrations/v3/json_test.go b/x/gov/migrations/v3/json_test.go index 29f70ff5f715..726d6c506d18 100644 --- a/x/gov/migrations/v3/json_test.go +++ b/x/gov/migrations/v3/json_test.go @@ -87,6 +87,7 @@ func TestMigrateJSON(t *testing.T) { "proposals": [ { "deposit_end_time": "2001-09-09T01:46:40Z", + "expedited": false, "final_tally_result": { "abstain_count": "0", "no_count": "0", diff --git a/x/gov/migrations/v4/json.go b/x/gov/migrations/v4/json.go index 8006aae5e0f8..125116c307af 100644 --- a/x/gov/migrations/v4/json.go +++ b/x/gov/migrations/v4/json.go @@ -15,10 +15,13 @@ func MigrateJSON(oldState *v1.GenesisState) (*v1.GenesisState, error) { params := v1.NewParams( oldState.DepositParams.MinDeposit, + defaultParams.ExpeditedMinDeposit, *oldState.DepositParams.MaxDepositPeriod, *oldState.VotingParams.VotingPeriod, + *defaultParams.ExpeditedVotingPeriod, oldState.TallyParams.Quorum, oldState.TallyParams.Threshold, + defaultParams.ExpeditedThreshold, oldState.TallyParams.VetoThreshold, defaultParams.MinInitialDepositRatio, defaultParams.BurnProposalDepositPrevote, diff --git a/x/gov/migrations/v4/json_test.go b/x/gov/migrations/v4/json_test.go index b16247f43ea6..11c16e3d92b0 100644 --- a/x/gov/migrations/v4/json_test.go +++ b/x/gov/migrations/v4/json_test.go @@ -62,6 +62,14 @@ func TestMigrateJSON(t *testing.T) { "burn_proposal_deposit_prevote": false, "burn_vote_quorum": false, "burn_vote_veto": true, + "expedited_min_deposit": [ + { + "amount": "50000000", + "denom": "stake" + } + ], + "expedited_threshold": "0.667000000000000000", + "expedited_voting_period": "86400s", "max_deposit_period": "172800s", "min_deposit": [ { diff --git a/x/gov/migrations/v4/store.go b/x/gov/migrations/v4/store.go index e81dde5f1427..09b92132959b 100644 --- a/x/gov/migrations/v4/store.go +++ b/x/gov/migrations/v4/store.go @@ -27,10 +27,13 @@ func migrateParams(ctx sdk.Context, storeKey storetypes.StoreKey, legacySubspace defaultParams := govv1.DefaultParams() params := govv1.NewParams( dp.MinDeposit, + defaultParams.ExpeditedMinDeposit, *dp.MaxDepositPeriod, *vp.VotingPeriod, + *defaultParams.ExpeditedVotingPeriod, tp.Quorum, tp.Threshold, + defaultParams.ExpeditedThreshold, tp.VetoThreshold, defaultParams.MinInitialDepositRatio, defaultParams.BurnProposalDepositPrevote, diff --git a/x/gov/simulation/genesis.go b/x/gov/simulation/genesis.go index b6c4e1e0d84c..7e5a8152b961 100644 --- a/x/gov/simulation/genesis.go +++ b/x/gov/simulation/genesis.go @@ -19,47 +19,74 @@ import ( // Simulation parameter constants const ( - DepositParamsMinDeposit = "deposit_params_min_deposit" - DepositParamsDepositPeriod = "deposit_params_deposit_period" - DepositMinInitialRatio = "deposit_params_min_initial_ratio" - VotingParamsVotingPeriod = "voting_params_voting_period" - TallyParamsQuorum = "tally_params_quorum" - TallyParamsThreshold = "tally_params_threshold" - TallyParamsVeto = "tally_params_veto" + MinDeposit = "min_deposit" + ExpeditedMinDeposit = "expedited_min_deposit" + DepositPeriod = "deposit_period" + MinInitialDepositRatio = "min_initial_deposit_ratio" + VotingPeriod = "voting_period" + ExpeditedVotingPeriod = "expedited_voting_period" + Quorum = "quorum" + Threshold = "threshold" + ExpeditedThreshold = "expedited_threshold" + VetoThreshold = "veto_threshold" + + // ExpeditedThreshold must be at least as large as the regular Threshold + // Therefore, we use this break out point in randomization. + tallyNonExpeditedMax = 500 + + // Similarly, expedited voting period must be strictly less than the regular + // voting period to be valid. Therefore, we use this break out point in randomization. + expeditedMaxVotingPeriod = 60 * 60 * 24 * 2 ) -// GenDepositParamsDepositPeriod returns randomized DepositParamsDepositPeriod -func GenDepositParamsDepositPeriod(r *rand.Rand) time.Duration { +// GenDepositPeriod returns randomized DepositPeriod +func GenDepositPeriod(r *rand.Rand) time.Duration { return time.Duration(simulation.RandIntBetween(r, 1, 2*60*60*24*2)) * time.Second } -// GenDepositParamsMinDeposit returns randomized DepositParamsMinDeposit -func GenDepositParamsMinDeposit(r *rand.Rand) sdk.Coins { - return sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, int64(simulation.RandIntBetween(r, 1, 1e3)))) +// GenMinDeposit returns randomized MinDeposit +func GenMinDeposit(r *rand.Rand, bondDenom string) sdk.Coins { + return sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, int64(simulation.RandIntBetween(r, 1, 1e3/2)))) } -// GenDepositMinInitialRatio returns randomized DepositMinInitialRatio -func GenDepositMinInitialDepositRatio(r *rand.Rand) sdk.Dec { +// GenExpeditedMinDeposit returns randomized ExpeditedMinDeposit +// It is always greater than GenMinDeposit +func GenExpeditedMinDeposit(r *rand.Rand, bondDenom string) sdk.Coins { + return sdk.NewCoins(sdk.NewInt64Coin(sdk.DefaultBondDenom, int64(simulation.RandIntBetween(r, 1e3/2, 1e3)))) +} + +// GenMinInitialDepositRatio returns randomized MinInitialDepositRatio +func GenMinInitialDepositRatio(r *rand.Rand) sdk.Dec { return sdk.NewDec(int64(simulation.RandIntBetween(r, 0, 99))).Quo(sdk.NewDec(100)) } -// GenVotingParamsVotingPeriod returns randomized VotingParamsVotingPeriod -func GenVotingParamsVotingPeriod(r *rand.Rand) time.Duration { - return time.Duration(simulation.RandIntBetween(r, 1, 2*60*60*24*2)) * time.Second +// GenVotingPeriod returns randomized VotingPeriod +func GenVotingPeriod(r *rand.Rand) time.Duration { + return time.Duration(simulation.RandIntBetween(r, expeditedMaxVotingPeriod, 2*expeditedMaxVotingPeriod)) * time.Second +} + +// GenExpeditedVotingPeriod randomized ExpeditedVotingPeriod +func GenExpeditedVotingPeriod(r *rand.Rand) time.Duration { + return time.Duration(simulation.RandIntBetween(r, 1, expeditedMaxVotingPeriod)) * time.Second } -// GenTallyParamsQuorum returns randomized TallyParamsQuorum -func GenTallyParamsQuorum(r *rand.Rand) math.LegacyDec { +// GenQuorum returns randomized Quorum +func GenQuorum(r *rand.Rand) math.LegacyDec { return sdk.NewDecWithPrec(int64(simulation.RandIntBetween(r, 334, 500)), 3) } -// GenTallyParamsThreshold returns randomized TallyParamsThreshold -func GenTallyParamsThreshold(r *rand.Rand) math.LegacyDec { - return sdk.NewDecWithPrec(int64(simulation.RandIntBetween(r, 450, 550)), 3) +// GenThreshold returns randomized Threshold +func GenThreshold(r *rand.Rand) math.LegacyDec { + return sdk.NewDecWithPrec(int64(simulation.RandIntBetween(r, 450, tallyNonExpeditedMax+1)), 3) +} + +// GenExpeditedThreshold randomized ExpeditedThreshold +func GenExpeditedThreshold(r *rand.Rand) sdk.Dec { + return sdk.NewDecWithPrec(int64(simulation.RandIntBetween(r, tallyNonExpeditedMax, 550)), 3) } -// GenTallyParamsVeto returns randomized TallyParamsVeto -func GenTallyParamsVeto(r *rand.Rand) math.LegacyDec { +// GenVetoThreshold returns randomized VetoThreshold +func GenVetoThreshold(r *rand.Rand) math.LegacyDec { return sdk.NewDecWithPrec(int64(simulation.RandIntBetween(r, 250, 334)), 3) } @@ -69,49 +96,67 @@ func RandomizedGenState(simState *module.SimulationState) { var minDeposit sdk.Coins simState.AppParams.GetOrGenerate( - simState.Cdc, DepositParamsMinDeposit, &minDeposit, simState.Rand, - func(r *rand.Rand) { minDeposit = GenDepositParamsMinDeposit(r) }, + simState.Cdc, MinDeposit, &minDeposit, simState.Rand, + func(r *rand.Rand) { minDeposit = GenMinDeposit(r, simState.BondDenom) }, + ) + + var expeditedMinDeposit sdk.Coins + simState.AppParams.GetOrGenerate( + simState.Cdc, ExpeditedMinDeposit, &expeditedMinDeposit, simState.Rand, + func(r *rand.Rand) { expeditedMinDeposit = GenExpeditedMinDeposit(r, simState.BondDenom) }, ) var depositPeriod time.Duration simState.AppParams.GetOrGenerate( - simState.Cdc, DepositParamsDepositPeriod, &depositPeriod, simState.Rand, - func(r *rand.Rand) { depositPeriod = GenDepositParamsDepositPeriod(r) }, + simState.Cdc, DepositPeriod, &depositPeriod, simState.Rand, + func(r *rand.Rand) { depositPeriod = GenDepositPeriod(r) }, ) var minInitialDepositRatio sdk.Dec simState.AppParams.GetOrGenerate( - simState.Cdc, DepositMinInitialRatio, &minInitialDepositRatio, simState.Rand, - func(r *rand.Rand) { minInitialDepositRatio = GenDepositMinInitialDepositRatio(r) }, + simState.Cdc, MinInitialDepositRatio, &minInitialDepositRatio, simState.Rand, + func(r *rand.Rand) { minInitialDepositRatio = GenMinInitialDepositRatio(r) }, ) var votingPeriod time.Duration simState.AppParams.GetOrGenerate( - simState.Cdc, VotingParamsVotingPeriod, &votingPeriod, simState.Rand, - func(r *rand.Rand) { votingPeriod = GenVotingParamsVotingPeriod(r) }, + simState.Cdc, VotingPeriod, &votingPeriod, simState.Rand, + func(r *rand.Rand) { votingPeriod = GenVotingPeriod(r) }, + ) + + var expeditedVotingPeriod time.Duration + simState.AppParams.GetOrGenerate( + simState.Cdc, ExpeditedVotingPeriod, &expeditedVotingPeriod, simState.Rand, + func(r *rand.Rand) { expeditedVotingPeriod = GenExpeditedVotingPeriod(r) }, ) var quorum sdk.Dec simState.AppParams.GetOrGenerate( - simState.Cdc, TallyParamsQuorum, &quorum, simState.Rand, - func(r *rand.Rand) { quorum = GenTallyParamsQuorum(r) }, + simState.Cdc, Quorum, &quorum, simState.Rand, + func(r *rand.Rand) { quorum = GenQuorum(r) }, ) var threshold sdk.Dec simState.AppParams.GetOrGenerate( - simState.Cdc, TallyParamsThreshold, &threshold, simState.Rand, - func(r *rand.Rand) { threshold = GenTallyParamsThreshold(r) }, + simState.Cdc, Threshold, &threshold, simState.Rand, + func(r *rand.Rand) { threshold = GenThreshold(r) }, + ) + + var expeditedThreshold sdk.Dec + simState.AppParams.GetOrGenerate( + simState.Cdc, ExpeditedThreshold, &expeditedThreshold, simState.Rand, + func(r *rand.Rand) { expeditedThreshold = GenExpeditedThreshold(r) }, ) - var veto sdk.Dec + var vetoThreshold sdk.Dec simState.AppParams.GetOrGenerate( - simState.Cdc, TallyParamsVeto, &veto, simState.Rand, - func(r *rand.Rand) { veto = GenTallyParamsVeto(r) }, + simState.Cdc, VetoThreshold, &vetoThreshold, simState.Rand, + func(r *rand.Rand) { vetoThreshold = GenVetoThreshold(r) }, ) govGenesis := v1.NewGenesisState( startingProposalID, - v1.NewParams(minDeposit, depositPeriod, votingPeriod, quorum.String(), threshold.String(), veto.String(), minInitialDepositRatio.String(), simState.Rand.Intn(2) == 0, simState.Rand.Intn(2) == 0, simState.Rand.Intn(2) == 0), + v1.NewParams(minDeposit, expeditedMinDeposit, depositPeriod, votingPeriod, expeditedVotingPeriod, quorum.String(), threshold.String(), expeditedThreshold.String(), vetoThreshold.String(), minInitialDepositRatio.String(), simState.Rand.Intn(2) == 0, simState.Rand.Intn(2) == 0, simState.Rand.Intn(2) == 0), ) bz, err := json.MarshalIndent(&govGenesis, "", " ") diff --git a/x/gov/simulation/genesis_test.go b/x/gov/simulation/genesis_test.go index f7bd89cbb690..e092935e58cb 100644 --- a/x/gov/simulation/genesis_test.go +++ b/x/gov/simulation/genesis_test.go @@ -6,6 +6,7 @@ import ( "testing" "github.com/stretchr/testify/require" + "gotest.tools/v3/assert" sdkmath "cosmossdk.io/math" "github.com/cosmos/cosmos-sdk/codec" @@ -42,22 +43,26 @@ func TestRandomizedGenState(t *testing.T) { simState.Cdc.MustUnmarshalJSON(simState.GenState[types.ModuleName], &govGenesis) const ( - tallyQuorum = "0.400000000000000000" - tallyThreshold = "0.539000000000000000" - tallyVetoThreshold = "0.314000000000000000" - minInitialDepositDec = "0.590000000000000000" + tallyQuorum = "0.466000000000000000" + tallyThreshold = "0.485000000000000000" + tallyExpeditedThreshold = "0.511000000000000000" + tallyVetoThreshold = "0.291000000000000000" + minInitialDepositDec = "0.880000000000000000" ) - require.Equal(t, "905stake", govGenesis.Params.MinDeposit[0].String()) - require.Equal(t, "77h26m10s", govGenesis.Params.MaxDepositPeriod.String()) - require.Equal(t, float64(275567), govGenesis.Params.VotingPeriod.Seconds()) - require.Equal(t, tallyQuorum, govGenesis.Params.Quorum) - require.Equal(t, tallyThreshold, govGenesis.Params.Threshold) - require.Equal(t, tallyVetoThreshold, govGenesis.Params.VetoThreshold) - require.Equal(t, uint64(0x28), govGenesis.StartingProposalId) - require.Equal(t, []*v1.Deposit{}, govGenesis.Deposits) - require.Equal(t, []*v1.Vote{}, govGenesis.Votes) - require.Equal(t, []*v1.Proposal{}, govGenesis.Proposals) + assert.Equal(t, "272stake", govGenesis.Params.MinDeposit[0].String()) + assert.Equal(t, "800stake", govGenesis.Params.ExpeditedMinDeposit[0].String()) + assert.Equal(t, "41h11m36s", govGenesis.Params.MaxDepositPeriod.String()) + assert.Equal(t, float64(307362), govGenesis.Params.VotingPeriod.Seconds()) + assert.Equal(t, float64(115820), govGenesis.Params.ExpeditedVotingPeriod.Seconds()) + assert.Equal(t, tallyQuorum, govGenesis.Params.Quorum) + assert.Equal(t, tallyThreshold, govGenesis.Params.Threshold) + assert.Equal(t, tallyExpeditedThreshold, govGenesis.Params.ExpeditedThreshold) + assert.Equal(t, tallyVetoThreshold, govGenesis.Params.VetoThreshold) + assert.Equal(t, uint64(0x28), govGenesis.StartingProposalId) + assert.DeepEqual(t, []*v1.Deposit{}, govGenesis.Deposits) + assert.DeepEqual(t, []*v1.Vote{}, govGenesis.Votes) + assert.DeepEqual(t, []*v1.Proposal{}, govGenesis.Proposals) } // TestRandomizedGenState tests abnormal scenarios of applying RandomizedGenState. diff --git a/x/gov/types/events.go b/x/gov/types/events.go index 76927591af8e..fe48555d9ac1 100644 --- a/x/gov/types/events.go +++ b/x/gov/types/events.go @@ -9,16 +9,17 @@ const ( EventTypeActiveProposal = "active_proposal" EventTypeSignalProposal = "signal_proposal" - AttributeKeyProposalResult = "proposal_result" - AttributeKeyOption = "option" - AttributeKeyProposalID = "proposal_id" - AttributeKeyProposalMessages = "proposal_messages" // Msg type_urls in the proposal - AttributeKeyVotingPeriodStart = "voting_period_start" - AttributeValueProposalDropped = "proposal_dropped" // didn't meet min deposit - AttributeValueProposalPassed = "proposal_passed" // met vote quorum - AttributeValueProposalRejected = "proposal_rejected" // didn't meet vote quorum - AttributeValueProposalFailed = "proposal_failed" // error on proposal handler - AttributeKeyProposalType = "proposal_type" - AttributeSignalTitle = "signal_title" - AttributeSignalDescription = "signal_description" + AttributeKeyProposalResult = "proposal_result" + AttributeKeyOption = "option" + AttributeKeyProposalID = "proposal_id" + AttributeKeyProposalMessages = "proposal_messages" // Msg type_urls in the proposal + AttributeKeyVotingPeriodStart = "voting_period_start" + AttributeValueProposalDropped = "proposal_dropped" // didn't meet min deposit + AttributeValueProposalPassed = "proposal_passed" // met vote quorum + AttributeValueProposalRejected = "proposal_rejected" // didn't meet vote quorum + AttributeValueExpeditedProposalRejected = "expedited_proposal_rejected" // didn't meet expedited vote quorum + AttributeValueProposalFailed = "proposal_failed" // error on proposal handler + AttributeKeyProposalType = "proposal_type" + AttributeSignalTitle = "signal_title" + AttributeSignalDescription = "signal_description" ) diff --git a/x/gov/types/v1/gov.pb.go b/x/gov/types/v1/gov.pb.go index 747eab5c4ca6..b498d6f7bf0f 100644 --- a/x/gov/types/v1/gov.pb.go +++ b/x/gov/types/v1/gov.pb.go @@ -277,6 +277,10 @@ type Proposal struct { // // Since: cosmos-sdk 0.47 Proposer string `protobuf:"bytes,13,opt,name=proposer,proto3" json:"proposer,omitempty"` + // expedited defines if the proposal is expedited + // + // Since: cosmos-sdk 0.50 + Expedited bool `protobuf:"varint,14,opt,name=expedited,proto3" json:"expedited,omitempty"` } func (m *Proposal) Reset() { *m = Proposal{} } @@ -403,6 +407,13 @@ func (m *Proposal) GetProposer() string { return "" } +func (m *Proposal) GetExpedited() bool { + if m != nil { + return m.Expedited + } + return false +} + // TallyResult defines a standard tally for a governance proposal. type TallyResult struct { // yes_count is the number of yes votes on a proposal. @@ -739,6 +750,16 @@ type Params struct { VetoThreshold string `protobuf:"bytes,6,opt,name=veto_threshold,json=vetoThreshold,proto3" json:"veto_threshold,omitempty"` // The ratio representing the proportion of the deposit value that must be paid at proposal submission. MinInitialDepositRatio string `protobuf:"bytes,7,opt,name=min_initial_deposit_ratio,json=minInitialDepositRatio,proto3" json:"min_initial_deposit_ratio,omitempty"` + // Duration of the voting period of an expedited proposal. + // + // Since: cosmos-sdk 0.50 + ExpeditedVotingPeriod *time.Duration `protobuf:"bytes,10,opt,name=expedited_voting_period,json=expeditedVotingPeriod,proto3,stdduration" json:"expedited_voting_period,omitempty"` + // Minimum proportion of Yes votes for proposal to pass. Default value: 0.67. + // + // Since: cosmos-sdk 0.50 + ExpeditedThreshold string `protobuf:"bytes,11,opt,name=expedited_threshold,json=expeditedThreshold,proto3" json:"expedited_threshold,omitempty"` + // Minimum expedited deposit for a proposal to enter voting period. + ExpeditedMinDeposit []types.Coin `protobuf:"bytes,12,rep,name=expedited_min_deposit,json=expeditedMinDeposit,proto3" json:"expedited_min_deposit"` // burn deposits if a proposal does not meet quorum BurnVoteQuorum bool `protobuf:"varint,13,opt,name=burn_vote_quorum,json=burnVoteQuorum,proto3" json:"burn_vote_quorum,omitempty"` // burn deposits if the proposal does not enter voting period @@ -829,6 +850,27 @@ func (m *Params) GetMinInitialDepositRatio() string { return "" } +func (m *Params) GetExpeditedVotingPeriod() *time.Duration { + if m != nil { + return m.ExpeditedVotingPeriod + } + return nil +} + +func (m *Params) GetExpeditedThreshold() string { + if m != nil { + return m.ExpeditedThreshold + } + return "" +} + +func (m *Params) GetExpeditedMinDeposit() []types.Coin { + if m != nil { + return m.ExpeditedMinDeposit + } + return nil +} + func (m *Params) GetBurnVoteQuorum() bool { if m != nil { return m.BurnVoteQuorum @@ -867,87 +909,91 @@ func init() { func init() { proto.RegisterFile("cosmos/gov/v1/gov.proto", fileDescriptor_e05cb1c0d030febb) } var fileDescriptor_e05cb1c0d030febb = []byte{ - // 1276 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0xcf, 0x73, 0xd3, 0xc6, - 0x17, 0x8f, 0x6c, 0xd9, 0x71, 0x9e, 0x63, 0x47, 0x2c, 0xf9, 0x82, 0x12, 0x88, 0x1d, 0x3c, 0x0c, - 0x93, 0x2f, 0x3f, 0xec, 0x6f, 0xe0, 0x4b, 0x2f, 0xf4, 0xe2, 0xc4, 0xa2, 0x88, 0xa1, 0xb1, 0x2b, - 0x8b, 0x30, 0xf4, 0xa2, 0x91, 0xa3, 0xc5, 0xd9, 0xa9, 0xa5, 0x75, 0xa5, 0xb5, 0xc1, 0x7f, 0x42, - 0x6f, 0x1c, 0x3b, 0x3d, 0xf5, 0xd8, 0x63, 0x0f, 0x4c, 0xef, 0xbd, 0x71, 0x6a, 0x19, 0x2e, 0x6d, - 0x2f, 0xb4, 0x03, 0x87, 0xce, 0xf0, 0x57, 0x74, 0x76, 0xb5, 0xb2, 0x1d, 0xc7, 0x9d, 0x04, 0x2e, - 0xb1, 0xf4, 0xde, 0xe7, 0xf3, 0xde, 0xdb, 0xf7, 0x6b, 0x15, 0x38, 0x7f, 0x40, 0x23, 0x9f, 0x46, - 0xb5, 0x2e, 0x1d, 0xd6, 0x86, 0xdb, 0xfc, 0xa7, 0xda, 0x0f, 0x29, 0xa3, 0xa8, 0x10, 0x2b, 0xaa, - 0x5c, 0x32, 0xdc, 0x5e, 0x2f, 0x49, 0x5c, 0xc7, 0x8d, 0x70, 0x6d, 0xb8, 0xdd, 0xc1, 0xcc, 0xdd, - 0xae, 0x1d, 0x50, 0x12, 0xc4, 0xf0, 0xf5, 0xd5, 0x2e, 0xed, 0x52, 0xf1, 0x58, 0xe3, 0x4f, 0x52, - 0x5a, 0xee, 0x52, 0xda, 0xed, 0xe1, 0x9a, 0x78, 0xeb, 0x0c, 0x9e, 0xd4, 0x18, 0xf1, 0x71, 0xc4, - 0x5c, 0xbf, 0x2f, 0x01, 0x6b, 0xb3, 0x00, 0x37, 0x18, 0x49, 0x55, 0x69, 0x56, 0xe5, 0x0d, 0x42, - 0x97, 0x11, 0x9a, 0x78, 0x5c, 0x8b, 0x23, 0x72, 0x62, 0xa7, 0x32, 0xda, 0x58, 0x75, 0xc6, 0xf5, - 0x49, 0x40, 0x6b, 0xe2, 0x6f, 0x2c, 0xaa, 0x50, 0x40, 0x8f, 0x30, 0xe9, 0x1e, 0x32, 0xec, 0xed, - 0x53, 0x86, 0x9b, 0x7d, 0x6e, 0x09, 0x6d, 0x43, 0x96, 0x8a, 0x27, 0x5d, 0xd9, 0x54, 0xb6, 0x8a, - 0x37, 0xd7, 0xaa, 0x47, 0x4e, 0x5d, 0x9d, 0x40, 0x2d, 0x09, 0x44, 0x57, 0x20, 0xfb, 0x54, 0x18, - 0xd2, 0x53, 0x9b, 0xca, 0xd6, 0xd2, 0x4e, 0xf1, 0xf5, 0x8b, 0x1b, 0x20, 0x59, 0x0d, 0x7c, 0x60, - 0x49, 0x6d, 0xe5, 0x7b, 0x05, 0x16, 0x1b, 0xb8, 0x4f, 0x23, 0xc2, 0x50, 0x19, 0xf2, 0xfd, 0x90, - 0xf6, 0x69, 0xe4, 0xf6, 0x1c, 0xe2, 0x09, 0x5f, 0xaa, 0x05, 0x89, 0xc8, 0xf4, 0xd0, 0x27, 0xb0, - 0xe4, 0xc5, 0x58, 0x1a, 0x4a, 0xbb, 0xfa, 0xeb, 0x17, 0x37, 0x56, 0xa5, 0xdd, 0xba, 0xe7, 0x85, - 0x38, 0x8a, 0xda, 0x2c, 0x24, 0x41, 0xd7, 0x9a, 0x40, 0xd1, 0xa7, 0x90, 0x75, 0x7d, 0x3a, 0x08, - 0x98, 0x9e, 0xde, 0x4c, 0x6f, 0xe5, 0x27, 0xf1, 0xf3, 0x32, 0x55, 0x65, 0x99, 0xaa, 0xbb, 0x94, - 0x04, 0x3b, 0x4b, 0x2f, 0xdf, 0x94, 0x17, 0x7e, 0xf8, 0xfb, 0xc7, 0xab, 0x8a, 0x25, 0x39, 0x95, - 0x9f, 0x33, 0x90, 0x6b, 0xc9, 0x20, 0x50, 0x11, 0x52, 0xe3, 0xd0, 0x52, 0xc4, 0x43, 0xff, 0x83, - 0x9c, 0x8f, 0xa3, 0xc8, 0xed, 0xe2, 0x48, 0x4f, 0x09, 0xe3, 0xab, 0xd5, 0xb8, 0x22, 0xd5, 0xa4, - 0x22, 0xd5, 0x7a, 0x30, 0xb2, 0xc6, 0x28, 0x74, 0x1b, 0xb2, 0x11, 0x73, 0xd9, 0x20, 0xd2, 0xd3, - 0x22, 0x99, 0x1b, 0x33, 0xc9, 0x4c, 0x5c, 0xb5, 0x05, 0xc8, 0x92, 0x60, 0x74, 0x0f, 0xd0, 0x13, - 0x12, 0xb8, 0x3d, 0x87, 0xb9, 0xbd, 0xde, 0xc8, 0x09, 0x71, 0x34, 0xe8, 0x31, 0x5d, 0xdd, 0x54, - 0xb6, 0xf2, 0x37, 0xd7, 0x67, 0x4c, 0xd8, 0x1c, 0x62, 0x09, 0x84, 0xa5, 0x09, 0xd6, 0x94, 0x04, - 0xd5, 0x21, 0x1f, 0x0d, 0x3a, 0x3e, 0x61, 0x0e, 0x6f, 0x33, 0x3d, 0x23, 0x4d, 0xcc, 0x46, 0x6d, - 0x27, 0x3d, 0xb8, 0xa3, 0x3e, 0xff, 0xb3, 0xac, 0x58, 0x10, 0x93, 0xb8, 0x18, 0xdd, 0x07, 0x4d, - 0x66, 0xd7, 0xc1, 0x81, 0x17, 0xdb, 0xc9, 0x9e, 0xd2, 0x4e, 0x51, 0x32, 0x8d, 0xc0, 0x13, 0xb6, - 0x4c, 0x28, 0x30, 0xca, 0xdc, 0x9e, 0x23, 0xe5, 0xfa, 0xe2, 0x07, 0xd4, 0x68, 0x59, 0x50, 0x93, - 0x06, 0x7a, 0x00, 0x67, 0x86, 0x94, 0x91, 0xa0, 0xeb, 0x44, 0xcc, 0x0d, 0xe5, 0xf9, 0x72, 0xa7, - 0x8c, 0x6b, 0x25, 0xa6, 0xb6, 0x39, 0x53, 0x04, 0x76, 0x0f, 0xa4, 0x68, 0x72, 0xc6, 0xa5, 0x53, - 0xda, 0x2a, 0xc4, 0xc4, 0xe4, 0x88, 0xeb, 0xbc, 0x49, 0x98, 0xeb, 0xb9, 0xcc, 0xd5, 0x81, 0xb7, - 0xad, 0x35, 0x7e, 0x47, 0xab, 0x90, 0x61, 0x84, 0xf5, 0xb0, 0x9e, 0x17, 0x8a, 0xf8, 0x05, 0xe9, - 0xb0, 0x18, 0x0d, 0x7c, 0xdf, 0x0d, 0x47, 0xfa, 0xb2, 0x90, 0x27, 0xaf, 0xe8, 0xff, 0x90, 0x8b, - 0x27, 0x02, 0x87, 0x7a, 0xe1, 0x84, 0x11, 0x18, 0x23, 0x2b, 0xbf, 0x29, 0x90, 0x9f, 0xee, 0x81, - 0x6b, 0xb0, 0x34, 0xc2, 0x91, 0x73, 0x20, 0x86, 0x42, 0x39, 0x36, 0xa1, 0x66, 0xc0, 0xac, 0xdc, - 0x08, 0x47, 0xbb, 0x5c, 0x8f, 0x6e, 0x41, 0xc1, 0xed, 0x44, 0xcc, 0x25, 0x81, 0x24, 0xa4, 0xe6, - 0x12, 0x96, 0x25, 0x28, 0x26, 0xfd, 0x17, 0x72, 0x01, 0x95, 0xf8, 0xf4, 0x5c, 0xfc, 0x62, 0x40, - 0x63, 0xe8, 0x1d, 0x40, 0x01, 0x75, 0x9e, 0x12, 0x76, 0xe8, 0x0c, 0x31, 0x4b, 0x48, 0xea, 0x5c, - 0xd2, 0x4a, 0x40, 0x1f, 0x11, 0x76, 0xb8, 0x8f, 0x59, 0x4c, 0xae, 0xfc, 0xa4, 0x80, 0xca, 0xf7, - 0xcf, 0xc9, 0xdb, 0xa3, 0x0a, 0x99, 0x21, 0x65, 0xf8, 0xe4, 0xcd, 0x11, 0xc3, 0xd0, 0x1d, 0x58, - 0x8c, 0x97, 0x59, 0xa4, 0xab, 0xa2, 0x25, 0x2f, 0xcd, 0x8c, 0xd9, 0xf1, 0x4d, 0x69, 0x25, 0x8c, - 0x23, 0x25, 0xcf, 0x1c, 0x2d, 0xf9, 0x7d, 0x35, 0x97, 0xd6, 0xd4, 0xca, 0x1f, 0x0a, 0x14, 0x64, - 0xe3, 0xb6, 0xdc, 0xd0, 0xf5, 0x23, 0xf4, 0x18, 0xf2, 0x3e, 0x09, 0xc6, 0x73, 0xa0, 0x9c, 0x34, - 0x07, 0x1b, 0x7c, 0x0e, 0xde, 0xbf, 0x29, 0xff, 0x67, 0x8a, 0x75, 0x9d, 0xfa, 0x84, 0x61, 0xbf, - 0xcf, 0x46, 0x16, 0xf8, 0x24, 0x48, 0x26, 0xc3, 0x07, 0xe4, 0xbb, 0xcf, 0x12, 0x90, 0xd3, 0xc7, - 0x21, 0xa1, 0x9e, 0x48, 0x04, 0xf7, 0x30, 0xdb, 0xce, 0x0d, 0x79, 0x85, 0xec, 0x5c, 0x7e, 0xff, - 0xa6, 0x7c, 0xf1, 0x38, 0x71, 0xe2, 0xe4, 0x5b, 0xde, 0xed, 0x9a, 0xef, 0x3e, 0x4b, 0x4e, 0x22, - 0xf4, 0x15, 0x1b, 0x96, 0xf7, 0xc5, 0x04, 0xc8, 0x93, 0x35, 0x40, 0x4e, 0x44, 0xe2, 0x59, 0x39, - 0xc9, 0xb3, 0x2a, 0x2c, 0x2f, 0xc7, 0x2c, 0x69, 0xf5, 0xbb, 0xa4, 0x89, 0xa5, 0xd5, 0x2b, 0x90, - 0xfd, 0x7a, 0x40, 0xc3, 0x81, 0x3f, 0xa7, 0x83, 0xc5, 0x1d, 0x13, 0x6b, 0xd1, 0x75, 0x58, 0x62, - 0x87, 0x21, 0x8e, 0x0e, 0x69, 0xcf, 0xfb, 0x97, 0xeb, 0x68, 0x02, 0x40, 0xb7, 0xa1, 0x28, 0xba, - 0x70, 0x42, 0x49, 0xcf, 0xa5, 0x14, 0x38, 0xca, 0x4e, 0x40, 0x95, 0x5f, 0x55, 0xc8, 0xca, 0xb8, - 0x8c, 0x0f, 0xac, 0xe3, 0xd4, 0x3e, 0x9b, 0xae, 0xd9, 0xe7, 0x1f, 0x57, 0x33, 0x75, 0x7e, 0x4d, - 0x8e, 0xd7, 0x20, 0xfd, 0x11, 0x35, 0x98, 0xca, 0xb9, 0x7a, 0xfa, 0x9c, 0x67, 0x3e, 0x3c, 0xe7, - 0xd9, 0x53, 0xe4, 0x1c, 0x99, 0xb0, 0xc6, 0x13, 0x4d, 0x02, 0xc2, 0xc8, 0xe4, 0x02, 0x71, 0x44, - 0xf8, 0xfa, 0xe2, 0x5c, 0x0b, 0xe7, 0x7c, 0x12, 0x98, 0x31, 0x5e, 0xa6, 0xc7, 0xe2, 0x68, 0xb4, - 0x05, 0x5a, 0x67, 0x10, 0x06, 0x0e, 0x1f, 0x7d, 0x47, 0x9e, 0x90, 0xaf, 0xd7, 0x9c, 0x55, 0xe4, - 0x72, 0x3e, 0xe2, 0x5f, 0xc4, 0x27, 0xab, 0xc3, 0x86, 0x40, 0x8e, 0x97, 0xcd, 0xb8, 0x40, 0x21, - 0xe6, 0x6c, 0xbd, 0x28, 0x68, 0xeb, 0x1c, 0x94, 0xdc, 0xe5, 0x49, 0x25, 0x62, 0x04, 0xba, 0x0c, - 0xc5, 0x89, 0x33, 0x7e, 0x24, 0x7d, 0x45, 0x70, 0x96, 0x13, 0x57, 0x7c, 0xbd, 0x5d, 0xfd, 0x46, - 0x01, 0x98, 0xfa, 0x08, 0xbb, 0x00, 0xe7, 0xf7, 0x9b, 0xb6, 0xe1, 0x34, 0x5b, 0xb6, 0xd9, 0xdc, - 0x73, 0x1e, 0xee, 0xb5, 0x5b, 0xc6, 0xae, 0x79, 0xd7, 0x34, 0x1a, 0xda, 0x02, 0x3a, 0x0b, 0x2b, - 0xd3, 0xca, 0xc7, 0x46, 0x5b, 0x53, 0xd0, 0x79, 0x38, 0x3b, 0x2d, 0xac, 0xef, 0xb4, 0xed, 0xba, - 0xb9, 0xa7, 0xa5, 0x10, 0x82, 0xe2, 0xb4, 0x62, 0xaf, 0xa9, 0xa5, 0xd1, 0x45, 0xd0, 0x8f, 0xca, - 0x9c, 0x47, 0xa6, 0x7d, 0xcf, 0xd9, 0x37, 0xec, 0xa6, 0xa6, 0x5e, 0xfd, 0x45, 0x81, 0xe2, 0xd1, - 0x0f, 0x13, 0x54, 0x86, 0x0b, 0x2d, 0xab, 0xd9, 0x6a, 0xb6, 0xeb, 0x0f, 0x9c, 0xb6, 0x5d, 0xb7, - 0x1f, 0xb6, 0x67, 0x62, 0xaa, 0x40, 0x69, 0x16, 0xd0, 0x30, 0x5a, 0xcd, 0xb6, 0x69, 0x3b, 0x2d, - 0xc3, 0x32, 0x9b, 0x0d, 0x4d, 0x41, 0x97, 0x60, 0x63, 0x16, 0xb3, 0xdf, 0xb4, 0xcd, 0xbd, 0xcf, - 0x12, 0x48, 0x0a, 0xad, 0xc3, 0xb9, 0x59, 0x48, 0xab, 0xde, 0x6e, 0x1b, 0x8d, 0x38, 0xe8, 0x59, - 0x9d, 0x65, 0xdc, 0x37, 0x76, 0x6d, 0xa3, 0xa1, 0xa9, 0xf3, 0x98, 0x77, 0xeb, 0xe6, 0x03, 0xa3, - 0xa1, 0x65, 0x76, 0x8c, 0x97, 0x6f, 0x4b, 0xca, 0xab, 0xb7, 0x25, 0xe5, 0xaf, 0xb7, 0x25, 0xe5, - 0xf9, 0xbb, 0xd2, 0xc2, 0xab, 0x77, 0xa5, 0x85, 0xdf, 0xdf, 0x95, 0x16, 0xbe, 0xbc, 0xd6, 0x25, - 0xec, 0x70, 0xd0, 0xa9, 0x1e, 0x50, 0x5f, 0x7e, 0x2e, 0xcb, 0x9f, 0x1b, 0x91, 0xf7, 0x55, 0xed, - 0x99, 0xf8, 0x17, 0x80, 0x8d, 0xfa, 0x38, 0xe2, 0xdf, 0xf7, 0x59, 0x31, 0x35, 0xb7, 0xfe, 0x09, - 0x00, 0x00, 0xff, 0xff, 0xbc, 0x24, 0x6f, 0xb5, 0x20, 0x0c, 0x00, 0x00, + // 1344 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0x4b, 0x6f, 0xdb, 0xc6, + 0x16, 0x36, 0xf5, 0xb2, 0x74, 0xf4, 0xb0, 0x32, 0x71, 0x62, 0xda, 0x89, 0x25, 0x47, 0x08, 0x02, + 0xdf, 0x3c, 0xa4, 0xeb, 0xe4, 0xe6, 0x6e, 0x52, 0xa0, 0x90, 0x2d, 0xa6, 0x61, 0x90, 0x58, 0x2a, + 0xc5, 0xc8, 0x4d, 0x37, 0x04, 0x65, 0x4e, 0x64, 0xa2, 0x22, 0x47, 0x25, 0x47, 0x8a, 0xf5, 0x13, + 0xba, 0xcb, 0xb2, 0xe8, 0xaa, 0xcb, 0x2e, 0xbb, 0x08, 0xfa, 0x07, 0xba, 0xc9, 0xaa, 0x08, 0xb2, + 0x69, 0xbb, 0x49, 0x8a, 0x64, 0x51, 0x20, 0xbf, 0xa2, 0x98, 0xe1, 0x50, 0x94, 0x65, 0x15, 0xb6, + 0xb3, 0xb1, 0xc5, 0x73, 0xbe, 0xef, 0x9c, 0x33, 0xe7, 0x35, 0x24, 0xac, 0xec, 0x13, 0xdf, 0x21, + 0x7e, 0xad, 0x47, 0x46, 0xb5, 0xd1, 0x16, 0xfb, 0x57, 0x1d, 0x78, 0x84, 0x12, 0x94, 0x0f, 0x14, + 0x55, 0x26, 0x19, 0x6d, 0xad, 0x95, 0x04, 0xae, 0x6b, 0xfa, 0xb8, 0x36, 0xda, 0xea, 0x62, 0x6a, + 0x6e, 0xd5, 0xf6, 0x89, 0xed, 0x06, 0xf0, 0xb5, 0xe5, 0x1e, 0xe9, 0x11, 0xfe, 0xb3, 0xc6, 0x7e, + 0x09, 0x69, 0xb9, 0x47, 0x48, 0xaf, 0x8f, 0x6b, 0xfc, 0xa9, 0x3b, 0x7c, 0x56, 0xa3, 0xb6, 0x83, + 0x7d, 0x6a, 0x3a, 0x03, 0x01, 0x58, 0x9d, 0x05, 0x98, 0xee, 0x58, 0xa8, 0x4a, 0xb3, 0x2a, 0x6b, + 0xe8, 0x99, 0xd4, 0x26, 0xa1, 0xc7, 0xd5, 0x20, 0x22, 0x23, 0x70, 0x2a, 0xa2, 0x0d, 0x54, 0xe7, + 0x4c, 0xc7, 0x76, 0x49, 0x8d, 0xff, 0x0d, 0x44, 0x15, 0x02, 0x68, 0x0f, 0xdb, 0xbd, 0x03, 0x8a, + 0xad, 0x0e, 0xa1, 0xb8, 0x39, 0x60, 0x96, 0xd0, 0x16, 0xa4, 0x08, 0xff, 0x25, 0x4b, 0x1b, 0xd2, + 0x66, 0xe1, 0xf6, 0x6a, 0xf5, 0xc8, 0xa9, 0xab, 0x11, 0x54, 0x13, 0x40, 0x74, 0x0d, 0x52, 0xcf, + 0xb9, 0x21, 0x39, 0xb6, 0x21, 0x6d, 0x66, 0xb6, 0x0b, 0x6f, 0x5e, 0xde, 0x02, 0xc1, 0x6a, 0xe0, + 0x7d, 0x4d, 0x68, 0x2b, 0x3f, 0x4a, 0xb0, 0xd8, 0xc0, 0x03, 0xe2, 0xdb, 0x14, 0x95, 0x21, 0x3b, + 0xf0, 0xc8, 0x80, 0xf8, 0x66, 0xdf, 0xb0, 0x2d, 0xee, 0x2b, 0xa1, 0x41, 0x28, 0x52, 0x2d, 0xf4, + 0x7f, 0xc8, 0x58, 0x01, 0x96, 0x78, 0xc2, 0xae, 0xfc, 0xe6, 0xe5, 0xad, 0x65, 0x61, 0xb7, 0x6e, + 0x59, 0x1e, 0xf6, 0xfd, 0x36, 0xf5, 0x6c, 0xb7, 0xa7, 0x45, 0x50, 0xf4, 0x19, 0xa4, 0x4c, 0x87, + 0x0c, 0x5d, 0x2a, 0xc7, 0x37, 0xe2, 0x9b, 0xd9, 0x28, 0x7e, 0x56, 0xa6, 0xaa, 0x28, 0x53, 0x75, + 0x87, 0xd8, 0xee, 0x76, 0xe6, 0xd5, 0xdb, 0xf2, 0xc2, 0x4f, 0x7f, 0xff, 0x7c, 0x5d, 0xd2, 0x04, + 0xa7, 0xf2, 0x2e, 0x09, 0xe9, 0x96, 0x08, 0x02, 0x15, 0x20, 0x36, 0x09, 0x2d, 0x66, 0x5b, 0xe8, + 0xbf, 0x90, 0x76, 0xb0, 0xef, 0x9b, 0x3d, 0xec, 0xcb, 0x31, 0x6e, 0x7c, 0xb9, 0x1a, 0x54, 0xa4, + 0x1a, 0x56, 0xa4, 0x5a, 0x77, 0xc7, 0xda, 0x04, 0x85, 0xee, 0x42, 0xca, 0xa7, 0x26, 0x1d, 0xfa, + 0x72, 0x9c, 0x27, 0x73, 0x7d, 0x26, 0x99, 0xa1, 0xab, 0x36, 0x07, 0x69, 0x02, 0x8c, 0x1e, 0x00, + 0x7a, 0x66, 0xbb, 0x66, 0xdf, 0xa0, 0x66, 0xbf, 0x3f, 0x36, 0x3c, 0xec, 0x0f, 0xfb, 0x54, 0x4e, + 0x6c, 0x48, 0x9b, 0xd9, 0xdb, 0x6b, 0x33, 0x26, 0x74, 0x06, 0xd1, 0x38, 0x42, 0x2b, 0x72, 0xd6, + 0x94, 0x04, 0xd5, 0x21, 0xeb, 0x0f, 0xbb, 0x8e, 0x4d, 0x0d, 0xd6, 0x66, 0x72, 0x52, 0x98, 0x98, + 0x8d, 0x5a, 0x0f, 0x7b, 0x70, 0x3b, 0xf1, 0xe2, 0x5d, 0x59, 0xd2, 0x20, 0x20, 0x31, 0x31, 0x7a, + 0x08, 0x45, 0x91, 0x5d, 0x03, 0xbb, 0x56, 0x60, 0x27, 0x75, 0x4a, 0x3b, 0x05, 0xc1, 0x54, 0x5c, + 0x8b, 0xdb, 0x52, 0x21, 0x4f, 0x09, 0x35, 0xfb, 0x86, 0x90, 0xcb, 0x8b, 0x67, 0xa8, 0x51, 0x8e, + 0x53, 0xc3, 0x06, 0x7a, 0x04, 0xe7, 0x46, 0x84, 0xda, 0x6e, 0xcf, 0xf0, 0xa9, 0xe9, 0x89, 0xf3, + 0xa5, 0x4f, 0x19, 0xd7, 0x52, 0x40, 0x6d, 0x33, 0x26, 0x0f, 0xec, 0x01, 0x08, 0x51, 0x74, 0xc6, + 0xcc, 0x29, 0x6d, 0xe5, 0x03, 0x62, 0x78, 0xc4, 0x35, 0xd6, 0x24, 0xd4, 0xb4, 0x4c, 0x6a, 0xca, + 0xc0, 0xda, 0x56, 0x9b, 0x3c, 0xa3, 0x65, 0x48, 0x52, 0x9b, 0xf6, 0xb1, 0x9c, 0xe5, 0x8a, 0xe0, + 0x01, 0xc9, 0xb0, 0xe8, 0x0f, 0x1d, 0xc7, 0xf4, 0xc6, 0x72, 0x8e, 0xcb, 0xc3, 0x47, 0xf4, 0x3f, + 0x48, 0x07, 0x13, 0x81, 0x3d, 0x39, 0x7f, 0xc2, 0x08, 0x4c, 0x90, 0xe8, 0x32, 0x64, 0xf0, 0xe1, + 0x00, 0x5b, 0x36, 0xc5, 0x96, 0x5c, 0xd8, 0x90, 0x36, 0xd3, 0x5a, 0x24, 0xa8, 0xfc, 0x2e, 0x41, + 0x76, 0xba, 0x43, 0x6e, 0x40, 0x66, 0x8c, 0x7d, 0x63, 0x9f, 0x8f, 0x8c, 0x74, 0x6c, 0x7e, 0x55, + 0x97, 0x6a, 0xe9, 0x31, 0xf6, 0x77, 0x98, 0x1e, 0xdd, 0x81, 0xbc, 0xd9, 0xf5, 0xa9, 0x69, 0xbb, + 0x82, 0x10, 0x9b, 0x4b, 0xc8, 0x09, 0x50, 0x40, 0xfa, 0x0f, 0xa4, 0x5d, 0x22, 0xf0, 0xf1, 0xb9, + 0xf8, 0x45, 0x97, 0x04, 0xd0, 0x7b, 0x80, 0x5c, 0x62, 0x3c, 0xb7, 0xe9, 0x81, 0x31, 0xc2, 0x34, + 0x24, 0x25, 0xe6, 0x92, 0x96, 0x5c, 0xb2, 0x67, 0xd3, 0x83, 0x0e, 0xa6, 0x01, 0xb9, 0xf2, 0x8b, + 0x04, 0x09, 0xb6, 0x9d, 0x4e, 0xde, 0x2d, 0x55, 0x48, 0x8e, 0x08, 0xc5, 0x27, 0xef, 0x95, 0x00, + 0x86, 0xee, 0xc1, 0x62, 0xb0, 0xea, 0x7c, 0x39, 0xc1, 0x1b, 0xf6, 0xca, 0xcc, 0x10, 0x1e, 0xdf, + 0xa3, 0x5a, 0xc8, 0x38, 0xd2, 0x10, 0xc9, 0xa3, 0x0d, 0xf1, 0x30, 0x91, 0x8e, 0x17, 0x13, 0x95, + 0x3f, 0x25, 0xc8, 0x8b, 0xb6, 0x6e, 0x99, 0x9e, 0xe9, 0xf8, 0xe8, 0x29, 0x64, 0x1d, 0xdb, 0x9d, + 0x4c, 0x89, 0x74, 0xd2, 0x94, 0xac, 0xb3, 0x29, 0xf9, 0xf8, 0xb6, 0x7c, 0x61, 0x8a, 0x75, 0x93, + 0x38, 0x36, 0xc5, 0xce, 0x80, 0x8e, 0x35, 0x70, 0x6c, 0x37, 0x9c, 0x1b, 0x07, 0x90, 0x63, 0x1e, + 0x86, 0x20, 0x63, 0x80, 0x3d, 0x9b, 0x58, 0x3c, 0x11, 0xcc, 0xc3, 0x6c, 0xb3, 0x37, 0xc4, 0x05, + 0xb3, 0x7d, 0xf5, 0xe3, 0xdb, 0xf2, 0xe5, 0xe3, 0xc4, 0xc8, 0xc9, 0xf7, 0x6c, 0x16, 0x8a, 0x8e, + 0x79, 0x18, 0x9e, 0x84, 0xeb, 0x2b, 0x3a, 0xe4, 0x3a, 0x7c, 0x3e, 0xc4, 0xc9, 0x1a, 0x20, 0xe6, + 0x25, 0xf4, 0x2c, 0x9d, 0xe4, 0x39, 0xc1, 0x2d, 0xe7, 0x02, 0x96, 0xb0, 0xfa, 0x43, 0xd8, 0xc4, + 0xc2, 0xea, 0x35, 0x48, 0x7d, 0x3b, 0x24, 0xde, 0xd0, 0x99, 0xd3, 0xc1, 0xfc, 0x06, 0x0a, 0xb4, + 0xe8, 0x26, 0x64, 0xe8, 0x81, 0x87, 0xfd, 0x03, 0xd2, 0xb7, 0xfe, 0xe5, 0xb2, 0x8a, 0x00, 0xe8, + 0x2e, 0x14, 0x78, 0x17, 0x46, 0x94, 0xf8, 0x5c, 0x4a, 0x9e, 0xa1, 0xf4, 0x10, 0x54, 0xf9, 0x35, + 0x05, 0x29, 0x11, 0x97, 0x72, 0xc6, 0x3a, 0x4e, 0x6d, 0xbb, 0xe9, 0x9a, 0x3d, 0xfe, 0xb4, 0x9a, + 0x25, 0xe6, 0xd7, 0xe4, 0x78, 0x0d, 0xe2, 0x9f, 0x50, 0x83, 0xa9, 0x9c, 0x27, 0x4e, 0x9f, 0xf3, + 0xe4, 0xd9, 0x73, 0x9e, 0x3a, 0x45, 0xce, 0x91, 0x0a, 0xab, 0x2c, 0xd1, 0xb6, 0x6b, 0x53, 0x3b, + 0xba, 0x5e, 0x0c, 0x1e, 0xbe, 0xbc, 0x38, 0xd7, 0xc2, 0x45, 0xc7, 0x76, 0xd5, 0x00, 0x2f, 0xd2, + 0xa3, 0x31, 0x34, 0xda, 0x83, 0x95, 0xc9, 0xb6, 0x34, 0x8e, 0xe6, 0x09, 0x4e, 0x97, 0xa7, 0x0b, + 0x13, 0x7e, 0x67, 0x3a, 0x61, 0x9f, 0xc3, 0xf9, 0xc8, 0x70, 0x74, 0xbe, 0xec, 0xdc, 0xe8, 0xd0, + 0x04, 0x1a, 0x1d, 0xf2, 0x2b, 0x88, 0x2c, 0x1b, 0xd3, 0x7d, 0x95, 0x3b, 0x43, 0x5f, 0x45, 0x31, + 0x3c, 0x8e, 0x1a, 0x6c, 0x13, 0x8a, 0xdd, 0xa1, 0xe7, 0xb2, 0xe3, 0x62, 0x43, 0x54, 0x35, 0xcf, + 0x6f, 0x8e, 0x02, 0x93, 0xb3, 0xb5, 0xf6, 0x65, 0x50, 0xcd, 0x3a, 0xac, 0x73, 0xe4, 0x64, 0xc1, + 0x4e, 0x9a, 0xd2, 0xc3, 0x8c, 0x2d, 0x2e, 0x9c, 0x35, 0x06, 0x0a, 0xdf, 0x6e, 0xc2, 0xee, 0x0b, + 0x10, 0xe8, 0x2a, 0x14, 0x22, 0x67, 0xac, 0x8c, 0xf2, 0x12, 0xe7, 0xe4, 0x42, 0x57, 0x6c, 0xa5, + 0x5f, 0xff, 0x4e, 0x02, 0x98, 0x7a, 0x2d, 0xbd, 0x04, 0x2b, 0x9d, 0xa6, 0xae, 0x18, 0xcd, 0x96, + 0xae, 0x36, 0x77, 0x8d, 0x27, 0xbb, 0xed, 0x96, 0xb2, 0xa3, 0xde, 0x57, 0x95, 0x46, 0x71, 0x01, + 0x9d, 0x87, 0xa5, 0x69, 0xe5, 0x53, 0xa5, 0x5d, 0x94, 0xd0, 0x0a, 0x9c, 0x9f, 0x16, 0xd6, 0xb7, + 0xdb, 0x7a, 0x5d, 0xdd, 0x2d, 0xc6, 0x10, 0x82, 0xc2, 0xb4, 0x62, 0xb7, 0x59, 0x8c, 0xa3, 0xcb, + 0x20, 0x1f, 0x95, 0x19, 0x7b, 0xaa, 0xfe, 0xc0, 0xe8, 0x28, 0x7a, 0xb3, 0x98, 0xb8, 0xfe, 0x9b, + 0x04, 0x85, 0xa3, 0xaf, 0x6a, 0xa8, 0x0c, 0x97, 0x5a, 0x5a, 0xb3, 0xd5, 0x6c, 0xd7, 0x1f, 0x19, + 0x6d, 0xbd, 0xae, 0x3f, 0x69, 0xcf, 0xc4, 0x54, 0x81, 0xd2, 0x2c, 0xa0, 0xa1, 0xb4, 0x9a, 0x6d, + 0x55, 0x37, 0x5a, 0x8a, 0xa6, 0x36, 0x1b, 0x45, 0x09, 0x5d, 0x81, 0xf5, 0x59, 0x4c, 0xa7, 0xa9, + 0xab, 0xbb, 0x5f, 0x84, 0x90, 0x18, 0x5a, 0x83, 0x8b, 0xb3, 0x90, 0x56, 0xbd, 0xdd, 0x56, 0x1a, + 0x41, 0xd0, 0xb3, 0x3a, 0x4d, 0x79, 0xa8, 0xec, 0xe8, 0x4a, 0xa3, 0x98, 0x98, 0xc7, 0xbc, 0x5f, + 0x57, 0x1f, 0x29, 0x8d, 0x62, 0x72, 0x5b, 0x79, 0xf5, 0xbe, 0x24, 0xbd, 0x7e, 0x5f, 0x92, 0xfe, + 0x7a, 0x5f, 0x92, 0x5e, 0x7c, 0x28, 0x2d, 0xbc, 0xfe, 0x50, 0x5a, 0xf8, 0xe3, 0x43, 0x69, 0xe1, + 0xeb, 0x1b, 0x3d, 0x9b, 0x1e, 0x0c, 0xbb, 0xd5, 0x7d, 0xe2, 0x88, 0x0f, 0x08, 0xf1, 0xef, 0x96, + 0x6f, 0x7d, 0x53, 0x3b, 0xe4, 0x1f, 0x45, 0x74, 0x3c, 0xc0, 0x3e, 0xfb, 0xe2, 0x49, 0xf1, 0x09, + 0xb8, 0xf3, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x6a, 0x22, 0x05, 0x93, 0x32, 0x0d, 0x00, 0x00, } func (m *WeightedVoteOption) Marshal() (dAtA []byte, err error) { @@ -1054,6 +1100,16 @@ func (m *Proposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.Expedited { + i-- + if m.Expedited { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x70 + } if len(m.Proposer) > 0 { i -= len(m.Proposer) copy(dAtA[i:], m.Proposer) @@ -1456,6 +1512,37 @@ func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x68 } + if len(m.ExpeditedMinDeposit) > 0 { + for iNdEx := len(m.ExpeditedMinDeposit) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.ExpeditedMinDeposit[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGov(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x62 + } + } + if len(m.ExpeditedThreshold) > 0 { + i -= len(m.ExpeditedThreshold) + copy(dAtA[i:], m.ExpeditedThreshold) + i = encodeVarintGov(dAtA, i, uint64(len(m.ExpeditedThreshold))) + i-- + dAtA[i] = 0x5a + } + if m.ExpeditedVotingPeriod != nil { + n8, err8 := github_com_cosmos_gogoproto_types.StdDurationMarshalTo(*m.ExpeditedVotingPeriod, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdDuration(*m.ExpeditedVotingPeriod):]) + if err8 != nil { + return 0, err8 + } + i -= n8 + i = encodeVarintGov(dAtA, i, uint64(n8)) + i-- + dAtA[i] = 0x52 + } if len(m.MinInitialDepositRatio) > 0 { i -= len(m.MinInitialDepositRatio) copy(dAtA[i:], m.MinInitialDepositRatio) @@ -1485,22 +1572,22 @@ func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x22 } if m.VotingPeriod != nil { - n8, err8 := github_com_cosmos_gogoproto_types.StdDurationMarshalTo(*m.VotingPeriod, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdDuration(*m.VotingPeriod):]) - if err8 != nil { - return 0, err8 + n9, err9 := github_com_cosmos_gogoproto_types.StdDurationMarshalTo(*m.VotingPeriod, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdDuration(*m.VotingPeriod):]) + if err9 != nil { + return 0, err9 } - i -= n8 - i = encodeVarintGov(dAtA, i, uint64(n8)) + i -= n9 + i = encodeVarintGov(dAtA, i, uint64(n9)) i-- dAtA[i] = 0x1a } if m.MaxDepositPeriod != nil { - n9, err9 := github_com_cosmos_gogoproto_types.StdDurationMarshalTo(*m.MaxDepositPeriod, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdDuration(*m.MaxDepositPeriod):]) - if err9 != nil { - return 0, err9 + n10, err10 := github_com_cosmos_gogoproto_types.StdDurationMarshalTo(*m.MaxDepositPeriod, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdDuration(*m.MaxDepositPeriod):]) + if err10 != nil { + return 0, err10 } - i -= n9 - i = encodeVarintGov(dAtA, i, uint64(n9)) + i -= n10 + i = encodeVarintGov(dAtA, i, uint64(n10)) i-- dAtA[i] = 0x12 } @@ -1630,6 +1717,9 @@ func (m *Proposal) Size() (n int) { if l > 0 { n += 1 + l + sovGov(uint64(l)) } + if m.Expedited { + n += 2 + } return n } @@ -1773,6 +1863,20 @@ func (m *Params) Size() (n int) { if l > 0 { n += 1 + l + sovGov(uint64(l)) } + if m.ExpeditedVotingPeriod != nil { + l = github_com_cosmos_gogoproto_types.SizeOfStdDuration(*m.ExpeditedVotingPeriod) + n += 1 + l + sovGov(uint64(l)) + } + l = len(m.ExpeditedThreshold) + if l > 0 { + n += 1 + l + sovGov(uint64(l)) + } + if len(m.ExpeditedMinDeposit) > 0 { + for _, e := range m.ExpeditedMinDeposit { + l = e.Size() + n += 1 + l + sovGov(uint64(l)) + } + } if m.BurnVoteQuorum { n += 2 } @@ -2470,6 +2574,26 @@ func (m *Proposal) Unmarshal(dAtA []byte) error { } m.Proposer = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 14: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Expedited", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGov + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Expedited = bool(v != 0) default: iNdEx = preIndex skippy, err := skipGov(dAtA[iNdEx:]) @@ -3451,6 +3575,108 @@ func (m *Params) Unmarshal(dAtA []byte) error { } m.MinInitialDepositRatio = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ExpeditedVotingPeriod", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGov + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGov + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGov + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ExpeditedVotingPeriod == nil { + m.ExpeditedVotingPeriod = new(time.Duration) + } + if err := github_com_cosmos_gogoproto_types.StdDurationUnmarshal(m.ExpeditedVotingPeriod, dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ExpeditedThreshold", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGov + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGov + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGov + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ExpeditedThreshold = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ExpeditedMinDeposit", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGov + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGov + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGov + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ExpeditedMinDeposit = append(m.ExpeditedMinDeposit, types.Coin{}) + if err := m.ExpeditedMinDeposit[len(m.ExpeditedMinDeposit)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex case 13: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field BurnVoteQuorum", wireType) diff --git a/x/gov/types/v1/msgs.go b/x/gov/types/v1/msgs.go index f1b1667d59d5..b59ecd83d05f 100644 --- a/x/gov/types/v1/msgs.go +++ b/x/gov/types/v1/msgs.go @@ -23,12 +23,20 @@ var ( // //nolint:interfacer func NewMsgSubmitProposal(messages []sdk.Msg, initialDeposit sdk.Coins, proposer, metadata, title, summary string) (*MsgSubmitProposal, error) { + return NewMsgSubmitExpeditedProposal(messages, initialDeposit, proposer, metadata, title, summary, false) +} + +// NewMsgSubmitExpeditedProposal creates a new expedited MsgSubmitProposal. +// +//nolint:interfacer +func NewMsgSubmitExpeditedProposal(messages []sdk.Msg, initialDeposit sdk.Coins, proposer, metadata, title, summary string, expedited bool) (*MsgSubmitProposal, error) { m := &MsgSubmitProposal{ InitialDeposit: initialDeposit, Proposer: proposer, Metadata: metadata, Title: title, Summary: summary, + Expedited: expedited, } anys, err := sdktx.SetMsgs(messages) diff --git a/x/gov/types/v1/params.go b/x/gov/types/v1/params.go index c54957b540c9..adadec6e56d1 100644 --- a/x/gov/types/v1/params.go +++ b/x/gov/types/v1/params.go @@ -11,19 +11,23 @@ import ( // Default period for deposits & voting const ( - DefaultPeriod time.Duration = time.Hour * 24 * 2 // 2 days + DefaultPeriod = time.Hour * 24 * 2 // 2 days + DefaultExpeditedPeriod = time.Hour * 24 * 1 // 1 day + DefaultMinExpeditedDepositTokensRatio = 5 ) // Default governance params var ( - DefaultMinDepositTokens = sdk.NewInt(10000000) - DefaultQuorum = sdk.NewDecWithPrec(334, 3) - DefaultThreshold = sdk.NewDecWithPrec(5, 1) - DefaultVetoThreshold = sdk.NewDecWithPrec(334, 3) - DefaultMinInitialDepositRatio = sdk.ZeroDec() - DefaultBurnProposalPrevote = false // set to false to replicate behavior of when this change was made (0.47) - DefaultBurnVoteQuorom = false // set to false to replicate behavior of when this change was made (0.47) - DefaultBurnVoteVeto = true // set to true to replicate behavior of when this change was made (0.47) + DefaultMinDepositTokens = sdk.NewInt(10000000) + DefaultMinExpeditedDepositTokens = DefaultMinDepositTokens.Mul(math.NewInt(DefaultMinExpeditedDepositTokensRatio)) + DefaultQuorum = sdk.NewDecWithPrec(334, 3) + DefaultThreshold = sdk.NewDecWithPrec(5, 1) + DefaultExpeditedThreshold = sdk.NewDecWithPrec(667, 3) + DefaultVetoThreshold = sdk.NewDecWithPrec(334, 3) + DefaultMinInitialDepositRatio = sdk.ZeroDec() + DefaultBurnProposalPrevote = false // set to false to replicate behavior of when this change was made (0.47) + DefaultBurnVoteQuorom = false // set to false to replicate behavior of when this change was made (0.47) + DefaultBurnVoteVeto = true // set to true to replicate behavior of when this change was made (0.47) ) // Deprecated: NewDepositParams creates a new DepositParams object @@ -52,15 +56,18 @@ func NewVotingParams(votingPeriod *time.Duration) VotingParams { // NewParams creates a new Params instance with given values. func NewParams( - minDeposit sdk.Coins, maxDepositPeriod, votingPeriod time.Duration, - quorum, threshold, vetoThreshold, minInitialDepositRatio string, burnProposalDeposit, burnVoteQuorum, burnVoteVeto bool, + minDeposit, expeditedMinDeposit sdk.Coins, maxDepositPeriod, votingPeriod, expeditedVotingPeriod time.Duration, + quorum, threshold, expeditedThreshold, vetoThreshold, minInitialDepositRatio string, burnProposalDeposit, burnVoteQuorum, burnVoteVeto bool, ) Params { return Params{ MinDeposit: minDeposit, + ExpeditedMinDeposit: expeditedMinDeposit, MaxDepositPeriod: &maxDepositPeriod, VotingPeriod: &votingPeriod, + ExpeditedVotingPeriod: &expeditedVotingPeriod, Quorum: quorum, Threshold: threshold, + ExpeditedThreshold: expeditedThreshold, VetoThreshold: vetoThreshold, MinInitialDepositRatio: minInitialDepositRatio, BurnProposalDepositPrevote: burnProposalDeposit, @@ -73,10 +80,13 @@ func NewParams( func DefaultParams() Params { return NewParams( sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, DefaultMinDepositTokens)), + sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, DefaultMinExpeditedDepositTokens)), DefaultPeriod, DefaultPeriod, + DefaultExpeditedPeriod, DefaultQuorum.String(), DefaultThreshold.String(), + DefaultExpeditedThreshold.String(), DefaultVetoThreshold.String(), DefaultMinInitialDepositRatio.String(), DefaultBurnProposalPrevote, @@ -87,10 +97,17 @@ func DefaultParams() Params { // ValidateBasic performs basic validation on governance parameters. func (p Params) ValidateBasic() error { - if minDeposit := sdk.Coins(p.MinDeposit); minDeposit.Empty() || !minDeposit.IsValid() { + minDeposit := sdk.Coins(p.MinDeposit) + if minDeposit.Empty() || !minDeposit.IsValid() { return fmt.Errorf("invalid minimum deposit: %s", minDeposit) } + if minExpeditedDeposit := sdk.Coins(p.ExpeditedMinDeposit); minExpeditedDeposit.Empty() || !minExpeditedDeposit.IsValid() { + return fmt.Errorf("invalid expedited minimum deposit: %s", minExpeditedDeposit) + } else if minExpeditedDeposit.IsAllLTE(minDeposit) { + return fmt.Errorf("expedited minimum deposit must be greater than minimum deposit: %s", minExpeditedDeposit) + } + if p.MaxDepositPeriod == nil { return fmt.Errorf("maximum deposit period must not be nil: %d", p.MaxDepositPeriod) } @@ -121,6 +138,20 @@ func (p Params) ValidateBasic() error { return fmt.Errorf("vote threshold too large: %s", threshold) } + expeditedThreshold, err := sdk.NewDecFromStr(p.ExpeditedThreshold) + if err != nil { + return fmt.Errorf("invalid expedited threshold string: %w", err) + } + if !threshold.IsPositive() { + return fmt.Errorf("expedited vote threshold must be positive: %s", threshold) + } + if threshold.GT(math.LegacyOneDec()) { + return fmt.Errorf("expedited vote threshold too large: %s", threshold) + } + if expeditedThreshold.LTE(threshold) { + return fmt.Errorf("expedited vote threshold %s, must be greater than the regular threshold %s", expeditedThreshold, threshold) + } + vetoThreshold, err := sdk.NewDecFromStr(p.VetoThreshold) if err != nil { return fmt.Errorf("invalid vetoThreshold string: %w", err) @@ -135,10 +166,19 @@ func (p Params) ValidateBasic() error { if p.VotingPeriod == nil { return fmt.Errorf("voting period must not be nil: %d", p.VotingPeriod) } - if p.VotingPeriod.Seconds() <= 0 { return fmt.Errorf("voting period must be positive: %s", p.VotingPeriod) } + if p.ExpeditedVotingPeriod == nil { + return fmt.Errorf("expedited voting period must not be nil: %d", p.ExpeditedVotingPeriod) + } + if p.ExpeditedVotingPeriod.Seconds() <= 0 { + return fmt.Errorf("expedited voting period must be positive: %s", p.ExpeditedVotingPeriod) + } + if p.ExpeditedVotingPeriod.Seconds() >= p.VotingPeriod.Seconds() { + return fmt.Errorf("expedited voting period %s must be strictly less that the regular voting period %s", p.ExpeditedVotingPeriod, p.VotingPeriod) + } + return nil } diff --git a/x/gov/types/v1/proposal.go b/x/gov/types/v1/proposal.go index a9053a529ad9..633a0f1566d3 100644 --- a/x/gov/types/v1/proposal.go +++ b/x/gov/types/v1/proposal.go @@ -24,6 +24,11 @@ const ( // NewProposal creates a new Proposal instance func NewProposal(messages []sdk.Msg, id uint64, submitTime, depositEndTime time.Time, metadata, title, summary string, proposer sdk.AccAddress) (Proposal, error) { + return NewExpeditedProposal(messages, id, submitTime, depositEndTime, metadata, title, summary, proposer, false) +} + +// NewExpeditedProposal creates a new expedited Proposal instance +func NewExpeditedProposal(messages []sdk.Msg, id uint64, submitTime, depositEndTime time.Time, metadata, title, summary string, proposer sdk.AccAddress, expedited bool) (Proposal, error) { msgs, err := sdktx.SetMsgs(messages) if err != nil { return Proposal{}, err @@ -42,6 +47,7 @@ func NewProposal(messages []sdk.Msg, id uint64, submitTime, depositEndTime time. Title: title, Summary: summary, Proposer: proposer.String(), + Expedited: expedited, } return p, nil @@ -52,6 +58,16 @@ func (p Proposal) GetMsgs() ([]sdk.Msg, error) { return sdktx.GetMsgs(p.Messages, "sdk.MsgProposal") } +// GetMinDepositFromParams returns min expedited deposit from the gov params if +// the proposal is expedited. Otherwise, returns the regular min deposit from +// gov params. +func (p Proposal) GetMinDepositFromParams(params Params) sdk.Coins { + if p.Expedited { + return params.ExpeditedMinDeposit + } + return params.MinDeposit +} + // UnpackInterfaces implements UnpackInterfacesMessage.UnpackInterfaces func (p Proposal) UnpackInterfaces(unpacker types.AnyUnpacker) error { return sdktx.UnpackInterfaces(unpacker, p.Messages) diff --git a/x/gov/types/v1/tx.pb.go b/x/gov/types/v1/tx.pb.go index 4a27b2077ef6..a05726ac80b5 100644 --- a/x/gov/types/v1/tx.pb.go +++ b/x/gov/types/v1/tx.pb.go @@ -52,6 +52,10 @@ type MsgSubmitProposal struct { // // Since: cosmos-sdk 0.47 Summary string `protobuf:"bytes,6,opt,name=summary,proto3" json:"summary,omitempty"` + // expedited defines if the proposal is expedited or not + // + // Since: cosmos-sdk 0.50 + Expedited bool `protobuf:"varint,7,opt,name=expedited,proto3" json:"expedited,omitempty"` } func (m *MsgSubmitProposal) Reset() { *m = MsgSubmitProposal{} } @@ -129,6 +133,13 @@ func (m *MsgSubmitProposal) GetSummary() string { return "" } +func (m *MsgSubmitProposal) GetExpedited() bool { + if m != nil { + return m.Expedited + } + return false +} + // MsgSubmitProposalResponse defines the Msg/SubmitProposal response type. type MsgSubmitProposalResponse struct { // proposal_id defines the unique id of the proposal. @@ -706,64 +717,65 @@ func init() { func init() { proto.RegisterFile("cosmos/gov/v1/tx.proto", fileDescriptor_9ff8f4a63b6fc9a9) } var fileDescriptor_9ff8f4a63b6fc9a9 = []byte{ - // 908 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0xcf, 0x6f, 0x1b, 0x45, - 0x14, 0xce, 0xe6, 0x87, 0xdd, 0xbc, 0x40, 0xaa, 0x8c, 0xdc, 0x76, 0xbd, 0x2a, 0x9b, 0x74, 0x8b, - 0x50, 0x94, 0x90, 0x5d, 0x1c, 0x68, 0x85, 0x4c, 0x85, 0x54, 0x97, 0x0a, 0x21, 0x61, 0xa8, 0x5c, - 0x51, 0x24, 0x84, 0x14, 0x8d, 0xbd, 0xc3, 0x64, 0x45, 0x76, 0x67, 0xb5, 0x33, 0xb6, 0xe2, 0x1b, - 0xe2, 0xd8, 0x13, 0x7f, 0x06, 0xc7, 0x1c, 0x7a, 0xeb, 0x3f, 0x50, 0x38, 0x55, 0x9c, 0x38, 0x55, - 0x28, 0x11, 0x44, 0xe2, 0x9f, 0x00, 0xcd, 0x8f, 0x5d, 0xff, 0x58, 0xc7, 0xa9, 0x38, 0x70, 0xb1, - 0x76, 0xbe, 0xf7, 0xbd, 0x37, 0xef, 0xfb, 0xf6, 0xcd, 0xac, 0xe1, 0x7a, 0x8f, 0xf1, 0x98, 0xf1, - 0x80, 0xb2, 0x41, 0x30, 0x68, 0x04, 0xe2, 0xd8, 0x4f, 0x33, 0x26, 0x18, 0x7a, 0x53, 0xe3, 0x3e, - 0x65, 0x03, 0x7f, 0xd0, 0x70, 0x5c, 0x43, 0xeb, 0x62, 0x4e, 0x82, 0x41, 0xa3, 0x4b, 0x04, 0x6e, - 0x04, 0x3d, 0x16, 0x25, 0x9a, 0xee, 0xdc, 0x98, 0x2c, 0x23, 0xb3, 0x74, 0xa0, 0x46, 0x19, 0x65, - 0xea, 0x31, 0x90, 0x4f, 0x06, 0xad, 0x6b, 0xfa, 0x81, 0x0e, 0x98, 0xad, 0x4c, 0x88, 0x32, 0x46, - 0x8f, 0x48, 0xa0, 0x56, 0xdd, 0xfe, 0x77, 0x01, 0x4e, 0x86, 0x53, 0x9b, 0xc4, 0x9c, 0xca, 0x4d, - 0x62, 0x4e, 0x4d, 0x60, 0x03, 0xc7, 0x51, 0xc2, 0x02, 0xf5, 0xab, 0x21, 0xef, 0x97, 0x45, 0xd8, - 0x68, 0x73, 0xfa, 0xb8, 0xdf, 0x8d, 0x23, 0xf1, 0x28, 0x63, 0x29, 0xe3, 0xf8, 0x08, 0xbd, 0x07, - 0x57, 0x62, 0xc2, 0x39, 0xa6, 0x84, 0xdb, 0xd6, 0xd6, 0xd2, 0xf6, 0xda, 0x7e, 0xcd, 0xd7, 0xfb, - 0xf9, 0xf9, 0x7e, 0xfe, 0xfd, 0x64, 0xd8, 0x29, 0x58, 0xa8, 0x0d, 0x57, 0xa3, 0x24, 0x12, 0x11, - 0x3e, 0x3a, 0x08, 0x49, 0xca, 0x78, 0x24, 0xec, 0x45, 0x95, 0x58, 0xf7, 0x4d, 0xdb, 0xd2, 0x12, - 0xdf, 0x58, 0xe2, 0x3f, 0x60, 0x51, 0xd2, 0x5a, 0x7d, 0xf1, 0x6a, 0x73, 0xe1, 0xe7, 0xf3, 0x93, - 0x1d, 0xab, 0xb3, 0x6e, 0x92, 0x3f, 0xd1, 0xb9, 0xe8, 0x03, 0xb8, 0x92, 0xaa, 0x66, 0x48, 0x66, - 0x2f, 0x6d, 0x59, 0xdb, 0xab, 0x2d, 0xfb, 0xb7, 0x67, 0x7b, 0x35, 0x53, 0xea, 0x7e, 0x18, 0x66, - 0x84, 0xf3, 0xc7, 0x22, 0x8b, 0x12, 0xda, 0x29, 0x98, 0xc8, 0x91, 0x6d, 0x0b, 0x1c, 0x62, 0x81, - 0xed, 0x65, 0x99, 0xd5, 0x29, 0xd6, 0xa8, 0x06, 0x2b, 0x22, 0x12, 0x47, 0xc4, 0x5e, 0x51, 0x01, - 0xbd, 0x40, 0x36, 0x54, 0x79, 0x3f, 0x8e, 0x71, 0x36, 0xb4, 0x2b, 0x0a, 0xcf, 0x97, 0xcd, 0xc6, - 0x8f, 0xe7, 0x27, 0x3b, 0x45, 0xe9, 0xa7, 0xe7, 0x27, 0x3b, 0x9b, 0x7a, 0xf7, 0x3d, 0x1e, 0x7e, - 0x2f, 0x6d, 0x2d, 0xb9, 0xe6, 0xdd, 0x83, 0x7a, 0x09, 0xec, 0x10, 0x9e, 0xb2, 0x84, 0x13, 0xb4, - 0x09, 0x6b, 0xa9, 0xc1, 0x0e, 0xa2, 0xd0, 0xb6, 0xb6, 0xac, 0xed, 0xe5, 0x0e, 0xe4, 0xd0, 0x67, - 0xa1, 0xf7, 0xdc, 0x82, 0x5a, 0x9b, 0xd3, 0x87, 0xc7, 0xa4, 0xf7, 0x39, 0xa1, 0xb8, 0x37, 0x7c, - 0xc0, 0x12, 0x41, 0x12, 0x81, 0xbe, 0x80, 0x6a, 0x4f, 0x3f, 0xaa, 0xac, 0x0b, 0xde, 0x45, 0xcb, - 0xfd, 0xf5, 0xd9, 0x9e, 0x33, 0x31, 0x8d, 0xb9, 0xd5, 0x2a, 0xb7, 0x93, 0x17, 0x41, 0x37, 0x61, - 0x15, 0xf7, 0xc5, 0x21, 0xcb, 0x22, 0x31, 0xb4, 0x17, 0x95, 0xea, 0x11, 0xd0, 0xbc, 0x23, 0x75, - 0x8f, 0xd6, 0x52, 0xb8, 0x57, 0x12, 0x5e, 0x6a, 0xd2, 0x73, 0xe1, 0xe6, 0x2c, 0x3c, 0x97, 0xef, - 0xfd, 0x69, 0x41, 0xb5, 0xcd, 0xe9, 0x13, 0x26, 0x08, 0xba, 0x33, 0xc3, 0x8a, 0x56, 0xed, 0xef, - 0x57, 0x9b, 0xe3, 0xb0, 0x9e, 0x8b, 0x31, 0x83, 0x90, 0x0f, 0x2b, 0x03, 0x26, 0x48, 0xa6, 0x7b, - 0x9e, 0x33, 0x10, 0x9a, 0x86, 0x1a, 0x50, 0x61, 0xa9, 0x88, 0x58, 0xa2, 0x26, 0x68, 0x7d, 0x34, - 0x89, 0xda, 0x1d, 0x5f, 0xf6, 0xf2, 0xa5, 0x22, 0x74, 0x0c, 0x71, 0xde, 0x00, 0x35, 0xdf, 0x96, - 0xc6, 0xe8, 0xd2, 0xd2, 0x94, 0x6b, 0x25, 0x53, 0x64, 0x3d, 0x6f, 0x03, 0xae, 0x9a, 0xc7, 0x42, - 0xfa, 0x3f, 0x56, 0x81, 0x7d, 0x4d, 0x22, 0x7a, 0x28, 0x48, 0xf8, 0x7f, 0x59, 0xf0, 0x11, 0x54, - 0xb5, 0x32, 0x6e, 0x2f, 0xa9, 0xd3, 0x78, 0x6b, 0xca, 0x83, 0xbc, 0xa1, 0x31, 0x2f, 0xf2, 0x8c, - 0xb9, 0x66, 0xbc, 0x3b, 0x69, 0xc6, 0x5b, 0x33, 0xcd, 0xc8, 0x8b, 0x7b, 0x75, 0xb8, 0x31, 0x05, - 0x15, 0xe6, 0xfc, 0x65, 0x01, 0xb4, 0x39, 0xcd, 0xcf, 0xfd, 0x7f, 0xf4, 0xe5, 0x2e, 0xac, 0x9a, - 0x5b, 0x87, 0x5d, 0xee, 0xcd, 0x88, 0x8a, 0xee, 0x41, 0x05, 0xc7, 0xac, 0x9f, 0x08, 0x63, 0xcf, - 0xeb, 0x5d, 0x56, 0x26, 0xa7, 0xb9, 0xab, 0x8e, 0x4a, 0x51, 0x4d, 0x1a, 0x61, 0x97, 0x8c, 0x30, - 0xca, 0xbc, 0x1a, 0xa0, 0xd1, 0xaa, 0x90, 0xff, 0x5c, 0xcf, 0xc6, 0x57, 0x69, 0x88, 0x05, 0x79, - 0x84, 0x33, 0x1c, 0x73, 0x29, 0x66, 0x74, 0x3e, 0xad, 0xcb, 0xc4, 0x14, 0x54, 0xf4, 0x21, 0x54, - 0x52, 0x55, 0x41, 0x39, 0xb0, 0xb6, 0x7f, 0x6d, 0xea, 0x5d, 0xeb, 0xf2, 0x13, 0x42, 0x34, 0xbf, - 0x79, 0xb7, 0x7c, 0xe6, 0x6f, 0x8f, 0x09, 0x39, 0xce, 0x3f, 0x57, 0x53, 0x9d, 0x9a, 0xf7, 0x3a, - 0x0e, 0xe5, 0xc2, 0xf6, 0x9f, 0x2e, 0xc3, 0x52, 0x9b, 0x53, 0xf4, 0x2d, 0xac, 0x4f, 0x7d, 0x5b, - 0xb6, 0xa6, 0xda, 0x2a, 0x5d, 0x99, 0xce, 0xf6, 0x65, 0x8c, 0xe2, 0x52, 0x25, 0xb0, 0x51, 0xbe, - 0x2f, 0x6f, 0x97, 0xd3, 0x4b, 0x24, 0x67, 0xf7, 0x35, 0x48, 0xc5, 0x36, 0x1f, 0xc3, 0xb2, 0xba, - 0xb8, 0xae, 0x97, 0x93, 0x24, 0xee, 0xb8, 0xb3, 0xf1, 0x22, 0xff, 0x09, 0xbc, 0x31, 0x71, 0xfa, - 0x2f, 0xe0, 0xe7, 0x71, 0xe7, 0x9d, 0xf9, 0xf1, 0xa2, 0xee, 0xa7, 0x50, 0xcd, 0x0f, 0x4e, 0xbd, - 0x9c, 0x62, 0x42, 0xce, 0xad, 0x0b, 0x43, 0xe3, 0x0d, 0x4e, 0x8c, 0xe0, 0x8c, 0x06, 0xc7, 0xe3, - 0xb3, 0x1a, 0x9c, 0x35, 0x05, 0xce, 0xca, 0x0f, 0x72, 0xce, 0x5a, 0x0f, 0x5f, 0x9c, 0xba, 0xd6, - 0xcb, 0x53, 0xd7, 0xfa, 0xe3, 0xd4, 0xb5, 0x7e, 0x3a, 0x73, 0x17, 0x5e, 0x9e, 0xb9, 0x0b, 0xbf, - 0x9f, 0xb9, 0x0b, 0xdf, 0xec, 0xd2, 0x48, 0x1c, 0xf6, 0xbb, 0x7e, 0x8f, 0xc5, 0xe6, 0xef, 0x4d, - 0x50, 0x1a, 0x3c, 0x31, 0x4c, 0x09, 0x97, 0x7f, 0xa6, 0x2a, 0xea, 0x7b, 0xf7, 0xfe, 0xbf, 0x01, - 0x00, 0x00, 0xff, 0xff, 0xc2, 0x00, 0x8f, 0x53, 0x8c, 0x09, 0x00, 0x00, + // 924 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0xcd, 0x6f, 0x1b, 0x45, + 0x14, 0xcf, 0xe6, 0xc3, 0x4e, 0x26, 0x90, 0x2a, 0x23, 0xb7, 0x5d, 0xaf, 0xca, 0xc6, 0xdd, 0x22, + 0x64, 0x25, 0x64, 0x17, 0x07, 0x5a, 0x21, 0x53, 0x21, 0xd5, 0xa5, 0x42, 0x48, 0x18, 0xaa, 0xad, + 0x28, 0x12, 0x42, 0x8a, 0xc6, 0xde, 0x61, 0x32, 0x22, 0xbb, 0xb3, 0xda, 0x19, 0x5b, 0xf1, 0x0d, + 0x71, 0xec, 0x89, 0x3f, 0x83, 0x63, 0x0e, 0xbd, 0xf5, 0x1f, 0xa8, 0x38, 0x55, 0x9c, 0x38, 0x55, + 0x28, 0x11, 0x44, 0xe2, 0x9f, 0x00, 0xcd, 0xc7, 0xae, 0x3f, 0xd6, 0xf9, 0x10, 0x87, 0x5e, 0xac, + 0x99, 0xdf, 0xfb, 0xbd, 0x37, 0xef, 0xfd, 0xe6, 0xcd, 0x5b, 0x83, 0x1b, 0x7d, 0xc6, 0x63, 0xc6, + 0x03, 0xc2, 0x86, 0xc1, 0xb0, 0x15, 0x88, 0x23, 0x3f, 0xcd, 0x98, 0x60, 0xf0, 0x6d, 0x8d, 0xfb, + 0x84, 0x0d, 0xfd, 0x61, 0xcb, 0x71, 0x0d, 0xad, 0x87, 0x38, 0x0e, 0x86, 0xad, 0x1e, 0x16, 0xa8, + 0x15, 0xf4, 0x19, 0x4d, 0x34, 0xdd, 0xb9, 0x39, 0x1d, 0x46, 0x7a, 0x69, 0x43, 0x8d, 0x30, 0xc2, + 0xd4, 0x32, 0x90, 0x2b, 0x83, 0xd6, 0x35, 0x7d, 0x5f, 0x1b, 0xcc, 0x51, 0xc6, 0x44, 0x18, 0x23, + 0x87, 0x38, 0x50, 0xbb, 0xde, 0xe0, 0x87, 0x00, 0x25, 0xa3, 0x99, 0x43, 0x62, 0x4e, 0xe4, 0x21, + 0x31, 0x27, 0xc6, 0xb0, 0x89, 0x62, 0x9a, 0xb0, 0x40, 0xfd, 0x6a, 0xc8, 0x3b, 0x5b, 0x04, 0x9b, + 0x5d, 0x4e, 0x9e, 0x0c, 0x7a, 0x31, 0x15, 0x8f, 0x33, 0x96, 0x32, 0x8e, 0x0e, 0xe1, 0x07, 0x60, + 0x35, 0xc6, 0x9c, 0x23, 0x82, 0xb9, 0x6d, 0x35, 0x96, 0x9a, 0xeb, 0x7b, 0x35, 0x5f, 0x9f, 0xe7, + 0xe7, 0xe7, 0xf9, 0x0f, 0x92, 0x51, 0x58, 0xb0, 0x60, 0x17, 0x5c, 0xa3, 0x09, 0x15, 0x14, 0x1d, + 0xee, 0x47, 0x38, 0x65, 0x9c, 0x0a, 0x7b, 0x51, 0x39, 0xd6, 0x7d, 0x93, 0xb6, 0x94, 0xc4, 0x37, + 0x92, 0xf8, 0x0f, 0x19, 0x4d, 0x3a, 0x6b, 0x2f, 0x5f, 0x6f, 0x2d, 0xfc, 0x7a, 0x76, 0xbc, 0x6d, + 0x85, 0x1b, 0xc6, 0xf9, 0x33, 0xed, 0x0b, 0x3f, 0x02, 0xab, 0xa9, 0x4a, 0x06, 0x67, 0xf6, 0x52, + 0xc3, 0x6a, 0xae, 0x75, 0xec, 0xdf, 0x9f, 0xef, 0xd6, 0x4c, 0xa8, 0x07, 0x51, 0x94, 0x61, 0xce, + 0x9f, 0x88, 0x8c, 0x26, 0x24, 0x2c, 0x98, 0xd0, 0x91, 0x69, 0x0b, 0x14, 0x21, 0x81, 0xec, 0x65, + 0xe9, 0x15, 0x16, 0x7b, 0x58, 0x03, 0x2b, 0x82, 0x8a, 0x43, 0x6c, 0xaf, 0x28, 0x83, 0xde, 0x40, + 0x1b, 0x54, 0xf9, 0x20, 0x8e, 0x51, 0x36, 0xb2, 0x2b, 0x0a, 0xcf, 0xb7, 0xf0, 0x16, 0x58, 0xc3, + 0x47, 0x29, 0x8e, 0xa8, 0xc0, 0x91, 0x5d, 0x6d, 0x58, 0xcd, 0xd5, 0x70, 0x0c, 0xb4, 0x5b, 0x3f, + 0x9f, 0x1d, 0x6f, 0x17, 0x07, 0x3f, 0x3b, 0x3b, 0xde, 0xde, 0xd2, 0xb9, 0xed, 0xf2, 0xe8, 0x47, + 0x29, 0x7a, 0x49, 0x53, 0xef, 0x3e, 0xa8, 0x97, 0xc0, 0x10, 0xf3, 0x94, 0x25, 0x1c, 0xc3, 0x2d, + 0xb0, 0x9e, 0x1a, 0x6c, 0x9f, 0x46, 0xb6, 0xd5, 0xb0, 0x9a, 0xcb, 0x21, 0xc8, 0xa1, 0x2f, 0x22, + 0xef, 0x85, 0x05, 0x6a, 0x5d, 0x4e, 0x1e, 0x1d, 0xe1, 0xfe, 0x97, 0x98, 0xa0, 0xfe, 0xe8, 0x21, + 0x4b, 0x04, 0x4e, 0x04, 0xfc, 0x0a, 0x54, 0xfb, 0x7a, 0xa9, 0xbc, 0xce, 0xb9, 0xa9, 0x8e, 0xfb, + 0xdb, 0xf3, 0x5d, 0x67, 0xaa, 0x57, 0xf3, 0x8b, 0x50, 0xbe, 0x61, 0x1e, 0x44, 0xd6, 0x8d, 0x06, + 0xe2, 0x80, 0x65, 0x54, 0x8c, 0xec, 0x45, 0xa5, 0xc9, 0x18, 0x68, 0xdf, 0x95, 0x75, 0x8f, 0xf7, + 0xb2, 0x70, 0xaf, 0x54, 0x78, 0x29, 0x49, 0xcf, 0x05, 0xb7, 0xe6, 0xe1, 0x79, 0xf9, 0xde, 0x5f, + 0x16, 0xa8, 0x76, 0x39, 0x79, 0xca, 0x04, 0x86, 0x77, 0xe7, 0x48, 0xd1, 0xa9, 0xfd, 0xf3, 0x7a, + 0x6b, 0x12, 0xd6, 0x5d, 0x33, 0x21, 0x10, 0xf4, 0xc1, 0xca, 0x90, 0x09, 0x9c, 0xe9, 0x9c, 0x2f, + 0x68, 0x17, 0x4d, 0x83, 0x2d, 0x50, 0x61, 0xa9, 0xa0, 0x2c, 0x51, 0xfd, 0xb5, 0x31, 0xee, 0x53, + 0xad, 0x8e, 0x2f, 0x73, 0xf9, 0x5a, 0x11, 0x42, 0x43, 0xbc, 0xa8, 0xbd, 0xda, 0xef, 0x4a, 0x61, + 0x74, 0x68, 0x29, 0xca, 0xf5, 0x92, 0x28, 0x32, 0x9e, 0xb7, 0x09, 0xae, 0x99, 0x65, 0x51, 0xfa, + 0xbf, 0x56, 0x81, 0x7d, 0x8b, 0x29, 0x39, 0x10, 0x38, 0x7a, 0x53, 0x12, 0x7c, 0x02, 0xaa, 0xba, + 0x32, 0x6e, 0x2f, 0xa9, 0xb7, 0x7a, 0x7b, 0x46, 0x83, 0x3c, 0xa1, 0x09, 0x2d, 0x72, 0x8f, 0x0b, + 0xc5, 0x78, 0x7f, 0x5a, 0x8c, 0x77, 0xe6, 0x8a, 0x91, 0x07, 0xf7, 0xea, 0xe0, 0xe6, 0x0c, 0x54, + 0x88, 0xf3, 0xb7, 0x05, 0x40, 0x97, 0x93, 0x7c, 0x2a, 0xfc, 0x4f, 0x5d, 0xee, 0x81, 0x35, 0x33, + 0x93, 0xd8, 0xe5, 0xda, 0x8c, 0xa9, 0xf0, 0x3e, 0xa8, 0xa0, 0x98, 0x0d, 0x12, 0x61, 0xe4, 0xb9, + 0xda, 0x28, 0x33, 0x3e, 0xed, 0x1d, 0xf5, 0x54, 0x8a, 0x68, 0x52, 0x08, 0xbb, 0x24, 0x84, 0xa9, + 0xcc, 0xab, 0x01, 0x38, 0xde, 0x15, 0xe5, 0xbf, 0xd0, 0xbd, 0xf1, 0x4d, 0x1a, 0x21, 0x81, 0x1f, + 0xa3, 0x0c, 0xc5, 0x5c, 0x16, 0x33, 0x7e, 0x9f, 0xd6, 0x65, 0xc5, 0x14, 0x54, 0xf8, 0x31, 0xa8, + 0xa4, 0x2a, 0x82, 0x52, 0x60, 0x7d, 0xef, 0xfa, 0xcc, 0x5d, 0xeb, 0xf0, 0x53, 0x85, 0x68, 0x7e, + 0xfb, 0x5e, 0xf9, 0xcd, 0xdf, 0x99, 0x28, 0xe4, 0x28, 0xff, 0x98, 0xcd, 0x64, 0x6a, 0xee, 0x75, + 0x12, 0xca, 0x0b, 0xdb, 0x7b, 0xb6, 0x0c, 0x96, 0xba, 0x9c, 0xc0, 0xef, 0xc1, 0xc6, 0xcc, 0x97, + 0xa7, 0x31, 0x93, 0x56, 0x69, 0x64, 0x3a, 0xcd, 0xcb, 0x18, 0xc5, 0x50, 0xc5, 0x60, 0xb3, 0x3c, + 0x2f, 0xef, 0x94, 0xdd, 0x4b, 0x24, 0x67, 0xe7, 0x0a, 0xa4, 0xe2, 0x98, 0x4f, 0xc1, 0xb2, 0x1a, + 0x5c, 0x37, 0xca, 0x4e, 0x12, 0x77, 0xdc, 0xf9, 0x78, 0xe1, 0xff, 0x14, 0xbc, 0x35, 0xf5, 0xfa, + 0xcf, 0xe1, 0xe7, 0x76, 0xe7, 0xbd, 0x8b, 0xed, 0x45, 0xdc, 0xcf, 0x41, 0x35, 0x7f, 0x38, 0xf5, + 0xb2, 0x8b, 0x31, 0x39, 0xb7, 0xcf, 0x35, 0x4d, 0x26, 0x38, 0xd5, 0x82, 0x73, 0x12, 0x9c, 0xb4, + 0xcf, 0x4b, 0x70, 0x5e, 0x17, 0x38, 0x2b, 0x3f, 0xc9, 0x3e, 0xeb, 0x3c, 0x7a, 0x79, 0xe2, 0x5a, + 0xaf, 0x4e, 0x5c, 0xeb, 0xcf, 0x13, 0xd7, 0xfa, 0xe5, 0xd4, 0x5d, 0x78, 0x75, 0xea, 0x2e, 0xfc, + 0x71, 0xea, 0x2e, 0x7c, 0xb7, 0x43, 0xa8, 0x38, 0x18, 0xf4, 0xfc, 0x3e, 0x8b, 0xcd, 0x9f, 0x9f, + 0xa0, 0xd4, 0x78, 0x62, 0x94, 0x62, 0x2e, 0xff, 0x6a, 0x55, 0xd4, 0xf7, 0xee, 0xc3, 0xff, 0x02, + 0x00, 0x00, 0xff, 0xff, 0x7c, 0x5b, 0x83, 0x61, 0xaa, 0x09, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1066,6 +1078,16 @@ func (m *MsgSubmitProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.Expedited { + i-- + if m.Expedited { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x38 + } if len(m.Summary) > 0 { i -= len(m.Summary) copy(dAtA[i:], m.Summary) @@ -1547,6 +1569,9 @@ func (m *MsgSubmitProposal) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } + if m.Expedited { + n += 2 + } return n } @@ -1941,6 +1966,26 @@ func (m *MsgSubmitProposal) Unmarshal(dAtA []byte) error { } m.Summary = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Expedited", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Expedited = bool(v != 0) default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:])