diff --git a/api/cosmos/tx/v1beta1/tx.pulsar.go b/api/cosmos/tx/v1beta1/tx.pulsar.go index 3a5a2a6152..e2e32755ea 100644 --- a/api/cosmos/tx/v1beta1/tx.pulsar.go +++ b/api/cosmos/tx/v1beta1/tx.pulsar.go @@ -2608,13 +2608,64 @@ func (x *fastReflection_SignDocDirectAux) ProtoMethods() *protoiface.Methods { } } +var _ protoreflect.List = (*_SignDocEip712_5_list)(nil) + +type _SignDocEip712_5_list struct { + list *[]*anypb.Any +} + +func (x *_SignDocEip712_5_list) Len() int { + if x.list == nil { + return 0 + } + return len(*x.list) +} + +func (x *_SignDocEip712_5_list) Get(i int) protoreflect.Value { + return protoreflect.ValueOfMessage((*x.list)[i].ProtoReflect()) +} + +func (x *_SignDocEip712_5_list) Set(i int, value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*anypb.Any) + (*x.list)[i] = concreteValue +} + +func (x *_SignDocEip712_5_list) Append(value protoreflect.Value) { + valueUnwrapped := value.Message() + concreteValue := valueUnwrapped.Interface().(*anypb.Any) + *x.list = append(*x.list, concreteValue) +} + +func (x *_SignDocEip712_5_list) AppendMutable() protoreflect.Value { + v := new(anypb.Any) + *x.list = append(*x.list, v) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_SignDocEip712_5_list) Truncate(n int) { + for i := n; i < len(*x.list); i++ { + (*x.list)[i] = nil + } + *x.list = (*x.list)[:n] +} + +func (x *_SignDocEip712_5_list) NewElement() protoreflect.Value { + v := new(anypb.Any) + return protoreflect.ValueOfMessage(v.ProtoReflect()) +} + +func (x *_SignDocEip712_5_list) IsValid() bool { + return x.list != nil +} + var ( md_SignDocEip712 protoreflect.MessageDescriptor fd_SignDocEip712_chain_id protoreflect.FieldDescriptor fd_SignDocEip712_account_number protoreflect.FieldDescriptor fd_SignDocEip712_sequence protoreflect.FieldDescriptor fd_SignDocEip712_fee protoreflect.FieldDescriptor - fd_SignDocEip712_msg protoreflect.FieldDescriptor + fd_SignDocEip712_msgs protoreflect.FieldDescriptor fd_SignDocEip712_timeout_height protoreflect.FieldDescriptor fd_SignDocEip712_memo protoreflect.FieldDescriptor fd_SignDocEip712_tip protoreflect.FieldDescriptor @@ -2627,7 +2678,7 @@ func init() { fd_SignDocEip712_account_number = md_SignDocEip712.Fields().ByName("account_number") fd_SignDocEip712_sequence = md_SignDocEip712.Fields().ByName("sequence") fd_SignDocEip712_fee = md_SignDocEip712.Fields().ByName("fee") - fd_SignDocEip712_msg = md_SignDocEip712.Fields().ByName("msg") + fd_SignDocEip712_msgs = md_SignDocEip712.Fields().ByName("msgs") fd_SignDocEip712_timeout_height = md_SignDocEip712.Fields().ByName("timeout_height") fd_SignDocEip712_memo = md_SignDocEip712.Fields().ByName("memo") fd_SignDocEip712_tip = md_SignDocEip712.Fields().ByName("tip") @@ -2722,9 +2773,9 @@ func (x *fastReflection_SignDocEip712) Range(f func(protoreflect.FieldDescriptor return } } - if x.Msg != nil { - value := protoreflect.ValueOfMessage(x.Msg.ProtoReflect()) - if !f(fd_SignDocEip712_msg, value) { + if len(x.Msgs) != 0 { + value := protoreflect.ValueOfList(&_SignDocEip712_5_list{list: &x.Msgs}) + if !f(fd_SignDocEip712_msgs, value) { return } } @@ -2769,8 +2820,8 @@ func (x *fastReflection_SignDocEip712) Has(fd protoreflect.FieldDescriptor) bool return x.Sequence != uint64(0) case "cosmos.tx.v1beta1.SignDocEip712.fee": return x.Fee != nil - case "cosmos.tx.v1beta1.SignDocEip712.msg": - return x.Msg != nil + case "cosmos.tx.v1beta1.SignDocEip712.msgs": + return len(x.Msgs) != 0 case "cosmos.tx.v1beta1.SignDocEip712.timeout_height": return x.TimeoutHeight != uint64(0) case "cosmos.tx.v1beta1.SignDocEip712.memo": @@ -2801,8 +2852,8 @@ func (x *fastReflection_SignDocEip712) Clear(fd protoreflect.FieldDescriptor) { x.Sequence = uint64(0) case "cosmos.tx.v1beta1.SignDocEip712.fee": x.Fee = nil - case "cosmos.tx.v1beta1.SignDocEip712.msg": - x.Msg = nil + case "cosmos.tx.v1beta1.SignDocEip712.msgs": + x.Msgs = nil case "cosmos.tx.v1beta1.SignDocEip712.timeout_height": x.TimeoutHeight = uint64(0) case "cosmos.tx.v1beta1.SignDocEip712.memo": @@ -2837,9 +2888,12 @@ func (x *fastReflection_SignDocEip712) Get(descriptor protoreflect.FieldDescript case "cosmos.tx.v1beta1.SignDocEip712.fee": value := x.Fee return protoreflect.ValueOfMessage(value.ProtoReflect()) - case "cosmos.tx.v1beta1.SignDocEip712.msg": - value := x.Msg - return protoreflect.ValueOfMessage(value.ProtoReflect()) + case "cosmos.tx.v1beta1.SignDocEip712.msgs": + if len(x.Msgs) == 0 { + return protoreflect.ValueOfList(&_SignDocEip712_5_list{}) + } + listValue := &_SignDocEip712_5_list{list: &x.Msgs} + return protoreflect.ValueOfList(listValue) case "cosmos.tx.v1beta1.SignDocEip712.timeout_height": value := x.TimeoutHeight return protoreflect.ValueOfUint64(value) @@ -2877,8 +2931,10 @@ func (x *fastReflection_SignDocEip712) Set(fd protoreflect.FieldDescriptor, valu x.Sequence = value.Uint() case "cosmos.tx.v1beta1.SignDocEip712.fee": x.Fee = value.Message().Interface().(*Fee) - case "cosmos.tx.v1beta1.SignDocEip712.msg": - x.Msg = value.Message().Interface().(*anypb.Any) + case "cosmos.tx.v1beta1.SignDocEip712.msgs": + lv := value.List() + clv := lv.(*_SignDocEip712_5_list) + x.Msgs = *clv.list case "cosmos.tx.v1beta1.SignDocEip712.timeout_height": x.TimeoutHeight = value.Uint() case "cosmos.tx.v1beta1.SignDocEip712.memo": @@ -2910,11 +2966,12 @@ func (x *fastReflection_SignDocEip712) Mutable(fd protoreflect.FieldDescriptor) x.Fee = new(Fee) } return protoreflect.ValueOfMessage(x.Fee.ProtoReflect()) - case "cosmos.tx.v1beta1.SignDocEip712.msg": - if x.Msg == nil { - x.Msg = new(anypb.Any) + case "cosmos.tx.v1beta1.SignDocEip712.msgs": + if x.Msgs == nil { + x.Msgs = []*anypb.Any{} } - return protoreflect.ValueOfMessage(x.Msg.ProtoReflect()) + value := &_SignDocEip712_5_list{list: &x.Msgs} + return protoreflect.ValueOfList(value) case "cosmos.tx.v1beta1.SignDocEip712.tip": if x.Tip == nil { x.Tip = new(Tip) @@ -2952,9 +3009,9 @@ func (x *fastReflection_SignDocEip712) NewField(fd protoreflect.FieldDescriptor) case "cosmos.tx.v1beta1.SignDocEip712.fee": m := new(Fee) return protoreflect.ValueOfMessage(m.ProtoReflect()) - case "cosmos.tx.v1beta1.SignDocEip712.msg": - m := new(anypb.Any) - return protoreflect.ValueOfMessage(m.ProtoReflect()) + case "cosmos.tx.v1beta1.SignDocEip712.msgs": + list := []*anypb.Any{} + return protoreflect.ValueOfList(&_SignDocEip712_5_list{list: &list}) case "cosmos.tx.v1beta1.SignDocEip712.timeout_height": return protoreflect.ValueOfUint64(uint64(0)) case "cosmos.tx.v1beta1.SignDocEip712.memo": @@ -3044,9 +3101,11 @@ func (x *fastReflection_SignDocEip712) ProtoMethods() *protoiface.Methods { l = options.Size(x.Fee) n += 1 + l + runtime.Sov(uint64(l)) } - if x.Msg != nil { - l = options.Size(x.Msg) - n += 1 + l + runtime.Sov(uint64(l)) + if len(x.Msgs) > 0 { + for _, e := range x.Msgs { + l = options.Size(e) + n += 1 + l + runtime.Sov(uint64(l)) + } } if x.TimeoutHeight != 0 { n += 1 + runtime.Sov(uint64(x.TimeoutHeight)) @@ -3114,19 +3173,21 @@ func (x *fastReflection_SignDocEip712) ProtoMethods() *protoiface.Methods { i-- dAtA[i] = 0x30 } - if x.Msg != nil { - encoded, err := options.Marshal(x.Msg) - if err != nil { - return protoiface.MarshalOutput{ - NoUnkeyedLiterals: input.NoUnkeyedLiterals, - Buf: input.Buf, - }, err + if len(x.Msgs) > 0 { + for iNdEx := len(x.Msgs) - 1; iNdEx >= 0; iNdEx-- { + encoded, err := options.Marshal(x.Msgs[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] = 0x2a } - i -= len(encoded) - copy(dAtA[i:], encoded) - i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded))) - i-- - dAtA[i] = 0x2a } if x.Fee != nil { encoded, err := options.Marshal(x.Fee) @@ -3301,7 +3362,7 @@ func (x *fastReflection_SignDocEip712) ProtoMethods() *protoiface.Methods { iNdEx = postIndex case 5: if wireType != 2 { - return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Msg", wireType) + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Msgs", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -3328,10 +3389,8 @@ func (x *fastReflection_SignDocEip712) ProtoMethods() *protoiface.Methods { if postIndex > l { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF } - if x.Msg == nil { - x.Msg = &anypb.Any{} - } - if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Msg); err != nil { + x.Msgs = append(x.Msgs, &anypb.Any{}) + if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Msgs[len(x.Msgs)-1]); err != nil { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err } iNdEx = postIndex @@ -9248,8 +9307,7 @@ func (x *SignDocDirectAux) GetTip() *Tip { return nil } -// SignDocEIP712 is the type used for generating sign bytes for -// SIGN_MODE_EIP_712. +// SignDocEIP712 is the type used for generating sign bytes for SIGN_MODE_EIP_712. type SignDocEip712 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -9269,7 +9327,7 @@ type SignDocEip712 struct { // of the signers. This can be estimated via simulation. Fee *Fee `protobuf:"bytes,4,opt,name=fee,proto3" json:"fee,omitempty"` // msg is the msg in the EIP712 transaction. - Msg *anypb.Any `protobuf:"bytes,5,opt,name=msg,proto3" json:"msg,omitempty"` + Msgs []*anypb.Any `protobuf:"bytes,5,rep,name=msgs,proto3" json:"msgs,omitempty"` // timeout_height is the transaction's timeout height (if set). TimeoutHeight uint64 `protobuf:"varint,6,opt,name=timeout_height,json=timeoutHeight,proto3" json:"timeout_height,omitempty"` // memo is any arbitrary note/comment to be added to the transaction. @@ -9333,9 +9391,9 @@ func (x *SignDocEip712) GetFee() *Fee { return nil } -func (x *SignDocEip712) GetMsg() *anypb.Any { +func (x *SignDocEip712) GetMsgs() []*anypb.Any { if x != nil { - return x.Msg + return x.Msgs } return nil } @@ -9986,7 +10044,7 @@ var file_cosmos_tx_v1beta1_tx_proto_rawDesc = []byte{ 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x03, 0x74, 0x69, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x74, 0x78, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, - 0x2e, 0x54, 0x69, 0x70, 0x52, 0x03, 0x74, 0x69, 0x70, 0x22, 0xf8, 0x02, 0x0a, 0x0d, 0x53, 0x69, + 0x2e, 0x54, 0x69, 0x70, 0x52, 0x03, 0x74, 0x69, 0x70, 0x22, 0xfa, 0x02, 0x0a, 0x0d, 0x53, 0x69, 0x67, 0x6e, 0x44, 0x6f, 0x63, 0x45, 0x69, 0x70, 0x37, 0x31, 0x32, 0x12, 0x27, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x0c, 0xea, 0xde, 0x1f, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x52, 0x07, 0x63, 0x68, 0x61, @@ -9999,127 +10057,127 @@ var file_cosmos_tx_v1beta1_tx_proto_rawDesc = []byte{ 0x08, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2e, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x74, 0x78, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x46, 0x65, 0x65, 0x42, 0x04, - 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, 0x26, 0x0a, 0x03, 0x6d, 0x73, 0x67, - 0x18, 0x05, 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, 0x52, 0x03, 0x6d, 0x73, - 0x67, 0x12, 0x39, 0x0a, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x68, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x42, 0x12, 0xea, 0xde, 0x1f, 0x0e, 0x74, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x0d, 0x74, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1c, 0x0a, 0x04, - 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xea, 0xde, 0x1f, 0x04, - 0x6d, 0x65, 0x6d, 0x6f, 0x52, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x12, 0x28, 0x0a, 0x03, 0x74, 0x69, - 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x74, 0x78, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x69, 0x70, 0x52, - 0x03, 0x74, 0x69, 0x70, 0x22, 0x95, 0x02, 0x0a, 0x06, 0x54, 0x78, 0x42, 0x6f, 0x64, 0x79, 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, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x74, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x42, 0x0a, 0x11, - 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0xff, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x10, - 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x5a, 0x0a, 0x1e, 0x6e, 0x6f, 0x6e, 0x5f, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, - 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0xff, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, - 0x1b, 0x6e, 0x6f, 0x6e, 0x43, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x45, 0x78, 0x74, 0x65, - 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xa0, 0x01, 0x0a, - 0x08, 0x41, 0x75, 0x74, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x40, 0x0a, 0x0c, 0x73, 0x69, 0x67, - 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x74, 0x78, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, - 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x12, 0x28, 0x0a, 0x03, 0x66, - 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x2e, 0x74, 0x78, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x46, 0x65, 0x65, - 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, 0x28, 0x0a, 0x03, 0x74, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x74, 0x78, 0x2e, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x69, 0x70, 0x52, 0x03, 0x74, 0x69, 0x70, 0x22, - 0x97, 0x01, 0x0a, 0x0a, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x33, - 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 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, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, - 0x4b, 0x65, 0x79, 0x12, 0x38, 0x0a, 0x09, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x74, 0x78, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x6d, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, - 0x08, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x08, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x22, 0xe0, 0x02, 0x0a, 0x08, 0x4d, 0x6f, - 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3c, 0x0a, 0x06, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x74, 0x78, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x2e, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x06, 0x73, 0x69, - 0x6e, 0x67, 0x6c, 0x65, 0x12, 0x39, 0x0a, 0x05, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x74, 0x78, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, - 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x48, 0x00, 0x52, 0x05, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x1a, - 0x41, 0x0a, 0x06, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x12, 0x37, 0x0a, 0x04, 0x6d, 0x6f, 0x64, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x2e, 0x74, 0x78, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, - 0x64, 0x65, 0x1a, 0x90, 0x01, 0x0a, 0x05, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x12, 0x4b, 0x0a, 0x08, - 0x62, 0x69, 0x74, 0x61, 0x72, 0x72, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, - 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x6d, - 0x75, 0x6c, 0x74, 0x69, 0x73, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x42, 0x69, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x52, - 0x08, 0x62, 0x69, 0x74, 0x61, 0x72, 0x72, 0x61, 0x79, 0x12, 0x3a, 0x0a, 0x0a, 0x6d, 0x6f, 0x64, - 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x74, 0x78, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x6d, 0x6f, 0x64, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x42, 0x05, 0x0a, 0x03, 0x73, 0x75, 0x6d, 0x22, 0xeb, 0x01, 0x0a, - 0x03, 0x46, 0x65, 0x65, 0x12, 0x63, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, + 0xc8, 0xde, 0x1f, 0x00, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x6d, 0x73, 0x67, + 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, 0x6d, + 0x73, 0x67, 0x73, 0x12, 0x39, 0x0a, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x68, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x42, 0x12, 0xea, 0xde, 0x1f, + 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, + 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1c, + 0x0a, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xea, 0xde, + 0x1f, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x52, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x12, 0x28, 0x0a, 0x03, + 0x74, 0x69, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x74, 0x78, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x69, + 0x70, 0x52, 0x03, 0x74, 0x69, 0x70, 0x22, 0x95, 0x02, 0x0a, 0x06, 0x54, 0x78, 0x42, 0x6f, 0x64, + 0x79, 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, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6d, 0x65, 0x6d, 0x6f, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x6f, + 0x75, 0x74, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x42, + 0x0a, 0x11, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0xff, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, + 0x52, 0x10, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x5a, 0x0a, 0x1e, 0x6e, 0x6f, 0x6e, 0x5f, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, + 0x61, 0x6c, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xff, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, + 0x79, 0x52, 0x1b, 0x6e, 0x6f, 0x6e, 0x43, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x45, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xa0, + 0x01, 0x0a, 0x08, 0x41, 0x75, 0x74, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x40, 0x0a, 0x0c, 0x73, + 0x69, 0x67, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x74, 0x78, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x0b, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x12, 0x28, 0x0a, + 0x03, 0x66, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2e, 0x74, 0x78, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x46, + 0x65, 0x65, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, 0x28, 0x0a, 0x03, 0x74, 0x69, 0x70, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x74, 0x78, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x54, 0x69, 0x70, 0x52, 0x03, 0x74, 0x69, + 0x70, 0x22, 0x97, 0x01, 0x0a, 0x0a, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x33, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 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, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, + 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x38, 0x0a, 0x09, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x6e, + 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x74, 0x78, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x6f, 0x64, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x6d, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x08, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x22, 0xe0, 0x02, 0x0a, 0x08, + 0x4d, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3c, 0x0a, 0x06, 0x73, 0x69, 0x6e, 0x67, + 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x74, 0x78, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x6f, 0x64, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x06, + 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x12, 0x39, 0x0a, 0x05, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x74, + 0x78, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x48, 0x00, 0x52, 0x05, 0x6d, 0x75, 0x6c, 0x74, + 0x69, 0x1a, 0x41, 0x0a, 0x06, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x12, 0x37, 0x0a, 0x04, 0x6d, + 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x74, 0x78, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, + 0x6d, 0x6f, 0x64, 0x65, 0x1a, 0x90, 0x01, 0x0a, 0x05, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x12, 0x4b, + 0x0a, 0x08, 0x62, 0x69, 0x74, 0x61, 0x72, 0x72, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2f, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, + 0x2e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x73, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x42, 0x69, 0x74, 0x41, 0x72, 0x72, 0x61, + 0x79, 0x52, 0x08, 0x62, 0x69, 0x74, 0x61, 0x72, 0x72, 0x61, 0x79, 0x12, 0x3a, 0x0a, 0x0a, 0x6d, + 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x74, 0x78, 0x2e, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x6d, 0x6f, + 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x42, 0x05, 0x0a, 0x03, 0x73, 0x75, 0x6d, 0x22, 0xeb, + 0x01, 0x0a, 0x03, 0x46, 0x65, 0x65, 0x12, 0x63, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 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, 0x30, 0xc8, 0xde, 0x1f, 0x00, 0xaa, 0xdf, 0x1f, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x6f, + 0x69, 0x6e, 0x73, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x67, + 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, + 0x67, 0x61, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2e, 0x0a, 0x05, 0x70, 0x61, 0x79, 0x65, + 0x72, 0x18, 0x03, 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, 0x70, 0x61, 0x79, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x07, 0x67, 0x72, 0x61, 0x6e, + 0x74, 0x65, 0x72, 0x18, 0x04, 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, 0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x72, 0x22, 0x9c, 0x01, 0x0a, + 0x03, 0x54, 0x69, 0x70, 0x12, 0x63, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 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, 0x30, 0xc8, 0xde, 0x1f, 0x00, 0xaa, 0xdf, 0x1f, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, 0x73, 0x64, 0x6b, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x69, 0x6e, - 0x73, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x61, 0x73, - 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x67, 0x61, - 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2e, 0x0a, 0x05, 0x70, 0x61, 0x79, 0x65, 0x72, 0x18, - 0x03, 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, 0x70, 0x61, 0x79, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, - 0x72, 0x18, 0x04, 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, 0x07, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x72, 0x22, 0x9c, 0x01, 0x0a, 0x03, 0x54, - 0x69, 0x70, 0x12, 0x63, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 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, 0x30, 0xc8, - 0xde, 0x1f, 0x00, 0xaa, 0xdf, 0x1f, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2d, - 0x73, 0x64, 0x6b, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x52, - 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x06, 0x74, 0x69, 0x70, 0x70, 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, 0x06, 0x74, 0x69, 0x70, 0x70, 0x65, 0x72, 0x22, 0xce, 0x01, 0x0a, 0x0d, 0x41, 0x75, - 0x78, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x32, 0x0a, 0x07, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 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, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, - 0x3e, 0x0a, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x64, 0x6f, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x74, 0x78, 0x2e, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x44, 0x6f, 0x63, 0x44, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x41, 0x75, 0x78, 0x52, 0x07, 0x73, 0x69, 0x67, 0x6e, 0x44, 0x6f, 0x63, 0x12, - 0x37, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x74, 0x78, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x69, 0x6e, - 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x4d, 0x6f, - 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x69, 0x67, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x73, 0x69, 0x67, 0x42, 0xb4, 0x01, 0x0a, 0x15, 0x63, - 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x74, 0x78, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, - 0x2c, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x74, 0x78, 0x2f, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x3b, 0x74, 0x78, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xa2, 0x02, 0x03, - 0x43, 0x54, 0x58, 0xaa, 0x02, 0x11, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x54, 0x78, 0x2e, - 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x11, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x5c, 0x54, 0x78, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xe2, 0x02, 0x1d, 0x43, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x54, 0x78, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x5c, - 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x13, 0x43, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x54, 0x78, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, - 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x73, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x06, 0x74, 0x69, 0x70, + 0x70, 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, 0x06, 0x74, 0x69, 0x70, 0x70, 0x65, 0x72, 0x22, 0xce, 0x01, 0x0a, 0x0d, + 0x41, 0x75, 0x78, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x32, 0x0a, + 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 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, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x12, 0x3e, 0x0a, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x64, 0x6f, 0x63, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x74, 0x78, 0x2e, + 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x44, 0x6f, 0x63, 0x44, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x41, 0x75, 0x78, 0x52, 0x07, 0x73, 0x69, 0x67, 0x6e, 0x44, 0x6f, + 0x63, 0x12, 0x37, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x23, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x74, 0x78, 0x2e, 0x73, 0x69, 0x67, 0x6e, + 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x69, 0x67, 0x6e, + 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x69, + 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x73, 0x69, 0x67, 0x42, 0xb4, 0x01, 0x0a, + 0x15, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x74, 0x78, 0x2e, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, + 0x01, 0x5a, 0x2c, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x74, 0x78, 0x2f, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x3b, 0x74, 0x78, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xa2, + 0x02, 0x03, 0x43, 0x54, 0x58, 0xaa, 0x02, 0x11, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x54, + 0x78, 0x2e, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xca, 0x02, 0x11, 0x43, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x5c, 0x54, 0x78, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0xe2, 0x02, 0x1d, + 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x54, 0x78, 0x5c, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x13, + 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x54, 0x78, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -10161,7 +10219,7 @@ var file_cosmos_tx_v1beta1_tx_proto_depIdxs = []int32{ 14, // 2: cosmos.tx.v1beta1.SignDocDirectAux.public_key:type_name -> google.protobuf.Any 10, // 3: cosmos.tx.v1beta1.SignDocDirectAux.tip:type_name -> cosmos.tx.v1beta1.Tip 9, // 4: cosmos.tx.v1beta1.SignDocEip712.fee:type_name -> cosmos.tx.v1beta1.Fee - 14, // 5: cosmos.tx.v1beta1.SignDocEip712.msg:type_name -> google.protobuf.Any + 14, // 5: cosmos.tx.v1beta1.SignDocEip712.msgs:type_name -> google.protobuf.Any 10, // 6: cosmos.tx.v1beta1.SignDocEip712.tip:type_name -> cosmos.tx.v1beta1.Tip 14, // 7: cosmos.tx.v1beta1.TxBody.messages:type_name -> google.protobuf.Any 14, // 8: cosmos.tx.v1beta1.TxBody.extension_options:type_name -> google.protobuf.Any diff --git a/client/tx/factory.go b/client/tx/factory.go index 6d3311b3d3..9040178924 100644 --- a/client/tx/factory.go +++ b/client/tx/factory.go @@ -50,7 +50,7 @@ type Factory struct { func NewFactoryCLI(clientCtx client.Context, flagSet *pflag.FlagSet) (Factory, error) { signModeStr := clientCtx.SignModeStr - signMode := signing.SignMode_SIGN_MODE_UNSPECIFIED + signMode := signing.SignMode_SIGN_MODE_EIP_712 switch signModeStr { case flags.SignModeDirect: signMode = signing.SignMode_SIGN_MODE_DIRECT diff --git a/proto/cosmos/tx/v1beta1/tx.proto b/proto/cosmos/tx/v1beta1/tx.proto index ba963bcf22..ca4279380c 100644 --- a/proto/cosmos/tx/v1beta1/tx.proto +++ b/proto/cosmos/tx/v1beta1/tx.proto @@ -96,8 +96,7 @@ message SignDocDirectAux { Tip tip = 6; } -// SignDocEIP712 is the type used for generating sign bytes for -// SIGN_MODE_EIP_712. +// SignDocEIP712 is the type used for generating sign bytes for SIGN_MODE_EIP_712. message SignDocEip712 { // chain_id is the identifier of the chain this transaction targets. // It prevents signed transactions from being used on another chain by an @@ -117,7 +116,7 @@ message SignDocEip712 { Fee fee = 4 [(gogoproto.nullable) = false]; // msg is the msg in the EIP712 transaction. - google.protobuf.Any msg = 5; + repeated google.protobuf.Any msgs = 5; // timeout_height is the transaction's timeout height (if set). uint64 timeout_height = 6 [(gogoproto.jsontag) = "timeout_height"]; diff --git a/types/tx/tx.pb.go b/types/tx/tx.pb.go index 4d82a39751..4bc546be93 100644 --- a/types/tx/tx.pb.go +++ b/types/tx/tx.pb.go @@ -347,8 +347,7 @@ func (m *SignDocDirectAux) GetTip() *Tip { return nil } -// SignDocEIP712 is the type used for generating sign bytes for -// SIGN_MODE_EIP_712. +// SignDocEIP712 is the type used for generating sign bytes for SIGN_MODE_EIP_712. type SignDocEip712 struct { // chain_id is the identifier of the chain this transaction targets. // It prevents signed transactions from being used on another chain by an @@ -364,7 +363,7 @@ type SignDocEip712 struct { // of the signers. This can be estimated via simulation. Fee Fee `protobuf:"bytes,4,opt,name=fee,proto3" json:"fee"` // msg is the msg in the EIP712 transaction. - Msg *types.Any `protobuf:"bytes,5,opt,name=msg,proto3" json:"msg,omitempty"` + Msgs []*types.Any `protobuf:"bytes,5,rep,name=msgs,proto3" json:"msgs,omitempty"` // timeout_height is the transaction's timeout height (if set). TimeoutHeight uint64 `protobuf:"varint,6,opt,name=timeout_height,json=timeoutHeight,proto3" json:"timeout_height"` // memo is any arbitrary note/comment to be added to the transaction. @@ -441,9 +440,9 @@ func (m *SignDocEip712) GetFee() Fee { return Fee{} } -func (m *SignDocEip712) GetMsg() *types.Any { +func (m *SignDocEip712) GetMsgs() []*types.Any { if m != nil { - return m.Msg + return m.Msgs } return nil } @@ -1143,78 +1142,78 @@ func init() { func init() { proto.RegisterFile("cosmos/tx/v1beta1/tx.proto", fileDescriptor_96d1575ffde80842) } var fileDescriptor_96d1575ffde80842 = []byte{ - // 1127 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0xcd, 0x6f, 0x1b, 0x45, - 0x14, 0xf7, 0x7a, 0xfd, 0xf9, 0x9a, 0xf4, 0x63, 0x54, 0x21, 0xc7, 0xa1, 0x4e, 0x70, 0x95, 0xd6, - 0x97, 0xac, 0x93, 0xf4, 0xd0, 0x16, 0x21, 0xc0, 0xdb, 0xb4, 0x4a, 0x55, 0x0a, 0xd2, 0x26, 0xa7, - 0x5e, 0x56, 0xeb, 0xf5, 0x64, 0x3d, 0xaa, 0x77, 0x66, 0xd9, 0x99, 0x05, 0xfb, 0x8f, 0x40, 0xaa, - 0x90, 0x10, 0x17, 0x0e, 0x9c, 0x39, 0xf3, 0x47, 0xf4, 0x84, 0x2a, 0x4e, 0x9c, 0x42, 0x95, 0xdc, - 0x82, 0xc4, 0x99, 0x1b, 0x68, 0x66, 0x67, 0x37, 0xce, 0x97, 0x0d, 0x02, 0x71, 0xb1, 0xe7, 0xcd, - 0xfc, 0xde, 0x9b, 0xdf, 0xfb, 0x98, 0xf7, 0x16, 0x9a, 0x3e, 0xe3, 0x21, 0xe3, 0x5d, 0x31, 0xee, - 0x7e, 0xb1, 0xd9, 0xc7, 0xc2, 0xdb, 0xec, 0x8a, 0xb1, 0x15, 0xc5, 0x4c, 0x30, 0x74, 0x23, 0x3d, - 0xb3, 0xc4, 0xd8, 0xd2, 0x67, 0xcd, 0x9b, 0x01, 0x0b, 0x98, 0x3a, 0xed, 0xca, 0x55, 0x0a, 0x6c, - 0xae, 0x6b, 0x23, 0x7e, 0x3c, 0x89, 0x04, 0xeb, 0x86, 0xc9, 0x48, 0x10, 0x4e, 0x82, 0xdc, 0x62, - 0xb6, 0xa1, 0xe1, 0x2d, 0x0d, 0xef, 0x7b, 0x1c, 0xe7, 0x18, 0x9f, 0x11, 0xaa, 0xcf, 0xef, 0x9e, - 0x70, 0xe2, 0x24, 0xa0, 0x84, 0x9e, 0x58, 0xd2, 0xb2, 0x06, 0x2e, 0x05, 0x8c, 0x05, 0x23, 0xdc, - 0x55, 0x52, 0x3f, 0xd9, 0xef, 0x7a, 0x74, 0x92, 0x1d, 0xa5, 0x36, 0xdc, 0x94, 0xab, 0x76, 0x44, - 0x09, 0xed, 0xaf, 0x0c, 0x28, 0xee, 0x8d, 0xd1, 0x3a, 0x94, 0xfa, 0x6c, 0x30, 0x69, 0x18, 0xab, - 0x46, 0xe7, 0xca, 0xd6, 0x92, 0x75, 0xce, 0x59, 0x6b, 0x6f, 0x6c, 0xb3, 0xc1, 0xc4, 0x51, 0x30, - 0xf4, 0x00, 0xea, 0x5e, 0x22, 0x86, 0x2e, 0xa1, 0xfb, 0xac, 0x51, 0x54, 0x3a, 0xcb, 0x17, 0xe8, - 0xf4, 0x12, 0x31, 0x7c, 0x4a, 0xf7, 0x99, 0x53, 0xf3, 0xf4, 0x0a, 0xb5, 0x00, 0x24, 0x6d, 0x4f, - 0x24, 0x31, 0xe6, 0x0d, 0x73, 0xd5, 0xec, 0x2c, 0x38, 0x53, 0x3b, 0x6d, 0x0a, 0xe5, 0xbd, 0xb1, - 0xe3, 0x7d, 0x89, 0x6e, 0x01, 0xc8, 0xab, 0xdc, 0xfe, 0x44, 0x60, 0xae, 0x78, 0x2d, 0x38, 0x75, - 0xb9, 0x63, 0xcb, 0x0d, 0x74, 0x07, 0xae, 0xe5, 0x0c, 0x34, 0xa6, 0xa8, 0x30, 0x8b, 0xd9, 0x55, - 0x29, 0x6e, 0xde, 0x7d, 0x5f, 0x1b, 0x50, 0xdd, 0x25, 0x01, 0xdd, 0x66, 0xfe, 0x7f, 0x75, 0xe5, - 0x12, 0xd4, 0xfc, 0xa1, 0x47, 0xa8, 0x4b, 0x06, 0x0d, 0x73, 0xd5, 0xe8, 0xd4, 0x9d, 0xaa, 0x92, - 0x9f, 0x0e, 0xd0, 0x1a, 0x5c, 0xf5, 0x7c, 0x9f, 0x25, 0x54, 0xb8, 0x34, 0x09, 0xfb, 0x38, 0x6e, - 0x94, 0x56, 0x8d, 0x4e, 0xc9, 0x59, 0xd4, 0xbb, 0x9f, 0xaa, 0xcd, 0xf6, 0xef, 0x06, 0x5c, 0xd7, - 0xa4, 0xb6, 0x49, 0x8c, 0x7d, 0xd1, 0x4b, 0xc6, 0xf3, 0xd8, 0xdd, 0x03, 0x88, 0x92, 0xfe, 0x88, - 0xf8, 0xee, 0x4b, 0x3c, 0xd1, 0x39, 0xb9, 0x69, 0xa5, 0x35, 0x61, 0x65, 0x35, 0x61, 0xf5, 0xe8, - 0xc4, 0xa9, 0xa7, 0xb8, 0x67, 0x78, 0xf2, 0xef, 0xa9, 0xa2, 0x26, 0xd4, 0x38, 0xfe, 0x3c, 0xc1, - 0xd4, 0xc7, 0x8d, 0xb2, 0x02, 0xe4, 0x32, 0xea, 0x80, 0x29, 0x48, 0xd4, 0xa8, 0x28, 0x2e, 0xef, - 0x5c, 0x54, 0x53, 0x24, 0x72, 0x24, 0xa4, 0xfd, 0x47, 0x11, 0x16, 0xb5, 0xc3, 0x8f, 0x49, 0x74, - 0x7f, 0x73, 0x0b, 0xdd, 0x9d, 0x62, 0x26, 0x7d, 0x2d, 0xd9, 0x0b, 0xc7, 0x07, 0x2b, 0xf9, 0xde, - 0x09, 0xcf, 0x87, 0xe7, 0x78, 0x16, 0x15, 0x1c, 0x1d, 0x1f, 0xac, 0x9c, 0x39, 0x39, 0xcb, 0xbd, - 0x33, 0xc5, 0xdd, 0x3c, 0xb9, 0x23, 0xdb, 0x9b, 0xf2, 0xc4, 0x02, 0x73, 0x1f, 0x63, 0x15, 0x81, - 0x8b, 0x3d, 0x79, 0x82, 0xb1, 0x5d, 0x7a, 0x7d, 0xb0, 0x52, 0x70, 0x24, 0x10, 0xdd, 0x01, 0x33, - 0xe4, 0x81, 0x0a, 0xc8, 0x65, 0x59, 0x90, 0x00, 0x49, 0x5e, 0x90, 0x10, 0xb3, 0x44, 0xb8, 0x43, - 0x4c, 0x82, 0xa1, 0x50, 0xc1, 0xd2, 0xe4, 0x4f, 0x9f, 0x38, 0x8b, 0x5a, 0xde, 0x51, 0x22, 0x7a, - 0x17, 0x4a, 0x21, 0x0e, 0x59, 0xa3, 0x2a, 0xd3, 0x66, 0xd7, 0x8e, 0x0f, 0x56, 0x94, 0xec, 0xa8, - 0xdf, 0x2c, 0xf4, 0xb5, 0xf9, 0xa1, 0xff, 0xa6, 0x08, 0x95, 0xf4, 0x6d, 0xa3, 0x0d, 0xa8, 0x85, - 0x98, 0x73, 0x2f, 0x50, 0xf5, 0x65, 0x5e, 0x4a, 0x3d, 0x47, 0x21, 0xa4, 0x49, 0x14, 0x55, 0xed, - 0xa4, 0x57, 0xaf, 0x9d, 0xf3, 0xc9, 0x4c, 0x0b, 0xe7, 0x34, 0x7f, 0x1b, 0x6e, 0xe0, 0xb1, 0xc0, - 0x94, 0x13, 0x46, 0x5d, 0x16, 0x09, 0xc2, 0x28, 0x6f, 0xfc, 0x59, 0x9d, 0x71, 0xed, 0xf5, 0x1c, - 0xff, 0x59, 0x0a, 0x47, 0x2f, 0xa0, 0x45, 0x19, 0x75, 0xfd, 0x98, 0x08, 0xe2, 0x7b, 0x23, 0xf7, - 0x02, 0x83, 0xd7, 0x66, 0x18, 0x5c, 0xa6, 0x8c, 0x3e, 0xd2, 0xba, 0x8f, 0xcf, 0xd8, 0x6e, 0x7f, - 0x6f, 0x40, 0x2d, 0xeb, 0x5f, 0xe8, 0x63, 0x58, 0x90, 0x3d, 0x03, 0xc7, 0xea, 0xf1, 0x67, 0xd1, - 0xb9, 0x75, 0x41, 0x5c, 0x77, 0x15, 0x4c, 0x35, 0xbd, 0x2b, 0x3c, 0x5f, 0x73, 0x99, 0x10, 0x59, - 0x41, 0xc5, 0x59, 0x15, 0x94, 0xd6, 0x8e, 0x4e, 0x9d, 0x39, 0x3f, 0x75, 0xdf, 0x1a, 0x00, 0x27, - 0xf7, 0x9d, 0xe9, 0x00, 0xc6, 0xdf, 0xeb, 0x00, 0x0f, 0xa0, 0x1e, 0xb2, 0x01, 0x9e, 0xd7, 0xc9, - 0x9f, 0xb3, 0x01, 0x4e, 0x3b, 0x79, 0xa8, 0x57, 0xa7, 0x5e, 0xbe, 0x79, 0xfa, 0xe5, 0xb7, 0xdf, - 0x16, 0xa1, 0x96, 0xa9, 0xa0, 0x0f, 0xa0, 0xc2, 0x09, 0x0d, 0x46, 0x58, 0x73, 0x6a, 0xcf, 0xb0, - 0x6f, 0xed, 0x2a, 0xe4, 0x4e, 0xc1, 0xd1, 0x3a, 0xe8, 0x21, 0x94, 0xd5, 0xc4, 0xd4, 0xe4, 0xde, - 0x9b, 0xa5, 0xfc, 0x5c, 0x02, 0x77, 0x0a, 0x4e, 0xaa, 0xd1, 0xec, 0x41, 0x25, 0x35, 0x87, 0xee, - 0x43, 0x49, 0xf2, 0x56, 0x04, 0xae, 0x6e, 0xdd, 0x9e, 0xb2, 0x91, 0xcd, 0xd0, 0xe9, 0xfc, 0x49, - 0x7b, 0x8e, 0x52, 0x68, 0xbe, 0x32, 0xa0, 0xac, 0xac, 0xa2, 0x67, 0x50, 0xeb, 0x13, 0xe1, 0xc5, - 0xb1, 0x97, 0xc5, 0xb6, 0x9b, 0x99, 0x49, 0x27, 0xbd, 0x95, 0x0f, 0xf6, 0xcc, 0xd6, 0x23, 0x16, - 0x46, 0x9e, 0x2f, 0x6c, 0x22, 0x7a, 0x52, 0xcd, 0xc9, 0x0d, 0xa0, 0xf7, 0x01, 0xf2, 0xa8, 0xcb, - 0x29, 0x62, 0xce, 0x0b, 0x7b, 0x3d, 0x0b, 0x3b, 0xb7, 0xcb, 0x60, 0xf2, 0x24, 0x6c, 0xff, 0x66, - 0x80, 0xf9, 0x04, 0x63, 0xe4, 0x43, 0xc5, 0x0b, 0x65, 0x53, 0xd3, 0x45, 0x99, 0xcf, 0x6e, 0xf9, - 0x41, 0x31, 0x45, 0x85, 0x50, 0x7b, 0x43, 0x36, 0xa8, 0x1f, 0x7e, 0x5d, 0xe9, 0x04, 0x44, 0x0c, - 0x93, 0xbe, 0xe5, 0xb3, 0xb0, 0x9b, 0x7d, 0xac, 0xa8, 0xbf, 0x75, 0x3e, 0x78, 0xd9, 0x15, 0x93, - 0x08, 0x73, 0xa5, 0xc0, 0x1d, 0x6d, 0x1a, 0x2d, 0x43, 0x3d, 0xf0, 0xb8, 0x3b, 0x22, 0x21, 0x11, - 0x69, 0x7f, 0x75, 0x6a, 0x81, 0xc7, 0x3f, 0x91, 0x32, 0xb2, 0xa0, 0x1c, 0x79, 0x13, 0x1c, 0xa7, - 0x13, 0xc4, 0x6e, 0xfc, 0xfc, 0xe3, 0xfa, 0x4d, 0xcd, 0xa1, 0x37, 0x18, 0xc4, 0x98, 0xf3, 0x5d, - 0x11, 0x13, 0x1a, 0x38, 0x29, 0x0c, 0x6d, 0x41, 0x35, 0x88, 0x3d, 0x2a, 0xf4, 0x48, 0x99, 0xa5, - 0x91, 0x01, 0xdb, 0xdf, 0x19, 0x60, 0xee, 0x91, 0xe8, 0xff, 0xf1, 0x76, 0x03, 0x2a, 0x82, 0x44, - 0x91, 0x1e, 0x25, 0xb3, 0xf8, 0x69, 0x5c, 0xfb, 0x27, 0x03, 0x16, 0x7b, 0xc9, 0x38, 0x7d, 0x8c, - 0xdb, 0x9e, 0xf0, 0xa4, 0x93, 0x5e, 0x0a, 0x55, 0xd5, 0x32, 0xd3, 0x49, 0x0d, 0x44, 0x1f, 0x42, - 0x4d, 0x96, 0xa3, 0x3b, 0x60, 0xbe, 0xae, 0xf6, 0xdb, 0x97, 0x74, 0x98, 0xe9, 0x0f, 0x03, 0xa7, - 0xca, 0xf5, 0xf7, 0x4b, 0x56, 0xe5, 0xe6, 0x3f, 0xac, 0x72, 0x74, 0x1d, 0x4c, 0x4e, 0x02, 0x95, - 0x8d, 0x05, 0x47, 0x2e, 0xed, 0x8f, 0x5e, 0x1f, 0xb6, 0x8c, 0x37, 0x87, 0x2d, 0xe3, 0xed, 0x61, - 0xcb, 0x78, 0x75, 0xd4, 0x2a, 0xbc, 0x39, 0x6a, 0x15, 0x7e, 0x39, 0x6a, 0x15, 0x5e, 0xac, 0xcd, - 0x0f, 0x67, 0x57, 0x8c, 0xfb, 0x15, 0xd5, 0x70, 0xee, 0xfd, 0x15, 0x00, 0x00, 0xff, 0xff, 0xda, - 0xa8, 0x01, 0xa2, 0x53, 0x0b, 0x00, 0x00, + // 1131 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0xcf, 0x6f, 0x1b, 0xc5, + 0x17, 0xf7, 0x7a, 0xfd, 0xf3, 0x35, 0xe9, 0x8f, 0x51, 0xf4, 0x95, 0xe3, 0x7c, 0xeb, 0x04, 0x57, + 0xa1, 0xbe, 0x64, 0x9d, 0xa4, 0x87, 0xb6, 0x08, 0x01, 0xde, 0xa6, 0x55, 0xaa, 0x52, 0x90, 0x36, + 0x39, 0xf5, 0xb2, 0x5a, 0xaf, 0x27, 0xeb, 0x51, 0xbd, 0x33, 0xcb, 0xce, 0x2c, 0xd8, 0x7f, 0x04, + 0x52, 0x85, 0x84, 0xb8, 0x70, 0xe0, 0xcc, 0x99, 0x3f, 0xa2, 0x27, 0x54, 0x71, 0xe2, 0x14, 0xaa, + 0xe4, 0x16, 0x24, 0xfe, 0x00, 0x2e, 0xa0, 0x99, 0x9d, 0xdd, 0x38, 0xbf, 0x6c, 0x10, 0x88, 0x8b, + 0x3d, 0x6f, 0xe6, 0xf3, 0xde, 0x7c, 0xde, 0x8f, 0x79, 0x6f, 0xa1, 0xe9, 0x33, 0x1e, 0x32, 0xde, + 0x15, 0xe3, 0xee, 0xe7, 0x5b, 0x7d, 0x2c, 0xbc, 0xad, 0xae, 0x18, 0x5b, 0x51, 0xcc, 0x04, 0x43, + 0xb7, 0xd2, 0x33, 0x4b, 0x8c, 0x2d, 0x7d, 0xd6, 0x5c, 0x0a, 0x58, 0xc0, 0xd4, 0x69, 0x57, 0xae, + 0x52, 0x60, 0x73, 0x43, 0x1b, 0xf1, 0xe3, 0x49, 0x24, 0x58, 0x37, 0x4c, 0x46, 0x82, 0x70, 0x12, + 0xe4, 0x16, 0xb3, 0x0d, 0x0d, 0x6f, 0x69, 0x78, 0xdf, 0xe3, 0x38, 0xc7, 0xf8, 0x8c, 0x50, 0x7d, + 0x7e, 0xf7, 0x94, 0x13, 0x27, 0x01, 0x25, 0xf4, 0xd4, 0x92, 0x96, 0x35, 0x70, 0x39, 0x60, 0x2c, + 0x18, 0xe1, 0xae, 0x92, 0xfa, 0xc9, 0x41, 0xd7, 0xa3, 0x93, 0xec, 0x28, 0xb5, 0xe1, 0xa6, 0x5c, + 0xb5, 0x23, 0x4a, 0x68, 0x7f, 0x69, 0x40, 0x71, 0x7f, 0x8c, 0x36, 0xa0, 0xd4, 0x67, 0x83, 0x49, + 0xc3, 0x58, 0x33, 0x3a, 0xd7, 0xb6, 0x97, 0xad, 0x0b, 0xce, 0x5a, 0xfb, 0x63, 0x9b, 0x0d, 0x26, + 0x8e, 0x82, 0xa1, 0x07, 0x50, 0xf7, 0x12, 0x31, 0x74, 0x09, 0x3d, 0x60, 0x8d, 0xa2, 0xd2, 0x59, + 0xb9, 0x44, 0xa7, 0x97, 0x88, 0xe1, 0x53, 0x7a, 0xc0, 0x9c, 0x9a, 0xa7, 0x57, 0xa8, 0x05, 0x20, + 0x69, 0x7b, 0x22, 0x89, 0x31, 0x6f, 0x98, 0x6b, 0x66, 0x67, 0xc1, 0x99, 0xda, 0x69, 0x53, 0x28, + 0xef, 0x8f, 0x1d, 0xef, 0x0b, 0x74, 0x1b, 0x40, 0x5e, 0xe5, 0xf6, 0x27, 0x02, 0x73, 0xc5, 0x6b, + 0xc1, 0xa9, 0xcb, 0x1d, 0x5b, 0x6e, 0xa0, 0x77, 0xe1, 0x46, 0xce, 0x40, 0x63, 0x8a, 0x0a, 0xb3, + 0x98, 0x5d, 0x95, 0xe2, 0xe6, 0xdd, 0xf7, 0x95, 0x01, 0xd5, 0x3d, 0x12, 0xd0, 0x1d, 0xe6, 0xff, + 0x5b, 0x57, 0x2e, 0x43, 0xcd, 0x1f, 0x7a, 0x84, 0xba, 0x64, 0xd0, 0x30, 0xd7, 0x8c, 0x4e, 0xdd, + 0xa9, 0x2a, 0xf9, 0xe9, 0x00, 0xad, 0xc3, 0x75, 0xcf, 0xf7, 0x59, 0x42, 0x85, 0x4b, 0x93, 0xb0, + 0x8f, 0xe3, 0x46, 0x69, 0xcd, 0xe8, 0x94, 0x9c, 0x45, 0xbd, 0xfb, 0x89, 0xda, 0x6c, 0xff, 0x66, + 0xc0, 0x4d, 0x4d, 0x6a, 0x87, 0xc4, 0xd8, 0x17, 0xbd, 0x64, 0x3c, 0x8f, 0xdd, 0x3d, 0x80, 0x28, + 0xe9, 0x8f, 0x88, 0xef, 0xbe, 0xc4, 0x13, 0x9d, 0x93, 0x25, 0x2b, 0xad, 0x09, 0x2b, 0xab, 0x09, + 0xab, 0x47, 0x27, 0x4e, 0x3d, 0xc5, 0x3d, 0xc3, 0x93, 0x7f, 0x4e, 0x15, 0x35, 0xa1, 0xc6, 0xf1, + 0x67, 0x09, 0xa6, 0x3e, 0x6e, 0x94, 0x15, 0x20, 0x97, 0x51, 0x07, 0x4c, 0x41, 0xa2, 0x46, 0x45, + 0x71, 0xf9, 0xdf, 0x65, 0x35, 0x45, 0x22, 0x47, 0x42, 0xda, 0xbf, 0x17, 0x61, 0x51, 0x3b, 0xfc, + 0x98, 0x44, 0xf7, 0xb7, 0xb6, 0xd1, 0xdd, 0x29, 0x66, 0xd2, 0xd7, 0x92, 0xbd, 0x70, 0x72, 0xb8, + 0x9a, 0xef, 0x9d, 0xf2, 0x7c, 0x78, 0x81, 0x67, 0x51, 0xc1, 0xd1, 0xc9, 0xe1, 0xea, 0xb9, 0x93, + 0xf3, 0xdc, 0x3b, 0x53, 0xdc, 0xcd, 0xd3, 0x3b, 0xb2, 0xbd, 0x29, 0x4f, 0x2c, 0x30, 0x0f, 0x30, + 0x56, 0x11, 0xb8, 0xdc, 0x93, 0x27, 0x18, 0xdb, 0xa5, 0xd7, 0x87, 0xab, 0x05, 0x47, 0x02, 0x51, + 0x07, 0x4a, 0x21, 0x0f, 0x78, 0xa3, 0xbc, 0x66, 0x5e, 0x99, 0x06, 0x85, 0x90, 0xf4, 0x05, 0x09, + 0x31, 0x4b, 0x84, 0x3b, 0xc4, 0x24, 0x18, 0x0a, 0x15, 0x2e, 0x4d, 0xff, 0xec, 0x89, 0xb3, 0xa8, + 0xe5, 0x5d, 0x25, 0xa2, 0xff, 0x43, 0x29, 0xc4, 0x21, 0x6b, 0x54, 0x65, 0xe2, 0xec, 0xda, 0xc9, + 0xe1, 0xaa, 0x92, 0x1d, 0xf5, 0x9b, 0x05, 0xbf, 0x36, 0x3f, 0xf8, 0x5f, 0x17, 0xa1, 0x92, 0xbe, + 0x6e, 0xb4, 0x09, 0xb5, 0x10, 0x73, 0xee, 0x05, 0xaa, 0xc2, 0xae, 0xe6, 0x9e, 0xa3, 0x10, 0xd2, + 0x24, 0x8a, 0xaa, 0x7a, 0xd2, 0xab, 0xd7, 0x2f, 0xf8, 0x64, 0xa6, 0xa5, 0x73, 0x96, 0xbf, 0x0d, + 0xb7, 0xf0, 0x58, 0x60, 0xca, 0x09, 0xa3, 0x2e, 0x8b, 0x04, 0x61, 0x94, 0x37, 0xfe, 0xa8, 0xce, + 0xb8, 0xf6, 0x66, 0x8e, 0xff, 0x34, 0x85, 0xa3, 0x17, 0xd0, 0xa2, 0x8c, 0xba, 0x7e, 0x4c, 0x04, + 0xf1, 0xbd, 0x91, 0x7b, 0x89, 0xc1, 0x1b, 0x33, 0x0c, 0xae, 0x50, 0x46, 0x1f, 0x69, 0xdd, 0xc7, + 0xe7, 0x6c, 0xb7, 0xbf, 0x33, 0xa0, 0x96, 0x75, 0x30, 0xf4, 0x11, 0x2c, 0xc8, 0xae, 0x81, 0x63, + 0xf5, 0xfc, 0xb3, 0xe8, 0xdc, 0xbe, 0x24, 0xae, 0x7b, 0x0a, 0xa6, 0xda, 0xde, 0x35, 0x9e, 0xaf, + 0xb9, 0x4c, 0x88, 0xac, 0xa1, 0xe2, 0xac, 0x1a, 0xca, 0xaa, 0x47, 0xa5, 0xce, 0x9c, 0x9f, 0xba, + 0x6f, 0x0c, 0x80, 0xd3, 0xfb, 0xce, 0xf5, 0x00, 0xe3, 0xaf, 0xf5, 0x80, 0x07, 0x50, 0x0f, 0xd9, + 0x00, 0xcf, 0xeb, 0xe5, 0xcf, 0xd9, 0x00, 0xa7, 0xbd, 0x3c, 0xd4, 0xab, 0x33, 0x6f, 0xdf, 0x3c, + 0xfb, 0xf6, 0xdb, 0x6f, 0x8b, 0x50, 0xcb, 0x54, 0xd0, 0xfb, 0x50, 0xe1, 0x84, 0x06, 0x23, 0xac, + 0x39, 0xb5, 0x67, 0xd8, 0xb7, 0xf6, 0x14, 0x72, 0xb7, 0xe0, 0x68, 0x1d, 0xf4, 0x10, 0xca, 0x6a, + 0x66, 0x6a, 0x72, 0xef, 0xcc, 0x52, 0x7e, 0x2e, 0x81, 0xbb, 0x05, 0x27, 0xd5, 0x68, 0xf6, 0xa0, + 0x92, 0x9a, 0x43, 0xf7, 0xa1, 0x24, 0x79, 0x2b, 0x02, 0xd7, 0xb7, 0xef, 0x4c, 0xd9, 0xc8, 0xa6, + 0xe8, 0x74, 0xfe, 0xa4, 0x3d, 0x47, 0x29, 0x34, 0x5f, 0x19, 0x50, 0x56, 0x56, 0xd1, 0x33, 0xa8, + 0xf5, 0x89, 0xf0, 0xe2, 0xd8, 0xcb, 0x62, 0xdb, 0xcd, 0xcc, 0xa4, 0xb3, 0xde, 0xca, 0x47, 0x7b, + 0x66, 0xeb, 0x11, 0x0b, 0x23, 0xcf, 0x17, 0x36, 0x11, 0x3d, 0xa9, 0xe6, 0xe4, 0x06, 0xd0, 0x7b, + 0x00, 0x79, 0xd4, 0xe5, 0x1c, 0x31, 0xe7, 0x85, 0xbd, 0x9e, 0x85, 0x9d, 0xdb, 0x65, 0x30, 0x79, + 0x12, 0xb6, 0x7f, 0x35, 0xc0, 0x7c, 0x82, 0x31, 0xf2, 0xa1, 0xe2, 0x85, 0xb2, 0xad, 0xe9, 0xa2, + 0xcc, 0xa7, 0xb7, 0xfc, 0xa4, 0x98, 0xa2, 0x42, 0xa8, 0xbd, 0x29, 0x5b, 0xd4, 0xf7, 0xbf, 0xac, + 0x76, 0x02, 0x22, 0x86, 0x49, 0xdf, 0xf2, 0x59, 0xd8, 0xcd, 0x3e, 0x57, 0xd4, 0xdf, 0x06, 0x1f, + 0xbc, 0xec, 0x8a, 0x49, 0x84, 0xb9, 0x52, 0xe0, 0x8e, 0x36, 0x8d, 0x56, 0xa0, 0x1e, 0x78, 0xdc, + 0x1d, 0x91, 0x90, 0x88, 0xb4, 0xc3, 0x3a, 0xb5, 0xc0, 0xe3, 0x1f, 0x4b, 0x19, 0x59, 0x50, 0x8e, + 0xbc, 0x09, 0x8e, 0xd3, 0x19, 0x62, 0x37, 0x7e, 0xfa, 0x61, 0x63, 0x49, 0x73, 0xe8, 0x0d, 0x06, + 0x31, 0xe6, 0x7c, 0x4f, 0xc4, 0x84, 0x06, 0x4e, 0x0a, 0x43, 0xdb, 0x50, 0x0d, 0x62, 0x8f, 0x0a, + 0x3d, 0x54, 0x66, 0x69, 0x64, 0xc0, 0xf6, 0xb7, 0x06, 0x98, 0xfb, 0x24, 0xfa, 0x6f, 0xbc, 0xdd, + 0x84, 0x8a, 0x20, 0x51, 0xa4, 0x87, 0xc9, 0x2c, 0x7e, 0x1a, 0xd7, 0xfe, 0xd1, 0x80, 0xc5, 0x5e, + 0x32, 0x4e, 0x1f, 0xe3, 0x8e, 0x27, 0x3c, 0xe9, 0xa4, 0x97, 0x42, 0x55, 0xb5, 0xcc, 0x74, 0x52, + 0x03, 0xd1, 0x07, 0x50, 0x93, 0xe5, 0xe8, 0x0e, 0x98, 0xaf, 0xab, 0xfd, 0xce, 0x15, 0x1d, 0x66, + 0xfa, 0xd3, 0xc0, 0xa9, 0x72, 0xfd, 0x05, 0x93, 0x55, 0xb9, 0xf9, 0x37, 0xab, 0x1c, 0xdd, 0x04, + 0x93, 0x93, 0x40, 0x65, 0x63, 0xc1, 0x91, 0x4b, 0xfb, 0xc3, 0xd7, 0x47, 0x2d, 0xe3, 0xcd, 0x51, + 0xcb, 0x78, 0x7b, 0xd4, 0x32, 0x5e, 0x1d, 0xb7, 0x0a, 0x6f, 0x8e, 0x5b, 0x85, 0x9f, 0x8f, 0x5b, + 0x85, 0x17, 0xeb, 0xf3, 0xc3, 0xd9, 0x15, 0xe3, 0x7e, 0x45, 0x35, 0x9c, 0x7b, 0x7f, 0x06, 0x00, + 0x00, 0xff, 0xff, 0x71, 0x78, 0xb0, 0xa2, 0x55, 0x0b, 0x00, 0x00, } func (m *Tx) Marshal() (dAtA []byte, err error) { @@ -1483,17 +1482,19 @@ func (m *SignDocEip712) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x30 } - if m.Msg != nil { - { - size, err := m.Msg.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err + if len(m.Msgs) > 0 { + for iNdEx := len(m.Msgs) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Msgs[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0x2a } - i-- - dAtA[i] = 0x2a } { size, err := m.Fee.MarshalToSizedBuffer(dAtA[:i]) @@ -2151,9 +2152,11 @@ func (m *SignDocEip712) Size() (n int) { } l = m.Fee.Size() n += 1 + l + sovTx(uint64(l)) - if m.Msg != nil { - l = m.Msg.Size() - n += 1 + l + sovTx(uint64(l)) + if len(m.Msgs) > 0 { + for _, e := range m.Msgs { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } } if m.TimeoutHeight != 0 { n += 1 + sovTx(uint64(m.TimeoutHeight)) @@ -3208,7 +3211,7 @@ func (m *SignDocEip712) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Msg", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Msgs", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -3235,10 +3238,8 @@ func (m *SignDocEip712) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Msg == nil { - m.Msg = &types.Any{} - } - if err := m.Msg.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.Msgs = append(m.Msgs, &types.Any{}) + if err := m.Msgs[len(m.Msgs)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex diff --git a/x/auth/tx/eip712.go b/x/auth/tx/eip712.go index 2d1a1b3465..c7d2abbedd 100644 --- a/x/auth/tx/eip712.go +++ b/x/auth/tx/eip712.go @@ -92,7 +92,11 @@ func GetMsgTypes(signerData signing.SignerData, tx sdk.Tx, typedChainID *big.Int } // construct the signDoc - msgAny, _ := codectypes.NewAnyWithValue(protoTx.GetMsgs()[0]) + msgAnys := make([]*codectypes.Any, 0, len(protoTx.GetMsgs())) + for _, msg := range protoTx.GetMsgs() { + msgAny, _ := codectypes.NewAnyWithValue(msg) + msgAnys = append(msgAnys, msgAny) + } signDoc := &types.SignDocEip712{ AccountNumber: signerData.AccountNumber, Sequence: signerData.Sequence, @@ -106,27 +110,71 @@ func GetMsgTypes(signerData signing.SignerData, tx sdk.Tx, typedChainID *big.Int }, Memo: protoTx.GetMemo(), Tip: protoTx.GetTip(), - Msg: msgAny, + Msgs: msgAnys, } // extract the msg types - msgTypes, err := extractMsgTypes(protoTx.GetMsgs()[0]) - if err != nil { - return nil, nil, err - } - - // patch the msg types to include `Tip` if it's not empty - if signDoc.Tip != nil { - msgTypes["Tx"] = []apitypes.Type{ + msgTypes := apitypes.Types{ + "EIP712Domain": { + { + Name: "name", + Type: "string", + }, + { + Name: "version", + Type: "string", + }, + { + Name: "chainId", + Type: "uint256", + }, + { + Name: "verifyingContract", + Type: "string", + }, + { + Name: "salt", + Type: "string", + }, + }, + "Tx": { {Name: "account_number", Type: "uint256"}, {Name: "chain_id", Type: "uint256"}, {Name: "fee", Type: "Fee"}, {Name: "memo", Type: "string"}, - {Name: "msg", Type: "Msg"}, {Name: "sequence", Type: "uint256"}, {Name: "timeout_height", Type: "uint256"}, - {Name: "tip", Type: "Tip"}, + }, + "Fee": { + {Name: "amount", Type: "Coin[]"}, + {Name: "gas_limit", Type: "uint256"}, + {Name: "payer", Type: "string"}, + {Name: "granter", Type: "string"}, + }, + "Coin": { + {Name: "denom", Type: "string"}, + {Name: "amount", Type: "uint256"}, + }, + } + for i, msg := range protoTx.GetMsgs() { + tmpMsgTypes, err := extractMsgTypes(msg, i+1) + if err != nil { + return nil, nil, err } + + msgTypes["Tx"] = append(msgTypes["Tx"], apitypes.Type{ + Name: fmt.Sprintf("msg%d", i+1), + Type: fmt.Sprintf("Msg%d", i+1), + }) + + for key, field := range tmpMsgTypes { + msgTypes[key] = field + } + } + + // patch the msg types to include `Tip` if it's not empty + if signDoc.Tip != nil { + msgTypes["Tx"] = append(msgTypes["Tx"], apitypes.Type{Name: "tip", Type: "Tip"}) msgTypes["Tip"] = []apitypes.Type{ {Name: "amount", Type: "Coin[]"}, {Name: "tipper", Type: "string"}, @@ -177,8 +225,13 @@ func WrapTxToTypedData( delete(txData, "tip") } - // filling nil value and do other clean up - cleanTypesAndMsgValue(msgTypes, "Msg", txData["msg"].(map[string]interface{})) + // filling nil value and do the other clean up + msgData := txData["msgs"].([]interface{}) + for i := range signDoc.GetMsgs() { + txData[fmt.Sprintf("msg%d", i+1)] = msgData[i] + cleanTypesAndMsgValue(msgTypes, fmt.Sprintf("Msg%d", i+1), msgData[i].(map[string]interface{})) + } + delete(txData, "msgs") tempDomain := *domain tempDomain.ChainId = math.NewHexOrDecimal256(int64(chainID)) @@ -192,55 +245,14 @@ func WrapTxToTypedData( return typedData, nil } -func extractMsgTypes(msg sdk.Msg) (apitypes.Types, error) { +func extractMsgTypes(msg sdk.Msg, index int) (apitypes.Types, error) { rootTypes := apitypes.Types{ - "EIP712Domain": { - { - Name: "name", - Type: "string", - }, - { - Name: "version", - Type: "string", - }, - { - Name: "chainId", - Type: "uint256", - }, - { - Name: "verifyingContract", - Type: "string", - }, - { - Name: "salt", - Type: "string", - }, - }, - "Tx": { - {Name: "account_number", Type: "uint256"}, - {Name: "chain_id", Type: "uint256"}, - {Name: "fee", Type: "Fee"}, - {Name: "memo", Type: "string"}, - {Name: "msg", Type: "Msg"}, - {Name: "sequence", Type: "uint256"}, - {Name: "timeout_height", Type: "uint256"}, - }, - "Fee": { - {Name: "amount", Type: "Coin[]"}, - {Name: "gas_limit", Type: "uint256"}, - {Name: "payer", Type: "string"}, - {Name: "granter", Type: "string"}, - }, - "Coin": { - {Name: "denom", Type: "string"}, - {Name: "amount", Type: "uint256"}, - }, - "Msg": { + fmt.Sprintf("Msg%d", index): { {Name: "type", Type: "string"}, }, } - if err := walkFields(rootTypes, msg); err != nil { + if err := walkFields(rootTypes, msg, index); err != nil { return nil, err } @@ -249,7 +261,7 @@ func extractMsgTypes(msg sdk.Msg) (apitypes.Types, error) { const typeDefPrefix = "_" -func walkFields(typeMap apitypes.Types, in interface{}) (err error) { +func walkFields(typeMap apitypes.Types, in interface{}, index int) (err error) { defer doRecover(&err) t := reflect.TypeOf(in) @@ -267,7 +279,7 @@ func walkFields(typeMap apitypes.Types, in interface{}) (err error) { break } - return traverseFields(typeMap, typeDefPrefix, t, v) + return traverseFields(typeMap, typeDefPrefix, index, t, v) } type anyWrapper struct { @@ -278,6 +290,7 @@ type anyWrapper struct { func traverseFields( typeMap apitypes.Types, prefix string, + index int, t reflect.Type, v reflect.Value, ) error { @@ -349,12 +362,13 @@ func traverseFields( } if prefix == typeDefPrefix { - typeMap["Msg"] = append(typeMap["Msg"], apitypes.Type{ + tag := fmt.Sprintf("Msg%d", index) + typeMap[tag] = append(typeMap[tag], apitypes.Type{ Name: fieldName, Type: ethTyp, }) } else { - typeDef := sanitizeTypedef(prefix) + typeDef := sanitizeTypedef(prefix, index) typeMap[typeDef] = append(typeMap[typeDef], apitypes.Type{ Name: fieldName, Type: ethTyp, @@ -368,25 +382,26 @@ func traverseFields( var fieldTypedef string if isCollection { - fieldTypedef = sanitizeTypedef(fieldPrefix) + "[]" + fieldTypedef = sanitizeTypedef(fieldPrefix, index) + "[]" } else { - fieldTypedef = sanitizeTypedef(fieldPrefix) + fieldTypedef = sanitizeTypedef(fieldPrefix, index) } if prefix == typeDefPrefix { - typeMap["Msg"] = append(typeMap["Msg"], apitypes.Type{ + tag := fmt.Sprintf("Msg%d", index) + typeMap[tag] = append(typeMap[tag], apitypes.Type{ Name: fieldName, Type: fieldTypedef, }) } else { - typeDef := sanitizeTypedef(prefix) + typeDef := sanitizeTypedef(prefix, index) typeMap[typeDef] = append(typeMap[typeDef], apitypes.Type{ Name: fieldName, Type: fieldTypedef, }) } - if err := traverseFields(typeMap, fieldPrefix, fieldType, field); err != nil { + if err := traverseFields(typeMap, fieldPrefix, index, fieldType, field); err != nil { return err } continue @@ -443,17 +458,22 @@ func cleanTypesAndMsgValue(typedData apitypes.Types, primaryType string, msgValu newValue["value"] = bz newAnySet[i] = newValue } - msgValue[encName] = newAnySet + msgValue[encName[:len(encName)-3]] = newAnySet + typedData[primaryType][i].Name = encName[:len(encName)-3] + typedData[primaryType][i].Type = "TypeAny[]" + delete(typedData, encType[:len(encType)-2]) } else { anyValue := msgValue[encName[:len(encName)-3]].(map[string]interface{}) newValue := make(map[string]interface{}) bz, _ := json.Marshal(anyValue) newValue["type"] = anyValue["@type"] newValue["value"] = bz - msgValue[encName] = newValue + msgValue[encName[:len(encName)-3]] = newValue + typedData[primaryType][i].Name = encName[:len(encName)-3] + typedData[primaryType][i].Type = "TypeAny" + delete(typedData, encType) } - typedData[encType] = anyApiTypes - delete(msgValue, encName[:len(encName)-3]) + typedData["TypeAny"] = anyApiTypes continue } encValue := msgValue[encName] @@ -564,14 +584,14 @@ func unwrapField(fieldType reflect.Type, field reflect.Value, fieldName string) // // this is needed for Geth's own signing code which doesn't // tolerate complex type names -func sanitizeTypedef(str string) string { +func sanitizeTypedef(str string, index int) string { buf := new(bytes.Buffer) parts := strings.Split(str, ".") caser := cases.Title(language.English, cases.NoLower) for _, part := range parts { if part == "_" { - buf.WriteString("Type") + buf.WriteString(fmt.Sprintf("TypeMsg%d", index)) continue } diff --git a/x/auth/tx/eip712_test.go b/x/auth/tx/eip712_test.go index 568bb90cc3..e8f489dc6a 100644 --- a/x/auth/tx/eip712_test.go +++ b/x/auth/tx/eip712_test.go @@ -226,3 +226,104 @@ func TestMoreMsgs(t *testing.T) { require.NotNil(t, signBytes) } } + +func TestMultiMsgs(t *testing.T) { + _, pubkey, addr := testdata.KeyTestPubAddrEthSecp256k1(require.New(t)) + _, feePayerPubKey, feePayerAddr := testdata.KeyTestPubAddrEthSecp256k1(require.New(t)) + interfaceRegistry := codectypes.NewInterfaceRegistry() + interfaceRegistry.RegisterImplementations((*sdk.Msg)(nil), &vesting.MsgCreateVestingAccount{}) + interfaceRegistry.RegisterImplementations((*sdk.Msg)(nil), &govtypes.MsgSubmitProposal{}) + interfaceRegistry.RegisterImplementations((*sdk.Msg)(nil), &banktypes.MsgSend{}) + interfaceRegistry.RegisterImplementations((*sdk.Msg)(nil), &feegrant.MsgGrantAllowance{}) + interfaceRegistry.RegisterImplementations((*sdk.Msg)(nil), &group.MsgCreateGroup{}) + interfaceRegistry.RegisterInterface( + "cosmos.feegrant.v1beta1.FeeAllowanceI", + (*feegrant.FeeAllowanceI)(nil), + &feegrant.BasicAllowance{}, + &feegrant.PeriodicAllowance{}, + &feegrant.AllowedMsgAllowance{}, + ) + marshaler := codec.NewProtoCodec(interfaceRegistry) + + txConfig := NewTxConfig(marshaler, []signingtypes.SignMode{signingtypes.SignMode_SIGN_MODE_EIP_712}) + txBuilder := txConfig.NewTxBuilder() + + chainID := "greenfield_9000-1" + testMemo := "some test memo" + accNum, accSeq := uint64(1), uint64(2) + + sigData := &signingtypes.SingleSignatureData{ + SignMode: signingtypes.SignMode_SIGN_MODE_EIP_712, + } + sig := signingtypes.SignatureV2{ + PubKey: pubkey, + Data: sigData, + Sequence: accSeq, + } + feePayerSig := signingtypes.SignatureV2{ + PubKey: feePayerPubKey, + Data: sigData, + Sequence: accSeq, + } + + fee := txtypes.Fee{Amount: sdk.NewCoins(sdk.NewInt64Coin("atom", 150)), GasLimit: 20000} + + txBuilder.SetMemo(testMemo) + txBuilder.SetFeeAmount(fee.Amount) + txBuilder.SetFeePayer(feePayerAddr) + txBuilder.SetGasLimit(fee.GasLimit) + + err := txBuilder.SetSignatures(sig, feePayerSig) + require.NoError(t, err) + + signingData := signing.SignerData{ + Address: addr.String(), + ChainID: chainID, + AccountNumber: accNum, + Sequence: accSeq, + PubKey: pubkey, + } + modeHandler := signModeEip712Handler{} + + msgSend := banktypes.NewMsgSend(addr, addr, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(1)))) + msgProposal, _ := govtypes.NewMsgSubmitProposal( + []sdk.Msg{msgSend}, + sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdkmath.NewInt(1))), + "test", + "test", + "test", + "test", + ) + expiration := time.Now() + basic := feegrant.BasicAllowance{ + SpendLimit: nil, + Expiration: &expiration, + } + period := feegrant.PeriodicAllowance{ + Basic: basic, + Period: time.Duration(3600), + } + msgGrantAllowance1, _ := feegrant.NewMsgGrantAllowance(&basic, addr, addr) + msgGrantAllowance2, _ := feegrant.NewMsgGrantAllowance(&period, addr, addr) + msgCreateGroup := &group.MsgCreateGroup{ + Admin: addr.String(), + Members: []group.MemberRequest{ + { + Address: addr.String(), + Weight: "1", + Metadata: "metaData", + }, + }, + Metadata: "metaData", + } + + err = txBuilder.SetMsgs(msgProposal, + msgSend, + msgGrantAllowance1, + msgGrantAllowance2, + msgCreateGroup) + require.NoError(t, err) + signBytes, err := modeHandler.GetSignBytes(signingtypes.SignMode_SIGN_MODE_EIP_712, signingData, txBuilder.GetTx()) + require.NoError(t, err) + require.NotNil(t, signBytes) +}