// Code generated by protoc-gen-go. DO NOT EDIT.
// source: extensions/ext/ext.proto

package ext

import (
	fmt "fmt"
	proto "github.com/golang/protobuf/proto"
	base "github.com/golang/protobuf/v2/cmd/protoc-gen-go/testdata/extensions/base"
	extra "github.com/golang/protobuf/v2/cmd/protoc-gen-go/testdata/extensions/extra"
	math "math"
)

// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

// 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.ProtoPackageIsVersion2 // please upgrade the proto package

type Enum int32

const (
	Enum_ZERO Enum = 0
)

var Enum_name = map[int32]string{
	0: "ZERO",
}

var Enum_value = map[string]int32{
	"ZERO": 0,
}

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_bf470ef4907b23cb, []int{0}
}

type Message struct {
	Data                 []byte   `protobuf:"bytes,1,opt,name=data" json:"data,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Message) Reset()         { *m = Message{} }
func (m *Message) String() string { return proto.CompactTextString(m) }
func (*Message) ProtoMessage()    {}
func (*Message) Descriptor() ([]byte, []int) {
	return fileDescriptor_bf470ef4907b23cb, []int{0}
}

func (m *Message) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Message.Unmarshal(m, b)
}
func (m *Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Message.Marshal(b, m, deterministic)
}
func (m *Message) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Message.Merge(m, src)
}
func (m *Message) XXX_Size() int {
	return xxx_messageInfo_Message.Size(m)
}
func (m *Message) XXX_DiscardUnknown() {
	xxx_messageInfo_Message.DiscardUnknown(m)
}

var xxx_messageInfo_Message proto.InternalMessageInfo

func (m *Message) GetData() []byte {
	if m != nil {
		return m.Data
	}
	return nil
}

type Message_M struct {
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Message_M) Reset()         { *m = Message_M{} }
func (m *Message_M) String() string { return proto.CompactTextString(m) }
func (*Message_M) ProtoMessage()    {}
func (*Message_M) Descriptor() ([]byte, []int) {
	return fileDescriptor_bf470ef4907b23cb, []int{0, 0}
}

func (m *Message_M) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Message_M.Unmarshal(m, b)
}
func (m *Message_M) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Message_M.Marshal(b, m, deterministic)
}
func (m *Message_M) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Message_M.Merge(m, src)
}
func (m *Message_M) XXX_Size() int {
	return xxx_messageInfo_Message_M.Size(m)
}
func (m *Message_M) XXX_DiscardUnknown() {
	xxx_messageInfo_Message_M.DiscardUnknown(m)
}

var xxx_messageInfo_Message_M proto.InternalMessageInfo

type ExtensionGroup struct {
	ExtensionGroup       *string  `protobuf:"bytes,120,opt,name=extension_group,json=extensionGroup" json:"extension_group,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *ExtensionGroup) Reset()         { *m = ExtensionGroup{} }
func (m *ExtensionGroup) String() string { return proto.CompactTextString(m) }
func (*ExtensionGroup) ProtoMessage()    {}
func (*ExtensionGroup) Descriptor() ([]byte, []int) {
	return fileDescriptor_bf470ef4907b23cb, []int{1}
}

func (m *ExtensionGroup) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ExtensionGroup.Unmarshal(m, b)
}
func (m *ExtensionGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ExtensionGroup.Marshal(b, m, deterministic)
}
func (m *ExtensionGroup) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ExtensionGroup.Merge(m, src)
}
func (m *ExtensionGroup) XXX_Size() int {
	return xxx_messageInfo_ExtensionGroup.Size(m)
}
func (m *ExtensionGroup) XXX_DiscardUnknown() {
	xxx_messageInfo_ExtensionGroup.DiscardUnknown(m)
}

var xxx_messageInfo_ExtensionGroup proto.InternalMessageInfo

func (m *ExtensionGroup) GetExtensionGroup() string {
	if m != nil && m.ExtensionGroup != nil {
		return *m.ExtensionGroup
	}
	return ""
}

// Extend in the scope of another type.
type ExtendingMessage struct {
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *ExtendingMessage) Reset()         { *m = ExtendingMessage{} }
func (m *ExtendingMessage) String() string { return proto.CompactTextString(m) }
func (*ExtendingMessage) ProtoMessage()    {}
func (*ExtendingMessage) Descriptor() ([]byte, []int) {
	return fileDescriptor_bf470ef4907b23cb, []int{2}
}

func (m *ExtendingMessage) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ExtendingMessage.Unmarshal(m, b)
}
func (m *ExtendingMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ExtendingMessage.Marshal(b, m, deterministic)
}
func (m *ExtendingMessage) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ExtendingMessage.Merge(m, src)
}
func (m *ExtendingMessage) XXX_Size() int {
	return xxx_messageInfo_ExtendingMessage.Size(m)
}
func (m *ExtendingMessage) XXX_DiscardUnknown() {
	xxx_messageInfo_ExtendingMessage.DiscardUnknown(m)
}

var xxx_messageInfo_ExtendingMessage proto.InternalMessageInfo

var E_ExtendingMessage_ExtendingMessageString = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: (*string)(nil),
	Field:         200,
	Name:          "goproto.protoc.extension.ext.ExtendingMessage.extending_message_string",
	Tag:           "bytes,200,opt,name=extending_message_string",
	Filename:      "extensions/ext/ext.proto",
}

var E_ExtendingMessage_ExtendingMessageSubmessage = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: (*ExtendingMessage_ExtendingMessageSubmessage)(nil),
	Field:         201,
	Name:          "goproto.protoc.extension.ext.ExtendingMessage.extending_message_submessage",
	Tag:           "bytes,201,opt,name=extending_message_submessage",
	Filename:      "extensions/ext/ext.proto",
}

type ExtendingMessage_ExtendingMessageSubmessage struct {
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *ExtendingMessage_ExtendingMessageSubmessage) Reset() {
	*m = ExtendingMessage_ExtendingMessageSubmessage{}
}
func (m *ExtendingMessage_ExtendingMessageSubmessage) String() string {
	return proto.CompactTextString(m)
}
func (*ExtendingMessage_ExtendingMessageSubmessage) ProtoMessage() {}
func (*ExtendingMessage_ExtendingMessageSubmessage) Descriptor() ([]byte, []int) {
	return fileDescriptor_bf470ef4907b23cb, []int{2, 0}
}

func (m *ExtendingMessage_ExtendingMessageSubmessage) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ExtendingMessage_ExtendingMessageSubmessage.Unmarshal(m, b)
}
func (m *ExtendingMessage_ExtendingMessageSubmessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ExtendingMessage_ExtendingMessageSubmessage.Marshal(b, m, deterministic)
}
func (m *ExtendingMessage_ExtendingMessageSubmessage) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ExtendingMessage_ExtendingMessageSubmessage.Merge(m, src)
}
func (m *ExtendingMessage_ExtendingMessageSubmessage) XXX_Size() int {
	return xxx_messageInfo_ExtendingMessage_ExtendingMessageSubmessage.Size(m)
}
func (m *ExtendingMessage_ExtendingMessageSubmessage) XXX_DiscardUnknown() {
	xxx_messageInfo_ExtendingMessage_ExtendingMessageSubmessage.DiscardUnknown(m)
}

var xxx_messageInfo_ExtendingMessage_ExtendingMessageSubmessage proto.InternalMessageInfo

type RepeatedGroup struct {
	RepeatedXGroup       []string `protobuf:"bytes,319,rep,name=repeated_x_group,json=repeatedXGroup" json:"repeated_x_group,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *RepeatedGroup) Reset()         { *m = RepeatedGroup{} }
func (m *RepeatedGroup) String() string { return proto.CompactTextString(m) }
func (*RepeatedGroup) ProtoMessage()    {}
func (*RepeatedGroup) Descriptor() ([]byte, []int) {
	return fileDescriptor_bf470ef4907b23cb, []int{3}
}

func (m *RepeatedGroup) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_RepeatedGroup.Unmarshal(m, b)
}
func (m *RepeatedGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_RepeatedGroup.Marshal(b, m, deterministic)
}
func (m *RepeatedGroup) XXX_Merge(src proto.Message) {
	xxx_messageInfo_RepeatedGroup.Merge(m, src)
}
func (m *RepeatedGroup) XXX_Size() int {
	return xxx_messageInfo_RepeatedGroup.Size(m)
}
func (m *RepeatedGroup) XXX_DiscardUnknown() {
	xxx_messageInfo_RepeatedGroup.DiscardUnknown(m)
}

var xxx_messageInfo_RepeatedGroup proto.InternalMessageInfo

func (m *RepeatedGroup) GetRepeatedXGroup() []string {
	if m != nil {
		return m.RepeatedXGroup
	}
	return nil
}

// An extension of an extension.
type Extendable struct {
	XXX_NoUnkeyedLiteral         struct{} `json:"-"`
	proto.XXX_InternalExtensions `json:"-"`
	XXX_unrecognized             []byte `json:"-"`
	XXX_sizecache                int32  `json:"-"`
}

func (m *Extendable) Reset()         { *m = Extendable{} }
func (m *Extendable) String() string { return proto.CompactTextString(m) }
func (*Extendable) ProtoMessage()    {}
func (*Extendable) Descriptor() ([]byte, []int) {
	return fileDescriptor_bf470ef4907b23cb, []int{4}
}

var extRange_Extendable = []proto.ExtensionRange{
	{Start: 1, End: 536870911},
}

func (*Extendable) ExtensionRangeArray() []proto.ExtensionRange {
	return extRange_Extendable
}

func (m *Extendable) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Extendable.Unmarshal(m, b)
}
func (m *Extendable) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Extendable.Marshal(b, m, deterministic)
}
func (m *Extendable) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Extendable.Merge(m, src)
}
func (m *Extendable) XXX_Size() int {
	return xxx_messageInfo_Extendable.Size(m)
}
func (m *Extendable) XXX_DiscardUnknown() {
	xxx_messageInfo_Extendable.DiscardUnknown(m)
}

var xxx_messageInfo_Extendable proto.InternalMessageInfo

// Message set wire format.
type MessageSetWireFormatExtension struct {
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *MessageSetWireFormatExtension) Reset()         { *m = MessageSetWireFormatExtension{} }
func (m *MessageSetWireFormatExtension) String() string { return proto.CompactTextString(m) }
func (*MessageSetWireFormatExtension) ProtoMessage()    {}
func (*MessageSetWireFormatExtension) Descriptor() ([]byte, []int) {
	return fileDescriptor_bf470ef4907b23cb, []int{5}
}

func (m *MessageSetWireFormatExtension) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_MessageSetWireFormatExtension.Unmarshal(m, b)
}
func (m *MessageSetWireFormatExtension) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_MessageSetWireFormatExtension.Marshal(b, m, deterministic)
}
func (m *MessageSetWireFormatExtension) XXX_Merge(src proto.Message) {
	xxx_messageInfo_MessageSetWireFormatExtension.Merge(m, src)
}
func (m *MessageSetWireFormatExtension) XXX_Size() int {
	return xxx_messageInfo_MessageSetWireFormatExtension.Size(m)
}
func (m *MessageSetWireFormatExtension) XXX_DiscardUnknown() {
	xxx_messageInfo_MessageSetWireFormatExtension.DiscardUnknown(m)
}

var xxx_messageInfo_MessageSetWireFormatExtension proto.InternalMessageInfo

var E_MessageSetWireFormatExtension_MessageSetExtension = &proto.ExtensionDesc{
	ExtendedType:  (*base.MessageSetWireFormatMessage)(nil),
	ExtensionType: (*MessageSetWireFormatExtension)(nil),
	Field:         100,
	Name:          "goproto.protoc.extension.ext.MessageSetWireFormatExtension",
	Tag:           "bytes,100,opt,name=message_set_extension",
	Filename:      "extensions/ext/ext.proto",
}

var E_ExtensionBool = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: (*bool)(nil),
	Field:         101,
	Name:          "goproto.protoc.extension.ext.extension_bool",
	Tag:           "varint,101,opt,name=extension_bool",
	Filename:      "extensions/ext/ext.proto",
}

var E_ExtensionEnum = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: (*Enum)(nil),
	Field:         102,
	Name:          "goproto.protoc.extension.ext.extension_enum",
	Tag:           "varint,102,opt,name=extension_enum,enum=goproto.protoc.extension.ext.Enum",
	Filename:      "extensions/ext/ext.proto",
}

var E_ExtensionInt32 = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: (*int32)(nil),
	Field:         103,
	Name:          "goproto.protoc.extension.ext.extension_int32",
	Tag:           "varint,103,opt,name=extension_int32",
	Filename:      "extensions/ext/ext.proto",
}

var E_ExtensionSint32 = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: (*int32)(nil),
	Field:         104,
	Name:          "goproto.protoc.extension.ext.extension_sint32",
	Tag:           "zigzag32,104,opt,name=extension_sint32",
	Filename:      "extensions/ext/ext.proto",
}

var E_ExtensionUint32 = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: (*uint32)(nil),
	Field:         105,
	Name:          "goproto.protoc.extension.ext.extension_uint32",
	Tag:           "varint,105,opt,name=extension_uint32",
	Filename:      "extensions/ext/ext.proto",
}

var E_ExtensionInt64 = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: (*int64)(nil),
	Field:         106,
	Name:          "goproto.protoc.extension.ext.extension_int64",
	Tag:           "varint,106,opt,name=extension_int64",
	Filename:      "extensions/ext/ext.proto",
}

var E_ExtensionSint64 = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: (*int64)(nil),
	Field:         107,
	Name:          "goproto.protoc.extension.ext.extension_sint64",
	Tag:           "zigzag64,107,opt,name=extension_sint64",
	Filename:      "extensions/ext/ext.proto",
}

var E_ExtensionUint64 = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: (*uint64)(nil),
	Field:         108,
	Name:          "goproto.protoc.extension.ext.extension_uint64",
	Tag:           "varint,108,opt,name=extension_uint64",
	Filename:      "extensions/ext/ext.proto",
}

var E_ExtensionSfixed32 = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: (*int32)(nil),
	Field:         109,
	Name:          "goproto.protoc.extension.ext.extension_sfixed32",
	Tag:           "fixed32,109,opt,name=extension_sfixed32",
	Filename:      "extensions/ext/ext.proto",
}

var E_ExtensionFixed32 = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: (*uint32)(nil),
	Field:         110,
	Name:          "goproto.protoc.extension.ext.extension_fixed32",
	Tag:           "fixed32,110,opt,name=extension_fixed32",
	Filename:      "extensions/ext/ext.proto",
}

var E_ExtensionFloat = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: (*float32)(nil),
	Field:         111,
	Name:          "goproto.protoc.extension.ext.extension_float",
	Tag:           "fixed32,111,opt,name=extension_float",
	Filename:      "extensions/ext/ext.proto",
}

var E_ExtensionSfixed64 = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: (*int64)(nil),
	Field:         112,
	Name:          "goproto.protoc.extension.ext.extension_sfixed64",
	Tag:           "fixed64,112,opt,name=extension_sfixed64",
	Filename:      "extensions/ext/ext.proto",
}

var E_ExtensionFixed64 = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: (*uint64)(nil),
	Field:         113,
	Name:          "goproto.protoc.extension.ext.extension_fixed64",
	Tag:           "fixed64,113,opt,name=extension_fixed64",
	Filename:      "extensions/ext/ext.proto",
}

var E_ExtensionDouble = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: (*float64)(nil),
	Field:         114,
	Name:          "goproto.protoc.extension.ext.extension_double",
	Tag:           "fixed64,114,opt,name=extension_double",
	Filename:      "extensions/ext/ext.proto",
}

var E_ExtensionString = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: (*string)(nil),
	Field:         115,
	Name:          "goproto.protoc.extension.ext.extension_string",
	Tag:           "bytes,115,opt,name=extension_string",
	Filename:      "extensions/ext/ext.proto",
}

var E_ExtensionBytes = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: ([]byte)(nil),
	Field:         116,
	Name:          "goproto.protoc.extension.ext.extension_bytes",
	Tag:           "bytes,116,opt,name=extension_bytes",
	Filename:      "extensions/ext/ext.proto",
}

var E_Extension_Message = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: (*Message)(nil),
	Field:         117,
	Name:          "goproto.protoc.extension.ext.extension_Message",
	Tag:           "bytes,117,opt,name=extension_Message",
	Filename:      "extensions/ext/ext.proto",
}

var E_Extension_MessageM = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: (*Message_M)(nil),
	Field:         118,
	Name:          "goproto.protoc.extension.ext.extension_MessageM",
	Tag:           "bytes,118,opt,name=extension_MessageM",
	Filename:      "extensions/ext/ext.proto",
}

var E_Extensiongroup = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: (*ExtensionGroup)(nil),
	Field:         119,
	Name:          "goproto.protoc.extension.ext.extensiongroup",
	Tag:           "group,119,opt,name=ExtensionGroup",
	Filename:      "extensions/ext/ext.proto",
}

var E_ExtraMessage = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: (*extra.ExtraMessage)(nil),
	Field:         9,
	Name:          "goproto.protoc.extension.ext.extra_message",
	Tag:           "bytes,9,opt,name=extra_message",
	Filename:      "extensions/ext/ext.proto",
}

var E_RepeatedXBool = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: ([]bool)(nil),
	Field:         301,
	Name:          "goproto.protoc.extension.ext.repeated_x_bool",
	Tag:           "varint,301,rep,name=repeated_x_bool",
	Filename:      "extensions/ext/ext.proto",
}

var E_RepeatedXEnum = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: ([]Enum)(nil),
	Field:         302,
	Name:          "goproto.protoc.extension.ext.repeated_x_enum",
	Tag:           "varint,302,rep,name=repeated_x_enum,enum=goproto.protoc.extension.ext.Enum",
	Filename:      "extensions/ext/ext.proto",
}

var E_RepeatedXInt32 = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: ([]int32)(nil),
	Field:         303,
	Name:          "goproto.protoc.extension.ext.repeated_x_int32",
	Tag:           "varint,303,rep,name=repeated_x_int32",
	Filename:      "extensions/ext/ext.proto",
}

var E_RepeatedXSint32 = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: ([]int32)(nil),
	Field:         304,
	Name:          "goproto.protoc.extension.ext.repeated_x_sint32",
	Tag:           "zigzag32,304,rep,name=repeated_x_sint32",
	Filename:      "extensions/ext/ext.proto",
}

var E_RepeatedXUint32 = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: ([]uint32)(nil),
	Field:         305,
	Name:          "goproto.protoc.extension.ext.repeated_x_uint32",
	Tag:           "varint,305,rep,name=repeated_x_uint32",
	Filename:      "extensions/ext/ext.proto",
}

var E_RepeatedXInt64 = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: ([]int64)(nil),
	Field:         306,
	Name:          "goproto.protoc.extension.ext.repeated_x_int64",
	Tag:           "varint,306,rep,name=repeated_x_int64",
	Filename:      "extensions/ext/ext.proto",
}

var E_RepeatedXSint64 = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: ([]int64)(nil),
	Field:         307,
	Name:          "goproto.protoc.extension.ext.repeated_x_sint64",
	Tag:           "zigzag64,307,rep,name=repeated_x_sint64",
	Filename:      "extensions/ext/ext.proto",
}

var E_RepeatedXUint64 = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: ([]uint64)(nil),
	Field:         308,
	Name:          "goproto.protoc.extension.ext.repeated_x_uint64",
	Tag:           "varint,308,rep,name=repeated_x_uint64",
	Filename:      "extensions/ext/ext.proto",
}

var E_RepeatedXSfixed32 = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: ([]int32)(nil),
	Field:         309,
	Name:          "goproto.protoc.extension.ext.repeated_x_sfixed32",
	Tag:           "fixed32,309,rep,name=repeated_x_sfixed32",
	Filename:      "extensions/ext/ext.proto",
}

var E_RepeatedXFixed32 = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: ([]uint32)(nil),
	Field:         310,
	Name:          "goproto.protoc.extension.ext.repeated_x_fixed32",
	Tag:           "fixed32,310,rep,name=repeated_x_fixed32",
	Filename:      "extensions/ext/ext.proto",
}

var E_RepeatedXFloat = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: ([]float32)(nil),
	Field:         311,
	Name:          "goproto.protoc.extension.ext.repeated_x_float",
	Tag:           "fixed32,311,rep,name=repeated_x_float",
	Filename:      "extensions/ext/ext.proto",
}

var E_RepeatedXSfixed64 = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: ([]int64)(nil),
	Field:         312,
	Name:          "goproto.protoc.extension.ext.repeated_x_sfixed64",
	Tag:           "fixed64,312,rep,name=repeated_x_sfixed64",
	Filename:      "extensions/ext/ext.proto",
}

var E_RepeatedXFixed64 = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: ([]uint64)(nil),
	Field:         313,
	Name:          "goproto.protoc.extension.ext.repeated_x_fixed64",
	Tag:           "fixed64,313,rep,name=repeated_x_fixed64",
	Filename:      "extensions/ext/ext.proto",
}

var E_RepeatedXDouble = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: ([]float64)(nil),
	Field:         314,
	Name:          "goproto.protoc.extension.ext.repeated_x_double",
	Tag:           "fixed64,314,rep,name=repeated_x_double",
	Filename:      "extensions/ext/ext.proto",
}

var E_RepeatedXString = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: ([]string)(nil),
	Field:         315,
	Name:          "goproto.protoc.extension.ext.repeated_x_string",
	Tag:           "bytes,315,rep,name=repeated_x_string",
	Filename:      "extensions/ext/ext.proto",
}

var E_RepeatedXBytes = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: ([][]byte)(nil),
	Field:         316,
	Name:          "goproto.protoc.extension.ext.repeated_x_bytes",
	Tag:           "bytes,316,rep,name=repeated_x_bytes",
	Filename:      "extensions/ext/ext.proto",
}

var E_RepeatedX_Message = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: ([]*Message)(nil),
	Field:         317,
	Name:          "goproto.protoc.extension.ext.repeated_x_Message",
	Tag:           "bytes,317,rep,name=repeated_x_Message",
	Filename:      "extensions/ext/ext.proto",
}

var E_Repeatedgroup = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: ([]*RepeatedGroup)(nil),
	Field:         318,
	Name:          "goproto.protoc.extension.ext.repeatedgroup",
	Tag:           "group,318,rep,name=RepeatedGroup",
	Filename:      "extensions/ext/ext.proto",
}

var E_ExtendableField = &proto.ExtensionDesc{
	ExtendedType:  (*base.BaseMessage)(nil),
	ExtensionType: (*Extendable)(nil),
	Field:         400,
	Name:          "goproto.protoc.extension.ext.extendable_field",
	Tag:           "bytes,400,opt,name=extendable_field",
	Filename:      "extensions/ext/ext.proto",
}

var E_ExtendableStringField = &proto.ExtensionDesc{
	ExtendedType:  (*Extendable)(nil),
	ExtensionType: (*string)(nil),
	Field:         1,
	Name:          "goproto.protoc.extension.ext.extendable_string_field",
	Tag:           "bytes,1,opt,name=extendable_string_field",
	Filename:      "extensions/ext/ext.proto",
}

func init() {
	proto.RegisterEnum("goproto.protoc.extension.ext.Enum", Enum_name, Enum_value)
	proto.RegisterType((*Message)(nil), "goproto.protoc.extension.ext.Message")
	proto.RegisterType((*Message_M)(nil), "goproto.protoc.extension.ext.Message.M")
	proto.RegisterType((*ExtensionGroup)(nil), "goproto.protoc.extension.ext.ExtensionGroup")
	proto.RegisterExtension(E_ExtendingMessage_ExtendingMessageString)
	proto.RegisterExtension(E_ExtendingMessage_ExtendingMessageSubmessage)
	proto.RegisterType((*ExtendingMessage)(nil), "goproto.protoc.extension.ext.ExtendingMessage")
	proto.RegisterType((*ExtendingMessage_ExtendingMessageSubmessage)(nil), "goproto.protoc.extension.ext.ExtendingMessage.ExtendingMessageSubmessage")
	proto.RegisterType((*RepeatedGroup)(nil), "goproto.protoc.extension.ext.RepeatedGroup")
	proto.RegisterType((*Extendable)(nil), "goproto.protoc.extension.ext.Extendable")
	proto.RegisterExtension(E_MessageSetWireFormatExtension_MessageSetExtension)
	proto.RegisterMessageSetType((*MessageSetWireFormatExtension)(nil), 100, "goproto.protoc.extension.ext.MessageSetWireFormatExtension")
	proto.RegisterType((*MessageSetWireFormatExtension)(nil), "goproto.protoc.extension.ext.MessageSetWireFormatExtension")
	proto.RegisterExtension(E_ExtensionBool)
	proto.RegisterExtension(E_ExtensionEnum)
	proto.RegisterExtension(E_ExtensionInt32)
	proto.RegisterExtension(E_ExtensionSint32)
	proto.RegisterExtension(E_ExtensionUint32)
	proto.RegisterExtension(E_ExtensionInt64)
	proto.RegisterExtension(E_ExtensionSint64)
	proto.RegisterExtension(E_ExtensionUint64)
	proto.RegisterExtension(E_ExtensionSfixed32)
	proto.RegisterExtension(E_ExtensionFixed32)
	proto.RegisterExtension(E_ExtensionFloat)
	proto.RegisterExtension(E_ExtensionSfixed64)
	proto.RegisterExtension(E_ExtensionFixed64)
	proto.RegisterExtension(E_ExtensionDouble)
	proto.RegisterExtension(E_ExtensionString)
	proto.RegisterExtension(E_ExtensionBytes)
	proto.RegisterExtension(E_Extension_Message)
	proto.RegisterExtension(E_Extension_MessageM)
	proto.RegisterExtension(E_Extensiongroup)
	proto.RegisterExtension(E_ExtraMessage)
	proto.RegisterExtension(E_RepeatedXBool)
	proto.RegisterExtension(E_RepeatedXEnum)
	proto.RegisterExtension(E_RepeatedXInt32)
	proto.RegisterExtension(E_RepeatedXSint32)
	proto.RegisterExtension(E_RepeatedXUint32)
	proto.RegisterExtension(E_RepeatedXInt64)
	proto.RegisterExtension(E_RepeatedXSint64)
	proto.RegisterExtension(E_RepeatedXUint64)
	proto.RegisterExtension(E_RepeatedXSfixed32)
	proto.RegisterExtension(E_RepeatedXFixed32)
	proto.RegisterExtension(E_RepeatedXFloat)
	proto.RegisterExtension(E_RepeatedXSfixed64)
	proto.RegisterExtension(E_RepeatedXFixed64)
	proto.RegisterExtension(E_RepeatedXDouble)
	proto.RegisterExtension(E_RepeatedXString)
	proto.RegisterExtension(E_RepeatedXBytes)
	proto.RegisterExtension(E_RepeatedX_Message)
	proto.RegisterExtension(E_Repeatedgroup)
	proto.RegisterExtension(E_ExtendableField)
	proto.RegisterExtension(E_ExtendableStringField)
}

func init() { proto.RegisterFile("extensions/ext/ext.proto", fileDescriptor_bf470ef4907b23cb) }

var fileDescriptor_bf470ef4907b23cb = []byte{
	// 1111 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x98, 0xcb, 0x6e, 0xdb, 0x46,
	0x14, 0x86, 0x3b, 0x92, 0x12, 0x2b, 0x53, 0xcb, 0x96, 0x18, 0x24, 0x15, 0x04, 0x17, 0x18, 0x08,
	0x28, 0x32, 0x75, 0x1b, 0x09, 0x60, 0x05, 0x01, 0x65, 0x77, 0x46, 0xed, 0xc0, 0x0b, 0xa1, 0x28,
	0x0d, 0xc3, 0x4e, 0xba, 0x60, 0x29, 0x73, 0xc4, 0xb0, 0x95, 0x48, 0x97, 0x97, 0x44, 0x5d, 0x34,
	0x10, 0xfa, 0x04, 0x7d, 0x8f, 0xa2, 0xf7, 0x5b, 0x7a, 0xdf, 0xb6, 0x8b, 0x6e, 0xfa, 0x44, 0xc1,
	0xcc, 0xf0, 0x32, 0xa4, 0x64, 0x59, 0xc3, 0x85, 0x04, 0x72, 0x48, 0x7d, 0xe7, 0xf0, 0x3f, 0x47,
	0xfc, 0x0f, 0x09, 0xdb, 0x64, 0x1e, 0x12, 0x37, 0x70, 0x3c, 0x37, 0xe8, 0x93, 0x79, 0x48, 0x3f,
	0xbd, 0x4b, 0xdf, 0x0b, 0x3d, 0x65, 0xcf, 0xf6, 0xd8, 0x06, 0xdf, 0xbd, 0xe8, 0xa5, 0x27, 0xd2,
	0xad, 0x4e, 0x47, 0xf8, 0xdd, 0xd8, 0x0c, 0x08, 0xfb, 0xe2, 0xa7, 0x76, 0xf6, 0xf2, 0x4c, 0xdf,
	0xe4, 0xdf, 0xfc, 0x68, 0xb7, 0x0b, 0xb7, 0x46, 0x24, 0x08, 0x4c, 0x9b, 0x28, 0x0a, 0xac, 0x59,
	0x66, 0x68, 0xb6, 0x01, 0x02, 0x78, 0x5b, 0x67, 0xdb, 0x9d, 0x2a, 0x04, 0xa3, 0xee, 0xdb, 0x70,
	0xe7, 0x30, 0x61, 0x3c, 0xf0, 0xbd, 0xe8, 0x52, 0xb9, 0x07, 0x77, 0x53, 0xaa, 0x61, 0xd3, 0xa5,
	0xf6, 0x1c, 0x01, 0x7c, 0x4b, 0xdf, 0x21, 0xb9, 0x13, 0xbb, 0xff, 0x57, 0x60, 0x93, 0xfd, 0xd6,
	0x72, 0x5c, 0x3b, 0x0e, 0xd4, 0xd9, 0x83, 0x9d, 0xe2, 0xda, 0x49, 0x34, 0x9e, 0xf1, 0x2d, 0x95,
	0xc4, 0x2a, 0xd0, 0xa3, 0x46, 0xbc, 0x68, 0x04, 0xa1, 0xef, 0xb8, 0xb6, 0xb2, 0xdf, 0xbb, 0x52,
	0x06, 0x76, 0xc5, 0x07, 0x66, 0x40, 0x62, 0x62, 0xfb, 0x1f, 0xc0, 0x32, 0xba, 0x4b, 0x8a, 0xa1,
	0x18, 0x4a, 0x7d, 0x0e, 0xe0, 0xde, 0x8a, 0x38, 0x69, 0x1e, 0x52, 0xb1, 0xfe, 0xa5, 0xb1, 0x5e,
	0x56, 0x8f, 0x7b, 0xeb, 0xaa, 0xd4, 0x2b, 0x5e, 0x74, 0xef, 0x6a, 0x15, 0xf4, 0x0e, 0xb9, 0xf2,
	0x58, 0x57, 0x83, 0x0d, 0x9d, 0x5c, 0x12, 0x33, 0x24, 0x16, 0x2f, 0xc7, 0xeb, 0xb0, 0xe9, 0xc7,
	0x0b, 0xc6, 0x3c, 0xae, 0xc7, 0xdf, 0x15, 0x54, 0xa5, 0x05, 0x49, 0x0e, 0x9c, 0xf3, 0x82, 0xdc,
	0x85, 0x90, 0x47, 0x35, 0xc7, 0x53, 0xb2, 0x5f, 0xaf, 0x83, 0xe6, 0x62, 0xb1, 0x58, 0x54, 0xba,
	0xff, 0x01, 0xf8, 0x6a, 0x12, 0x89, 0x84, 0x67, 0x8e, 0x4f, 0x8e, 0x3c, 0x7f, 0x66, 0x86, 0x69,
	0xe1, 0xd5, 0x2f, 0x01, 0xbc, 0x93, 0xca, 0x44, 0x42, 0x23, 0xbd, 0x36, 0x45, 0xbb, 0x46, 0xa9,
	0x55, 0xdc, 0x44, 0x39, 0x8b, 0x09, 0xf7, 0xce, 0x7a, 0xe1, 0xd6, 0x26, 0xa6, 0xdf, 0x9e, 0xa5,
	0x87, 0xd3, 0xc5, 0xfd, 0x26, 0xac, 0x1d, 0xba, 0xd1, 0x4c, 0xa9, 0xc3, 0xda, 0xa3, 0x43, 0xfd,
	0xbd, 0xe6, 0x4b, 0xda, 0xfb, 0x30, 0x6b, 0x4e, 0x63, 0xec, 0x79, 0x53, 0xa9, 0x0a, 0x13, 0x04,
	0x70, 0x5d, 0x6f, 0xa4, 0x67, 0x1c, 0x78, 0xde, 0x54, 0x8b, 0x44, 0x24, 0xa1, 0xe1, 0x64, 0x90,
	0x13, 0x04, 0xf0, 0x8e, 0xda, 0xbd, 0xa6, 0x67, 0xdc, 0x68, 0x26, 0x84, 0xa5, 0xbb, 0xda, 0x89,
	0xf8, 0xef, 0x73, 0xdc, 0xf0, 0x2d, 0x55, 0x2a, 0xae, 0x8d, 0x00, 0xbe, 0x21, 0xfc, 0x53, 0x8f,
	0x29, 0x41, 0x3b, 0x85, 0xcd, 0x0c, 0x1a, 0xc8, 0x53, 0x1f, 0x23, 0x80, 0x5b, 0x7a, 0x96, 0xd8,
	0x89, 0xb3, 0x8c, 0x8d, 0xe4, 0xb1, 0x0e, 0x02, 0xb8, 0x21, 0x60, 0x4f, 0x39, 0xb6, 0x28, 0xc1,
	0x70, 0x20, 0x45, 0xfd, 0x08, 0x01, 0x5c, 0xcd, 0x4b, 0x30, 0x1c, 0x2c, 0x4b, 0x20, 0x49, 0xfd,
	0x18, 0x01, 0xac, 0x14, 0x24, 0x28, 0x62, 0x23, 0x79, 0xec, 0x14, 0x01, 0x5c, 0x2b, 0x48, 0x30,
	0x1c, 0x68, 0x0f, 0xa1, 0x22, 0x64, 0x3b, 0x71, 0xe6, 0xc4, 0x92, 0xd4, 0x76, 0x86, 0x00, 0xde,
	0xd5, 0x5b, 0x59, 0xbe, 0x31, 0x44, 0x3b, 0x83, 0xd9, 0xa2, 0x51, 0x86, 0xec, 0x22, 0x80, 0xb7,
	0xf4, 0xec, 0xb2, 0x8f, 0x62, 0x70, 0xae, 0x6c, 0x93, 0xa9, 0x67, 0x86, 0x52, 0x58, 0x0f, 0x01,
	0x5c, 0x11, 0xca, 0x76, 0x44, 0x09, 0xab, 0x84, 0x90, 0x54, 0xf8, 0x12, 0x01, 0xdc, 0x5c, 0x12,
	0x62, 0x38, 0x58, 0x21, 0x84, 0x24, 0xf9, 0x13, 0x04, 0xf0, 0xcd, 0xa2, 0x10, 0xc5, 0x9e, 0xb0,
	0xbc, 0x68, 0x3c, 0x95, 0x33, 0x1c, 0x1f, 0x01, 0x0c, 0x84, 0x9e, 0x78, 0x97, 0x21, 0x0a, 0x1d,
	0x2c, 0xef, 0x99, 0x01, 0xb3, 0x4c, 0xa1, 0x83, 0x19, 0x22, 0x5f, 0xb6, 0xf1, 0xa7, 0x21, 0x09,
	0xa4, 0xa8, 0x21, 0x1b, 0x28, 0xb2, 0xb2, 0x1d, 0x50, 0x82, 0xf6, 0x4c, 0xd4, 0x76, 0x54, 0xc2,
	0x74, 0x23, 0x66, 0x1d, 0xaf, 0x6d, 0x64, 0x1d, 0x42, 0x09, 0xe2, 0x15, 0xed, 0x73, 0x20, 0xf6,
	0x4d, 0xbc, 0x3a, 0x92, 0xca, 0xe0, 0x09, 0xcb, 0xe0, 0xde, 0x46, 0x19, 0xf4, 0x46, 0x42, 0x83,
	0x25, 0xd1, 0xb4, 0x05, 0x10, 0x2c, 0x84, 0x19, 0xb7, 0x54, 0x02, 0x4f, 0x11, 0xc0, 0x50, 0x7d,
	0x73, 0x83, 0xb1, 0x23, 0x1d, 0xc9, 0xf4, 0x42, 0x3c, 0xed, 0x33, 0xd8, 0x60, 0x03, 0xa1, 0x51,
	0x66, 0xf0, 0xb9, 0xc5, 0x14, 0x58, 0x9f, 0x80, 0x6f, 0xd2, 0x14, 0x7c, 0x33, 0x29, 0xc5, 0x36,
	0x11, 0xf6, 0x68, 0x6f, 0x09, 0xb3, 0x8b, 0xb4, 0x2f, 0x7f, 0x45, 0xc7, 0x9c, 0xba, 0xde, 0x48,
	0xc7, 0x1c, 0x66, 0xcc, 0x4f, 0x73, 0x50, 0x69, 0x67, 0xfe, 0x9a, 0x42, 0x37, 0xb4, 0xe6, 0x34,
	0x30, 0xb3, 0xe6, 0xd3, 0xdc, 0x24, 0x26, 0x6f, 0x77, 0xdf, 0xd0, 0xc8, 0x37, 0x84, 0xa9, 0x8d,
	0x9b, 0xf3, 0x19, 0x6c, 0x09, 0xd8, 0x12, 0xee, 0xfc, 0x2d, 0xe5, 0xb6, 0xf4, 0x54, 0x95, 0xf3,
	0xd8, 0x9e, 0xf3, 0xe0, 0x12, 0xfe, 0xfc, 0x1d, 0x05, 0x37, 0x04, 0xf0, 0x69, 0xea, 0xfb, 0x79,
	0x21, 0x24, 0x6f, 0x9c, 0xdf, 0x53, 0x6e, 0x35, 0x2f, 0x04, 0xbf, 0x21, 0x17, 0x84, 0x90, 0xe4,
	0xfe, 0x40, 0xb9, 0x4a, 0x41, 0x88, 0x25, 0x70, 0x09, 0x97, 0xfe, 0x91, 0x82, 0x6b, 0x05, 0x21,
	0x86, 0x03, 0xed, 0x03, 0x78, 0x5b, 0xcc, 0xb8, 0x8c, 0x9b, 0xfe, 0x44, 0xd1, 0xbb, 0x7a, 0x2b,
	0xcb, 0x39, 0x31, 0xea, 0x87, 0x50, 0x11, 0xe0, 0x65, 0xd8, 0x3f, 0x53, 0xf6, 0x96, 0x9e, 0x16,
	0xeb, 0x3c, 0xb1, 0xea, 0x7c, 0x01, 0xe5, 0xbd, 0xfa, 0x17, 0x0a, 0xae, 0x08, 0x05, 0xe4, 0x66,
	0xbd, 0x4a, 0x0e, 0x49, 0xa5, 0x9f, 0x53, 0x72, 0x73, 0x49, 0x0e, 0x3e, 0x12, 0x15, 0xe5, 0x90,
	0x64, 0xff, 0x4a, 0xd9, 0x37, 0x8b, 0x72, 0x2c, 0xf5, 0x47, 0x09, 0xc7, 0xfe, 0x8d, 0x92, 0x81,
	0xd0, 0x1f, 0xb1, 0x65, 0x17, 0x3a, 0x5a, 0xde, 0xb3, 0x7f, 0xe7, 0x0f, 0x7a, 0x42, 0x47, 0x73,
	0xd3, 0xce, 0x17, 0x50, 0xde, 0xb5, 0xff, 0xa0, 0xdc, 0x6d, 0xa1, 0x80, 0xdc, 0xb6, 0x17, 0x20,
	0x27, 0x72, 0x19, 0xe3, 0xfe, 0x93, 0x92, 0x37, 0x77, 0xee, 0x34, 0x81, 0xc4, 0x32, 0x9e, 0xc1,
	0xf4, 0xae, 0x2b, 0x6f, 0x99, 0x7f, 0xd1, 0xe0, 0x50, 0x7d, 0x63, 0x7d, 0xf0, 0xdc, 0xf3, 0xb5,
	0x9e, 0x0f, 0x47, 0x25, 0xe0, 0xe3, 0x04, 0x7b, 0x88, 0x36, 0x26, 0x0e, 0x99, 0x5a, 0x52, 0x39,
	0x7c, 0x51, 0x65, 0xb6, 0x89, 0x37, 0x79, 0x5d, 0x40, 0x43, 0xc4, 0x13, 0x19, 0xdb, 0x3e, 0xa2,
	0xd1, 0xb4, 0x0f, 0xe1, 0x2b, 0x42, 0x06, 0xbc, 0x6b, 0xe2, 0x44, 0x36, 0xa6, 0xb6, 0xf9, 0x0b,
	0x92, 0x3b, 0x19, 0x88, 0x77, 0x0e, 0x8b, 0x70, 0x70, 0xfc, 0xe8, 0x81, 0xed, 0x84, 0x8f, 0xa3,
	0x71, 0xef, 0xc2, 0x9b, 0xf5, 0x6d, 0x6f, 0x6a, 0xba, 0x76, 0x9f, 0x11, 0xc7, 0xd1, 0xa4, 0xff,
	0x44, 0xed, 0x5f, 0xcc, 0x2c, 0xbe, 0x7f, 0x71, 0xdf, 0x26, 0xee, 0x7d, 0xdb, 0xeb, 0x87, 0x24,
	0x08, 0x2d, 0x33, 0x64, 0x2f, 0x98, 0x84, 0x37, 0x4e, 0x2f, 0x02, 0x00, 0x00, 0xff, 0xff, 0xc4,
	0xeb, 0x05, 0x33, 0xd6, 0x12, 0x00, 0x00,
}
