// Code generated by protoc-gen-go. DO NOT EDIT.
// source: envoy/extensions/transport_sockets/tls/v3/cert.proto

package envoy_extensions_transport_sockets_tls_v3

import (
	fmt "fmt"
	_ "github.com/cncf/udpa/go/udpa/annotations"
	v3 "github.com/envoyproxy/go-control-plane/envoy/config/core/v3"
	v31 "github.com/envoyproxy/go-control-plane/envoy/type/matcher/v3"
	_ "github.com/envoyproxy/protoc-gen-validate/validate"
	proto "github.com/golang/protobuf/proto"
	any "github.com/golang/protobuf/ptypes/any"
	duration "github.com/golang/protobuf/ptypes/duration"
	_struct "github.com/golang/protobuf/ptypes/struct"
	wrappers "github.com/golang/protobuf/ptypes/wrappers"
	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.ProtoPackageIsVersion3 // please upgrade the proto package

type TlsParameters_TlsProtocol int32

const (
	TlsParameters_TLS_AUTO TlsParameters_TlsProtocol = 0
	TlsParameters_TLSv1_0  TlsParameters_TlsProtocol = 1
	TlsParameters_TLSv1_1  TlsParameters_TlsProtocol = 2
	TlsParameters_TLSv1_2  TlsParameters_TlsProtocol = 3
	TlsParameters_TLSv1_3  TlsParameters_TlsProtocol = 4
)

var TlsParameters_TlsProtocol_name = map[int32]string{
	0: "TLS_AUTO",
	1: "TLSv1_0",
	2: "TLSv1_1",
	3: "TLSv1_2",
	4: "TLSv1_3",
}

var TlsParameters_TlsProtocol_value = map[string]int32{
	"TLS_AUTO": 0,
	"TLSv1_0":  1,
	"TLSv1_1":  2,
	"TLSv1_2":  3,
	"TLSv1_3":  4,
}

func (x TlsParameters_TlsProtocol) String() string {
	return proto.EnumName(TlsParameters_TlsProtocol_name, int32(x))
}

func (TlsParameters_TlsProtocol) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_f024ddf67fb198ab, []int{0, 0}
}

type CertificateValidationContext_TrustChainVerification int32

const (
	CertificateValidationContext_VERIFY_TRUST_CHAIN CertificateValidationContext_TrustChainVerification = 0
	CertificateValidationContext_ACCEPT_UNTRUSTED   CertificateValidationContext_TrustChainVerification = 1
)

var CertificateValidationContext_TrustChainVerification_name = map[int32]string{
	0: "VERIFY_TRUST_CHAIN",
	1: "ACCEPT_UNTRUSTED",
}

var CertificateValidationContext_TrustChainVerification_value = map[string]int32{
	"VERIFY_TRUST_CHAIN": 0,
	"ACCEPT_UNTRUSTED":   1,
}

func (x CertificateValidationContext_TrustChainVerification) String() string {
	return proto.EnumName(CertificateValidationContext_TrustChainVerification_name, int32(x))
}

func (CertificateValidationContext_TrustChainVerification) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_f024ddf67fb198ab, []int{4, 0}
}

type TlsParameters struct {
	TlsMinimumProtocolVersion TlsParameters_TlsProtocol `protobuf:"varint,1,opt,name=tls_minimum_protocol_version,json=tlsMinimumProtocolVersion,proto3,enum=envoy.extensions.transport_sockets.tls.v3.TlsParameters_TlsProtocol" json:"tls_minimum_protocol_version,omitempty"`
	TlsMaximumProtocolVersion TlsParameters_TlsProtocol `protobuf:"varint,2,opt,name=tls_maximum_protocol_version,json=tlsMaximumProtocolVersion,proto3,enum=envoy.extensions.transport_sockets.tls.v3.TlsParameters_TlsProtocol" json:"tls_maximum_protocol_version,omitempty"`
	CipherSuites              []string                  `protobuf:"bytes,3,rep,name=cipher_suites,json=cipherSuites,proto3" json:"cipher_suites,omitempty"`
	EcdhCurves                []string                  `protobuf:"bytes,4,rep,name=ecdh_curves,json=ecdhCurves,proto3" json:"ecdh_curves,omitempty"`
	XXX_NoUnkeyedLiteral      struct{}                  `json:"-"`
	XXX_unrecognized          []byte                    `json:"-"`
	XXX_sizecache             int32                     `json:"-"`
}

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

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

var xxx_messageInfo_TlsParameters proto.InternalMessageInfo

func (m *TlsParameters) GetTlsMinimumProtocolVersion() TlsParameters_TlsProtocol {
	if m != nil {
		return m.TlsMinimumProtocolVersion
	}
	return TlsParameters_TLS_AUTO
}

func (m *TlsParameters) GetTlsMaximumProtocolVersion() TlsParameters_TlsProtocol {
	if m != nil {
		return m.TlsMaximumProtocolVersion
	}
	return TlsParameters_TLS_AUTO
}

func (m *TlsParameters) GetCipherSuites() []string {
	if m != nil {
		return m.CipherSuites
	}
	return nil
}

func (m *TlsParameters) GetEcdhCurves() []string {
	if m != nil {
		return m.EcdhCurves
	}
	return nil
}

type PrivateKeyProvider struct {
	ProviderName string `protobuf:"bytes,1,opt,name=provider_name,json=providerName,proto3" json:"provider_name,omitempty"`
	// Types that are valid to be assigned to ConfigType:
	//	*PrivateKeyProvider_HiddenEnvoyDeprecatedConfig
	//	*PrivateKeyProvider_TypedConfig
	ConfigType           isPrivateKeyProvider_ConfigType `protobuf_oneof:"config_type"`
	XXX_NoUnkeyedLiteral struct{}                        `json:"-"`
	XXX_unrecognized     []byte                          `json:"-"`
	XXX_sizecache        int32                           `json:"-"`
}

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

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

var xxx_messageInfo_PrivateKeyProvider proto.InternalMessageInfo

func (m *PrivateKeyProvider) GetProviderName() string {
	if m != nil {
		return m.ProviderName
	}
	return ""
}

type isPrivateKeyProvider_ConfigType interface {
	isPrivateKeyProvider_ConfigType()
}

type PrivateKeyProvider_HiddenEnvoyDeprecatedConfig struct {
	HiddenEnvoyDeprecatedConfig *_struct.Struct `protobuf:"bytes,2,opt,name=hidden_envoy_deprecated_config,json=hiddenEnvoyDeprecatedConfig,proto3,oneof"`
}

type PrivateKeyProvider_TypedConfig struct {
	TypedConfig *any.Any `protobuf:"bytes,3,opt,name=typed_config,json=typedConfig,proto3,oneof"`
}

func (*PrivateKeyProvider_HiddenEnvoyDeprecatedConfig) isPrivateKeyProvider_ConfigType() {}

func (*PrivateKeyProvider_TypedConfig) isPrivateKeyProvider_ConfigType() {}

func (m *PrivateKeyProvider) GetConfigType() isPrivateKeyProvider_ConfigType {
	if m != nil {
		return m.ConfigType
	}
	return nil
}

// Deprecated: Do not use.
func (m *PrivateKeyProvider) GetHiddenEnvoyDeprecatedConfig() *_struct.Struct {
	if x, ok := m.GetConfigType().(*PrivateKeyProvider_HiddenEnvoyDeprecatedConfig); ok {
		return x.HiddenEnvoyDeprecatedConfig
	}
	return nil
}

func (m *PrivateKeyProvider) GetTypedConfig() *any.Any {
	if x, ok := m.GetConfigType().(*PrivateKeyProvider_TypedConfig); ok {
		return x.TypedConfig
	}
	return nil
}

// XXX_OneofWrappers is for the internal use of the proto package.
func (*PrivateKeyProvider) XXX_OneofWrappers() []interface{} {
	return []interface{}{
		(*PrivateKeyProvider_HiddenEnvoyDeprecatedConfig)(nil),
		(*PrivateKeyProvider_TypedConfig)(nil),
	}
}

type TlsCertificate struct {
	CertificateChain           *v3.DataSource      `protobuf:"bytes,1,opt,name=certificate_chain,json=certificateChain,proto3" json:"certificate_chain,omitempty"`
	PrivateKey                 *v3.DataSource      `protobuf:"bytes,2,opt,name=private_key,json=privateKey,proto3" json:"private_key,omitempty"`
	PrivateKeyProvider         *PrivateKeyProvider `protobuf:"bytes,6,opt,name=private_key_provider,json=privateKeyProvider,proto3" json:"private_key_provider,omitempty"`
	Password                   *v3.DataSource      `protobuf:"bytes,3,opt,name=password,proto3" json:"password,omitempty"`
	OcspStaple                 *v3.DataSource      `protobuf:"bytes,4,opt,name=ocsp_staple,json=ocspStaple,proto3" json:"ocsp_staple,omitempty"`
	SignedCertificateTimestamp []*v3.DataSource    `protobuf:"bytes,5,rep,name=signed_certificate_timestamp,json=signedCertificateTimestamp,proto3" json:"signed_certificate_timestamp,omitempty"`
	XXX_NoUnkeyedLiteral       struct{}            `json:"-"`
	XXX_unrecognized           []byte              `json:"-"`
	XXX_sizecache              int32               `json:"-"`
}

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

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

var xxx_messageInfo_TlsCertificate proto.InternalMessageInfo

func (m *TlsCertificate) GetCertificateChain() *v3.DataSource {
	if m != nil {
		return m.CertificateChain
	}
	return nil
}

func (m *TlsCertificate) GetPrivateKey() *v3.DataSource {
	if m != nil {
		return m.PrivateKey
	}
	return nil
}

func (m *TlsCertificate) GetPrivateKeyProvider() *PrivateKeyProvider {
	if m != nil {
		return m.PrivateKeyProvider
	}
	return nil
}

func (m *TlsCertificate) GetPassword() *v3.DataSource {
	if m != nil {
		return m.Password
	}
	return nil
}

func (m *TlsCertificate) GetOcspStaple() *v3.DataSource {
	if m != nil {
		return m.OcspStaple
	}
	return nil
}

func (m *TlsCertificate) GetSignedCertificateTimestamp() []*v3.DataSource {
	if m != nil {
		return m.SignedCertificateTimestamp
	}
	return nil
}

type TlsSessionTicketKeys struct {
	Keys                 []*v3.DataSource `protobuf:"bytes,1,rep,name=keys,proto3" json:"keys,omitempty"`
	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
	XXX_unrecognized     []byte           `json:"-"`
	XXX_sizecache        int32            `json:"-"`
}

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

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

var xxx_messageInfo_TlsSessionTicketKeys proto.InternalMessageInfo

func (m *TlsSessionTicketKeys) GetKeys() []*v3.DataSource {
	if m != nil {
		return m.Keys
	}
	return nil
}

type CertificateValidationContext struct {
	TrustedCa                                 *v3.DataSource                                      `protobuf:"bytes,1,opt,name=trusted_ca,json=trustedCa,proto3" json:"trusted_ca,omitempty"`
	VerifyCertificateSpki                     []string                                            `protobuf:"bytes,3,rep,name=verify_certificate_spki,json=verifyCertificateSpki,proto3" json:"verify_certificate_spki,omitempty"`
	VerifyCertificateHash                     []string                                            `protobuf:"bytes,2,rep,name=verify_certificate_hash,json=verifyCertificateHash,proto3" json:"verify_certificate_hash,omitempty"`
	HiddenEnvoyDeprecatedVerifySubjectAltName []string                                            `protobuf:"bytes,4,rep,name=hidden_envoy_deprecated_verify_subject_alt_name,json=hiddenEnvoyDeprecatedVerifySubjectAltName,proto3" json:"hidden_envoy_deprecated_verify_subject_alt_name,omitempty"` // Deprecated: Do not use.
	MatchSubjectAltNames                      []*v31.StringMatcher                                `protobuf:"bytes,9,rep,name=match_subject_alt_names,json=matchSubjectAltNames,proto3" json:"match_subject_alt_names,omitempty"`
	RequireOcspStaple                         *wrappers.BoolValue                                 `protobuf:"bytes,5,opt,name=require_ocsp_staple,json=requireOcspStaple,proto3" json:"require_ocsp_staple,omitempty"`
	RequireSignedCertificateTimestamp         *wrappers.BoolValue                                 `protobuf:"bytes,6,opt,name=require_signed_certificate_timestamp,json=requireSignedCertificateTimestamp,proto3" json:"require_signed_certificate_timestamp,omitempty"`
	Crl                                       *v3.DataSource                                      `protobuf:"bytes,7,opt,name=crl,proto3" json:"crl,omitempty"`
	AllowExpiredCertificate                   bool                                                `protobuf:"varint,8,opt,name=allow_expired_certificate,json=allowExpiredCertificate,proto3" json:"allow_expired_certificate,omitempty"`
	TrustChainVerification                    CertificateValidationContext_TrustChainVerification `protobuf:"varint,10,opt,name=trust_chain_verification,json=trustChainVerification,proto3,enum=envoy.extensions.transport_sockets.tls.v3.CertificateValidationContext_TrustChainVerification" json:"trust_chain_verification,omitempty"`
	XXX_NoUnkeyedLiteral                      struct{}                                            `json:"-"`
	XXX_unrecognized                          []byte                                              `json:"-"`
	XXX_sizecache                             int32                                               `json:"-"`
}

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

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

var xxx_messageInfo_CertificateValidationContext proto.InternalMessageInfo

func (m *CertificateValidationContext) GetTrustedCa() *v3.DataSource {
	if m != nil {
		return m.TrustedCa
	}
	return nil
}

func (m *CertificateValidationContext) GetVerifyCertificateSpki() []string {
	if m != nil {
		return m.VerifyCertificateSpki
	}
	return nil
}

func (m *CertificateValidationContext) GetVerifyCertificateHash() []string {
	if m != nil {
		return m.VerifyCertificateHash
	}
	return nil
}

// Deprecated: Do not use.
func (m *CertificateValidationContext) GetHiddenEnvoyDeprecatedVerifySubjectAltName() []string {
	if m != nil {
		return m.HiddenEnvoyDeprecatedVerifySubjectAltName
	}
	return nil
}

func (m *CertificateValidationContext) GetMatchSubjectAltNames() []*v31.StringMatcher {
	if m != nil {
		return m.MatchSubjectAltNames
	}
	return nil
}

func (m *CertificateValidationContext) GetRequireOcspStaple() *wrappers.BoolValue {
	if m != nil {
		return m.RequireOcspStaple
	}
	return nil
}

func (m *CertificateValidationContext) GetRequireSignedCertificateTimestamp() *wrappers.BoolValue {
	if m != nil {
		return m.RequireSignedCertificateTimestamp
	}
	return nil
}

func (m *CertificateValidationContext) GetCrl() *v3.DataSource {
	if m != nil {
		return m.Crl
	}
	return nil
}

func (m *CertificateValidationContext) GetAllowExpiredCertificate() bool {
	if m != nil {
		return m.AllowExpiredCertificate
	}
	return false
}

func (m *CertificateValidationContext) GetTrustChainVerification() CertificateValidationContext_TrustChainVerification {
	if m != nil {
		return m.TrustChainVerification
	}
	return CertificateValidationContext_VERIFY_TRUST_CHAIN
}

type CommonTlsContext struct {
	TlsParams                      *TlsParameters     `protobuf:"bytes,1,opt,name=tls_params,json=tlsParams,proto3" json:"tls_params,omitempty"`
	TlsCertificates                []*TlsCertificate  `protobuf:"bytes,2,rep,name=tls_certificates,json=tlsCertificates,proto3" json:"tls_certificates,omitempty"`
	TlsCertificateSdsSecretConfigs []*SdsSecretConfig `protobuf:"bytes,6,rep,name=tls_certificate_sds_secret_configs,json=tlsCertificateSdsSecretConfigs,proto3" json:"tls_certificate_sds_secret_configs,omitempty"`
	// Types that are valid to be assigned to ValidationContextType:
	//	*CommonTlsContext_ValidationContext
	//	*CommonTlsContext_ValidationContextSdsSecretConfig
	//	*CommonTlsContext_CombinedValidationContext
	ValidationContextType isCommonTlsContext_ValidationContextType `protobuf_oneof:"validation_context_type"`
	AlpnProtocols         []string                                 `protobuf:"bytes,4,rep,name=alpn_protocols,json=alpnProtocols,proto3" json:"alpn_protocols,omitempty"`
	XXX_NoUnkeyedLiteral  struct{}                                 `json:"-"`
	XXX_unrecognized      []byte                                   `json:"-"`
	XXX_sizecache         int32                                    `json:"-"`
}

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

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

var xxx_messageInfo_CommonTlsContext proto.InternalMessageInfo

func (m *CommonTlsContext) GetTlsParams() *TlsParameters {
	if m != nil {
		return m.TlsParams
	}
	return nil
}

func (m *CommonTlsContext) GetTlsCertificates() []*TlsCertificate {
	if m != nil {
		return m.TlsCertificates
	}
	return nil
}

func (m *CommonTlsContext) GetTlsCertificateSdsSecretConfigs() []*SdsSecretConfig {
	if m != nil {
		return m.TlsCertificateSdsSecretConfigs
	}
	return nil
}

type isCommonTlsContext_ValidationContextType interface {
	isCommonTlsContext_ValidationContextType()
}

type CommonTlsContext_ValidationContext struct {
	ValidationContext *CertificateValidationContext `protobuf:"bytes,3,opt,name=validation_context,json=validationContext,proto3,oneof"`
}

type CommonTlsContext_ValidationContextSdsSecretConfig struct {
	ValidationContextSdsSecretConfig *SdsSecretConfig `protobuf:"bytes,7,opt,name=validation_context_sds_secret_config,json=validationContextSdsSecretConfig,proto3,oneof"`
}

type CommonTlsContext_CombinedValidationContext struct {
	CombinedValidationContext *CommonTlsContext_CombinedCertificateValidationContext `protobuf:"bytes,8,opt,name=combined_validation_context,json=combinedValidationContext,proto3,oneof"`
}

func (*CommonTlsContext_ValidationContext) isCommonTlsContext_ValidationContextType() {}

func (*CommonTlsContext_ValidationContextSdsSecretConfig) isCommonTlsContext_ValidationContextType() {}

func (*CommonTlsContext_CombinedValidationContext) isCommonTlsContext_ValidationContextType() {}

func (m *CommonTlsContext) GetValidationContextType() isCommonTlsContext_ValidationContextType {
	if m != nil {
		return m.ValidationContextType
	}
	return nil
}

func (m *CommonTlsContext) GetValidationContext() *CertificateValidationContext {
	if x, ok := m.GetValidationContextType().(*CommonTlsContext_ValidationContext); ok {
		return x.ValidationContext
	}
	return nil
}

func (m *CommonTlsContext) GetValidationContextSdsSecretConfig() *SdsSecretConfig {
	if x, ok := m.GetValidationContextType().(*CommonTlsContext_ValidationContextSdsSecretConfig); ok {
		return x.ValidationContextSdsSecretConfig
	}
	return nil
}

func (m *CommonTlsContext) GetCombinedValidationContext() *CommonTlsContext_CombinedCertificateValidationContext {
	if x, ok := m.GetValidationContextType().(*CommonTlsContext_CombinedValidationContext); ok {
		return x.CombinedValidationContext
	}
	return nil
}

func (m *CommonTlsContext) GetAlpnProtocols() []string {
	if m != nil {
		return m.AlpnProtocols
	}
	return nil
}

// XXX_OneofWrappers is for the internal use of the proto package.
func (*CommonTlsContext) XXX_OneofWrappers() []interface{} {
	return []interface{}{
		(*CommonTlsContext_ValidationContext)(nil),
		(*CommonTlsContext_ValidationContextSdsSecretConfig)(nil),
		(*CommonTlsContext_CombinedValidationContext)(nil),
	}
}

type CommonTlsContext_CombinedCertificateValidationContext struct {
	DefaultValidationContext         *CertificateValidationContext `protobuf:"bytes,1,opt,name=default_validation_context,json=defaultValidationContext,proto3" json:"default_validation_context,omitempty"`
	ValidationContextSdsSecretConfig *SdsSecretConfig              `protobuf:"bytes,2,opt,name=validation_context_sds_secret_config,json=validationContextSdsSecretConfig,proto3" json:"validation_context_sds_secret_config,omitempty"`
	XXX_NoUnkeyedLiteral             struct{}                      `json:"-"`
	XXX_unrecognized                 []byte                        `json:"-"`
	XXX_sizecache                    int32                         `json:"-"`
}

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

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

var xxx_messageInfo_CommonTlsContext_CombinedCertificateValidationContext proto.InternalMessageInfo

func (m *CommonTlsContext_CombinedCertificateValidationContext) GetDefaultValidationContext() *CertificateValidationContext {
	if m != nil {
		return m.DefaultValidationContext
	}
	return nil
}

func (m *CommonTlsContext_CombinedCertificateValidationContext) GetValidationContextSdsSecretConfig() *SdsSecretConfig {
	if m != nil {
		return m.ValidationContextSdsSecretConfig
	}
	return nil
}

type UpstreamTlsContext struct {
	CommonTlsContext     *CommonTlsContext     `protobuf:"bytes,1,opt,name=common_tls_context,json=commonTlsContext,proto3" json:"common_tls_context,omitempty"`
	Sni                  string                `protobuf:"bytes,2,opt,name=sni,proto3" json:"sni,omitempty"`
	AllowRenegotiation   bool                  `protobuf:"varint,3,opt,name=allow_renegotiation,json=allowRenegotiation,proto3" json:"allow_renegotiation,omitempty"`
	MaxSessionKeys       *wrappers.UInt32Value `protobuf:"bytes,4,opt,name=max_session_keys,json=maxSessionKeys,proto3" json:"max_session_keys,omitempty"`
	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
	XXX_unrecognized     []byte                `json:"-"`
	XXX_sizecache        int32                 `json:"-"`
}

func (m *UpstreamTlsContext) Reset()         { *m = UpstreamTlsContext{} }
func (m *UpstreamTlsContext) String() string { return proto.CompactTextString(m) }
func (*UpstreamTlsContext) ProtoMessage()    {}
func (*UpstreamTlsContext) Descriptor() ([]byte, []int) {
	return fileDescriptor_f024ddf67fb198ab, []int{6}
}

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

var xxx_messageInfo_UpstreamTlsContext proto.InternalMessageInfo

func (m *UpstreamTlsContext) GetCommonTlsContext() *CommonTlsContext {
	if m != nil {
		return m.CommonTlsContext
	}
	return nil
}

func (m *UpstreamTlsContext) GetSni() string {
	if m != nil {
		return m.Sni
	}
	return ""
}

func (m *UpstreamTlsContext) GetAllowRenegotiation() bool {
	if m != nil {
		return m.AllowRenegotiation
	}
	return false
}

func (m *UpstreamTlsContext) GetMaxSessionKeys() *wrappers.UInt32Value {
	if m != nil {
		return m.MaxSessionKeys
	}
	return nil
}

type DownstreamTlsContext struct {
	CommonTlsContext         *CommonTlsContext   `protobuf:"bytes,1,opt,name=common_tls_context,json=commonTlsContext,proto3" json:"common_tls_context,omitempty"`
	RequireClientCertificate *wrappers.BoolValue `protobuf:"bytes,2,opt,name=require_client_certificate,json=requireClientCertificate,proto3" json:"require_client_certificate,omitempty"`
	RequireSni               *wrappers.BoolValue `protobuf:"bytes,3,opt,name=require_sni,json=requireSni,proto3" json:"require_sni,omitempty"`
	// Types that are valid to be assigned to SessionTicketKeysType:
	//	*DownstreamTlsContext_SessionTicketKeys
	//	*DownstreamTlsContext_SessionTicketKeysSdsSecretConfig
	SessionTicketKeysType isDownstreamTlsContext_SessionTicketKeysType `protobuf_oneof:"session_ticket_keys_type"`
	SessionTimeout        *duration.Duration                           `protobuf:"bytes,6,opt,name=session_timeout,json=sessionTimeout,proto3" json:"session_timeout,omitempty"`
	XXX_NoUnkeyedLiteral  struct{}                                     `json:"-"`
	XXX_unrecognized      []byte                                       `json:"-"`
	XXX_sizecache         int32                                        `json:"-"`
}

func (m *DownstreamTlsContext) Reset()         { *m = DownstreamTlsContext{} }
func (m *DownstreamTlsContext) String() string { return proto.CompactTextString(m) }
func (*DownstreamTlsContext) ProtoMessage()    {}
func (*DownstreamTlsContext) Descriptor() ([]byte, []int) {
	return fileDescriptor_f024ddf67fb198ab, []int{7}
}

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

var xxx_messageInfo_DownstreamTlsContext proto.InternalMessageInfo

func (m *DownstreamTlsContext) GetCommonTlsContext() *CommonTlsContext {
	if m != nil {
		return m.CommonTlsContext
	}
	return nil
}

func (m *DownstreamTlsContext) GetRequireClientCertificate() *wrappers.BoolValue {
	if m != nil {
		return m.RequireClientCertificate
	}
	return nil
}

func (m *DownstreamTlsContext) GetRequireSni() *wrappers.BoolValue {
	if m != nil {
		return m.RequireSni
	}
	return nil
}

type isDownstreamTlsContext_SessionTicketKeysType interface {
	isDownstreamTlsContext_SessionTicketKeysType()
}

type DownstreamTlsContext_SessionTicketKeys struct {
	SessionTicketKeys *TlsSessionTicketKeys `protobuf:"bytes,4,opt,name=session_ticket_keys,json=sessionTicketKeys,proto3,oneof"`
}

type DownstreamTlsContext_SessionTicketKeysSdsSecretConfig struct {
	SessionTicketKeysSdsSecretConfig *SdsSecretConfig `protobuf:"bytes,5,opt,name=session_ticket_keys_sds_secret_config,json=sessionTicketKeysSdsSecretConfig,proto3,oneof"`
}

func (*DownstreamTlsContext_SessionTicketKeys) isDownstreamTlsContext_SessionTicketKeysType() {}

func (*DownstreamTlsContext_SessionTicketKeysSdsSecretConfig) isDownstreamTlsContext_SessionTicketKeysType() {
}

func (m *DownstreamTlsContext) GetSessionTicketKeysType() isDownstreamTlsContext_SessionTicketKeysType {
	if m != nil {
		return m.SessionTicketKeysType
	}
	return nil
}

func (m *DownstreamTlsContext) GetSessionTicketKeys() *TlsSessionTicketKeys {
	if x, ok := m.GetSessionTicketKeysType().(*DownstreamTlsContext_SessionTicketKeys); ok {
		return x.SessionTicketKeys
	}
	return nil
}

func (m *DownstreamTlsContext) GetSessionTicketKeysSdsSecretConfig() *SdsSecretConfig {
	if x, ok := m.GetSessionTicketKeysType().(*DownstreamTlsContext_SessionTicketKeysSdsSecretConfig); ok {
		return x.SessionTicketKeysSdsSecretConfig
	}
	return nil
}

func (m *DownstreamTlsContext) GetSessionTimeout() *duration.Duration {
	if m != nil {
		return m.SessionTimeout
	}
	return nil
}

// XXX_OneofWrappers is for the internal use of the proto package.
func (*DownstreamTlsContext) XXX_OneofWrappers() []interface{} {
	return []interface{}{
		(*DownstreamTlsContext_SessionTicketKeys)(nil),
		(*DownstreamTlsContext_SessionTicketKeysSdsSecretConfig)(nil),
	}
}

type GenericSecret struct {
	Secret               *v3.DataSource `protobuf:"bytes,1,opt,name=secret,proto3" json:"secret,omitempty"`
	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
	XXX_unrecognized     []byte         `json:"-"`
	XXX_sizecache        int32          `json:"-"`
}

func (m *GenericSecret) Reset()         { *m = GenericSecret{} }
func (m *GenericSecret) String() string { return proto.CompactTextString(m) }
func (*GenericSecret) ProtoMessage()    {}
func (*GenericSecret) Descriptor() ([]byte, []int) {
	return fileDescriptor_f024ddf67fb198ab, []int{8}
}

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

var xxx_messageInfo_GenericSecret proto.InternalMessageInfo

func (m *GenericSecret) GetSecret() *v3.DataSource {
	if m != nil {
		return m.Secret
	}
	return nil
}

type SdsSecretConfig struct {
	Name                 string           `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	SdsConfig            *v3.ConfigSource `protobuf:"bytes,2,opt,name=sds_config,json=sdsConfig,proto3" json:"sds_config,omitempty"`
	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
	XXX_unrecognized     []byte           `json:"-"`
	XXX_sizecache        int32            `json:"-"`
}

func (m *SdsSecretConfig) Reset()         { *m = SdsSecretConfig{} }
func (m *SdsSecretConfig) String() string { return proto.CompactTextString(m) }
func (*SdsSecretConfig) ProtoMessage()    {}
func (*SdsSecretConfig) Descriptor() ([]byte, []int) {
	return fileDescriptor_f024ddf67fb198ab, []int{9}
}

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

var xxx_messageInfo_SdsSecretConfig proto.InternalMessageInfo

func (m *SdsSecretConfig) GetName() string {
	if m != nil {
		return m.Name
	}
	return ""
}

func (m *SdsSecretConfig) GetSdsConfig() *v3.ConfigSource {
	if m != nil {
		return m.SdsConfig
	}
	return nil
}

type Secret struct {
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Types that are valid to be assigned to Type:
	//	*Secret_TlsCertificate
	//	*Secret_SessionTicketKeys
	//	*Secret_ValidationContext
	//	*Secret_GenericSecret
	Type                 isSecret_Type `protobuf_oneof:"type"`
	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
	XXX_unrecognized     []byte        `json:"-"`
	XXX_sizecache        int32         `json:"-"`
}

func (m *Secret) Reset()         { *m = Secret{} }
func (m *Secret) String() string { return proto.CompactTextString(m) }
func (*Secret) ProtoMessage()    {}
func (*Secret) Descriptor() ([]byte, []int) {
	return fileDescriptor_f024ddf67fb198ab, []int{10}
}

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

var xxx_messageInfo_Secret proto.InternalMessageInfo

func (m *Secret) GetName() string {
	if m != nil {
		return m.Name
	}
	return ""
}

type isSecret_Type interface {
	isSecret_Type()
}

type Secret_TlsCertificate struct {
	TlsCertificate *TlsCertificate `protobuf:"bytes,2,opt,name=tls_certificate,json=tlsCertificate,proto3,oneof"`
}

type Secret_SessionTicketKeys struct {
	SessionTicketKeys *TlsSessionTicketKeys `protobuf:"bytes,3,opt,name=session_ticket_keys,json=sessionTicketKeys,proto3,oneof"`
}

type Secret_ValidationContext struct {
	ValidationContext *CertificateValidationContext `protobuf:"bytes,4,opt,name=validation_context,json=validationContext,proto3,oneof"`
}

type Secret_GenericSecret struct {
	GenericSecret *GenericSecret `protobuf:"bytes,5,opt,name=generic_secret,json=genericSecret,proto3,oneof"`
}

func (*Secret_TlsCertificate) isSecret_Type() {}

func (*Secret_SessionTicketKeys) isSecret_Type() {}

func (*Secret_ValidationContext) isSecret_Type() {}

func (*Secret_GenericSecret) isSecret_Type() {}

func (m *Secret) GetType() isSecret_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (m *Secret) GetTlsCertificate() *TlsCertificate {
	if x, ok := m.GetType().(*Secret_TlsCertificate); ok {
		return x.TlsCertificate
	}
	return nil
}

func (m *Secret) GetSessionTicketKeys() *TlsSessionTicketKeys {
	if x, ok := m.GetType().(*Secret_SessionTicketKeys); ok {
		return x.SessionTicketKeys
	}
	return nil
}

func (m *Secret) GetValidationContext() *CertificateValidationContext {
	if x, ok := m.GetType().(*Secret_ValidationContext); ok {
		return x.ValidationContext
	}
	return nil
}

func (m *Secret) GetGenericSecret() *GenericSecret {
	if x, ok := m.GetType().(*Secret_GenericSecret); ok {
		return x.GenericSecret
	}
	return nil
}

// XXX_OneofWrappers is for the internal use of the proto package.
func (*Secret) XXX_OneofWrappers() []interface{} {
	return []interface{}{
		(*Secret_TlsCertificate)(nil),
		(*Secret_SessionTicketKeys)(nil),
		(*Secret_ValidationContext)(nil),
		(*Secret_GenericSecret)(nil),
	}
}

func init() {
	proto.RegisterEnum("envoy.extensions.transport_sockets.tls.v3.TlsParameters_TlsProtocol", TlsParameters_TlsProtocol_name, TlsParameters_TlsProtocol_value)
	proto.RegisterEnum("envoy.extensions.transport_sockets.tls.v3.CertificateValidationContext_TrustChainVerification", CertificateValidationContext_TrustChainVerification_name, CertificateValidationContext_TrustChainVerification_value)
	proto.RegisterType((*TlsParameters)(nil), "envoy.extensions.transport_sockets.tls.v3.TlsParameters")
	proto.RegisterType((*PrivateKeyProvider)(nil), "envoy.extensions.transport_sockets.tls.v3.PrivateKeyProvider")
	proto.RegisterType((*TlsCertificate)(nil), "envoy.extensions.transport_sockets.tls.v3.TlsCertificate")
	proto.RegisterType((*TlsSessionTicketKeys)(nil), "envoy.extensions.transport_sockets.tls.v3.TlsSessionTicketKeys")
	proto.RegisterType((*CertificateValidationContext)(nil), "envoy.extensions.transport_sockets.tls.v3.CertificateValidationContext")
	proto.RegisterType((*CommonTlsContext)(nil), "envoy.extensions.transport_sockets.tls.v3.CommonTlsContext")
	proto.RegisterType((*CommonTlsContext_CombinedCertificateValidationContext)(nil), "envoy.extensions.transport_sockets.tls.v3.CommonTlsContext.CombinedCertificateValidationContext")
	proto.RegisterType((*UpstreamTlsContext)(nil), "envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext")
	proto.RegisterType((*DownstreamTlsContext)(nil), "envoy.extensions.transport_sockets.tls.v3.DownstreamTlsContext")
	proto.RegisterType((*GenericSecret)(nil), "envoy.extensions.transport_sockets.tls.v3.GenericSecret")
	proto.RegisterType((*SdsSecretConfig)(nil), "envoy.extensions.transport_sockets.tls.v3.SdsSecretConfig")
	proto.RegisterType((*Secret)(nil), "envoy.extensions.transport_sockets.tls.v3.Secret")
}

func init() {
	proto.RegisterFile("envoy/extensions/transport_sockets/tls/v3/cert.proto", fileDescriptor_f024ddf67fb198ab)
}

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