encoding/textpb: move test protos under encoding/testprotos

These test proto definitions will be reused for encoding/jsonpb package
and hence move these one directory up.

Also, add and simplify some tests.

Change-Id: I5297546fd9b853a7fd3e72dfab2fdc7237332c9c
Reviewed-on: https://go-review.googlesource.com/c/162537
Reviewed-by: Damien Neil <dneil@google.com>
diff --git a/encoding/testprotos/pb2/test.pb.go b/encoding/testprotos/pb2/test.pb.go
new file mode 100644
index 0000000..d0f7706
--- /dev/null
+++ b/encoding/testprotos/pb2/test.pb.go
@@ -0,0 +1,2120 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: encoding/testprotos/pb2/test.proto
+
+package pb2
+
+import (
+	bytes "bytes"
+	gzip "compress/gzip"
+	proto "github.com/golang/protobuf/proto"
+	any "github.com/golang/protobuf/ptypes/any"
+	duration "github.com/golang/protobuf/ptypes/duration"
+	empty "github.com/golang/protobuf/ptypes/empty"
+	_struct "github.com/golang/protobuf/ptypes/struct"
+	timestamp "github.com/golang/protobuf/ptypes/timestamp"
+	wrappers "github.com/golang/protobuf/ptypes/wrappers"
+	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	reflect "reflect"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+type Enum int32
+
+const (
+	Enum_ONE Enum = 1
+	Enum_TWO Enum = 2
+	Enum_TEN Enum = 10
+)
+
+func (e Enum) Type() protoreflect.EnumType {
+	return xxx_Test_protoFile_enumTypes[0]
+}
+func (e Enum) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(e)
+}
+
+var Enum_name = map[int32]string{
+	1:  "ONE",
+	2:  "TWO",
+	10: "TEN",
+}
+
+var Enum_value = map[string]int32{
+	"ONE": 1,
+	"TWO": 2,
+	"TEN": 10,
+}
+
+func (x Enum) Enum() *Enum {
+	p := new(Enum)
+	*p = x
+	return p
+}
+
+func (x Enum) String() string {
+	return proto.EnumName(Enum_name, int32(x))
+}
+
+func (x *Enum) UnmarshalJSON(data []byte) error {
+	value, err := proto.UnmarshalJSONEnum(Enum_value, data, "Enum")
+	if err != nil {
+		return err
+	}
+	*x = Enum(value)
+	return nil
+}
+
+func (Enum) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_72e37deb177b50f8_gzipped, []int{0}
+}
+
+type Enums_NestedEnum int32
+
+const (
+	Enums_UNO  Enums_NestedEnum = 1
+	Enums_DOS  Enums_NestedEnum = 2
+	Enums_DIEZ Enums_NestedEnum = 10
+)
+
+func (e Enums_NestedEnum) Type() protoreflect.EnumType {
+	return xxx_Test_protoFile_enumTypes[1]
+}
+func (e Enums_NestedEnum) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(e)
+}
+
+var Enums_NestedEnum_name = map[int32]string{
+	1:  "UNO",
+	2:  "DOS",
+	10: "DIEZ",
+}
+
+var Enums_NestedEnum_value = map[string]int32{
+	"UNO":  1,
+	"DOS":  2,
+	"DIEZ": 10,
+}
+
+func (x Enums_NestedEnum) Enum() *Enums_NestedEnum {
+	p := new(Enums_NestedEnum)
+	*p = x
+	return p
+}
+
+func (x Enums_NestedEnum) String() string {
+	return proto.EnumName(Enums_NestedEnum_name, int32(x))
+}
+
+func (x *Enums_NestedEnum) UnmarshalJSON(data []byte) error {
+	value, err := proto.UnmarshalJSONEnum(Enums_NestedEnum_value, data, "Enums_NestedEnum")
+	if err != nil {
+		return err
+	}
+	*x = Enums_NestedEnum(value)
+	return nil
+}
+
+func (Enums_NestedEnum) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_72e37deb177b50f8_gzipped, []int{1, 0}
+}
+
+// Scalars contains optional scalar fields.
+type Scalars struct {
+	OptBool              *bool    `protobuf:"varint,1,opt,name=opt_bool,json=optBool" json:"opt_bool,omitempty"`
+	OptInt32             *int32   `protobuf:"varint,2,opt,name=opt_int32,json=optInt32" json:"opt_int32,omitempty"`
+	OptInt64             *int64   `protobuf:"varint,3,opt,name=opt_int64,json=optInt64" json:"opt_int64,omitempty"`
+	OptUint32            *uint32  `protobuf:"varint,4,opt,name=opt_uint32,json=optUint32" json:"opt_uint32,omitempty"`
+	OptUint64            *uint64  `protobuf:"varint,5,opt,name=opt_uint64,json=optUint64" json:"opt_uint64,omitempty"`
+	OptSint32            *int32   `protobuf:"zigzag32,6,opt,name=opt_sint32,json=optSint32" json:"opt_sint32,omitempty"`
+	OptSint64            *int64   `protobuf:"zigzag64,7,opt,name=opt_sint64,json=optSint64" json:"opt_sint64,omitempty"`
+	OptFixed32           *uint32  `protobuf:"fixed32,8,opt,name=opt_fixed32,json=optFixed32" json:"opt_fixed32,omitempty"`
+	OptFixed64           *uint64  `protobuf:"fixed64,9,opt,name=opt_fixed64,json=optFixed64" json:"opt_fixed64,omitempty"`
+	OptSfixed32          *int32   `protobuf:"fixed32,10,opt,name=opt_sfixed32,json=optSfixed32" json:"opt_sfixed32,omitempty"`
+	OptSfixed64          *int64   `protobuf:"fixed64,11,opt,name=opt_sfixed64,json=optSfixed64" json:"opt_sfixed64,omitempty"`
+	OptFloat             *float32 `protobuf:"fixed32,20,opt,name=opt_float,json=optFloat" json:"opt_float,omitempty"`
+	OptDouble            *float64 `protobuf:"fixed64,21,opt,name=opt_double,json=optDouble" json:"opt_double,omitempty"`
+	OptBytes             []byte   `protobuf:"bytes,14,opt,name=opt_bytes,json=optBytes" json:"opt_bytes,omitempty"`
+	OptString            *string  `protobuf:"bytes,13,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Scalars) ProtoReflect() protoreflect.Message {
+	return xxx_Test_protoFile_messageTypes[0].MessageOf(m)
+}
+func (m *Scalars) Reset()         { *m = Scalars{} }
+func (m *Scalars) String() string { return proto.CompactTextString(m) }
+func (*Scalars) ProtoMessage()    {}
+func (*Scalars) Descriptor() ([]byte, []int) {
+	return fileDescriptor_72e37deb177b50f8_gzipped, []int{0}
+}
+
+func (m *Scalars) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Scalars.Unmarshal(m, b)
+}
+func (m *Scalars) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Scalars.Marshal(b, m, deterministic)
+}
+func (m *Scalars) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Scalars.Merge(m, src)
+}
+func (m *Scalars) XXX_Size() int {
+	return xxx_messageInfo_Scalars.Size(m)
+}
+func (m *Scalars) XXX_DiscardUnknown() {
+	xxx_messageInfo_Scalars.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Scalars proto.InternalMessageInfo
+
+func (m *Scalars) GetOptBool() bool {
+	if m != nil && m.OptBool != nil {
+		return *m.OptBool
+	}
+	return false
+}
+
+func (m *Scalars) GetOptInt32() int32 {
+	if m != nil && m.OptInt32 != nil {
+		return *m.OptInt32
+	}
+	return 0
+}
+
+func (m *Scalars) GetOptInt64() int64 {
+	if m != nil && m.OptInt64 != nil {
+		return *m.OptInt64
+	}
+	return 0
+}
+
+func (m *Scalars) GetOptUint32() uint32 {
+	if m != nil && m.OptUint32 != nil {
+		return *m.OptUint32
+	}
+	return 0
+}
+
+func (m *Scalars) GetOptUint64() uint64 {
+	if m != nil && m.OptUint64 != nil {
+		return *m.OptUint64
+	}
+	return 0
+}
+
+func (m *Scalars) GetOptSint32() int32 {
+	if m != nil && m.OptSint32 != nil {
+		return *m.OptSint32
+	}
+	return 0
+}
+
+func (m *Scalars) GetOptSint64() int64 {
+	if m != nil && m.OptSint64 != nil {
+		return *m.OptSint64
+	}
+	return 0
+}
+
+func (m *Scalars) GetOptFixed32() uint32 {
+	if m != nil && m.OptFixed32 != nil {
+		return *m.OptFixed32
+	}
+	return 0
+}
+
+func (m *Scalars) GetOptFixed64() uint64 {
+	if m != nil && m.OptFixed64 != nil {
+		return *m.OptFixed64
+	}
+	return 0
+}
+
+func (m *Scalars) GetOptSfixed32() int32 {
+	if m != nil && m.OptSfixed32 != nil {
+		return *m.OptSfixed32
+	}
+	return 0
+}
+
+func (m *Scalars) GetOptSfixed64() int64 {
+	if m != nil && m.OptSfixed64 != nil {
+		return *m.OptSfixed64
+	}
+	return 0
+}
+
+func (m *Scalars) GetOptFloat() float32 {
+	if m != nil && m.OptFloat != nil {
+		return *m.OptFloat
+	}
+	return 0
+}
+
+func (m *Scalars) GetOptDouble() float64 {
+	if m != nil && m.OptDouble != nil {
+		return *m.OptDouble
+	}
+	return 0
+}
+
+func (m *Scalars) GetOptBytes() []byte {
+	if m != nil {
+		return m.OptBytes
+	}
+	return nil
+}
+
+func (m *Scalars) GetOptString() string {
+	if m != nil && m.OptString != nil {
+		return *m.OptString
+	}
+	return ""
+}
+
+// Message contains enum fields.
+type Enums struct {
+	OptEnum              *Enum              `protobuf:"varint,1,opt,name=opt_enum,json=optEnum,enum=pb2.Enum" json:"opt_enum,omitempty"`
+	RptEnum              []Enum             `protobuf:"varint,2,rep,name=rpt_enum,json=rptEnum,enum=pb2.Enum" json:"rpt_enum,omitempty"`
+	OptNestedEnum        *Enums_NestedEnum  `protobuf:"varint,3,opt,name=opt_nested_enum,json=optNestedEnum,enum=pb2.Enums_NestedEnum" json:"opt_nested_enum,omitempty"`
+	RptNestedEnum        []Enums_NestedEnum `protobuf:"varint,4,rep,name=rpt_nested_enum,json=rptNestedEnum,enum=pb2.Enums_NestedEnum" json:"rpt_nested_enum,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
+	XXX_unrecognized     []byte             `json:"-"`
+	XXX_sizecache        int32              `json:"-"`
+}
+
+func (m *Enums) ProtoReflect() protoreflect.Message {
+	return xxx_Test_protoFile_messageTypes[1].MessageOf(m)
+}
+func (m *Enums) Reset()         { *m = Enums{} }
+func (m *Enums) String() string { return proto.CompactTextString(m) }
+func (*Enums) ProtoMessage()    {}
+func (*Enums) Descriptor() ([]byte, []int) {
+	return fileDescriptor_72e37deb177b50f8_gzipped, []int{1}
+}
+
+func (m *Enums) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Enums.Unmarshal(m, b)
+}
+func (m *Enums) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Enums.Marshal(b, m, deterministic)
+}
+func (m *Enums) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Enums.Merge(m, src)
+}
+func (m *Enums) XXX_Size() int {
+	return xxx_messageInfo_Enums.Size(m)
+}
+func (m *Enums) XXX_DiscardUnknown() {
+	xxx_messageInfo_Enums.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Enums proto.InternalMessageInfo
+
+func (m *Enums) GetOptEnum() Enum {
+	if m != nil && m.OptEnum != nil {
+		return *m.OptEnum
+	}
+	return Enum_ONE
+}
+
+func (m *Enums) GetRptEnum() []Enum {
+	if m != nil {
+		return m.RptEnum
+	}
+	return nil
+}
+
+func (m *Enums) GetOptNestedEnum() Enums_NestedEnum {
+	if m != nil && m.OptNestedEnum != nil {
+		return *m.OptNestedEnum
+	}
+	return Enums_UNO
+}
+
+func (m *Enums) GetRptNestedEnum() []Enums_NestedEnum {
+	if m != nil {
+		return m.RptNestedEnum
+	}
+	return nil
+}
+
+// Message contains repeated fields.
+type Repeats struct {
+	RptBool              []bool    `protobuf:"varint,1,rep,name=rpt_bool,json=rptBool" json:"rpt_bool,omitempty"`
+	RptInt32             []int32   `protobuf:"varint,2,rep,name=rpt_int32,json=rptInt32" json:"rpt_int32,omitempty"`
+	RptInt64             []int64   `protobuf:"varint,3,rep,name=rpt_int64,json=rptInt64" json:"rpt_int64,omitempty"`
+	RptUint32            []uint32  `protobuf:"varint,4,rep,name=rpt_uint32,json=rptUint32" json:"rpt_uint32,omitempty"`
+	RptUint64            []uint64  `protobuf:"varint,5,rep,name=rpt_uint64,json=rptUint64" json:"rpt_uint64,omitempty"`
+	RptFloat             []float32 `protobuf:"fixed32,6,rep,name=rpt_float,json=rptFloat" json:"rpt_float,omitempty"`
+	RptDouble            []float64 `protobuf:"fixed64,7,rep,name=rpt_double,json=rptDouble" json:"rpt_double,omitempty"`
+	RptString            []string  `protobuf:"bytes,8,rep,name=rpt_string,json=rptString" json:"rpt_string,omitempty"`
+	RptBytes             [][]byte  `protobuf:"bytes,9,rep,name=rpt_bytes,json=rptBytes" json:"rpt_bytes,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
+	XXX_unrecognized     []byte    `json:"-"`
+	XXX_sizecache        int32     `json:"-"`
+}
+
+func (m *Repeats) ProtoReflect() protoreflect.Message {
+	return xxx_Test_protoFile_messageTypes[2].MessageOf(m)
+}
+func (m *Repeats) Reset()         { *m = Repeats{} }
+func (m *Repeats) String() string { return proto.CompactTextString(m) }
+func (*Repeats) ProtoMessage()    {}
+func (*Repeats) Descriptor() ([]byte, []int) {
+	return fileDescriptor_72e37deb177b50f8_gzipped, []int{2}
+}
+
+func (m *Repeats) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Repeats.Unmarshal(m, b)
+}
+func (m *Repeats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Repeats.Marshal(b, m, deterministic)
+}
+func (m *Repeats) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Repeats.Merge(m, src)
+}
+func (m *Repeats) XXX_Size() int {
+	return xxx_messageInfo_Repeats.Size(m)
+}
+func (m *Repeats) XXX_DiscardUnknown() {
+	xxx_messageInfo_Repeats.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Repeats proto.InternalMessageInfo
+
+func (m *Repeats) GetRptBool() []bool {
+	if m != nil {
+		return m.RptBool
+	}
+	return nil
+}
+
+func (m *Repeats) GetRptInt32() []int32 {
+	if m != nil {
+		return m.RptInt32
+	}
+	return nil
+}
+
+func (m *Repeats) GetRptInt64() []int64 {
+	if m != nil {
+		return m.RptInt64
+	}
+	return nil
+}
+
+func (m *Repeats) GetRptUint32() []uint32 {
+	if m != nil {
+		return m.RptUint32
+	}
+	return nil
+}
+
+func (m *Repeats) GetRptUint64() []uint64 {
+	if m != nil {
+		return m.RptUint64
+	}
+	return nil
+}
+
+func (m *Repeats) GetRptFloat() []float32 {
+	if m != nil {
+		return m.RptFloat
+	}
+	return nil
+}
+
+func (m *Repeats) GetRptDouble() []float64 {
+	if m != nil {
+		return m.RptDouble
+	}
+	return nil
+}
+
+func (m *Repeats) GetRptString() []string {
+	if m != nil {
+		return m.RptString
+	}
+	return nil
+}
+
+func (m *Repeats) GetRptBytes() [][]byte {
+	if m != nil {
+		return m.RptBytes
+	}
+	return nil
+}
+
+// Message type used as submessage.
+type Nested struct {
+	OptString            *string  `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
+	OptNested            *Nested  `protobuf:"bytes,2,opt,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Nested) ProtoReflect() protoreflect.Message {
+	return xxx_Test_protoFile_messageTypes[3].MessageOf(m)
+}
+func (m *Nested) Reset()         { *m = Nested{} }
+func (m *Nested) String() string { return proto.CompactTextString(m) }
+func (*Nested) ProtoMessage()    {}
+func (*Nested) Descriptor() ([]byte, []int) {
+	return fileDescriptor_72e37deb177b50f8_gzipped, []int{3}
+}
+
+func (m *Nested) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Nested.Unmarshal(m, b)
+}
+func (m *Nested) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Nested.Marshal(b, m, deterministic)
+}
+func (m *Nested) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Nested.Merge(m, src)
+}
+func (m *Nested) XXX_Size() int {
+	return xxx_messageInfo_Nested.Size(m)
+}
+func (m *Nested) XXX_DiscardUnknown() {
+	xxx_messageInfo_Nested.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Nested proto.InternalMessageInfo
+
+func (m *Nested) GetOptString() string {
+	if m != nil && m.OptString != nil {
+		return *m.OptString
+	}
+	return ""
+}
+
+func (m *Nested) GetOptNested() *Nested {
+	if m != nil {
+		return m.OptNested
+	}
+	return nil
+}
+
+// Message contains message and group fields.
+type Nests struct {
+	OptNested            *Nested           `protobuf:"bytes,1,opt,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
+	Optgroup             *Nests_OptGroup   `protobuf:"group,2,opt,name=OptGroup,json=optgroup" json:"optgroup,omitempty"`
+	RptNested            []*Nested         `protobuf:"bytes,4,rep,name=rpt_nested,json=rptNested" json:"rpt_nested,omitempty"`
+	Rptgroup             []*Nests_RptGroup `protobuf:"group,5,rep,name=RptGroup,json=rptgroup" json:"rptgroup,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
+	XXX_unrecognized     []byte            `json:"-"`
+	XXX_sizecache        int32             `json:"-"`
+}
+
+func (m *Nests) ProtoReflect() protoreflect.Message {
+	return xxx_Test_protoFile_messageTypes[4].MessageOf(m)
+}
+func (m *Nests) Reset()         { *m = Nests{} }
+func (m *Nests) String() string { return proto.CompactTextString(m) }
+func (*Nests) ProtoMessage()    {}
+func (*Nests) Descriptor() ([]byte, []int) {
+	return fileDescriptor_72e37deb177b50f8_gzipped, []int{4}
+}
+
+func (m *Nests) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Nests.Unmarshal(m, b)
+}
+func (m *Nests) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Nests.Marshal(b, m, deterministic)
+}
+func (m *Nests) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Nests.Merge(m, src)
+}
+func (m *Nests) XXX_Size() int {
+	return xxx_messageInfo_Nests.Size(m)
+}
+func (m *Nests) XXX_DiscardUnknown() {
+	xxx_messageInfo_Nests.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Nests proto.InternalMessageInfo
+
+func (m *Nests) GetOptNested() *Nested {
+	if m != nil {
+		return m.OptNested
+	}
+	return nil
+}
+
+func (m *Nests) GetOptgroup() *Nests_OptGroup {
+	if m != nil {
+		return m.Optgroup
+	}
+	return nil
+}
+
+func (m *Nests) GetRptNested() []*Nested {
+	if m != nil {
+		return m.RptNested
+	}
+	return nil
+}
+
+func (m *Nests) GetRptgroup() []*Nests_RptGroup {
+	if m != nil {
+		return m.Rptgroup
+	}
+	return nil
+}
+
+// Message contains required fields.
+type Requireds struct {
+	ReqBool              *bool    `protobuf:"varint,1,req,name=req_bool,json=reqBool" json:"req_bool,omitempty"`
+	ReqSfixed64          *int64   `protobuf:"fixed64,2,req,name=req_sfixed64,json=reqSfixed64" json:"req_sfixed64,omitempty"`
+	ReqDouble            *float64 `protobuf:"fixed64,3,req,name=req_double,json=reqDouble" json:"req_double,omitempty"`
+	ReqString            *string  `protobuf:"bytes,4,req,name=req_string,json=reqString" json:"req_string,omitempty"`
+	ReqEnum              *Enum    `protobuf:"varint,5,req,name=req_enum,json=reqEnum,enum=pb2.Enum" json:"req_enum,omitempty"`
+	ReqNested            *Nested  `protobuf:"bytes,6,req,name=req_nested,json=reqNested" json:"req_nested,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Requireds) ProtoReflect() protoreflect.Message {
+	return xxx_Test_protoFile_messageTypes[5].MessageOf(m)
+}
+func (m *Requireds) Reset()         { *m = Requireds{} }
+func (m *Requireds) String() string { return proto.CompactTextString(m) }
+func (*Requireds) ProtoMessage()    {}
+func (*Requireds) Descriptor() ([]byte, []int) {
+	return fileDescriptor_72e37deb177b50f8_gzipped, []int{5}
+}
+
+func (m *Requireds) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Requireds.Unmarshal(m, b)
+}
+func (m *Requireds) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Requireds.Marshal(b, m, deterministic)
+}
+func (m *Requireds) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Requireds.Merge(m, src)
+}
+func (m *Requireds) XXX_Size() int {
+	return xxx_messageInfo_Requireds.Size(m)
+}
+func (m *Requireds) XXX_DiscardUnknown() {
+	xxx_messageInfo_Requireds.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Requireds proto.InternalMessageInfo
+
+func (m *Requireds) GetReqBool() bool {
+	if m != nil && m.ReqBool != nil {
+		return *m.ReqBool
+	}
+	return false
+}
+
+func (m *Requireds) GetReqSfixed64() int64 {
+	if m != nil && m.ReqSfixed64 != nil {
+		return *m.ReqSfixed64
+	}
+	return 0
+}
+
+func (m *Requireds) GetReqDouble() float64 {
+	if m != nil && m.ReqDouble != nil {
+		return *m.ReqDouble
+	}
+	return 0
+}
+
+func (m *Requireds) GetReqString() string {
+	if m != nil && m.ReqString != nil {
+		return *m.ReqString
+	}
+	return ""
+}
+
+func (m *Requireds) GetReqEnum() Enum {
+	if m != nil && m.ReqEnum != nil {
+		return *m.ReqEnum
+	}
+	return Enum_ONE
+}
+
+func (m *Requireds) GetReqNested() *Nested {
+	if m != nil {
+		return m.ReqNested
+	}
+	return nil
+}
+
+// Message contains both required and optional fields.
+type PartialRequired struct {
+	ReqString            *string  `protobuf:"bytes,1,req,name=req_string,json=reqString" json:"req_string,omitempty"`
+	OptString            *string  `protobuf:"bytes,2,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *PartialRequired) ProtoReflect() protoreflect.Message {
+	return xxx_Test_protoFile_messageTypes[6].MessageOf(m)
+}
+func (m *PartialRequired) Reset()         { *m = PartialRequired{} }
+func (m *PartialRequired) String() string { return proto.CompactTextString(m) }
+func (*PartialRequired) ProtoMessage()    {}
+func (*PartialRequired) Descriptor() ([]byte, []int) {
+	return fileDescriptor_72e37deb177b50f8_gzipped, []int{6}
+}
+
+func (m *PartialRequired) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_PartialRequired.Unmarshal(m, b)
+}
+func (m *PartialRequired) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_PartialRequired.Marshal(b, m, deterministic)
+}
+func (m *PartialRequired) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PartialRequired.Merge(m, src)
+}
+func (m *PartialRequired) XXX_Size() int {
+	return xxx_messageInfo_PartialRequired.Size(m)
+}
+func (m *PartialRequired) XXX_DiscardUnknown() {
+	xxx_messageInfo_PartialRequired.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PartialRequired proto.InternalMessageInfo
+
+func (m *PartialRequired) GetReqString() string {
+	if m != nil && m.ReqString != nil {
+		return *m.ReqString
+	}
+	return ""
+}
+
+func (m *PartialRequired) GetOptString() string {
+	if m != nil && m.OptString != nil {
+		return *m.OptString
+	}
+	return ""
+}
+
+type NestedWithRequired struct {
+	ReqString            *string  `protobuf:"bytes,1,req,name=req_string,json=reqString" json:"req_string,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *NestedWithRequired) ProtoReflect() protoreflect.Message {
+	return xxx_Test_protoFile_messageTypes[7].MessageOf(m)
+}
+func (m *NestedWithRequired) Reset()         { *m = NestedWithRequired{} }
+func (m *NestedWithRequired) String() string { return proto.CompactTextString(m) }
+func (*NestedWithRequired) ProtoMessage()    {}
+func (*NestedWithRequired) Descriptor() ([]byte, []int) {
+	return fileDescriptor_72e37deb177b50f8_gzipped, []int{7}
+}
+
+func (m *NestedWithRequired) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_NestedWithRequired.Unmarshal(m, b)
+}
+func (m *NestedWithRequired) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_NestedWithRequired.Marshal(b, m, deterministic)
+}
+func (m *NestedWithRequired) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_NestedWithRequired.Merge(m, src)
+}
+func (m *NestedWithRequired) XXX_Size() int {
+	return xxx_messageInfo_NestedWithRequired.Size(m)
+}
+func (m *NestedWithRequired) XXX_DiscardUnknown() {
+	xxx_messageInfo_NestedWithRequired.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_NestedWithRequired proto.InternalMessageInfo
+
+func (m *NestedWithRequired) GetReqString() string {
+	if m != nil && m.ReqString != nil {
+		return *m.ReqString
+	}
+	return ""
+}
+
+type IndirectRequired struct {
+	OptNested   *NestedWithRequired            `protobuf:"bytes,1,opt,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
+	RptNested   []*NestedWithRequired          `protobuf:"bytes,2,rep,name=rpt_nested,json=rptNested" json:"rpt_nested,omitempty"`
+	StrToNested map[string]*NestedWithRequired `protobuf:"bytes,3,rep,name=str_to_nested,json=strToNested" json:"str_to_nested,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	// Types that are valid to be assigned to Union:
+	//	*IndirectRequired_OneofNested
+	Union                isIndirectRequired_Union `protobuf_oneof:"union"`
+	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
+	XXX_unrecognized     []byte                   `json:"-"`
+	XXX_sizecache        int32                    `json:"-"`
+}
+
+func (m *IndirectRequired) ProtoReflect() protoreflect.Message {
+	return xxx_Test_protoFile_messageTypes[8].MessageOf(m)
+}
+func (m *IndirectRequired) Reset()         { *m = IndirectRequired{} }
+func (m *IndirectRequired) String() string { return proto.CompactTextString(m) }
+func (*IndirectRequired) ProtoMessage()    {}
+func (*IndirectRequired) Descriptor() ([]byte, []int) {
+	return fileDescriptor_72e37deb177b50f8_gzipped, []int{8}
+}
+
+func (m *IndirectRequired) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_IndirectRequired.Unmarshal(m, b)
+}
+func (m *IndirectRequired) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_IndirectRequired.Marshal(b, m, deterministic)
+}
+func (m *IndirectRequired) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_IndirectRequired.Merge(m, src)
+}
+func (m *IndirectRequired) XXX_Size() int {
+	return xxx_messageInfo_IndirectRequired.Size(m)
+}
+func (m *IndirectRequired) XXX_DiscardUnknown() {
+	xxx_messageInfo_IndirectRequired.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_IndirectRequired proto.InternalMessageInfo
+
+func (m *IndirectRequired) GetOptNested() *NestedWithRequired {
+	if m != nil {
+		return m.OptNested
+	}
+	return nil
+}
+
+func (m *IndirectRequired) GetRptNested() []*NestedWithRequired {
+	if m != nil {
+		return m.RptNested
+	}
+	return nil
+}
+
+func (m *IndirectRequired) GetStrToNested() map[string]*NestedWithRequired {
+	if m != nil {
+		return m.StrToNested
+	}
+	return nil
+}
+
+type isIndirectRequired_Union interface {
+	isIndirectRequired_Union()
+}
+
+type IndirectRequired_OneofNested struct {
+	OneofNested *NestedWithRequired `protobuf:"bytes,4,opt,name=oneof_nested,json=oneofNested,oneof"`
+}
+
+func (*IndirectRequired_OneofNested) isIndirectRequired_Union() {}
+
+func (m *IndirectRequired) GetUnion() isIndirectRequired_Union {
+	if m != nil {
+		return m.Union
+	}
+	return nil
+}
+
+func (m *IndirectRequired) GetOneofNested() *NestedWithRequired {
+	if x, ok := m.GetUnion().(*IndirectRequired_OneofNested); ok {
+		return x.OneofNested
+	}
+	return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*IndirectRequired) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
+		(*IndirectRequired_OneofNested)(nil),
+	}
+}
+
+type Extensions struct {
+	OptString                    *string  `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
+	OptBool                      *bool    `protobuf:"varint,101,opt,name=opt_bool,json=optBool" json:"opt_bool,omitempty"`
+	OptInt32                     *int32   `protobuf:"varint,2,opt,name=opt_int32,json=optInt32" json:"opt_int32,omitempty"`
+	XXX_NoUnkeyedLiteral         struct{} `json:"-"`
+	proto.XXX_InternalExtensions `json:"-"`
+	XXX_unrecognized             []byte `json:"-"`
+	XXX_sizecache                int32  `json:"-"`
+}
+
+func (m *Extensions) ProtoReflect() protoreflect.Message {
+	return xxx_Test_protoFile_messageTypes[9].MessageOf(m)
+}
+func (m *Extensions) Reset()         { *m = Extensions{} }
+func (m *Extensions) String() string { return proto.CompactTextString(m) }
+func (*Extensions) ProtoMessage()    {}
+func (*Extensions) Descriptor() ([]byte, []int) {
+	return fileDescriptor_72e37deb177b50f8_gzipped, []int{9}
+}
+
+var extRange_Extensions = []proto.ExtensionRange{
+	{Start: 20, End: 100},
+}
+
+func (*Extensions) ExtensionRangeArray() []proto.ExtensionRange {
+	return extRange_Extensions
+}
+
+func (m *Extensions) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Extensions.Unmarshal(m, b)
+}
+func (m *Extensions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Extensions.Marshal(b, m, deterministic)
+}
+func (m *Extensions) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Extensions.Merge(m, src)
+}
+func (m *Extensions) XXX_Size() int {
+	return xxx_messageInfo_Extensions.Size(m)
+}
+func (m *Extensions) XXX_DiscardUnknown() {
+	xxx_messageInfo_Extensions.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Extensions proto.InternalMessageInfo
+
+func (m *Extensions) GetOptString() string {
+	if m != nil && m.OptString != nil {
+		return *m.OptString
+	}
+	return ""
+}
+
+func (m *Extensions) GetOptBool() bool {
+	if m != nil && m.OptBool != nil {
+		return *m.OptBool
+	}
+	return false
+}
+
+func (m *Extensions) GetOptInt32() int32 {
+	if m != nil && m.OptInt32 != nil {
+		return *m.OptInt32
+	}
+	return 0
+}
+
+type ExtensionsContainer struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ExtensionsContainer) ProtoReflect() protoreflect.Message {
+	return xxx_Test_protoFile_messageTypes[10].MessageOf(m)
+}
+func (m *ExtensionsContainer) Reset()         { *m = ExtensionsContainer{} }
+func (m *ExtensionsContainer) String() string { return proto.CompactTextString(m) }
+func (*ExtensionsContainer) ProtoMessage()    {}
+func (*ExtensionsContainer) Descriptor() ([]byte, []int) {
+	return fileDescriptor_72e37deb177b50f8_gzipped, []int{10}
+}
+
+func (m *ExtensionsContainer) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ExtensionsContainer.Unmarshal(m, b)
+}
+func (m *ExtensionsContainer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ExtensionsContainer.Marshal(b, m, deterministic)
+}
+func (m *ExtensionsContainer) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ExtensionsContainer.Merge(m, src)
+}
+func (m *ExtensionsContainer) XXX_Size() int {
+	return xxx_messageInfo_ExtensionsContainer.Size(m)
+}
+func (m *ExtensionsContainer) XXX_DiscardUnknown() {
+	xxx_messageInfo_ExtensionsContainer.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ExtensionsContainer proto.InternalMessageInfo
+
+type MessageSet struct {
+	XXX_NoUnkeyedLiteral         struct{} `json:"-"`
+	proto.XXX_InternalExtensions `protobuf_messageset:"1" json:"-"`
+	XXX_unrecognized             []byte `json:"-"`
+	XXX_sizecache                int32  `json:"-"`
+}
+
+func (m *MessageSet) ProtoReflect() protoreflect.Message {
+	return xxx_Test_protoFile_messageTypes[11].MessageOf(m)
+}
+func (m *MessageSet) Reset()         { *m = MessageSet{} }
+func (m *MessageSet) String() string { return proto.CompactTextString(m) }
+func (*MessageSet) ProtoMessage()    {}
+func (*MessageSet) Descriptor() ([]byte, []int) {
+	return fileDescriptor_72e37deb177b50f8_gzipped, []int{11}
+}
+
+var extRange_MessageSet = []proto.ExtensionRange{
+	{Start: 4, End: 2147483646},
+}
+
+func (*MessageSet) ExtensionRangeArray() []proto.ExtensionRange {
+	return extRange_MessageSet
+}
+
+func (m *MessageSet) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_MessageSet.Unmarshal(m, b)
+}
+func (m *MessageSet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_MessageSet.Marshal(b, m, deterministic)
+}
+func (m *MessageSet) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MessageSet.Merge(m, src)
+}
+func (m *MessageSet) XXX_Size() int {
+	return xxx_messageInfo_MessageSet.Size(m)
+}
+func (m *MessageSet) XXX_DiscardUnknown() {
+	xxx_messageInfo_MessageSet.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MessageSet proto.InternalMessageInfo
+
+type MessageSetExtension struct {
+	OptString            *string  `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *MessageSetExtension) ProtoReflect() protoreflect.Message {
+	return xxx_Test_protoFile_messageTypes[12].MessageOf(m)
+}
+func (m *MessageSetExtension) Reset()         { *m = MessageSetExtension{} }
+func (m *MessageSetExtension) String() string { return proto.CompactTextString(m) }
+func (*MessageSetExtension) ProtoMessage()    {}
+func (*MessageSetExtension) Descriptor() ([]byte, []int) {
+	return fileDescriptor_72e37deb177b50f8_gzipped, []int{12}
+}
+
+func (m *MessageSetExtension) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_MessageSetExtension.Unmarshal(m, b)
+}
+func (m *MessageSetExtension) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_MessageSetExtension.Marshal(b, m, deterministic)
+}
+func (m *MessageSetExtension) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MessageSetExtension.Merge(m, src)
+}
+func (m *MessageSetExtension) XXX_Size() int {
+	return xxx_messageInfo_MessageSetExtension.Size(m)
+}
+func (m *MessageSetExtension) XXX_DiscardUnknown() {
+	xxx_messageInfo_MessageSetExtension.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MessageSetExtension proto.InternalMessageInfo
+
+func (m *MessageSetExtension) GetOptString() string {
+	if m != nil && m.OptString != nil {
+		return *m.OptString
+	}
+	return ""
+}
+
+type FakeMessageSet struct {
+	XXX_NoUnkeyedLiteral         struct{} `json:"-"`
+	proto.XXX_InternalExtensions `json:"-"`
+	XXX_unrecognized             []byte `json:"-"`
+	XXX_sizecache                int32  `json:"-"`
+}
+
+func (m *FakeMessageSet) ProtoReflect() protoreflect.Message {
+	return xxx_Test_protoFile_messageTypes[13].MessageOf(m)
+}
+func (m *FakeMessageSet) Reset()         { *m = FakeMessageSet{} }
+func (m *FakeMessageSet) String() string { return proto.CompactTextString(m) }
+func (*FakeMessageSet) ProtoMessage()    {}
+func (*FakeMessageSet) Descriptor() ([]byte, []int) {
+	return fileDescriptor_72e37deb177b50f8_gzipped, []int{13}
+}
+
+var extRange_FakeMessageSet = []proto.ExtensionRange{
+	{Start: 4, End: 536870911},
+}
+
+func (*FakeMessageSet) ExtensionRangeArray() []proto.ExtensionRange {
+	return extRange_FakeMessageSet
+}
+
+func (m *FakeMessageSet) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_FakeMessageSet.Unmarshal(m, b)
+}
+func (m *FakeMessageSet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_FakeMessageSet.Marshal(b, m, deterministic)
+}
+func (m *FakeMessageSet) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FakeMessageSet.Merge(m, src)
+}
+func (m *FakeMessageSet) XXX_Size() int {
+	return xxx_messageInfo_FakeMessageSet.Size(m)
+}
+func (m *FakeMessageSet) XXX_DiscardUnknown() {
+	xxx_messageInfo_FakeMessageSet.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_FakeMessageSet proto.InternalMessageInfo
+
+type FakeMessageSetExtension struct {
+	OptString            *string  `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *FakeMessageSetExtension) ProtoReflect() protoreflect.Message {
+	return xxx_Test_protoFile_messageTypes[14].MessageOf(m)
+}
+func (m *FakeMessageSetExtension) Reset()         { *m = FakeMessageSetExtension{} }
+func (m *FakeMessageSetExtension) String() string { return proto.CompactTextString(m) }
+func (*FakeMessageSetExtension) ProtoMessage()    {}
+func (*FakeMessageSetExtension) Descriptor() ([]byte, []int) {
+	return fileDescriptor_72e37deb177b50f8_gzipped, []int{14}
+}
+
+func (m *FakeMessageSetExtension) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_FakeMessageSetExtension.Unmarshal(m, b)
+}
+func (m *FakeMessageSetExtension) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_FakeMessageSetExtension.Marshal(b, m, deterministic)
+}
+func (m *FakeMessageSetExtension) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FakeMessageSetExtension.Merge(m, src)
+}
+func (m *FakeMessageSetExtension) XXX_Size() int {
+	return xxx_messageInfo_FakeMessageSetExtension.Size(m)
+}
+func (m *FakeMessageSetExtension) XXX_DiscardUnknown() {
+	xxx_messageInfo_FakeMessageSetExtension.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_FakeMessageSetExtension proto.InternalMessageInfo
+
+func (m *FakeMessageSetExtension) GetOptString() string {
+	if m != nil && m.OptString != nil {
+		return *m.OptString
+	}
+	return ""
+}
+
+// Message contains well-known type fields.
+type KnownTypes struct {
+	OptBool              *wrappers.BoolValue   `protobuf:"bytes,1,opt,name=opt_bool,json=optBool" json:"opt_bool,omitempty"`
+	OptInt32             *wrappers.Int32Value  `protobuf:"bytes,2,opt,name=opt_int32,json=optInt32" json:"opt_int32,omitempty"`
+	OptInt64             *wrappers.Int64Value  `protobuf:"bytes,3,opt,name=opt_int64,json=optInt64" json:"opt_int64,omitempty"`
+	OptUint32            *wrappers.UInt32Value `protobuf:"bytes,4,opt,name=opt_uint32,json=optUint32" json:"opt_uint32,omitempty"`
+	OptUint64            *wrappers.UInt64Value `protobuf:"bytes,5,opt,name=opt_uint64,json=optUint64" json:"opt_uint64,omitempty"`
+	OptFloat             *wrappers.FloatValue  `protobuf:"bytes,6,opt,name=opt_float,json=optFloat" json:"opt_float,omitempty"`
+	OptDouble            *wrappers.DoubleValue `protobuf:"bytes,7,opt,name=opt_double,json=optDouble" json:"opt_double,omitempty"`
+	OptString            *wrappers.StringValue `protobuf:"bytes,8,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
+	OptBytes             *wrappers.BytesValue  `protobuf:"bytes,9,opt,name=opt_bytes,json=optBytes" json:"opt_bytes,omitempty"`
+	OptDuration          *duration.Duration    `protobuf:"bytes,20,opt,name=opt_duration,json=optDuration" json:"opt_duration,omitempty"`
+	OptTimestamp         *timestamp.Timestamp  `protobuf:"bytes,21,opt,name=opt_timestamp,json=optTimestamp" json:"opt_timestamp,omitempty"`
+	OptStruct            *_struct.Struct       `protobuf:"bytes,25,opt,name=opt_struct,json=optStruct" json:"opt_struct,omitempty"`
+	OptList              *_struct.ListValue    `protobuf:"bytes,26,opt,name=opt_list,json=optList" json:"opt_list,omitempty"`
+	OptValue             *_struct.Value        `protobuf:"bytes,27,opt,name=opt_value,json=optValue" json:"opt_value,omitempty"`
+	OptEmpty             *empty.Empty          `protobuf:"bytes,30,opt,name=opt_empty,json=optEmpty" json:"opt_empty,omitempty"`
+	OptAny               *any.Any              `protobuf:"bytes,32,opt,name=opt_any,json=optAny" json:"opt_any,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
+	XXX_unrecognized     []byte                `json:"-"`
+	XXX_sizecache        int32                 `json:"-"`
+}
+
+func (m *KnownTypes) ProtoReflect() protoreflect.Message {
+	return xxx_Test_protoFile_messageTypes[15].MessageOf(m)
+}
+func (m *KnownTypes) Reset()         { *m = KnownTypes{} }
+func (m *KnownTypes) String() string { return proto.CompactTextString(m) }
+func (*KnownTypes) ProtoMessage()    {}
+func (*KnownTypes) Descriptor() ([]byte, []int) {
+	return fileDescriptor_72e37deb177b50f8_gzipped, []int{15}
+}
+
+func (m *KnownTypes) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_KnownTypes.Unmarshal(m, b)
+}
+func (m *KnownTypes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_KnownTypes.Marshal(b, m, deterministic)
+}
+func (m *KnownTypes) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_KnownTypes.Merge(m, src)
+}
+func (m *KnownTypes) XXX_Size() int {
+	return xxx_messageInfo_KnownTypes.Size(m)
+}
+func (m *KnownTypes) XXX_DiscardUnknown() {
+	xxx_messageInfo_KnownTypes.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_KnownTypes proto.InternalMessageInfo
+
+func (m *KnownTypes) GetOptBool() *wrappers.BoolValue {
+	if m != nil {
+		return m.OptBool
+	}
+	return nil
+}
+
+func (m *KnownTypes) GetOptInt32() *wrappers.Int32Value {
+	if m != nil {
+		return m.OptInt32
+	}
+	return nil
+}
+
+func (m *KnownTypes) GetOptInt64() *wrappers.Int64Value {
+	if m != nil {
+		return m.OptInt64
+	}
+	return nil
+}
+
+func (m *KnownTypes) GetOptUint32() *wrappers.UInt32Value {
+	if m != nil {
+		return m.OptUint32
+	}
+	return nil
+}
+
+func (m *KnownTypes) GetOptUint64() *wrappers.UInt64Value {
+	if m != nil {
+		return m.OptUint64
+	}
+	return nil
+}
+
+func (m *KnownTypes) GetOptFloat() *wrappers.FloatValue {
+	if m != nil {
+		return m.OptFloat
+	}
+	return nil
+}
+
+func (m *KnownTypes) GetOptDouble() *wrappers.DoubleValue {
+	if m != nil {
+		return m.OptDouble
+	}
+	return nil
+}
+
+func (m *KnownTypes) GetOptString() *wrappers.StringValue {
+	if m != nil {
+		return m.OptString
+	}
+	return nil
+}
+
+func (m *KnownTypes) GetOptBytes() *wrappers.BytesValue {
+	if m != nil {
+		return m.OptBytes
+	}
+	return nil
+}
+
+func (m *KnownTypes) GetOptDuration() *duration.Duration {
+	if m != nil {
+		return m.OptDuration
+	}
+	return nil
+}
+
+func (m *KnownTypes) GetOptTimestamp() *timestamp.Timestamp {
+	if m != nil {
+		return m.OptTimestamp
+	}
+	return nil
+}
+
+func (m *KnownTypes) GetOptStruct() *_struct.Struct {
+	if m != nil {
+		return m.OptStruct
+	}
+	return nil
+}
+
+func (m *KnownTypes) GetOptList() *_struct.ListValue {
+	if m != nil {
+		return m.OptList
+	}
+	return nil
+}
+
+func (m *KnownTypes) GetOptValue() *_struct.Value {
+	if m != nil {
+		return m.OptValue
+	}
+	return nil
+}
+
+func (m *KnownTypes) GetOptEmpty() *empty.Empty {
+	if m != nil {
+		return m.OptEmpty
+	}
+	return nil
+}
+
+func (m *KnownTypes) GetOptAny() *any.Any {
+	if m != nil {
+		return m.OptAny
+	}
+	return nil
+}
+
+type Nests_OptGroup struct {
+	OptString            *string                        `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
+	OptNested            *Nested                        `protobuf:"bytes,2,opt,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
+	Optnestedgroup       *Nests_OptGroup_OptNestedGroup `protobuf:"group,3,opt,name=OptNestedGroup,json=optnestedgroup" json:"optnestedgroup,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                       `json:"-"`
+	XXX_unrecognized     []byte                         `json:"-"`
+	XXX_sizecache        int32                          `json:"-"`
+}
+
+func (m *Nests_OptGroup) ProtoReflect() protoreflect.Message {
+	return xxx_Test_protoFile_messageTypes[16].MessageOf(m)
+}
+func (m *Nests_OptGroup) Reset()         { *m = Nests_OptGroup{} }
+func (m *Nests_OptGroup) String() string { return proto.CompactTextString(m) }
+func (*Nests_OptGroup) ProtoMessage()    {}
+func (*Nests_OptGroup) Descriptor() ([]byte, []int) {
+	return fileDescriptor_72e37deb177b50f8_gzipped, []int{4, 0}
+}
+
+func (m *Nests_OptGroup) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Nests_OptGroup.Unmarshal(m, b)
+}
+func (m *Nests_OptGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Nests_OptGroup.Marshal(b, m, deterministic)
+}
+func (m *Nests_OptGroup) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Nests_OptGroup.Merge(m, src)
+}
+func (m *Nests_OptGroup) XXX_Size() int {
+	return xxx_messageInfo_Nests_OptGroup.Size(m)
+}
+func (m *Nests_OptGroup) XXX_DiscardUnknown() {
+	xxx_messageInfo_Nests_OptGroup.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Nests_OptGroup proto.InternalMessageInfo
+
+func (m *Nests_OptGroup) GetOptString() string {
+	if m != nil && m.OptString != nil {
+		return *m.OptString
+	}
+	return ""
+}
+
+func (m *Nests_OptGroup) GetOptNested() *Nested {
+	if m != nil {
+		return m.OptNested
+	}
+	return nil
+}
+
+func (m *Nests_OptGroup) GetOptnestedgroup() *Nests_OptGroup_OptNestedGroup {
+	if m != nil {
+		return m.Optnestedgroup
+	}
+	return nil
+}
+
+type Nests_RptGroup struct {
+	RptString            []string `protobuf:"bytes,1,rep,name=rpt_string,json=rptString" json:"rpt_string,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Nests_RptGroup) ProtoReflect() protoreflect.Message {
+	return xxx_Test_protoFile_messageTypes[17].MessageOf(m)
+}
+func (m *Nests_RptGroup) Reset()         { *m = Nests_RptGroup{} }
+func (m *Nests_RptGroup) String() string { return proto.CompactTextString(m) }
+func (*Nests_RptGroup) ProtoMessage()    {}
+func (*Nests_RptGroup) Descriptor() ([]byte, []int) {
+	return fileDescriptor_72e37deb177b50f8_gzipped, []int{4, 1}
+}
+
+func (m *Nests_RptGroup) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Nests_RptGroup.Unmarshal(m, b)
+}
+func (m *Nests_RptGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Nests_RptGroup.Marshal(b, m, deterministic)
+}
+func (m *Nests_RptGroup) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Nests_RptGroup.Merge(m, src)
+}
+func (m *Nests_RptGroup) XXX_Size() int {
+	return xxx_messageInfo_Nests_RptGroup.Size(m)
+}
+func (m *Nests_RptGroup) XXX_DiscardUnknown() {
+	xxx_messageInfo_Nests_RptGroup.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Nests_RptGroup proto.InternalMessageInfo
+
+func (m *Nests_RptGroup) GetRptString() []string {
+	if m != nil {
+		return m.RptString
+	}
+	return nil
+}
+
+type Nests_OptGroup_OptNestedGroup struct {
+	OptFixed32           *uint32  `protobuf:"fixed32,1,opt,name=opt_fixed32,json=optFixed32" json:"opt_fixed32,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Nests_OptGroup_OptNestedGroup) ProtoReflect() protoreflect.Message {
+	return xxx_Test_protoFile_messageTypes[18].MessageOf(m)
+}
+func (m *Nests_OptGroup_OptNestedGroup) Reset()         { *m = Nests_OptGroup_OptNestedGroup{} }
+func (m *Nests_OptGroup_OptNestedGroup) String() string { return proto.CompactTextString(m) }
+func (*Nests_OptGroup_OptNestedGroup) ProtoMessage()    {}
+func (*Nests_OptGroup_OptNestedGroup) Descriptor() ([]byte, []int) {
+	return fileDescriptor_72e37deb177b50f8_gzipped, []int{4, 0, 0}
+}
+
+func (m *Nests_OptGroup_OptNestedGroup) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Nests_OptGroup_OptNestedGroup.Unmarshal(m, b)
+}
+func (m *Nests_OptGroup_OptNestedGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Nests_OptGroup_OptNestedGroup.Marshal(b, m, deterministic)
+}
+func (m *Nests_OptGroup_OptNestedGroup) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Nests_OptGroup_OptNestedGroup.Merge(m, src)
+}
+func (m *Nests_OptGroup_OptNestedGroup) XXX_Size() int {
+	return xxx_messageInfo_Nests_OptGroup_OptNestedGroup.Size(m)
+}
+func (m *Nests_OptGroup_OptNestedGroup) XXX_DiscardUnknown() {
+	xxx_messageInfo_Nests_OptGroup_OptNestedGroup.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Nests_OptGroup_OptNestedGroup proto.InternalMessageInfo
+
+func (m *Nests_OptGroup_OptNestedGroup) GetOptFixed32() uint32 {
+	if m != nil && m.OptFixed32 != nil {
+		return *m.OptFixed32
+	}
+	return 0
+}
+
+var E_OptExtBool = &proto.ExtensionDesc{
+	ExtendedType:  (*Extensions)(nil),
+	ExtensionType: (*bool)(nil),
+	Field:         21,
+	Name:          "pb2.opt_ext_bool",
+	Tag:           "varint,21,opt,name=opt_ext_bool",
+	Filename:      "encoding/testprotos/pb2/test.proto",
+}
+
+var E_OptExtString = &proto.ExtensionDesc{
+	ExtendedType:  (*Extensions)(nil),
+	ExtensionType: (*string)(nil),
+	Field:         22,
+	Name:          "pb2.opt_ext_string",
+	Tag:           "bytes,22,opt,name=opt_ext_string",
+	Filename:      "encoding/testprotos/pb2/test.proto",
+}
+
+var E_OptExtEnum = &proto.ExtensionDesc{
+	ExtendedType:  (*Extensions)(nil),
+	ExtensionType: (*Enum)(nil),
+	Field:         23,
+	Name:          "pb2.opt_ext_enum",
+	Tag:           "varint,23,opt,name=opt_ext_enum,enum=pb2.Enum",
+	Filename:      "encoding/testprotos/pb2/test.proto",
+}
+
+var E_OptExtNested = &proto.ExtensionDesc{
+	ExtendedType:  (*Extensions)(nil),
+	ExtensionType: (*Nested)(nil),
+	Field:         24,
+	Name:          "pb2.opt_ext_nested",
+	Tag:           "bytes,24,opt,name=opt_ext_nested",
+	Filename:      "encoding/testprotos/pb2/test.proto",
+}
+
+var E_RptExtFixed32 = &proto.ExtensionDesc{
+	ExtendedType:  (*Extensions)(nil),
+	ExtensionType: ([]uint32)(nil),
+	Field:         31,
+	Name:          "pb2.rpt_ext_fixed32",
+	Tag:           "fixed32,31,rep,name=rpt_ext_fixed32",
+	Filename:      "encoding/testprotos/pb2/test.proto",
+}
+
+var E_RptExtEnum = &proto.ExtensionDesc{
+	ExtendedType:  (*Extensions)(nil),
+	ExtensionType: ([]Enum)(nil),
+	Field:         32,
+	Name:          "pb2.rpt_ext_enum",
+	Tag:           "varint,32,rep,name=rpt_ext_enum,enum=pb2.Enum",
+	Filename:      "encoding/testprotos/pb2/test.proto",
+}
+
+var E_RptExtNested = &proto.ExtensionDesc{
+	ExtendedType:  (*Extensions)(nil),
+	ExtensionType: ([]*Nested)(nil),
+	Field:         33,
+	Name:          "pb2.rpt_ext_nested",
+	Tag:           "bytes,33,rep,name=rpt_ext_nested",
+	Filename:      "encoding/testprotos/pb2/test.proto",
+}
+
+var E_MessageSetExtension = &proto.ExtensionDesc{
+	ExtendedType:  (*MessageSet)(nil),
+	ExtensionType: (*FakeMessageSetExtension)(nil),
+	Field:         50,
+	Name:          "pb2.",
+	Tag:           "bytes,50,opt,name=message_set_extension",
+	Filename:      "encoding/testprotos/pb2/test.proto",
+}
+
+var E_ExtensionsContainer_OptExtBool = &proto.ExtensionDesc{
+	ExtendedType:  (*Extensions)(nil),
+	ExtensionType: (*bool)(nil),
+	Field:         51,
+	Name:          "pb2.ExtensionsContainer.opt_ext_bool",
+	Tag:           "varint,51,opt,name=opt_ext_bool",
+	Filename:      "encoding/testprotos/pb2/test.proto",
+}
+
+var E_ExtensionsContainer_OptExtString = &proto.ExtensionDesc{
+	ExtendedType:  (*Extensions)(nil),
+	ExtensionType: (*string)(nil),
+	Field:         52,
+	Name:          "pb2.ExtensionsContainer.opt_ext_string",
+	Tag:           "bytes,52,opt,name=opt_ext_string",
+	Filename:      "encoding/testprotos/pb2/test.proto",
+}
+
+var E_ExtensionsContainer_OptExtEnum = &proto.ExtensionDesc{
+	ExtendedType:  (*Extensions)(nil),
+	ExtensionType: (*Enum)(nil),
+	Field:         53,
+	Name:          "pb2.ExtensionsContainer.opt_ext_enum",
+	Tag:           "varint,53,opt,name=opt_ext_enum,enum=pb2.Enum",
+	Filename:      "encoding/testprotos/pb2/test.proto",
+}
+
+var E_ExtensionsContainer_OptExtNested = &proto.ExtensionDesc{
+	ExtendedType:  (*Extensions)(nil),
+	ExtensionType: (*Nested)(nil),
+	Field:         54,
+	Name:          "pb2.ExtensionsContainer.opt_ext_nested",
+	Tag:           "bytes,54,opt,name=opt_ext_nested",
+	Filename:      "encoding/testprotos/pb2/test.proto",
+}
+
+var E_ExtensionsContainer_RptExtString = &proto.ExtensionDesc{
+	ExtendedType:  (*Extensions)(nil),
+	ExtensionType: ([]string)(nil),
+	Field:         61,
+	Name:          "pb2.ExtensionsContainer.rpt_ext_string",
+	Tag:           "bytes,61,rep,name=rpt_ext_string",
+	Filename:      "encoding/testprotos/pb2/test.proto",
+}
+
+var E_ExtensionsContainer_RptExtEnum = &proto.ExtensionDesc{
+	ExtendedType:  (*Extensions)(nil),
+	ExtensionType: ([]Enum)(nil),
+	Field:         62,
+	Name:          "pb2.ExtensionsContainer.rpt_ext_enum",
+	Tag:           "varint,62,rep,name=rpt_ext_enum,enum=pb2.Enum",
+	Filename:      "encoding/testprotos/pb2/test.proto",
+}
+
+var E_ExtensionsContainer_RptExtNested = &proto.ExtensionDesc{
+	ExtendedType:  (*Extensions)(nil),
+	ExtensionType: ([]*Nested)(nil),
+	Field:         63,
+	Name:          "pb2.ExtensionsContainer.rpt_ext_nested",
+	Tag:           "bytes,63,rep,name=rpt_ext_nested",
+	Filename:      "encoding/testprotos/pb2/test.proto",
+}
+
+var E_MessageSetExtension_MessageSetExtension = &proto.ExtensionDesc{
+	ExtendedType:  (*MessageSet)(nil),
+	ExtensionType: (*MessageSetExtension)(nil),
+	Field:         10,
+	Name:          "pb2.MessageSetExtension",
+	Tag:           "bytes,10,opt,name=message_set_extension",
+	Filename:      "encoding/testprotos/pb2/test.proto",
+}
+
+var E_MessageSetExtension_NotMessageSetExtension = &proto.ExtensionDesc{
+	ExtendedType:  (*MessageSet)(nil),
+	ExtensionType: (*MessageSetExtension)(nil),
+	Field:         20,
+	Name:          "pb2.MessageSetExtension.not_message_set_extension",
+	Tag:           "bytes,20,opt,name=not_message_set_extension",
+	Filename:      "encoding/testprotos/pb2/test.proto",
+}
+
+var E_MessageSetExtension_ExtNested = &proto.ExtensionDesc{
+	ExtendedType:  (*MessageSet)(nil),
+	ExtensionType: (*Nested)(nil),
+	Field:         30,
+	Name:          "pb2.MessageSetExtension.ext_nested",
+	Tag:           "bytes,30,opt,name=ext_nested",
+	Filename:      "encoding/testprotos/pb2/test.proto",
+}
+
+var E_FakeMessageSetExtension_MessageSetExtension = &proto.ExtensionDesc{
+	ExtendedType:  (*FakeMessageSet)(nil),
+	ExtensionType: (*FakeMessageSetExtension)(nil),
+	Field:         10,
+	Name:          "pb2.FakeMessageSetExtension.message_set_extension",
+	Tag:           "bytes,10,opt,name=message_set_extension",
+	Filename:      "encoding/testprotos/pb2/test.proto",
+}
+
+func init() {
+	proto.RegisterFile("encoding/testprotos/pb2/test.proto", fileDescriptor_72e37deb177b50f8_gzipped)
+	proto.RegisterEnum("pb2.Enum", Enum_name, Enum_value)
+	proto.RegisterEnum("pb2.Enums_NestedEnum", Enums_NestedEnum_name, Enums_NestedEnum_value)
+	proto.RegisterType((*Scalars)(nil), "pb2.Scalars")
+	proto.RegisterType((*Enums)(nil), "pb2.Enums")
+	proto.RegisterType((*Repeats)(nil), "pb2.Repeats")
+	proto.RegisterType((*Nested)(nil), "pb2.Nested")
+	proto.RegisterType((*Nests)(nil), "pb2.Nests")
+	proto.RegisterType((*Requireds)(nil), "pb2.Requireds")
+	proto.RegisterType((*PartialRequired)(nil), "pb2.PartialRequired")
+	proto.RegisterType((*NestedWithRequired)(nil), "pb2.NestedWithRequired")
+	proto.RegisterType((*IndirectRequired)(nil), "pb2.IndirectRequired")
+	proto.RegisterMapType((map[string]*NestedWithRequired)(nil), "pb2.IndirectRequired.StrToNestedEntry")
+	proto.RegisterType((*Extensions)(nil), "pb2.Extensions")
+	proto.RegisterType((*ExtensionsContainer)(nil), "pb2.ExtensionsContainer")
+	proto.RegisterType((*MessageSet)(nil), "pb2.MessageSet")
+	proto.RegisterType((*MessageSetExtension)(nil), "pb2.MessageSetExtension")
+	proto.RegisterType((*FakeMessageSet)(nil), "pb2.FakeMessageSet")
+	proto.RegisterType((*FakeMessageSetExtension)(nil), "pb2.FakeMessageSetExtension")
+	proto.RegisterType((*KnownTypes)(nil), "pb2.KnownTypes")
+	proto.RegisterType((*Nests_OptGroup)(nil), "pb2.Nests.OptGroup")
+	proto.RegisterType((*Nests_RptGroup)(nil), "pb2.Nests.RptGroup")
+	proto.RegisterType((*Nests_OptGroup_OptNestedGroup)(nil), "pb2.Nests.OptGroup.OptNestedGroup")
+	proto.RegisterExtension(E_OptExtBool)
+	proto.RegisterExtension(E_OptExtString)
+	proto.RegisterExtension(E_OptExtEnum)
+	proto.RegisterExtension(E_OptExtNested)
+	proto.RegisterExtension(E_RptExtFixed32)
+	proto.RegisterExtension(E_RptExtEnum)
+	proto.RegisterExtension(E_RptExtNested)
+	proto.RegisterExtension(E_MessageSetExtension)
+	proto.RegisterExtension(E_ExtensionsContainer_OptExtBool)
+	proto.RegisterExtension(E_ExtensionsContainer_OptExtString)
+	proto.RegisterExtension(E_ExtensionsContainer_OptExtEnum)
+	proto.RegisterExtension(E_ExtensionsContainer_OptExtNested)
+	proto.RegisterExtension(E_ExtensionsContainer_RptExtString)
+	proto.RegisterExtension(E_ExtensionsContainer_RptExtEnum)
+	proto.RegisterExtension(E_ExtensionsContainer_RptExtNested)
+	proto.RegisterExtension(E_MessageSetExtension_MessageSetExtension)
+	proto.RegisterExtension(E_MessageSetExtension_NotMessageSetExtension)
+	proto.RegisterExtension(E_MessageSetExtension_ExtNested)
+	proto.RegisterExtension(E_FakeMessageSetExtension_MessageSetExtension)
+}
+
+var fileDescriptor_72e37deb177b50f8 = []byte{
+	// 5146 bytes of the wire-encoded FileDescriptorProto
+	0x0a, 0x22, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x70, 0x62, 0x32, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x12, 0x03, 0x70, 0x62, 0x32, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+	0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+	0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+	0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
+	0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+	0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
+	0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x22, 0xda, 0x03, 0x0a, 0x07, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x73, 0x12, 0x19, 0x0a, 0x08,
+	0x6f, 0x70, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07,
+	0x6f, 0x70, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x69,
+	0x6e, 0x74, 0x33, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x49,
+	0x6e, 0x74, 0x33, 0x32, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x36,
+	0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x36,
+	0x34, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18,
+	0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32,
+	0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x05,
+	0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12,
+	0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x06, 0x20,
+	0x01, 0x28, 0x11, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x1d,
+	0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x07, 0x20, 0x01,
+	0x28, 0x12, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x1f, 0x0a,
+	0x0b, 0x6f, 0x70, 0x74, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x08, 0x20, 0x01,
+	0x28, 0x07, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x1f,
+	0x0a, 0x0b, 0x6f, 0x70, 0x74, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x09, 0x20,
+	0x01, 0x28, 0x06, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12,
+	0x21, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18,
+	0x0a, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x0b, 0x6f, 0x70, 0x74, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64,
+	0x33, 0x32, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64,
+	0x36, 0x34, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x10, 0x52, 0x0b, 0x6f, 0x70, 0x74, 0x53, 0x66, 0x69,
+	0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x66, 0x6c, 0x6f,
+	0x61, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x46, 0x6c, 0x6f,
+	0x61, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
+	0x18, 0x15, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x44, 0x6f, 0x75, 0x62, 0x6c,
+	0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0e,
+	0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1d,
+	0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x0d, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22, 0xfb, 0x01,
+	0x0a, 0x05, 0x45, 0x6e, 0x75, 0x6d, 0x73, 0x12, 0x24, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f, 0x65,
+	0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x32, 0x2e,
+	0x45, 0x6e, 0x75, 0x6d, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x24, 0x0a,
+	0x08, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32,
+	0x09, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x07, 0x72, 0x70, 0x74, 0x45,
+	0x6e, 0x75, 0x6d, 0x12, 0x3d, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70,
+	0x62, 0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45,
+	0x6e, 0x75, 0x6d, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e,
+	0x75, 0x6d, 0x12, 0x3d, 0x0a, 0x0f, 0x72, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, 0x62,
+	0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e,
+	0x75, 0x6d, 0x52, 0x0d, 0x72, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75,
+	0x6d, 0x22, 0x28, 0x0a, 0x0a, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12,
+	0x07, 0x0a, 0x03, 0x55, 0x4e, 0x4f, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x44, 0x4f, 0x53, 0x10,
+	0x02, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x49, 0x45, 0x5a, 0x10, 0x0a, 0x22, 0x94, 0x02, 0x0a, 0x07,
+	0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x70, 0x74, 0x5f, 0x62,
+	0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x03, 0x28, 0x08, 0x52, 0x07, 0x72, 0x70, 0x74, 0x42, 0x6f,
+	0x6f, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18,
+	0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x72, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12,
+	0x1b, 0x0a, 0x09, 0x72, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x03, 0x20, 0x03,
+	0x28, 0x03, 0x52, 0x08, 0x72, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x1d, 0x0a, 0x0a,
+	0x72, 0x70, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0d,
+	0x52, 0x09, 0x72, 0x70, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x1d, 0x0a, 0x0a, 0x72,
+	0x70, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x05, 0x20, 0x03, 0x28, 0x04, 0x52,
+	0x09, 0x72, 0x70, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x70,
+	0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x02, 0x52, 0x08, 0x72,
+	0x70, 0x74, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f, 0x64,
+	0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x03, 0x28, 0x01, 0x52, 0x09, 0x72, 0x70, 0x74,
+	0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f, 0x73, 0x74,
+	0x72, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x72, 0x70, 0x74, 0x53,
+	0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x70, 0x74, 0x5f, 0x62, 0x79, 0x74,
+	0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x08, 0x72, 0x70, 0x74, 0x42, 0x79, 0x74,
+	0x65, 0x73, 0x22, 0x53, 0x0a, 0x06, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a,
+	0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x2a, 0x0a, 0x0a, 0x6f,
+	0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x09, 0x6f, 0x70,
+	0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x22, 0xd3, 0x03, 0x0a, 0x05, 0x4e, 0x65, 0x73, 0x74,
+	0x73, 0x12, 0x2a, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x2f, 0x0a,
+	0x08, 0x6f, 0x70, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0a, 0x32,
+	0x13, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x47,
+	0x72, 0x6f, 0x75, 0x70, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x2a,
+	0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x03,
+	0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52,
+	0x09, 0x72, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x2f, 0x0a, 0x08, 0x72, 0x70,
+	0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x13, 0x2e, 0x70,
+	0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x52, 0x70, 0x74, 0x47, 0x72, 0x6f, 0x75,
+	0x70, 0x52, 0x08, 0x72, 0x70, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0xd4, 0x01, 0x0a, 0x08,
+	0x4f, 0x70, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f,
+	0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70,
+	0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x2a, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x6e,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62,
+	0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x4e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x12, 0x4a, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0a, 0x32, 0x22, 0x2e, 0x70, 0x62,
+	0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70,
+	0x2e, 0x4f, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52,
+	0x0e, 0x6f, 0x70, 0x74, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x1a,
+	0x31, 0x0a, 0x0e, 0x4f, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75,
+	0x70, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x70, 0x74, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x07, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x46, 0x69, 0x78, 0x65, 0x64,
+	0x33, 0x32, 0x1a, 0x29, 0x0a, 0x08, 0x52, 0x70, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1d,
+	0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x03,
+	0x28, 0x09, 0x52, 0x09, 0x72, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0e, 0x72,
+	0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0xd9, 0x01,
+	0x0a, 0x09, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x72,
+	0x65, 0x71, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x02, 0x28, 0x08, 0x52, 0x07, 0x72,
+	0x65, 0x71, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x5f, 0x73, 0x66,
+	0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x02, 0x20, 0x02, 0x28, 0x10, 0x52, 0x0b, 0x72, 0x65,
+	0x71, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71,
+	0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x02, 0x28, 0x01, 0x52, 0x09, 0x72,
+	0x65, 0x71, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x5f,
+	0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x02, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65,
+	0x71, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x24, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x5f, 0x65,
+	0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x32, 0x2e,
+	0x45, 0x6e, 0x75, 0x6d, 0x52, 0x07, 0x72, 0x65, 0x71, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x2a, 0x0a,
+	0x0a, 0x72, 0x65, 0x71, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x02, 0x28,
+	0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x09,
+	0x72, 0x65, 0x71, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x22, 0x4f, 0x0a, 0x0f, 0x50, 0x61, 0x72,
+	0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a,
+	0x72, 0x65, 0x71, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09,
+	0x52, 0x09, 0x72, 0x65, 0x71, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x6f,
+	0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22, 0x33, 0x0a, 0x12, 0x4e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64,
+	0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01,
+	0x20, 0x02, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22,
+	0xee, 0x02, 0x0a, 0x10, 0x49, 0x6e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75,
+	0x69, 0x72, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65,
+	0x64, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x0a,
+	0x72, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x17, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x57, 0x69, 0x74,
+	0x68, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x09, 0x72, 0x70, 0x74, 0x4e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x12, 0x4a, 0x0a, 0x0d, 0x73, 0x74, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x6e,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x70, 0x62,
+	0x32, 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72,
+	0x65, 0x64, 0x2e, 0x53, 0x74, 0x72, 0x54, 0x6f, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e,
+	0x74, 0x72, 0x79, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x54, 0x6f, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x12, 0x3c, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x48,
+	0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x1a, 0x57,
+	0x0a, 0x10, 0x53, 0x74, 0x72, 0x54, 0x6f, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x74,
+	0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x05, 0x76, 0x61,
+	0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e,
+	0x22, 0x69, 0x0a, 0x0a, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1d,
+	0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x19, 0x0a,
+	0x08, 0x6f, 0x70, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x65, 0x20, 0x01, 0x28, 0x08, 0x52,
+	0x07, 0x6f, 0x70, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f,
+	0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x70, 0x74,
+	0x49, 0x6e, 0x74, 0x33, 0x32, 0x2a, 0x04, 0x08, 0x14, 0x10, 0x65, 0x22, 0xba, 0x03, 0x0a, 0x13,
+	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69,
+	0x6e, 0x65, 0x72, 0x32, 0x31, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x62,
+	0x6f, 0x6f, 0x6c, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
+	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x33, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x45,
+	0x78, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x32, 0x35, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78,
+	0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x34, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x0c, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x32, 0x3c, 0x0a,
+	0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x2e,
+	0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x35,
+	0x20, 0x01, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52,
+	0x0a, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x32, 0x42, 0x0a, 0x0e, 0x6f,
+	0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x0f, 0x2e,
+	0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x36,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x32,
+	0x35, 0x0a, 0x0e, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e,
+	0x67, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
+	0x6e, 0x73, 0x18, 0x3d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x70, 0x74, 0x45, 0x78, 0x74,
+	0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x32, 0x3c, 0x0a, 0x0c, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78,
+	0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x3e, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x09, 0x2e,
+	0x70, 0x62, 0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x72, 0x70, 0x74, 0x45, 0x78, 0x74,
+	0x45, 0x6e, 0x75, 0x6d, 0x32, 0x42, 0x0a, 0x0e, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f,
+	0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x3f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e,
+	0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x0c, 0x72, 0x70, 0x74, 0x45,
+	0x78, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x22, 0x1a, 0x0a, 0x0a, 0x4d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x2a, 0x08, 0x08, 0x04, 0x10, 0xff, 0xff, 0xff, 0xff, 0x07,
+	0x3a, 0x02, 0x08, 0x01, 0x22, 0xb6, 0x02, 0x0a, 0x13, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a,
+	0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x32, 0x5d, 0x0a, 0x15, 0x6d,
+	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e,
+	0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x62,
+	0x32, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65,
+	0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x32, 0x64, 0x0a, 0x19, 0x6e, 0x6f,
+	0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78,
+	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18,
+	0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x6e, 0x6f, 0x74, 0x4d, 0x65, 0x73,
+	0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+	0x32, 0x3b, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x0f,
+	0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18,
+	0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x52, 0x09, 0x65, 0x78, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x22, 0x1a, 0x0a,
+	0x0e, 0x46, 0x61, 0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x2a,
+	0x08, 0x08, 0x04, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0x9f, 0x01, 0x0a, 0x17, 0x46, 0x61,
+	0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72,
+	0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74,
+	0x72, 0x69, 0x6e, 0x67, 0x32, 0x65, 0x0a, 0x15, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f,
+	0x73, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x13, 0x2e,
+	0x70, 0x62, 0x32, 0x2e, 0x46, 0x61, 0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53,
+	0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x46,
+	0x61, 0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53,
+	0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xa6, 0x07, 0x0a, 0x0a,
+	0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x6f, 0x70,
+	0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
+	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42,
+	0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x42, 0x6f, 0x6f,
+	0x6c, 0x12, 0x38, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75,
+	0x65, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x38, 0x0a, 0x09, 0x6f,
+	0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b,
+	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+	0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6f, 0x70, 0x74,
+	0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x3b, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x75, 0x69, 0x6e,
+	0x74, 0x33, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
+	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74,
+	0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x55, 0x69, 0x6e, 0x74,
+	0x33, 0x32, 0x12, 0x3b, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34,
+	0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56,
+	0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12,
+	0x38, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52,
+	0x08, 0x6f, 0x70, 0x74, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x3b, 0x0a, 0x0a, 0x6f, 0x70, 0x74,
+	0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e,
+	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
+	0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6f, 0x70, 0x74,
+	0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74,
+	0x72, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f,
+	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72,
+	0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72,
+	0x69, 0x6e, 0x67, 0x12, 0x38, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73,
+	0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x79, 0x74, 0x65, 0x73, 0x56, 0x61,
+	0x6c, 0x75, 0x65, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3c, 0x0a,
+	0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x14, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b,
+	0x6f, 0x70, 0x74, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x0d, 0x6f,
+	0x70, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x15, 0x20, 0x01,
+	0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c,
+	0x6f, 0x70, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x36, 0x0a, 0x0a,
+	0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+	0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74,
+	0x72, 0x75, 0x63, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74,
+	0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c,
+	0x75, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x33, 0x0a, 0x09, 0x6f,
+	0x70, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16,
+	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+	0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65,
+	0x12, 0x33, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x18, 0x1e, 0x20,
+	0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x08, 0x6f, 0x70, 0x74,
+	0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x2d, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x5f, 0x61, 0x6e, 0x79,
+	0x18, 0x20, 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, 0x06, 0x6f, 0x70,
+	0x74, 0x41, 0x6e, 0x79, 0x2a, 0x21, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x07, 0x0a, 0x03,
+	0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x57, 0x4f, 0x10, 0x02, 0x12, 0x07,
+	0x0a, 0x03, 0x54, 0x45, 0x4e, 0x10, 0x0a, 0x3a, 0x31, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x65,
+	0x78, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78,
+	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a,
+	0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x3a, 0x35, 0x0a, 0x0e, 0x6f, 0x70,
+	0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x0f, 0x2e, 0x70,
+	0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x16, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e,
+	0x67, 0x3a, 0x3c, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x65, 0x6e, 0x75,
+	0x6d, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
+	0x6e, 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45,
+	0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x3a,
+	0x42, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
+	0x6e, 0x73, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e,
+	0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x4e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x3a, 0x37, 0x0a, 0x0f, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x66,
+	0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x07, 0x52, 0x0d, 0x72,
+	0x70, 0x74, 0x45, 0x78, 0x74, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x3c, 0x0a, 0x0c,
+	0x72, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x2e, 0x70,
+	0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x20, 0x20,
+	0x03, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a,
+	0x72, 0x70, 0x74, 0x45, 0x78, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x42, 0x0a, 0x0e, 0x72, 0x70,
+	0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x0f, 0x2e, 0x70,
+	0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x21, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x52, 0x0c, 0x72, 0x70, 0x74, 0x45, 0x78, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x3a, 0x61,
+	0x0a, 0x15, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78,
+	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c,
+	0x2e, 0x70, 0x62, 0x32, 0x2e, 0x46, 0x61, 0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x6d, 0x65,
+	0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
+	0x6e, 0x42, 0x37, 0x5a, 0x35, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
+	0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f,
+	0x76, 0x32, 0x2f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x74, 0x65, 0x73, 0x74,
+	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x70, 0x62, 0x32,
+}
+
+var fileDescriptor_72e37deb177b50f8_gzipped = func() []byte {
+	bb := new(bytes.Buffer)
+	zw, _ := gzip.NewWriterLevel(bb, gzip.NoCompression)
+	zw.Write(fileDescriptor_72e37deb177b50f8)
+	zw.Close()
+	return bb.Bytes()
+}()
+
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
+var Test_protoFile protoreflect.FileDescriptor
+
+var xxx_Test_protoFile_enumTypes [2]protoreflect.EnumType
+var xxx_Test_protoFile_messageTypes [20]protoimpl.MessageType
+var xxx_Test_protoFile_goTypes = []interface{}{
+	(Enum)(0),                             // 0: pb2.Enum
+	(Enums_NestedEnum)(0),                 // 1: pb2.Enums.NestedEnum
+	(*Scalars)(nil),                       // 2: pb2.Scalars
+	(*Enums)(nil),                         // 3: pb2.Enums
+	(*Repeats)(nil),                       // 4: pb2.Repeats
+	(*Nested)(nil),                        // 5: pb2.Nested
+	(*Nests)(nil),                         // 6: pb2.Nests
+	(*Requireds)(nil),                     // 7: pb2.Requireds
+	(*PartialRequired)(nil),               // 8: pb2.PartialRequired
+	(*NestedWithRequired)(nil),            // 9: pb2.NestedWithRequired
+	(*IndirectRequired)(nil),              // 10: pb2.IndirectRequired
+	(*Extensions)(nil),                    // 11: pb2.Extensions
+	(*ExtensionsContainer)(nil),           // 12: pb2.ExtensionsContainer
+	(*MessageSet)(nil),                    // 13: pb2.MessageSet
+	(*MessageSetExtension)(nil),           // 14: pb2.MessageSetExtension
+	(*FakeMessageSet)(nil),                // 15: pb2.FakeMessageSet
+	(*FakeMessageSetExtension)(nil),       // 16: pb2.FakeMessageSetExtension
+	(*KnownTypes)(nil),                    // 17: pb2.KnownTypes
+	(*Nests_OptGroup)(nil),                // 18: pb2.Nests.OptGroup
+	(*Nests_RptGroup)(nil),                // 19: pb2.Nests.RptGroup
+	(*Nests_OptGroup_OptNestedGroup)(nil), // 20: pb2.Nests.OptGroup.OptNestedGroup
+	nil,                                   // 21: pb2.IndirectRequired.StrToNestedEntry
+	(*wrappers.BoolValue)(nil),            // 22: google.protobuf.BoolValue
+	(*wrappers.Int32Value)(nil),           // 23: google.protobuf.Int32Value
+	(*wrappers.Int64Value)(nil),           // 24: google.protobuf.Int64Value
+	(*wrappers.UInt32Value)(nil),          // 25: google.protobuf.UInt32Value
+	(*wrappers.UInt64Value)(nil),          // 26: google.protobuf.UInt64Value
+	(*wrappers.FloatValue)(nil),           // 27: google.protobuf.FloatValue
+	(*wrappers.DoubleValue)(nil),          // 28: google.protobuf.DoubleValue
+	(*wrappers.StringValue)(nil),          // 29: google.protobuf.StringValue
+	(*wrappers.BytesValue)(nil),           // 30: google.protobuf.BytesValue
+	(*duration.Duration)(nil),             // 31: google.protobuf.Duration
+	(*timestamp.Timestamp)(nil),           // 32: google.protobuf.Timestamp
+	(*_struct.Struct)(nil),                // 33: google.protobuf.Struct
+	(*_struct.ListValue)(nil),             // 34: google.protobuf.ListValue
+	(*_struct.Value)(nil),                 // 35: google.protobuf.Value
+	(*empty.Empty)(nil),                   // 36: google.protobuf.Empty
+	(*any.Any)(nil),                       // 37: google.protobuf.Any
+}
+var xxx_Test_protoFile_depIdxs = []int32{
+	11, // pb2.opt_ext_bool:extendee -> pb2.Extensions
+	11, // pb2.opt_ext_string:extendee -> pb2.Extensions
+	11, // pb2.opt_ext_enum:extendee -> pb2.Extensions
+	11, // pb2.opt_ext_nested:extendee -> pb2.Extensions
+	11, // pb2.rpt_ext_fixed32:extendee -> pb2.Extensions
+	11, // pb2.rpt_ext_enum:extendee -> pb2.Extensions
+	11, // pb2.rpt_ext_nested:extendee -> pb2.Extensions
+	13, // pb2.message_set_extension:extendee -> pb2.MessageSet
+	11, // pb2.ExtensionsContainer.opt_ext_bool:extendee -> pb2.Extensions
+	11, // pb2.ExtensionsContainer.opt_ext_string:extendee -> pb2.Extensions
+	11, // pb2.ExtensionsContainer.opt_ext_enum:extendee -> pb2.Extensions
+	11, // pb2.ExtensionsContainer.opt_ext_nested:extendee -> pb2.Extensions
+	11, // pb2.ExtensionsContainer.rpt_ext_string:extendee -> pb2.Extensions
+	11, // pb2.ExtensionsContainer.rpt_ext_enum:extendee -> pb2.Extensions
+	11, // pb2.ExtensionsContainer.rpt_ext_nested:extendee -> pb2.Extensions
+	13, // pb2.MessageSetExtension.message_set_extension:extendee -> pb2.MessageSet
+	13, // pb2.MessageSetExtension.not_message_set_extension:extendee -> pb2.MessageSet
+	13, // pb2.MessageSetExtension.ext_nested:extendee -> pb2.MessageSet
+	15, // pb2.FakeMessageSetExtension.message_set_extension:extendee -> pb2.FakeMessageSet
+	0,  // pb2.Enums.opt_enum:type_name -> pb2.Enum
+	0,  // pb2.Enums.rpt_enum:type_name -> pb2.Enum
+	1,  // pb2.Enums.opt_nested_enum:type_name -> pb2.Enums.NestedEnum
+	1,  // pb2.Enums.rpt_nested_enum:type_name -> pb2.Enums.NestedEnum
+	5,  // pb2.Nested.opt_nested:type_name -> pb2.Nested
+	5,  // pb2.Nests.opt_nested:type_name -> pb2.Nested
+	18, // pb2.Nests.optgroup:type_name -> pb2.Nests.OptGroup
+	5,  // pb2.Nests.rpt_nested:type_name -> pb2.Nested
+	19, // pb2.Nests.rptgroup:type_name -> pb2.Nests.RptGroup
+	0,  // pb2.Requireds.req_enum:type_name -> pb2.Enum
+	5,  // pb2.Requireds.req_nested:type_name -> pb2.Nested
+	9,  // pb2.IndirectRequired.opt_nested:type_name -> pb2.NestedWithRequired
+	9,  // pb2.IndirectRequired.rpt_nested:type_name -> pb2.NestedWithRequired
+	21, // pb2.IndirectRequired.str_to_nested:type_name -> pb2.IndirectRequired.StrToNestedEntry
+	9,  // pb2.IndirectRequired.oneof_nested:type_name -> pb2.NestedWithRequired
+	22, // pb2.KnownTypes.opt_bool:type_name -> google.protobuf.BoolValue
+	23, // pb2.KnownTypes.opt_int32:type_name -> google.protobuf.Int32Value
+	24, // pb2.KnownTypes.opt_int64:type_name -> google.protobuf.Int64Value
+	25, // pb2.KnownTypes.opt_uint32:type_name -> google.protobuf.UInt32Value
+	26, // pb2.KnownTypes.opt_uint64:type_name -> google.protobuf.UInt64Value
+	27, // pb2.KnownTypes.opt_float:type_name -> google.protobuf.FloatValue
+	28, // pb2.KnownTypes.opt_double:type_name -> google.protobuf.DoubleValue
+	29, // pb2.KnownTypes.opt_string:type_name -> google.protobuf.StringValue
+	30, // pb2.KnownTypes.opt_bytes:type_name -> google.protobuf.BytesValue
+	31, // pb2.KnownTypes.opt_duration:type_name -> google.protobuf.Duration
+	32, // pb2.KnownTypes.opt_timestamp:type_name -> google.protobuf.Timestamp
+	33, // pb2.KnownTypes.opt_struct:type_name -> google.protobuf.Struct
+	34, // pb2.KnownTypes.opt_list:type_name -> google.protobuf.ListValue
+	35, // pb2.KnownTypes.opt_value:type_name -> google.protobuf.Value
+	36, // pb2.KnownTypes.opt_empty:type_name -> google.protobuf.Empty
+	37, // pb2.KnownTypes.opt_any:type_name -> google.protobuf.Any
+	5,  // pb2.Nests.OptGroup.opt_nested:type_name -> pb2.Nested
+	20, // pb2.Nests.OptGroup.optnestedgroup:type_name -> pb2.Nests.OptGroup.OptNestedGroup
+	9,  // pb2.IndirectRequired.StrToNestedEntry.value:type_name -> pb2.NestedWithRequired
+	0,  // pb2.opt_ext_enum:type_name -> pb2.Enum
+	5,  // pb2.opt_ext_nested:type_name -> pb2.Nested
+	0,  // pb2.rpt_ext_enum:type_name -> pb2.Enum
+	5,  // pb2.rpt_ext_nested:type_name -> pb2.Nested
+	16, // pb2.message_set_extension:type_name -> pb2.FakeMessageSetExtension
+	0,  // pb2.ExtensionsContainer.opt_ext_enum:type_name -> pb2.Enum
+	5,  // pb2.ExtensionsContainer.opt_ext_nested:type_name -> pb2.Nested
+	0,  // pb2.ExtensionsContainer.rpt_ext_enum:type_name -> pb2.Enum
+	5,  // pb2.ExtensionsContainer.rpt_ext_nested:type_name -> pb2.Nested
+	14, // pb2.MessageSetExtension.message_set_extension:type_name -> pb2.MessageSetExtension
+	14, // pb2.MessageSetExtension.not_message_set_extension:type_name -> pb2.MessageSetExtension
+	5,  // pb2.MessageSetExtension.ext_nested:type_name -> pb2.Nested
+	16, // pb2.FakeMessageSetExtension.message_set_extension:type_name -> pb2.FakeMessageSetExtension
+}
+
+func init() {
+	var messageTypes [20]protoreflect.MessageType
+	var extensionTypes [19]protoreflect.ExtensionType
+	Test_protoFile = protoimpl.FileBuilder{
+		RawDescriptor:        fileDescriptor_72e37deb177b50f8,
+		GoTypes:              xxx_Test_protoFile_goTypes,
+		DependencyIndexes:    xxx_Test_protoFile_depIdxs,
+		EnumOutputTypes:      xxx_Test_protoFile_enumTypes[:],
+		MessageOutputTypes:   messageTypes[:],
+		ExtensionOutputTypes: extensionTypes[:],
+	}.Init()
+	messageGoTypes := xxx_Test_protoFile_goTypes[2:][:20]
+	for i, mt := range messageTypes[:] {
+		xxx_Test_protoFile_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
+		xxx_Test_protoFile_messageTypes[i].PBType = mt
+	}
+	E_OptExtBool.Type = extensionTypes[0]
+	E_OptExtString.Type = extensionTypes[1]
+	E_OptExtEnum.Type = extensionTypes[2]
+	E_OptExtNested.Type = extensionTypes[3]
+	E_RptExtFixed32.Type = extensionTypes[4]
+	E_RptExtEnum.Type = extensionTypes[5]
+	E_RptExtNested.Type = extensionTypes[6]
+	E_MessageSetExtension.Type = extensionTypes[7]
+	E_ExtensionsContainer_OptExtBool.Type = extensionTypes[8]
+	E_ExtensionsContainer_OptExtString.Type = extensionTypes[9]
+	E_ExtensionsContainer_OptExtEnum.Type = extensionTypes[10]
+	E_ExtensionsContainer_OptExtNested.Type = extensionTypes[11]
+	E_ExtensionsContainer_RptExtString.Type = extensionTypes[12]
+	E_ExtensionsContainer_RptExtEnum.Type = extensionTypes[13]
+	E_ExtensionsContainer_RptExtNested.Type = extensionTypes[14]
+	E_MessageSetExtension_MessageSetExtension.Type = extensionTypes[15]
+	E_MessageSetExtension_NotMessageSetExtension.Type = extensionTypes[16]
+	E_MessageSetExtension_ExtNested.Type = extensionTypes[17]
+	E_FakeMessageSetExtension_MessageSetExtension.Type = extensionTypes[18]
+	xxx_Test_protoFile_goTypes = nil
+	xxx_Test_protoFile_depIdxs = nil
+}
diff --git a/encoding/textpb/testprotos/pb2/test.proto b/encoding/testprotos/pb2/test.proto
similarity index 79%
rename from encoding/textpb/testprotos/pb2/test.proto
rename to encoding/testprotos/pb2/test.proto
index b242750..d41583a 100644
--- a/encoding/textpb/testprotos/pb2/test.proto
+++ b/encoding/testprotos/pb2/test.proto
@@ -1,4 +1,4 @@
-// Copyright 2018 The Go Authors. All rights reserved.
+// Copyright 2019 The Go Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
@@ -6,7 +6,7 @@
 syntax = "proto2";
 
 package pb2;
-option go_package = "github.com/golang/protobuf/v2/encoding/textpb/testprotos/pb2";
+option go_package = "github.com/golang/protobuf/v2/encoding/testprotos/pb2";
 
 import "google/protobuf/any.proto";
 import "google/protobuf/empty.proto";
@@ -18,7 +18,6 @@
 // Scalars contains optional scalar fields.
 message Scalars {
   optional bool opt_bool = 1;
-
   optional int32 opt_int32 = 2;
   optional int64 opt_int64 = 3;
   optional uint32 opt_uint32 = 4;
@@ -30,6 +29,10 @@
   optional sfixed32 opt_sfixed32 = 10;
   optional sfixed64 opt_sfixed64 = 11;
 
+  // Textproto marshal outputs fields in the same order as this proto
+  // definition regardless of field number. Following fields are intended to
+  // test that assumption.
+
   optional float opt_float = 20;
   optional double opt_double = 21;
 
@@ -37,24 +40,10 @@
   optional string opt_string = 13;
 }
 
-// Message contains repeated fields.
-message Repeats {
-  repeated bool rpt_bool = 1;
-  repeated int32 rpt_int32 = 2;
-  repeated int64 rpt_int64 = 3;
-  repeated uint32 rpt_uint32 = 4;
-  repeated uint64 rpt_uint64 = 5;
-  repeated float rpt_float = 6;
-  repeated double rpt_double = 7;
-  repeated string rpt_string = 15;
-  repeated bytes rpt_bytes = 14;
-}
-
 enum Enum {
-  UNKNOWN = 0;
-  FIRST = 1;
-  SECOND = 2;
-  TENTH = 10;
+  ONE = 1;
+  TWO = 2;
+  TEN = 10;
 }
 
 // Message contains enum fields.
@@ -71,25 +60,17 @@
   repeated NestedEnum rpt_nested_enum = 4;
 }
 
-// Message contains message and group fields.
-message Nests {
-  optional Nested opt_nested = 1;
-  optional group OptGroup = 2 {
-    optional bool opt_bool = 1;
-    optional string opt_string = 2;
-    optional Nested opt_nested = 3;
-
-    optional group OptNestedGroup = 4 {
-      optional Enum opt_enum = 1;
-    }
-  }
-
-  repeated Nested rpt_nested = 3;
-  repeated group RptGroup = 4 {
-    repeated bool rpt_bool = 1;
-  }
-
-  reserved "reserved_field";
+// Message contains repeated fields.
+message Repeats {
+  repeated bool rpt_bool = 1;
+  repeated int32 rpt_int32 = 2;
+  repeated int64 rpt_int64 = 3;
+  repeated uint32 rpt_uint32 = 4;
+  repeated uint64 rpt_uint64 = 5;
+  repeated float rpt_float = 6;
+  repeated double rpt_double = 7;
+  repeated string rpt_string = 8;
+  repeated bytes rpt_bytes = 9;
 }
 
 // Message type used as submessage.
@@ -98,19 +79,34 @@
   optional Nested opt_nested = 2;
 }
 
+// Message contains message and group fields.
+message Nests {
+  optional Nested opt_nested = 1;
+  optional group OptGroup = 2 {
+    optional string opt_string = 1;
+    optional Nested opt_nested = 2;
+
+    optional group OptNestedGroup = 3 {
+      optional fixed32 opt_fixed32 = 1;
+    }
+  }
+
+  repeated Nested rpt_nested = 4;
+  repeated group RptGroup = 5 {
+    repeated string rpt_string = 1;
+  }
+
+  reserved "reserved_field";
+}
+
 // Message contains required fields.
 message Requireds {
   required bool req_bool = 1;
-  required fixed32 req_fixed32 = 2;
-  required fixed64 req_fixed64 = 3;
-  required sfixed32 req_sfixed32 = 4;
-  required sfixed64 req_sfixed64 = 5;
-  required float req_float = 6;
-  required double req_double = 7;
-  required string req_string = 8;
-  required bytes req_bytes = 9;
-  required Enum req_enum = 10;
-  required Nested req_nested = 11;
+  required sfixed64 req_sfixed64 = 2;
+  required double req_double = 3;
+  required string req_string = 4;
+  required Enum req_enum = 5;
+  required Nested req_nested = 6;
 }
 
 // Message contains both required and optional fields.
@@ -119,24 +115,6 @@
   optional string opt_string = 2;
 }
 
-// Message contains oneof field.
-message Oneofs {
-  oneof union {
-    string str = 1;
-    Nested msg = 2;
-  }
-}
-
-// Message contains map fields.
-message Maps {
-  map<int32, string> int32_to_str = 1;
-  map<sfixed64, bool> sfixed64_to_bool = 2;
-  map<bool, uint32> bool_to_uint32 = 3;
-  map<uint64, Enum> uint64_to_enum = 4;
-  map<string, Nested> str_to_nested = 5;
-  map<string, Oneofs> str_to_oneofs = 6;
-}
-
 // Following messages are for testing required field nested in optional, repeated and map fields.
 
 message NestedWithRequired {
@@ -147,6 +125,10 @@
   optional NestedWithRequired opt_nested = 1;
   repeated NestedWithRequired rpt_nested = 2;
   map<string, NestedWithRequired> str_to_nested = 3;
+
+  oneof union {
+    NestedWithRequired oneof_nested = 4;
+  }
 }
 
 // Following messages are for testing extensions.
diff --git a/encoding/testprotos/pb3/test.pb.go b/encoding/testprotos/pb3/test.pb.go
new file mode 100644
index 0000000..54209a9
--- /dev/null
+++ b/encoding/testprotos/pb3/test.pb.go
@@ -0,0 +1,760 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: encoding/testprotos/pb3/test.proto
+
+package pb3
+
+import (
+	bytes "bytes"
+	gzip "compress/gzip"
+	proto "github.com/golang/protobuf/proto"
+	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
+	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
+	reflect "reflect"
+)
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+type Enum int32
+
+const (
+	Enum_ZERO Enum = 0
+	Enum_ONE  Enum = 1
+	Enum_TWO  Enum = 2
+	Enum_TEN  Enum = 10
+)
+
+func (e Enum) Type() protoreflect.EnumType {
+	return xxx_Test_protoFile_enumTypes[0]
+}
+func (e Enum) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(e)
+}
+
+var Enum_name = map[int32]string{
+	0:  "ZERO",
+	1:  "ONE",
+	2:  "TWO",
+	10: "TEN",
+}
+
+var Enum_value = map[string]int32{
+	"ZERO": 0,
+	"ONE":  1,
+	"TWO":  2,
+	"TEN":  10,
+}
+
+func (x Enum) String() string {
+	return proto.EnumName(Enum_name, int32(x))
+}
+
+func (Enum) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_33e0a17922cde063_gzipped, []int{0}
+}
+
+type Enums_NestedEnum int32
+
+const (
+	Enums_CERO Enums_NestedEnum = 0
+	Enums_UNO  Enums_NestedEnum = 1
+	Enums_DOS  Enums_NestedEnum = 2
+	Enums_DIEZ Enums_NestedEnum = 10
+)
+
+func (e Enums_NestedEnum) Type() protoreflect.EnumType {
+	return xxx_Test_protoFile_enumTypes[1]
+}
+func (e Enums_NestedEnum) Number() protoreflect.EnumNumber {
+	return protoreflect.EnumNumber(e)
+}
+
+var Enums_NestedEnum_name = map[int32]string{
+	0:  "CERO",
+	1:  "UNO",
+	2:  "DOS",
+	10: "DIEZ",
+}
+
+var Enums_NestedEnum_value = map[string]int32{
+	"CERO": 0,
+	"UNO":  1,
+	"DOS":  2,
+	"DIEZ": 10,
+}
+
+func (x Enums_NestedEnum) String() string {
+	return proto.EnumName(Enums_NestedEnum_name, int32(x))
+}
+
+func (Enums_NestedEnum) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_33e0a17922cde063_gzipped, []int{1, 0}
+}
+
+// Scalars contains scalar field types.
+type Scalars struct {
+	SBool                bool     `protobuf:"varint,1,opt,name=s_bool,json=sBool,proto3" json:"s_bool,omitempty"`
+	SInt32               int32    `protobuf:"varint,2,opt,name=s_int32,json=sInt32,proto3" json:"s_int32,omitempty"`
+	SInt64               int64    `protobuf:"varint,3,opt,name=s_int64,json=sInt64,proto3" json:"s_int64,omitempty"`
+	SUint32              uint32   `protobuf:"varint,4,opt,name=s_uint32,json=sUint32,proto3" json:"s_uint32,omitempty"`
+	SUint64              uint64   `protobuf:"varint,5,opt,name=s_uint64,json=sUint64,proto3" json:"s_uint64,omitempty"`
+	SSint32              int32    `protobuf:"zigzag32,6,opt,name=s_sint32,json=sSint32,proto3" json:"s_sint32,omitempty"`
+	SSint64              int64    `protobuf:"zigzag64,7,opt,name=s_sint64,json=sSint64,proto3" json:"s_sint64,omitempty"`
+	SFixed32             uint32   `protobuf:"fixed32,8,opt,name=s_fixed32,json=sFixed32,proto3" json:"s_fixed32,omitempty"`
+	SFixed64             uint64   `protobuf:"fixed64,9,opt,name=s_fixed64,json=sFixed64,proto3" json:"s_fixed64,omitempty"`
+	SSfixed32            int32    `protobuf:"fixed32,10,opt,name=s_sfixed32,json=sSfixed32,proto3" json:"s_sfixed32,omitempty"`
+	SSfixed64            int64    `protobuf:"fixed64,11,opt,name=s_sfixed64,json=sSfixed64,proto3" json:"s_sfixed64,omitempty"`
+	SFloat               float32  `protobuf:"fixed32,20,opt,name=s_float,json=sFloat,proto3" json:"s_float,omitempty"`
+	SDouble              float64  `protobuf:"fixed64,21,opt,name=s_double,json=sDouble,proto3" json:"s_double,omitempty"`
+	SBytes               []byte   `protobuf:"bytes,14,opt,name=s_bytes,json=sBytes,proto3" json:"s_bytes,omitempty"`
+	SString              string   `protobuf:"bytes,13,opt,name=s_string,json=sString,proto3" json:"s_string,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Scalars) ProtoReflect() protoreflect.Message {
+	return xxx_Test_protoFile_messageTypes[0].MessageOf(m)
+}
+func (m *Scalars) Reset()         { *m = Scalars{} }
+func (m *Scalars) String() string { return proto.CompactTextString(m) }
+func (*Scalars) ProtoMessage()    {}
+func (*Scalars) Descriptor() ([]byte, []int) {
+	return fileDescriptor_33e0a17922cde063_gzipped, []int{0}
+}
+
+func (m *Scalars) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Scalars.Unmarshal(m, b)
+}
+func (m *Scalars) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Scalars.Marshal(b, m, deterministic)
+}
+func (m *Scalars) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Scalars.Merge(m, src)
+}
+func (m *Scalars) XXX_Size() int {
+	return xxx_messageInfo_Scalars.Size(m)
+}
+func (m *Scalars) XXX_DiscardUnknown() {
+	xxx_messageInfo_Scalars.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Scalars proto.InternalMessageInfo
+
+func (m *Scalars) GetSBool() bool {
+	if m != nil {
+		return m.SBool
+	}
+	return false
+}
+
+func (m *Scalars) GetSInt32() int32 {
+	if m != nil {
+		return m.SInt32
+	}
+	return 0
+}
+
+func (m *Scalars) GetSInt64() int64 {
+	if m != nil {
+		return m.SInt64
+	}
+	return 0
+}
+
+func (m *Scalars) GetSUint32() uint32 {
+	if m != nil {
+		return m.SUint32
+	}
+	return 0
+}
+
+func (m *Scalars) GetSUint64() uint64 {
+	if m != nil {
+		return m.SUint64
+	}
+	return 0
+}
+
+func (m *Scalars) GetSSint32() int32 {
+	if m != nil {
+		return m.SSint32
+	}
+	return 0
+}
+
+func (m *Scalars) GetSSint64() int64 {
+	if m != nil {
+		return m.SSint64
+	}
+	return 0
+}
+
+func (m *Scalars) GetSFixed32() uint32 {
+	if m != nil {
+		return m.SFixed32
+	}
+	return 0
+}
+
+func (m *Scalars) GetSFixed64() uint64 {
+	if m != nil {
+		return m.SFixed64
+	}
+	return 0
+}
+
+func (m *Scalars) GetSSfixed32() int32 {
+	if m != nil {
+		return m.SSfixed32
+	}
+	return 0
+}
+
+func (m *Scalars) GetSSfixed64() int64 {
+	if m != nil {
+		return m.SSfixed64
+	}
+	return 0
+}
+
+func (m *Scalars) GetSFloat() float32 {
+	if m != nil {
+		return m.SFloat
+	}
+	return 0
+}
+
+func (m *Scalars) GetSDouble() float64 {
+	if m != nil {
+		return m.SDouble
+	}
+	return 0
+}
+
+func (m *Scalars) GetSBytes() []byte {
+	if m != nil {
+		return m.SBytes
+	}
+	return nil
+}
+
+func (m *Scalars) GetSString() string {
+	if m != nil {
+		return m.SString
+	}
+	return ""
+}
+
+// Message contains enum fields.
+type Enums struct {
+	SEnum                Enum             `protobuf:"varint,1,opt,name=s_enum,json=sEnum,proto3,enum=pb3.Enum" json:"s_enum,omitempty"`
+	SNestedEnum          Enums_NestedEnum `protobuf:"varint,3,opt,name=s_nested_enum,json=sNestedEnum,proto3,enum=pb3.Enums_NestedEnum" json:"s_nested_enum,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
+	XXX_unrecognized     []byte           `json:"-"`
+	XXX_sizecache        int32            `json:"-"`
+}
+
+func (m *Enums) ProtoReflect() protoreflect.Message {
+	return xxx_Test_protoFile_messageTypes[1].MessageOf(m)
+}
+func (m *Enums) Reset()         { *m = Enums{} }
+func (m *Enums) String() string { return proto.CompactTextString(m) }
+func (*Enums) ProtoMessage()    {}
+func (*Enums) Descriptor() ([]byte, []int) {
+	return fileDescriptor_33e0a17922cde063_gzipped, []int{1}
+}
+
+func (m *Enums) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Enums.Unmarshal(m, b)
+}
+func (m *Enums) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Enums.Marshal(b, m, deterministic)
+}
+func (m *Enums) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Enums.Merge(m, src)
+}
+func (m *Enums) XXX_Size() int {
+	return xxx_messageInfo_Enums.Size(m)
+}
+func (m *Enums) XXX_DiscardUnknown() {
+	xxx_messageInfo_Enums.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Enums proto.InternalMessageInfo
+
+func (m *Enums) GetSEnum() Enum {
+	if m != nil {
+		return m.SEnum
+	}
+	return Enum_ZERO
+}
+
+func (m *Enums) GetSNestedEnum() Enums_NestedEnum {
+	if m != nil {
+		return m.SNestedEnum
+	}
+	return Enums_CERO
+}
+
+// Message contains nested message field.
+type Nests struct {
+	SNested              *Nested  `protobuf:"bytes,2,opt,name=s_nested,json=sNested,proto3" json:"s_nested,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Nests) ProtoReflect() protoreflect.Message {
+	return xxx_Test_protoFile_messageTypes[2].MessageOf(m)
+}
+func (m *Nests) Reset()         { *m = Nests{} }
+func (m *Nests) String() string { return proto.CompactTextString(m) }
+func (*Nests) ProtoMessage()    {}
+func (*Nests) Descriptor() ([]byte, []int) {
+	return fileDescriptor_33e0a17922cde063_gzipped, []int{2}
+}
+
+func (m *Nests) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Nests.Unmarshal(m, b)
+}
+func (m *Nests) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Nests.Marshal(b, m, deterministic)
+}
+func (m *Nests) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Nests.Merge(m, src)
+}
+func (m *Nests) XXX_Size() int {
+	return xxx_messageInfo_Nests.Size(m)
+}
+func (m *Nests) XXX_DiscardUnknown() {
+	xxx_messageInfo_Nests.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Nests proto.InternalMessageInfo
+
+func (m *Nests) GetSNested() *Nested {
+	if m != nil {
+		return m.SNested
+	}
+	return nil
+}
+
+// Message type used as submessage.
+type Nested struct {
+	SString              string   `protobuf:"bytes,1,opt,name=s_string,json=sString,proto3" json:"s_string,omitempty"`
+	SNested              *Nested  `protobuf:"bytes,2,opt,name=s_nested,json=sNested,proto3" json:"s_nested,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Nested) ProtoReflect() protoreflect.Message {
+	return xxx_Test_protoFile_messageTypes[3].MessageOf(m)
+}
+func (m *Nested) Reset()         { *m = Nested{} }
+func (m *Nested) String() string { return proto.CompactTextString(m) }
+func (*Nested) ProtoMessage()    {}
+func (*Nested) Descriptor() ([]byte, []int) {
+	return fileDescriptor_33e0a17922cde063_gzipped, []int{3}
+}
+
+func (m *Nested) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Nested.Unmarshal(m, b)
+}
+func (m *Nested) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Nested.Marshal(b, m, deterministic)
+}
+func (m *Nested) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Nested.Merge(m, src)
+}
+func (m *Nested) XXX_Size() int {
+	return xxx_messageInfo_Nested.Size(m)
+}
+func (m *Nested) XXX_DiscardUnknown() {
+	xxx_messageInfo_Nested.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Nested proto.InternalMessageInfo
+
+func (m *Nested) GetSString() string {
+	if m != nil {
+		return m.SString
+	}
+	return ""
+}
+
+func (m *Nested) GetSNested() *Nested {
+	if m != nil {
+		return m.SNested
+	}
+	return nil
+}
+
+// Message contains oneof field.
+type Oneofs struct {
+	// Types that are valid to be assigned to Union:
+	//	*Oneofs_OneofEnum
+	//	*Oneofs_OneofString
+	//	*Oneofs_OneofNested
+	Union                isOneofs_Union `protobuf_oneof:"union"`
+	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
+	XXX_unrecognized     []byte         `json:"-"`
+	XXX_sizecache        int32          `json:"-"`
+}
+
+func (m *Oneofs) ProtoReflect() protoreflect.Message {
+	return xxx_Test_protoFile_messageTypes[4].MessageOf(m)
+}
+func (m *Oneofs) Reset()         { *m = Oneofs{} }
+func (m *Oneofs) String() string { return proto.CompactTextString(m) }
+func (*Oneofs) ProtoMessage()    {}
+func (*Oneofs) Descriptor() ([]byte, []int) {
+	return fileDescriptor_33e0a17922cde063_gzipped, []int{4}
+}
+
+func (m *Oneofs) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Oneofs.Unmarshal(m, b)
+}
+func (m *Oneofs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Oneofs.Marshal(b, m, deterministic)
+}
+func (m *Oneofs) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Oneofs.Merge(m, src)
+}
+func (m *Oneofs) XXX_Size() int {
+	return xxx_messageInfo_Oneofs.Size(m)
+}
+func (m *Oneofs) XXX_DiscardUnknown() {
+	xxx_messageInfo_Oneofs.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Oneofs proto.InternalMessageInfo
+
+type isOneofs_Union interface {
+	isOneofs_Union()
+}
+
+type Oneofs_OneofEnum struct {
+	OneofEnum Enum `protobuf:"varint,1,opt,name=oneof_enum,json=oneofEnum,proto3,enum=pb3.Enum,oneof"`
+}
+
+type Oneofs_OneofString struct {
+	OneofString string `protobuf:"bytes,2,opt,name=oneof_string,json=oneofString,proto3,oneof"`
+}
+
+type Oneofs_OneofNested struct {
+	OneofNested *Nested `protobuf:"bytes,3,opt,name=oneof_nested,json=oneofNested,proto3,oneof"`
+}
+
+func (*Oneofs_OneofEnum) isOneofs_Union() {}
+
+func (*Oneofs_OneofString) isOneofs_Union() {}
+
+func (*Oneofs_OneofNested) isOneofs_Union() {}
+
+func (m *Oneofs) GetUnion() isOneofs_Union {
+	if m != nil {
+		return m.Union
+	}
+	return nil
+}
+
+func (m *Oneofs) GetOneofEnum() Enum {
+	if x, ok := m.GetUnion().(*Oneofs_OneofEnum); ok {
+		return x.OneofEnum
+	}
+	return Enum_ZERO
+}
+
+func (m *Oneofs) GetOneofString() string {
+	if x, ok := m.GetUnion().(*Oneofs_OneofString); ok {
+		return x.OneofString
+	}
+	return ""
+}
+
+func (m *Oneofs) GetOneofNested() *Nested {
+	if x, ok := m.GetUnion().(*Oneofs_OneofNested); ok {
+		return x.OneofNested
+	}
+	return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*Oneofs) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
+		(*Oneofs_OneofEnum)(nil),
+		(*Oneofs_OneofString)(nil),
+		(*Oneofs_OneofNested)(nil),
+	}
+}
+
+// Message contains map fields.
+type Maps struct {
+	Int32ToStr           map[int32]string   `protobuf:"bytes,1,rep,name=int32_to_str,json=int32ToStr,proto3" json:"int32_to_str,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	BoolToUint32         map[bool]uint32    `protobuf:"bytes,2,rep,name=bool_to_uint32,json=boolToUint32,proto3" json:"bool_to_uint32,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
+	Uint64ToEnum         map[uint64]Enum    `protobuf:"bytes,3,rep,name=uint64_to_enum,json=uint64ToEnum,proto3" json:"uint64_to_enum,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=pb3.Enum"`
+	StrToNested          map[string]*Nested `protobuf:"bytes,4,rep,name=str_to_nested,json=strToNested,proto3" json:"str_to_nested,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	StrToOneofs          map[string]*Oneofs `protobuf:"bytes,5,rep,name=str_to_oneofs,json=strToOneofs,proto3" json:"str_to_oneofs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
+	XXX_unrecognized     []byte             `json:"-"`
+	XXX_sizecache        int32              `json:"-"`
+}
+
+func (m *Maps) ProtoReflect() protoreflect.Message {
+	return xxx_Test_protoFile_messageTypes[5].MessageOf(m)
+}
+func (m *Maps) Reset()         { *m = Maps{} }
+func (m *Maps) String() string { return proto.CompactTextString(m) }
+func (*Maps) ProtoMessage()    {}
+func (*Maps) Descriptor() ([]byte, []int) {
+	return fileDescriptor_33e0a17922cde063_gzipped, []int{5}
+}
+
+func (m *Maps) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Maps.Unmarshal(m, b)
+}
+func (m *Maps) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Maps.Marshal(b, m, deterministic)
+}
+func (m *Maps) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Maps.Merge(m, src)
+}
+func (m *Maps) XXX_Size() int {
+	return xxx_messageInfo_Maps.Size(m)
+}
+func (m *Maps) XXX_DiscardUnknown() {
+	xxx_messageInfo_Maps.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Maps proto.InternalMessageInfo
+
+func (m *Maps) GetInt32ToStr() map[int32]string {
+	if m != nil {
+		return m.Int32ToStr
+	}
+	return nil
+}
+
+func (m *Maps) GetBoolToUint32() map[bool]uint32 {
+	if m != nil {
+		return m.BoolToUint32
+	}
+	return nil
+}
+
+func (m *Maps) GetUint64ToEnum() map[uint64]Enum {
+	if m != nil {
+		return m.Uint64ToEnum
+	}
+	return nil
+}
+
+func (m *Maps) GetStrToNested() map[string]*Nested {
+	if m != nil {
+		return m.StrToNested
+	}
+	return nil
+}
+
+func (m *Maps) GetStrToOneofs() map[string]*Oneofs {
+	if m != nil {
+		return m.StrToOneofs
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterFile("encoding/testprotos/pb3/test.proto", fileDescriptor_33e0a17922cde063_gzipped)
+	proto.RegisterEnum("pb3.Enum", Enum_name, Enum_value)
+	proto.RegisterEnum("pb3.Enums_NestedEnum", Enums_NestedEnum_name, Enums_NestedEnum_value)
+	proto.RegisterType((*Scalars)(nil), "pb3.Scalars")
+	proto.RegisterType((*Enums)(nil), "pb3.Enums")
+	proto.RegisterType((*Nests)(nil), "pb3.Nests")
+	proto.RegisterType((*Nested)(nil), "pb3.Nested")
+	proto.RegisterType((*Oneofs)(nil), "pb3.Oneofs")
+	proto.RegisterType((*Maps)(nil), "pb3.Maps")
+	proto.RegisterMapType((map[bool]uint32)(nil), "pb3.Maps.BoolToUint32Entry")
+	proto.RegisterMapType((map[int32]string)(nil), "pb3.Maps.Int32ToStrEntry")
+	proto.RegisterMapType((map[string]*Nested)(nil), "pb3.Maps.StrToNestedEntry")
+	proto.RegisterMapType((map[string]*Oneofs)(nil), "pb3.Maps.StrToOneofsEntry")
+	proto.RegisterMapType((map[uint64]Enum)(nil), "pb3.Maps.Uint64ToEnumEntry")
+}
+
+var fileDescriptor_33e0a17922cde063 = []byte{
+	// 1690 bytes of the wire-encoded FileDescriptorProto
+	0x0a, 0x22, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x70, 0x62, 0x33, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x12, 0x03, 0x70, 0x62, 0x33, 0x22, 0x9e, 0x03, 0x0a, 0x07, 0x53, 0x63,
+	0x61, 0x6c, 0x61, 0x72, 0x73, 0x12, 0x15, 0x0a, 0x06, 0x73, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x73, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x17, 0x0a, 0x07,
+	0x73, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73,
+	0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34,
+	0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x19,
+	0x0a, 0x08, 0x73, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d,
+	0x52, 0x07, 0x73, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x5f, 0x75,
+	0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x73, 0x55, 0x69,
+	0x6e, 0x74, 0x36, 0x34, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32,
+	0x18, 0x06, 0x20, 0x01, 0x28, 0x11, 0x52, 0x07, 0x73, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12,
+	0x19, 0x0a, 0x08, 0x73, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x07, 0x20, 0x01, 0x28,
+	0x12, 0x52, 0x07, 0x73, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x5f,
+	0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x08, 0x20, 0x01, 0x28, 0x07, 0x52, 0x08, 0x73,
+	0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x5f, 0x66, 0x69, 0x78,
+	0x65, 0x64, 0x36, 0x34, 0x18, 0x09, 0x20, 0x01, 0x28, 0x06, 0x52, 0x08, 0x73, 0x46, 0x69, 0x78,
+	0x65, 0x64, 0x36, 0x34, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64,
+	0x33, 0x32, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x09, 0x73, 0x53, 0x66, 0x69, 0x78, 0x65,
+	0x64, 0x33, 0x32, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36,
+	0x34, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x10, 0x52, 0x09, 0x73, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64,
+	0x36, 0x34, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x14, 0x20,
+	0x01, 0x28, 0x02, 0x52, 0x06, 0x73, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73,
+	0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x73,
+	0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x5f, 0x62, 0x79, 0x74, 0x65,
+	0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x73, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12,
+	0x19, 0x0a, 0x08, 0x73, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x07, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22, 0x98, 0x01, 0x0a, 0x05, 0x45,
+	0x6e, 0x75, 0x6d, 0x73, 0x12, 0x20, 0x0a, 0x06, 0x73, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x01,
+	0x20, 0x01, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52,
+	0x05, 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x39, 0x0a, 0x0d, 0x73, 0x5f, 0x6e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e,
+	0x70, 0x62, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0b, 0x73, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75,
+	0x6d, 0x22, 0x32, 0x0a, 0x0a, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12,
+	0x08, 0x0a, 0x04, 0x43, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x55, 0x4e, 0x4f,
+	0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x44, 0x4f, 0x53, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x44,
+	0x49, 0x45, 0x5a, 0x10, 0x0a, 0x22, 0x2f, 0x0a, 0x05, 0x4e, 0x65, 0x73, 0x74, 0x73, 0x12, 0x26,
+	0x0a, 0x08, 0x73, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
+	0x32, 0x0b, 0x2e, 0x70, 0x62, 0x33, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x07, 0x73,
+	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x22, 0x4b, 0x0a, 0x06, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
+	0x12, 0x19, 0x0a, 0x08, 0x73, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x07, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x26, 0x0a, 0x08, 0x73,
+	0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e,
+	0x70, 0x62, 0x33, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x07, 0x73, 0x4e, 0x65, 0x73,
+	0x74, 0x65, 0x64, 0x22, 0x94, 0x01, 0x0a, 0x06, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x73, 0x12, 0x2a,
+	0x0a, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52,
+	0x09, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x23, 0x0a, 0x0c, 0x6f, 0x6e,
+	0x65, 0x6f, 0x66, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+	0x48, 0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12,
+	0x30, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18,
+	0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x33, 0x2e, 0x4e, 0x65, 0x73, 0x74,
+	0x65, 0x64, 0x48, 0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x4e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x42, 0x07, 0x0a, 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x22, 0xaf, 0x05, 0x0a, 0x04, 0x4d,
+	0x61, 0x70, 0x73, 0x12, 0x3b, 0x0a, 0x0c, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x6f, 0x5f,
+	0x73, 0x74, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x62, 0x33, 0x2e,
+	0x4d, 0x61, 0x70, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x54, 0x6f, 0x53, 0x74, 0x72, 0x45,
+	0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x54, 0x6f, 0x53, 0x74, 0x72,
+	0x12, 0x41, 0x0a, 0x0e, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x74, 0x6f, 0x5f, 0x75, 0x69, 0x6e, 0x74,
+	0x33, 0x32, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x62, 0x33, 0x2e, 0x4d,
+	0x61, 0x70, 0x73, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x54, 0x6f, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32,
+	0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6c, 0x54, 0x6f, 0x55, 0x69, 0x6e,
+	0x74, 0x33, 0x32, 0x12, 0x41, 0x0a, 0x0e, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x74, 0x6f,
+	0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x62,
+	0x33, 0x2e, 0x4d, 0x61, 0x70, 0x73, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x54, 0x6f, 0x45,
+	0x6e, 0x75, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34,
+	0x54, 0x6f, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x3e, 0x0a, 0x0d, 0x73, 0x74, 0x72, 0x5f, 0x74, 0x6f,
+	0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
+	0x70, 0x62, 0x33, 0x2e, 0x4d, 0x61, 0x70, 0x73, 0x2e, 0x53, 0x74, 0x72, 0x54, 0x6f, 0x4e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x54, 0x6f,
+	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x3e, 0x0a, 0x0d, 0x73, 0x74, 0x72, 0x5f, 0x74, 0x6f,
+	0x5f, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
+	0x70, 0x62, 0x33, 0x2e, 0x4d, 0x61, 0x70, 0x73, 0x2e, 0x53, 0x74, 0x72, 0x54, 0x6f, 0x4f, 0x6e,
+	0x65, 0x6f, 0x66, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x54, 0x6f,
+	0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x54,
+	0x6f, 0x53, 0x74, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
+	0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
+	0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
+	0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3f, 0x0a, 0x11, 0x42, 0x6f, 0x6f, 0x6c, 0x54, 0x6f, 0x55,
+	0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
+	0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
+	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c,
+	0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x4a, 0x0a, 0x11, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34,
+	0x54, 0x6f, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
+	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1f, 0x0a,
+	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70,
+	0x62, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
+	0x38, 0x01, 0x1a, 0x4b, 0x0a, 0x10, 0x53, 0x74, 0x72, 0x54, 0x6f, 0x4e, 0x65, 0x73, 0x74, 0x65,
+	0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x21, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
+	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x33, 0x2e, 0x4e, 0x65,
+	0x73, 0x74, 0x65, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
+	0x4b, 0x0a, 0x10, 0x53, 0x74, 0x72, 0x54, 0x6f, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x73, 0x45, 0x6e,
+	0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x21, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x33, 0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66,
+	0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x2a, 0x2b, 0x0a, 0x04,
+	0x45, 0x6e, 0x75, 0x6d, 0x12, 0x08, 0x0a, 0x04, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x07,
+	0x0a, 0x03, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x57, 0x4f, 0x10, 0x02,
+	0x12, 0x07, 0x0a, 0x03, 0x54, 0x45, 0x4e, 0x10, 0x0a, 0x42, 0x37, 0x5a, 0x35, 0x67, 0x69, 0x74,
+	0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2f, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x76, 0x32, 0x2f, 0x65, 0x6e, 0x63, 0x6f, 0x64,
+	0x69, 0x6e, 0x67, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x70,
+	0x62, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var fileDescriptor_33e0a17922cde063_gzipped = func() []byte {
+	bb := new(bytes.Buffer)
+	zw, _ := gzip.NewWriterLevel(bb, gzip.NoCompression)
+	zw.Write(fileDescriptor_33e0a17922cde063)
+	zw.Close()
+	return bb.Bytes()
+}()
+
+const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
+
+var Test_protoFile protoreflect.FileDescriptor
+
+var xxx_Test_protoFile_enumTypes [2]protoreflect.EnumType
+var xxx_Test_protoFile_messageTypes [11]protoimpl.MessageType
+var xxx_Test_protoFile_goTypes = []interface{}{
+	(Enum)(0),             // 0: pb3.Enum
+	(Enums_NestedEnum)(0), // 1: pb3.Enums.NestedEnum
+	(*Scalars)(nil),       // 2: pb3.Scalars
+	(*Enums)(nil),         // 3: pb3.Enums
+	(*Nests)(nil),         // 4: pb3.Nests
+	(*Nested)(nil),        // 5: pb3.Nested
+	(*Oneofs)(nil),        // 6: pb3.Oneofs
+	(*Maps)(nil),          // 7: pb3.Maps
+	nil,                   // 8: pb3.Maps.Int32ToStrEntry
+	nil,                   // 9: pb3.Maps.BoolToUint32Entry
+	nil,                   // 10: pb3.Maps.Uint64ToEnumEntry
+	nil,                   // 11: pb3.Maps.StrToNestedEntry
+	nil,                   // 12: pb3.Maps.StrToOneofsEntry
+}
+var xxx_Test_protoFile_depIdxs = []int32{
+	0,  // pb3.Enums.s_enum:type_name -> pb3.Enum
+	1,  // pb3.Enums.s_nested_enum:type_name -> pb3.Enums.NestedEnum
+	5,  // pb3.Nests.s_nested:type_name -> pb3.Nested
+	5,  // pb3.Nested.s_nested:type_name -> pb3.Nested
+	0,  // pb3.Oneofs.oneof_enum:type_name -> pb3.Enum
+	5,  // pb3.Oneofs.oneof_nested:type_name -> pb3.Nested
+	8,  // pb3.Maps.int32_to_str:type_name -> pb3.Maps.Int32ToStrEntry
+	9,  // pb3.Maps.bool_to_uint32:type_name -> pb3.Maps.BoolToUint32Entry
+	10, // pb3.Maps.uint64_to_enum:type_name -> pb3.Maps.Uint64ToEnumEntry
+	11, // pb3.Maps.str_to_nested:type_name -> pb3.Maps.StrToNestedEntry
+	12, // pb3.Maps.str_to_oneofs:type_name -> pb3.Maps.StrToOneofsEntry
+	0,  // pb3.Maps.Uint64ToEnumEntry.value:type_name -> pb3.Enum
+	5,  // pb3.Maps.StrToNestedEntry.value:type_name -> pb3.Nested
+	6,  // pb3.Maps.StrToOneofsEntry.value:type_name -> pb3.Oneofs
+}
+
+func init() {
+	var messageTypes [11]protoreflect.MessageType
+	Test_protoFile = protoimpl.FileBuilder{
+		RawDescriptor:      fileDescriptor_33e0a17922cde063,
+		GoTypes:            xxx_Test_protoFile_goTypes,
+		DependencyIndexes:  xxx_Test_protoFile_depIdxs,
+		EnumOutputTypes:    xxx_Test_protoFile_enumTypes[:],
+		MessageOutputTypes: messageTypes[:],
+	}.Init()
+	messageGoTypes := xxx_Test_protoFile_goTypes[2:][:11]
+	for i, mt := range messageTypes[:] {
+		xxx_Test_protoFile_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
+		xxx_Test_protoFile_messageTypes[i].PBType = mt
+	}
+	xxx_Test_protoFile_goTypes = nil
+	xxx_Test_protoFile_depIdxs = nil
+}
diff --git a/encoding/textpb/testprotos/pb3/test.proto b/encoding/testprotos/pb3/test.proto
similarity index 70%
rename from encoding/textpb/testprotos/pb3/test.proto
rename to encoding/testprotos/pb3/test.proto
index d672816..20638d6 100644
--- a/encoding/textpb/testprotos/pb3/test.proto
+++ b/encoding/testprotos/pb3/test.proto
@@ -6,12 +6,11 @@
 syntax = "proto3";
 
 package pb3;
-option go_package = "github.com/golang/protobuf/v2/encoding/textpb/testprotos/pb3";
+option go_package = "github.com/golang/protobuf/v2/encoding/testprotos/pb3";
 
 // Scalars contains scalar field types.
 message Scalars {
   bool s_bool = 1;
-
   int32 s_int32 = 2;
   int64 s_int64 = 3;
   uint32 s_uint32 = 4;
@@ -56,7 +55,7 @@
 
 // Message contains nested message field.
 message Nests {
-  Nested s_nested = 1;
+  Nested s_nested = 2;
 }
 
 // Message type used as submessage.
@@ -64,3 +63,21 @@
   string s_string = 1;
   Nested s_nested = 2;
 }
+
+// Message contains oneof field.
+message Oneofs {
+  oneof union {
+    Enum oneof_enum = 1;
+    string oneof_string = 2;
+    Nested oneof_nested = 3;
+  }
+}
+
+// Message contains map fields.
+message Maps {
+  map<int32, string> int32_to_str = 1;
+  map<bool, uint32> bool_to_uint32 = 2;
+  map<uint64, Enum> uint64_to_enum = 3;
+  map<string, Nested> str_to_nested = 4;
+  map<string, Oneofs> str_to_oneofs = 5;
+}
diff --git a/encoding/textpb/decode_test.go b/encoding/textpb/decode_test.go
index fa9c5a3..56c09b2 100644
--- a/encoding/textpb/decode_test.go
+++ b/encoding/textpb/decode_test.go
@@ -21,12 +21,13 @@
 	// TODO: Remove this when protoV1 registers these hooks for you.
 	_ "github.com/golang/protobuf/v2/internal/legacy"
 
-	"github.com/golang/protobuf/v2/encoding/textpb/testprotos/pb2"
-	"github.com/golang/protobuf/v2/encoding/textpb/testprotos/pb3"
+	"github.com/golang/protobuf/v2/encoding/testprotos/pb2"
+	"github.com/golang/protobuf/v2/encoding/testprotos/pb3"
 )
 
 func init() {
-	// TODO: remove this when generated code registers to V2 global registry.
+	// TODO: remove these registerExtension calls when generated code registers
+	// to V2 global registry.
 	registerExtension(pb2.E_OptExtBool)
 	registerExtension(pb2.E_OptExtString)
 	registerExtension(pb2.E_OptExtEnum)
@@ -66,7 +67,7 @@
 		inputMessage: &pb2.Scalars{},
 		wantMessage:  &pb2.Scalars{},
 	}, {
-		desc:         "proto2 optional scalar fields set to zero values",
+		desc:         "proto2 optional scalars set to zero values",
 		inputMessage: &pb2.Scalars{},
 		inputText: `opt_bool: false
 opt_int32: 0
@@ -102,7 +103,7 @@
 			OptString:   scalar.String(""),
 		},
 	}, {
-		desc:         "proto3 scalar fields set to zero values",
+		desc:         "proto3 scalars set to zero values",
 		inputMessage: &pb3.Scalars{},
 		inputText: `s_bool: false
 s_int32: 0
@@ -122,7 +123,7 @@
 `,
 		wantMessage: &pb3.Scalars{},
 	}, {
-		desc:         "proto2 optional scalar fields",
+		desc:         "proto2 optional scalars",
 		inputMessage: &pb2.Scalars{},
 		inputText: `opt_bool: true
 opt_int32: 255
@@ -154,7 +155,7 @@
 			OptString:   scalar.String("谷歌"),
 		},
 	}, {
-		desc:         "proto3 scalar fields",
+		desc:         "proto3 scalars",
 		inputMessage: &pb3.Scalars{},
 		inputText: `s_bool: true
 s_int32: 255
@@ -261,28 +262,28 @@
 		inputText:    "s_sfixed64: bad",
 		wantErr:      true,
 	}, {
-		desc:         "float32 positive infinity",
+		desc:         "float positive infinity",
 		inputMessage: &pb3.Scalars{},
 		inputText:    "s_float: inf",
 		wantMessage: &pb3.Scalars{
 			SFloat: float32(math.Inf(1)),
 		},
 	}, {
-		desc:         "float32 negative infinity",
+		desc:         "float negative infinity",
 		inputMessage: &pb3.Scalars{},
 		inputText:    "s_float: -inf",
 		wantMessage: &pb3.Scalars{
 			SFloat: float32(math.Inf(-1)),
 		},
 	}, {
-		desc:         "float64 positive infinity",
+		desc:         "double positive infinity",
 		inputMessage: &pb3.Scalars{},
 		inputText:    "s_double: inf",
 		wantMessage: &pb3.Scalars{
 			SDouble: math.Inf(1),
 		},
 	}, {
-		desc:         "float64 negative infinity",
+		desc:         "double negative infinity",
 		inputMessage: &pb3.Scalars{},
 		inputText:    "s_double: -inf",
 		wantMessage: &pb3.Scalars{
@@ -314,13 +315,6 @@
 `,
 		wantErr: true,
 	}, {
-		desc:         "proto2 invalid singular field",
-		inputMessage: &pb2.Scalars{},
-		inputText: `
-opt_bool: [true, false]
-`,
-		wantErr: true,
-	}, {
 		desc:         "proto2 more duplicate singular field",
 		inputMessage: &pb2.Scalars{},
 		inputText: `
@@ -330,6 +324,13 @@
 `,
 		wantErr: true,
 	}, {
+		desc:         "proto2 invalid singular field",
+		inputMessage: &pb2.Scalars{},
+		inputText: `
+opt_bool: [true, false]
+`,
+		wantErr: true,
+	}, {
 		desc:         "proto3 duplicate singular field",
 		inputMessage: &pb3.Scalars{},
 		inputText: `
@@ -350,22 +351,22 @@
 		desc:         "proto2 enum",
 		inputMessage: &pb2.Enums{},
 		inputText: `
-opt_enum: FIRST
+opt_enum: ONE
 opt_nested_enum: UNO
 `,
 		wantMessage: &pb2.Enums{
-			OptEnum:       pb2.Enum_FIRST.Enum(),
+			OptEnum:       pb2.Enum_ONE.Enum(),
 			OptNestedEnum: pb2.Enums_UNO.Enum(),
 		},
 	}, {
 		desc:         "proto2 enum set to numeric values",
 		inputMessage: &pb2.Enums{},
 		inputText: `
-opt_enum: 1
+opt_enum: 2
 opt_nested_enum: 2
 `,
 		wantMessage: &pb2.Enums{
-			OptEnum:       pb2.Enum_FIRST.Enum(),
+			OptEnum:       pb2.Enum_TWO.Enum(),
 			OptNestedEnum: pb2.Enums_DOS.Enum(),
 		},
 	}, {
@@ -383,7 +384,7 @@
 		desc:         "proto2 enum set to invalid named",
 		inputMessage: &pb2.Enums{},
 		inputText: `
-opt_enum: UNNAMED 
+opt_enum: UNNAMED
 opt_nested_enum: UNNAMED_TOO
 `,
 		wantErr: true,
@@ -403,11 +404,11 @@
 		inputMessage: &pb3.Enums{},
 		inputText: `
 s_enum: 2
-s_nested_enum: 1
+s_nested_enum: 2
 `,
 		wantMessage: &pb3.Enums{
 			SEnum:       pb3.Enum_TWO,
-			SNestedEnum: pb3.Enums_UNO,
+			SNestedEnum: pb3.Enums_DOS,
 		},
 	}, {
 		desc:         "proto3 enum unnamed numeric value",
@@ -477,57 +478,67 @@
 			},
 		},
 	}, {
-		desc:         "oneof field set to empty string",
-		inputMessage: &pb2.Oneofs{},
-		inputText:    "str: ''",
-		wantMessage: &pb2.Oneofs{
-			Union: &pb2.Oneofs_Str{},
+		desc:         "oneof set to empty string",
+		inputMessage: &pb3.Oneofs{},
+		inputText:    "oneof_string: ''",
+		wantMessage: &pb3.Oneofs{
+			Union: &pb3.Oneofs_OneofString{},
 		},
 	}, {
-		desc:         "oneof field set to string",
-		inputMessage: &pb2.Oneofs{},
-		inputText:    "str: 'hello'",
-		wantMessage: &pb2.Oneofs{
-			Union: &pb2.Oneofs_Str{
-				Str: "hello",
+		desc:         "oneof set to string",
+		inputMessage: &pb3.Oneofs{},
+		inputText:    "oneof_string: 'hello'",
+		wantMessage: &pb3.Oneofs{
+			Union: &pb3.Oneofs_OneofString{
+				OneofString: "hello",
 			},
 		},
 	}, {
-		desc:         "oneof field set to empty message",
-		inputMessage: &pb2.Oneofs{},
-		inputText:    "msg: {}",
-		wantMessage: &pb2.Oneofs{
-			Union: &pb2.Oneofs_Msg{
-				Msg: &pb2.Nested{},
+		desc:         "oneof set to enum",
+		inputMessage: &pb3.Oneofs{},
+		inputText:    "oneof_enum: TEN",
+		wantMessage: &pb3.Oneofs{
+			Union: &pb3.Oneofs_OneofEnum{
+				OneofEnum: pb3.Enum_TEN,
 			},
 		},
 	}, {
-		desc:         "oneof field set to message",
-		inputMessage: &pb2.Oneofs{},
+		desc:         "oneof set to empty message",
+		inputMessage: &pb3.Oneofs{},
+		inputText:    "oneof_nested: {}",
+		wantMessage: &pb3.Oneofs{
+			Union: &pb3.Oneofs_OneofNested{
+				OneofNested: &pb3.Nested{},
+			},
+		},
+	}, {
+		desc:         "oneof set to message",
+		inputMessage: &pb3.Oneofs{},
 		inputText: `
-msg: {
-  opt_string: "nested message"
+oneof_nested: {
+  s_string: "nested message"
 }
 `,
-		wantMessage: &pb2.Oneofs{
-			Union: &pb2.Oneofs_Msg{
-				Msg: &pb2.Nested{
-					OptString: scalar.String("nested message"),
+		wantMessage: &pb3.Oneofs{
+			Union: &pb3.Oneofs_OneofNested{
+				OneofNested: &pb3.Nested{
+					SString: "nested message",
 				},
 			},
 		},
 	}, {
-		desc:         "oneof field set to last value",
-		inputMessage: &pb2.Oneofs{},
+		desc:         "oneof set to last value",
+		inputMessage: &pb3.Oneofs{},
 		inputText: `
-msg: {
-  opt_string: "nested message"
+oneof_nested: {
+  s_string: "nested message"
 }
-str: "wins"
+oneof_enum: TEN
+oneof_string: "wins"
 `,
-		wantMessage: &pb2.Oneofs{
-			Union: &pb2.Oneofs_Str{
-				Str: "wins",
+		wantMessage: &pb3.Oneofs{
+			Union: &pb3.Oneofs_OneofString{
+				OneofString: "wins",
 			},
 		},
 	}, {
@@ -564,14 +575,14 @@
 		desc:         "repeated enums",
 		inputMessage: &pb2.Enums{},
 		inputText: `
-rpt_enum: TENTH
+rpt_enum: TEN
 rpt_enum: 1
 rpt_nested_enum: [DOS, 2]
 rpt_enum: 42
 rpt_nested_enum: -47
 `,
 		wantMessage: &pb2.Enums{
-			RptEnum:       []pb2.Enum{pb2.Enum_TENTH, pb2.Enum_FIRST, 42},
+			RptEnum:       []pb2.Enum{pb2.Enum_TEN, pb2.Enum_ONE, 42},
 			RptNestedEnum: []pb2.Enums_NestedEnum{pb2.Enums_DOS, pb2.Enums_DOS, -47},
 		},
 	}, {
@@ -608,22 +619,22 @@
 		inputMessage: &pb2.Nests{},
 		inputText: `
 RptGroup: {
-  rpt_bool: true
-  rpt_bool: false
+  rpt_string: "hello"
+  rpt_string: "world"
 }
 RptGroup: {}
 `,
 		wantMessage: &pb2.Nests{
 			Rptgroup: []*pb2.Nests_RptGroup{
 				{
-					RptBool: []bool{true, false},
+					RptString: []string{"hello", "world"},
 				},
 				{},
 			},
 		},
 	}, {
 		desc:         "map fields 1",
-		inputMessage: &pb2.Maps{},
+		inputMessage: &pb3.Maps{},
 		inputText: `
 int32_to_str: {
   key: -101
@@ -633,37 +644,25 @@
   key: 0
   value: "zero"
 }
-sfixed64_to_bool: {
-  key: 0
-  value: false
+bool_to_uint32: {
+  key: false
+  value: 101
 }
 int32_to_str: {
   key: 255
   value: "0xff"
 }
 bool_to_uint32: {
-  key: false
-  value: 101
-}
-sfixed64_to_bool: {
-  key: 51966
-  value: true
-}
-bool_to_uint32: {
   key: true
   value: 42
 }
 `,
-		wantMessage: &pb2.Maps{
+		wantMessage: &pb3.Maps{
 			Int32ToStr: map[int32]string{
 				-101: "-101",
 				0xff: "0xff",
 				0:    "zero",
 			},
-			Sfixed64ToBool: map[int64]bool{
-				0xcafe: true,
-				0:      false,
-			},
 			BoolToUint32: map[bool]uint32{
 				true:  42,
 				false: 101,
@@ -671,76 +670,76 @@
 		},
 	}, {
 		desc:         "map fields 2",
-		inputMessage: &pb2.Maps{},
+		inputMessage: &pb3.Maps{},
 		inputText: `
 uint64_to_enum: {
   key: 1
-  value: FIRST
+  value: ONE
 }
 uint64_to_enum: {
   key: 2
-  value: SECOND
+  value: 2
 }
 uint64_to_enum: {
   key: 10
-  value: TENTH
+  value: 101
 }
 `,
-		wantMessage: &pb2.Maps{
-			Uint64ToEnum: map[uint64]pb2.Enum{
-				1:  pb2.Enum_FIRST,
-				2:  pb2.Enum_SECOND,
-				10: pb2.Enum_TENTH,
+		wantMessage: &pb3.Maps{
+			Uint64ToEnum: map[uint64]pb3.Enum{
+				1:  pb3.Enum_ONE,
+				2:  pb3.Enum_TWO,
+				10: 101,
 			},
 		},
 	}, {
 		desc:         "map fields 3",
-		inputMessage: &pb2.Maps{},
+		inputMessage: &pb3.Maps{},
 		inputText: `
 str_to_nested: {
   key: "nested_one"
   value: {
-    opt_string: "nested in a map"
+    s_string: "nested in a map"
   }
 }
 `,
-		wantMessage: &pb2.Maps{
-			StrToNested: map[string]*pb2.Nested{
-				"nested_one": &pb2.Nested{
-					OptString: scalar.String("nested in a map"),
+		wantMessage: &pb3.Maps{
+			StrToNested: map[string]*pb3.Nested{
+				"nested_one": &pb3.Nested{
+					SString: "nested in a map",
 				},
 			},
 		},
 	}, {
 		desc:         "map fields 4",
-		inputMessage: &pb2.Maps{},
+		inputMessage: &pb3.Maps{},
 		inputText: `
 str_to_oneofs: {
   key: "nested"
   value: {
-    msg: {
-      opt_string: "nested oneof in map field value"
+    oneof_nested: {
+      s_string: "nested oneof in map field value"
     }
   }
 }
 str_to_oneofs: {
   key: "string"
   value: {
-    str: "hello"
+    oneof_string: "hello"
   }
 }
 `,
-		wantMessage: &pb2.Maps{
-			StrToOneofs: map[string]*pb2.Oneofs{
-				"string": &pb2.Oneofs{
-					Union: &pb2.Oneofs_Str{
-						Str: "hello",
+		wantMessage: &pb3.Maps{
+			StrToOneofs: map[string]*pb3.Oneofs{
+				"string": &pb3.Oneofs{
+					Union: &pb3.Oneofs_OneofString{
+						OneofString: "hello",
 					},
 				},
-				"nested": &pb2.Oneofs{
-					Union: &pb2.Oneofs_Msg{
-						Msg: &pb2.Nested{
-							OptString: scalar.String("nested oneof in map field value"),
+				"nested": &pb3.Oneofs{
+					Union: &pb3.Oneofs_OneofNested{
+						OneofNested: &pb3.Nested{
+							SString: "nested oneof in map field value",
 						},
 					},
 				},
@@ -748,7 +747,7 @@
 		},
 	}, {
 		desc:         "map contains duplicate keys",
-		inputMessage: &pb2.Maps{},
+		inputMessage: &pb3.Maps{},
 		inputText: `
 int32_to_str: {
   key: 0
@@ -759,14 +758,14 @@
   value: "zero"
 }
 `,
-		wantMessage: &pb2.Maps{
+		wantMessage: &pb3.Maps{
 			Int32ToStr: map[int32]string{
 				0: "zero",
 			},
 		},
 	}, {
 		desc:         "map contains duplicate key fields",
-		inputMessage: &pb2.Maps{},
+		inputMessage: &pb3.Maps{},
 		inputText: `
 int32_to_str: {
   key: 0
@@ -777,7 +776,7 @@
 		wantErr: true,
 	}, {
 		desc:         "map contains duplicate value fields",
-		inputMessage: &pb2.Maps{},
+		inputMessage: &pb3.Maps{},
 		inputText: `
 int32_to_str: {
   key: 1
@@ -788,44 +787,103 @@
 		wantErr: true,
 	}, {
 		desc:         "map contains missing key",
-		inputMessage: &pb2.Maps{},
+		inputMessage: &pb3.Maps{},
 		inputText: `
 int32_to_str: {
   value: "zero"
 }
+bool_to_uint32: {
+  value: 47
+}
+str_to_nested: {
+  value: {}
+}
 `,
-		wantMessage: &pb2.Maps{
+		wantMessage: &pb3.Maps{
 			Int32ToStr: map[int32]string{
 				0: "zero",
 			},
+			BoolToUint32: map[bool]uint32{
+				false: 47,
+			},
+			StrToNested: map[string]*pb3.Nested{
+				"": {},
+			},
 		},
 	}, {
 		desc:         "map contains missing value",
-		inputMessage: &pb2.Maps{},
+		inputMessage: &pb3.Maps{},
 		inputText: `
 int32_to_str: {
   key: 100
 }
+bool_to_uint32: {
+  key: true
+}
+uint64_to_enum: {
+  key: 101
+}
+str_to_nested: {
+  key: "hello"
+}
 `,
-		wantMessage: &pb2.Maps{
+		wantMessage: &pb3.Maps{
 			Int32ToStr: map[int32]string{
 				100: "",
 			},
+			BoolToUint32: map[bool]uint32{
+				true: 0,
+			},
+			Uint64ToEnum: map[uint64]pb3.Enum{
+				101: pb3.Enum_ZERO,
+			},
+			StrToNested: map[string]*pb3.Nested{
+				"hello": {},
+			},
 		},
 	}, {
 		desc:         "map contains missing key and value",
-		inputMessage: &pb2.Maps{},
+		inputMessage: &pb3.Maps{},
 		inputText: `
 int32_to_str: {}
+bool_to_uint32: {}
+uint64_to_enum: {}
+str_to_nested: {}
 `,
-		wantMessage: &pb2.Maps{
+		wantMessage: &pb3.Maps{
+			Int32ToStr: map[int32]string{
+				0: "",
+			},
+			BoolToUint32: map[bool]uint32{
+				false: 0,
+			},
+			Uint64ToEnum: map[uint64]pb3.Enum{
+				0: pb3.Enum_ZERO,
+			},
+			StrToNested: map[string]*pb3.Nested{
+				"": {},
+			},
+		},
+	}, {
+		desc:         "map contains overriding entries",
+		inputMessage: &pb3.Maps{},
+		inputText: `
+int32_to_str: {
+  key: 0
+}
+int32_to_str: {
+  value: "empty"
+}
+int32_to_str: {}
+`,
+		wantMessage: &pb3.Maps{
 			Int32ToStr: map[int32]string{
 				0: "",
 			},
 		},
 	}, {
 		desc:         "map contains unknown field",
-		inputMessage: &pb2.Maps{},
+		inputMessage: &pb3.Maps{},
 		inputText: `
 int32_to_str: {
   key: 0
@@ -836,7 +894,7 @@
 		wantErr: true,
 	}, {
 		desc:         "map contains extension-like key field",
-		inputMessage: &pb2.Maps{},
+		inputMessage: &pb3.Maps{},
 		inputText: `
 int32_to_str: {
   [key]: 10
@@ -846,7 +904,7 @@
 		wantErr: true,
 	}, {
 		desc:         "map contains invalid key",
-		inputMessage: &pb2.Maps{},
+		inputMessage: &pb3.Maps{},
 		inputText: `
 int32_to_str: {
   key: "invalid"
@@ -856,7 +914,7 @@
 		wantErr: true,
 	}, {
 		desc:         "map contains invalid value",
-		inputMessage: &pb2.Maps{},
+		inputMessage: &pb3.Maps{},
 		inputText: `
 int32_to_str: {
   key: 100
@@ -866,7 +924,7 @@
 		wantErr: true,
 	}, {
 		desc:         "map using mix of [] and repeated",
-		inputMessage: &pb2.Maps{},
+		inputMessage: &pb3.Maps{},
 		inputText: `
 int32_to_str: {
   key: 1
@@ -889,7 +947,7 @@
   value: "two"
 }
 `,
-		wantMessage: &pb2.Maps{
+		wantMessage: &pb3.Maps{
 			Int32ToStr: map[int32]string{
 				0: "",
 				1: "one",
@@ -902,7 +960,7 @@
 		inputMessage: &pb2.Requireds{},
 		wantErr:      true,
 	}, {
-		desc:         "proto2 required field set but not optional",
+		desc:         "proto2 required field set",
 		inputMessage: &pb2.PartialRequired{},
 		inputText:    "req_string: 'this is required'",
 		wantMessage: &pb2.PartialRequired{
@@ -913,17 +971,15 @@
 		inputMessage: &pb2.Requireds{},
 		inputText: `
 req_bool: false
-req_fixed32: 47
 req_sfixed64: 3203386110
 req_string: "hello"
-req_enum: FIRST
+req_enum: ONE
 `,
 		wantMessage: &pb2.Requireds{
 			ReqBool:     scalar.Bool(false),
-			ReqFixed32:  scalar.Uint32(47),
 			ReqSfixed64: scalar.Int64(0xbeefcafe),
 			ReqString:   scalar.String("hello"),
-			ReqEnum:     pb2.Enum_FIRST.Enum(),
+			ReqEnum:     pb2.Enum_ONE.Enum(),
 		},
 		wantErr: true,
 	}, {
@@ -931,28 +987,18 @@
 		inputMessage: &pb2.Requireds{},
 		inputText: `
 req_bool: false
-req_fixed32: 0
-req_fixed64: 0
-req_sfixed32: 0
 req_sfixed64: 0
-req_float: 0
 req_double: 0
 req_string: ""
-req_bytes: ""
-req_enum: UNKNOWN
+req_enum: ONE
 req_nested: {}
 `,
 		wantMessage: &pb2.Requireds{
 			ReqBool:     scalar.Bool(false),
-			ReqFixed32:  scalar.Uint32(0),
-			ReqFixed64:  scalar.Uint64(0),
-			ReqSfixed32: scalar.Int32(0),
 			ReqSfixed64: scalar.Int64(0),
-			ReqFloat:    scalar.Float32(0),
 			ReqDouble:   scalar.Float64(0),
 			ReqString:   scalar.String(""),
-			ReqEnum:     pb2.Enum_UNKNOWN.Enum(),
-			ReqBytes:    []byte{},
+			ReqEnum:     pb2.Enum_ONE.Enum(),
 			ReqNested:   &pb2.Nested{},
 		},
 	}, {
@@ -1011,6 +1057,17 @@
 		},
 		wantErr: true,
 	}, {
+		desc:         "indirect required field in oneof",
+		inputMessage: &pb2.IndirectRequired{},
+		inputText: `oneof_nested: {}
+`,
+		wantMessage: &pb2.IndirectRequired{
+			Union: &pb2.IndirectRequired_OneofNested{
+				OneofNested: &pb2.NestedWithRequired{},
+			},
+		},
+		wantErr: true,
+	}, {
 		desc:         "ignore reserved field",
 		inputMessage: &pb2.Nests{},
 		inputText:    "reserved_field: 'ignore this'",
@@ -1029,7 +1086,7 @@
 }
 [pb2.opt_ext_string]: "extension field"
 opt_int32: 42
-[pb2.opt_ext_enum]: TENTH
+[pb2.opt_ext_enum]: TEN
 `,
 		wantMessage: func() proto.Message {
 			m := &pb2.Extensions{
@@ -1039,7 +1096,7 @@
 			}
 			setExtension(m, pb2.E_OptExtBool, true)
 			setExtension(m, pb2.E_OptExtString, "extension field")
-			setExtension(m, pb2.E_OptExtEnum, pb2.Enum_TENTH)
+			setExtension(m, pb2.E_OptExtEnum, pb2.Enum_TEN)
 			setExtension(m, pb2.E_OptExtNested, &pb2.Nested{
 				OptString: scalar.String("nested in an extension"),
 				OptNested: &pb2.Nested{
@@ -1051,10 +1108,10 @@
 	}, {
 		desc:         "extensions of repeated fields",
 		inputMessage: &pb2.Extensions{},
-		inputText: `[pb2.rpt_ext_enum]: TENTH
+		inputText: `[pb2.rpt_ext_enum]: TEN
 [pb2.rpt_ext_enum]: 101
 [pb2.rpt_ext_fixed32]: 42
-[pb2.rpt_ext_enum]: FIRST
+[pb2.rpt_ext_enum]: ONE
 [pb2.rpt_ext_nested]: {
   opt_string: "one"
 }
@@ -1068,7 +1125,7 @@
 `,
 		wantMessage: func() proto.Message {
 			m := &pb2.Extensions{}
-			setExtension(m, pb2.E_RptExtEnum, &[]pb2.Enum{pb2.Enum_TENTH, 101, pb2.Enum_FIRST})
+			setExtension(m, pb2.E_RptExtEnum, &[]pb2.Enum{pb2.Enum_TEN, 101, pb2.Enum_ONE})
 			setExtension(m, pb2.E_RptExtFixed32, &[]uint32{42, 47})
 			setExtension(m, pb2.E_RptExtNested, &[]*pb2.Nested{
 				&pb2.Nested{OptString: scalar.String("one")},
@@ -1081,7 +1138,7 @@
 		desc:         "extensions of non-repeated fields in another message",
 		inputMessage: &pb2.Extensions{},
 		inputText: `[pb2.ExtensionsContainer.opt_ext_bool]: true
-[pb2.ExtensionsContainer.opt_ext_enum]: TENTH
+[pb2.ExtensionsContainer.opt_ext_enum]: TEN
 [pb2.ExtensionsContainer.opt_ext_nested]: {
   opt_string: "nested in an extension"
   opt_nested: {
@@ -1094,7 +1151,7 @@
 			m := &pb2.Extensions{}
 			setExtension(m, pb2.E_ExtensionsContainer_OptExtBool, true)
 			setExtension(m, pb2.E_ExtensionsContainer_OptExtString, "extension field")
-			setExtension(m, pb2.E_ExtensionsContainer_OptExtEnum, pb2.Enum_TENTH)
+			setExtension(m, pb2.E_ExtensionsContainer_OptExtEnum, pb2.Enum_TEN)
 			setExtension(m, pb2.E_ExtensionsContainer_OptExtNested, &pb2.Nested{
 				OptString: scalar.String("nested in an extension"),
 				OptNested: &pb2.Nested{
@@ -1112,13 +1169,13 @@
 [pb2.ExtensionsContainer.rpt_ext_nested]: {
   opt_string: "one"
 }
-[pb2.ExtensionsContainer.rpt_ext_enum]: TENTH
+[pb2.ExtensionsContainer.rpt_ext_enum]: TEN
 [pb2.ExtensionsContainer.rpt_ext_nested]: {
   opt_string: "two"
 }
 [pb2.ExtensionsContainer.rpt_ext_enum]: 101
 [pb2.ExtensionsContainer.rpt_ext_string]: "hello"
-[pb2.ExtensionsContainer.rpt_ext_enum]: FIRST
+[pb2.ExtensionsContainer.rpt_ext_enum]: ONE
 [pb2.ExtensionsContainer.rpt_ext_nested]: {
   opt_string: "three"
 }
@@ -1130,7 +1187,7 @@
 				OptBool:   scalar.Bool(true),
 				OptInt32:  scalar.Int32(42),
 			}
-			setExtension(m, pb2.E_ExtensionsContainer_RptExtEnum, &[]pb2.Enum{pb2.Enum_TENTH, 101, pb2.Enum_FIRST})
+			setExtension(m, pb2.E_ExtensionsContainer_RptExtEnum, &[]pb2.Enum{pb2.Enum_TEN, 101, pb2.Enum_ONE})
 			setExtension(m, pb2.E_ExtensionsContainer_RptExtString, &[]string{"hello", "world"})
 			setExtension(m, pb2.E_ExtensionsContainer_RptExtNested, &[]*pb2.Nested{
 				&pb2.Nested{OptString: scalar.String("one")},
@@ -1211,6 +1268,8 @@
 			return m
 		}(),
 	}, {
+		// TODO: Change these tests to directly use anypb.Any type instead once
+		// type has been regenerated with V2 compiler.
 		desc:         "Any not expanded",
 		inputMessage: &pb2.KnownTypes{},
 		inputText: `opt_any: {
diff --git a/encoding/textpb/encode_test.go b/encoding/textpb/encode_test.go
index b32d2db..36a2648 100644
--- a/encoding/textpb/encode_test.go
+++ b/encoding/textpb/encode_test.go
@@ -29,8 +29,8 @@
 	_ "github.com/golang/protobuf/v2/internal/legacy"
 
 	anypb "github.com/golang/protobuf/ptypes/any"
-	"github.com/golang/protobuf/v2/encoding/textpb/testprotos/pb2"
-	"github.com/golang/protobuf/v2/encoding/textpb/testprotos/pb3"
+	"github.com/golang/protobuf/v2/encoding/testprotos/pb2"
+	"github.com/golang/protobuf/v2/encoding/testprotos/pb3"
 )
 
 func init() {
@@ -67,7 +67,7 @@
 	knownFields.Set(wire.Number(xd.Field), pval)
 }
 
-func wrapAnyPB(any *anypb.Any) proto.Message {
+func wrapV1Message(any *anypb.Any) proto.Message {
 	return impl.Export{}.MessageOf(any).Interface()
 }
 
@@ -88,15 +88,15 @@
 		want    string
 		wantErr bool
 	}{{
-		desc:  "proto2 optional scalar fields not set",
+		desc:  "proto2 optional scalars not set",
 		input: &pb2.Scalars{},
 		want:  "\n",
 	}, {
-		desc:  "proto3 scalar fields not set",
+		desc:  "proto3 scalars not set",
 		input: &pb3.Scalars{},
 		want:  "\n",
 	}, {
-		desc: "proto2 optional scalar fields set to zero values",
+		desc: "proto2 optional scalars set to zero values",
 		input: &pb2.Scalars{
 			OptBool:     scalar.Bool(false),
 			OptInt32:    scalar.Int32(0),
@@ -131,7 +131,7 @@
 opt_string: ""
 `,
 	}, {
-		desc: "proto3 scalar fields set to zero values",
+		desc: "proto3 scalars set to zero values",
 		input: &pb3.Scalars{
 			SBool:     false,
 			SInt32:    0,
@@ -151,7 +151,7 @@
 		},
 		want: "\n",
 	}, {
-		desc: "proto2 optional scalar fields set to some values",
+		desc: "proto2 optional scalars set to some values",
 		input: &pb2.Scalars{
 			OptBool:     scalar.Bool(true),
 			OptInt32:    scalar.Int32(0xff),
@@ -164,9 +164,8 @@
 			OptSfixed32: scalar.Int32(-32),
 			OptFloat:    scalar.Float32(1.02),
 			OptDouble:   scalar.Float64(1.0199999809265137),
-			// TODO: Update encoder to not output UTF8 for bytes.
-			OptBytes:  []byte("\xe8\xb0\xb7\xe6\xad\x8c"),
-			OptString: scalar.String("谷歌"),
+			OptBytes:    []byte("\xe8\xb0\xb7\xe6\xad\x8c"),
+			OptString:   scalar.String("谷歌"),
 		},
 		want: `opt_bool: true
 opt_int32: 255
@@ -183,82 +182,70 @@
 opt_string: "谷歌"
 `,
 	}, {
-		desc: "float32 nan",
+		desc: "float nan",
 		input: &pb3.Scalars{
 			SFloat: float32(math.NaN()),
 		},
 		want: "s_float: nan\n",
 	}, {
-		desc: "float32 positive infinity",
+		desc: "float positive infinity",
 		input: &pb3.Scalars{
 			SFloat: float32(math.Inf(1)),
 		},
 		want: "s_float: inf\n",
 	}, {
-		desc: "float32 negative infinity",
+		desc: "float negative infinity",
 		input: &pb3.Scalars{
 			SFloat: float32(math.Inf(-1)),
 		},
 		want: "s_float: -inf\n",
 	}, {
-		desc: "float64 nan",
+		desc: "double nan",
 		input: &pb3.Scalars{
 			SDouble: math.NaN(),
 		},
 		want: "s_double: nan\n",
 	}, {
-		desc: "float64 positive infinity",
+		desc: "double positive infinity",
 		input: &pb3.Scalars{
 			SDouble: math.Inf(1),
 		},
 		want: "s_double: inf\n",
 	}, {
-		desc: "float64 negative infinity",
+		desc: "double negative infinity",
 		input: &pb3.Scalars{
 			SDouble: math.Inf(-1),
 		},
 		want: "s_double: -inf\n",
 	}, {
-		desc: "proto2 bytes set to empty string",
-		input: &pb2.Scalars{
-			OptBytes: []byte(""),
-		},
-		want: "opt_bytes: \"\"\n",
-	}, {
-		desc: "proto3 bytes set to empty string",
-		input: &pb3.Scalars{
-			SBytes: []byte(""),
-		},
-		want: "\n",
-	}, {
 		desc:  "proto2 enum not set",
 		input: &pb2.Enums{},
 		want:  "\n",
 	}, {
 		desc: "proto2 enum set to zero value",
 		input: &pb2.Enums{
-			OptEnum:       pb2.Enum_UNKNOWN.Enum(),
+			OptEnum:       pb2Enum(0),
 			OptNestedEnum: pb2Enums_NestedEnum(0),
 		},
-		want: `opt_enum: UNKNOWN
+		want: `opt_enum: 0
 opt_nested_enum: 0
 `,
 	}, {
 		desc: "proto2 enum",
 		input: &pb2.Enums{
-			OptEnum:       pb2.Enum_FIRST.Enum(),
+			OptEnum:       pb2.Enum_ONE.Enum(),
 			OptNestedEnum: pb2.Enums_UNO.Enum(),
 		},
-		want: `opt_enum: FIRST
+		want: `opt_enum: ONE
 opt_nested_enum: UNO
 `,
 	}, {
 		desc: "proto2 enum set to numeric values",
 		input: &pb2.Enums{
-			OptEnum:       pb2Enum(1),
+			OptEnum:       pb2Enum(2),
 			OptNestedEnum: pb2Enums_NestedEnum(2),
 		},
-		want: `opt_enum: FIRST
+		want: `opt_enum: TWO
 opt_nested_enum: DOS
 `,
 	}, {
@@ -285,19 +272,19 @@
 		desc: "proto3 enum",
 		input: &pb3.Enums{
 			SEnum:       pb3.Enum_ONE,
-			SNestedEnum: pb3.Enums_DIEZ,
+			SNestedEnum: pb3.Enums_UNO,
 		},
 		want: `s_enum: ONE
-s_nested_enum: DIEZ
+s_nested_enum: UNO
 `,
 	}, {
 		desc: "proto3 enum set to numeric values",
 		input: &pb3.Enums{
 			SEnum:       2,
-			SNestedEnum: 1,
+			SNestedEnum: 2,
 		},
 		want: `s_enum: TWO
-s_nested_enum: UNO
+s_nested_enum: DOS
 `,
 	}, {
 		desc: "proto3 enum set to unnamed numeric values",
@@ -339,27 +326,25 @@
 }
 `,
 	}, {
-		desc: "proto2 group fields",
+		desc: "proto2 groups",
 		input: &pb2.Nests{
 			Optgroup: &pb2.Nests_OptGroup{
-				OptBool:   scalar.Bool(true),
 				OptString: scalar.String("inside a group"),
 				OptNested: &pb2.Nested{
 					OptString: scalar.String("nested message inside a group"),
 				},
 				Optnestedgroup: &pb2.Nests_OptGroup_OptNestedGroup{
-					OptEnum: pb2.Enum_TENTH.Enum(),
+					OptFixed32: scalar.Uint32(47),
 				},
 			},
 		},
 		want: `OptGroup: {
-  opt_bool: true
   opt_string: "inside a group"
   opt_nested: {
     opt_string: "nested message inside a group"
   }
   OptNestedGroup: {
-    opt_enum: TENTH
+    opt_fixed32: 47
   }
 }
 `,
@@ -368,6 +353,12 @@
 		input: &pb3.Nests{},
 		want:  "\n",
 	}, {
+		desc: "proto3 nested message set to empty",
+		input: &pb3.Nests{
+			SNested: &pb3.Nested{},
+		},
+		want: "s_nested: {}\n",
+	}, {
 		desc: "proto3 nested message",
 		input: &pb3.Nests{
 			SNested: &pb3.Nested{
@@ -385,50 +376,61 @@
 }
 `,
 	}, {
-		desc:  "oneof fields",
-		input: &pb2.Oneofs{},
+		desc:  "oneof not set",
+		input: &pb3.Oneofs{},
 		want:  "\n",
 	}, {
-		desc: "oneof field set to empty string",
-		input: &pb2.Oneofs{
-			Union: &pb2.Oneofs_Str{},
+		desc: "oneof set to empty string",
+		input: &pb3.Oneofs{
+			Union: &pb3.Oneofs_OneofString{},
 		},
-		want: "str: \"\"\n",
+		want: `oneof_string: ""
+`,
 	}, {
-		desc: "oneof field set to string",
-		input: &pb2.Oneofs{
-			Union: &pb2.Oneofs_Str{
-				Str: "hello",
+		desc: "oneof set to string",
+		input: &pb3.Oneofs{
+			Union: &pb3.Oneofs_OneofString{
+				OneofString: "hello",
 			},
 		},
-		want: "str: \"hello\"\n",
+		want: `oneof_string: "hello"
+`,
 	}, {
-		desc: "oneof field set to empty message",
-		input: &pb2.Oneofs{
-			Union: &pb2.Oneofs_Msg{
-				Msg: &pb2.Nested{},
+		desc: "oneof set to enum",
+		input: &pb3.Oneofs{
+			Union: &pb3.Oneofs_OneofEnum{
+				OneofEnum: pb3.Enum_ZERO,
 			},
 		},
-		want: "msg: {}\n",
+		want: `oneof_enum: ZERO
+`,
 	}, {
-		desc: "oneof field set to message",
-		input: &pb2.Oneofs{
-			Union: &pb2.Oneofs_Msg{
-				Msg: &pb2.Nested{
-					OptString: scalar.String("nested message"),
+		desc: "oneof set to empty message",
+		input: &pb3.Oneofs{
+			Union: &pb3.Oneofs_OneofNested{
+				OneofNested: &pb3.Nested{},
+			},
+		},
+		want: "oneof_nested: {}\n",
+	}, {
+		desc: "oneof set to message",
+		input: &pb3.Oneofs{
+			Union: &pb3.Oneofs_OneofNested{
+				OneofNested: &pb3.Nested{
+					SString: "nested message",
 				},
 			},
 		},
-		want: `msg: {
-  opt_string: "nested message"
+		want: `oneof_nested: {
+  s_string: "nested message"
 }
 `,
 	}, {
-		desc:  "repeated not set",
+		desc:  "repeated fields not set",
 		input: &pb2.Repeats{},
 		want:  "\n",
 	}, {
-		desc: "repeated set to empty slices",
+		desc: "repeated fields set to empty slices",
 		input: &pb2.Repeats{
 			RptBool:   []bool{},
 			RptInt32:  []int32{},
@@ -441,7 +443,7 @@
 		},
 		want: "\n",
 	}, {
-		desc: "repeated set to some values",
+		desc: "repeated fields set to some values",
 		input: &pb2.Repeats{
 			RptBool:   []bool{true, false, true, true},
 			RptInt32:  []int32{1, 6, 0, 0},
@@ -483,28 +485,28 @@
 rpt_bytes: "世界"
 `,
 	}, {
-		desc: "repeated enum",
+		desc: "repeated enums",
 		input: &pb2.Enums{
-			RptEnum:       []pb2.Enum{pb2.Enum_FIRST, 2, pb2.Enum_TENTH, 42},
+			RptEnum:       []pb2.Enum{pb2.Enum_ONE, 2, pb2.Enum_TEN, 42},
 			RptNestedEnum: []pb2.Enums_NestedEnum{2, 47, 10},
 		},
-		want: `rpt_enum: FIRST
-rpt_enum: SECOND
-rpt_enum: TENTH
+		want: `rpt_enum: ONE
+rpt_enum: TWO
+rpt_enum: TEN
 rpt_enum: 42
 rpt_nested_enum: DOS
 rpt_nested_enum: 47
 rpt_nested_enum: DIEZ
 `,
 	}, {
-		desc: "repeated nested message set to empty",
+		desc: "repeated messages set to empty",
 		input: &pb2.Nests{
 			RptNested: []*pb2.Nested{},
 			Rptgroup:  []*pb2.Nests_RptGroup{},
 		},
 		want: "\n",
 	}, {
-		desc: "repeated nested messages",
+		desc: "repeated messages",
 		input: &pb2.Nests{
 			RptNested: []*pb2.Nested{
 				{
@@ -531,7 +533,7 @@
 rpt_nested: {}
 `,
 	}, {
-		desc: "repeated nested messages contains nil value",
+		desc: "repeated messages contains nil value",
 		input: &pb2.Nests{
 			RptNested: []*pb2.Nested{nil, {}},
 		},
@@ -539,48 +541,45 @@
 rpt_nested: {}
 `,
 	}, {
-		desc: "repeated group fields",
+		desc: "repeated groups",
 		input: &pb2.Nests{
 			Rptgroup: []*pb2.Nests_RptGroup{
 				{
-					RptBool: []bool{true, false},
+					RptString: []string{"hello", "world"},
 				},
 				{},
+				nil,
 			},
 		},
 		want: `RptGroup: {
-  rpt_bool: true
-  rpt_bool: false
+  rpt_string: "hello"
+  rpt_string: "world"
 }
 RptGroup: {}
+RptGroup: {}
 `,
 	}, {
-		desc:  "map fields empty",
-		input: &pb2.Maps{},
+		desc:  "map fields not set",
+		input: &pb3.Maps{},
 		want:  "\n",
 	}, {
-		desc: "map fields set to empty maps",
-		input: &pb2.Maps{
-			Int32ToStr:     map[int32]string{},
-			Sfixed64ToBool: map[int64]bool{},
-			BoolToUint32:   map[bool]uint32{},
-			Uint64ToEnum:   map[uint64]pb2.Enum{},
-			StrToNested:    map[string]*pb2.Nested{},
-			StrToOneofs:    map[string]*pb2.Oneofs{},
+		desc: "map fields set to empty",
+		input: &pb3.Maps{
+			Int32ToStr:   map[int32]string{},
+			BoolToUint32: map[bool]uint32{},
+			Uint64ToEnum: map[uint64]pb3.Enum{},
+			StrToNested:  map[string]*pb3.Nested{},
+			StrToOneofs:  map[string]*pb3.Oneofs{},
 		},
 		want: "\n",
 	}, {
 		desc: "map fields 1",
-		input: &pb2.Maps{
+		input: &pb3.Maps{
 			Int32ToStr: map[int32]string{
 				-101: "-101",
 				0xff: "0xff",
 				0:    "zero",
 			},
-			Sfixed64ToBool: map[int64]bool{
-				0xcafe: true,
-				0:      false,
-			},
 			BoolToUint32: map[bool]uint32{
 				true:  42,
 				false: 101,
@@ -598,14 +597,6 @@
   key: 255
   value: "0xff"
 }
-sfixed64_to_bool: {
-  key: 0
-  value: false
-}
-sfixed64_to_bool: {
-  key: 51966
-  value: true
-}
 bool_to_uint32: {
   key: false
   value: 101
@@ -617,55 +608,60 @@
 `,
 	}, {
 		desc: "map fields 2",
-		input: &pb2.Maps{
-			Uint64ToEnum: map[uint64]pb2.Enum{
-				1:  pb2.Enum_FIRST,
-				2:  pb2.Enum_SECOND,
-				10: pb2.Enum_TENTH,
+		input: &pb3.Maps{
+			Uint64ToEnum: map[uint64]pb3.Enum{
+				1:  pb3.Enum_ONE,
+				2:  pb3.Enum_TWO,
+				10: pb3.Enum_TEN,
+				47: 47,
 			},
 		},
 		want: `uint64_to_enum: {
   key: 1
-  value: FIRST
+  value: ONE
 }
 uint64_to_enum: {
   key: 2
-  value: SECOND
+  value: TWO
 }
 uint64_to_enum: {
   key: 10
-  value: TENTH
+  value: TEN
+}
+uint64_to_enum: {
+  key: 47
+  value: 47
 }
 `,
 	}, {
 		desc: "map fields 3",
-		input: &pb2.Maps{
-			StrToNested: map[string]*pb2.Nested{
-				"nested_one": &pb2.Nested{
-					OptString: scalar.String("nested in a map"),
+		input: &pb3.Maps{
+			StrToNested: map[string]*pb3.Nested{
+				"nested": &pb3.Nested{
+					SString: "nested in a map",
 				},
 			},
 		},
 		want: `str_to_nested: {
-  key: "nested_one"
+  key: "nested"
   value: {
-    opt_string: "nested in a map"
+    s_string: "nested in a map"
   }
 }
 `,
 	}, {
 		desc: "map fields 4",
-		input: &pb2.Maps{
-			StrToOneofs: map[string]*pb2.Oneofs{
-				"string": &pb2.Oneofs{
-					Union: &pb2.Oneofs_Str{
-						Str: "hello",
+		input: &pb3.Maps{
+			StrToOneofs: map[string]*pb3.Oneofs{
+				"string": &pb3.Oneofs{
+					Union: &pb3.Oneofs_OneofString{
+						OneofString: "hello",
 					},
 				},
-				"nested": &pb2.Oneofs{
-					Union: &pb2.Oneofs_Msg{
-						Msg: &pb2.Nested{
-							OptString: scalar.String("nested oneof in map field value"),
+				"nested": &pb3.Oneofs{
+					Union: &pb3.Oneofs_OneofNested{
+						OneofNested: &pb3.Nested{
+							SString: "nested oneof in map field value",
 						},
 					},
 				},
@@ -674,22 +670,22 @@
 		want: `str_to_oneofs: {
   key: "nested"
   value: {
-    msg: {
-      opt_string: "nested oneof in map field value"
+    oneof_nested: {
+      s_string: "nested oneof in map field value"
     }
   }
 }
 str_to_oneofs: {
   key: "string"
   value: {
-    str: "hello"
+    oneof_string: "hello"
   }
 }
 `,
 	}, {
-		desc: "map field nil message value",
-		input: &pb2.Maps{
-			StrToNested: map[string]*pb2.Nested{
+		desc: "map field contains nil value",
+		input: &pb3.Maps{
+			StrToNested: map[string]*pb3.Nested{
 				"nil": nil,
 			},
 		},
@@ -707,45 +703,33 @@
 		desc: "proto2 required fields partially set",
 		input: &pb2.Requireds{
 			ReqBool:     scalar.Bool(false),
-			ReqFixed32:  scalar.Uint32(47),
 			ReqSfixed64: scalar.Int64(0xbeefcafe),
 			ReqDouble:   scalar.Float64(math.NaN()),
 			ReqString:   scalar.String("hello"),
-			ReqEnum:     pb2.Enum_FIRST.Enum(),
+			ReqEnum:     pb2.Enum_ONE.Enum(),
 		},
 		want: `req_bool: false
-req_fixed32: 47
 req_sfixed64: 3203386110
 req_double: nan
 req_string: "hello"
-req_enum: FIRST
+req_enum: ONE
 `,
 		wantErr: true,
 	}, {
 		desc: "proto2 required fields all set",
 		input: &pb2.Requireds{
 			ReqBool:     scalar.Bool(false),
-			ReqFixed32:  scalar.Uint32(0),
-			ReqFixed64:  scalar.Uint64(0),
-			ReqSfixed32: scalar.Int32(0),
 			ReqSfixed64: scalar.Int64(0),
-			ReqFloat:    scalar.Float32(0),
-			ReqDouble:   scalar.Float64(0),
+			ReqDouble:   scalar.Float64(1.23),
 			ReqString:   scalar.String(""),
-			ReqEnum:     pb2.Enum_UNKNOWN.Enum(),
-			ReqBytes:    []byte{},
+			ReqEnum:     pb2.Enum_ONE.Enum(),
 			ReqNested:   &pb2.Nested{},
 		},
 		want: `req_bool: false
-req_fixed32: 0
-req_fixed64: 0
-req_sfixed32: 0
 req_sfixed64: 0
-req_float: 0
-req_double: 0
+req_double: 1.23
 req_string: ""
-req_bytes: ""
-req_enum: UNKNOWN
+req_enum: ONE
 req_nested: {}
 `,
 	}, {
@@ -790,6 +774,15 @@
 `,
 		wantErr: true,
 	}, {
+		desc: "indirect required field in oneof",
+		input: &pb2.IndirectRequired{
+			Union: &pb2.IndirectRequired_OneofNested{
+				OneofNested: &pb2.NestedWithRequired{},
+			},
+		},
+		want:    "oneof_nested: {}\n",
+		wantErr: true,
+	}, {
 		desc: "unknown varint and fixed types",
 		input: &pb2.Scalars{
 			OptString: scalar.String("this message contains unknown fields"),
@@ -861,7 +854,7 @@
 			}
 			setExtension(m, pb2.E_OptExtBool, true)
 			setExtension(m, pb2.E_OptExtString, "extension field")
-			setExtension(m, pb2.E_OptExtEnum, pb2.Enum_TENTH)
+			setExtension(m, pb2.E_OptExtEnum, pb2.Enum_TEN)
 			setExtension(m, pb2.E_OptExtNested, &pb2.Nested{
 				OptString: scalar.String("nested in an extension"),
 				OptNested: &pb2.Nested{
@@ -874,7 +867,7 @@
 opt_bool: true
 opt_int32: 42
 [pb2.opt_ext_bool]: true
-[pb2.opt_ext_enum]: TENTH
+[pb2.opt_ext_enum]: TEN
 [pb2.opt_ext_nested]: {
   opt_string: "nested in an extension"
   opt_nested: {
@@ -884,7 +877,7 @@
 [pb2.opt_ext_string]: "extension field"
 `,
 	}, {
-		desc: "registered extension but not set",
+		desc: "extension message field set to nil",
 		input: func() proto.Message {
 			m := &pb2.Extensions{}
 			setExtension(m, pb2.E_OptExtNested, nil)
@@ -895,7 +888,7 @@
 		desc: "extensions of repeated fields",
 		input: func() proto.Message {
 			m := &pb2.Extensions{}
-			setExtension(m, pb2.E_RptExtEnum, &[]pb2.Enum{pb2.Enum_TENTH, 101, pb2.Enum_FIRST})
+			setExtension(m, pb2.E_RptExtEnum, &[]pb2.Enum{pb2.Enum_TEN, 101, pb2.Enum_ONE})
 			setExtension(m, pb2.E_RptExtFixed32, &[]uint32{42, 47})
 			setExtension(m, pb2.E_RptExtNested, &[]*pb2.Nested{
 				&pb2.Nested{OptString: scalar.String("one")},
@@ -904,9 +897,9 @@
 			})
 			return m
 		}(),
-		want: `[pb2.rpt_ext_enum]: TENTH
+		want: `[pb2.rpt_ext_enum]: TEN
 [pb2.rpt_ext_enum]: 101
-[pb2.rpt_ext_enum]: FIRST
+[pb2.rpt_ext_enum]: ONE
 [pb2.rpt_ext_fixed32]: 42
 [pb2.rpt_ext_fixed32]: 47
 [pb2.rpt_ext_nested]: {
@@ -925,7 +918,7 @@
 			m := &pb2.Extensions{}
 			setExtension(m, pb2.E_ExtensionsContainer_OptExtBool, true)
 			setExtension(m, pb2.E_ExtensionsContainer_OptExtString, "extension field")
-			setExtension(m, pb2.E_ExtensionsContainer_OptExtEnum, pb2.Enum_TENTH)
+			setExtension(m, pb2.E_ExtensionsContainer_OptExtEnum, pb2.Enum_TEN)
 			setExtension(m, pb2.E_ExtensionsContainer_OptExtNested, &pb2.Nested{
 				OptString: scalar.String("nested in an extension"),
 				OptNested: &pb2.Nested{
@@ -935,7 +928,7 @@
 			return m
 		}(),
 		want: `[pb2.ExtensionsContainer.opt_ext_bool]: true
-[pb2.ExtensionsContainer.opt_ext_enum]: TENTH
+[pb2.ExtensionsContainer.opt_ext_enum]: TEN
 [pb2.ExtensionsContainer.opt_ext_nested]: {
   opt_string: "nested in an extension"
   opt_nested: {
@@ -952,7 +945,7 @@
 				OptBool:   scalar.Bool(true),
 				OptInt32:  scalar.Int32(42),
 			}
-			setExtension(m, pb2.E_ExtensionsContainer_RptExtEnum, &[]pb2.Enum{pb2.Enum_TENTH, 101, pb2.Enum_FIRST})
+			setExtension(m, pb2.E_ExtensionsContainer_RptExtEnum, &[]pb2.Enum{pb2.Enum_TEN, 101, pb2.Enum_ONE})
 			setExtension(m, pb2.E_ExtensionsContainer_RptExtString, &[]string{"hello", "world"})
 			setExtension(m, pb2.E_ExtensionsContainer_RptExtNested, &[]*pb2.Nested{
 				&pb2.Nested{OptString: scalar.String("one")},
@@ -964,9 +957,9 @@
 		want: `opt_string: "non-extension field"
 opt_bool: true
 opt_int32: 42
-[pb2.ExtensionsContainer.rpt_ext_enum]: TENTH
+[pb2.ExtensionsContainer.rpt_ext_enum]: TEN
 [pb2.ExtensionsContainer.rpt_ext_enum]: 101
-[pb2.ExtensionsContainer.rpt_ext_enum]: FIRST
+[pb2.ExtensionsContainer.rpt_ext_enum]: ONE
 [pb2.ExtensionsContainer.rpt_ext_nested]: {
   opt_string: "one"
 }
@@ -1031,7 +1024,7 @@
 }
 `,
 	}, {
-		desc: "Any message not expanded",
+		desc: "Any not expanded",
 		mo: textpb.MarshalOptions{
 			Resolver: preg.NewTypes(),
 		},
@@ -1047,7 +1040,7 @@
 			if err != nil {
 				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
 			}
-			return wrapAnyPB(&anypb.Any{
+			return wrapV1Message(&anypb.Any{
 				TypeUrl: "pb2.Nested",
 				Value:   b,
 			})
@@ -1056,7 +1049,7 @@
 value: "\n\x13embedded inside Any\x12\x0b\n\tinception"
 `,
 	}, {
-		desc: "Any message expanded",
+		desc: "Any expanded",
 		mo: textpb.MarshalOptions{
 			Resolver: preg.NewTypes((&pb2.Nested{}).ProtoReflect().Type()),
 		},
@@ -1072,7 +1065,7 @@
 			if err != nil {
 				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
 			}
-			return wrapAnyPB(&anypb.Any{
+			return wrapV1Message(&anypb.Any{
 				TypeUrl: "foo/pb2.Nested",
 				Value:   b,
 			})
@@ -1085,7 +1078,7 @@
 }
 `,
 	}, {
-		desc: "Any message expanded with missing required error",
+		desc: "Any expanded with missing required error",
 		mo: textpb.MarshalOptions{
 			Resolver: preg.NewTypes((&pb2.PartialRequired{}).ProtoReflect().Type()),
 		},
@@ -1099,7 +1092,7 @@
 			if _, ok := err.(*protoV1.RequiredNotSetError); !ok {
 				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
 			}
-			return wrapAnyPB(&anypb.Any{
+			return wrapV1Message(&anypb.Any{
 				TypeUrl: string(m.ProtoReflect().Type().FullName()),
 				Value:   b,
 			})
@@ -1110,11 +1103,11 @@
 `,
 		wantErr: true,
 	}, {
-		desc: "Any message with invalid value",
+		desc: "Any with invalid value",
 		mo: textpb.MarshalOptions{
 			Resolver: preg.NewTypes((&pb2.Nested{}).ProtoReflect().Type()),
 		},
-		input: wrapAnyPB(&anypb.Any{
+		input: wrapV1Message(&anypb.Any{
 			TypeUrl: "foo/pb2.Nested",
 			Value:   dhex("80"),
 		}),
diff --git a/encoding/textpb/other_test.go b/encoding/textpb/other_test.go
index 4200ac1..80babd2 100644
--- a/encoding/textpb/other_test.go
+++ b/encoding/textpb/other_test.go
@@ -5,15 +5,14 @@
 
 	protoV1 "github.com/golang/protobuf/proto"
 	"github.com/golang/protobuf/v2/encoding/textpb"
-	"github.com/golang/protobuf/v2/encoding/textpb/testprotos/pb2"
+	"github.com/golang/protobuf/v2/internal/impl"
+	"github.com/golang/protobuf/v2/internal/scalar"
 	"github.com/golang/protobuf/v2/proto"
 	preg "github.com/golang/protobuf/v2/reflect/protoregistry"
 
 	// The legacy package must be imported prior to use of any legacy messages.
 	// TODO: Remove this when protoV1 registers these hooks for you.
-	"github.com/golang/protobuf/v2/internal/impl"
 	_ "github.com/golang/protobuf/v2/internal/legacy"
-	"github.com/golang/protobuf/v2/internal/scalar"
 
 	anypb "github.com/golang/protobuf/ptypes/any"
 	durpb "github.com/golang/protobuf/ptypes/duration"
@@ -21,6 +20,7 @@
 	stpb "github.com/golang/protobuf/ptypes/struct"
 	tspb "github.com/golang/protobuf/ptypes/timestamp"
 	wpb "github.com/golang/protobuf/ptypes/wrappers"
+	"github.com/golang/protobuf/v2/encoding/testprotos/pb2"
 )
 
 func TestRoundTrip(t *testing.T) {
diff --git a/encoding/textpb/testprotos/pb2/test.pb.go b/encoding/textpb/testprotos/pb2/test.pb.go
deleted file mode 100644
index 57f7392..0000000
--- a/encoding/textpb/testprotos/pb2/test.pb.go
+++ /dev/null
@@ -1,2396 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: encoding/textpb/testprotos/pb2/test.proto
-
-package pb2
-
-import (
-	bytes "bytes"
-	gzip "compress/gzip"
-	proto "github.com/golang/protobuf/proto"
-	any "github.com/golang/protobuf/ptypes/any"
-	duration "github.com/golang/protobuf/ptypes/duration"
-	empty "github.com/golang/protobuf/ptypes/empty"
-	_struct "github.com/golang/protobuf/ptypes/struct"
-	timestamp "github.com/golang/protobuf/ptypes/timestamp"
-	wrappers "github.com/golang/protobuf/ptypes/wrappers"
-	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
-	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
-)
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
-
-type Enum int32
-
-const (
-	Enum_UNKNOWN Enum = 0
-	Enum_FIRST   Enum = 1
-	Enum_SECOND  Enum = 2
-	Enum_TENTH   Enum = 10
-)
-
-func (e Enum) Type() protoreflect.EnumType {
-	return xxx_Test_protoFile_enumTypes[0]
-}
-func (e Enum) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(e)
-}
-
-var Enum_name = map[int32]string{
-	0:  "UNKNOWN",
-	1:  "FIRST",
-	2:  "SECOND",
-	10: "TENTH",
-}
-
-var Enum_value = map[string]int32{
-	"UNKNOWN": 0,
-	"FIRST":   1,
-	"SECOND":  2,
-	"TENTH":   10,
-}
-
-func (x Enum) Enum() *Enum {
-	p := new(Enum)
-	*p = x
-	return p
-}
-
-func (x Enum) String() string {
-	return proto.EnumName(Enum_name, int32(x))
-}
-
-func (x *Enum) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(Enum_value, data, "Enum")
-	if err != nil {
-		return err
-	}
-	*x = Enum(value)
-	return nil
-}
-
-func (Enum) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{0}
-}
-
-type Enums_NestedEnum int32
-
-const (
-	Enums_UNO  Enums_NestedEnum = 1
-	Enums_DOS  Enums_NestedEnum = 2
-	Enums_DIEZ Enums_NestedEnum = 10
-)
-
-func (e Enums_NestedEnum) Type() protoreflect.EnumType {
-	return xxx_Test_protoFile_enumTypes[1]
-}
-func (e Enums_NestedEnum) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(e)
-}
-
-var Enums_NestedEnum_name = map[int32]string{
-	1:  "UNO",
-	2:  "DOS",
-	10: "DIEZ",
-}
-
-var Enums_NestedEnum_value = map[string]int32{
-	"UNO":  1,
-	"DOS":  2,
-	"DIEZ": 10,
-}
-
-func (x Enums_NestedEnum) Enum() *Enums_NestedEnum {
-	p := new(Enums_NestedEnum)
-	*p = x
-	return p
-}
-
-func (x Enums_NestedEnum) String() string {
-	return proto.EnumName(Enums_NestedEnum_name, int32(x))
-}
-
-func (x *Enums_NestedEnum) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(Enums_NestedEnum_value, data, "Enums_NestedEnum")
-	if err != nil {
-		return err
-	}
-	*x = Enums_NestedEnum(value)
-	return nil
-}
-
-func (Enums_NestedEnum) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{2, 0}
-}
-
-// Scalars contains optional scalar fields.
-type Scalars struct {
-	OptBool              *bool    `protobuf:"varint,1,opt,name=opt_bool,json=optBool" json:"opt_bool,omitempty"`
-	OptInt32             *int32   `protobuf:"varint,2,opt,name=opt_int32,json=optInt32" json:"opt_int32,omitempty"`
-	OptInt64             *int64   `protobuf:"varint,3,opt,name=opt_int64,json=optInt64" json:"opt_int64,omitempty"`
-	OptUint32            *uint32  `protobuf:"varint,4,opt,name=opt_uint32,json=optUint32" json:"opt_uint32,omitempty"`
-	OptUint64            *uint64  `protobuf:"varint,5,opt,name=opt_uint64,json=optUint64" json:"opt_uint64,omitempty"`
-	OptSint32            *int32   `protobuf:"zigzag32,6,opt,name=opt_sint32,json=optSint32" json:"opt_sint32,omitempty"`
-	OptSint64            *int64   `protobuf:"zigzag64,7,opt,name=opt_sint64,json=optSint64" json:"opt_sint64,omitempty"`
-	OptFixed32           *uint32  `protobuf:"fixed32,8,opt,name=opt_fixed32,json=optFixed32" json:"opt_fixed32,omitempty"`
-	OptFixed64           *uint64  `protobuf:"fixed64,9,opt,name=opt_fixed64,json=optFixed64" json:"opt_fixed64,omitempty"`
-	OptSfixed32          *int32   `protobuf:"fixed32,10,opt,name=opt_sfixed32,json=optSfixed32" json:"opt_sfixed32,omitempty"`
-	OptSfixed64          *int64   `protobuf:"fixed64,11,opt,name=opt_sfixed64,json=optSfixed64" json:"opt_sfixed64,omitempty"`
-	OptFloat             *float32 `protobuf:"fixed32,20,opt,name=opt_float,json=optFloat" json:"opt_float,omitempty"`
-	OptDouble            *float64 `protobuf:"fixed64,21,opt,name=opt_double,json=optDouble" json:"opt_double,omitempty"`
-	OptBytes             []byte   `protobuf:"bytes,14,opt,name=opt_bytes,json=optBytes" json:"opt_bytes,omitempty"`
-	OptString            *string  `protobuf:"bytes,13,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Scalars) ProtoReflect() protoreflect.Message {
-	return xxx_Test_protoFile_messageTypes[0].MessageOf(m)
-}
-func (m *Scalars) Reset()         { *m = Scalars{} }
-func (m *Scalars) String() string { return proto.CompactTextString(m) }
-func (*Scalars) ProtoMessage()    {}
-func (*Scalars) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{0}
-}
-
-func (m *Scalars) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Scalars.Unmarshal(m, b)
-}
-func (m *Scalars) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Scalars.Marshal(b, m, deterministic)
-}
-func (m *Scalars) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Scalars.Merge(m, src)
-}
-func (m *Scalars) XXX_Size() int {
-	return xxx_messageInfo_Scalars.Size(m)
-}
-func (m *Scalars) XXX_DiscardUnknown() {
-	xxx_messageInfo_Scalars.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Scalars proto.InternalMessageInfo
-
-func (m *Scalars) GetOptBool() bool {
-	if m != nil && m.OptBool != nil {
-		return *m.OptBool
-	}
-	return false
-}
-
-func (m *Scalars) GetOptInt32() int32 {
-	if m != nil && m.OptInt32 != nil {
-		return *m.OptInt32
-	}
-	return 0
-}
-
-func (m *Scalars) GetOptInt64() int64 {
-	if m != nil && m.OptInt64 != nil {
-		return *m.OptInt64
-	}
-	return 0
-}
-
-func (m *Scalars) GetOptUint32() uint32 {
-	if m != nil && m.OptUint32 != nil {
-		return *m.OptUint32
-	}
-	return 0
-}
-
-func (m *Scalars) GetOptUint64() uint64 {
-	if m != nil && m.OptUint64 != nil {
-		return *m.OptUint64
-	}
-	return 0
-}
-
-func (m *Scalars) GetOptSint32() int32 {
-	if m != nil && m.OptSint32 != nil {
-		return *m.OptSint32
-	}
-	return 0
-}
-
-func (m *Scalars) GetOptSint64() int64 {
-	if m != nil && m.OptSint64 != nil {
-		return *m.OptSint64
-	}
-	return 0
-}
-
-func (m *Scalars) GetOptFixed32() uint32 {
-	if m != nil && m.OptFixed32 != nil {
-		return *m.OptFixed32
-	}
-	return 0
-}
-
-func (m *Scalars) GetOptFixed64() uint64 {
-	if m != nil && m.OptFixed64 != nil {
-		return *m.OptFixed64
-	}
-	return 0
-}
-
-func (m *Scalars) GetOptSfixed32() int32 {
-	if m != nil && m.OptSfixed32 != nil {
-		return *m.OptSfixed32
-	}
-	return 0
-}
-
-func (m *Scalars) GetOptSfixed64() int64 {
-	if m != nil && m.OptSfixed64 != nil {
-		return *m.OptSfixed64
-	}
-	return 0
-}
-
-func (m *Scalars) GetOptFloat() float32 {
-	if m != nil && m.OptFloat != nil {
-		return *m.OptFloat
-	}
-	return 0
-}
-
-func (m *Scalars) GetOptDouble() float64 {
-	if m != nil && m.OptDouble != nil {
-		return *m.OptDouble
-	}
-	return 0
-}
-
-func (m *Scalars) GetOptBytes() []byte {
-	if m != nil {
-		return m.OptBytes
-	}
-	return nil
-}
-
-func (m *Scalars) GetOptString() string {
-	if m != nil && m.OptString != nil {
-		return *m.OptString
-	}
-	return ""
-}
-
-// Message contains repeated fields.
-type Repeats struct {
-	RptBool              []bool    `protobuf:"varint,1,rep,name=rpt_bool,json=rptBool" json:"rpt_bool,omitempty"`
-	RptInt32             []int32   `protobuf:"varint,2,rep,name=rpt_int32,json=rptInt32" json:"rpt_int32,omitempty"`
-	RptInt64             []int64   `protobuf:"varint,3,rep,name=rpt_int64,json=rptInt64" json:"rpt_int64,omitempty"`
-	RptUint32            []uint32  `protobuf:"varint,4,rep,name=rpt_uint32,json=rptUint32" json:"rpt_uint32,omitempty"`
-	RptUint64            []uint64  `protobuf:"varint,5,rep,name=rpt_uint64,json=rptUint64" json:"rpt_uint64,omitempty"`
-	RptFloat             []float32 `protobuf:"fixed32,6,rep,name=rpt_float,json=rptFloat" json:"rpt_float,omitempty"`
-	RptDouble            []float64 `protobuf:"fixed64,7,rep,name=rpt_double,json=rptDouble" json:"rpt_double,omitempty"`
-	RptString            []string  `protobuf:"bytes,15,rep,name=rpt_string,json=rptString" json:"rpt_string,omitempty"`
-	RptBytes             [][]byte  `protobuf:"bytes,14,rep,name=rpt_bytes,json=rptBytes" json:"rpt_bytes,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
-	XXX_unrecognized     []byte    `json:"-"`
-	XXX_sizecache        int32     `json:"-"`
-}
-
-func (m *Repeats) ProtoReflect() protoreflect.Message {
-	return xxx_Test_protoFile_messageTypes[1].MessageOf(m)
-}
-func (m *Repeats) Reset()         { *m = Repeats{} }
-func (m *Repeats) String() string { return proto.CompactTextString(m) }
-func (*Repeats) ProtoMessage()    {}
-func (*Repeats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{1}
-}
-
-func (m *Repeats) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Repeats.Unmarshal(m, b)
-}
-func (m *Repeats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Repeats.Marshal(b, m, deterministic)
-}
-func (m *Repeats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Repeats.Merge(m, src)
-}
-func (m *Repeats) XXX_Size() int {
-	return xxx_messageInfo_Repeats.Size(m)
-}
-func (m *Repeats) XXX_DiscardUnknown() {
-	xxx_messageInfo_Repeats.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Repeats proto.InternalMessageInfo
-
-func (m *Repeats) GetRptBool() []bool {
-	if m != nil {
-		return m.RptBool
-	}
-	return nil
-}
-
-func (m *Repeats) GetRptInt32() []int32 {
-	if m != nil {
-		return m.RptInt32
-	}
-	return nil
-}
-
-func (m *Repeats) GetRptInt64() []int64 {
-	if m != nil {
-		return m.RptInt64
-	}
-	return nil
-}
-
-func (m *Repeats) GetRptUint32() []uint32 {
-	if m != nil {
-		return m.RptUint32
-	}
-	return nil
-}
-
-func (m *Repeats) GetRptUint64() []uint64 {
-	if m != nil {
-		return m.RptUint64
-	}
-	return nil
-}
-
-func (m *Repeats) GetRptFloat() []float32 {
-	if m != nil {
-		return m.RptFloat
-	}
-	return nil
-}
-
-func (m *Repeats) GetRptDouble() []float64 {
-	if m != nil {
-		return m.RptDouble
-	}
-	return nil
-}
-
-func (m *Repeats) GetRptString() []string {
-	if m != nil {
-		return m.RptString
-	}
-	return nil
-}
-
-func (m *Repeats) GetRptBytes() [][]byte {
-	if m != nil {
-		return m.RptBytes
-	}
-	return nil
-}
-
-// Message contains enum fields.
-type Enums struct {
-	OptEnum              *Enum              `protobuf:"varint,1,opt,name=opt_enum,json=optEnum,enum=pb2.Enum" json:"opt_enum,omitempty"`
-	RptEnum              []Enum             `protobuf:"varint,2,rep,name=rpt_enum,json=rptEnum,enum=pb2.Enum" json:"rpt_enum,omitempty"`
-	OptNestedEnum        *Enums_NestedEnum  `protobuf:"varint,3,opt,name=opt_nested_enum,json=optNestedEnum,enum=pb2.Enums_NestedEnum" json:"opt_nested_enum,omitempty"`
-	RptNestedEnum        []Enums_NestedEnum `protobuf:"varint,4,rep,name=rpt_nested_enum,json=rptNestedEnum,enum=pb2.Enums_NestedEnum" json:"rpt_nested_enum,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
-	XXX_unrecognized     []byte             `json:"-"`
-	XXX_sizecache        int32              `json:"-"`
-}
-
-func (m *Enums) ProtoReflect() protoreflect.Message {
-	return xxx_Test_protoFile_messageTypes[2].MessageOf(m)
-}
-func (m *Enums) Reset()         { *m = Enums{} }
-func (m *Enums) String() string { return proto.CompactTextString(m) }
-func (*Enums) ProtoMessage()    {}
-func (*Enums) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{2}
-}
-
-func (m *Enums) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Enums.Unmarshal(m, b)
-}
-func (m *Enums) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Enums.Marshal(b, m, deterministic)
-}
-func (m *Enums) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Enums.Merge(m, src)
-}
-func (m *Enums) XXX_Size() int {
-	return xxx_messageInfo_Enums.Size(m)
-}
-func (m *Enums) XXX_DiscardUnknown() {
-	xxx_messageInfo_Enums.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Enums proto.InternalMessageInfo
-
-func (m *Enums) GetOptEnum() Enum {
-	if m != nil && m.OptEnum != nil {
-		return *m.OptEnum
-	}
-	return Enum_UNKNOWN
-}
-
-func (m *Enums) GetRptEnum() []Enum {
-	if m != nil {
-		return m.RptEnum
-	}
-	return nil
-}
-
-func (m *Enums) GetOptNestedEnum() Enums_NestedEnum {
-	if m != nil && m.OptNestedEnum != nil {
-		return *m.OptNestedEnum
-	}
-	return Enums_UNO
-}
-
-func (m *Enums) GetRptNestedEnum() []Enums_NestedEnum {
-	if m != nil {
-		return m.RptNestedEnum
-	}
-	return nil
-}
-
-// Message contains message and group fields.
-type Nests struct {
-	OptNested            *Nested           `protobuf:"bytes,1,opt,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
-	Optgroup             *Nests_OptGroup   `protobuf:"group,2,opt,name=OptGroup,json=optgroup" json:"optgroup,omitempty"`
-	RptNested            []*Nested         `protobuf:"bytes,3,rep,name=rpt_nested,json=rptNested" json:"rpt_nested,omitempty"`
-	Rptgroup             []*Nests_RptGroup `protobuf:"group,4,rep,name=RptGroup,json=rptgroup" json:"rptgroup,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
-	XXX_unrecognized     []byte            `json:"-"`
-	XXX_sizecache        int32             `json:"-"`
-}
-
-func (m *Nests) ProtoReflect() protoreflect.Message {
-	return xxx_Test_protoFile_messageTypes[3].MessageOf(m)
-}
-func (m *Nests) Reset()         { *m = Nests{} }
-func (m *Nests) String() string { return proto.CompactTextString(m) }
-func (*Nests) ProtoMessage()    {}
-func (*Nests) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{3}
-}
-
-func (m *Nests) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Nests.Unmarshal(m, b)
-}
-func (m *Nests) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Nests.Marshal(b, m, deterministic)
-}
-func (m *Nests) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Nests.Merge(m, src)
-}
-func (m *Nests) XXX_Size() int {
-	return xxx_messageInfo_Nests.Size(m)
-}
-func (m *Nests) XXX_DiscardUnknown() {
-	xxx_messageInfo_Nests.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Nests proto.InternalMessageInfo
-
-func (m *Nests) GetOptNested() *Nested {
-	if m != nil {
-		return m.OptNested
-	}
-	return nil
-}
-
-func (m *Nests) GetOptgroup() *Nests_OptGroup {
-	if m != nil {
-		return m.Optgroup
-	}
-	return nil
-}
-
-func (m *Nests) GetRptNested() []*Nested {
-	if m != nil {
-		return m.RptNested
-	}
-	return nil
-}
-
-func (m *Nests) GetRptgroup() []*Nests_RptGroup {
-	if m != nil {
-		return m.Rptgroup
-	}
-	return nil
-}
-
-// Message type used as submessage.
-type Nested struct {
-	OptString            *string  `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
-	OptNested            *Nested  `protobuf:"bytes,2,opt,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Nested) ProtoReflect() protoreflect.Message {
-	return xxx_Test_protoFile_messageTypes[4].MessageOf(m)
-}
-func (m *Nested) Reset()         { *m = Nested{} }
-func (m *Nested) String() string { return proto.CompactTextString(m) }
-func (*Nested) ProtoMessage()    {}
-func (*Nested) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{4}
-}
-
-func (m *Nested) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Nested.Unmarshal(m, b)
-}
-func (m *Nested) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Nested.Marshal(b, m, deterministic)
-}
-func (m *Nested) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Nested.Merge(m, src)
-}
-func (m *Nested) XXX_Size() int {
-	return xxx_messageInfo_Nested.Size(m)
-}
-func (m *Nested) XXX_DiscardUnknown() {
-	xxx_messageInfo_Nested.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Nested proto.InternalMessageInfo
-
-func (m *Nested) GetOptString() string {
-	if m != nil && m.OptString != nil {
-		return *m.OptString
-	}
-	return ""
-}
-
-func (m *Nested) GetOptNested() *Nested {
-	if m != nil {
-		return m.OptNested
-	}
-	return nil
-}
-
-// Message contains required fields.
-type Requireds struct {
-	ReqBool              *bool    `protobuf:"varint,1,req,name=req_bool,json=reqBool" json:"req_bool,omitempty"`
-	ReqFixed32           *uint32  `protobuf:"fixed32,2,req,name=req_fixed32,json=reqFixed32" json:"req_fixed32,omitempty"`
-	ReqFixed64           *uint64  `protobuf:"fixed64,3,req,name=req_fixed64,json=reqFixed64" json:"req_fixed64,omitempty"`
-	ReqSfixed32          *int32   `protobuf:"fixed32,4,req,name=req_sfixed32,json=reqSfixed32" json:"req_sfixed32,omitempty"`
-	ReqSfixed64          *int64   `protobuf:"fixed64,5,req,name=req_sfixed64,json=reqSfixed64" json:"req_sfixed64,omitempty"`
-	ReqFloat             *float32 `protobuf:"fixed32,6,req,name=req_float,json=reqFloat" json:"req_float,omitempty"`
-	ReqDouble            *float64 `protobuf:"fixed64,7,req,name=req_double,json=reqDouble" json:"req_double,omitempty"`
-	ReqString            *string  `protobuf:"bytes,8,req,name=req_string,json=reqString" json:"req_string,omitempty"`
-	ReqBytes             []byte   `protobuf:"bytes,9,req,name=req_bytes,json=reqBytes" json:"req_bytes,omitempty"`
-	ReqEnum              *Enum    `protobuf:"varint,10,req,name=req_enum,json=reqEnum,enum=pb2.Enum" json:"req_enum,omitempty"`
-	ReqNested            *Nested  `protobuf:"bytes,11,req,name=req_nested,json=reqNested" json:"req_nested,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Requireds) ProtoReflect() protoreflect.Message {
-	return xxx_Test_protoFile_messageTypes[5].MessageOf(m)
-}
-func (m *Requireds) Reset()         { *m = Requireds{} }
-func (m *Requireds) String() string { return proto.CompactTextString(m) }
-func (*Requireds) ProtoMessage()    {}
-func (*Requireds) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{5}
-}
-
-func (m *Requireds) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Requireds.Unmarshal(m, b)
-}
-func (m *Requireds) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Requireds.Marshal(b, m, deterministic)
-}
-func (m *Requireds) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Requireds.Merge(m, src)
-}
-func (m *Requireds) XXX_Size() int {
-	return xxx_messageInfo_Requireds.Size(m)
-}
-func (m *Requireds) XXX_DiscardUnknown() {
-	xxx_messageInfo_Requireds.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Requireds proto.InternalMessageInfo
-
-func (m *Requireds) GetReqBool() bool {
-	if m != nil && m.ReqBool != nil {
-		return *m.ReqBool
-	}
-	return false
-}
-
-func (m *Requireds) GetReqFixed32() uint32 {
-	if m != nil && m.ReqFixed32 != nil {
-		return *m.ReqFixed32
-	}
-	return 0
-}
-
-func (m *Requireds) GetReqFixed64() uint64 {
-	if m != nil && m.ReqFixed64 != nil {
-		return *m.ReqFixed64
-	}
-	return 0
-}
-
-func (m *Requireds) GetReqSfixed32() int32 {
-	if m != nil && m.ReqSfixed32 != nil {
-		return *m.ReqSfixed32
-	}
-	return 0
-}
-
-func (m *Requireds) GetReqSfixed64() int64 {
-	if m != nil && m.ReqSfixed64 != nil {
-		return *m.ReqSfixed64
-	}
-	return 0
-}
-
-func (m *Requireds) GetReqFloat() float32 {
-	if m != nil && m.ReqFloat != nil {
-		return *m.ReqFloat
-	}
-	return 0
-}
-
-func (m *Requireds) GetReqDouble() float64 {
-	if m != nil && m.ReqDouble != nil {
-		return *m.ReqDouble
-	}
-	return 0
-}
-
-func (m *Requireds) GetReqString() string {
-	if m != nil && m.ReqString != nil {
-		return *m.ReqString
-	}
-	return ""
-}
-
-func (m *Requireds) GetReqBytes() []byte {
-	if m != nil {
-		return m.ReqBytes
-	}
-	return nil
-}
-
-func (m *Requireds) GetReqEnum() Enum {
-	if m != nil && m.ReqEnum != nil {
-		return *m.ReqEnum
-	}
-	return Enum_UNKNOWN
-}
-
-func (m *Requireds) GetReqNested() *Nested {
-	if m != nil {
-		return m.ReqNested
-	}
-	return nil
-}
-
-// Message contains both required and optional fields.
-type PartialRequired struct {
-	ReqString            *string  `protobuf:"bytes,1,req,name=req_string,json=reqString" json:"req_string,omitempty"`
-	OptString            *string  `protobuf:"bytes,2,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *PartialRequired) ProtoReflect() protoreflect.Message {
-	return xxx_Test_protoFile_messageTypes[6].MessageOf(m)
-}
-func (m *PartialRequired) Reset()         { *m = PartialRequired{} }
-func (m *PartialRequired) String() string { return proto.CompactTextString(m) }
-func (*PartialRequired) ProtoMessage()    {}
-func (*PartialRequired) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{6}
-}
-
-func (m *PartialRequired) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_PartialRequired.Unmarshal(m, b)
-}
-func (m *PartialRequired) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_PartialRequired.Marshal(b, m, deterministic)
-}
-func (m *PartialRequired) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PartialRequired.Merge(m, src)
-}
-func (m *PartialRequired) XXX_Size() int {
-	return xxx_messageInfo_PartialRequired.Size(m)
-}
-func (m *PartialRequired) XXX_DiscardUnknown() {
-	xxx_messageInfo_PartialRequired.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PartialRequired proto.InternalMessageInfo
-
-func (m *PartialRequired) GetReqString() string {
-	if m != nil && m.ReqString != nil {
-		return *m.ReqString
-	}
-	return ""
-}
-
-func (m *PartialRequired) GetOptString() string {
-	if m != nil && m.OptString != nil {
-		return *m.OptString
-	}
-	return ""
-}
-
-// Message contains oneof field.
-type Oneofs struct {
-	// Types that are valid to be assigned to Union:
-	//	*Oneofs_Str
-	//	*Oneofs_Msg
-	Union                isOneofs_Union `protobuf_oneof:"union"`
-	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
-	XXX_unrecognized     []byte         `json:"-"`
-	XXX_sizecache        int32          `json:"-"`
-}
-
-func (m *Oneofs) ProtoReflect() protoreflect.Message {
-	return xxx_Test_protoFile_messageTypes[7].MessageOf(m)
-}
-func (m *Oneofs) Reset()         { *m = Oneofs{} }
-func (m *Oneofs) String() string { return proto.CompactTextString(m) }
-func (*Oneofs) ProtoMessage()    {}
-func (*Oneofs) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{7}
-}
-
-func (m *Oneofs) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Oneofs.Unmarshal(m, b)
-}
-func (m *Oneofs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Oneofs.Marshal(b, m, deterministic)
-}
-func (m *Oneofs) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Oneofs.Merge(m, src)
-}
-func (m *Oneofs) XXX_Size() int {
-	return xxx_messageInfo_Oneofs.Size(m)
-}
-func (m *Oneofs) XXX_DiscardUnknown() {
-	xxx_messageInfo_Oneofs.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Oneofs proto.InternalMessageInfo
-
-type isOneofs_Union interface {
-	isOneofs_Union()
-}
-
-type Oneofs_Str struct {
-	Str string `protobuf:"bytes,1,opt,name=str,oneof"`
-}
-
-type Oneofs_Msg struct {
-	Msg *Nested `protobuf:"bytes,2,opt,name=msg,oneof"`
-}
-
-func (*Oneofs_Str) isOneofs_Union() {}
-
-func (*Oneofs_Msg) isOneofs_Union() {}
-
-func (m *Oneofs) GetUnion() isOneofs_Union {
-	if m != nil {
-		return m.Union
-	}
-	return nil
-}
-
-func (m *Oneofs) GetStr() string {
-	if x, ok := m.GetUnion().(*Oneofs_Str); ok {
-		return x.Str
-	}
-	return ""
-}
-
-func (m *Oneofs) GetMsg() *Nested {
-	if x, ok := m.GetUnion().(*Oneofs_Msg); ok {
-		return x.Msg
-	}
-	return nil
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*Oneofs) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*Oneofs_Str)(nil),
-		(*Oneofs_Msg)(nil),
-	}
-}
-
-// Message contains map fields.
-type Maps struct {
-	Int32ToStr           map[int32]string   `protobuf:"bytes,1,rep,name=int32_to_str,json=int32ToStr" json:"int32_to_str,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	Sfixed64ToBool       map[int64]bool     `protobuf:"bytes,2,rep,name=sfixed64_to_bool,json=sfixed64ToBool" json:"sfixed64_to_bool,omitempty" protobuf_key:"fixed64,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	BoolToUint32         map[bool]uint32    `protobuf:"bytes,3,rep,name=bool_to_uint32,json=boolToUint32" json:"bool_to_uint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	Uint64ToEnum         map[uint64]Enum    `protobuf:"bytes,4,rep,name=uint64_to_enum,json=uint64ToEnum" json:"uint64_to_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=pb2.Enum"`
-	StrToNested          map[string]*Nested `protobuf:"bytes,5,rep,name=str_to_nested,json=strToNested" json:"str_to_nested,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	StrToOneofs          map[string]*Oneofs `protobuf:"bytes,6,rep,name=str_to_oneofs,json=strToOneofs" json:"str_to_oneofs,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
-	XXX_unrecognized     []byte             `json:"-"`
-	XXX_sizecache        int32              `json:"-"`
-}
-
-func (m *Maps) ProtoReflect() protoreflect.Message {
-	return xxx_Test_protoFile_messageTypes[8].MessageOf(m)
-}
-func (m *Maps) Reset()         { *m = Maps{} }
-func (m *Maps) String() string { return proto.CompactTextString(m) }
-func (*Maps) ProtoMessage()    {}
-func (*Maps) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{8}
-}
-
-func (m *Maps) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Maps.Unmarshal(m, b)
-}
-func (m *Maps) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Maps.Marshal(b, m, deterministic)
-}
-func (m *Maps) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Maps.Merge(m, src)
-}
-func (m *Maps) XXX_Size() int {
-	return xxx_messageInfo_Maps.Size(m)
-}
-func (m *Maps) XXX_DiscardUnknown() {
-	xxx_messageInfo_Maps.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Maps proto.InternalMessageInfo
-
-func (m *Maps) GetInt32ToStr() map[int32]string {
-	if m != nil {
-		return m.Int32ToStr
-	}
-	return nil
-}
-
-func (m *Maps) GetSfixed64ToBool() map[int64]bool {
-	if m != nil {
-		return m.Sfixed64ToBool
-	}
-	return nil
-}
-
-func (m *Maps) GetBoolToUint32() map[bool]uint32 {
-	if m != nil {
-		return m.BoolToUint32
-	}
-	return nil
-}
-
-func (m *Maps) GetUint64ToEnum() map[uint64]Enum {
-	if m != nil {
-		return m.Uint64ToEnum
-	}
-	return nil
-}
-
-func (m *Maps) GetStrToNested() map[string]*Nested {
-	if m != nil {
-		return m.StrToNested
-	}
-	return nil
-}
-
-func (m *Maps) GetStrToOneofs() map[string]*Oneofs {
-	if m != nil {
-		return m.StrToOneofs
-	}
-	return nil
-}
-
-type NestedWithRequired struct {
-	ReqString            *string  `protobuf:"bytes,1,req,name=req_string,json=reqString" json:"req_string,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *NestedWithRequired) ProtoReflect() protoreflect.Message {
-	return xxx_Test_protoFile_messageTypes[9].MessageOf(m)
-}
-func (m *NestedWithRequired) Reset()         { *m = NestedWithRequired{} }
-func (m *NestedWithRequired) String() string { return proto.CompactTextString(m) }
-func (*NestedWithRequired) ProtoMessage()    {}
-func (*NestedWithRequired) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{9}
-}
-
-func (m *NestedWithRequired) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_NestedWithRequired.Unmarshal(m, b)
-}
-func (m *NestedWithRequired) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_NestedWithRequired.Marshal(b, m, deterministic)
-}
-func (m *NestedWithRequired) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_NestedWithRequired.Merge(m, src)
-}
-func (m *NestedWithRequired) XXX_Size() int {
-	return xxx_messageInfo_NestedWithRequired.Size(m)
-}
-func (m *NestedWithRequired) XXX_DiscardUnknown() {
-	xxx_messageInfo_NestedWithRequired.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_NestedWithRequired proto.InternalMessageInfo
-
-func (m *NestedWithRequired) GetReqString() string {
-	if m != nil && m.ReqString != nil {
-		return *m.ReqString
-	}
-	return ""
-}
-
-type IndirectRequired struct {
-	OptNested            *NestedWithRequired            `protobuf:"bytes,1,opt,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
-	RptNested            []*NestedWithRequired          `protobuf:"bytes,2,rep,name=rpt_nested,json=rptNested" json:"rpt_nested,omitempty"`
-	StrToNested          map[string]*NestedWithRequired `protobuf:"bytes,3,rep,name=str_to_nested,json=strToNested" json:"str_to_nested,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	XXX_NoUnkeyedLiteral struct{}                       `json:"-"`
-	XXX_unrecognized     []byte                         `json:"-"`
-	XXX_sizecache        int32                          `json:"-"`
-}
-
-func (m *IndirectRequired) ProtoReflect() protoreflect.Message {
-	return xxx_Test_protoFile_messageTypes[10].MessageOf(m)
-}
-func (m *IndirectRequired) Reset()         { *m = IndirectRequired{} }
-func (m *IndirectRequired) String() string { return proto.CompactTextString(m) }
-func (*IndirectRequired) ProtoMessage()    {}
-func (*IndirectRequired) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{10}
-}
-
-func (m *IndirectRequired) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_IndirectRequired.Unmarshal(m, b)
-}
-func (m *IndirectRequired) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_IndirectRequired.Marshal(b, m, deterministic)
-}
-func (m *IndirectRequired) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_IndirectRequired.Merge(m, src)
-}
-func (m *IndirectRequired) XXX_Size() int {
-	return xxx_messageInfo_IndirectRequired.Size(m)
-}
-func (m *IndirectRequired) XXX_DiscardUnknown() {
-	xxx_messageInfo_IndirectRequired.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_IndirectRequired proto.InternalMessageInfo
-
-func (m *IndirectRequired) GetOptNested() *NestedWithRequired {
-	if m != nil {
-		return m.OptNested
-	}
-	return nil
-}
-
-func (m *IndirectRequired) GetRptNested() []*NestedWithRequired {
-	if m != nil {
-		return m.RptNested
-	}
-	return nil
-}
-
-func (m *IndirectRequired) GetStrToNested() map[string]*NestedWithRequired {
-	if m != nil {
-		return m.StrToNested
-	}
-	return nil
-}
-
-type Extensions struct {
-	OptString                    *string  `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
-	OptBool                      *bool    `protobuf:"varint,101,opt,name=opt_bool,json=optBool" json:"opt_bool,omitempty"`
-	OptInt32                     *int32   `protobuf:"varint,2,opt,name=opt_int32,json=optInt32" json:"opt_int32,omitempty"`
-	XXX_NoUnkeyedLiteral         struct{} `json:"-"`
-	proto.XXX_InternalExtensions `json:"-"`
-	XXX_unrecognized             []byte `json:"-"`
-	XXX_sizecache                int32  `json:"-"`
-}
-
-func (m *Extensions) ProtoReflect() protoreflect.Message {
-	return xxx_Test_protoFile_messageTypes[11].MessageOf(m)
-}
-func (m *Extensions) Reset()         { *m = Extensions{} }
-func (m *Extensions) String() string { return proto.CompactTextString(m) }
-func (*Extensions) ProtoMessage()    {}
-func (*Extensions) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{11}
-}
-
-var extRange_Extensions = []proto.ExtensionRange{
-	{Start: 20, End: 100},
-}
-
-func (*Extensions) ExtensionRangeArray() []proto.ExtensionRange {
-	return extRange_Extensions
-}
-
-func (m *Extensions) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Extensions.Unmarshal(m, b)
-}
-func (m *Extensions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Extensions.Marshal(b, m, deterministic)
-}
-func (m *Extensions) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Extensions.Merge(m, src)
-}
-func (m *Extensions) XXX_Size() int {
-	return xxx_messageInfo_Extensions.Size(m)
-}
-func (m *Extensions) XXX_DiscardUnknown() {
-	xxx_messageInfo_Extensions.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Extensions proto.InternalMessageInfo
-
-func (m *Extensions) GetOptString() string {
-	if m != nil && m.OptString != nil {
-		return *m.OptString
-	}
-	return ""
-}
-
-func (m *Extensions) GetOptBool() bool {
-	if m != nil && m.OptBool != nil {
-		return *m.OptBool
-	}
-	return false
-}
-
-func (m *Extensions) GetOptInt32() int32 {
-	if m != nil && m.OptInt32 != nil {
-		return *m.OptInt32
-	}
-	return 0
-}
-
-type ExtensionsContainer struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *ExtensionsContainer) ProtoReflect() protoreflect.Message {
-	return xxx_Test_protoFile_messageTypes[12].MessageOf(m)
-}
-func (m *ExtensionsContainer) Reset()         { *m = ExtensionsContainer{} }
-func (m *ExtensionsContainer) String() string { return proto.CompactTextString(m) }
-func (*ExtensionsContainer) ProtoMessage()    {}
-func (*ExtensionsContainer) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{12}
-}
-
-func (m *ExtensionsContainer) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_ExtensionsContainer.Unmarshal(m, b)
-}
-func (m *ExtensionsContainer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_ExtensionsContainer.Marshal(b, m, deterministic)
-}
-func (m *ExtensionsContainer) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ExtensionsContainer.Merge(m, src)
-}
-func (m *ExtensionsContainer) XXX_Size() int {
-	return xxx_messageInfo_ExtensionsContainer.Size(m)
-}
-func (m *ExtensionsContainer) XXX_DiscardUnknown() {
-	xxx_messageInfo_ExtensionsContainer.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ExtensionsContainer proto.InternalMessageInfo
-
-type MessageSet struct {
-	XXX_NoUnkeyedLiteral         struct{} `json:"-"`
-	proto.XXX_InternalExtensions `protobuf_messageset:"1" json:"-"`
-	XXX_unrecognized             []byte `json:"-"`
-	XXX_sizecache                int32  `json:"-"`
-}
-
-func (m *MessageSet) ProtoReflect() protoreflect.Message {
-	return xxx_Test_protoFile_messageTypes[13].MessageOf(m)
-}
-func (m *MessageSet) Reset()         { *m = MessageSet{} }
-func (m *MessageSet) String() string { return proto.CompactTextString(m) }
-func (*MessageSet) ProtoMessage()    {}
-func (*MessageSet) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{13}
-}
-
-var extRange_MessageSet = []proto.ExtensionRange{
-	{Start: 4, End: 2147483646},
-}
-
-func (*MessageSet) ExtensionRangeArray() []proto.ExtensionRange {
-	return extRange_MessageSet
-}
-
-func (m *MessageSet) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MessageSet.Unmarshal(m, b)
-}
-func (m *MessageSet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MessageSet.Marshal(b, m, deterministic)
-}
-func (m *MessageSet) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MessageSet.Merge(m, src)
-}
-func (m *MessageSet) XXX_Size() int {
-	return xxx_messageInfo_MessageSet.Size(m)
-}
-func (m *MessageSet) XXX_DiscardUnknown() {
-	xxx_messageInfo_MessageSet.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MessageSet proto.InternalMessageInfo
-
-type MessageSetExtension struct {
-	OptString            *string  `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *MessageSetExtension) ProtoReflect() protoreflect.Message {
-	return xxx_Test_protoFile_messageTypes[14].MessageOf(m)
-}
-func (m *MessageSetExtension) Reset()         { *m = MessageSetExtension{} }
-func (m *MessageSetExtension) String() string { return proto.CompactTextString(m) }
-func (*MessageSetExtension) ProtoMessage()    {}
-func (*MessageSetExtension) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{14}
-}
-
-func (m *MessageSetExtension) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_MessageSetExtension.Unmarshal(m, b)
-}
-func (m *MessageSetExtension) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_MessageSetExtension.Marshal(b, m, deterministic)
-}
-func (m *MessageSetExtension) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MessageSetExtension.Merge(m, src)
-}
-func (m *MessageSetExtension) XXX_Size() int {
-	return xxx_messageInfo_MessageSetExtension.Size(m)
-}
-func (m *MessageSetExtension) XXX_DiscardUnknown() {
-	xxx_messageInfo_MessageSetExtension.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_MessageSetExtension proto.InternalMessageInfo
-
-func (m *MessageSetExtension) GetOptString() string {
-	if m != nil && m.OptString != nil {
-		return *m.OptString
-	}
-	return ""
-}
-
-type FakeMessageSet struct {
-	XXX_NoUnkeyedLiteral         struct{} `json:"-"`
-	proto.XXX_InternalExtensions `json:"-"`
-	XXX_unrecognized             []byte `json:"-"`
-	XXX_sizecache                int32  `json:"-"`
-}
-
-func (m *FakeMessageSet) ProtoReflect() protoreflect.Message {
-	return xxx_Test_protoFile_messageTypes[15].MessageOf(m)
-}
-func (m *FakeMessageSet) Reset()         { *m = FakeMessageSet{} }
-func (m *FakeMessageSet) String() string { return proto.CompactTextString(m) }
-func (*FakeMessageSet) ProtoMessage()    {}
-func (*FakeMessageSet) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{15}
-}
-
-var extRange_FakeMessageSet = []proto.ExtensionRange{
-	{Start: 4, End: 536870911},
-}
-
-func (*FakeMessageSet) ExtensionRangeArray() []proto.ExtensionRange {
-	return extRange_FakeMessageSet
-}
-
-func (m *FakeMessageSet) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FakeMessageSet.Unmarshal(m, b)
-}
-func (m *FakeMessageSet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FakeMessageSet.Marshal(b, m, deterministic)
-}
-func (m *FakeMessageSet) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FakeMessageSet.Merge(m, src)
-}
-func (m *FakeMessageSet) XXX_Size() int {
-	return xxx_messageInfo_FakeMessageSet.Size(m)
-}
-func (m *FakeMessageSet) XXX_DiscardUnknown() {
-	xxx_messageInfo_FakeMessageSet.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FakeMessageSet proto.InternalMessageInfo
-
-type FakeMessageSetExtension struct {
-	OptString            *string  `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *FakeMessageSetExtension) ProtoReflect() protoreflect.Message {
-	return xxx_Test_protoFile_messageTypes[16].MessageOf(m)
-}
-func (m *FakeMessageSetExtension) Reset()         { *m = FakeMessageSetExtension{} }
-func (m *FakeMessageSetExtension) String() string { return proto.CompactTextString(m) }
-func (*FakeMessageSetExtension) ProtoMessage()    {}
-func (*FakeMessageSetExtension) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{16}
-}
-
-func (m *FakeMessageSetExtension) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_FakeMessageSetExtension.Unmarshal(m, b)
-}
-func (m *FakeMessageSetExtension) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_FakeMessageSetExtension.Marshal(b, m, deterministic)
-}
-func (m *FakeMessageSetExtension) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FakeMessageSetExtension.Merge(m, src)
-}
-func (m *FakeMessageSetExtension) XXX_Size() int {
-	return xxx_messageInfo_FakeMessageSetExtension.Size(m)
-}
-func (m *FakeMessageSetExtension) XXX_DiscardUnknown() {
-	xxx_messageInfo_FakeMessageSetExtension.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_FakeMessageSetExtension proto.InternalMessageInfo
-
-func (m *FakeMessageSetExtension) GetOptString() string {
-	if m != nil && m.OptString != nil {
-		return *m.OptString
-	}
-	return ""
-}
-
-// Message contains well-known type fields.
-type KnownTypes struct {
-	OptBool              *wrappers.BoolValue   `protobuf:"bytes,1,opt,name=opt_bool,json=optBool" json:"opt_bool,omitempty"`
-	OptInt32             *wrappers.Int32Value  `protobuf:"bytes,2,opt,name=opt_int32,json=optInt32" json:"opt_int32,omitempty"`
-	OptInt64             *wrappers.Int64Value  `protobuf:"bytes,3,opt,name=opt_int64,json=optInt64" json:"opt_int64,omitempty"`
-	OptUint32            *wrappers.UInt32Value `protobuf:"bytes,4,opt,name=opt_uint32,json=optUint32" json:"opt_uint32,omitempty"`
-	OptUint64            *wrappers.UInt64Value `protobuf:"bytes,5,opt,name=opt_uint64,json=optUint64" json:"opt_uint64,omitempty"`
-	OptFloat             *wrappers.FloatValue  `protobuf:"bytes,6,opt,name=opt_float,json=optFloat" json:"opt_float,omitempty"`
-	OptDouble            *wrappers.DoubleValue `protobuf:"bytes,7,opt,name=opt_double,json=optDouble" json:"opt_double,omitempty"`
-	OptString            *wrappers.StringValue `protobuf:"bytes,8,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
-	OptBytes             *wrappers.BytesValue  `protobuf:"bytes,9,opt,name=opt_bytes,json=optBytes" json:"opt_bytes,omitempty"`
-	OptDuration          *duration.Duration    `protobuf:"bytes,20,opt,name=opt_duration,json=optDuration" json:"opt_duration,omitempty"`
-	OptTimestamp         *timestamp.Timestamp  `protobuf:"bytes,21,opt,name=opt_timestamp,json=optTimestamp" json:"opt_timestamp,omitempty"`
-	OptStruct            *_struct.Struct       `protobuf:"bytes,25,opt,name=opt_struct,json=optStruct" json:"opt_struct,omitempty"`
-	OptList              *_struct.ListValue    `protobuf:"bytes,26,opt,name=opt_list,json=optList" json:"opt_list,omitempty"`
-	OptValue             *_struct.Value        `protobuf:"bytes,27,opt,name=opt_value,json=optValue" json:"opt_value,omitempty"`
-	OptEmpty             *empty.Empty          `protobuf:"bytes,30,opt,name=opt_empty,json=optEmpty" json:"opt_empty,omitempty"`
-	OptAny               *any.Any              `protobuf:"bytes,32,opt,name=opt_any,json=optAny" json:"opt_any,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
-	XXX_unrecognized     []byte                `json:"-"`
-	XXX_sizecache        int32                 `json:"-"`
-}
-
-func (m *KnownTypes) ProtoReflect() protoreflect.Message {
-	return xxx_Test_protoFile_messageTypes[17].MessageOf(m)
-}
-func (m *KnownTypes) Reset()         { *m = KnownTypes{} }
-func (m *KnownTypes) String() string { return proto.CompactTextString(m) }
-func (*KnownTypes) ProtoMessage()    {}
-func (*KnownTypes) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{17}
-}
-
-func (m *KnownTypes) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_KnownTypes.Unmarshal(m, b)
-}
-func (m *KnownTypes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_KnownTypes.Marshal(b, m, deterministic)
-}
-func (m *KnownTypes) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_KnownTypes.Merge(m, src)
-}
-func (m *KnownTypes) XXX_Size() int {
-	return xxx_messageInfo_KnownTypes.Size(m)
-}
-func (m *KnownTypes) XXX_DiscardUnknown() {
-	xxx_messageInfo_KnownTypes.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_KnownTypes proto.InternalMessageInfo
-
-func (m *KnownTypes) GetOptBool() *wrappers.BoolValue {
-	if m != nil {
-		return m.OptBool
-	}
-	return nil
-}
-
-func (m *KnownTypes) GetOptInt32() *wrappers.Int32Value {
-	if m != nil {
-		return m.OptInt32
-	}
-	return nil
-}
-
-func (m *KnownTypes) GetOptInt64() *wrappers.Int64Value {
-	if m != nil {
-		return m.OptInt64
-	}
-	return nil
-}
-
-func (m *KnownTypes) GetOptUint32() *wrappers.UInt32Value {
-	if m != nil {
-		return m.OptUint32
-	}
-	return nil
-}
-
-func (m *KnownTypes) GetOptUint64() *wrappers.UInt64Value {
-	if m != nil {
-		return m.OptUint64
-	}
-	return nil
-}
-
-func (m *KnownTypes) GetOptFloat() *wrappers.FloatValue {
-	if m != nil {
-		return m.OptFloat
-	}
-	return nil
-}
-
-func (m *KnownTypes) GetOptDouble() *wrappers.DoubleValue {
-	if m != nil {
-		return m.OptDouble
-	}
-	return nil
-}
-
-func (m *KnownTypes) GetOptString() *wrappers.StringValue {
-	if m != nil {
-		return m.OptString
-	}
-	return nil
-}
-
-func (m *KnownTypes) GetOptBytes() *wrappers.BytesValue {
-	if m != nil {
-		return m.OptBytes
-	}
-	return nil
-}
-
-func (m *KnownTypes) GetOptDuration() *duration.Duration {
-	if m != nil {
-		return m.OptDuration
-	}
-	return nil
-}
-
-func (m *KnownTypes) GetOptTimestamp() *timestamp.Timestamp {
-	if m != nil {
-		return m.OptTimestamp
-	}
-	return nil
-}
-
-func (m *KnownTypes) GetOptStruct() *_struct.Struct {
-	if m != nil {
-		return m.OptStruct
-	}
-	return nil
-}
-
-func (m *KnownTypes) GetOptList() *_struct.ListValue {
-	if m != nil {
-		return m.OptList
-	}
-	return nil
-}
-
-func (m *KnownTypes) GetOptValue() *_struct.Value {
-	if m != nil {
-		return m.OptValue
-	}
-	return nil
-}
-
-func (m *KnownTypes) GetOptEmpty() *empty.Empty {
-	if m != nil {
-		return m.OptEmpty
-	}
-	return nil
-}
-
-func (m *KnownTypes) GetOptAny() *any.Any {
-	if m != nil {
-		return m.OptAny
-	}
-	return nil
-}
-
-type Nests_OptGroup struct {
-	OptBool              *bool                          `protobuf:"varint,1,opt,name=opt_bool,json=optBool" json:"opt_bool,omitempty"`
-	OptString            *string                        `protobuf:"bytes,2,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
-	OptNested            *Nested                        `protobuf:"bytes,3,opt,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
-	Optnestedgroup       *Nests_OptGroup_OptNestedGroup `protobuf:"group,4,opt,name=OptNestedGroup,json=optnestedgroup" json:"optnestedgroup,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}                       `json:"-"`
-	XXX_unrecognized     []byte                         `json:"-"`
-	XXX_sizecache        int32                          `json:"-"`
-}
-
-func (m *Nests_OptGroup) ProtoReflect() protoreflect.Message {
-	return xxx_Test_protoFile_messageTypes[18].MessageOf(m)
-}
-func (m *Nests_OptGroup) Reset()         { *m = Nests_OptGroup{} }
-func (m *Nests_OptGroup) String() string { return proto.CompactTextString(m) }
-func (*Nests_OptGroup) ProtoMessage()    {}
-func (*Nests_OptGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{3, 0}
-}
-
-func (m *Nests_OptGroup) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Nests_OptGroup.Unmarshal(m, b)
-}
-func (m *Nests_OptGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Nests_OptGroup.Marshal(b, m, deterministic)
-}
-func (m *Nests_OptGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Nests_OptGroup.Merge(m, src)
-}
-func (m *Nests_OptGroup) XXX_Size() int {
-	return xxx_messageInfo_Nests_OptGroup.Size(m)
-}
-func (m *Nests_OptGroup) XXX_DiscardUnknown() {
-	xxx_messageInfo_Nests_OptGroup.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Nests_OptGroup proto.InternalMessageInfo
-
-func (m *Nests_OptGroup) GetOptBool() bool {
-	if m != nil && m.OptBool != nil {
-		return *m.OptBool
-	}
-	return false
-}
-
-func (m *Nests_OptGroup) GetOptString() string {
-	if m != nil && m.OptString != nil {
-		return *m.OptString
-	}
-	return ""
-}
-
-func (m *Nests_OptGroup) GetOptNested() *Nested {
-	if m != nil {
-		return m.OptNested
-	}
-	return nil
-}
-
-func (m *Nests_OptGroup) GetOptnestedgroup() *Nests_OptGroup_OptNestedGroup {
-	if m != nil {
-		return m.Optnestedgroup
-	}
-	return nil
-}
-
-type Nests_RptGroup struct {
-	RptBool              []bool   `protobuf:"varint,1,rep,name=rpt_bool,json=rptBool" json:"rpt_bool,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Nests_RptGroup) ProtoReflect() protoreflect.Message {
-	return xxx_Test_protoFile_messageTypes[19].MessageOf(m)
-}
-func (m *Nests_RptGroup) Reset()         { *m = Nests_RptGroup{} }
-func (m *Nests_RptGroup) String() string { return proto.CompactTextString(m) }
-func (*Nests_RptGroup) ProtoMessage()    {}
-func (*Nests_RptGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{3, 1}
-}
-
-func (m *Nests_RptGroup) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Nests_RptGroup.Unmarshal(m, b)
-}
-func (m *Nests_RptGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Nests_RptGroup.Marshal(b, m, deterministic)
-}
-func (m *Nests_RptGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Nests_RptGroup.Merge(m, src)
-}
-func (m *Nests_RptGroup) XXX_Size() int {
-	return xxx_messageInfo_Nests_RptGroup.Size(m)
-}
-func (m *Nests_RptGroup) XXX_DiscardUnknown() {
-	xxx_messageInfo_Nests_RptGroup.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Nests_RptGroup proto.InternalMessageInfo
-
-func (m *Nests_RptGroup) GetRptBool() []bool {
-	if m != nil {
-		return m.RptBool
-	}
-	return nil
-}
-
-type Nests_OptGroup_OptNestedGroup struct {
-	OptEnum              *Enum    `protobuf:"varint,1,opt,name=opt_enum,json=optEnum,enum=pb2.Enum" json:"opt_enum,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Nests_OptGroup_OptNestedGroup) ProtoReflect() protoreflect.Message {
-	return xxx_Test_protoFile_messageTypes[20].MessageOf(m)
-}
-func (m *Nests_OptGroup_OptNestedGroup) Reset()         { *m = Nests_OptGroup_OptNestedGroup{} }
-func (m *Nests_OptGroup_OptNestedGroup) String() string { return proto.CompactTextString(m) }
-func (*Nests_OptGroup_OptNestedGroup) ProtoMessage()    {}
-func (*Nests_OptGroup_OptNestedGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c8d7acc1bcec9a72_gzipped, []int{3, 0, 0}
-}
-
-func (m *Nests_OptGroup_OptNestedGroup) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Nests_OptGroup_OptNestedGroup.Unmarshal(m, b)
-}
-func (m *Nests_OptGroup_OptNestedGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Nests_OptGroup_OptNestedGroup.Marshal(b, m, deterministic)
-}
-func (m *Nests_OptGroup_OptNestedGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Nests_OptGroup_OptNestedGroup.Merge(m, src)
-}
-func (m *Nests_OptGroup_OptNestedGroup) XXX_Size() int {
-	return xxx_messageInfo_Nests_OptGroup_OptNestedGroup.Size(m)
-}
-func (m *Nests_OptGroup_OptNestedGroup) XXX_DiscardUnknown() {
-	xxx_messageInfo_Nests_OptGroup_OptNestedGroup.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Nests_OptGroup_OptNestedGroup proto.InternalMessageInfo
-
-func (m *Nests_OptGroup_OptNestedGroup) GetOptEnum() Enum {
-	if m != nil && m.OptEnum != nil {
-		return *m.OptEnum
-	}
-	return Enum_UNKNOWN
-}
-
-var E_OptExtBool = &proto.ExtensionDesc{
-	ExtendedType:  (*Extensions)(nil),
-	ExtensionType: (*bool)(nil),
-	Field:         21,
-	Name:          "pb2.opt_ext_bool",
-	Tag:           "varint,21,opt,name=opt_ext_bool",
-	Filename:      "encoding/textpb/testprotos/pb2/test.proto",
-}
-
-var E_OptExtString = &proto.ExtensionDesc{
-	ExtendedType:  (*Extensions)(nil),
-	ExtensionType: (*string)(nil),
-	Field:         22,
-	Name:          "pb2.opt_ext_string",
-	Tag:           "bytes,22,opt,name=opt_ext_string",
-	Filename:      "encoding/textpb/testprotos/pb2/test.proto",
-}
-
-var E_OptExtEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*Extensions)(nil),
-	ExtensionType: (*Enum)(nil),
-	Field:         23,
-	Name:          "pb2.opt_ext_enum",
-	Tag:           "varint,23,opt,name=opt_ext_enum,enum=pb2.Enum",
-	Filename:      "encoding/textpb/testprotos/pb2/test.proto",
-}
-
-var E_OptExtNested = &proto.ExtensionDesc{
-	ExtendedType:  (*Extensions)(nil),
-	ExtensionType: (*Nested)(nil),
-	Field:         24,
-	Name:          "pb2.opt_ext_nested",
-	Tag:           "bytes,24,opt,name=opt_ext_nested",
-	Filename:      "encoding/textpb/testprotos/pb2/test.proto",
-}
-
-var E_RptExtFixed32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Extensions)(nil),
-	ExtensionType: ([]uint32)(nil),
-	Field:         31,
-	Name:          "pb2.rpt_ext_fixed32",
-	Tag:           "fixed32,31,rep,name=rpt_ext_fixed32",
-	Filename:      "encoding/textpb/testprotos/pb2/test.proto",
-}
-
-var E_RptExtEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*Extensions)(nil),
-	ExtensionType: ([]Enum)(nil),
-	Field:         32,
-	Name:          "pb2.rpt_ext_enum",
-	Tag:           "varint,32,rep,name=rpt_ext_enum,enum=pb2.Enum",
-	Filename:      "encoding/textpb/testprotos/pb2/test.proto",
-}
-
-var E_RptExtNested = &proto.ExtensionDesc{
-	ExtendedType:  (*Extensions)(nil),
-	ExtensionType: ([]*Nested)(nil),
-	Field:         33,
-	Name:          "pb2.rpt_ext_nested",
-	Tag:           "bytes,33,rep,name=rpt_ext_nested",
-	Filename:      "encoding/textpb/testprotos/pb2/test.proto",
-}
-
-var E_MessageSetExtension = &proto.ExtensionDesc{
-	ExtendedType:  (*MessageSet)(nil),
-	ExtensionType: (*FakeMessageSetExtension)(nil),
-	Field:         50,
-	Name:          "pb2.",
-	Tag:           "bytes,50,opt,name=message_set_extension",
-	Filename:      "encoding/textpb/testprotos/pb2/test.proto",
-}
-
-var E_ExtensionsContainer_OptExtBool = &proto.ExtensionDesc{
-	ExtendedType:  (*Extensions)(nil),
-	ExtensionType: (*bool)(nil),
-	Field:         51,
-	Name:          "pb2.ExtensionsContainer.opt_ext_bool",
-	Tag:           "varint,51,opt,name=opt_ext_bool",
-	Filename:      "encoding/textpb/testprotos/pb2/test.proto",
-}
-
-var E_ExtensionsContainer_OptExtString = &proto.ExtensionDesc{
-	ExtendedType:  (*Extensions)(nil),
-	ExtensionType: (*string)(nil),
-	Field:         52,
-	Name:          "pb2.ExtensionsContainer.opt_ext_string",
-	Tag:           "bytes,52,opt,name=opt_ext_string",
-	Filename:      "encoding/textpb/testprotos/pb2/test.proto",
-}
-
-var E_ExtensionsContainer_OptExtEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*Extensions)(nil),
-	ExtensionType: (*Enum)(nil),
-	Field:         53,
-	Name:          "pb2.ExtensionsContainer.opt_ext_enum",
-	Tag:           "varint,53,opt,name=opt_ext_enum,enum=pb2.Enum",
-	Filename:      "encoding/textpb/testprotos/pb2/test.proto",
-}
-
-var E_ExtensionsContainer_OptExtNested = &proto.ExtensionDesc{
-	ExtendedType:  (*Extensions)(nil),
-	ExtensionType: (*Nested)(nil),
-	Field:         54,
-	Name:          "pb2.ExtensionsContainer.opt_ext_nested",
-	Tag:           "bytes,54,opt,name=opt_ext_nested",
-	Filename:      "encoding/textpb/testprotos/pb2/test.proto",
-}
-
-var E_ExtensionsContainer_RptExtString = &proto.ExtensionDesc{
-	ExtendedType:  (*Extensions)(nil),
-	ExtensionType: ([]string)(nil),
-	Field:         61,
-	Name:          "pb2.ExtensionsContainer.rpt_ext_string",
-	Tag:           "bytes,61,rep,name=rpt_ext_string",
-	Filename:      "encoding/textpb/testprotos/pb2/test.proto",
-}
-
-var E_ExtensionsContainer_RptExtEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*Extensions)(nil),
-	ExtensionType: ([]Enum)(nil),
-	Field:         62,
-	Name:          "pb2.ExtensionsContainer.rpt_ext_enum",
-	Tag:           "varint,62,rep,name=rpt_ext_enum,enum=pb2.Enum",
-	Filename:      "encoding/textpb/testprotos/pb2/test.proto",
-}
-
-var E_ExtensionsContainer_RptExtNested = &proto.ExtensionDesc{
-	ExtendedType:  (*Extensions)(nil),
-	ExtensionType: ([]*Nested)(nil),
-	Field:         63,
-	Name:          "pb2.ExtensionsContainer.rpt_ext_nested",
-	Tag:           "bytes,63,rep,name=rpt_ext_nested",
-	Filename:      "encoding/textpb/testprotos/pb2/test.proto",
-}
-
-var E_MessageSetExtension_MessageSetExtension = &proto.ExtensionDesc{
-	ExtendedType:  (*MessageSet)(nil),
-	ExtensionType: (*MessageSetExtension)(nil),
-	Field:         10,
-	Name:          "pb2.MessageSetExtension",
-	Tag:           "bytes,10,opt,name=message_set_extension",
-	Filename:      "encoding/textpb/testprotos/pb2/test.proto",
-}
-
-var E_MessageSetExtension_NotMessageSetExtension = &proto.ExtensionDesc{
-	ExtendedType:  (*MessageSet)(nil),
-	ExtensionType: (*MessageSetExtension)(nil),
-	Field:         20,
-	Name:          "pb2.MessageSetExtension.not_message_set_extension",
-	Tag:           "bytes,20,opt,name=not_message_set_extension",
-	Filename:      "encoding/textpb/testprotos/pb2/test.proto",
-}
-
-var E_MessageSetExtension_ExtNested = &proto.ExtensionDesc{
-	ExtendedType:  (*MessageSet)(nil),
-	ExtensionType: (*Nested)(nil),
-	Field:         30,
-	Name:          "pb2.MessageSetExtension.ext_nested",
-	Tag:           "bytes,30,opt,name=ext_nested",
-	Filename:      "encoding/textpb/testprotos/pb2/test.proto",
-}
-
-var E_FakeMessageSetExtension_MessageSetExtension = &proto.ExtensionDesc{
-	ExtendedType:  (*FakeMessageSet)(nil),
-	ExtensionType: (*FakeMessageSetExtension)(nil),
-	Field:         10,
-	Name:          "pb2.FakeMessageSetExtension.message_set_extension",
-	Tag:           "bytes,10,opt,name=message_set_extension",
-	Filename:      "encoding/textpb/testprotos/pb2/test.proto",
-}
-
-func init() {
-	proto.RegisterFile("encoding/textpb/testprotos/pb2/test.proto", fileDescriptor_c8d7acc1bcec9a72_gzipped)
-	proto.RegisterEnum("pb2.Enum", Enum_name, Enum_value)
-	proto.RegisterEnum("pb2.Enums_NestedEnum", Enums_NestedEnum_name, Enums_NestedEnum_value)
-	proto.RegisterType((*Scalars)(nil), "pb2.Scalars")
-	proto.RegisterType((*Repeats)(nil), "pb2.Repeats")
-	proto.RegisterType((*Enums)(nil), "pb2.Enums")
-	proto.RegisterType((*Nests)(nil), "pb2.Nests")
-	proto.RegisterType((*Nested)(nil), "pb2.Nested")
-	proto.RegisterType((*Requireds)(nil), "pb2.Requireds")
-	proto.RegisterType((*PartialRequired)(nil), "pb2.PartialRequired")
-	proto.RegisterType((*Oneofs)(nil), "pb2.Oneofs")
-	proto.RegisterType((*Maps)(nil), "pb2.Maps")
-	proto.RegisterMapType((map[bool]uint32)(nil), "pb2.Maps.BoolToUint32Entry")
-	proto.RegisterMapType((map[int32]string)(nil), "pb2.Maps.Int32ToStrEntry")
-	proto.RegisterMapType((map[int64]bool)(nil), "pb2.Maps.Sfixed64ToBoolEntry")
-	proto.RegisterMapType((map[string]*Nested)(nil), "pb2.Maps.StrToNestedEntry")
-	proto.RegisterMapType((map[string]*Oneofs)(nil), "pb2.Maps.StrToOneofsEntry")
-	proto.RegisterMapType((map[uint64]Enum)(nil), "pb2.Maps.Uint64ToEnumEntry")
-	proto.RegisterType((*NestedWithRequired)(nil), "pb2.NestedWithRequired")
-	proto.RegisterType((*IndirectRequired)(nil), "pb2.IndirectRequired")
-	proto.RegisterMapType((map[string]*NestedWithRequired)(nil), "pb2.IndirectRequired.StrToNestedEntry")
-	proto.RegisterType((*Extensions)(nil), "pb2.Extensions")
-	proto.RegisterType((*ExtensionsContainer)(nil), "pb2.ExtensionsContainer")
-	proto.RegisterType((*MessageSet)(nil), "pb2.MessageSet")
-	proto.RegisterType((*MessageSetExtension)(nil), "pb2.MessageSetExtension")
-	proto.RegisterType((*FakeMessageSet)(nil), "pb2.FakeMessageSet")
-	proto.RegisterType((*FakeMessageSetExtension)(nil), "pb2.FakeMessageSetExtension")
-	proto.RegisterType((*KnownTypes)(nil), "pb2.KnownTypes")
-	proto.RegisterType((*Nests_OptGroup)(nil), "pb2.Nests.OptGroup")
-	proto.RegisterType((*Nests_RptGroup)(nil), "pb2.Nests.RptGroup")
-	proto.RegisterType((*Nests_OptGroup_OptNestedGroup)(nil), "pb2.Nests.OptGroup.OptNestedGroup")
-	proto.RegisterExtension(E_OptExtBool)
-	proto.RegisterExtension(E_OptExtString)
-	proto.RegisterExtension(E_OptExtEnum)
-	proto.RegisterExtension(E_OptExtNested)
-	proto.RegisterExtension(E_RptExtFixed32)
-	proto.RegisterExtension(E_RptExtEnum)
-	proto.RegisterExtension(E_RptExtNested)
-	proto.RegisterExtension(E_MessageSetExtension)
-	proto.RegisterExtension(E_ExtensionsContainer_OptExtBool)
-	proto.RegisterExtension(E_ExtensionsContainer_OptExtString)
-	proto.RegisterExtension(E_ExtensionsContainer_OptExtEnum)
-	proto.RegisterExtension(E_ExtensionsContainer_OptExtNested)
-	proto.RegisterExtension(E_ExtensionsContainer_RptExtString)
-	proto.RegisterExtension(E_ExtensionsContainer_RptExtEnum)
-	proto.RegisterExtension(E_ExtensionsContainer_RptExtNested)
-	proto.RegisterExtension(E_MessageSetExtension_MessageSetExtension)
-	proto.RegisterExtension(E_MessageSetExtension_NotMessageSetExtension)
-	proto.RegisterExtension(E_MessageSetExtension_ExtNested)
-	proto.RegisterExtension(E_FakeMessageSetExtension_MessageSetExtension)
-}
-
-var fileDescriptor_c8d7acc1bcec9a72 = []byte{
-	// 6198 bytes of the wire-encoded FileDescriptorProto
-	0x0a, 0x29, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x70,
-	0x62, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x70, 0x62, 0x32,
-	0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x03, 0x70, 0x62, 0x32,
-	0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70,
-	0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69,
-	0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
-	0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72,
-	0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xda, 0x03, 0x0a, 0x07, 0x53, 0x63, 0x61, 0x6c,
-	0x61, 0x72, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x1b,
-	0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x1b, 0x0a, 0x09, 0x6f,
-	0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08,
-	0x6f, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f,
-	0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6f, 0x70,
-	0x74, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x75,
-	0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6f, 0x70, 0x74,
-	0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x69,
-	0x6e, 0x74, 0x33, 0x32, 0x18, 0x06, 0x20, 0x01, 0x28, 0x11, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53,
-	0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x69, 0x6e,
-	0x74, 0x36, 0x34, 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x69,
-	0x6e, 0x74, 0x36, 0x34, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x70, 0x74, 0x5f, 0x66, 0x69, 0x78, 0x65,
-	0x64, 0x33, 0x32, 0x18, 0x08, 0x20, 0x01, 0x28, 0x07, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x46, 0x69,
-	0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x70, 0x74, 0x5f, 0x66, 0x69, 0x78,
-	0x65, 0x64, 0x36, 0x34, 0x18, 0x09, 0x20, 0x01, 0x28, 0x06, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x46,
-	0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x66,
-	0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x0b, 0x6f, 0x70,
-	0x74, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x70, 0x74,
-	0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x10, 0x52,
-	0x0b, 0x6f, 0x70, 0x74, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x1b, 0x0a, 0x09,
-	0x6f, 0x70, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x02, 0x52,
-	0x08, 0x6f, 0x70, 0x74, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74,
-	0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x6f,
-	0x70, 0x74, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f,
-	0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6f, 0x70, 0x74,
-	0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72,
-	0x69, 0x6e, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74,
-	0x72, 0x69, 0x6e, 0x67, 0x22, 0x94, 0x02, 0x0a, 0x07, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x73,
-	0x12, 0x19, 0x0a, 0x08, 0x72, 0x70, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x03,
-	0x28, 0x08, 0x52, 0x07, 0x72, 0x70, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x72,
-	0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08,
-	0x72, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x70, 0x74, 0x5f,
-	0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x72, 0x70, 0x74,
-	0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f, 0x75, 0x69, 0x6e,
-	0x74, 0x33, 0x32, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x09, 0x72, 0x70, 0x74, 0x55, 0x69,
-	0x6e, 0x74, 0x33, 0x32, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74,
-	0x36, 0x34, 0x18, 0x05, 0x20, 0x03, 0x28, 0x04, 0x52, 0x09, 0x72, 0x70, 0x74, 0x55, 0x69, 0x6e,
-	0x74, 0x36, 0x34, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x70, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-	0x18, 0x06, 0x20, 0x03, 0x28, 0x02, 0x52, 0x08, 0x72, 0x70, 0x74, 0x46, 0x6c, 0x6f, 0x61, 0x74,
-	0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x07,
-	0x20, 0x03, 0x28, 0x01, 0x52, 0x09, 0x72, 0x70, 0x74, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12,
-	0x1d, 0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x0f, 0x20,
-	0x03, 0x28, 0x09, 0x52, 0x09, 0x72, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x1b,
-	0x0a, 0x09, 0x72, 0x70, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28,
-	0x0c, 0x52, 0x08, 0x72, 0x70, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0xfb, 0x01, 0x0a, 0x05,
-	0x45, 0x6e, 0x75, 0x6d, 0x73, 0x12, 0x24, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x6e, 0x75,
-	0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x6e,
-	0x75, 0x6d, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x24, 0x0a, 0x08, 0x72,
-	0x70, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x09, 0x2e,
-	0x70, 0x62, 0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x07, 0x72, 0x70, 0x74, 0x45, 0x6e, 0x75,
-	0x6d, 0x12, 0x3d, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f,
-	0x65, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, 0x62, 0x32,
-	0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75,
-	0x6d, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d,
-	0x12, 0x3d, 0x0a, 0x0f, 0x72, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65,
-	0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, 0x62, 0x32, 0x2e,
-	0x45, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d,
-	0x52, 0x0d, 0x72, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x22,
-	0x28, 0x0a, 0x0a, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x07, 0x0a,
-	0x03, 0x55, 0x4e, 0x4f, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x44, 0x4f, 0x53, 0x10, 0x02, 0x12,
-	0x08, 0x0a, 0x04, 0x44, 0x49, 0x45, 0x5a, 0x10, 0x0a, 0x22, 0xef, 0x03, 0x0a, 0x05, 0x4e, 0x65,
-	0x73, 0x74, 0x73, 0x12, 0x2a, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65,
-	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65,
-	0x73, 0x74, 0x65, 0x64, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12,
-	0x2f, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x0a, 0x32, 0x13, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x4f, 0x70,
-	0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70,
-	0x12, 0x2a, 0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x03,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65,
-	0x64, 0x52, 0x09, 0x72, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x2f, 0x0a, 0x08,
-	0x72, 0x70, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x13,
-	0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x73, 0x2e, 0x52, 0x70, 0x74, 0x47, 0x72,
-	0x6f, 0x75, 0x70, 0x52, 0x08, 0x72, 0x70, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0xf4, 0x01,
-	0x0a, 0x08, 0x4f, 0x70, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x70,
-	0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6f, 0x70,
-	0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72,
-	0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74,
-	0x72, 0x69, 0x6e, 0x67, 0x12, 0x2a, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74,
-	0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e,
-	0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
-	0x12, 0x4a, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x67, 0x72, 0x6f,
-	0x75, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0a, 0x32, 0x22, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e,
-	0x65, 0x73, 0x74, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x4f, 0x70,
-	0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0e, 0x6f, 0x70,
-	0x74, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0x36, 0x0a, 0x0e,
-	0x4f, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x24,
-	0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e,
-	0x32, 0x09, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x07, 0x6f, 0x70, 0x74,
-	0x45, 0x6e, 0x75, 0x6d, 0x1a, 0x25, 0x0a, 0x08, 0x52, 0x70, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70,
-	0x12, 0x19, 0x0a, 0x08, 0x72, 0x70, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x03,
-	0x28, 0x08, 0x52, 0x07, 0x72, 0x70, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x52, 0x0e, 0x72, 0x65, 0x73,
-	0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0x53, 0x0a, 0x06, 0x4e,
-	0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72,
-	0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74,
-	0x72, 0x69, 0x6e, 0x67, 0x12, 0x2a, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74,
-	0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e,
-	0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
-	0x22, 0xf8, 0x02, 0x0a, 0x09, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x73, 0x12, 0x19,
-	0x0a, 0x08, 0x72, 0x65, 0x71, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x02, 0x28, 0x08,
-	0x52, 0x07, 0x72, 0x65, 0x71, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x71,
-	0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x02, 0x20, 0x02, 0x28, 0x07, 0x52, 0x0a,
-	0x72, 0x65, 0x71, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65,
-	0x71, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x03, 0x20, 0x02, 0x28, 0x06, 0x52,
-	0x0a, 0x72, 0x65, 0x71, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x21, 0x0a, 0x0c, 0x72,
-	0x65, 0x71, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x04, 0x20, 0x02, 0x28,
-	0x0f, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x21,
-	0x0a, 0x0c, 0x72, 0x65, 0x71, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x05,
-	0x20, 0x02, 0x28, 0x10, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36,
-	0x34, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x71, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x06,
-	0x20, 0x02, 0x28, 0x02, 0x52, 0x08, 0x72, 0x65, 0x71, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x1d,
-	0x0a, 0x0a, 0x72, 0x65, 0x71, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x02,
-	0x28, 0x01, 0x52, 0x09, 0x72, 0x65, 0x71, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x1d, 0x0a,
-	0x0a, 0x72, 0x65, 0x71, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x02, 0x28,
-	0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x1b, 0x0a, 0x09,
-	0x72, 0x65, 0x71, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x02, 0x28, 0x0c, 0x52,
-	0x08, 0x72, 0x65, 0x71, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x08, 0x72, 0x65, 0x71,
-	0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x0a, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62,
-	0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x07, 0x72, 0x65, 0x71, 0x45, 0x6e, 0x75, 0x6d, 0x12,
-	0x2a, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x0b, 0x20,
-	0x02, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
-	0x52, 0x09, 0x72, 0x65, 0x71, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x22, 0x4f, 0x0a, 0x0f, 0x50,
-	0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x1d,
-	0x0a, 0x0a, 0x72, 0x65, 0x71, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x02,
-	0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x1d, 0x0a,
-	0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22, 0x46, 0x0a, 0x06,
-	0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x73, 0x12, 0x12, 0x0a, 0x03, 0x73, 0x74, 0x72, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x73, 0x74, 0x72, 0x12, 0x1f, 0x0a, 0x03, 0x6d, 0x73,
-	0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65,
-	0x73, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x42, 0x07, 0x0a, 0x05, 0x75,
-	0x6e, 0x69, 0x6f, 0x6e, 0x22, 0xbb, 0x06, 0x0a, 0x04, 0x4d, 0x61, 0x70, 0x73, 0x12, 0x3b, 0x0a,
-	0x0c, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x74, 0x72, 0x18, 0x01, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4d, 0x61, 0x70, 0x73, 0x2e, 0x49,
-	0x6e, 0x74, 0x33, 0x32, 0x54, 0x6f, 0x53, 0x74, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a,
-	0x69, 0x6e, 0x74, 0x33, 0x32, 0x54, 0x6f, 0x53, 0x74, 0x72, 0x12, 0x47, 0x0a, 0x10, 0x73, 0x66,
-	0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x5f, 0x74, 0x6f, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x02,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4d, 0x61, 0x70, 0x73, 0x2e,
-	0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x54, 0x6f, 0x42, 0x6f, 0x6f, 0x6c, 0x45, 0x6e,
-	0x74, 0x72, 0x79, 0x52, 0x0e, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x54, 0x6f, 0x42,
-	0x6f, 0x6f, 0x6c, 0x12, 0x41, 0x0a, 0x0e, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x74, 0x6f, 0x5f, 0x75,
-	0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x62,
-	0x32, 0x2e, 0x4d, 0x61, 0x70, 0x73, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x54, 0x6f, 0x55, 0x69, 0x6e,
-	0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6c, 0x54, 0x6f,
-	0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x41, 0x0a, 0x0e, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34,
-	0x5f, 0x74, 0x6f, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b,
-	0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4d, 0x61, 0x70, 0x73, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34,
-	0x54, 0x6f, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x75, 0x69, 0x6e,
-	0x74, 0x36, 0x34, 0x54, 0x6f, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x3e, 0x0a, 0x0d, 0x73, 0x74, 0x72,
-	0x5f, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x1a, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4d, 0x61, 0x70, 0x73, 0x2e, 0x53, 0x74, 0x72, 0x54,
-	0x6f, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x73, 0x74,
-	0x72, 0x54, 0x6f, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x3e, 0x0a, 0x0d, 0x73, 0x74, 0x72,
-	0x5f, 0x74, 0x6f, 0x5f, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x1a, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4d, 0x61, 0x70, 0x73, 0x2e, 0x53, 0x74, 0x72, 0x54,
-	0x6f, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x73, 0x74,
-	0x72, 0x54, 0x6f, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x49, 0x6e, 0x74,
-	0x33, 0x32, 0x54, 0x6f, 0x53, 0x74, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
-	0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
-	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76,
-	0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x41, 0x0a, 0x13, 0x53, 0x66, 0x69, 0x78,
-	0x65, 0x64, 0x36, 0x34, 0x54, 0x6f, 0x42, 0x6f, 0x6f, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
-	0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x10, 0x52, 0x03, 0x6b, 0x65,
-	0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3f, 0x0a, 0x11, 0x42,
-	0x6f, 0x6f, 0x6c, 0x54, 0x6f, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79,
-	0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x6b,
-	0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x4a, 0x0a, 0x11,
-	0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x54, 0x6f, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x6e, 0x74, 0x72,
-	0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03,
-	0x6b, 0x65, 0x79, 0x12, 0x1f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x05, 0x76,
-	0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x4b, 0x0a, 0x10, 0x53, 0x74, 0x72, 0x54,
-	0x6f, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
-	0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x21,
-	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e,
-	0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
-	0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x4b, 0x0a, 0x10, 0x53, 0x74, 0x72, 0x54, 0x6f, 0x4f, 0x6e,
-	0x65, 0x6f, 0x66, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x21, 0x0a, 0x05, 0x76,
-	0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32,
-	0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
-	0x38, 0x01, 0x22, 0x33, 0x0a, 0x12, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x57, 0x69, 0x74, 0x68,
-	0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x5f,
-	0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65,
-	0x71, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22, 0xa7, 0x02, 0x0a, 0x10, 0x49, 0x6e, 0x64, 0x69,
-	0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x0a,
-	0x6f, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x17, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x57, 0x69, 0x74,
-	0x68, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x4e, 0x65,
-	0x73, 0x74, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74,
-	0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e,
-	0x65, 0x73, 0x74, 0x65, 0x64, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65,
-	0x64, 0x52, 0x09, 0x72, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x4a, 0x0a, 0x0d,
-	0x73, 0x74, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x72, 0x65,
-	0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x2e, 0x53, 0x74, 0x72, 0x54, 0x6f,
-	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x73, 0x74, 0x72,
-	0x54, 0x6f, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x1a, 0x57, 0x0a, 0x10, 0x53, 0x74, 0x72, 0x54,
-	0x6f, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
-	0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d,
-	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e,
-	0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65,
-	0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
-	0x01, 0x22, 0x69, 0x0a, 0x0a, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12,
-	0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x19,
-	0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x65, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x07, 0x6f, 0x70, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x74,
-	0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x70,
-	0x74, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x2a, 0x04, 0x08, 0x14, 0x10, 0x65, 0x22, 0xba, 0x03, 0x0a,
-	0x13, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61,
-	0x69, 0x6e, 0x65, 0x72, 0x32, 0x31, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f,
-	0x62, 0x6f, 0x6f, 0x6c, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e,
-	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x33, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6f, 0x70, 0x74,
-	0x45, 0x78, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x32, 0x35, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x5f, 0x65,
-	0x78, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e,
-	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x34, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0c, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x32, 0x3c,
-	0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x0f,
-	0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18,
-	0x35, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d,
-	0x52, 0x0a, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x32, 0x42, 0x0a, 0x0e,
-	0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x0f,
-	0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18,
-	0x36, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74,
-	0x65, 0x64, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
-	0x32, 0x35, 0x0a, 0x0e, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69,
-	0x6e, 0x67, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
-	0x6f, 0x6e, 0x73, 0x18, 0x3d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x70, 0x74, 0x45, 0x78,
-	0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x32, 0x3c, 0x0a, 0x0c, 0x72, 0x70, 0x74, 0x5f, 0x65,
-	0x78, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x3e, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x09,
-	0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x72, 0x70, 0x74, 0x45, 0x78,
-	0x74, 0x45, 0x6e, 0x75, 0x6d, 0x32, 0x42, 0x0a, 0x0e, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74,
-	0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x3f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b,
-	0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x0c, 0x72, 0x70, 0x74,
-	0x45, 0x78, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x22, 0x1a, 0x0a, 0x0a, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x2a, 0x08, 0x08, 0x04, 0x10, 0xff, 0xff, 0xff, 0xff,
-	0x07, 0x3a, 0x02, 0x08, 0x01, 0x22, 0xb6, 0x02, 0x0a, 0x13, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a,
-	0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x32, 0x5d, 0x0a, 0x15,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65,
-	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70,
-	0x62, 0x32, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53,
-	0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x32, 0x64, 0x0a, 0x19, 0x6e,
-	0x6f, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65,
-	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x18, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74,
-	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x6e, 0x6f, 0x74, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
-	0x6e, 0x32, 0x3b, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12,
-	0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74,
-	0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73,
-	0x74, 0x65, 0x64, 0x52, 0x09, 0x65, 0x78, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x22, 0x1a,
-	0x0a, 0x0e, 0x46, 0x61, 0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74,
-	0x2a, 0x08, 0x08, 0x04, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0x9f, 0x01, 0x0a, 0x17, 0x46,
-	0x61, 0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74,
-	0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53,
-	0x74, 0x72, 0x69, 0x6e, 0x67, 0x32, 0x65, 0x0a, 0x15, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x13,
-	0x2e, 0x70, 0x62, 0x32, 0x2e, 0x46, 0x61, 0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x53, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x62, 0x32, 0x2e,
-	0x46, 0x61, 0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xa6, 0x07, 0x0a,
-	0x0a, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x6f,
-	0x70, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
-	0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x42, 0x6f,
-	0x6f, 0x6c, 0x12, 0x38, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c,
-	0x75, 0x65, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x38, 0x0a, 0x09,
-	0x6f, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6f, 0x70,
-	0x74, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x3b, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x75, 0x69,
-	0x6e, 0x74, 0x33, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e,
-	0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x55, 0x69, 0x6e,
-	0x74, 0x33, 0x32, 0x12, 0x3b, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36,
-	0x34, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34,
-	0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34,
-	0x12, 0x38, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x06, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65,
-	0x52, 0x08, 0x6f, 0x70, 0x74, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x3b, 0x0a, 0x0a, 0x6f, 0x70,
-	0x74, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
-	0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6f, 0x70,
-	0x74, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73,
-	0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74,
-	0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74,
-	0x72, 0x69, 0x6e, 0x67, 0x12, 0x38, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65,
-	0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x79, 0x74, 0x65, 0x73, 0x56,
-	0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3c,
-	0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x14,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
-	0x0b, 0x6f, 0x70, 0x74, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x0d,
-	0x6f, 0x70, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x15, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
-	0x0c, 0x6f, 0x70, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x36, 0x0a,
-	0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x18, 0x19, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53,
-	0x74, 0x72, 0x75, 0x63, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f, 0x6c, 0x69, 0x73,
-	0x74, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61,
-	0x6c, 0x75, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x33, 0x0a, 0x09,
-	0x6f, 0x70, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x56, 0x61, 0x6c, 0x75,
-	0x65, 0x12, 0x33, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x18, 0x1e,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x08, 0x6f, 0x70,
-	0x74, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x2d, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x5f, 0x61, 0x6e,
-	0x79, 0x18, 0x20, 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, 0x06, 0x6f,
-	0x70, 0x74, 0x41, 0x6e, 0x79, 0x2a, 0x35, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0b, 0x0a,
-	0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x49,
-	0x52, 0x53, 0x54, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x45, 0x43, 0x4f, 0x4e, 0x44, 0x10,
-	0x02, 0x12, 0x09, 0x0a, 0x05, 0x54, 0x45, 0x4e, 0x54, 0x48, 0x10, 0x0a, 0x3a, 0x31, 0x0a, 0x0c,
-	0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x12, 0x0f, 0x2e, 0x70,
-	0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x15, 0x20,
-	0x01, 0x28, 0x08, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x3a,
-	0x35, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e,
-	0x67, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
-	0x6e, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74,
-	0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x3a, 0x3c, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78,
-	0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x09, 0x2e,
-	0x70, 0x62, 0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74,
-	0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x42, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f,
-	0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e,
-	0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x45,
-	0x78, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x3a, 0x37, 0x0a, 0x0f, 0x72, 0x70, 0x74, 0x5f,
-	0x65, 0x78, 0x74, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x0f, 0x2e, 0x70, 0x62,
-	0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x1f, 0x20, 0x03,
-	0x28, 0x07, 0x52, 0x0d, 0x72, 0x70, 0x74, 0x45, 0x78, 0x74, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33,
-	0x32, 0x3a, 0x3c, 0x0a, 0x0c, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x65, 0x6e, 0x75,
-	0x6d, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
-	0x6e, 0x73, 0x18, 0x20, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45,
-	0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x72, 0x70, 0x74, 0x45, 0x78, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x3a,
-	0x42, 0x0a, 0x0e, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65,
-	0x64, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
-	0x6e, 0x73, 0x18, 0x21, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e,
-	0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x0c, 0x72, 0x70, 0x74, 0x45, 0x78, 0x74, 0x4e, 0x65, 0x73,
-	0x74, 0x65, 0x64, 0x3a, 0x61, 0x0a, 0x15, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73,
-	0x65, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0f, 0x2e, 0x70,
-	0x62, 0x32, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0x32, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x46, 0x61, 0x6b, 0x65, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
-	0x6e, 0x52, 0x13, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x3e, 0x5a, 0x3c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62,
-	0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x62, 0x75, 0x66, 0x2f, 0x76, 0x32, 0x2f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67,
-	0x2f, 0x74, 0x65, 0x78, 0x74, 0x70, 0x62, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x73, 0x2f, 0x70, 0x62, 0x32,
-}
-
-var fileDescriptor_c8d7acc1bcec9a72_gzipped = func() []byte {
-	bb := new(bytes.Buffer)
-	zw, _ := gzip.NewWriterLevel(bb, gzip.NoCompression)
-	zw.Write(fileDescriptor_c8d7acc1bcec9a72)
-	zw.Close()
-	return bb.Bytes()
-}()
-
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var Test_protoFile protoreflect.FileDescriptor
-
-var xxx_Test_protoFile_enumTypes [2]protoreflect.EnumType
-var xxx_Test_protoFile_messageTypes [28]protoimpl.MessageType
-var xxx_Test_protoFile_goTypes = []interface{}{
-	(Enum)(0),                             // 0: pb2.Enum
-	(Enums_NestedEnum)(0),                 // 1: pb2.Enums.NestedEnum
-	(*Scalars)(nil),                       // 2: pb2.Scalars
-	(*Repeats)(nil),                       // 3: pb2.Repeats
-	(*Enums)(nil),                         // 4: pb2.Enums
-	(*Nests)(nil),                         // 5: pb2.Nests
-	(*Nested)(nil),                        // 6: pb2.Nested
-	(*Requireds)(nil),                     // 7: pb2.Requireds
-	(*PartialRequired)(nil),               // 8: pb2.PartialRequired
-	(*Oneofs)(nil),                        // 9: pb2.Oneofs
-	(*Maps)(nil),                          // 10: pb2.Maps
-	(*NestedWithRequired)(nil),            // 11: pb2.NestedWithRequired
-	(*IndirectRequired)(nil),              // 12: pb2.IndirectRequired
-	(*Extensions)(nil),                    // 13: pb2.Extensions
-	(*ExtensionsContainer)(nil),           // 14: pb2.ExtensionsContainer
-	(*MessageSet)(nil),                    // 15: pb2.MessageSet
-	(*MessageSetExtension)(nil),           // 16: pb2.MessageSetExtension
-	(*FakeMessageSet)(nil),                // 17: pb2.FakeMessageSet
-	(*FakeMessageSetExtension)(nil),       // 18: pb2.FakeMessageSetExtension
-	(*KnownTypes)(nil),                    // 19: pb2.KnownTypes
-	(*Nests_OptGroup)(nil),                // 20: pb2.Nests.OptGroup
-	(*Nests_RptGroup)(nil),                // 21: pb2.Nests.RptGroup
-	(*Nests_OptGroup_OptNestedGroup)(nil), // 22: pb2.Nests.OptGroup.OptNestedGroup
-	nil,                                   // 23: pb2.Maps.Int32ToStrEntry
-	nil,                                   // 24: pb2.Maps.Sfixed64ToBoolEntry
-	nil,                                   // 25: pb2.Maps.BoolToUint32Entry
-	nil,                                   // 26: pb2.Maps.Uint64ToEnumEntry
-	nil,                                   // 27: pb2.Maps.StrToNestedEntry
-	nil,                                   // 28: pb2.Maps.StrToOneofsEntry
-	nil,                                   // 29: pb2.IndirectRequired.StrToNestedEntry
-	(*wrappers.BoolValue)(nil),            // 30: google.protobuf.BoolValue
-	(*wrappers.Int32Value)(nil),           // 31: google.protobuf.Int32Value
-	(*wrappers.Int64Value)(nil),           // 32: google.protobuf.Int64Value
-	(*wrappers.UInt32Value)(nil),          // 33: google.protobuf.UInt32Value
-	(*wrappers.UInt64Value)(nil),          // 34: google.protobuf.UInt64Value
-	(*wrappers.FloatValue)(nil),           // 35: google.protobuf.FloatValue
-	(*wrappers.DoubleValue)(nil),          // 36: google.protobuf.DoubleValue
-	(*wrappers.StringValue)(nil),          // 37: google.protobuf.StringValue
-	(*wrappers.BytesValue)(nil),           // 38: google.protobuf.BytesValue
-	(*duration.Duration)(nil),             // 39: google.protobuf.Duration
-	(*timestamp.Timestamp)(nil),           // 40: google.protobuf.Timestamp
-	(*_struct.Struct)(nil),                // 41: google.protobuf.Struct
-	(*_struct.ListValue)(nil),             // 42: google.protobuf.ListValue
-	(*_struct.Value)(nil),                 // 43: google.protobuf.Value
-	(*empty.Empty)(nil),                   // 44: google.protobuf.Empty
-	(*any.Any)(nil),                       // 45: google.protobuf.Any
-}
-var xxx_Test_protoFile_depIdxs = []int32{
-	13, // pb2.opt_ext_bool:extendee -> pb2.Extensions
-	13, // pb2.opt_ext_string:extendee -> pb2.Extensions
-	13, // pb2.opt_ext_enum:extendee -> pb2.Extensions
-	13, // pb2.opt_ext_nested:extendee -> pb2.Extensions
-	13, // pb2.rpt_ext_fixed32:extendee -> pb2.Extensions
-	13, // pb2.rpt_ext_enum:extendee -> pb2.Extensions
-	13, // pb2.rpt_ext_nested:extendee -> pb2.Extensions
-	15, // pb2.message_set_extension:extendee -> pb2.MessageSet
-	13, // pb2.ExtensionsContainer.opt_ext_bool:extendee -> pb2.Extensions
-	13, // pb2.ExtensionsContainer.opt_ext_string:extendee -> pb2.Extensions
-	13, // pb2.ExtensionsContainer.opt_ext_enum:extendee -> pb2.Extensions
-	13, // pb2.ExtensionsContainer.opt_ext_nested:extendee -> pb2.Extensions
-	13, // pb2.ExtensionsContainer.rpt_ext_string:extendee -> pb2.Extensions
-	13, // pb2.ExtensionsContainer.rpt_ext_enum:extendee -> pb2.Extensions
-	13, // pb2.ExtensionsContainer.rpt_ext_nested:extendee -> pb2.Extensions
-	15, // pb2.MessageSetExtension.message_set_extension:extendee -> pb2.MessageSet
-	15, // pb2.MessageSetExtension.not_message_set_extension:extendee -> pb2.MessageSet
-	15, // pb2.MessageSetExtension.ext_nested:extendee -> pb2.MessageSet
-	17, // pb2.FakeMessageSetExtension.message_set_extension:extendee -> pb2.FakeMessageSet
-	0,  // pb2.Enums.opt_enum:type_name -> pb2.Enum
-	0,  // pb2.Enums.rpt_enum:type_name -> pb2.Enum
-	1,  // pb2.Enums.opt_nested_enum:type_name -> pb2.Enums.NestedEnum
-	1,  // pb2.Enums.rpt_nested_enum:type_name -> pb2.Enums.NestedEnum
-	6,  // pb2.Nests.opt_nested:type_name -> pb2.Nested
-	20, // pb2.Nests.optgroup:type_name -> pb2.Nests.OptGroup
-	6,  // pb2.Nests.rpt_nested:type_name -> pb2.Nested
-	21, // pb2.Nests.rptgroup:type_name -> pb2.Nests.RptGroup
-	6,  // pb2.Nested.opt_nested:type_name -> pb2.Nested
-	0,  // pb2.Requireds.req_enum:type_name -> pb2.Enum
-	6,  // pb2.Requireds.req_nested:type_name -> pb2.Nested
-	6,  // pb2.Oneofs.msg:type_name -> pb2.Nested
-	23, // pb2.Maps.int32_to_str:type_name -> pb2.Maps.Int32ToStrEntry
-	24, // pb2.Maps.sfixed64_to_bool:type_name -> pb2.Maps.Sfixed64ToBoolEntry
-	25, // pb2.Maps.bool_to_uint32:type_name -> pb2.Maps.BoolToUint32Entry
-	26, // pb2.Maps.uint64_to_enum:type_name -> pb2.Maps.Uint64ToEnumEntry
-	27, // pb2.Maps.str_to_nested:type_name -> pb2.Maps.StrToNestedEntry
-	28, // pb2.Maps.str_to_oneofs:type_name -> pb2.Maps.StrToOneofsEntry
-	11, // pb2.IndirectRequired.opt_nested:type_name -> pb2.NestedWithRequired
-	11, // pb2.IndirectRequired.rpt_nested:type_name -> pb2.NestedWithRequired
-	29, // pb2.IndirectRequired.str_to_nested:type_name -> pb2.IndirectRequired.StrToNestedEntry
-	30, // pb2.KnownTypes.opt_bool:type_name -> google.protobuf.BoolValue
-	31, // pb2.KnownTypes.opt_int32:type_name -> google.protobuf.Int32Value
-	32, // pb2.KnownTypes.opt_int64:type_name -> google.protobuf.Int64Value
-	33, // pb2.KnownTypes.opt_uint32:type_name -> google.protobuf.UInt32Value
-	34, // pb2.KnownTypes.opt_uint64:type_name -> google.protobuf.UInt64Value
-	35, // pb2.KnownTypes.opt_float:type_name -> google.protobuf.FloatValue
-	36, // pb2.KnownTypes.opt_double:type_name -> google.protobuf.DoubleValue
-	37, // pb2.KnownTypes.opt_string:type_name -> google.protobuf.StringValue
-	38, // pb2.KnownTypes.opt_bytes:type_name -> google.protobuf.BytesValue
-	39, // pb2.KnownTypes.opt_duration:type_name -> google.protobuf.Duration
-	40, // pb2.KnownTypes.opt_timestamp:type_name -> google.protobuf.Timestamp
-	41, // pb2.KnownTypes.opt_struct:type_name -> google.protobuf.Struct
-	42, // pb2.KnownTypes.opt_list:type_name -> google.protobuf.ListValue
-	43, // pb2.KnownTypes.opt_value:type_name -> google.protobuf.Value
-	44, // pb2.KnownTypes.opt_empty:type_name -> google.protobuf.Empty
-	45, // pb2.KnownTypes.opt_any:type_name -> google.protobuf.Any
-	6,  // pb2.Nests.OptGroup.opt_nested:type_name -> pb2.Nested
-	22, // pb2.Nests.OptGroup.optnestedgroup:type_name -> pb2.Nests.OptGroup.OptNestedGroup
-	0,  // pb2.Nests.OptGroup.OptNestedGroup.opt_enum:type_name -> pb2.Enum
-	0,  // pb2.Maps.Uint64ToEnumEntry.value:type_name -> pb2.Enum
-	6,  // pb2.Maps.StrToNestedEntry.value:type_name -> pb2.Nested
-	9,  // pb2.Maps.StrToOneofsEntry.value:type_name -> pb2.Oneofs
-	11, // pb2.IndirectRequired.StrToNestedEntry.value:type_name -> pb2.NestedWithRequired
-	0,  // pb2.opt_ext_enum:type_name -> pb2.Enum
-	6,  // pb2.opt_ext_nested:type_name -> pb2.Nested
-	0,  // pb2.rpt_ext_enum:type_name -> pb2.Enum
-	6,  // pb2.rpt_ext_nested:type_name -> pb2.Nested
-	18, // pb2.message_set_extension:type_name -> pb2.FakeMessageSetExtension
-	0,  // pb2.ExtensionsContainer.opt_ext_enum:type_name -> pb2.Enum
-	6,  // pb2.ExtensionsContainer.opt_ext_nested:type_name -> pb2.Nested
-	0,  // pb2.ExtensionsContainer.rpt_ext_enum:type_name -> pb2.Enum
-	6,  // pb2.ExtensionsContainer.rpt_ext_nested:type_name -> pb2.Nested
-	16, // pb2.MessageSetExtension.message_set_extension:type_name -> pb2.MessageSetExtension
-	16, // pb2.MessageSetExtension.not_message_set_extension:type_name -> pb2.MessageSetExtension
-	6,  // pb2.MessageSetExtension.ext_nested:type_name -> pb2.Nested
-	18, // pb2.FakeMessageSetExtension.message_set_extension:type_name -> pb2.FakeMessageSetExtension
-}
-
-func init() {
-	var messageTypes [28]protoreflect.MessageType
-	var extensionTypes [19]protoreflect.ExtensionType
-	Test_protoFile = protoimpl.FileBuilder{
-		RawDescriptor:        fileDescriptor_c8d7acc1bcec9a72,
-		GoTypes:              xxx_Test_protoFile_goTypes,
-		DependencyIndexes:    xxx_Test_protoFile_depIdxs,
-		EnumOutputTypes:      xxx_Test_protoFile_enumTypes[:],
-		MessageOutputTypes:   messageTypes[:],
-		ExtensionOutputTypes: extensionTypes[:],
-	}.Init()
-	messageGoTypes := xxx_Test_protoFile_goTypes[2:][:28]
-	for i, mt := range messageTypes[:] {
-		xxx_Test_protoFile_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_Test_protoFile_messageTypes[i].PBType = mt
-	}
-	E_OptExtBool.Type = extensionTypes[0]
-	E_OptExtString.Type = extensionTypes[1]
-	E_OptExtEnum.Type = extensionTypes[2]
-	E_OptExtNested.Type = extensionTypes[3]
-	E_RptExtFixed32.Type = extensionTypes[4]
-	E_RptExtEnum.Type = extensionTypes[5]
-	E_RptExtNested.Type = extensionTypes[6]
-	E_MessageSetExtension.Type = extensionTypes[7]
-	E_ExtensionsContainer_OptExtBool.Type = extensionTypes[8]
-	E_ExtensionsContainer_OptExtString.Type = extensionTypes[9]
-	E_ExtensionsContainer_OptExtEnum.Type = extensionTypes[10]
-	E_ExtensionsContainer_OptExtNested.Type = extensionTypes[11]
-	E_ExtensionsContainer_RptExtString.Type = extensionTypes[12]
-	E_ExtensionsContainer_RptExtEnum.Type = extensionTypes[13]
-	E_ExtensionsContainer_RptExtNested.Type = extensionTypes[14]
-	E_MessageSetExtension_MessageSetExtension.Type = extensionTypes[15]
-	E_MessageSetExtension_NotMessageSetExtension.Type = extensionTypes[16]
-	E_MessageSetExtension_ExtNested.Type = extensionTypes[17]
-	E_FakeMessageSetExtension_MessageSetExtension.Type = extensionTypes[18]
-	xxx_Test_protoFile_goTypes = nil
-	xxx_Test_protoFile_depIdxs = nil
-}
diff --git a/encoding/textpb/testprotos/pb3/test.pb.go b/encoding/textpb/testprotos/pb3/test.pb.go
deleted file mode 100644
index a0c3e18..0000000
--- a/encoding/textpb/testprotos/pb3/test.pb.go
+++ /dev/null
@@ -1,510 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: encoding/textpb/testprotos/pb3/test.proto
-
-package pb3
-
-import (
-	bytes "bytes"
-	gzip "compress/gzip"
-	proto "github.com/golang/protobuf/proto"
-	protoreflect "github.com/golang/protobuf/v2/reflect/protoreflect"
-	protoimpl "github.com/golang/protobuf/v2/runtime/protoimpl"
-	reflect "reflect"
-)
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
-
-type Enum int32
-
-const (
-	Enum_ZERO Enum = 0
-	Enum_ONE  Enum = 1
-	Enum_TWO  Enum = 2
-	Enum_TEN  Enum = 10
-)
-
-func (e Enum) Type() protoreflect.EnumType {
-	return xxx_Test_protoFile_enumTypes[0]
-}
-func (e Enum) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(e)
-}
-
-var Enum_name = map[int32]string{
-	0:  "ZERO",
-	1:  "ONE",
-	2:  "TWO",
-	10: "TEN",
-}
-
-var Enum_value = map[string]int32{
-	"ZERO": 0,
-	"ONE":  1,
-	"TWO":  2,
-	"TEN":  10,
-}
-
-func (x Enum) String() string {
-	return proto.EnumName(Enum_name, int32(x))
-}
-
-func (Enum) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_0854715c5b41c422_gzipped, []int{0}
-}
-
-type Enums_NestedEnum int32
-
-const (
-	Enums_CERO Enums_NestedEnum = 0
-	Enums_UNO  Enums_NestedEnum = 1
-	Enums_DOS  Enums_NestedEnum = 2
-	Enums_DIEZ Enums_NestedEnum = 10
-)
-
-func (e Enums_NestedEnum) Type() protoreflect.EnumType {
-	return xxx_Test_protoFile_enumTypes[1]
-}
-func (e Enums_NestedEnum) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(e)
-}
-
-var Enums_NestedEnum_name = map[int32]string{
-	0:  "CERO",
-	1:  "UNO",
-	2:  "DOS",
-	10: "DIEZ",
-}
-
-var Enums_NestedEnum_value = map[string]int32{
-	"CERO": 0,
-	"UNO":  1,
-	"DOS":  2,
-	"DIEZ": 10,
-}
-
-func (x Enums_NestedEnum) String() string {
-	return proto.EnumName(Enums_NestedEnum_name, int32(x))
-}
-
-func (Enums_NestedEnum) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_0854715c5b41c422_gzipped, []int{1, 0}
-}
-
-// Scalars contains scalar field types.
-type Scalars struct {
-	SBool                bool     `protobuf:"varint,1,opt,name=s_bool,json=sBool,proto3" json:"s_bool,omitempty"`
-	SInt32               int32    `protobuf:"varint,2,opt,name=s_int32,json=sInt32,proto3" json:"s_int32,omitempty"`
-	SInt64               int64    `protobuf:"varint,3,opt,name=s_int64,json=sInt64,proto3" json:"s_int64,omitempty"`
-	SUint32              uint32   `protobuf:"varint,4,opt,name=s_uint32,json=sUint32,proto3" json:"s_uint32,omitempty"`
-	SUint64              uint64   `protobuf:"varint,5,opt,name=s_uint64,json=sUint64,proto3" json:"s_uint64,omitempty"`
-	SSint32              int32    `protobuf:"zigzag32,6,opt,name=s_sint32,json=sSint32,proto3" json:"s_sint32,omitempty"`
-	SSint64              int64    `protobuf:"zigzag64,7,opt,name=s_sint64,json=sSint64,proto3" json:"s_sint64,omitempty"`
-	SFixed32             uint32   `protobuf:"fixed32,8,opt,name=s_fixed32,json=sFixed32,proto3" json:"s_fixed32,omitempty"`
-	SFixed64             uint64   `protobuf:"fixed64,9,opt,name=s_fixed64,json=sFixed64,proto3" json:"s_fixed64,omitempty"`
-	SSfixed32            int32    `protobuf:"fixed32,10,opt,name=s_sfixed32,json=sSfixed32,proto3" json:"s_sfixed32,omitempty"`
-	SSfixed64            int64    `protobuf:"fixed64,11,opt,name=s_sfixed64,json=sSfixed64,proto3" json:"s_sfixed64,omitempty"`
-	SFloat               float32  `protobuf:"fixed32,20,opt,name=s_float,json=sFloat,proto3" json:"s_float,omitempty"`
-	SDouble              float64  `protobuf:"fixed64,21,opt,name=s_double,json=sDouble,proto3" json:"s_double,omitempty"`
-	SBytes               []byte   `protobuf:"bytes,14,opt,name=s_bytes,json=sBytes,proto3" json:"s_bytes,omitempty"`
-	SString              string   `protobuf:"bytes,13,opt,name=s_string,json=sString,proto3" json:"s_string,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Scalars) ProtoReflect() protoreflect.Message {
-	return xxx_Test_protoFile_messageTypes[0].MessageOf(m)
-}
-func (m *Scalars) Reset()         { *m = Scalars{} }
-func (m *Scalars) String() string { return proto.CompactTextString(m) }
-func (*Scalars) ProtoMessage()    {}
-func (*Scalars) Descriptor() ([]byte, []int) {
-	return fileDescriptor_0854715c5b41c422_gzipped, []int{0}
-}
-
-func (m *Scalars) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Scalars.Unmarshal(m, b)
-}
-func (m *Scalars) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Scalars.Marshal(b, m, deterministic)
-}
-func (m *Scalars) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Scalars.Merge(m, src)
-}
-func (m *Scalars) XXX_Size() int {
-	return xxx_messageInfo_Scalars.Size(m)
-}
-func (m *Scalars) XXX_DiscardUnknown() {
-	xxx_messageInfo_Scalars.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Scalars proto.InternalMessageInfo
-
-func (m *Scalars) GetSBool() bool {
-	if m != nil {
-		return m.SBool
-	}
-	return false
-}
-
-func (m *Scalars) GetSInt32() int32 {
-	if m != nil {
-		return m.SInt32
-	}
-	return 0
-}
-
-func (m *Scalars) GetSInt64() int64 {
-	if m != nil {
-		return m.SInt64
-	}
-	return 0
-}
-
-func (m *Scalars) GetSUint32() uint32 {
-	if m != nil {
-		return m.SUint32
-	}
-	return 0
-}
-
-func (m *Scalars) GetSUint64() uint64 {
-	if m != nil {
-		return m.SUint64
-	}
-	return 0
-}
-
-func (m *Scalars) GetSSint32() int32 {
-	if m != nil {
-		return m.SSint32
-	}
-	return 0
-}
-
-func (m *Scalars) GetSSint64() int64 {
-	if m != nil {
-		return m.SSint64
-	}
-	return 0
-}
-
-func (m *Scalars) GetSFixed32() uint32 {
-	if m != nil {
-		return m.SFixed32
-	}
-	return 0
-}
-
-func (m *Scalars) GetSFixed64() uint64 {
-	if m != nil {
-		return m.SFixed64
-	}
-	return 0
-}
-
-func (m *Scalars) GetSSfixed32() int32 {
-	if m != nil {
-		return m.SSfixed32
-	}
-	return 0
-}
-
-func (m *Scalars) GetSSfixed64() int64 {
-	if m != nil {
-		return m.SSfixed64
-	}
-	return 0
-}
-
-func (m *Scalars) GetSFloat() float32 {
-	if m != nil {
-		return m.SFloat
-	}
-	return 0
-}
-
-func (m *Scalars) GetSDouble() float64 {
-	if m != nil {
-		return m.SDouble
-	}
-	return 0
-}
-
-func (m *Scalars) GetSBytes() []byte {
-	if m != nil {
-		return m.SBytes
-	}
-	return nil
-}
-
-func (m *Scalars) GetSString() string {
-	if m != nil {
-		return m.SString
-	}
-	return ""
-}
-
-// Message contains enum fields.
-type Enums struct {
-	SEnum                Enum             `protobuf:"varint,1,opt,name=s_enum,json=sEnum,proto3,enum=pb3.Enum" json:"s_enum,omitempty"`
-	SNestedEnum          Enums_NestedEnum `protobuf:"varint,3,opt,name=s_nested_enum,json=sNestedEnum,proto3,enum=pb3.Enums_NestedEnum" json:"s_nested_enum,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
-}
-
-func (m *Enums) ProtoReflect() protoreflect.Message {
-	return xxx_Test_protoFile_messageTypes[1].MessageOf(m)
-}
-func (m *Enums) Reset()         { *m = Enums{} }
-func (m *Enums) String() string { return proto.CompactTextString(m) }
-func (*Enums) ProtoMessage()    {}
-func (*Enums) Descriptor() ([]byte, []int) {
-	return fileDescriptor_0854715c5b41c422_gzipped, []int{1}
-}
-
-func (m *Enums) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Enums.Unmarshal(m, b)
-}
-func (m *Enums) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Enums.Marshal(b, m, deterministic)
-}
-func (m *Enums) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Enums.Merge(m, src)
-}
-func (m *Enums) XXX_Size() int {
-	return xxx_messageInfo_Enums.Size(m)
-}
-func (m *Enums) XXX_DiscardUnknown() {
-	xxx_messageInfo_Enums.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Enums proto.InternalMessageInfo
-
-func (m *Enums) GetSEnum() Enum {
-	if m != nil {
-		return m.SEnum
-	}
-	return Enum_ZERO
-}
-
-func (m *Enums) GetSNestedEnum() Enums_NestedEnum {
-	if m != nil {
-		return m.SNestedEnum
-	}
-	return Enums_CERO
-}
-
-// Message contains nested message field.
-type Nests struct {
-	SNested              *Nested  `protobuf:"bytes,1,opt,name=s_nested,json=sNested,proto3" json:"s_nested,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Nests) ProtoReflect() protoreflect.Message {
-	return xxx_Test_protoFile_messageTypes[2].MessageOf(m)
-}
-func (m *Nests) Reset()         { *m = Nests{} }
-func (m *Nests) String() string { return proto.CompactTextString(m) }
-func (*Nests) ProtoMessage()    {}
-func (*Nests) Descriptor() ([]byte, []int) {
-	return fileDescriptor_0854715c5b41c422_gzipped, []int{2}
-}
-
-func (m *Nests) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Nests.Unmarshal(m, b)
-}
-func (m *Nests) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Nests.Marshal(b, m, deterministic)
-}
-func (m *Nests) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Nests.Merge(m, src)
-}
-func (m *Nests) XXX_Size() int {
-	return xxx_messageInfo_Nests.Size(m)
-}
-func (m *Nests) XXX_DiscardUnknown() {
-	xxx_messageInfo_Nests.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Nests proto.InternalMessageInfo
-
-func (m *Nests) GetSNested() *Nested {
-	if m != nil {
-		return m.SNested
-	}
-	return nil
-}
-
-// Message type used as submessage.
-type Nested struct {
-	SString              string   `protobuf:"bytes,1,opt,name=s_string,json=sString,proto3" json:"s_string,omitempty"`
-	SNested              *Nested  `protobuf:"bytes,2,opt,name=s_nested,json=sNested,proto3" json:"s_nested,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Nested) ProtoReflect() protoreflect.Message {
-	return xxx_Test_protoFile_messageTypes[3].MessageOf(m)
-}
-func (m *Nested) Reset()         { *m = Nested{} }
-func (m *Nested) String() string { return proto.CompactTextString(m) }
-func (*Nested) ProtoMessage()    {}
-func (*Nested) Descriptor() ([]byte, []int) {
-	return fileDescriptor_0854715c5b41c422_gzipped, []int{3}
-}
-
-func (m *Nested) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Nested.Unmarshal(m, b)
-}
-func (m *Nested) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Nested.Marshal(b, m, deterministic)
-}
-func (m *Nested) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Nested.Merge(m, src)
-}
-func (m *Nested) XXX_Size() int {
-	return xxx_messageInfo_Nested.Size(m)
-}
-func (m *Nested) XXX_DiscardUnknown() {
-	xxx_messageInfo_Nested.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Nested proto.InternalMessageInfo
-
-func (m *Nested) GetSString() string {
-	if m != nil {
-		return m.SString
-	}
-	return ""
-}
-
-func (m *Nested) GetSNested() *Nested {
-	if m != nil {
-		return m.SNested
-	}
-	return nil
-}
-
-func init() {
-	proto.RegisterFile("encoding/textpb/testprotos/pb3/test.proto", fileDescriptor_0854715c5b41c422_gzipped)
-	proto.RegisterEnum("pb3.Enum", Enum_name, Enum_value)
-	proto.RegisterEnum("pb3.Enums_NestedEnum", Enums_NestedEnum_name, Enums_NestedEnum_value)
-	proto.RegisterType((*Scalars)(nil), "pb3.Scalars")
-	proto.RegisterType((*Enums)(nil), "pb3.Enums")
-	proto.RegisterType((*Nests)(nil), "pb3.Nests")
-	proto.RegisterType((*Nested)(nil), "pb3.Nested")
-}
-
-var fileDescriptor_0854715c5b41c422 = []byte{
-	// 863 bytes of the wire-encoded FileDescriptorProto
-	0x0a, 0x29, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x70,
-	0x62, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x70, 0x62, 0x33,
-	0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x03, 0x70, 0x62, 0x33,
-	0x22, 0x9e, 0x03, 0x0a, 0x07, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x73, 0x12, 0x15, 0x0a, 0x06,
-	0x73, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x73, 0x42,
-	0x6f, 0x6f, 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x17, 0x0a, 0x07,
-	0x73, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73,
-	0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33,
-	0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32,
-	0x12, 0x19, 0x0a, 0x08, 0x73, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x05, 0x20, 0x01,
-	0x28, 0x04, 0x52, 0x07, 0x73, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x19, 0x0a, 0x08, 0x73,
-	0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x06, 0x20, 0x01, 0x28, 0x11, 0x52, 0x07, 0x73,
-	0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x5f, 0x73, 0x69, 0x6e, 0x74,
-	0x36, 0x34, 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x07, 0x73, 0x53, 0x69, 0x6e, 0x74, 0x36,
-	0x34, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x08,
-	0x20, 0x01, 0x28, 0x07, 0x52, 0x08, 0x73, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x1b,
-	0x0a, 0x09, 0x73, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x09, 0x20, 0x01, 0x28,
-	0x06, 0x52, 0x08, 0x73, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x1d, 0x0a, 0x0a, 0x73,
-	0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0f, 0x52,
-	0x09, 0x73, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x5f,
-	0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x10, 0x52, 0x09,
-	0x73, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x5f, 0x66,
-	0x6c, 0x6f, 0x61, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x73, 0x46, 0x6c, 0x6f,
-	0x61, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x15,
-	0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x73, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x17, 0x0a,
-	0x07, 0x73, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06,
-	0x73, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x5f, 0x73, 0x74, 0x72, 0x69,
-	0x6e, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e,
-	0x67, 0x22, 0x98, 0x01, 0x0a, 0x05, 0x45, 0x6e, 0x75, 0x6d, 0x73, 0x12, 0x20, 0x0a, 0x06, 0x73,
-	0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62,
-	0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x05, 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x39, 0x0a,
-	0x0d, 0x73, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x03,
-	0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, 0x62, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x73,
-	0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0b, 0x73, 0x4e, 0x65,
-	0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x22, 0x32, 0x0a, 0x0a, 0x4e, 0x65, 0x73, 0x74,
-	0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x08, 0x0a, 0x04, 0x43, 0x45, 0x52, 0x4f, 0x10, 0x00,
-	0x12, 0x07, 0x0a, 0x03, 0x55, 0x4e, 0x4f, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x44, 0x4f, 0x53,
-	0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x49, 0x45, 0x5a, 0x10, 0x0a, 0x22, 0x2f, 0x0a, 0x05,
-	0x4e, 0x65, 0x73, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x08, 0x73, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65,
-	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x33, 0x2e, 0x4e, 0x65,
-	0x73, 0x74, 0x65, 0x64, 0x52, 0x07, 0x73, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x22, 0x4b, 0x0a,
-	0x06, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x5f, 0x73, 0x74, 0x72,
-	0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x53, 0x74, 0x72, 0x69,
-	0x6e, 0x67, 0x12, 0x26, 0x0a, 0x08, 0x73, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x33, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65,
-	0x64, 0x52, 0x07, 0x73, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x2a, 0x2b, 0x0a, 0x04, 0x45, 0x6e,
-	0x75, 0x6d, 0x12, 0x08, 0x0a, 0x04, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03,
-	0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x57, 0x4f, 0x10, 0x02, 0x12, 0x07,
-	0x0a, 0x03, 0x54, 0x45, 0x4e, 0x10, 0x0a, 0x42, 0x3e, 0x5a, 0x3c, 0x67, 0x69, 0x74, 0x68, 0x75,
-	0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x76, 0x32, 0x2f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e,
-	0x67, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x70, 0x62, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x73, 0x2f, 0x70, 0x62, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var fileDescriptor_0854715c5b41c422_gzipped = func() []byte {
-	bb := new(bytes.Buffer)
-	zw, _ := gzip.NewWriterLevel(bb, gzip.NoCompression)
-	zw.Write(fileDescriptor_0854715c5b41c422)
-	zw.Close()
-	return bb.Bytes()
-}()
-
-const _ = protoimpl.EnforceVersion(protoimpl.Version - 0)
-
-var Test_protoFile protoreflect.FileDescriptor
-
-var xxx_Test_protoFile_enumTypes [2]protoreflect.EnumType
-var xxx_Test_protoFile_messageTypes [4]protoimpl.MessageType
-var xxx_Test_protoFile_goTypes = []interface{}{
-	(Enum)(0),             // 0: pb3.Enum
-	(Enums_NestedEnum)(0), // 1: pb3.Enums.NestedEnum
-	(*Scalars)(nil),       // 2: pb3.Scalars
-	(*Enums)(nil),         // 3: pb3.Enums
-	(*Nests)(nil),         // 4: pb3.Nests
-	(*Nested)(nil),        // 5: pb3.Nested
-}
-var xxx_Test_protoFile_depIdxs = []int32{
-	0, // pb3.Enums.s_enum:type_name -> pb3.Enum
-	1, // pb3.Enums.s_nested_enum:type_name -> pb3.Enums.NestedEnum
-	5, // pb3.Nests.s_nested:type_name -> pb3.Nested
-	5, // pb3.Nested.s_nested:type_name -> pb3.Nested
-}
-
-func init() {
-	var messageTypes [4]protoreflect.MessageType
-	Test_protoFile = protoimpl.FileBuilder{
-		RawDescriptor:      fileDescriptor_0854715c5b41c422,
-		GoTypes:            xxx_Test_protoFile_goTypes,
-		DependencyIndexes:  xxx_Test_protoFile_depIdxs,
-		EnumOutputTypes:    xxx_Test_protoFile_enumTypes[:],
-		MessageOutputTypes: messageTypes[:],
-	}.Init()
-	messageGoTypes := xxx_Test_protoFile_goTypes[2:][:4]
-	for i, mt := range messageTypes[:] {
-		xxx_Test_protoFile_messageTypes[i].GoType = reflect.TypeOf(messageGoTypes[i])
-		xxx_Test_protoFile_messageTypes[i].PBType = mt
-	}
-	xxx_Test_protoFile_goTypes = nil
-	xxx_Test_protoFile_depIdxs = nil
-}