//go:build !ignore_autogenerated
// +build !ignore_autogenerated

// Copyright PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.

// Code generated by deepcopy-gen. DO NOT EDIT.

package v1alpha1

import (
	time "time"

	config "github.com/pingcap/TiProxy/lib/config"
	model "github.com/prometheus/common/model"
	appsv1 "k8s.io/api/apps/v1"
	v1 "k8s.io/api/core/v1"
	networkingv1 "k8s.io/api/networking/v1"
	v1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	runtime "k8s.io/apimachinery/pkg/runtime"
	types "k8s.io/apimachinery/pkg/types"
)

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *AppliedConfig) DeepCopyInto(out *AppliedConfig) {
	*out = *in
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AppliedConfig.
func (in *AppliedConfig) DeepCopy() *AppliedConfig {
	if in == nil {
		return nil
	}
	out := new(AppliedConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *AutoResource) DeepCopyInto(out *AutoResource) {
	*out = *in
	out.CPU = in.CPU.DeepCopy()
	out.Memory = in.Memory.DeepCopy()
	out.Storage = in.Storage.DeepCopy()
	if in.Count != nil {
		in, out := &in.Count, &out.Count
		*out = new(int32)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AutoResource.
func (in *AutoResource) DeepCopy() *AutoResource {
	if in == nil {
		return nil
	}
	out := new(AutoResource)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *AutoRule) DeepCopyInto(out *AutoRule) {
	*out = *in
	if in.MinThreshold != nil {
		in, out := &in.MinThreshold, &out.MinThreshold
		*out = new(float64)
		**out = **in
	}
	if in.ResourceTypes != nil {
		in, out := &in.ResourceTypes, &out.ResourceTypes
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AutoRule.
func (in *AutoRule) DeepCopy() *AutoRule {
	if in == nil {
		return nil
	}
	out := new(AutoRule)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *AutoScaling) DeepCopyInto(out *AutoScaling) {
	*out = *in
	if in.Enabled != nil {
		in, out := &in.Enabled, &out.Enabled
		*out = new(bool)
		**out = **in
	}
	if in.Paused != nil {
		in, out := &in.Paused, &out.Paused
		*out = new(bool)
		**out = **in
	}
	if in.AllowScaleInCancel != nil {
		in, out := &in.AllowScaleInCancel, &out.AllowScaleInCancel
		*out = new(bool)
		**out = **in
	}
	if in.MaxReplicas != nil {
		in, out := &in.MaxReplicas, &out.MaxReplicas
		*out = new(int32)
		**out = **in
	}
	if in.PodCPUMetrics != nil {
		in, out := &in.PodCPUMetrics, &out.PodCPUMetrics
		*out = new(bool)
		**out = **in
	}
	if in.CPU != nil {
		in, out := &in.CPU, &out.CPU
		*out = new(AutoScalingThreshold)
		(*in).DeepCopyInto(*out)
	}
	if in.Storage != nil {
		in, out := &in.Storage, &out.Storage
		*out = new(AutoScalingThreshold)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AutoScaling.
func (in *AutoScaling) DeepCopy() *AutoScaling {
	if in == nil {
		return nil
	}
	out := new(AutoScaling)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *AutoScalingStatus) DeepCopyInto(out *AutoScalingStatus) {
	*out = *in
	in.ScaleInStartTime.DeepCopyInto(&out.ScaleInStartTime)
	in.ScaleOutStartTime.DeepCopyInto(&out.ScaleOutStartTime)
	in.HotStartTime.DeepCopyInto(&out.HotStartTime)
	in.LastIdleTime.DeepCopyInto(&out.LastIdleTime)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AutoScalingStatus.
func (in *AutoScalingStatus) DeepCopy() *AutoScalingStatus {
	if in == nil {
		return nil
	}
	out := new(AutoScalingStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *AutoScalingThreshold) DeepCopyInto(out *AutoScalingThreshold) {
	*out = *in
	if in.ScaleInReplicas != nil {
		in, out := &in.ScaleInReplicas, &out.ScaleInReplicas
		*out = new(int32)
		**out = **in
	}
	if in.ScaleOutReplicas != nil {
		in, out := &in.ScaleOutReplicas, &out.ScaleOutReplicas
		*out = new(int32)
		**out = **in
	}
	if in.ScaleInIntervalSeconds != nil {
		in, out := &in.ScaleInIntervalSeconds, &out.ScaleInIntervalSeconds
		*out = new(int32)
		**out = **in
	}
	if in.ScaleOutIntervalSeconds != nil {
		in, out := &in.ScaleOutIntervalSeconds, &out.ScaleOutIntervalSeconds
		*out = new(int32)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AutoScalingThreshold.
func (in *AutoScalingThreshold) DeepCopy() *AutoScalingThreshold {
	if in == nil {
		return nil
	}
	out := new(AutoScalingThreshold)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *AzblobStorageProvider) DeepCopyInto(out *AzblobStorageProvider) {
	*out = *in
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AzblobStorageProvider.
func (in *AzblobStorageProvider) DeepCopy() *AzblobStorageProvider {
	if in == nil {
		return nil
	}
	out := new(AzblobStorageProvider)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *BRConfig) DeepCopyInto(out *BRConfig) {
	*out = *in
	if in.Concurrency != nil {
		in, out := &in.Concurrency, &out.Concurrency
		*out = new(uint32)
		**out = **in
	}
	if in.RateLimit != nil {
		in, out := &in.RateLimit, &out.RateLimit
		*out = new(uint)
		**out = **in
	}
	if in.Checksum != nil {
		in, out := &in.Checksum, &out.Checksum
		*out = new(bool)
		**out = **in
	}
	if in.CheckRequirements != nil {
		in, out := &in.CheckRequirements, &out.CheckRequirements
		*out = new(bool)
		**out = **in
	}
	if in.SendCredToTikv != nil {
		in, out := &in.SendCredToTikv, &out.SendCredToTikv
		*out = new(bool)
		**out = **in
	}
	if in.OnLine != nil {
		in, out := &in.OnLine, &out.OnLine
		*out = new(bool)
		**out = **in
	}
	if in.Options != nil {
		in, out := &in.Options, &out.Options
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BRConfig.
func (in *BRConfig) DeepCopy() *BRConfig {
	if in == nil {
		return nil
	}
	out := new(BRConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Backup) DeepCopyInto(out *Backup) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	in.Spec.DeepCopyInto(&out.Spec)
	in.Status.DeepCopyInto(&out.Status)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Backup.
func (in *Backup) DeepCopy() *Backup {
	if in == nil {
		return nil
	}
	out := new(Backup)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *Backup) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *BackupCondition) DeepCopyInto(out *BackupCondition) {
	*out = *in
	in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BackupCondition.
func (in *BackupCondition) DeepCopy() *BackupCondition {
	if in == nil {
		return nil
	}
	out := new(BackupCondition)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *BackupList) DeepCopyInto(out *BackupList) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ListMeta.DeepCopyInto(&out.ListMeta)
	if in.Items != nil {
		in, out := &in.Items, &out.Items
		*out = make([]Backup, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BackupList.
func (in *BackupList) DeepCopy() *BackupList {
	if in == nil {
		return nil
	}
	out := new(BackupList)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *BackupList) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *BackupSchedule) DeepCopyInto(out *BackupSchedule) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	in.Spec.DeepCopyInto(&out.Spec)
	in.Status.DeepCopyInto(&out.Status)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BackupSchedule.
func (in *BackupSchedule) DeepCopy() *BackupSchedule {
	if in == nil {
		return nil
	}
	out := new(BackupSchedule)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *BackupSchedule) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *BackupScheduleList) DeepCopyInto(out *BackupScheduleList) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ListMeta.DeepCopyInto(&out.ListMeta)
	if in.Items != nil {
		in, out := &in.Items, &out.Items
		*out = make([]BackupSchedule, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BackupScheduleList.
func (in *BackupScheduleList) DeepCopy() *BackupScheduleList {
	if in == nil {
		return nil
	}
	out := new(BackupScheduleList)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *BackupScheduleList) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *BackupScheduleSpec) DeepCopyInto(out *BackupScheduleSpec) {
	*out = *in
	if in.MaxBackups != nil {
		in, out := &in.MaxBackups, &out.MaxBackups
		*out = new(int32)
		**out = **in
	}
	if in.MaxReservedTime != nil {
		in, out := &in.MaxReservedTime, &out.MaxReservedTime
		*out = new(string)
		**out = **in
	}
	in.BackupTemplate.DeepCopyInto(&out.BackupTemplate)
	if in.StorageClassName != nil {
		in, out := &in.StorageClassName, &out.StorageClassName
		*out = new(string)
		**out = **in
	}
	if in.ImagePullSecrets != nil {
		in, out := &in.ImagePullSecrets, &out.ImagePullSecrets
		*out = make([]v1.LocalObjectReference, len(*in))
		copy(*out, *in)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BackupScheduleSpec.
func (in *BackupScheduleSpec) DeepCopy() *BackupScheduleSpec {
	if in == nil {
		return nil
	}
	out := new(BackupScheduleSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *BackupScheduleStatus) DeepCopyInto(out *BackupScheduleStatus) {
	*out = *in
	if in.LastBackupTime != nil {
		in, out := &in.LastBackupTime, &out.LastBackupTime
		*out = (*in).DeepCopy()
	}
	if in.AllBackupCleanTime != nil {
		in, out := &in.AllBackupCleanTime, &out.AllBackupCleanTime
		*out = (*in).DeepCopy()
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BackupScheduleStatus.
func (in *BackupScheduleStatus) DeepCopy() *BackupScheduleStatus {
	if in == nil {
		return nil
	}
	out := new(BackupScheduleStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *BackupSpec) DeepCopyInto(out *BackupSpec) {
	*out = *in
	in.ResourceRequirements.DeepCopyInto(&out.ResourceRequirements)
	if in.Env != nil {
		in, out := &in.Env, &out.Env
		*out = make([]v1.EnvVar, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.From != nil {
		in, out := &in.From, &out.From
		*out = new(TiDBAccessConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.TikvGCLifeTime != nil {
		in, out := &in.TikvGCLifeTime, &out.TikvGCLifeTime
		*out = new(string)
		**out = **in
	}
	in.StorageProvider.DeepCopyInto(&out.StorageProvider)
	if in.StorageClassName != nil {
		in, out := &in.StorageClassName, &out.StorageClassName
		*out = new(string)
		**out = **in
	}
	if in.BR != nil {
		in, out := &in.BR, &out.BR
		*out = new(BRConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.Dumpling != nil {
		in, out := &in.Dumpling, &out.Dumpling
		*out = new(DumplingConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.Tolerations != nil {
		in, out := &in.Tolerations, &out.Tolerations
		*out = make([]v1.Toleration, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.ImagePullSecrets != nil {
		in, out := &in.ImagePullSecrets, &out.ImagePullSecrets
		*out = make([]v1.LocalObjectReference, len(*in))
		copy(*out, *in)
	}
	if in.TableFilter != nil {
		in, out := &in.TableFilter, &out.TableFilter
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	if in.Affinity != nil {
		in, out := &in.Affinity, &out.Affinity
		*out = new(v1.Affinity)
		(*in).DeepCopyInto(*out)
	}
	if in.CleanOption != nil {
		in, out := &in.CleanOption, &out.CleanOption
		*out = new(CleanOption)
		**out = **in
	}
	if in.PodSecurityContext != nil {
		in, out := &in.PodSecurityContext, &out.PodSecurityContext
		*out = new(v1.PodSecurityContext)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BackupSpec.
func (in *BackupSpec) DeepCopy() *BackupSpec {
	if in == nil {
		return nil
	}
	out := new(BackupSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *BackupStatus) DeepCopyInto(out *BackupStatus) {
	*out = *in
	in.TimeStarted.DeepCopyInto(&out.TimeStarted)
	in.TimeCompleted.DeepCopyInto(&out.TimeCompleted)
	if in.Conditions != nil {
		in, out := &in.Conditions, &out.Conditions
		*out = make([]BackupCondition, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.LogSubCommandStatuses != nil {
		in, out := &in.LogSubCommandStatuses, &out.LogSubCommandStatuses
		*out = make(map[LogSubCommandType]LogSubCommandStatus, len(*in))
		for key, val := range *in {
			(*out)[key] = *val.DeepCopy()
		}
	}
	if in.Progresses != nil {
		in, out := &in.Progresses, &out.Progresses
		*out = make([]Progress, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BackupStatus.
func (in *BackupStatus) DeepCopy() *BackupStatus {
	if in == nil {
		return nil
	}
	out := new(BackupStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *BasicAuth) DeepCopyInto(out *BasicAuth) {
	*out = *in
	in.Username.DeepCopyInto(&out.Username)
	in.Password.DeepCopyInto(&out.Password)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BasicAuth.
func (in *BasicAuth) DeepCopy() *BasicAuth {
	if in == nil {
		return nil
	}
	out := new(BasicAuth)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *BasicAutoScalerSpec) DeepCopyInto(out *BasicAutoScalerSpec) {
	*out = *in
	if in.Rules != nil {
		in, out := &in.Rules, &out.Rules
		*out = make(map[v1.ResourceName]AutoRule, len(*in))
		for key, val := range *in {
			(*out)[key] = *val.DeepCopy()
		}
	}
	if in.ScaleInIntervalSeconds != nil {
		in, out := &in.ScaleInIntervalSeconds, &out.ScaleInIntervalSeconds
		*out = new(int32)
		**out = **in
	}
	if in.ScaleOutIntervalSeconds != nil {
		in, out := &in.ScaleOutIntervalSeconds, &out.ScaleOutIntervalSeconds
		*out = new(int32)
		**out = **in
	}
	if in.External != nil {
		in, out := &in.External, &out.External
		*out = new(ExternalConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.Resources != nil {
		in, out := &in.Resources, &out.Resources
		*out = make(map[string]AutoResource, len(*in))
		for key, val := range *in {
			(*out)[key] = *val.DeepCopy()
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BasicAutoScalerSpec.
func (in *BasicAutoScalerSpec) DeepCopy() *BasicAutoScalerSpec {
	if in == nil {
		return nil
	}
	out := new(BasicAutoScalerSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *BasicAutoScalerStatus) DeepCopyInto(out *BasicAutoScalerStatus) {
	*out = *in
	if in.LastAutoScalingTimestamp != nil {
		in, out := &in.LastAutoScalingTimestamp, &out.LastAutoScalingTimestamp
		*out = (*in).DeepCopy()
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BasicAutoScalerStatus.
func (in *BasicAutoScalerStatus) DeepCopy() *BasicAutoScalerStatus {
	if in == nil {
		return nil
	}
	out := new(BasicAutoScalerStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *BatchDeleteOption) DeepCopyInto(out *BatchDeleteOption) {
	*out = *in
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BatchDeleteOption.
func (in *BatchDeleteOption) DeepCopy() *BatchDeleteOption {
	if in == nil {
		return nil
	}
	out := new(BatchDeleteOption)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Binlog) DeepCopyInto(out *Binlog) {
	*out = *in
	if in.Enable != nil {
		in, out := &in.Enable, &out.Enable
		*out = new(bool)
		**out = **in
	}
	if in.WriteTimeout != nil {
		in, out := &in.WriteTimeout, &out.WriteTimeout
		*out = new(string)
		**out = **in
	}
	if in.IgnoreError != nil {
		in, out := &in.IgnoreError, &out.IgnoreError
		*out = new(bool)
		**out = **in
	}
	if in.BinlogSocket != nil {
		in, out := &in.BinlogSocket, &out.BinlogSocket
		*out = new(string)
		**out = **in
	}
	if in.Strategy != nil {
		in, out := &in.Strategy, &out.Strategy
		*out = new(string)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Binlog.
func (in *Binlog) DeepCopy() *Binlog {
	if in == nil {
		return nil
	}
	out := new(Binlog)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Blacklist) DeepCopyInto(out *Blacklist) {
	*out = *in
	if in.EnableRollingUpdate != nil {
		in, out := &in.EnableRollingUpdate, &out.EnableRollingUpdate
		*out = new(bool)
		**out = **in
	}
	if in.KeyspaceNames != nil {
		in, out := &in.KeyspaceNames, &out.KeyspaceNames
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	if in.RegionIDs != nil {
		in, out := &in.RegionIDs, &out.RegionIDs
		*out = make([]uint64, len(*in))
		copy(*out, *in)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Blacklist.
func (in *Blacklist) DeepCopy() *Blacklist {
	if in == nil {
		return nil
	}
	out := new(Blacklist)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *BlacklistStatus) DeepCopyInto(out *BlacklistStatus) {
	*out = *in
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BlacklistStatus.
func (in *BlacklistStatus) DeepCopy() *BlacklistStatus {
	if in == nil {
		return nil
	}
	out := new(BlacklistStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *CDCConfigWraper) DeepCopyInto(out *CDCConfigWraper) {
	*out = *in
	if in.GenericConfig != nil {
		in, out := &in.GenericConfig, &out.GenericConfig
		*out = (*in).DeepCopy()
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CDCConfigWraper.
func (in *CDCConfigWraper) DeepCopy() *CDCConfigWraper {
	if in == nil {
		return nil
	}
	out := new(CDCConfigWraper)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *CanaryUpgrade) DeepCopyInto(out *CanaryUpgrade) {
	*out = *in
	if in.Enabled != nil {
		in, out := &in.Enabled, &out.Enabled
		*out = new(bool)
		**out = **in
	}
	if in.CoordinationSeconds != nil {
		in, out := &in.CoordinationSeconds, &out.CoordinationSeconds
		*out = new(int32)
		**out = **in
	}
	if in.ClusterPriority != nil {
		in, out := &in.ClusterPriority, &out.ClusterPriority
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	if in.ClusterReadySeconds != nil {
		in, out := &in.ClusterReadySeconds, &out.ClusterReadySeconds
		*out = new(int32)
		**out = **in
	}
	if in.StageReadySeconds != nil {
		in, out := &in.StageReadySeconds, &out.StageReadySeconds
		*out = new(int32)
		**out = **in
	}
	if in.StagePercents != nil {
		in, out := &in.StagePercents, &out.StagePercents
		*out = make([]int32, len(*in))
		copy(*out, *in)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CanaryUpgrade.
func (in *CanaryUpgrade) DeepCopy() *CanaryUpgrade {
	if in == nil {
		return nil
	}
	out := new(CanaryUpgrade)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *CleanOption) DeepCopyInto(out *CleanOption) {
	*out = *in
	out.BatchDeleteOption = in.BatchDeleteOption
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CleanOption.
func (in *CleanOption) DeepCopy() *CleanOption {
	if in == nil {
		return nil
	}
	out := new(CleanOption)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ClusterRef) DeepCopyInto(out *ClusterRef) {
	*out = *in
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterRef.
func (in *ClusterRef) DeepCopy() *ClusterRef {
	if in == nil {
		return nil
	}
	out := new(ClusterRef)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *CommonConfig) DeepCopyInto(out *CommonConfig) {
	*out = *in
	if in.TmpPath != nil {
		in, out := &in.TmpPath, &out.TmpPath
		*out = new(string)
		**out = **in
	}
	if in.DisplayName != nil {
		in, out := &in.DisplayName, &out.DisplayName
		*out = new(string)
		**out = **in
	}
	if in.DefaultProfile != nil {
		in, out := &in.DefaultProfile, &out.DefaultProfile
		*out = new(string)
		**out = **in
	}
	if in.FlashDataPath != nil {
		in, out := &in.FlashDataPath, &out.FlashDataPath
		*out = new(string)
		**out = **in
	}
	if in.PathRealtimeMode != nil {
		in, out := &in.PathRealtimeMode, &out.PathRealtimeMode
		*out = new(bool)
		**out = **in
	}
	if in.MarkCacheSize != nil {
		in, out := &in.MarkCacheSize, &out.MarkCacheSize
		*out = new(int64)
		**out = **in
	}
	if in.MinmaxIndexCacheSize != nil {
		in, out := &in.MinmaxIndexCacheSize, &out.MinmaxIndexCacheSize
		*out = new(int64)
		**out = **in
	}
	if in.ListenHost != nil {
		in, out := &in.ListenHost, &out.ListenHost
		*out = new(string)
		**out = **in
	}
	if in.TCPPort != nil {
		in, out := &in.TCPPort, &out.TCPPort
		*out = new(int32)
		**out = **in
	}
	if in.HTTPPort != nil {
		in, out := &in.HTTPPort, &out.HTTPPort
		*out = new(int32)
		**out = **in
	}
	if in.TCPPortSecure != nil {
		in, out := &in.TCPPortSecure, &out.TCPPortSecure
		*out = new(int32)
		**out = **in
	}
	if in.HTTPSPort != nil {
		in, out := &in.HTTPSPort, &out.HTTPSPort
		*out = new(int32)
		**out = **in
	}
	if in.InternalServerHTTPPort != nil {
		in, out := &in.InternalServerHTTPPort, &out.InternalServerHTTPPort
		*out = new(int32)
		**out = **in
	}
	if in.Flash != nil {
		in, out := &in.Flash, &out.Flash
		*out = new(Flash)
		(*in).DeepCopyInto(*out)
	}
	if in.FlashLogger != nil {
		in, out := &in.FlashLogger, &out.FlashLogger
		*out = new(FlashLogger)
		(*in).DeepCopyInto(*out)
	}
	if in.FlashApplication != nil {
		in, out := &in.FlashApplication, &out.FlashApplication
		*out = new(FlashApplication)
		(*in).DeepCopyInto(*out)
	}
	if in.FlashRaft != nil {
		in, out := &in.FlashRaft, &out.FlashRaft
		*out = new(FlashRaft)
		(*in).DeepCopyInto(*out)
	}
	if in.FlashStatus != nil {
		in, out := &in.FlashStatus, &out.FlashStatus
		*out = new(FlashStatus)
		(*in).DeepCopyInto(*out)
	}
	if in.FlashQuota != nil {
		in, out := &in.FlashQuota, &out.FlashQuota
		*out = new(FlashQuota)
		(*in).DeepCopyInto(*out)
	}
	if in.FlashUser != nil {
		in, out := &in.FlashUser, &out.FlashUser
		*out = new(FlashUser)
		(*in).DeepCopyInto(*out)
	}
	if in.FlashProfile != nil {
		in, out := &in.FlashProfile, &out.FlashProfile
		*out = new(FlashProfile)
		(*in).DeepCopyInto(*out)
	}
	if in.Security != nil {
		in, out := &in.Security, &out.Security
		*out = new(FlashSecurity)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CommonConfig.
func (in *CommonConfig) DeepCopy() *CommonConfig {
	if in == nil {
		return nil
	}
	out := new(CommonConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ComponentSpec) DeepCopyInto(out *ComponentSpec) {
	*out = *in
	if in.Version != nil {
		in, out := &in.Version, &out.Version
		*out = new(string)
		**out = **in
	}
	if in.ImagePullPolicy != nil {
		in, out := &in.ImagePullPolicy, &out.ImagePullPolicy
		*out = new(v1.PullPolicy)
		**out = **in
	}
	if in.ImagePullSecrets != nil {
		in, out := &in.ImagePullSecrets, &out.ImagePullSecrets
		*out = make([]v1.LocalObjectReference, len(*in))
		copy(*out, *in)
	}
	if in.HostNetwork != nil {
		in, out := &in.HostNetwork, &out.HostNetwork
		*out = new(bool)
		**out = **in
	}
	if in.Affinity != nil {
		in, out := &in.Affinity, &out.Affinity
		*out = new(v1.Affinity)
		(*in).DeepCopyInto(*out)
	}
	if in.PriorityClassName != nil {
		in, out := &in.PriorityClassName, &out.PriorityClassName
		*out = new(string)
		**out = **in
	}
	if in.SchedulerName != nil {
		in, out := &in.SchedulerName, &out.SchedulerName
		*out = new(string)
		**out = **in
	}
	if in.NodeSelector != nil {
		in, out := &in.NodeSelector, &out.NodeSelector
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	if in.Annotations != nil {
		in, out := &in.Annotations, &out.Annotations
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	if in.Labels != nil {
		in, out := &in.Labels, &out.Labels
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	if in.Tolerations != nil {
		in, out := &in.Tolerations, &out.Tolerations
		*out = make([]v1.Toleration, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.PodSecurityContext != nil {
		in, out := &in.PodSecurityContext, &out.PodSecurityContext
		*out = new(v1.PodSecurityContext)
		(*in).DeepCopyInto(*out)
	}
	if in.ConfigUpdateStrategy != nil {
		in, out := &in.ConfigUpdateStrategy, &out.ConfigUpdateStrategy
		*out = new(ConfigUpdateStrategy)
		**out = **in
	}
	if in.Env != nil {
		in, out := &in.Env, &out.Env
		*out = make([]v1.EnvVar, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.EnvFrom != nil {
		in, out := &in.EnvFrom, &out.EnvFrom
		*out = make([]v1.EnvFromSource, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.InitContainers != nil {
		in, out := &in.InitContainers, &out.InitContainers
		*out = make([]v1.Container, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.AdditionalContainers != nil {
		in, out := &in.AdditionalContainers, &out.AdditionalContainers
		*out = make([]v1.Container, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.AdditionalVolumes != nil {
		in, out := &in.AdditionalVolumes, &out.AdditionalVolumes
		*out = make([]v1.Volume, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.AdditionalVolumeMounts != nil {
		in, out := &in.AdditionalVolumeMounts, &out.AdditionalVolumeMounts
		*out = make([]v1.VolumeMount, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.DNSConfig != nil {
		in, out := &in.DNSConfig, &out.DNSConfig
		*out = new(v1.PodDNSConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.TerminationGracePeriodSeconds != nil {
		in, out := &in.TerminationGracePeriodSeconds, &out.TerminationGracePeriodSeconds
		*out = new(int64)
		**out = **in
	}
	if in.TopologySpreadConstraints != nil {
		in, out := &in.TopologySpreadConstraints, &out.TopologySpreadConstraints
		*out = make([]TopologySpreadConstraint, len(*in))
		copy(*out, *in)
	}
	if in.SuspendAction != nil {
		in, out := &in.SuspendAction, &out.SuspendAction
		*out = new(SuspendAction)
		**out = **in
	}
	if in.ReadinessProbe != nil {
		in, out := &in.ReadinessProbe, &out.ReadinessProbe
		*out = new(Probe)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ComponentSpec.
func (in *ComponentSpec) DeepCopy() *ComponentSpec {
	if in == nil {
		return nil
	}
	out := new(ComponentSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ConfigMapRef) DeepCopyInto(out *ConfigMapRef) {
	*out = *in
	if in.Namespace != nil {
		in, out := &in.Namespace, &out.Namespace
		*out = new(string)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigMapRef.
func (in *ConfigMapRef) DeepCopy() *ConfigMapRef {
	if in == nil {
		return nil
	}
	out := new(ConfigMapRef)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *CoprocessorCache) DeepCopyInto(out *CoprocessorCache) {
	*out = *in
	if in.Enabled != nil {
		in, out := &in.Enabled, &out.Enabled
		*out = new(bool)
		**out = **in
	}
	if in.CapacityMB != nil {
		in, out := &in.CapacityMB, &out.CapacityMB
		*out = new(float64)
		**out = **in
	}
	if in.AdmissionMaxResultMB != nil {
		in, out := &in.AdmissionMaxResultMB, &out.AdmissionMaxResultMB
		*out = new(float64)
		**out = **in
	}
	if in.AdmissionMinProcessMs != nil {
		in, out := &in.AdmissionMinProcessMs, &out.AdmissionMinProcessMs
		*out = new(uint64)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CoprocessorCache.
func (in *CoprocessorCache) DeepCopy() *CoprocessorCache {
	if in == nil {
		return nil
	}
	out := new(CoprocessorCache)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *CrdKind) DeepCopyInto(out *CrdKind) {
	*out = *in
	if in.ShortNames != nil {
		in, out := &in.ShortNames, &out.ShortNames
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	if in.AdditionalPrinterColums != nil {
		in, out := &in.AdditionalPrinterColums, &out.AdditionalPrinterColums
		*out = make([]v1beta1.CustomResourceColumnDefinition, len(*in))
		copy(*out, *in)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CrdKind.
func (in *CrdKind) DeepCopy() *CrdKind {
	if in == nil {
		return nil
	}
	out := new(CrdKind)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *CrdKinds) DeepCopyInto(out *CrdKinds) {
	*out = *in
	in.TiDBCluster.DeepCopyInto(&out.TiDBCluster)
	in.DMCluster.DeepCopyInto(&out.DMCluster)
	in.Backup.DeepCopyInto(&out.Backup)
	in.Restore.DeepCopyInto(&out.Restore)
	in.BackupSchedule.DeepCopyInto(&out.BackupSchedule)
	in.TiDBMonitor.DeepCopyInto(&out.TiDBMonitor)
	in.TiDBInitializer.DeepCopyInto(&out.TiDBInitializer)
	in.TidbClusterAutoScaler.DeepCopyInto(&out.TidbClusterAutoScaler)
	in.TiDBNGMonitoring.DeepCopyInto(&out.TiDBNGMonitoring)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CrdKinds.
func (in *CrdKinds) DeepCopy() *CrdKinds {
	if in == nil {
		return nil
	}
	out := new(CrdKinds)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *DMCluster) DeepCopyInto(out *DMCluster) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	in.Spec.DeepCopyInto(&out.Spec)
	in.Status.DeepCopyInto(&out.Status)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DMCluster.
func (in *DMCluster) DeepCopy() *DMCluster {
	if in == nil {
		return nil
	}
	out := new(DMCluster)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *DMCluster) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *DMClusterCondition) DeepCopyInto(out *DMClusterCondition) {
	*out = *in
	in.LastUpdateTime.DeepCopyInto(&out.LastUpdateTime)
	in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DMClusterCondition.
func (in *DMClusterCondition) DeepCopy() *DMClusterCondition {
	if in == nil {
		return nil
	}
	out := new(DMClusterCondition)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *DMClusterList) DeepCopyInto(out *DMClusterList) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ListMeta.DeepCopyInto(&out.ListMeta)
	if in.Items != nil {
		in, out := &in.Items, &out.Items
		*out = make([]DMCluster, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DMClusterList.
func (in *DMClusterList) DeepCopy() *DMClusterList {
	if in == nil {
		return nil
	}
	out := new(DMClusterList)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *DMClusterList) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *DMClusterSpec) DeepCopyInto(out *DMClusterSpec) {
	*out = *in
	in.Discovery.DeepCopyInto(&out.Discovery)
	in.Master.DeepCopyInto(&out.Master)
	if in.Worker != nil {
		in, out := &in.Worker, &out.Worker
		*out = new(WorkerSpec)
		(*in).DeepCopyInto(*out)
	}
	if in.PVReclaimPolicy != nil {
		in, out := &in.PVReclaimPolicy, &out.PVReclaimPolicy
		*out = new(v1.PersistentVolumeReclaimPolicy)
		**out = **in
	}
	if in.ImagePullSecrets != nil {
		in, out := &in.ImagePullSecrets, &out.ImagePullSecrets
		*out = make([]v1.LocalObjectReference, len(*in))
		copy(*out, *in)
	}
	if in.EnablePVReclaim != nil {
		in, out := &in.EnablePVReclaim, &out.EnablePVReclaim
		*out = new(bool)
		**out = **in
	}
	if in.TLSCluster != nil {
		in, out := &in.TLSCluster, &out.TLSCluster
		*out = new(TLSCluster)
		**out = **in
	}
	if in.TLSClientSecretNames != nil {
		in, out := &in.TLSClientSecretNames, &out.TLSClientSecretNames
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	if in.HostNetwork != nil {
		in, out := &in.HostNetwork, &out.HostNetwork
		*out = new(bool)
		**out = **in
	}
	if in.Affinity != nil {
		in, out := &in.Affinity, &out.Affinity
		*out = new(v1.Affinity)
		(*in).DeepCopyInto(*out)
	}
	if in.PriorityClassName != nil {
		in, out := &in.PriorityClassName, &out.PriorityClassName
		*out = new(string)
		**out = **in
	}
	if in.NodeSelector != nil {
		in, out := &in.NodeSelector, &out.NodeSelector
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	if in.Annotations != nil {
		in, out := &in.Annotations, &out.Annotations
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	if in.Labels != nil {
		in, out := &in.Labels, &out.Labels
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	if in.Tolerations != nil {
		in, out := &in.Tolerations, &out.Tolerations
		*out = make([]v1.Toleration, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.DNSConfig != nil {
		in, out := &in.DNSConfig, &out.DNSConfig
		*out = new(v1.PodDNSConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.PodSecurityContext != nil {
		in, out := &in.PodSecurityContext, &out.PodSecurityContext
		*out = new(v1.PodSecurityContext)
		(*in).DeepCopyInto(*out)
	}
	if in.TopologySpreadConstraints != nil {
		in, out := &in.TopologySpreadConstraints, &out.TopologySpreadConstraints
		*out = make([]TopologySpreadConstraint, len(*in))
		copy(*out, *in)
	}
	if in.SuspendAction != nil {
		in, out := &in.SuspendAction, &out.SuspendAction
		*out = new(SuspendAction)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DMClusterSpec.
func (in *DMClusterSpec) DeepCopy() *DMClusterSpec {
	if in == nil {
		return nil
	}
	out := new(DMClusterSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *DMClusterStatus) DeepCopyInto(out *DMClusterStatus) {
	*out = *in
	in.Master.DeepCopyInto(&out.Master)
	in.Worker.DeepCopyInto(&out.Worker)
	if in.Conditions != nil {
		in, out := &in.Conditions, &out.Conditions
		*out = make([]DMClusterCondition, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DMClusterStatus.
func (in *DMClusterStatus) DeepCopy() *DMClusterStatus {
	if in == nil {
		return nil
	}
	out := new(DMClusterStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *DMDiscoverySpec) DeepCopyInto(out *DMDiscoverySpec) {
	*out = *in
	if in.ComponentSpec != nil {
		in, out := &in.ComponentSpec, &out.ComponentSpec
		*out = new(ComponentSpec)
		(*in).DeepCopyInto(*out)
	}
	in.ResourceRequirements.DeepCopyInto(&out.ResourceRequirements)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DMDiscoverySpec.
func (in *DMDiscoverySpec) DeepCopy() *DMDiscoverySpec {
	if in == nil {
		return nil
	}
	out := new(DMDiscoverySpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *DMExperimental) DeepCopyInto(out *DMExperimental) {
	*out = *in
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DMExperimental.
func (in *DMExperimental) DeepCopy() *DMExperimental {
	if in == nil {
		return nil
	}
	out := new(DMExperimental)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *DMMonitorSpec) DeepCopyInto(out *DMMonitorSpec) {
	*out = *in
	if in.Clusters != nil {
		in, out := &in.Clusters, &out.Clusters
		*out = make([]ClusterRef, len(*in))
		copy(*out, *in)
	}
	in.Initializer.DeepCopyInto(&out.Initializer)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DMMonitorSpec.
func (in *DMMonitorSpec) DeepCopy() *DMMonitorSpec {
	if in == nil {
		return nil
	}
	out := new(DMMonitorSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *DMSecurityConfig) DeepCopyInto(out *DMSecurityConfig) {
	*out = *in
	if in.SSLCA != nil {
		in, out := &in.SSLCA, &out.SSLCA
		*out = new(string)
		**out = **in
	}
	if in.SSLCert != nil {
		in, out := &in.SSLCert, &out.SSLCert
		*out = new(string)
		**out = **in
	}
	if in.SSLKey != nil {
		in, out := &in.SSLKey, &out.SSLKey
		*out = new(string)
		**out = **in
	}
	if in.CertAllowedCN != nil {
		in, out := &in.CertAllowedCN, &out.CertAllowedCN
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DMSecurityConfig.
func (in *DMSecurityConfig) DeepCopy() *DMSecurityConfig {
	if in == nil {
		return nil
	}
	out := new(DMSecurityConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *DashboardConfig) DeepCopyInto(out *DashboardConfig) {
	*out = *in
	if in.TiDBCAPath != nil {
		in, out := &in.TiDBCAPath, &out.TiDBCAPath
		*out = new(string)
		**out = **in
	}
	if in.TiDBCertPath != nil {
		in, out := &in.TiDBCertPath, &out.TiDBCertPath
		*out = new(string)
		**out = **in
	}
	if in.TiDBKeyPath != nil {
		in, out := &in.TiDBKeyPath, &out.TiDBKeyPath
		*out = new(string)
		**out = **in
	}
	if in.PublicPathPrefix != nil {
		in, out := &in.PublicPathPrefix, &out.PublicPathPrefix
		*out = new(string)
		**out = **in
	}
	if in.InternalProxy != nil {
		in, out := &in.InternalProxy, &out.InternalProxy
		*out = new(bool)
		**out = **in
	}
	if in.DisableTelemetry != nil {
		in, out := &in.DisableTelemetry, &out.DisableTelemetry
		*out = new(bool)
		**out = **in
	}
	if in.EnableTelemetry != nil {
		in, out := &in.EnableTelemetry, &out.EnableTelemetry
		*out = new(bool)
		**out = **in
	}
	if in.EnableExperimental != nil {
		in, out := &in.EnableExperimental, &out.EnableExperimental
		*out = new(bool)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DashboardConfig.
func (in *DashboardConfig) DeepCopy() *DashboardConfig {
	if in == nil {
		return nil
	}
	out := new(DashboardConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *DataResource) DeepCopyInto(out *DataResource) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	if in.Data != nil {
		in, out := &in.Data, &out.Data
		*out = make([]byte, len(*in))
		copy(*out, *in)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DataResource.
func (in *DataResource) DeepCopy() *DataResource {
	if in == nil {
		return nil
	}
	out := new(DataResource)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *DataResource) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *DataResourceList) DeepCopyInto(out *DataResourceList) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ListMeta.DeepCopyInto(&out.ListMeta)
	if in.Items != nil {
		in, out := &in.Items, &out.Items
		*out = make([]DataResource, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DataResourceList.
func (in *DataResourceList) DeepCopy() *DataResourceList {
	if in == nil {
		return nil
	}
	out := new(DataResourceList)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *DataResourceList) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *DeploymentStorageStatus) DeepCopyInto(out *DeploymentStorageStatus) {
	*out = *in
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DeploymentStorageStatus.
func (in *DeploymentStorageStatus) DeepCopy() *DeploymentStorageStatus {
	if in == nil {
		return nil
	}
	out := new(DeploymentStorageStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *DiscoverySpec) DeepCopyInto(out *DiscoverySpec) {
	*out = *in
	if in.ComponentSpec != nil {
		in, out := &in.ComponentSpec, &out.ComponentSpec
		*out = new(ComponentSpec)
		(*in).DeepCopyInto(*out)
	}
	in.ResourceRequirements.DeepCopyInto(&out.ResourceRequirements)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DiscoverySpec.
func (in *DiscoverySpec) DeepCopy() *DiscoverySpec {
	if in == nil {
		return nil
	}
	out := new(DiscoverySpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *DumplingConfig) DeepCopyInto(out *DumplingConfig) {
	*out = *in
	if in.Options != nil {
		in, out := &in.Options, &out.Options
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	if in.TableFilter != nil {
		in, out := &in.TableFilter, &out.TableFilter
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DumplingConfig.
func (in *DumplingConfig) DeepCopy() *DumplingConfig {
	if in == nil {
		return nil
	}
	out := new(DumplingConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *EmptyStruct) DeepCopyInto(out *EmptyStruct) {
	*out = *in
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EmptyStruct.
func (in *EmptyStruct) DeepCopy() *EmptyStruct {
	if in == nil {
		return nil
	}
	out := new(EmptyStruct)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *EvictLeaderStatus) DeepCopyInto(out *EvictLeaderStatus) {
	*out = *in
	in.PodCreateTime.DeepCopyInto(&out.PodCreateTime)
	in.BeginTime.DeepCopyInto(&out.BeginTime)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EvictLeaderStatus.
func (in *EvictLeaderStatus) DeepCopy() *EvictLeaderStatus {
	if in == nil {
		return nil
	}
	out := new(EvictLeaderStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Experimental) DeepCopyInto(out *Experimental) {
	*out = *in
	if in.AllowAutoRandom != nil {
		in, out := &in.AllowAutoRandom, &out.AllowAutoRandom
		*out = new(bool)
		**out = **in
	}
	if in.AllowsExpressionIndex != nil {
		in, out := &in.AllowsExpressionIndex, &out.AllowsExpressionIndex
		*out = new(bool)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Experimental.
func (in *Experimental) DeepCopy() *Experimental {
	if in == nil {
		return nil
	}
	out := new(Experimental)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ExternalConfig) DeepCopyInto(out *ExternalConfig) {
	*out = *in
	in.Endpoint.DeepCopyInto(&out.Endpoint)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalConfig.
func (in *ExternalConfig) DeepCopy() *ExternalConfig {
	if in == nil {
		return nil
	}
	out := new(ExternalConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ExternalEndpoint) DeepCopyInto(out *ExternalEndpoint) {
	*out = *in
	if in.TLSSecret != nil {
		in, out := &in.TLSSecret, &out.TLSSecret
		*out = new(SecretRef)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalEndpoint.
func (in *ExternalEndpoint) DeepCopy() *ExternalEndpoint {
	if in == nil {
		return nil
	}
	out := new(ExternalEndpoint)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Failover) DeepCopyInto(out *Failover) {
	*out = *in
	if in.ReplicasPerFailureStore != nil {
		in, out := &in.ReplicasPerFailureStore, &out.ReplicasPerFailureStore
		*out = new(int32)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Failover.
func (in *Failover) DeepCopy() *Failover {
	if in == nil {
		return nil
	}
	out := new(Failover)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *FallbackCluster) DeepCopyInto(out *FallbackCluster) {
	*out = *in
	if in.Enabled != nil {
		in, out := &in.Enabled, &out.Enabled
		*out = new(bool)
		**out = **in
	}
	if in.Cluster != nil {
		in, out := &in.Cluster, &out.Cluster
		*out = new(TidbClusterRef)
		**out = **in
	}
	if in.ScaleOutTimeout != nil {
		in, out := &in.ScaleOutTimeout, &out.ScaleOutTimeout
		*out = new(string)
		**out = **in
	}
	if in.ReadyDuration != nil {
		in, out := &in.ReadyDuration, &out.ReadyDuration
		*out = new(string)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FallbackCluster.
func (in *FallbackCluster) DeepCopy() *FallbackCluster {
	if in == nil {
		return nil
	}
	out := new(FallbackCluster)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *FallbackClusterStatus) DeepCopyInto(out *FallbackClusterStatus) {
	*out = *in
	in.PendingStartTime.DeepCopyInto(&out.PendingStartTime)
	in.LastReadyTime.DeepCopyInto(&out.LastReadyTime)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FallbackClusterStatus.
func (in *FallbackClusterStatus) DeepCopy() *FallbackClusterStatus {
	if in == nil {
		return nil
	}
	out := new(FallbackClusterStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *FileLogConfig) DeepCopyInto(out *FileLogConfig) {
	*out = *in
	if in.Filename != nil {
		in, out := &in.Filename, &out.Filename
		*out = new(string)
		**out = **in
	}
	if in.LogRotate != nil {
		in, out := &in.LogRotate, &out.LogRotate
		*out = new(bool)
		**out = **in
	}
	if in.MaxSize != nil {
		in, out := &in.MaxSize, &out.MaxSize
		*out = new(int)
		**out = **in
	}
	if in.MaxDays != nil {
		in, out := &in.MaxDays, &out.MaxDays
		*out = new(int)
		**out = **in
	}
	if in.MaxBackups != nil {
		in, out := &in.MaxBackups, &out.MaxBackups
		*out = new(int)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FileLogConfig.
func (in *FileLogConfig) DeepCopy() *FileLogConfig {
	if in == nil {
		return nil
	}
	out := new(FileLogConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Flash) DeepCopyInto(out *Flash) {
	*out = *in
	if in.TiDBStatusAddr != nil {
		in, out := &in.TiDBStatusAddr, &out.TiDBStatusAddr
		*out = new(string)
		**out = **in
	}
	if in.ServiceAddr != nil {
		in, out := &in.ServiceAddr, &out.ServiceAddr
		*out = new(string)
		**out = **in
	}
	if in.OverlapThreshold != nil {
		in, out := &in.OverlapThreshold, &out.OverlapThreshold
		*out = new(float64)
		**out = **in
	}
	if in.CompactLogMinPeriod != nil {
		in, out := &in.CompactLogMinPeriod, &out.CompactLogMinPeriod
		*out = new(int32)
		**out = **in
	}
	if in.FlashCluster != nil {
		in, out := &in.FlashCluster, &out.FlashCluster
		*out = new(FlashCluster)
		(*in).DeepCopyInto(*out)
	}
	if in.FlashProxy != nil {
		in, out := &in.FlashProxy, &out.FlashProxy
		*out = new(FlashProxy)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Flash.
func (in *Flash) DeepCopy() *Flash {
	if in == nil {
		return nil
	}
	out := new(Flash)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *FlashApplication) DeepCopyInto(out *FlashApplication) {
	*out = *in
	if in.RunAsDaemon != nil {
		in, out := &in.RunAsDaemon, &out.RunAsDaemon
		*out = new(bool)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlashApplication.
func (in *FlashApplication) DeepCopy() *FlashApplication {
	if in == nil {
		return nil
	}
	out := new(FlashApplication)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *FlashCluster) DeepCopyInto(out *FlashCluster) {
	*out = *in
	if in.ClusterManagerPath != nil {
		in, out := &in.ClusterManagerPath, &out.ClusterManagerPath
		*out = new(string)
		**out = **in
	}
	if in.ClusterLog != nil {
		in, out := &in.ClusterLog, &out.ClusterLog
		*out = new(string)
		**out = **in
	}
	if in.RefreshInterval != nil {
		in, out := &in.RefreshInterval, &out.RefreshInterval
		*out = new(int32)
		**out = **in
	}
	if in.UpdateRuleInterval != nil {
		in, out := &in.UpdateRuleInterval, &out.UpdateRuleInterval
		*out = new(int32)
		**out = **in
	}
	if in.MasterTTL != nil {
		in, out := &in.MasterTTL, &out.MasterTTL
		*out = new(int32)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlashCluster.
func (in *FlashCluster) DeepCopy() *FlashCluster {
	if in == nil {
		return nil
	}
	out := new(FlashCluster)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *FlashLogger) DeepCopyInto(out *FlashLogger) {
	*out = *in
	if in.ErrorLog != nil {
		in, out := &in.ErrorLog, &out.ErrorLog
		*out = new(string)
		**out = **in
	}
	if in.Size != nil {
		in, out := &in.Size, &out.Size
		*out = new(string)
		**out = **in
	}
	if in.ServerLog != nil {
		in, out := &in.ServerLog, &out.ServerLog
		*out = new(string)
		**out = **in
	}
	if in.Level != nil {
		in, out := &in.Level, &out.Level
		*out = new(string)
		**out = **in
	}
	if in.Count != nil {
		in, out := &in.Count, &out.Count
		*out = new(int32)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlashLogger.
func (in *FlashLogger) DeepCopy() *FlashLogger {
	if in == nil {
		return nil
	}
	out := new(FlashLogger)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *FlashProfile) DeepCopyInto(out *FlashProfile) {
	*out = *in
	if in.Readonly != nil {
		in, out := &in.Readonly, &out.Readonly
		*out = new(Profile)
		(*in).DeepCopyInto(*out)
	}
	if in.Default != nil {
		in, out := &in.Default, &out.Default
		*out = new(Profile)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlashProfile.
func (in *FlashProfile) DeepCopy() *FlashProfile {
	if in == nil {
		return nil
	}
	out := new(FlashProfile)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *FlashProxy) DeepCopyInto(out *FlashProxy) {
	*out = *in
	if in.Addr != nil {
		in, out := &in.Addr, &out.Addr
		*out = new(string)
		**out = **in
	}
	if in.AdvertiseAddr != nil {
		in, out := &in.AdvertiseAddr, &out.AdvertiseAddr
		*out = new(string)
		**out = **in
	}
	if in.DataDir != nil {
		in, out := &in.DataDir, &out.DataDir
		*out = new(string)
		**out = **in
	}
	if in.Config != nil {
		in, out := &in.Config, &out.Config
		*out = new(string)
		**out = **in
	}
	if in.LogFile != nil {
		in, out := &in.LogFile, &out.LogFile
		*out = new(string)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlashProxy.
func (in *FlashProxy) DeepCopy() *FlashProxy {
	if in == nil {
		return nil
	}
	out := new(FlashProxy)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *FlashQuota) DeepCopyInto(out *FlashQuota) {
	*out = *in
	if in.Default != nil {
		in, out := &in.Default, &out.Default
		*out = new(Quota)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlashQuota.
func (in *FlashQuota) DeepCopy() *FlashQuota {
	if in == nil {
		return nil
	}
	out := new(FlashQuota)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *FlashRaft) DeepCopyInto(out *FlashRaft) {
	*out = *in
	if in.PDAddr != nil {
		in, out := &in.PDAddr, &out.PDAddr
		*out = new(string)
		**out = **in
	}
	if in.KVStorePath != nil {
		in, out := &in.KVStorePath, &out.KVStorePath
		*out = new(string)
		**out = **in
	}
	if in.StorageEngine != nil {
		in, out := &in.StorageEngine, &out.StorageEngine
		*out = new(string)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlashRaft.
func (in *FlashRaft) DeepCopy() *FlashRaft {
	if in == nil {
		return nil
	}
	out := new(FlashRaft)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *FlashSecurity) DeepCopyInto(out *FlashSecurity) {
	*out = *in
	if in.CAPath != nil {
		in, out := &in.CAPath, &out.CAPath
		*out = new(string)
		**out = **in
	}
	if in.CertPath != nil {
		in, out := &in.CertPath, &out.CertPath
		*out = new(string)
		**out = **in
	}
	if in.KeyPath != nil {
		in, out := &in.KeyPath, &out.KeyPath
		*out = new(string)
		**out = **in
	}
	if in.CertAllowedCN != nil {
		in, out := &in.CertAllowedCN, &out.CertAllowedCN
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlashSecurity.
func (in *FlashSecurity) DeepCopy() *FlashSecurity {
	if in == nil {
		return nil
	}
	out := new(FlashSecurity)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *FlashServerConfig) DeepCopyInto(out *FlashServerConfig) {
	*out = *in
	if in.EngineAddr != nil {
		in, out := &in.EngineAddr, &out.EngineAddr
		*out = new(string)
		**out = **in
	}
	if in.StatusAddr != nil {
		in, out := &in.StatusAddr, &out.StatusAddr
		*out = new(string)
		**out = **in
	}
	if in.AdvertiseStatusAddr != nil {
		in, out := &in.AdvertiseStatusAddr, &out.AdvertiseStatusAddr
		*out = new(string)
		**out = **in
	}
	in.TiKVServerConfig.DeepCopyInto(&out.TiKVServerConfig)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlashServerConfig.
func (in *FlashServerConfig) DeepCopy() *FlashServerConfig {
	if in == nil {
		return nil
	}
	out := new(FlashServerConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *FlashStatus) DeepCopyInto(out *FlashStatus) {
	*out = *in
	if in.MetricsPort != nil {
		in, out := &in.MetricsPort, &out.MetricsPort
		*out = new(int32)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlashStatus.
func (in *FlashStatus) DeepCopy() *FlashStatus {
	if in == nil {
		return nil
	}
	out := new(FlashStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *FlashUser) DeepCopyInto(out *FlashUser) {
	*out = *in
	if in.Readonly != nil {
		in, out := &in.Readonly, &out.Readonly
		*out = new(User)
		(*in).DeepCopyInto(*out)
	}
	if in.Default != nil {
		in, out := &in.Default, &out.Default
		*out = new(User)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FlashUser.
func (in *FlashUser) DeepCopy() *FlashUser {
	if in == nil {
		return nil
	}
	out := new(FlashUser)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *GcsStorageProvider) DeepCopyInto(out *GcsStorageProvider) {
	*out = *in
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GcsStorageProvider.
func (in *GcsStorageProvider) DeepCopy() *GcsStorageProvider {
	if in == nil {
		return nil
	}
	out := new(GcsStorageProvider)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *GrafanaSpec) DeepCopyInto(out *GrafanaSpec) {
	*out = *in
	in.MonitorContainer.DeepCopyInto(&out.MonitorContainer)
	in.Service.DeepCopyInto(&out.Service)
	if in.UsernameSecret != nil {
		in, out := &in.UsernameSecret, &out.UsernameSecret
		*out = new(v1.SecretKeySelector)
		(*in).DeepCopyInto(*out)
	}
	if in.PasswordSecret != nil {
		in, out := &in.PasswordSecret, &out.PasswordSecret
		*out = new(v1.SecretKeySelector)
		(*in).DeepCopyInto(*out)
	}
	if in.Envs != nil {
		in, out := &in.Envs, &out.Envs
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	if in.Ingress != nil {
		in, out := &in.Ingress, &out.Ingress
		*out = new(IngressSpec)
		(*in).DeepCopyInto(*out)
	}
	if in.AdditionalVolumeMounts != nil {
		in, out := &in.AdditionalVolumeMounts, &out.AdditionalVolumeMounts
		*out = make([]v1.VolumeMount, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GrafanaSpec.
func (in *GrafanaSpec) DeepCopy() *GrafanaSpec {
	if in == nil {
		return nil
	}
	out := new(GrafanaSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *HelperSpec) DeepCopyInto(out *HelperSpec) {
	*out = *in
	if in.Image != nil {
		in, out := &in.Image, &out.Image
		*out = new(string)
		**out = **in
	}
	if in.ImagePullPolicy != nil {
		in, out := &in.ImagePullPolicy, &out.ImagePullPolicy
		*out = new(v1.PullPolicy)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HelperSpec.
func (in *HelperSpec) DeepCopy() *HelperSpec {
	if in == nil {
		return nil
	}
	out := new(HelperSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *HotCluster) DeepCopyInto(out *HotCluster) {
	*out = *in
	if in.Enabled != nil {
		in, out := &in.Enabled, &out.Enabled
		*out = new(bool)
		**out = **in
	}
	if in.ScaleToZero != nil {
		in, out := &in.ScaleToZero, &out.ScaleToZero
		*out = new(bool)
		**out = **in
	}
	if in.Cluster != nil {
		in, out := &in.Cluster, &out.Cluster
		*out = new(TidbClusterRef)
		**out = **in
	}
	if in.CPUThreshold != nil {
		in, out := &in.CPUThreshold, &out.CPUThreshold
		*out = new(float64)
		**out = **in
	}
	if in.HotDurationSeconds != nil {
		in, out := &in.HotDurationSeconds, &out.HotDurationSeconds
		*out = new(int32)
		**out = **in
	}
	if in.InitialReplicas != nil {
		in, out := &in.InitialReplicas, &out.InitialReplicas
		*out = new(int32)
		**out = **in
	}
	if in.MaxHotRegionsCount != nil {
		in, out := &in.MaxHotRegionsCount, &out.MaxHotRegionsCount
		*out = new(int64)
		**out = **in
	}
	if in.HotRegionSeconds != nil {
		in, out := &in.HotRegionSeconds, &out.HotRegionSeconds
		*out = new(int32)
		**out = **in
	}
	if in.ColdRegionSeconds != nil {
		in, out := &in.ColdRegionSeconds, &out.ColdRegionSeconds
		*out = new(int32)
		**out = **in
	}
	if in.RegionHeartbeatSeconds != nil {
		in, out := &in.RegionHeartbeatSeconds, &out.RegionHeartbeatSeconds
		*out = new(int32)
		**out = **in
	}
	if in.StoreHeartbeatSeconds != nil {
		in, out := &in.StoreHeartbeatSeconds, &out.StoreHeartbeatSeconds
		*out = new(int32)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HotCluster.
func (in *HotCluster) DeepCopy() *HotCluster {
	if in == nil {
		return nil
	}
	out := new(HotCluster)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *HotClusterStatus) DeepCopyInto(out *HotClusterStatus) {
	*out = *in
	if in.CoolingRegions != nil {
		in, out := &in.CoolingRegions, &out.CoolingRegions
		*out = make(map[string]metav1.Time, len(*in))
		for key, val := range *in {
			(*out)[key] = *val.DeepCopy()
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HotClusterStatus.
func (in *HotClusterStatus) DeepCopy() *HotClusterStatus {
	if in == nil {
		return nil
	}
	out := new(HotClusterStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *IngressSpec) DeepCopyInto(out *IngressSpec) {
	*out = *in
	if in.Hosts != nil {
		in, out := &in.Hosts, &out.Hosts
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	if in.Annotations != nil {
		in, out := &in.Annotations, &out.Annotations
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	if in.TLS != nil {
		in, out := &in.TLS, &out.TLS
		*out = make([]networkingv1.IngressTLS, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngressSpec.
func (in *IngressSpec) DeepCopy() *IngressSpec {
	if in == nil {
		return nil
	}
	out := new(IngressSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *InitContainerSpec) DeepCopyInto(out *InitContainerSpec) {
	*out = *in
	in.ResourceRequirements.DeepCopyInto(&out.ResourceRequirements)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InitContainerSpec.
func (in *InitContainerSpec) DeepCopy() *InitContainerSpec {
	if in == nil {
		return nil
	}
	out := new(InitContainerSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *InitializerSpec) DeepCopyInto(out *InitializerSpec) {
	*out = *in
	in.MonitorContainer.DeepCopyInto(&out.MonitorContainer)
	if in.Envs != nil {
		in, out := &in.Envs, &out.Envs
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InitializerSpec.
func (in *InitializerSpec) DeepCopy() *InitializerSpec {
	if in == nil {
		return nil
	}
	out := new(InitializerSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Interval) DeepCopyInto(out *Interval) {
	*out = *in
	if in.Duration != nil {
		in, out := &in.Duration, &out.Duration
		*out = new(int32)
		**out = **in
	}
	if in.Queries != nil {
		in, out := &in.Queries, &out.Queries
		*out = new(int32)
		**out = **in
	}
	if in.Errors != nil {
		in, out := &in.Errors, &out.Errors
		*out = new(int32)
		**out = **in
	}
	if in.ResultRows != nil {
		in, out := &in.ResultRows, &out.ResultRows
		*out = new(int32)
		**out = **in
	}
	if in.ReadRows != nil {
		in, out := &in.ReadRows, &out.ReadRows
		*out = new(int32)
		**out = **in
	}
	if in.ExecutionTime != nil {
		in, out := &in.ExecutionTime, &out.ExecutionTime
		*out = new(int32)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Interval.
func (in *Interval) DeepCopy() *Interval {
	if in == nil {
		return nil
	}
	out := new(Interval)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *IsolatedCluster) DeepCopyInto(out *IsolatedCluster) {
	*out = *in
	if in.ZoneRedundant != nil {
		in, out := &in.ZoneRedundant, &out.ZoneRedundant
		*out = new(bool)
		**out = **in
	}
	if in.OnlyLeader != nil {
		in, out := &in.OnlyLeader, &out.OnlyLeader
		*out = new(bool)
		**out = **in
	}
	if in.Keyspaces != nil {
		in, out := &in.Keyspaces, &out.Keyspaces
		*out = make([]IsolatedKeyspace, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.RegionIDs != nil {
		in, out := &in.RegionIDs, &out.RegionIDs
		*out = make([]uint64, len(*in))
		copy(*out, *in)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IsolatedCluster.
func (in *IsolatedCluster) DeepCopy() *IsolatedCluster {
	if in == nil {
		return nil
	}
	out := new(IsolatedCluster)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *IsolatedKeyspace) DeepCopyInto(out *IsolatedKeyspace) {
	*out = *in
	if in.TableIDs != nil {
		in, out := &in.TableIDs, &out.TableIDs
		*out = make([]uint64, len(*in))
		copy(*out, *in)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IsolatedKeyspace.
func (in *IsolatedKeyspace) DeepCopy() *IsolatedKeyspace {
	if in == nil {
		return nil
	}
	out := new(IsolatedKeyspace)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *IsolationRead) DeepCopyInto(out *IsolationRead) {
	*out = *in
	if in.Engines != nil {
		in, out := &in.Engines, &out.Engines
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IsolationRead.
func (in *IsolationRead) DeepCopy() *IsolationRead {
	if in == nil {
		return nil
	}
	out := new(IsolationRead)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *LocalStorageProvider) DeepCopyInto(out *LocalStorageProvider) {
	*out = *in
	in.Volume.DeepCopyInto(&out.Volume)
	in.VolumeMount.DeepCopyInto(&out.VolumeMount)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LocalStorageProvider.
func (in *LocalStorageProvider) DeepCopy() *LocalStorageProvider {
	if in == nil {
		return nil
	}
	out := new(LocalStorageProvider)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Log) DeepCopyInto(out *Log) {
	*out = *in
	if in.Level != nil {
		in, out := &in.Level, &out.Level
		*out = new(string)
		**out = **in
	}
	if in.Format != nil {
		in, out := &in.Format, &out.Format
		*out = new(string)
		**out = **in
	}
	if in.DisableTimestamp != nil {
		in, out := &in.DisableTimestamp, &out.DisableTimestamp
		*out = new(bool)
		**out = **in
	}
	if in.EnableTimestamp != nil {
		in, out := &in.EnableTimestamp, &out.EnableTimestamp
		*out = new(bool)
		**out = **in
	}
	if in.EnableErrorStack != nil {
		in, out := &in.EnableErrorStack, &out.EnableErrorStack
		*out = new(bool)
		**out = **in
	}
	if in.File != nil {
		in, out := &in.File, &out.File
		*out = new(FileLogConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.EnableSlowLog != nil {
		in, out := &in.EnableSlowLog, &out.EnableSlowLog
		*out = new(bool)
		**out = **in
	}
	if in.SlowQueryFile != nil {
		in, out := &in.SlowQueryFile, &out.SlowQueryFile
		*out = new(string)
		**out = **in
	}
	if in.SlowThreshold != nil {
		in, out := &in.SlowThreshold, &out.SlowThreshold
		*out = new(uint64)
		**out = **in
	}
	if in.ExpensiveThreshold != nil {
		in, out := &in.ExpensiveThreshold, &out.ExpensiveThreshold
		*out = new(uint)
		**out = **in
	}
	if in.QueryLogMaxLen != nil {
		in, out := &in.QueryLogMaxLen, &out.QueryLogMaxLen
		*out = new(uint64)
		**out = **in
	}
	if in.RecordPlanInSlowLog != nil {
		in, out := &in.RecordPlanInSlowLog, &out.RecordPlanInSlowLog
		*out = new(uint32)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Log.
func (in *Log) DeepCopy() *Log {
	if in == nil {
		return nil
	}
	out := new(Log)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *LogSubCommandStatus) DeepCopyInto(out *LogSubCommandStatus) {
	*out = *in
	in.TimeStarted.DeepCopyInto(&out.TimeStarted)
	in.TimeCompleted.DeepCopyInto(&out.TimeCompleted)
	if in.Conditions != nil {
		in, out := &in.Conditions, &out.Conditions
		*out = make([]BackupCondition, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LogSubCommandStatus.
func (in *LogSubCommandStatus) DeepCopy() *LogSubCommandStatus {
	if in == nil {
		return nil
	}
	out := new(LogSubCommandStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *LogTailerSpec) DeepCopyInto(out *LogTailerSpec) {
	*out = *in
	in.ResourceRequirements.DeepCopyInto(&out.ResourceRequirements)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LogTailerSpec.
func (in *LogTailerSpec) DeepCopy() *LogTailerSpec {
	if in == nil {
		return nil
	}
	out := new(LogTailerSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *MasterConfig) DeepCopyInto(out *MasterConfig) {
	*out = *in
	if in.LogLevel != nil {
		in, out := &in.LogLevel, &out.LogLevel
		*out = new(string)
		**out = **in
	}
	if in.LogFile != nil {
		in, out := &in.LogFile, &out.LogFile
		*out = new(string)
		**out = **in
	}
	if in.LogFormat != nil {
		in, out := &in.LogFormat, &out.LogFormat
		*out = new(string)
		**out = **in
	}
	if in.RPCTimeoutStr != nil {
		in, out := &in.RPCTimeoutStr, &out.RPCTimeoutStr
		*out = new(string)
		**out = **in
	}
	if in.RPCRateLimit != nil {
		in, out := &in.RPCRateLimit, &out.RPCRateLimit
		*out = new(float64)
		**out = **in
	}
	if in.RPCRateBurst != nil {
		in, out := &in.RPCRateBurst, &out.RPCRateBurst
		*out = new(int)
		**out = **in
	}
	in.DMSecurityConfig.DeepCopyInto(&out.DMSecurityConfig)
	if in.Experimental != nil {
		in, out := &in.Experimental, &out.Experimental
		*out = new(DMExperimental)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MasterConfig.
func (in *MasterConfig) DeepCopy() *MasterConfig {
	if in == nil {
		return nil
	}
	out := new(MasterConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *MasterConfigWraper) DeepCopyInto(out *MasterConfigWraper) {
	*out = *in
	if in.GenericConfig != nil {
		in, out := &in.GenericConfig, &out.GenericConfig
		*out = (*in).DeepCopy()
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MasterConfigWraper.
func (in *MasterConfigWraper) DeepCopy() *MasterConfigWraper {
	if in == nil {
		return nil
	}
	out := new(MasterConfigWraper)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *MasterFailureMember) DeepCopyInto(out *MasterFailureMember) {
	*out = *in
	in.CreatedAt.DeepCopyInto(&out.CreatedAt)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MasterFailureMember.
func (in *MasterFailureMember) DeepCopy() *MasterFailureMember {
	if in == nil {
		return nil
	}
	out := new(MasterFailureMember)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *MasterKeyFileConfig) DeepCopyInto(out *MasterKeyFileConfig) {
	*out = *in
	if in.Method != nil {
		in, out := &in.Method, &out.Method
		*out = new(string)
		**out = **in
	}
	if in.Path != nil {
		in, out := &in.Path, &out.Path
		*out = new(string)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MasterKeyFileConfig.
func (in *MasterKeyFileConfig) DeepCopy() *MasterKeyFileConfig {
	if in == nil {
		return nil
	}
	out := new(MasterKeyFileConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *MasterKeyKMSConfig) DeepCopyInto(out *MasterKeyKMSConfig) {
	*out = *in
	if in.KeyID != nil {
		in, out := &in.KeyID, &out.KeyID
		*out = new(string)
		**out = **in
	}
	if in.AccessKey != nil {
		in, out := &in.AccessKey, &out.AccessKey
		*out = new(string)
		**out = **in
	}
	if in.SecretKey != nil {
		in, out := &in.SecretKey, &out.SecretKey
		*out = new(string)
		**out = **in
	}
	if in.Region != nil {
		in, out := &in.Region, &out.Region
		*out = new(string)
		**out = **in
	}
	if in.Endpoint != nil {
		in, out := &in.Endpoint, &out.Endpoint
		*out = new(string)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MasterKeyKMSConfig.
func (in *MasterKeyKMSConfig) DeepCopy() *MasterKeyKMSConfig {
	if in == nil {
		return nil
	}
	out := new(MasterKeyKMSConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *MasterMember) DeepCopyInto(out *MasterMember) {
	*out = *in
	in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MasterMember.
func (in *MasterMember) DeepCopy() *MasterMember {
	if in == nil {
		return nil
	}
	out := new(MasterMember)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *MasterServiceSpec) DeepCopyInto(out *MasterServiceSpec) {
	*out = *in
	in.ServiceSpec.DeepCopyInto(&out.ServiceSpec)
	if in.ExternalTrafficPolicy != nil {
		in, out := &in.ExternalTrafficPolicy, &out.ExternalTrafficPolicy
		*out = new(v1.ServiceExternalTrafficPolicyType)
		**out = **in
	}
	if in.MasterNodePort != nil {
		in, out := &in.MasterNodePort, &out.MasterNodePort
		*out = new(int)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MasterServiceSpec.
func (in *MasterServiceSpec) DeepCopy() *MasterServiceSpec {
	if in == nil {
		return nil
	}
	out := new(MasterServiceSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *MasterSpec) DeepCopyInto(out *MasterSpec) {
	*out = *in
	in.ComponentSpec.DeepCopyInto(&out.ComponentSpec)
	in.ResourceRequirements.DeepCopyInto(&out.ResourceRequirements)
	if in.Service != nil {
		in, out := &in.Service, &out.Service
		*out = new(MasterServiceSpec)
		(*in).DeepCopyInto(*out)
	}
	if in.MaxFailoverCount != nil {
		in, out := &in.MaxFailoverCount, &out.MaxFailoverCount
		*out = new(int32)
		**out = **in
	}
	if in.StorageClassName != nil {
		in, out := &in.StorageClassName, &out.StorageClassName
		*out = new(string)
		**out = **in
	}
	if in.Config != nil {
		in, out := &in.Config, &out.Config
		*out = new(MasterConfigWraper)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MasterSpec.
func (in *MasterSpec) DeepCopy() *MasterSpec {
	if in == nil {
		return nil
	}
	out := new(MasterSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *MasterStatus) DeepCopyInto(out *MasterStatus) {
	*out = *in
	if in.StatefulSet != nil {
		in, out := &in.StatefulSet, &out.StatefulSet
		*out = new(appsv1.StatefulSetStatus)
		(*in).DeepCopyInto(*out)
	}
	if in.Members != nil {
		in, out := &in.Members, &out.Members
		*out = make(map[string]MasterMember, len(*in))
		for key, val := range *in {
			(*out)[key] = *val.DeepCopy()
		}
	}
	in.Leader.DeepCopyInto(&out.Leader)
	if in.FailureMembers != nil {
		in, out := &in.FailureMembers, &out.FailureMembers
		*out = make(map[string]MasterFailureMember, len(*in))
		for key, val := range *in {
			(*out)[key] = *val.DeepCopy()
		}
	}
	if in.UnjoinedMembers != nil {
		in, out := &in.UnjoinedMembers, &out.UnjoinedMembers
		*out = make(map[string]UnjoinedMember, len(*in))
		for key, val := range *in {
			(*out)[key] = *val.DeepCopy()
		}
	}
	if in.Volumes != nil {
		in, out := &in.Volumes, &out.Volumes
		*out = make(map[StorageVolumeName]*StorageVolumeStatus, len(*in))
		for key, val := range *in {
			var outVal *StorageVolumeStatus
			if val == nil {
				(*out)[key] = nil
			} else {
				in, out := &val, &outVal
				*out = new(StorageVolumeStatus)
				(*in).DeepCopyInto(*out)
			}
			(*out)[key] = outVal
		}
	}
	if in.Conditions != nil {
		in, out := &in.Conditions, &out.Conditions
		*out = make([]metav1.Condition, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MasterStatus.
func (in *MasterStatus) DeepCopy() *MasterStatus {
	if in == nil {
		return nil
	}
	out := new(MasterStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *MetadataConfig) DeepCopyInto(out *MetadataConfig) {
	*out = *in
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetadataConfig.
func (in *MetadataConfig) DeepCopy() *MetadataConfig {
	if in == nil {
		return nil
	}
	out := new(MetadataConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *MonitorContainer) DeepCopyInto(out *MonitorContainer) {
	*out = *in
	in.ResourceRequirements.DeepCopyInto(&out.ResourceRequirements)
	if in.ImagePullPolicy != nil {
		in, out := &in.ImagePullPolicy, &out.ImagePullPolicy
		*out = new(v1.PullPolicy)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MonitorContainer.
func (in *MonitorContainer) DeepCopy() *MonitorContainer {
	if in == nil {
		return nil
	}
	out := new(MonitorContainer)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *NGMonitoringSpec) DeepCopyInto(out *NGMonitoringSpec) {
	*out = *in
	in.ComponentSpec.DeepCopyInto(&out.ComponentSpec)
	in.ResourceRequirements.DeepCopyInto(&out.ResourceRequirements)
	if in.StorageClassName != nil {
		in, out := &in.StorageClassName, &out.StorageClassName
		*out = new(string)
		**out = **in
	}
	if in.StorageVolumes != nil {
		in, out := &in.StorageVolumes, &out.StorageVolumes
		*out = make([]StorageVolume, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.Config != nil {
		in, out := &in.Config, &out.Config
		*out = (*in).DeepCopy()
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NGMonitoringSpec.
func (in *NGMonitoringSpec) DeepCopy() *NGMonitoringSpec {
	if in == nil {
		return nil
	}
	out := new(NGMonitoringSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *NGMonitoringStatus) DeepCopyInto(out *NGMonitoringStatus) {
	*out = *in
	if in.StatefulSet != nil {
		in, out := &in.StatefulSet, &out.StatefulSet
		*out = new(appsv1.StatefulSetStatus)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NGMonitoringStatus.
func (in *NGMonitoringStatus) DeepCopy() *NGMonitoringStatus {
	if in == nil {
		return nil
	}
	out := new(NGMonitoringStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Networks) DeepCopyInto(out *Networks) {
	*out = *in
	if in.IP != nil {
		in, out := &in.IP, &out.IP
		*out = new(string)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Networks.
func (in *Networks) DeepCopy() *Networks {
	if in == nil {
		return nil
	}
	out := new(Networks)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ObservedStorageVolumeStatus) DeepCopyInto(out *ObservedStorageVolumeStatus) {
	*out = *in
	out.CurrentCapacity = in.CurrentCapacity.DeepCopy()
	out.ModifiedCapacity = in.ModifiedCapacity.DeepCopy()
	out.ResizedCapacity = in.ResizedCapacity.DeepCopy()
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ObservedStorageVolumeStatus.
func (in *ObservedStorageVolumeStatus) DeepCopy() *ObservedStorageVolumeStatus {
	if in == nil {
		return nil
	}
	out := new(ObservedStorageVolumeStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *OpenTracing) DeepCopyInto(out *OpenTracing) {
	*out = *in
	if in.Enable != nil {
		in, out := &in.Enable, &out.Enable
		*out = new(bool)
		**out = **in
	}
	if in.Sampler != nil {
		in, out := &in.Sampler, &out.Sampler
		*out = new(OpenTracingSampler)
		(*in).DeepCopyInto(*out)
	}
	if in.Reporter != nil {
		in, out := &in.Reporter, &out.Reporter
		*out = new(OpenTracingReporter)
		(*in).DeepCopyInto(*out)
	}
	if in.RPCMetrics != nil {
		in, out := &in.RPCMetrics, &out.RPCMetrics
		*out = new(bool)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpenTracing.
func (in *OpenTracing) DeepCopy() *OpenTracing {
	if in == nil {
		return nil
	}
	out := new(OpenTracing)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *OpenTracingReporter) DeepCopyInto(out *OpenTracingReporter) {
	*out = *in
	if in.QueueSize != nil {
		in, out := &in.QueueSize, &out.QueueSize
		*out = new(int)
		**out = **in
	}
	if in.BufferFlushInterval != nil {
		in, out := &in.BufferFlushInterval, &out.BufferFlushInterval
		*out = new(time.Duration)
		**out = **in
	}
	if in.LogSpans != nil {
		in, out := &in.LogSpans, &out.LogSpans
		*out = new(bool)
		**out = **in
	}
	if in.LocalAgentHostPort != nil {
		in, out := &in.LocalAgentHostPort, &out.LocalAgentHostPort
		*out = new(string)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpenTracingReporter.
func (in *OpenTracingReporter) DeepCopy() *OpenTracingReporter {
	if in == nil {
		return nil
	}
	out := new(OpenTracingReporter)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *OpenTracingSampler) DeepCopyInto(out *OpenTracingSampler) {
	*out = *in
	if in.Type != nil {
		in, out := &in.Type, &out.Type
		*out = new(string)
		**out = **in
	}
	if in.Param != nil {
		in, out := &in.Param, &out.Param
		*out = new(float64)
		**out = **in
	}
	if in.SamplingServerURL != nil {
		in, out := &in.SamplingServerURL, &out.SamplingServerURL
		*out = new(string)
		**out = **in
	}
	if in.MaxOperations != nil {
		in, out := &in.MaxOperations, &out.MaxOperations
		*out = new(int)
		**out = **in
	}
	if in.SamplingRefreshInterval != nil {
		in, out := &in.SamplingRefreshInterval, &out.SamplingRefreshInterval
		*out = new(time.Duration)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OpenTracingSampler.
func (in *OpenTracingSampler) DeepCopy() *OpenTracingSampler {
	if in == nil {
		return nil
	}
	out := new(OpenTracingSampler)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PDConfig) DeepCopyInto(out *PDConfig) {
	*out = *in
	if in.ForceNewCluster != nil {
		in, out := &in.ForceNewCluster, &out.ForceNewCluster
		*out = new(bool)
		**out = **in
	}
	if in.EnableGRPCGateway != nil {
		in, out := &in.EnableGRPCGateway, &out.EnableGRPCGateway
		*out = new(bool)
		**out = **in
	}
	if in.InitialClusterToken != nil {
		in, out := &in.InitialClusterToken, &out.InitialClusterToken
		*out = new(string)
		**out = **in
	}
	if in.LeaderLease != nil {
		in, out := &in.LeaderLease, &out.LeaderLease
		*out = new(int64)
		**out = **in
	}
	if in.Log != nil {
		in, out := &in.Log, &out.Log
		*out = new(PDLogConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.LogFileDeprecated != nil {
		in, out := &in.LogFileDeprecated, &out.LogFileDeprecated
		*out = new(string)
		**out = **in
	}
	if in.LogLevelDeprecated != nil {
		in, out := &in.LogLevelDeprecated, &out.LogLevelDeprecated
		*out = new(string)
		**out = **in
	}
	if in.TsoSaveInterval != nil {
		in, out := &in.TsoSaveInterval, &out.TsoSaveInterval
		*out = new(string)
		**out = **in
	}
	if in.Metric != nil {
		in, out := &in.Metric, &out.Metric
		*out = new(PDMetricConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.Schedule != nil {
		in, out := &in.Schedule, &out.Schedule
		*out = new(PDScheduleConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.Replication != nil {
		in, out := &in.Replication, &out.Replication
		*out = new(PDReplicationConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.Namespace != nil {
		in, out := &in.Namespace, &out.Namespace
		*out = make(map[string]PDNamespaceConfig, len(*in))
		for key, val := range *in {
			(*out)[key] = *val.DeepCopy()
		}
	}
	if in.PDServerCfg != nil {
		in, out := &in.PDServerCfg, &out.PDServerCfg
		*out = new(PDServerConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.ClusterVersion != nil {
		in, out := &in.ClusterVersion, &out.ClusterVersion
		*out = new(string)
		**out = **in
	}
	if in.QuotaBackendBytes != nil {
		in, out := &in.QuotaBackendBytes, &out.QuotaBackendBytes
		*out = new(string)
		**out = **in
	}
	if in.AutoCompactionMode != nil {
		in, out := &in.AutoCompactionMode, &out.AutoCompactionMode
		*out = new(string)
		**out = **in
	}
	if in.AutoCompactionRetention != nil {
		in, out := &in.AutoCompactionRetention, &out.AutoCompactionRetention
		*out = new(string)
		**out = **in
	}
	if in.TickInterval != nil {
		in, out := &in.TickInterval, &out.TickInterval
		*out = new(string)
		**out = **in
	}
	if in.ElectionInterval != nil {
		in, out := &in.ElectionInterval, &out.ElectionInterval
		*out = new(string)
		**out = **in
	}
	if in.PreVote != nil {
		in, out := &in.PreVote, &out.PreVote
		*out = new(bool)
		**out = **in
	}
	if in.Security != nil {
		in, out := &in.Security, &out.Security
		*out = new(PDSecurityConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.LabelProperty != nil {
		in, out := &in.LabelProperty, &out.LabelProperty
		*out = make(PDLabelPropertyConfig, len(*in))
		for key, val := range *in {
			var outVal []PDStoreLabel
			if val == nil {
				(*out)[key] = nil
			} else {
				in, out := &val, &outVal
				*out = make(PDStoreLabels, len(*in))
				for i := range *in {
					(*in)[i].DeepCopyInto(&(*out)[i])
				}
			}
			(*out)[key] = outVal
		}
	}
	if in.NamespaceClassifier != nil {
		in, out := &in.NamespaceClassifier, &out.NamespaceClassifier
		*out = new(string)
		**out = **in
	}
	if in.Dashboard != nil {
		in, out := &in.Dashboard, &out.Dashboard
		*out = new(DashboardConfig)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PDConfig.
func (in *PDConfig) DeepCopy() *PDConfig {
	if in == nil {
		return nil
	}
	out := new(PDConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PDConfigWraper) DeepCopyInto(out *PDConfigWraper) {
	*out = *in
	if in.GenericConfig != nil {
		in, out := &in.GenericConfig, &out.GenericConfig
		*out = (*in).DeepCopy()
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PDConfigWraper.
func (in *PDConfigWraper) DeepCopy() *PDConfigWraper {
	if in == nil {
		return nil
	}
	out := new(PDConfigWraper)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PDFailureMember) DeepCopyInto(out *PDFailureMember) {
	*out = *in
	if in.PVCUIDSet != nil {
		in, out := &in.PVCUIDSet, &out.PVCUIDSet
		*out = make(map[types.UID]EmptyStruct, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	in.CreatedAt.DeepCopyInto(&out.CreatedAt)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PDFailureMember.
func (in *PDFailureMember) DeepCopy() *PDFailureMember {
	if in == nil {
		return nil
	}
	out := new(PDFailureMember)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in PDLabelPropertyConfig) DeepCopyInto(out *PDLabelPropertyConfig) {
	{
		in := &in
		*out = make(PDLabelPropertyConfig, len(*in))
		for key, val := range *in {
			var outVal []PDStoreLabel
			if val == nil {
				(*out)[key] = nil
			} else {
				in, out := &val, &outVal
				*out = make(PDStoreLabels, len(*in))
				for i := range *in {
					(*in)[i].DeepCopyInto(&(*out)[i])
				}
			}
			(*out)[key] = outVal
		}
		return
	}
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PDLabelPropertyConfig.
func (in PDLabelPropertyConfig) DeepCopy() PDLabelPropertyConfig {
	if in == nil {
		return nil
	}
	out := new(PDLabelPropertyConfig)
	in.DeepCopyInto(out)
	return *out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PDLogConfig) DeepCopyInto(out *PDLogConfig) {
	*out = *in
	if in.Level != nil {
		in, out := &in.Level, &out.Level
		*out = new(string)
		**out = **in
	}
	if in.Format != nil {
		in, out := &in.Format, &out.Format
		*out = new(string)
		**out = **in
	}
	if in.DisableTimestamp != nil {
		in, out := &in.DisableTimestamp, &out.DisableTimestamp
		*out = new(bool)
		**out = **in
	}
	if in.File != nil {
		in, out := &in.File, &out.File
		*out = new(FileLogConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.Development != nil {
		in, out := &in.Development, &out.Development
		*out = new(bool)
		**out = **in
	}
	if in.DisableCaller != nil {
		in, out := &in.DisableCaller, &out.DisableCaller
		*out = new(bool)
		**out = **in
	}
	if in.DisableStacktrace != nil {
		in, out := &in.DisableStacktrace, &out.DisableStacktrace
		*out = new(bool)
		**out = **in
	}
	if in.DisableErrorVerbose != nil {
		in, out := &in.DisableErrorVerbose, &out.DisableErrorVerbose
		*out = new(bool)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PDLogConfig.
func (in *PDLogConfig) DeepCopy() *PDLogConfig {
	if in == nil {
		return nil
	}
	out := new(PDLogConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PDMember) DeepCopyInto(out *PDMember) {
	*out = *in
	in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PDMember.
func (in *PDMember) DeepCopy() *PDMember {
	if in == nil {
		return nil
	}
	out := new(PDMember)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PDMetricConfig) DeepCopyInto(out *PDMetricConfig) {
	*out = *in
	if in.PushJob != nil {
		in, out := &in.PushJob, &out.PushJob
		*out = new(string)
		**out = **in
	}
	if in.PushAddress != nil {
		in, out := &in.PushAddress, &out.PushAddress
		*out = new(string)
		**out = **in
	}
	if in.PushInterval != nil {
		in, out := &in.PushInterval, &out.PushInterval
		*out = new(string)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PDMetricConfig.
func (in *PDMetricConfig) DeepCopy() *PDMetricConfig {
	if in == nil {
		return nil
	}
	out := new(PDMetricConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PDNamespaceConfig) DeepCopyInto(out *PDNamespaceConfig) {
	*out = *in
	if in.LeaderScheduleLimit != nil {
		in, out := &in.LeaderScheduleLimit, &out.LeaderScheduleLimit
		*out = new(uint64)
		**out = **in
	}
	if in.RegionScheduleLimit != nil {
		in, out := &in.RegionScheduleLimit, &out.RegionScheduleLimit
		*out = new(uint64)
		**out = **in
	}
	if in.ReplicaScheduleLimit != nil {
		in, out := &in.ReplicaScheduleLimit, &out.ReplicaScheduleLimit
		*out = new(uint64)
		**out = **in
	}
	if in.MergeScheduleLimit != nil {
		in, out := &in.MergeScheduleLimit, &out.MergeScheduleLimit
		*out = new(uint64)
		**out = **in
	}
	if in.HotRegionScheduleLimit != nil {
		in, out := &in.HotRegionScheduleLimit, &out.HotRegionScheduleLimit
		*out = new(uint64)
		**out = **in
	}
	if in.MaxReplicas != nil {
		in, out := &in.MaxReplicas, &out.MaxReplicas
		*out = new(uint64)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PDNamespaceConfig.
func (in *PDNamespaceConfig) DeepCopy() *PDNamespaceConfig {
	if in == nil {
		return nil
	}
	out := new(PDNamespaceConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PDReplicationConfig) DeepCopyInto(out *PDReplicationConfig) {
	*out = *in
	if in.MaxReplicas != nil {
		in, out := &in.MaxReplicas, &out.MaxReplicas
		*out = new(uint64)
		**out = **in
	}
	if in.LocationLabels != nil {
		in, out := &in.LocationLabels, &out.LocationLabels
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	if in.StrictlyMatchLabel != nil {
		in, out := &in.StrictlyMatchLabel, &out.StrictlyMatchLabel
		*out = new(bool)
		**out = **in
	}
	if in.EnablePlacementRules != nil {
		in, out := &in.EnablePlacementRules, &out.EnablePlacementRules
		*out = new(bool)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PDReplicationConfig.
func (in *PDReplicationConfig) DeepCopy() *PDReplicationConfig {
	if in == nil {
		return nil
	}
	out := new(PDReplicationConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PDScheduleConfig) DeepCopyInto(out *PDScheduleConfig) {
	*out = *in
	if in.MaxSnapshotCount != nil {
		in, out := &in.MaxSnapshotCount, &out.MaxSnapshotCount
		*out = new(uint64)
		**out = **in
	}
	if in.MaxPendingPeerCount != nil {
		in, out := &in.MaxPendingPeerCount, &out.MaxPendingPeerCount
		*out = new(uint64)
		**out = **in
	}
	if in.MaxMergeRegionSize != nil {
		in, out := &in.MaxMergeRegionSize, &out.MaxMergeRegionSize
		*out = new(uint64)
		**out = **in
	}
	if in.MaxMergeRegionKeys != nil {
		in, out := &in.MaxMergeRegionKeys, &out.MaxMergeRegionKeys
		*out = new(uint64)
		**out = **in
	}
	if in.SplitMergeInterval != nil {
		in, out := &in.SplitMergeInterval, &out.SplitMergeInterval
		*out = new(string)
		**out = **in
	}
	if in.PatrolRegionInterval != nil {
		in, out := &in.PatrolRegionInterval, &out.PatrolRegionInterval
		*out = new(string)
		**out = **in
	}
	if in.MaxStoreDownTime != nil {
		in, out := &in.MaxStoreDownTime, &out.MaxStoreDownTime
		*out = new(string)
		**out = **in
	}
	if in.LeaderScheduleLimit != nil {
		in, out := &in.LeaderScheduleLimit, &out.LeaderScheduleLimit
		*out = new(uint64)
		**out = **in
	}
	if in.RegionScheduleLimit != nil {
		in, out := &in.RegionScheduleLimit, &out.RegionScheduleLimit
		*out = new(uint64)
		**out = **in
	}
	if in.ReplicaScheduleLimit != nil {
		in, out := &in.ReplicaScheduleLimit, &out.ReplicaScheduleLimit
		*out = new(uint64)
		**out = **in
	}
	if in.MergeScheduleLimit != nil {
		in, out := &in.MergeScheduleLimit, &out.MergeScheduleLimit
		*out = new(uint64)
		**out = **in
	}
	if in.HotRegionScheduleLimit != nil {
		in, out := &in.HotRegionScheduleLimit, &out.HotRegionScheduleLimit
		*out = new(uint64)
		**out = **in
	}
	if in.HotRegionCacheHitsThreshold != nil {
		in, out := &in.HotRegionCacheHitsThreshold, &out.HotRegionCacheHitsThreshold
		*out = new(uint64)
		**out = **in
	}
	if in.TolerantSizeRatio != nil {
		in, out := &in.TolerantSizeRatio, &out.TolerantSizeRatio
		*out = new(float64)
		**out = **in
	}
	if in.LowSpaceRatio != nil {
		in, out := &in.LowSpaceRatio, &out.LowSpaceRatio
		*out = new(float64)
		**out = **in
	}
	if in.HighSpaceRatio != nil {
		in, out := &in.HighSpaceRatio, &out.HighSpaceRatio
		*out = new(float64)
		**out = **in
	}
	if in.DisableLearner != nil {
		in, out := &in.DisableLearner, &out.DisableLearner
		*out = new(bool)
		**out = **in
	}
	if in.DisableRemoveDownReplica != nil {
		in, out := &in.DisableRemoveDownReplica, &out.DisableRemoveDownReplica
		*out = new(bool)
		**out = **in
	}
	if in.DisableReplaceOfflineReplica != nil {
		in, out := &in.DisableReplaceOfflineReplica, &out.DisableReplaceOfflineReplica
		*out = new(bool)
		**out = **in
	}
	if in.DisableMakeUpReplica != nil {
		in, out := &in.DisableMakeUpReplica, &out.DisableMakeUpReplica
		*out = new(bool)
		**out = **in
	}
	if in.DisableRemoveExtraReplica != nil {
		in, out := &in.DisableRemoveExtraReplica, &out.DisableRemoveExtraReplica
		*out = new(bool)
		**out = **in
	}
	if in.DisableLocationReplacement != nil {
		in, out := &in.DisableLocationReplacement, &out.DisableLocationReplacement
		*out = new(bool)
		**out = **in
	}
	if in.DisableNamespaceRelocation != nil {
		in, out := &in.DisableNamespaceRelocation, &out.DisableNamespaceRelocation
		*out = new(bool)
		**out = **in
	}
	if in.Schedulers != nil {
		in, out := &in.Schedulers, &out.Schedulers
		*out = make(PDSchedulerConfigs, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.SchedulersPayload != nil {
		in, out := &in.SchedulersPayload, &out.SchedulersPayload
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	if in.EnableOneWayMerge != nil {
		in, out := &in.EnableOneWayMerge, &out.EnableOneWayMerge
		*out = new(bool)
		**out = **in
	}
	if in.EnableCrossTableMerge != nil {
		in, out := &in.EnableCrossTableMerge, &out.EnableCrossTableMerge
		*out = new(bool)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PDScheduleConfig.
func (in *PDScheduleConfig) DeepCopy() *PDScheduleConfig {
	if in == nil {
		return nil
	}
	out := new(PDScheduleConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PDSchedulerConfig) DeepCopyInto(out *PDSchedulerConfig) {
	*out = *in
	if in.Type != nil {
		in, out := &in.Type, &out.Type
		*out = new(string)
		**out = **in
	}
	if in.Args != nil {
		in, out := &in.Args, &out.Args
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	if in.Disable != nil {
		in, out := &in.Disable, &out.Disable
		*out = new(bool)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PDSchedulerConfig.
func (in *PDSchedulerConfig) DeepCopy() *PDSchedulerConfig {
	if in == nil {
		return nil
	}
	out := new(PDSchedulerConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in PDSchedulerConfigs) DeepCopyInto(out *PDSchedulerConfigs) {
	{
		in := &in
		*out = make(PDSchedulerConfigs, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
		return
	}
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PDSchedulerConfigs.
func (in PDSchedulerConfigs) DeepCopy() PDSchedulerConfigs {
	if in == nil {
		return nil
	}
	out := new(PDSchedulerConfigs)
	in.DeepCopyInto(out)
	return *out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PDSecurityConfig) DeepCopyInto(out *PDSecurityConfig) {
	*out = *in
	if in.CAPath != nil {
		in, out := &in.CAPath, &out.CAPath
		*out = new(string)
		**out = **in
	}
	if in.CertPath != nil {
		in, out := &in.CertPath, &out.CertPath
		*out = new(string)
		**out = **in
	}
	if in.KeyPath != nil {
		in, out := &in.KeyPath, &out.KeyPath
		*out = new(string)
		**out = **in
	}
	if in.CertAllowedCN != nil {
		in, out := &in.CertAllowedCN, &out.CertAllowedCN
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PDSecurityConfig.
func (in *PDSecurityConfig) DeepCopy() *PDSecurityConfig {
	if in == nil {
		return nil
	}
	out := new(PDSecurityConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PDServerConfig) DeepCopyInto(out *PDServerConfig) {
	*out = *in
	if in.UseRegionStorage != nil {
		in, out := &in.UseRegionStorage, &out.UseRegionStorage
		*out = new(bool)
		**out = **in
	}
	if in.MetricStorage != nil {
		in, out := &in.MetricStorage, &out.MetricStorage
		*out = new(string)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PDServerConfig.
func (in *PDServerConfig) DeepCopy() *PDServerConfig {
	if in == nil {
		return nil
	}
	out := new(PDServerConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PDSpec) DeepCopyInto(out *PDSpec) {
	*out = *in
	in.ComponentSpec.DeepCopyInto(&out.ComponentSpec)
	in.ResourceRequirements.DeepCopyInto(&out.ResourceRequirements)
	if in.Service != nil {
		in, out := &in.Service, &out.Service
		*out = new(ServiceSpec)
		(*in).DeepCopyInto(*out)
	}
	if in.MaxFailoverCount != nil {
		in, out := &in.MaxFailoverCount, &out.MaxFailoverCount
		*out = new(int32)
		**out = **in
	}
	if in.StorageClassName != nil {
		in, out := &in.StorageClassName, &out.StorageClassName
		*out = new(string)
		**out = **in
	}
	if in.StorageVolumes != nil {
		in, out := &in.StorageVolumes, &out.StorageVolumes
		*out = make([]StorageVolume, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.Config != nil {
		in, out := &in.Config, &out.Config
		*out = new(PDConfigWraper)
		(*in).DeepCopyInto(*out)
	}
	if in.TLSClientSecretName != nil {
		in, out := &in.TLSClientSecretName, &out.TLSClientSecretName
		*out = new(string)
		**out = **in
	}
	if in.EnableDashboardInternalProxy != nil {
		in, out := &in.EnableDashboardInternalProxy, &out.EnableDashboardInternalProxy
		*out = new(bool)
		**out = **in
	}
	if in.MountClusterClientSecret != nil {
		in, out := &in.MountClusterClientSecret, &out.MountClusterClientSecret
		*out = new(bool)
		**out = **in
	}
	if in.EnableConfigRollback != nil {
		in, out := &in.EnableConfigRollback, &out.EnableConfigRollback
		*out = new(bool)
		**out = **in
	}
	if in.CanaryUpgrade != nil {
		in, out := &in.CanaryUpgrade, &out.CanaryUpgrade
		*out = new(CanaryUpgrade)
		(*in).DeepCopyInto(*out)
	}
	if in.GroupName != nil {
		in, out := &in.GroupName, &out.GroupName
		*out = new(string)
		**out = **in
	}
	if in.EnableUpgradeInNonReadyStates != nil {
		in, out := &in.EnableUpgradeInNonReadyStates, &out.EnableUpgradeInNonReadyStates
		*out = new(bool)
		**out = **in
	}
	if in.LeaderPriority != nil {
		in, out := &in.LeaderPriority, &out.LeaderPriority
		*out = new(int32)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PDSpec.
func (in *PDSpec) DeepCopy() *PDSpec {
	if in == nil {
		return nil
	}
	out := new(PDSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PDStatus) DeepCopyInto(out *PDStatus) {
	*out = *in
	if in.StatefulSet != nil {
		in, out := &in.StatefulSet, &out.StatefulSet
		*out = new(appsv1.StatefulSetStatus)
		(*in).DeepCopyInto(*out)
	}
	if in.Members != nil {
		in, out := &in.Members, &out.Members
		*out = make(map[string]PDMember, len(*in))
		for key, val := range *in {
			(*out)[key] = *val.DeepCopy()
		}
	}
	if in.PeerMembers != nil {
		in, out := &in.PeerMembers, &out.PeerMembers
		*out = make(map[string]PDMember, len(*in))
		for key, val := range *in {
			(*out)[key] = *val.DeepCopy()
		}
	}
	in.Leader.DeepCopyInto(&out.Leader)
	if in.FailureMembers != nil {
		in, out := &in.FailureMembers, &out.FailureMembers
		*out = make(map[string]PDFailureMember, len(*in))
		for key, val := range *in {
			(*out)[key] = *val.DeepCopy()
		}
	}
	if in.UnjoinedMembers != nil {
		in, out := &in.UnjoinedMembers, &out.UnjoinedMembers
		*out = make(map[string]UnjoinedMember, len(*in))
		for key, val := range *in {
			(*out)[key] = *val.DeepCopy()
		}
	}
	if in.AppliedConfig != nil {
		in, out := &in.AppliedConfig, &out.AppliedConfig
		*out = new(AppliedConfig)
		**out = **in
	}
	if in.Volumes != nil {
		in, out := &in.Volumes, &out.Volumes
		*out = make(map[StorageVolumeName]*StorageVolumeStatus, len(*in))
		for key, val := range *in {
			var outVal *StorageVolumeStatus
			if val == nil {
				(*out)[key] = nil
			} else {
				in, out := &val, &outVal
				*out = new(StorageVolumeStatus)
				(*in).DeepCopyInto(*out)
			}
			(*out)[key] = outVal
		}
	}
	if in.Conditions != nil {
		in, out := &in.Conditions, &out.Conditions
		*out = make([]metav1.Condition, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.Groups != nil {
		in, out := &in.Groups, &out.Groups
		*out = make(map[string]TidbClusterGroup, len(*in))
		for key, val := range *in {
			(*out)[key] = *val.DeepCopy()
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PDStatus.
func (in *PDStatus) DeepCopy() *PDStatus {
	if in == nil {
		return nil
	}
	out := new(PDStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PDStoreLabel) DeepCopyInto(out *PDStoreLabel) {
	*out = *in
	if in.Key != nil {
		in, out := &in.Key, &out.Key
		*out = new(string)
		**out = **in
	}
	if in.Value != nil {
		in, out := &in.Value, &out.Value
		*out = new(string)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PDStoreLabel.
func (in *PDStoreLabel) DeepCopy() *PDStoreLabel {
	if in == nil {
		return nil
	}
	out := new(PDStoreLabel)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in PDStoreLabels) DeepCopyInto(out *PDStoreLabels) {
	{
		in := &in
		*out = make(PDStoreLabels, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
		return
	}
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PDStoreLabels.
func (in PDStoreLabels) DeepCopy() PDStoreLabels {
	if in == nil {
		return nil
	}
	out := new(PDStoreLabels)
	in.DeepCopyInto(out)
	return *out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Performance) DeepCopyInto(out *Performance) {
	*out = *in
	if in.MaxProcs != nil {
		in, out := &in.MaxProcs, &out.MaxProcs
		*out = new(uint)
		**out = **in
	}
	if in.MaxMemory != nil {
		in, out := &in.MaxMemory, &out.MaxMemory
		*out = new(uint64)
		**out = **in
	}
	if in.StatsLease != nil {
		in, out := &in.StatsLease, &out.StatsLease
		*out = new(string)
		**out = **in
	}
	if in.StmtCountLimit != nil {
		in, out := &in.StmtCountLimit, &out.StmtCountLimit
		*out = new(uint)
		**out = **in
	}
	if in.FeedbackProbability != nil {
		in, out := &in.FeedbackProbability, &out.FeedbackProbability
		*out = new(float64)
		**out = **in
	}
	if in.QueryFeedbackLimit != nil {
		in, out := &in.QueryFeedbackLimit, &out.QueryFeedbackLimit
		*out = new(uint)
		**out = **in
	}
	if in.PseudoEstimateRatio != nil {
		in, out := &in.PseudoEstimateRatio, &out.PseudoEstimateRatio
		*out = new(float64)
		**out = **in
	}
	if in.ForcePriority != nil {
		in, out := &in.ForcePriority, &out.ForcePriority
		*out = new(string)
		**out = **in
	}
	if in.BindInfoLease != nil {
		in, out := &in.BindInfoLease, &out.BindInfoLease
		*out = new(string)
		**out = **in
	}
	if in.TxnTotalSizeLimit != nil {
		in, out := &in.TxnTotalSizeLimit, &out.TxnTotalSizeLimit
		*out = new(uint64)
		**out = **in
	}
	if in.TCPKeepAlive != nil {
		in, out := &in.TCPKeepAlive, &out.TCPKeepAlive
		*out = new(bool)
		**out = **in
	}
	if in.CrossJoin != nil {
		in, out := &in.CrossJoin, &out.CrossJoin
		*out = new(bool)
		**out = **in
	}
	if in.RunAutoAnalyze != nil {
		in, out := &in.RunAutoAnalyze, &out.RunAutoAnalyze
		*out = new(bool)
		**out = **in
	}
	if in.DistinctAggPushDown != nil {
		in, out := &in.DistinctAggPushDown, &out.DistinctAggPushDown
		*out = new(bool)
		**out = **in
	}
	if in.CommitterConcurrency != nil {
		in, out := &in.CommitterConcurrency, &out.CommitterConcurrency
		*out = new(int)
		**out = **in
	}
	if in.MaxTxnTTL != nil {
		in, out := &in.MaxTxnTTL, &out.MaxTxnTTL
		*out = new(uint64)
		**out = **in
	}
	if in.TxnEntryCountLimit != nil {
		in, out := &in.TxnEntryCountLimit, &out.TxnEntryCountLimit
		*out = new(uint64)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Performance.
func (in *Performance) DeepCopy() *Performance {
	if in == nil {
		return nil
	}
	out := new(Performance)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PessimisticTxn) DeepCopyInto(out *PessimisticTxn) {
	*out = *in
	if in.Enable != nil {
		in, out := &in.Enable, &out.Enable
		*out = new(bool)
		**out = **in
	}
	if in.MaxRetryCount != nil {
		in, out := &in.MaxRetryCount, &out.MaxRetryCount
		*out = new(uint)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PessimisticTxn.
func (in *PessimisticTxn) DeepCopy() *PessimisticTxn {
	if in == nil {
		return nil
	}
	out := new(PessimisticTxn)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PlanCache) DeepCopyInto(out *PlanCache) {
	*out = *in
	if in.Enabled != nil {
		in, out := &in.Enabled, &out.Enabled
		*out = new(bool)
		**out = **in
	}
	if in.Capacity != nil {
		in, out := &in.Capacity, &out.Capacity
		*out = new(uint)
		**out = **in
	}
	if in.Shards != nil {
		in, out := &in.Shards, &out.Shards
		*out = new(uint)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PlanCache.
func (in *PlanCache) DeepCopy() *PlanCache {
	if in == nil {
		return nil
	}
	out := new(PlanCache)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Plugin) DeepCopyInto(out *Plugin) {
	*out = *in
	if in.Dir != nil {
		in, out := &in.Dir, &out.Dir
		*out = new(string)
		**out = **in
	}
	if in.Load != nil {
		in, out := &in.Load, &out.Load
		*out = new(string)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Plugin.
func (in *Plugin) DeepCopy() *Plugin {
	if in == nil {
		return nil
	}
	out := new(Plugin)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PreparedPlanCache) DeepCopyInto(out *PreparedPlanCache) {
	*out = *in
	if in.Enabled != nil {
		in, out := &in.Enabled, &out.Enabled
		*out = new(bool)
		**out = **in
	}
	if in.Capacity != nil {
		in, out := &in.Capacity, &out.Capacity
		*out = new(uint)
		**out = **in
	}
	if in.MemoryGuardRatio != nil {
		in, out := &in.MemoryGuardRatio, &out.MemoryGuardRatio
		*out = new(float64)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PreparedPlanCache.
func (in *PreparedPlanCache) DeepCopy() *PreparedPlanCache {
	if in == nil {
		return nil
	}
	out := new(PreparedPlanCache)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Probe) DeepCopyInto(out *Probe) {
	*out = *in
	if in.Type != nil {
		in, out := &in.Type, &out.Type
		*out = new(string)
		**out = **in
	}
	if in.InitialDelaySeconds != nil {
		in, out := &in.InitialDelaySeconds, &out.InitialDelaySeconds
		*out = new(int32)
		**out = **in
	}
	if in.PeriodSeconds != nil {
		in, out := &in.PeriodSeconds, &out.PeriodSeconds
		*out = new(int32)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Probe.
func (in *Probe) DeepCopy() *Probe {
	if in == nil {
		return nil
	}
	out := new(Probe)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Profile) DeepCopyInto(out *Profile) {
	*out = *in
	if in.Readonly != nil {
		in, out := &in.Readonly, &out.Readonly
		*out = new(int32)
		**out = **in
	}
	if in.MaxMemoryUsage != nil {
		in, out := &in.MaxMemoryUsage, &out.MaxMemoryUsage
		*out = new(int64)
		**out = **in
	}
	if in.UseUncompressedCache != nil {
		in, out := &in.UseUncompressedCache, &out.UseUncompressedCache
		*out = new(int32)
		**out = **in
	}
	if in.LoadBalancing != nil {
		in, out := &in.LoadBalancing, &out.LoadBalancing
		*out = new(string)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Profile.
func (in *Profile) DeepCopy() *Profile {
	if in == nil {
		return nil
	}
	out := new(Profile)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Progress) DeepCopyInto(out *Progress) {
	*out = *in
	in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Progress.
func (in *Progress) DeepCopy() *Progress {
	if in == nil {
		return nil
	}
	out := new(Progress)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PrometheusConfiguration) DeepCopyInto(out *PrometheusConfiguration) {
	*out = *in
	if in.ConfigMapRef != nil {
		in, out := &in.ConfigMapRef, &out.ConfigMapRef
		*out = new(ConfigMapRef)
		(*in).DeepCopyInto(*out)
	}
	if in.CommandOptions != nil {
		in, out := &in.CommandOptions, &out.CommandOptions
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	if in.RuleConfigRef != nil {
		in, out := &in.RuleConfigRef, &out.RuleConfigRef
		*out = new(ConfigMapRef)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrometheusConfiguration.
func (in *PrometheusConfiguration) DeepCopy() *PrometheusConfiguration {
	if in == nil {
		return nil
	}
	out := new(PrometheusConfiguration)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PrometheusReloaderSpec) DeepCopyInto(out *PrometheusReloaderSpec) {
	*out = *in
	in.MonitorContainer.DeepCopyInto(&out.MonitorContainer)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrometheusReloaderSpec.
func (in *PrometheusReloaderSpec) DeepCopy() *PrometheusReloaderSpec {
	if in == nil {
		return nil
	}
	out := new(PrometheusReloaderSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PrometheusSpec) DeepCopyInto(out *PrometheusSpec) {
	*out = *in
	in.MonitorContainer.DeepCopyInto(&out.MonitorContainer)
	in.Service.DeepCopyInto(&out.Service)
	if in.RetentionTime != nil {
		in, out := &in.RetentionTime, &out.RetentionTime
		*out = new(string)
		**out = **in
	}
	if in.Ingress != nil {
		in, out := &in.Ingress, &out.Ingress
		*out = new(IngressSpec)
		(*in).DeepCopyInto(*out)
	}
	if in.Config != nil {
		in, out := &in.Config, &out.Config
		*out = new(PrometheusConfiguration)
		(*in).DeepCopyInto(*out)
	}
	if in.RemoteWrite != nil {
		in, out := &in.RemoteWrite, &out.RemoteWrite
		*out = make([]*RemoteWriteSpec, len(*in))
		for i := range *in {
			if (*in)[i] != nil {
				in, out := &(*in)[i], &(*out)[i]
				*out = new(RemoteWriteSpec)
				(*in).DeepCopyInto(*out)
			}
		}
	}
	if in.AdditionalVolumeMounts != nil {
		in, out := &in.AdditionalVolumeMounts, &out.AdditionalVolumeMounts
		*out = make([]v1.VolumeMount, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrometheusSpec.
func (in *PrometheusSpec) DeepCopy() *PrometheusSpec {
	if in == nil {
		return nil
	}
	out := new(PrometheusSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ProxyConfig) DeepCopyInto(out *ProxyConfig) {
	*out = *in
	if in.LogLevel != nil {
		in, out := &in.LogLevel, &out.LogLevel
		*out = new(string)
		**out = **in
	}
	if in.LogFile != nil {
		in, out := &in.LogFile, &out.LogFile
		*out = new(string)
		**out = **in
	}
	if in.LogRotationTimespan != nil {
		in, out := &in.LogRotationTimespan, &out.LogRotationTimespan
		*out = new(string)
		**out = **in
	}
	if in.PanicWhenUnexpectedKeyOrData != nil {
		in, out := &in.PanicWhenUnexpectedKeyOrData, &out.PanicWhenUnexpectedKeyOrData
		*out = new(bool)
		**out = **in
	}
	if in.Server != nil {
		in, out := &in.Server, &out.Server
		*out = new(FlashServerConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.Storage != nil {
		in, out := &in.Storage, &out.Storage
		*out = new(TiKVStorageConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.Raftstore != nil {
		in, out := &in.Raftstore, &out.Raftstore
		*out = new(TiKVRaftstoreConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.Rocksdb != nil {
		in, out := &in.Rocksdb, &out.Rocksdb
		*out = new(TiKVDbConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.Coprocessor != nil {
		in, out := &in.Coprocessor, &out.Coprocessor
		*out = new(TiKVCoprocessorConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.ReadPool != nil {
		in, out := &in.ReadPool, &out.ReadPool
		*out = new(TiKVReadPoolConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.RaftDB != nil {
		in, out := &in.RaftDB, &out.RaftDB
		*out = new(TiKVRaftDBConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.Import != nil {
		in, out := &in.Import, &out.Import
		*out = new(TiKVImportConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.GC != nil {
		in, out := &in.GC, &out.GC
		*out = new(TiKVGCConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.PD != nil {
		in, out := &in.PD, &out.PD
		*out = new(TiKVPDConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.Security != nil {
		in, out := &in.Security, &out.Security
		*out = new(TiKVSecurityConfig)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProxyConfig.
func (in *ProxyConfig) DeepCopy() *ProxyConfig {
	if in == nil {
		return nil
	}
	out := new(ProxyConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ProxyProtocol) DeepCopyInto(out *ProxyProtocol) {
	*out = *in
	if in.Networks != nil {
		in, out := &in.Networks, &out.Networks
		*out = new(string)
		**out = **in
	}
	if in.HeaderTimeout != nil {
		in, out := &in.HeaderTimeout, &out.HeaderTimeout
		*out = new(uint)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProxyProtocol.
func (in *ProxyProtocol) DeepCopy() *ProxyProtocol {
	if in == nil {
		return nil
	}
	out := new(ProxyProtocol)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PumpNodeStatus) DeepCopyInto(out *PumpNodeStatus) {
	*out = *in
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PumpNodeStatus.
func (in *PumpNodeStatus) DeepCopy() *PumpNodeStatus {
	if in == nil {
		return nil
	}
	out := new(PumpNodeStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PumpSpec) DeepCopyInto(out *PumpSpec) {
	*out = *in
	in.ComponentSpec.DeepCopyInto(&out.ComponentSpec)
	in.ResourceRequirements.DeepCopyInto(&out.ResourceRequirements)
	if in.StorageClassName != nil {
		in, out := &in.StorageClassName, &out.StorageClassName
		*out = new(string)
		**out = **in
	}
	if in.Config != nil {
		in, out := &in.Config, &out.Config
		*out = (*in).DeepCopy()
	}
	if in.SetTimeZone != nil {
		in, out := &in.SetTimeZone, &out.SetTimeZone
		*out = new(bool)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PumpSpec.
func (in *PumpSpec) DeepCopy() *PumpSpec {
	if in == nil {
		return nil
	}
	out := new(PumpSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PumpStatus) DeepCopyInto(out *PumpStatus) {
	*out = *in
	if in.StatefulSet != nil {
		in, out := &in.StatefulSet, &out.StatefulSet
		*out = new(appsv1.StatefulSetStatus)
		(*in).DeepCopyInto(*out)
	}
	if in.Members != nil {
		in, out := &in.Members, &out.Members
		*out = make([]*PumpNodeStatus, len(*in))
		for i := range *in {
			if (*in)[i] != nil {
				in, out := &(*in)[i], &(*out)[i]
				*out = new(PumpNodeStatus)
				**out = **in
			}
		}
	}
	if in.Volumes != nil {
		in, out := &in.Volumes, &out.Volumes
		*out = make(map[StorageVolumeName]*StorageVolumeStatus, len(*in))
		for key, val := range *in {
			var outVal *StorageVolumeStatus
			if val == nil {
				(*out)[key] = nil
			} else {
				in, out := &val, &outVal
				*out = new(StorageVolumeStatus)
				(*in).DeepCopyInto(*out)
			}
			(*out)[key] = outVal
		}
	}
	if in.Conditions != nil {
		in, out := &in.Conditions, &out.Conditions
		*out = make([]metav1.Condition, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PumpStatus.
func (in *PumpStatus) DeepCopy() *PumpStatus {
	if in == nil {
		return nil
	}
	out := new(PumpStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *QueueConfig) DeepCopyInto(out *QueueConfig) {
	*out = *in
	if in.BatchSendDeadline != nil {
		in, out := &in.BatchSendDeadline, &out.BatchSendDeadline
		*out = new(time.Duration)
		**out = **in
	}
	if in.MinBackoff != nil {
		in, out := &in.MinBackoff, &out.MinBackoff
		*out = new(time.Duration)
		**out = **in
	}
	if in.MaxBackoff != nil {
		in, out := &in.MaxBackoff, &out.MaxBackoff
		*out = new(time.Duration)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new QueueConfig.
func (in *QueueConfig) DeepCopy() *QueueConfig {
	if in == nil {
		return nil
	}
	out := new(QueueConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Quota) DeepCopyInto(out *Quota) {
	*out = *in
	if in.Interval != nil {
		in, out := &in.Interval, &out.Interval
		*out = new(Interval)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Quota.
func (in *Quota) DeepCopy() *Quota {
	if in == nil {
		return nil
	}
	out := new(Quota)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *RelabelConfig) DeepCopyInto(out *RelabelConfig) {
	*out = *in
	if in.SourceLabels != nil {
		in, out := &in.SourceLabels, &out.SourceLabels
		*out = make(model.LabelNames, len(*in))
		copy(*out, *in)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RelabelConfig.
func (in *RelabelConfig) DeepCopy() *RelabelConfig {
	if in == nil {
		return nil
	}
	out := new(RelabelConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ReloaderSpec) DeepCopyInto(out *ReloaderSpec) {
	*out = *in
	in.MonitorContainer.DeepCopyInto(&out.MonitorContainer)
	in.Service.DeepCopyInto(&out.Service)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReloaderSpec.
func (in *ReloaderSpec) DeepCopy() *ReloaderSpec {
	if in == nil {
		return nil
	}
	out := new(ReloaderSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *RemoteWriteSpec) DeepCopyInto(out *RemoteWriteSpec) {
	*out = *in
	if in.RemoteTimeout != nil {
		in, out := &in.RemoteTimeout, &out.RemoteTimeout
		*out = new(model.Duration)
		**out = **in
	}
	if in.WriteRelabelConfigs != nil {
		in, out := &in.WriteRelabelConfigs, &out.WriteRelabelConfigs
		*out = make([]RelabelConfig, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.BasicAuth != nil {
		in, out := &in.BasicAuth, &out.BasicAuth
		*out = new(BasicAuth)
		(*in).DeepCopyInto(*out)
	}
	if in.TLSConfig != nil {
		in, out := &in.TLSConfig, &out.TLSConfig
		*out = new(TLSConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.ProxyURL != nil {
		in, out := &in.ProxyURL, &out.ProxyURL
		*out = new(string)
		**out = **in
	}
	if in.QueueConfig != nil {
		in, out := &in.QueueConfig, &out.QueueConfig
		*out = new(QueueConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.MetadataConfig != nil {
		in, out := &in.MetadataConfig, &out.MetadataConfig
		*out = new(MetadataConfig)
		**out = **in
	}
	if in.Headers != nil {
		in, out := &in.Headers, &out.Headers
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RemoteWriteSpec.
func (in *RemoteWriteSpec) DeepCopy() *RemoteWriteSpec {
	if in == nil {
		return nil
	}
	out := new(RemoteWriteSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ResourceUsage) DeepCopyInto(out *ResourceUsage) {
	*out = *in
	in.UpdateTime.DeepCopyInto(&out.UpdateTime)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceUsage.
func (in *ResourceUsage) DeepCopy() *ResourceUsage {
	if in == nil {
		return nil
	}
	out := new(ResourceUsage)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ResourceUsageStatus) DeepCopyInto(out *ResourceUsageStatus) {
	*out = *in
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceUsageStatus.
func (in *ResourceUsageStatus) DeepCopy() *ResourceUsageStatus {
	if in == nil {
		return nil
	}
	out := new(ResourceUsageStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ResourceUsages) DeepCopyInto(out *ResourceUsages) {
	*out = *in
	if in.Current != nil {
		in, out := &in.Current, &out.Current
		*out = new(ResourceUsage)
		(*in).DeepCopyInto(*out)
	}
	if in.Last != nil {
		in, out := &in.Last, &out.Last
		*out = new(ResourceUsage)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceUsages.
func (in *ResourceUsages) DeepCopy() *ResourceUsages {
	if in == nil {
		return nil
	}
	out := new(ResourceUsages)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Restore) DeepCopyInto(out *Restore) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	in.Spec.DeepCopyInto(&out.Spec)
	in.Status.DeepCopyInto(&out.Status)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Restore.
func (in *Restore) DeepCopy() *Restore {
	if in == nil {
		return nil
	}
	out := new(Restore)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *Restore) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *RestoreCondition) DeepCopyInto(out *RestoreCondition) {
	*out = *in
	in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RestoreCondition.
func (in *RestoreCondition) DeepCopy() *RestoreCondition {
	if in == nil {
		return nil
	}
	out := new(RestoreCondition)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *RestoreList) DeepCopyInto(out *RestoreList) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ListMeta.DeepCopyInto(&out.ListMeta)
	if in.Items != nil {
		in, out := &in.Items, &out.Items
		*out = make([]Restore, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RestoreList.
func (in *RestoreList) DeepCopy() *RestoreList {
	if in == nil {
		return nil
	}
	out := new(RestoreList)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *RestoreList) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *RestoreSpec) DeepCopyInto(out *RestoreSpec) {
	*out = *in
	in.ResourceRequirements.DeepCopyInto(&out.ResourceRequirements)
	if in.Env != nil {
		in, out := &in.Env, &out.Env
		*out = make([]v1.EnvVar, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.To != nil {
		in, out := &in.To, &out.To
		*out = new(TiDBAccessConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.TikvGCLifeTime != nil {
		in, out := &in.TikvGCLifeTime, &out.TikvGCLifeTime
		*out = new(string)
		**out = **in
	}
	in.StorageProvider.DeepCopyInto(&out.StorageProvider)
	in.PitrFullBackupStorageProvider.DeepCopyInto(&out.PitrFullBackupStorageProvider)
	if in.StorageClassName != nil {
		in, out := &in.StorageClassName, &out.StorageClassName
		*out = new(string)
		**out = **in
	}
	if in.BR != nil {
		in, out := &in.BR, &out.BR
		*out = new(BRConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.Tolerations != nil {
		in, out := &in.Tolerations, &out.Tolerations
		*out = make([]v1.Toleration, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.Affinity != nil {
		in, out := &in.Affinity, &out.Affinity
		*out = new(v1.Affinity)
		(*in).DeepCopyInto(*out)
	}
	if in.ImagePullSecrets != nil {
		in, out := &in.ImagePullSecrets, &out.ImagePullSecrets
		*out = make([]v1.LocalObjectReference, len(*in))
		copy(*out, *in)
	}
	if in.TableFilter != nil {
		in, out := &in.TableFilter, &out.TableFilter
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	if in.PodSecurityContext != nil {
		in, out := &in.PodSecurityContext, &out.PodSecurityContext
		*out = new(v1.PodSecurityContext)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RestoreSpec.
func (in *RestoreSpec) DeepCopy() *RestoreSpec {
	if in == nil {
		return nil
	}
	out := new(RestoreSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *RestoreStatus) DeepCopyInto(out *RestoreStatus) {
	*out = *in
	in.TimeStarted.DeepCopyInto(&out.TimeStarted)
	in.TimeCompleted.DeepCopyInto(&out.TimeCompleted)
	if in.Conditions != nil {
		in, out := &in.Conditions, &out.Conditions
		*out = make([]RestoreCondition, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.Progresses != nil {
		in, out := &in.Progresses, &out.Progresses
		*out = make([]Progress, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RestoreStatus.
func (in *RestoreStatus) DeepCopy() *RestoreStatus {
	if in == nil {
		return nil
	}
	out := new(RestoreStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *S3StorageProvider) DeepCopyInto(out *S3StorageProvider) {
	*out = *in
	if in.Options != nil {
		in, out := &in.Options, &out.Options
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S3StorageProvider.
func (in *S3StorageProvider) DeepCopy() *S3StorageProvider {
	if in == nil {
		return nil
	}
	out := new(S3StorageProvider)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *SafeTLSConfig) DeepCopyInto(out *SafeTLSConfig) {
	*out = *in
	in.CA.DeepCopyInto(&out.CA)
	in.Cert.DeepCopyInto(&out.Cert)
	if in.KeySecret != nil {
		in, out := &in.KeySecret, &out.KeySecret
		*out = new(v1.SecretKeySelector)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SafeTLSConfig.
func (in *SafeTLSConfig) DeepCopy() *SafeTLSConfig {
	if in == nil {
		return nil
	}
	out := new(SafeTLSConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ScaleInProtection) DeepCopyInto(out *ScaleInProtection) {
	*out = *in
	if in.Enabled != nil {
		in, out := &in.Enabled, &out.Enabled
		*out = new(bool)
		**out = **in
	}
	if in.StorageThreshold != nil {
		in, out := &in.StorageThreshold, &out.StorageThreshold
		*out = new(float64)
		**out = **in
	}
	if in.MinReplicas != nil {
		in, out := &in.MinReplicas, &out.MinReplicas
		*out = new(int32)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScaleInProtection.
func (in *ScaleInProtection) DeepCopy() *ScaleInProtection {
	if in == nil {
		return nil
	}
	out := new(ScaleInProtection)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ScalePolicy) DeepCopyInto(out *ScalePolicy) {
	*out = *in
	if in.ScaleInParallelism != nil {
		in, out := &in.ScaleInParallelism, &out.ScaleInParallelism
		*out = new(int32)
		**out = **in
	}
	if in.ScaleOutParallelism != nil {
		in, out := &in.ScaleOutParallelism, &out.ScaleOutParallelism
		*out = new(int32)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScalePolicy.
func (in *ScalePolicy) DeepCopy() *ScalePolicy {
	if in == nil {
		return nil
	}
	out := new(ScalePolicy)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *SecretOrConfigMap) DeepCopyInto(out *SecretOrConfigMap) {
	*out = *in
	if in.Secret != nil {
		in, out := &in.Secret, &out.Secret
		*out = new(v1.SecretKeySelector)
		(*in).DeepCopyInto(*out)
	}
	if in.ConfigMap != nil {
		in, out := &in.ConfigMap, &out.ConfigMap
		*out = new(v1.ConfigMapKeySelector)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecretOrConfigMap.
func (in *SecretOrConfigMap) DeepCopy() *SecretOrConfigMap {
	if in == nil {
		return nil
	}
	out := new(SecretOrConfigMap)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *SecretRef) DeepCopyInto(out *SecretRef) {
	*out = *in
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecretRef.
func (in *SecretRef) DeepCopy() *SecretRef {
	if in == nil {
		return nil
	}
	out := new(SecretRef)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Security) DeepCopyInto(out *Security) {
	*out = *in
	if in.SkipGrantTable != nil {
		in, out := &in.SkipGrantTable, &out.SkipGrantTable
		*out = new(bool)
		**out = **in
	}
	if in.SSLCA != nil {
		in, out := &in.SSLCA, &out.SSLCA
		*out = new(string)
		**out = **in
	}
	if in.SSLCert != nil {
		in, out := &in.SSLCert, &out.SSLCert
		*out = new(string)
		**out = **in
	}
	if in.SSLKey != nil {
		in, out := &in.SSLKey, &out.SSLKey
		*out = new(string)
		**out = **in
	}
	if in.ClusterSSLCA != nil {
		in, out := &in.ClusterSSLCA, &out.ClusterSSLCA
		*out = new(string)
		**out = **in
	}
	if in.ClusterSSLCert != nil {
		in, out := &in.ClusterSSLCert, &out.ClusterSSLCert
		*out = new(string)
		**out = **in
	}
	if in.ClusterSSLKey != nil {
		in, out := &in.ClusterSSLKey, &out.ClusterSSLKey
		*out = new(string)
		**out = **in
	}
	if in.ClusterVerifyCN != nil {
		in, out := &in.ClusterVerifyCN, &out.ClusterVerifyCN
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Security.
func (in *Security) DeepCopy() *Security {
	if in == nil {
		return nil
	}
	out := new(Security)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Service) DeepCopyInto(out *Service) {
	*out = *in
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Service.
func (in *Service) DeepCopy() *Service {
	if in == nil {
		return nil
	}
	out := new(Service)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ServiceSpec) DeepCopyInto(out *ServiceSpec) {
	*out = *in
	if in.Annotations != nil {
		in, out := &in.Annotations, &out.Annotations
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	if in.Labels != nil {
		in, out := &in.Labels, &out.Labels
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	if in.LoadBalancerIP != nil {
		in, out := &in.LoadBalancerIP, &out.LoadBalancerIP
		*out = new(string)
		**out = **in
	}
	if in.ClusterIP != nil {
		in, out := &in.ClusterIP, &out.ClusterIP
		*out = new(string)
		**out = **in
	}
	if in.PortName != nil {
		in, out := &in.PortName, &out.PortName
		*out = new(string)
		**out = **in
	}
	if in.Port != nil {
		in, out := &in.Port, &out.Port
		*out = new(int32)
		**out = **in
	}
	if in.LoadBalancerSourceRanges != nil {
		in, out := &in.LoadBalancerSourceRanges, &out.LoadBalancerSourceRanges
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceSpec.
func (in *ServiceSpec) DeepCopy() *ServiceSpec {
	if in == nil {
		return nil
	}
	out := new(ServiceSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *SpecReplicasStatus) DeepCopyInto(out *SpecReplicasStatus) {
	*out = *in
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SpecReplicasStatus.
func (in *SpecReplicasStatus) DeepCopy() *SpecReplicasStatus {
	if in == nil {
		return nil
	}
	out := new(SpecReplicasStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Status) DeepCopyInto(out *Status) {
	*out = *in
	if in.MetricsAddr != nil {
		in, out := &in.MetricsAddr, &out.MetricsAddr
		*out = new(string)
		**out = **in
	}
	if in.MetricsInterval != nil {
		in, out := &in.MetricsInterval, &out.MetricsInterval
		*out = new(uint)
		**out = **in
	}
	if in.ReportStatus != nil {
		in, out := &in.ReportStatus, &out.ReportStatus
		*out = new(bool)
		**out = **in
	}
	if in.RecordQPSbyDB != nil {
		in, out := &in.RecordQPSbyDB, &out.RecordQPSbyDB
		*out = new(bool)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Status.
func (in *Status) DeepCopy() *Status {
	if in == nil {
		return nil
	}
	out := new(Status)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *StmtSummary) DeepCopyInto(out *StmtSummary) {
	*out = *in
	if in.Enable != nil {
		in, out := &in.Enable, &out.Enable
		*out = new(bool)
		**out = **in
	}
	if in.EnableInternalQuery != nil {
		in, out := &in.EnableInternalQuery, &out.EnableInternalQuery
		*out = new(bool)
		**out = **in
	}
	if in.MaxStmtCount != nil {
		in, out := &in.MaxStmtCount, &out.MaxStmtCount
		*out = new(uint)
		**out = **in
	}
	if in.MaxSQLLength != nil {
		in, out := &in.MaxSQLLength, &out.MaxSQLLength
		*out = new(uint)
		**out = **in
	}
	if in.RefreshInterval != nil {
		in, out := &in.RefreshInterval, &out.RefreshInterval
		*out = new(int)
		**out = **in
	}
	if in.HistorySize != nil {
		in, out := &in.HistorySize, &out.HistorySize
		*out = new(int)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StmtSummary.
func (in *StmtSummary) DeepCopy() *StmtSummary {
	if in == nil {
		return nil
	}
	out := new(StmtSummary)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *StorageClaim) DeepCopyInto(out *StorageClaim) {
	*out = *in
	in.Resources.DeepCopyInto(&out.Resources)
	if in.StorageClassName != nil {
		in, out := &in.StorageClassName, &out.StorageClassName
		*out = new(string)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageClaim.
func (in *StorageClaim) DeepCopy() *StorageClaim {
	if in == nil {
		return nil
	}
	out := new(StorageClaim)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *StorageProvider) DeepCopyInto(out *StorageProvider) {
	*out = *in
	if in.S3 != nil {
		in, out := &in.S3, &out.S3
		*out = new(S3StorageProvider)
		(*in).DeepCopyInto(*out)
	}
	if in.Gcs != nil {
		in, out := &in.Gcs, &out.Gcs
		*out = new(GcsStorageProvider)
		**out = **in
	}
	if in.Azblob != nil {
		in, out := &in.Azblob, &out.Azblob
		*out = new(AzblobStorageProvider)
		**out = **in
	}
	if in.Local != nil {
		in, out := &in.Local, &out.Local
		*out = new(LocalStorageProvider)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageProvider.
func (in *StorageProvider) DeepCopy() *StorageProvider {
	if in == nil {
		return nil
	}
	out := new(StorageProvider)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *StorageVolume) DeepCopyInto(out *StorageVolume) {
	*out = *in
	if in.StorageClassName != nil {
		in, out := &in.StorageClassName, &out.StorageClassName
		*out = new(string)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageVolume.
func (in *StorageVolume) DeepCopy() *StorageVolume {
	if in == nil {
		return nil
	}
	out := new(StorageVolume)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *StorageVolumeStatus) DeepCopyInto(out *StorageVolumeStatus) {
	*out = *in
	in.ObservedStorageVolumeStatus.DeepCopyInto(&out.ObservedStorageVolumeStatus)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StorageVolumeStatus.
func (in *StorageVolumeStatus) DeepCopy() *StorageVolumeStatus {
	if in == nil {
		return nil
	}
	out := new(StorageVolumeStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *StoreLimit) DeepCopyInto(out *StoreLimit) {
	*out = *in
	if in.Enabled != nil {
		in, out := &in.Enabled, &out.Enabled
		*out = new(bool)
		**out = **in
	}
	if in.UnbalanceThreshold != nil {
		in, out := &in.UnbalanceThreshold, &out.UnbalanceThreshold
		*out = new(float64)
		**out = **in
	}
	if in.NormalRate != nil {
		in, out := &in.NormalRate, &out.NormalRate
		*out = new(float64)
		**out = **in
	}
	if in.ScalingInRate != nil {
		in, out := &in.ScalingInRate, &out.ScalingInRate
		*out = new(float64)
		**out = **in
	}
	if in.ScalingOutRate != nil {
		in, out := &in.ScalingOutRate, &out.ScalingOutRate
		*out = new(float64)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StoreLimit.
func (in *StoreLimit) DeepCopy() *StoreLimit {
	if in == nil {
		return nil
	}
	out := new(StoreLimit)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *SuspendAction) DeepCopyInto(out *SuspendAction) {
	*out = *in
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SuspendAction.
func (in *SuspendAction) DeepCopy() *SuspendAction {
	if in == nil {
		return nil
	}
	out := new(SuspendAction)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TLSCluster) DeepCopyInto(out *TLSCluster) {
	*out = *in
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TLSCluster.
func (in *TLSCluster) DeepCopy() *TLSCluster {
	if in == nil {
		return nil
	}
	out := new(TLSCluster)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TLSConfig) DeepCopyInto(out *TLSConfig) {
	*out = *in
	in.SafeTLSConfig.DeepCopyInto(&out.SafeTLSConfig)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TLSConfig.
func (in *TLSConfig) DeepCopy() *TLSConfig {
	if in == nil {
		return nil
	}
	out := new(TLSConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ThanosSpec) DeepCopyInto(out *ThanosSpec) {
	*out = *in
	in.MonitorContainer.DeepCopyInto(&out.MonitorContainer)
	if in.ObjectStorageConfig != nil {
		in, out := &in.ObjectStorageConfig, &out.ObjectStorageConfig
		*out = new(v1.SecretKeySelector)
		(*in).DeepCopyInto(*out)
	}
	if in.ObjectStorageConfigFile != nil {
		in, out := &in.ObjectStorageConfigFile, &out.ObjectStorageConfigFile
		*out = new(string)
		**out = **in
	}
	if in.TracingConfig != nil {
		in, out := &in.TracingConfig, &out.TracingConfig
		*out = new(v1.SecretKeySelector)
		(*in).DeepCopyInto(*out)
	}
	if in.TracingConfigFile != nil {
		in, out := &in.TracingConfigFile, &out.TracingConfigFile
		*out = new(string)
		**out = **in
	}
	if in.GRPCServerTLSConfig != nil {
		in, out := &in.GRPCServerTLSConfig, &out.GRPCServerTLSConfig
		*out = new(TLSConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.AdditionalVolumeMounts != nil {
		in, out := &in.AdditionalVolumeMounts, &out.AdditionalVolumeMounts
		*out = make([]v1.VolumeMount, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ThanosSpec.
func (in *ThanosSpec) DeepCopy() *ThanosSpec {
	if in == nil {
		return nil
	}
	out := new(ThanosSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiCDCCapture) DeepCopyInto(out *TiCDCCapture) {
	*out = *in
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiCDCCapture.
func (in *TiCDCCapture) DeepCopy() *TiCDCCapture {
	if in == nil {
		return nil
	}
	out := new(TiCDCCapture)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiCDCConfig) DeepCopyInto(out *TiCDCConfig) {
	*out = *in
	if in.Timezone != nil {
		in, out := &in.Timezone, &out.Timezone
		*out = new(string)
		**out = **in
	}
	if in.GCTTL != nil {
		in, out := &in.GCTTL, &out.GCTTL
		*out = new(int32)
		**out = **in
	}
	if in.LogLevel != nil {
		in, out := &in.LogLevel, &out.LogLevel
		*out = new(string)
		**out = **in
	}
	if in.LogFile != nil {
		in, out := &in.LogFile, &out.LogFile
		*out = new(string)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiCDCConfig.
func (in *TiCDCConfig) DeepCopy() *TiCDCConfig {
	if in == nil {
		return nil
	}
	out := new(TiCDCConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiCDCSpec) DeepCopyInto(out *TiCDCSpec) {
	*out = *in
	in.ComponentSpec.DeepCopyInto(&out.ComponentSpec)
	in.ResourceRequirements.DeepCopyInto(&out.ResourceRequirements)
	if in.TLSClientSecretNames != nil {
		in, out := &in.TLSClientSecretNames, &out.TLSClientSecretNames
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	if in.Config != nil {
		in, out := &in.Config, &out.Config
		*out = new(CDCConfigWraper)
		(*in).DeepCopyInto(*out)
	}
	if in.StorageVolumes != nil {
		in, out := &in.StorageVolumes, &out.StorageVolumes
		*out = make([]StorageVolume, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.StorageClassName != nil {
		in, out := &in.StorageClassName, &out.StorageClassName
		*out = new(string)
		**out = **in
	}
	if in.GracefulShutdownTimeout != nil {
		in, out := &in.GracefulShutdownTimeout, &out.GracefulShutdownTimeout
		*out = new(metav1.Duration)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiCDCSpec.
func (in *TiCDCSpec) DeepCopy() *TiCDCSpec {
	if in == nil {
		return nil
	}
	out := new(TiCDCSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiCDCStatus) DeepCopyInto(out *TiCDCStatus) {
	*out = *in
	if in.StatefulSet != nil {
		in, out := &in.StatefulSet, &out.StatefulSet
		*out = new(appsv1.StatefulSetStatus)
		(*in).DeepCopyInto(*out)
	}
	if in.Captures != nil {
		in, out := &in.Captures, &out.Captures
		*out = make(map[string]TiCDCCapture, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	if in.Volumes != nil {
		in, out := &in.Volumes, &out.Volumes
		*out = make(map[StorageVolumeName]*StorageVolumeStatus, len(*in))
		for key, val := range *in {
			var outVal *StorageVolumeStatus
			if val == nil {
				(*out)[key] = nil
			} else {
				in, out := &val, &outVal
				*out = new(StorageVolumeStatus)
				(*in).DeepCopyInto(*out)
			}
			(*out)[key] = outVal
		}
	}
	if in.Conditions != nil {
		in, out := &in.Conditions, &out.Conditions
		*out = make([]metav1.Condition, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiCDCStatus.
func (in *TiCDCStatus) DeepCopy() *TiCDCStatus {
	if in == nil {
		return nil
	}
	out := new(TiCDCStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiDBAccessConfig) DeepCopyInto(out *TiDBAccessConfig) {
	*out = *in
	if in.TLSClientSecretName != nil {
		in, out := &in.TLSClientSecretName, &out.TLSClientSecretName
		*out = new(string)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiDBAccessConfig.
func (in *TiDBAccessConfig) DeepCopy() *TiDBAccessConfig {
	if in == nil {
		return nil
	}
	out := new(TiDBAccessConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiDBConfig) DeepCopyInto(out *TiDBConfig) {
	*out = *in
	if in.Cors != nil {
		in, out := &in.Cors, &out.Cors
		*out = new(string)
		**out = **in
	}
	if in.Socket != nil {
		in, out := &in.Socket, &out.Socket
		*out = new(string)
		**out = **in
	}
	if in.Lease != nil {
		in, out := &in.Lease, &out.Lease
		*out = new(string)
		**out = **in
	}
	if in.RunDDL != nil {
		in, out := &in.RunDDL, &out.RunDDL
		*out = new(bool)
		**out = **in
	}
	if in.SplitTable != nil {
		in, out := &in.SplitTable, &out.SplitTable
		*out = new(bool)
		**out = **in
	}
	if in.TokenLimit != nil {
		in, out := &in.TokenLimit, &out.TokenLimit
		*out = new(uint)
		**out = **in
	}
	if in.OOMUseTmpStorage != nil {
		in, out := &in.OOMUseTmpStorage, &out.OOMUseTmpStorage
		*out = new(bool)
		**out = **in
	}
	if in.TempStoragePath != nil {
		in, out := &in.TempStoragePath, &out.TempStoragePath
		*out = new(string)
		**out = **in
	}
	if in.OOMAction != nil {
		in, out := &in.OOMAction, &out.OOMAction
		*out = new(string)
		**out = **in
	}
	if in.MaxIndexLength != nil {
		in, out := &in.MaxIndexLength, &out.MaxIndexLength
		*out = new(int64)
		**out = **in
	}
	if in.MemQuotaQuery != nil {
		in, out := &in.MemQuotaQuery, &out.MemQuotaQuery
		*out = new(int64)
		**out = **in
	}
	if in.TempStorageQuota != nil {
		in, out := &in.TempStorageQuota, &out.TempStorageQuota
		*out = new(int64)
		**out = **in
	}
	if in.EnableStreaming != nil {
		in, out := &in.EnableStreaming, &out.EnableStreaming
		*out = new(bool)
		**out = **in
	}
	if in.EnableBatchDML != nil {
		in, out := &in.EnableBatchDML, &out.EnableBatchDML
		*out = new(bool)
		**out = **in
	}
	if in.TxnLocalLatches != nil {
		in, out := &in.TxnLocalLatches, &out.TxnLocalLatches
		*out = new(TxnLocalLatches)
		(*in).DeepCopyInto(*out)
	}
	if in.LowerCaseTableNames != nil {
		in, out := &in.LowerCaseTableNames, &out.LowerCaseTableNames
		*out = new(int)
		**out = **in
	}
	if in.Log != nil {
		in, out := &in.Log, &out.Log
		*out = new(Log)
		(*in).DeepCopyInto(*out)
	}
	if in.Security != nil {
		in, out := &in.Security, &out.Security
		*out = new(Security)
		(*in).DeepCopyInto(*out)
	}
	if in.Status != nil {
		in, out := &in.Status, &out.Status
		*out = new(Status)
		(*in).DeepCopyInto(*out)
	}
	if in.Performance != nil {
		in, out := &in.Performance, &out.Performance
		*out = new(Performance)
		(*in).DeepCopyInto(*out)
	}
	if in.PreparedPlanCache != nil {
		in, out := &in.PreparedPlanCache, &out.PreparedPlanCache
		*out = new(PreparedPlanCache)
		(*in).DeepCopyInto(*out)
	}
	if in.OpenTracing != nil {
		in, out := &in.OpenTracing, &out.OpenTracing
		*out = new(OpenTracing)
		(*in).DeepCopyInto(*out)
	}
	if in.ProxyProtocol != nil {
		in, out := &in.ProxyProtocol, &out.ProxyProtocol
		*out = new(ProxyProtocol)
		(*in).DeepCopyInto(*out)
	}
	if in.TiKVClient != nil {
		in, out := &in.TiKVClient, &out.TiKVClient
		*out = new(TiKVClient)
		(*in).DeepCopyInto(*out)
	}
	if in.Binlog != nil {
		in, out := &in.Binlog, &out.Binlog
		*out = new(Binlog)
		(*in).DeepCopyInto(*out)
	}
	if in.CompatibleKillQuery != nil {
		in, out := &in.CompatibleKillQuery, &out.CompatibleKillQuery
		*out = new(bool)
		**out = **in
	}
	if in.Plugin != nil {
		in, out := &in.Plugin, &out.Plugin
		*out = new(Plugin)
		(*in).DeepCopyInto(*out)
	}
	if in.PessimisticTxn != nil {
		in, out := &in.PessimisticTxn, &out.PessimisticTxn
		*out = new(PessimisticTxn)
		(*in).DeepCopyInto(*out)
	}
	if in.CheckMb4ValueInUTF8 != nil {
		in, out := &in.CheckMb4ValueInUTF8, &out.CheckMb4ValueInUTF8
		*out = new(bool)
		**out = **in
	}
	if in.AlterPrimaryKey != nil {
		in, out := &in.AlterPrimaryKey, &out.AlterPrimaryKey
		*out = new(bool)
		**out = **in
	}
	if in.TreatOldVersionUTF8AsUTF8MB4 != nil {
		in, out := &in.TreatOldVersionUTF8AsUTF8MB4, &out.TreatOldVersionUTF8AsUTF8MB4
		*out = new(bool)
		**out = **in
	}
	if in.SplitRegionMaxNum != nil {
		in, out := &in.SplitRegionMaxNum, &out.SplitRegionMaxNum
		*out = new(uint64)
		**out = **in
	}
	if in.StmtSummary != nil {
		in, out := &in.StmtSummary, &out.StmtSummary
		*out = new(StmtSummary)
		(*in).DeepCopyInto(*out)
	}
	if in.RepairMode != nil {
		in, out := &in.RepairMode, &out.RepairMode
		*out = new(bool)
		**out = **in
	}
	if in.RepairTableList != nil {
		in, out := &in.RepairTableList, &out.RepairTableList
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	if in.IsolationRead != nil {
		in, out := &in.IsolationRead, &out.IsolationRead
		*out = new(IsolationRead)
		(*in).DeepCopyInto(*out)
	}
	if in.MaxServerConnections != nil {
		in, out := &in.MaxServerConnections, &out.MaxServerConnections
		*out = new(uint32)
		**out = **in
	}
	if in.NewCollationsEnabledOnFirstBootstrap != nil {
		in, out := &in.NewCollationsEnabledOnFirstBootstrap, &out.NewCollationsEnabledOnFirstBootstrap
		*out = new(bool)
		**out = **in
	}
	if in.Experimental != nil {
		in, out := &in.Experimental, &out.Experimental
		*out = new(Experimental)
		(*in).DeepCopyInto(*out)
	}
	if in.EnableDynamicConfig != nil {
		in, out := &in.EnableDynamicConfig, &out.EnableDynamicConfig
		*out = new(bool)
		**out = **in
	}
	if in.EnableTableLock != nil {
		in, out := &in.EnableTableLock, &out.EnableTableLock
		*out = new(bool)
		**out = **in
	}
	if in.DelayCleanTableLock != nil {
		in, out := &in.DelayCleanTableLock, &out.DelayCleanTableLock
		*out = new(uint64)
		**out = **in
	}
	if in.SkipRegisterToDashboard != nil {
		in, out := &in.SkipRegisterToDashboard, &out.SkipRegisterToDashboard
		*out = new(bool)
		**out = **in
	}
	if in.EnableTelemetry != nil {
		in, out := &in.EnableTelemetry, &out.EnableTelemetry
		*out = new(bool)
		**out = **in
	}
	if in.Labels != nil {
		in, out := &in.Labels, &out.Labels
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiDBConfig.
func (in *TiDBConfig) DeepCopy() *TiDBConfig {
	if in == nil {
		return nil
	}
	out := new(TiDBConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiDBConfigWraper) DeepCopyInto(out *TiDBConfigWraper) {
	*out = *in
	if in.GenericConfig != nil {
		in, out := &in.GenericConfig, &out.GenericConfig
		*out = (*in).DeepCopy()
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiDBConfigWraper.
func (in *TiDBConfigWraper) DeepCopy() *TiDBConfigWraper {
	if in == nil {
		return nil
	}
	out := new(TiDBConfigWraper)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiDBFailureMember) DeepCopyInto(out *TiDBFailureMember) {
	*out = *in
	in.CreatedAt.DeepCopyInto(&out.CreatedAt)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiDBFailureMember.
func (in *TiDBFailureMember) DeepCopy() *TiDBFailureMember {
	if in == nil {
		return nil
	}
	out := new(TiDBFailureMember)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiDBInitializer) DeepCopyInto(out *TiDBInitializer) {
	*out = *in
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiDBInitializer.
func (in *TiDBInitializer) DeepCopy() *TiDBInitializer {
	if in == nil {
		return nil
	}
	out := new(TiDBInitializer)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiDBMember) DeepCopyInto(out *TiDBMember) {
	*out = *in
	in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiDBMember.
func (in *TiDBMember) DeepCopy() *TiDBMember {
	if in == nil {
		return nil
	}
	out := new(TiDBMember)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiDBServiceSpec) DeepCopyInto(out *TiDBServiceSpec) {
	*out = *in
	in.ServiceSpec.DeepCopyInto(&out.ServiceSpec)
	if in.ExternalTrafficPolicy != nil {
		in, out := &in.ExternalTrafficPolicy, &out.ExternalTrafficPolicy
		*out = new(v1.ServiceExternalTrafficPolicyType)
		**out = **in
	}
	if in.ExposeStatus != nil {
		in, out := &in.ExposeStatus, &out.ExposeStatus
		*out = new(bool)
		**out = **in
	}
	if in.MySQLNodePort != nil {
		in, out := &in.MySQLNodePort, &out.MySQLNodePort
		*out = new(int)
		**out = **in
	}
	if in.StatusNodePort != nil {
		in, out := &in.StatusNodePort, &out.StatusNodePort
		*out = new(int)
		**out = **in
	}
	if in.AdditionalPorts != nil {
		in, out := &in.AdditionalPorts, &out.AdditionalPorts
		*out = make([]v1.ServicePort, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiDBServiceSpec.
func (in *TiDBServiceSpec) DeepCopy() *TiDBServiceSpec {
	if in == nil {
		return nil
	}
	out := new(TiDBServiceSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiDBSlowLogTailerSpec) DeepCopyInto(out *TiDBSlowLogTailerSpec) {
	*out = *in
	in.ResourceRequirements.DeepCopyInto(&out.ResourceRequirements)
	if in.Image != nil {
		in, out := &in.Image, &out.Image
		*out = new(string)
		**out = **in
	}
	if in.ImagePullPolicy != nil {
		in, out := &in.ImagePullPolicy, &out.ImagePullPolicy
		*out = new(v1.PullPolicy)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiDBSlowLogTailerSpec.
func (in *TiDBSlowLogTailerSpec) DeepCopy() *TiDBSlowLogTailerSpec {
	if in == nil {
		return nil
	}
	out := new(TiDBSlowLogTailerSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiDBSpec) DeepCopyInto(out *TiDBSpec) {
	*out = *in
	in.ComponentSpec.DeepCopyInto(&out.ComponentSpec)
	in.ResourceRequirements.DeepCopyInto(&out.ResourceRequirements)
	if in.Service != nil {
		in, out := &in.Service, &out.Service
		*out = new(TiDBServiceSpec)
		(*in).DeepCopyInto(*out)
	}
	if in.BinlogEnabled != nil {
		in, out := &in.BinlogEnabled, &out.BinlogEnabled
		*out = new(bool)
		**out = **in
	}
	if in.MaxFailoverCount != nil {
		in, out := &in.MaxFailoverCount, &out.MaxFailoverCount
		*out = new(int32)
		**out = **in
	}
	if in.SeparateSlowLog != nil {
		in, out := &in.SeparateSlowLog, &out.SeparateSlowLog
		*out = new(bool)
		**out = **in
	}
	if in.SlowLogTailer != nil {
		in, out := &in.SlowLogTailer, &out.SlowLogTailer
		*out = new(TiDBSlowLogTailerSpec)
		(*in).DeepCopyInto(*out)
	}
	if in.TLSClient != nil {
		in, out := &in.TLSClient, &out.TLSClient
		*out = new(TiDBTLSClient)
		**out = **in
	}
	if in.TokenBasedAuthEnabled != nil {
		in, out := &in.TokenBasedAuthEnabled, &out.TokenBasedAuthEnabled
		*out = new(bool)
		**out = **in
	}
	if in.Plugins != nil {
		in, out := &in.Plugins, &out.Plugins
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	if in.Config != nil {
		in, out := &in.Config, &out.Config
		*out = new(TiDBConfigWraper)
		(*in).DeepCopyInto(*out)
	}
	if in.Lifecycle != nil {
		in, out := &in.Lifecycle, &out.Lifecycle
		*out = new(v1.Lifecycle)
		(*in).DeepCopyInto(*out)
	}
	if in.StorageVolumes != nil {
		in, out := &in.StorageVolumes, &out.StorageVolumes
		*out = make([]StorageVolume, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.StorageClassName != nil {
		in, out := &in.StorageClassName, &out.StorageClassName
		*out = new(string)
		**out = **in
	}
	if in.Initializer != nil {
		in, out := &in.Initializer, &out.Initializer
		*out = new(TiDBInitializer)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiDBSpec.
func (in *TiDBSpec) DeepCopy() *TiDBSpec {
	if in == nil {
		return nil
	}
	out := new(TiDBSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiDBStatus) DeepCopyInto(out *TiDBStatus) {
	*out = *in
	if in.StatefulSet != nil {
		in, out := &in.StatefulSet, &out.StatefulSet
		*out = new(appsv1.StatefulSetStatus)
		(*in).DeepCopyInto(*out)
	}
	if in.Members != nil {
		in, out := &in.Members, &out.Members
		*out = make(map[string]TiDBMember, len(*in))
		for key, val := range *in {
			(*out)[key] = *val.DeepCopy()
		}
	}
	if in.FailureMembers != nil {
		in, out := &in.FailureMembers, &out.FailureMembers
		*out = make(map[string]TiDBFailureMember, len(*in))
		for key, val := range *in {
			(*out)[key] = *val.DeepCopy()
		}
	}
	if in.PasswordInitialized != nil {
		in, out := &in.PasswordInitialized, &out.PasswordInitialized
		*out = new(bool)
		**out = **in
	}
	if in.Volumes != nil {
		in, out := &in.Volumes, &out.Volumes
		*out = make(map[StorageVolumeName]*StorageVolumeStatus, len(*in))
		for key, val := range *in {
			var outVal *StorageVolumeStatus
			if val == nil {
				(*out)[key] = nil
			} else {
				in, out := &val, &outVal
				*out = new(StorageVolumeStatus)
				(*in).DeepCopyInto(*out)
			}
			(*out)[key] = outVal
		}
	}
	if in.Conditions != nil {
		in, out := &in.Conditions, &out.Conditions
		*out = make([]metav1.Condition, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiDBStatus.
func (in *TiDBStatus) DeepCopy() *TiDBStatus {
	if in == nil {
		return nil
	}
	out := new(TiDBStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiDBTLSClient) DeepCopyInto(out *TiDBTLSClient) {
	*out = *in
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiDBTLSClient.
func (in *TiDBTLSClient) DeepCopy() *TiDBTLSClient {
	if in == nil {
		return nil
	}
	out := new(TiDBTLSClient)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiFlashCommonConfigWraper) DeepCopyInto(out *TiFlashCommonConfigWraper) {
	*out = *in
	if in.GenericConfig != nil {
		in, out := &in.GenericConfig, &out.GenericConfig
		*out = (*in).DeepCopy()
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiFlashCommonConfigWraper.
func (in *TiFlashCommonConfigWraper) DeepCopy() *TiFlashCommonConfigWraper {
	if in == nil {
		return nil
	}
	out := new(TiFlashCommonConfigWraper)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiFlashConfig) DeepCopyInto(out *TiFlashConfig) {
	*out = *in
	if in.CommonConfig != nil {
		in, out := &in.CommonConfig, &out.CommonConfig
		*out = new(CommonConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.ProxyConfig != nil {
		in, out := &in.ProxyConfig, &out.ProxyConfig
		*out = new(ProxyConfig)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiFlashConfig.
func (in *TiFlashConfig) DeepCopy() *TiFlashConfig {
	if in == nil {
		return nil
	}
	out := new(TiFlashConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiFlashConfigWraper) DeepCopyInto(out *TiFlashConfigWraper) {
	*out = *in
	if in.Common != nil {
		in, out := &in.Common, &out.Common
		*out = new(TiFlashCommonConfigWraper)
		(*in).DeepCopyInto(*out)
	}
	if in.Proxy != nil {
		in, out := &in.Proxy, &out.Proxy
		*out = new(TiFlashProxyConfigWraper)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiFlashConfigWraper.
func (in *TiFlashConfigWraper) DeepCopy() *TiFlashConfigWraper {
	if in == nil {
		return nil
	}
	out := new(TiFlashConfigWraper)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiFlashProxyConfigWraper) DeepCopyInto(out *TiFlashProxyConfigWraper) {
	*out = *in
	if in.GenericConfig != nil {
		in, out := &in.GenericConfig, &out.GenericConfig
		*out = (*in).DeepCopy()
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiFlashProxyConfigWraper.
func (in *TiFlashProxyConfigWraper) DeepCopy() *TiFlashProxyConfigWraper {
	if in == nil {
		return nil
	}
	out := new(TiFlashProxyConfigWraper)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiFlashSpec) DeepCopyInto(out *TiFlashSpec) {
	*out = *in
	in.ComponentSpec.DeepCopyInto(&out.ComponentSpec)
	in.ResourceRequirements.DeepCopyInto(&out.ResourceRequirements)
	if in.Privileged != nil {
		in, out := &in.Privileged, &out.Privileged
		*out = new(bool)
		**out = **in
	}
	if in.MaxFailoverCount != nil {
		in, out := &in.MaxFailoverCount, &out.MaxFailoverCount
		*out = new(int32)
		**out = **in
	}
	if in.StorageClaims != nil {
		in, out := &in.StorageClaims, &out.StorageClaims
		*out = make([]StorageClaim, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.Config != nil {
		in, out := &in.Config, &out.Config
		*out = new(TiFlashConfigWraper)
		(*in).DeepCopyInto(*out)
	}
	if in.Initializer != nil {
		in, out := &in.Initializer, &out.Initializer
		*out = new(InitContainerSpec)
		(*in).DeepCopyInto(*out)
	}
	if in.LogTailer != nil {
		in, out := &in.LogTailer, &out.LogTailer
		*out = new(LogTailerSpec)
		(*in).DeepCopyInto(*out)
	}
	if in.Failover != nil {
		in, out := &in.Failover, &out.Failover
		*out = new(Failover)
		(*in).DeepCopyInto(*out)
	}
	in.ScalePolicy.DeepCopyInto(&out.ScalePolicy)
	if in.EnablePVReclaim != nil {
		in, out := &in.EnablePVReclaim, &out.EnablePVReclaim
		*out = new(bool)
		**out = **in
	}
	if in.PVReclaimDelayDuration != nil {
		in, out := &in.PVReclaimDelayDuration, &out.PVReclaimDelayDuration
		*out = new(string)
		**out = **in
	}
	if in.EnableConfigRollback != nil {
		in, out := &in.EnableConfigRollback, &out.EnableConfigRollback
		*out = new(bool)
		**out = **in
	}
	if in.CanaryUpgrade != nil {
		in, out := &in.CanaryUpgrade, &out.CanaryUpgrade
		*out = new(CanaryUpgrade)
		(*in).DeepCopyInto(*out)
	}
	if in.AutoScaling != nil {
		in, out := &in.AutoScaling, &out.AutoScaling
		*out = new(AutoScaling)
		(*in).DeepCopyInto(*out)
	}
	if in.ScaleInProtection != nil {
		in, out := &in.ScaleInProtection, &out.ScaleInProtection
		*out = new(ScaleInProtection)
		(*in).DeepCopyInto(*out)
	}
	if in.ScaleInProtectionForNode != nil {
		in, out := &in.ScaleInProtectionForNode, &out.ScaleInProtectionForNode
		*out = new(bool)
		**out = **in
	}
	if in.StoreLimit != nil {
		in, out := &in.StoreLimit, &out.StoreLimit
		*out = new(StoreLimit)
		(*in).DeepCopyInto(*out)
	}
	if in.GroupName != nil {
		in, out := &in.GroupName, &out.GroupName
		*out = new(string)
		**out = **in
	}
	if in.EnableUpgradeInNonReadyStates != nil {
		in, out := &in.EnableUpgradeInNonReadyStates, &out.EnableUpgradeInNonReadyStates
		*out = new(bool)
		**out = **in
	}
	if in.SupersedingCluster != nil {
		in, out := &in.SupersedingCluster, &out.SupersedingCluster
		*out = new(TidbClusterRef)
		**out = **in
	}
	if in.ComputeNode != nil {
		in, out := &in.ComputeNode, &out.ComputeNode
		*out = new(bool)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiFlashSpec.
func (in *TiFlashSpec) DeepCopy() *TiFlashSpec {
	if in == nil {
		return nil
	}
	out := new(TiFlashSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiFlashStatus) DeepCopyInto(out *TiFlashStatus) {
	*out = *in
	if in.StatefulSet != nil {
		in, out := &in.StatefulSet, &out.StatefulSet
		*out = new(appsv1.StatefulSetStatus)
		(*in).DeepCopyInto(*out)
	}
	if in.Stores != nil {
		in, out := &in.Stores, &out.Stores
		*out = make(map[string]TiKVStore, len(*in))
		for key, val := range *in {
			(*out)[key] = *val.DeepCopy()
		}
	}
	if in.PeerStores != nil {
		in, out := &in.PeerStores, &out.PeerStores
		*out = make(map[string]TiKVStore, len(*in))
		for key, val := range *in {
			(*out)[key] = *val.DeepCopy()
		}
	}
	if in.TombstoneStores != nil {
		in, out := &in.TombstoneStores, &out.TombstoneStores
		*out = make(map[string]TiKVStore, len(*in))
		for key, val := range *in {
			(*out)[key] = *val.DeepCopy()
		}
	}
	if in.FailureStores != nil {
		in, out := &in.FailureStores, &out.FailureStores
		*out = make(map[string]TiKVFailureStore, len(*in))
		for key, val := range *in {
			(*out)[key] = *val.DeepCopy()
		}
	}
	if in.AppliedConfig != nil {
		in, out := &in.AppliedConfig, &out.AppliedConfig
		*out = new(AppliedConfig)
		**out = **in
	}
	if in.Volumes != nil {
		in, out := &in.Volumes, &out.Volumes
		*out = make(map[StorageVolumeName]*StorageVolumeStatus, len(*in))
		for key, val := range *in {
			var outVal *StorageVolumeStatus
			if val == nil {
				(*out)[key] = nil
			} else {
				in, out := &val, &outVal
				*out = new(StorageVolumeStatus)
				(*in).DeepCopyInto(*out)
			}
			(*out)[key] = outVal
		}
	}
	if in.Conditions != nil {
		in, out := &in.Conditions, &out.Conditions
		*out = make([]metav1.Condition, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	out.ResourceUsage = in.ResourceUsage
	in.AutoScaling.DeepCopyInto(&out.AutoScaling)
	out.SpecReplicas = in.SpecReplicas
	if in.Groups != nil {
		in, out := &in.Groups, &out.Groups
		*out = make(map[string]TidbClusterGroup, len(*in))
		for key, val := range *in {
			(*out)[key] = *val.DeepCopy()
		}
	}
	if in.ComputeStores != nil {
		in, out := &in.ComputeStores, &out.ComputeStores
		*out = make(map[string]TiKVStore, len(*in))
		for key, val := range *in {
			(*out)[key] = *val.DeepCopy()
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiFlashStatus.
func (in *TiFlashStatus) DeepCopy() *TiFlashStatus {
	if in == nil {
		return nil
	}
	out := new(TiFlashStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVBackupConfig) DeepCopyInto(out *TiKVBackupConfig) {
	*out = *in
	if in.NumThreads != nil {
		in, out := &in.NumThreads, &out.NumThreads
		*out = new(int64)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVBackupConfig.
func (in *TiKVBackupConfig) DeepCopy() *TiKVBackupConfig {
	if in == nil {
		return nil
	}
	out := new(TiKVBackupConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVBlockCacheConfig) DeepCopyInto(out *TiKVBlockCacheConfig) {
	*out = *in
	if in.Shared != nil {
		in, out := &in.Shared, &out.Shared
		*out = new(bool)
		**out = **in
	}
	if in.Capacity != nil {
		in, out := &in.Capacity, &out.Capacity
		*out = new(string)
		**out = **in
	}
	if in.NumShardBits != nil {
		in, out := &in.NumShardBits, &out.NumShardBits
		*out = new(int64)
		**out = **in
	}
	if in.StrictCapacityLimit != nil {
		in, out := &in.StrictCapacityLimit, &out.StrictCapacityLimit
		*out = new(bool)
		**out = **in
	}
	if in.HighPriPoolRatio != nil {
		in, out := &in.HighPriPoolRatio, &out.HighPriPoolRatio
		*out = new(float64)
		**out = **in
	}
	if in.MemoryAllocator != nil {
		in, out := &in.MemoryAllocator, &out.MemoryAllocator
		*out = new(string)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVBlockCacheConfig.
func (in *TiKVBlockCacheConfig) DeepCopy() *TiKVBlockCacheConfig {
	if in == nil {
		return nil
	}
	out := new(TiKVBlockCacheConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVCfConfig) DeepCopyInto(out *TiKVCfConfig) {
	*out = *in
	if in.BlockSize != nil {
		in, out := &in.BlockSize, &out.BlockSize
		*out = new(string)
		**out = **in
	}
	if in.BlockCacheSize != nil {
		in, out := &in.BlockCacheSize, &out.BlockCacheSize
		*out = new(string)
		**out = **in
	}
	if in.DisableBlockCache != nil {
		in, out := &in.DisableBlockCache, &out.DisableBlockCache
		*out = new(bool)
		**out = **in
	}
	if in.CacheIndexAndFilterBlocks != nil {
		in, out := &in.CacheIndexAndFilterBlocks, &out.CacheIndexAndFilterBlocks
		*out = new(bool)
		**out = **in
	}
	if in.PinL0FilterAndIndexBlocks != nil {
		in, out := &in.PinL0FilterAndIndexBlocks, &out.PinL0FilterAndIndexBlocks
		*out = new(bool)
		**out = **in
	}
	if in.UseBloomFilter != nil {
		in, out := &in.UseBloomFilter, &out.UseBloomFilter
		*out = new(bool)
		**out = **in
	}
	if in.OptimizeFiltersForHits != nil {
		in, out := &in.OptimizeFiltersForHits, &out.OptimizeFiltersForHits
		*out = new(bool)
		**out = **in
	}
	if in.WholeKeyFiltering != nil {
		in, out := &in.WholeKeyFiltering, &out.WholeKeyFiltering
		*out = new(bool)
		**out = **in
	}
	if in.BloomFilterBitsPerKey != nil {
		in, out := &in.BloomFilterBitsPerKey, &out.BloomFilterBitsPerKey
		*out = new(int64)
		**out = **in
	}
	if in.BlockBasedBloomFilter != nil {
		in, out := &in.BlockBasedBloomFilter, &out.BlockBasedBloomFilter
		*out = new(bool)
		**out = **in
	}
	if in.ReadAmpBytesPerBit != nil {
		in, out := &in.ReadAmpBytesPerBit, &out.ReadAmpBytesPerBit
		*out = new(int64)
		**out = **in
	}
	if in.CompressionPerLevel != nil {
		in, out := &in.CompressionPerLevel, &out.CompressionPerLevel
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	if in.WriteBufferSize != nil {
		in, out := &in.WriteBufferSize, &out.WriteBufferSize
		*out = new(string)
		**out = **in
	}
	if in.MaxWriteBufferNumber != nil {
		in, out := &in.MaxWriteBufferNumber, &out.MaxWriteBufferNumber
		*out = new(int64)
		**out = **in
	}
	if in.MinWriteBufferNumberToMerge != nil {
		in, out := &in.MinWriteBufferNumberToMerge, &out.MinWriteBufferNumberToMerge
		*out = new(int64)
		**out = **in
	}
	if in.MaxBytesForLevelBase != nil {
		in, out := &in.MaxBytesForLevelBase, &out.MaxBytesForLevelBase
		*out = new(string)
		**out = **in
	}
	if in.TargetFileSizeBase != nil {
		in, out := &in.TargetFileSizeBase, &out.TargetFileSizeBase
		*out = new(string)
		**out = **in
	}
	if in.Level0FileNumCompactionTrigger != nil {
		in, out := &in.Level0FileNumCompactionTrigger, &out.Level0FileNumCompactionTrigger
		*out = new(int64)
		**out = **in
	}
	if in.Level0SlowdownWritesTrigger != nil {
		in, out := &in.Level0SlowdownWritesTrigger, &out.Level0SlowdownWritesTrigger
		*out = new(int64)
		**out = **in
	}
	if in.Level0StopWritesTrigger != nil {
		in, out := &in.Level0StopWritesTrigger, &out.Level0StopWritesTrigger
		*out = new(int64)
		**out = **in
	}
	if in.MaxCompactionBytes != nil {
		in, out := &in.MaxCompactionBytes, &out.MaxCompactionBytes
		*out = new(string)
		**out = **in
	}
	if in.CompactionPri != nil {
		in, out := &in.CompactionPri, &out.CompactionPri
		*out = new(int64)
		**out = **in
	}
	if in.DynamicLevelBytes != nil {
		in, out := &in.DynamicLevelBytes, &out.DynamicLevelBytes
		*out = new(bool)
		**out = **in
	}
	if in.NumLevels != nil {
		in, out := &in.NumLevels, &out.NumLevels
		*out = new(int64)
		**out = **in
	}
	if in.MaxBytesForLevelMultiplier != nil {
		in, out := &in.MaxBytesForLevelMultiplier, &out.MaxBytesForLevelMultiplier
		*out = new(int64)
		**out = **in
	}
	if in.CompactionStyle != nil {
		in, out := &in.CompactionStyle, &out.CompactionStyle
		*out = new(int64)
		**out = **in
	}
	if in.DisableAutoCompactions != nil {
		in, out := &in.DisableAutoCompactions, &out.DisableAutoCompactions
		*out = new(bool)
		**out = **in
	}
	if in.SoftPendingCompactionBytesLimit != nil {
		in, out := &in.SoftPendingCompactionBytesLimit, &out.SoftPendingCompactionBytesLimit
		*out = new(string)
		**out = **in
	}
	if in.HardPendingCompactionBytesLimit != nil {
		in, out := &in.HardPendingCompactionBytesLimit, &out.HardPendingCompactionBytesLimit
		*out = new(string)
		**out = **in
	}
	if in.ForceConsistencyChecks != nil {
		in, out := &in.ForceConsistencyChecks, &out.ForceConsistencyChecks
		*out = new(bool)
		**out = **in
	}
	if in.PropSizeIndexDistance != nil {
		in, out := &in.PropSizeIndexDistance, &out.PropSizeIndexDistance
		*out = new(int64)
		**out = **in
	}
	if in.PropKeysIndexDistance != nil {
		in, out := &in.PropKeysIndexDistance, &out.PropKeysIndexDistance
		*out = new(int64)
		**out = **in
	}
	if in.EnableDoublySkiplist != nil {
		in, out := &in.EnableDoublySkiplist, &out.EnableDoublySkiplist
		*out = new(bool)
		**out = **in
	}
	if in.Titan != nil {
		in, out := &in.Titan, &out.Titan
		*out = new(TiKVTitanCfConfig)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVCfConfig.
func (in *TiKVCfConfig) DeepCopy() *TiKVCfConfig {
	if in == nil {
		return nil
	}
	out := new(TiKVCfConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVClient) DeepCopyInto(out *TiKVClient) {
	*out = *in
	if in.GrpcConnectionCount != nil {
		in, out := &in.GrpcConnectionCount, &out.GrpcConnectionCount
		*out = new(uint)
		**out = **in
	}
	if in.GrpcKeepAliveTime != nil {
		in, out := &in.GrpcKeepAliveTime, &out.GrpcKeepAliveTime
		*out = new(uint)
		**out = **in
	}
	if in.GrpcKeepAliveTimeout != nil {
		in, out := &in.GrpcKeepAliveTimeout, &out.GrpcKeepAliveTimeout
		*out = new(uint)
		**out = **in
	}
	if in.CommitTimeout != nil {
		in, out := &in.CommitTimeout, &out.CommitTimeout
		*out = new(string)
		**out = **in
	}
	if in.MaxTxnTimeUse != nil {
		in, out := &in.MaxTxnTimeUse, &out.MaxTxnTimeUse
		*out = new(uint)
		**out = **in
	}
	if in.MaxBatchSize != nil {
		in, out := &in.MaxBatchSize, &out.MaxBatchSize
		*out = new(uint)
		**out = **in
	}
	if in.OverloadThreshold != nil {
		in, out := &in.OverloadThreshold, &out.OverloadThreshold
		*out = new(uint)
		**out = **in
	}
	if in.MaxBatchWaitTime != nil {
		in, out := &in.MaxBatchWaitTime, &out.MaxBatchWaitTime
		*out = new(time.Duration)
		**out = **in
	}
	if in.BatchWaitSize != nil {
		in, out := &in.BatchWaitSize, &out.BatchWaitSize
		*out = new(uint)
		**out = **in
	}
	if in.RegionCacheTTL != nil {
		in, out := &in.RegionCacheTTL, &out.RegionCacheTTL
		*out = new(uint)
		**out = **in
	}
	if in.StoreLimit != nil {
		in, out := &in.StoreLimit, &out.StoreLimit
		*out = new(int64)
		**out = **in
	}
	if in.StoreLivenessTimeout != nil {
		in, out := &in.StoreLivenessTimeout, &out.StoreLivenessTimeout
		*out = new(string)
		**out = **in
	}
	if in.CoprCache != nil {
		in, out := &in.CoprCache, &out.CoprCache
		*out = new(CoprocessorCache)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVClient.
func (in *TiKVClient) DeepCopy() *TiKVClient {
	if in == nil {
		return nil
	}
	out := new(TiKVClient)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVConfig) DeepCopyInto(out *TiKVConfig) {
	*out = *in
	if in.LogLevel != nil {
		in, out := &in.LogLevel, &out.LogLevel
		*out = new(string)
		**out = **in
	}
	if in.LogFile != nil {
		in, out := &in.LogFile, &out.LogFile
		*out = new(string)
		**out = **in
	}
	if in.LogFormat != nil {
		in, out := &in.LogFormat, &out.LogFormat
		*out = new(string)
		**out = **in
	}
	if in.SlowLogFile != nil {
		in, out := &in.SlowLogFile, &out.SlowLogFile
		*out = new(string)
		**out = **in
	}
	if in.SlowLogThreshold != nil {
		in, out := &in.SlowLogThreshold, &out.SlowLogThreshold
		*out = new(string)
		**out = **in
	}
	if in.LogRotationTimespan != nil {
		in, out := &in.LogRotationTimespan, &out.LogRotationTimespan
		*out = new(string)
		**out = **in
	}
	if in.LogRotationSize != nil {
		in, out := &in.LogRotationSize, &out.LogRotationSize
		*out = new(string)
		**out = **in
	}
	if in.RefreshConfigInterval != nil {
		in, out := &in.RefreshConfigInterval, &out.RefreshConfigInterval
		*out = new(string)
		**out = **in
	}
	if in.PanicWhenUnexpectedKeyOrData != nil {
		in, out := &in.PanicWhenUnexpectedKeyOrData, &out.PanicWhenUnexpectedKeyOrData
		*out = new(bool)
		**out = **in
	}
	if in.Server != nil {
		in, out := &in.Server, &out.Server
		*out = new(TiKVServerConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.Storage != nil {
		in, out := &in.Storage, &out.Storage
		*out = new(TiKVStorageConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.Raftstore != nil {
		in, out := &in.Raftstore, &out.Raftstore
		*out = new(TiKVRaftstoreConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.Rocksdb != nil {
		in, out := &in.Rocksdb, &out.Rocksdb
		*out = new(TiKVDbConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.Coprocessor != nil {
		in, out := &in.Coprocessor, &out.Coprocessor
		*out = new(TiKVCoprocessorConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.ReadPool != nil {
		in, out := &in.ReadPool, &out.ReadPool
		*out = new(TiKVReadPoolConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.RaftDB != nil {
		in, out := &in.RaftDB, &out.RaftDB
		*out = new(TiKVRaftDBConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.Import != nil {
		in, out := &in.Import, &out.Import
		*out = new(TiKVImportConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.GC != nil {
		in, out := &in.GC, &out.GC
		*out = new(TiKVGCConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.PD != nil {
		in, out := &in.PD, &out.PD
		*out = new(TiKVPDConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.Security != nil {
		in, out := &in.Security, &out.Security
		*out = new(TiKVSecurityConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.TiKVPessimisticTxn != nil {
		in, out := &in.TiKVPessimisticTxn, &out.TiKVPessimisticTxn
		*out = new(TiKVPessimisticTxn)
		(*in).DeepCopyInto(*out)
	}
	if in.Backup != nil {
		in, out := &in.Backup, &out.Backup
		*out = new(TiKVBackupConfig)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVConfig.
func (in *TiKVConfig) DeepCopy() *TiKVConfig {
	if in == nil {
		return nil
	}
	out := new(TiKVConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVConfigWraper) DeepCopyInto(out *TiKVConfigWraper) {
	*out = *in
	if in.GenericConfig != nil {
		in, out := &in.GenericConfig, &out.GenericConfig
		*out = (*in).DeepCopy()
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVConfigWraper.
func (in *TiKVConfigWraper) DeepCopy() *TiKVConfigWraper {
	if in == nil {
		return nil
	}
	out := new(TiKVConfigWraper)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVCoprocessorConfig) DeepCopyInto(out *TiKVCoprocessorConfig) {
	*out = *in
	if in.SplitRegionOnTable != nil {
		in, out := &in.SplitRegionOnTable, &out.SplitRegionOnTable
		*out = new(bool)
		**out = **in
	}
	if in.BatchSplitLimit != nil {
		in, out := &in.BatchSplitLimit, &out.BatchSplitLimit
		*out = new(int64)
		**out = **in
	}
	if in.RegionMaxSize != nil {
		in, out := &in.RegionMaxSize, &out.RegionMaxSize
		*out = new(string)
		**out = **in
	}
	if in.RegionSplitSize != nil {
		in, out := &in.RegionSplitSize, &out.RegionSplitSize
		*out = new(string)
		**out = **in
	}
	if in.RegionMaxKeys != nil {
		in, out := &in.RegionMaxKeys, &out.RegionMaxKeys
		*out = new(int64)
		**out = **in
	}
	if in.RegionSplitKeys != nil {
		in, out := &in.RegionSplitKeys, &out.RegionSplitKeys
		*out = new(int64)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVCoprocessorConfig.
func (in *TiKVCoprocessorConfig) DeepCopy() *TiKVCoprocessorConfig {
	if in == nil {
		return nil
	}
	out := new(TiKVCoprocessorConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVCoprocessorReadPoolConfig) DeepCopyInto(out *TiKVCoprocessorReadPoolConfig) {
	*out = *in
	if in.HighConcurrency != nil {
		in, out := &in.HighConcurrency, &out.HighConcurrency
		*out = new(int64)
		**out = **in
	}
	if in.NormalConcurrency != nil {
		in, out := &in.NormalConcurrency, &out.NormalConcurrency
		*out = new(int64)
		**out = **in
	}
	if in.LowConcurrency != nil {
		in, out := &in.LowConcurrency, &out.LowConcurrency
		*out = new(int64)
		**out = **in
	}
	if in.MaxTasksPerWorkerHigh != nil {
		in, out := &in.MaxTasksPerWorkerHigh, &out.MaxTasksPerWorkerHigh
		*out = new(int64)
		**out = **in
	}
	if in.MaxTasksPerWorkerNormal != nil {
		in, out := &in.MaxTasksPerWorkerNormal, &out.MaxTasksPerWorkerNormal
		*out = new(int64)
		**out = **in
	}
	if in.MaxTasksPerWorkerLow != nil {
		in, out := &in.MaxTasksPerWorkerLow, &out.MaxTasksPerWorkerLow
		*out = new(int64)
		**out = **in
	}
	if in.StackSize != nil {
		in, out := &in.StackSize, &out.StackSize
		*out = new(string)
		**out = **in
	}
	if in.UseUnifiedPool != nil {
		in, out := &in.UseUnifiedPool, &out.UseUnifiedPool
		*out = new(bool)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVCoprocessorReadPoolConfig.
func (in *TiKVCoprocessorReadPoolConfig) DeepCopy() *TiKVCoprocessorReadPoolConfig {
	if in == nil {
		return nil
	}
	out := new(TiKVCoprocessorReadPoolConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVDbConfig) DeepCopyInto(out *TiKVDbConfig) {
	*out = *in
	if in.WalRecoveryMode != nil {
		in, out := &in.WalRecoveryMode, &out.WalRecoveryMode
		*out = new(int64)
		**out = **in
	}
	if in.WalTTLSeconds != nil {
		in, out := &in.WalTTLSeconds, &out.WalTTLSeconds
		*out = new(int64)
		**out = **in
	}
	if in.WalSizeLimit != nil {
		in, out := &in.WalSizeLimit, &out.WalSizeLimit
		*out = new(string)
		**out = **in
	}
	if in.MaxTotalWalSize != nil {
		in, out := &in.MaxTotalWalSize, &out.MaxTotalWalSize
		*out = new(string)
		**out = **in
	}
	if in.MaxBackgroundJobs != nil {
		in, out := &in.MaxBackgroundJobs, &out.MaxBackgroundJobs
		*out = new(int64)
		**out = **in
	}
	if in.MaxManifestFileSize != nil {
		in, out := &in.MaxManifestFileSize, &out.MaxManifestFileSize
		*out = new(string)
		**out = **in
	}
	if in.CreateIfMissing != nil {
		in, out := &in.CreateIfMissing, &out.CreateIfMissing
		*out = new(bool)
		**out = **in
	}
	if in.MaxOpenFiles != nil {
		in, out := &in.MaxOpenFiles, &out.MaxOpenFiles
		*out = new(int64)
		**out = **in
	}
	if in.EnableStatistics != nil {
		in, out := &in.EnableStatistics, &out.EnableStatistics
		*out = new(bool)
		**out = **in
	}
	if in.StatsDumpPeriod != nil {
		in, out := &in.StatsDumpPeriod, &out.StatsDumpPeriod
		*out = new(string)
		**out = **in
	}
	if in.CompactionReadaheadSize != nil {
		in, out := &in.CompactionReadaheadSize, &out.CompactionReadaheadSize
		*out = new(string)
		**out = **in
	}
	if in.InfoLogMaxSize != nil {
		in, out := &in.InfoLogMaxSize, &out.InfoLogMaxSize
		*out = new(string)
		**out = **in
	}
	if in.InfoLogRollTime != nil {
		in, out := &in.InfoLogRollTime, &out.InfoLogRollTime
		*out = new(string)
		**out = **in
	}
	if in.InfoLogKeepLogFileNum != nil {
		in, out := &in.InfoLogKeepLogFileNum, &out.InfoLogKeepLogFileNum
		*out = new(int64)
		**out = **in
	}
	if in.InfoLogDir != nil {
		in, out := &in.InfoLogDir, &out.InfoLogDir
		*out = new(string)
		**out = **in
	}
	if in.RateBytesPerSec != nil {
		in, out := &in.RateBytesPerSec, &out.RateBytesPerSec
		*out = new(string)
		**out = **in
	}
	if in.RateLimiterMode != nil {
		in, out := &in.RateLimiterMode, &out.RateLimiterMode
		*out = new(int64)
		**out = **in
	}
	if in.AutoTuned != nil {
		in, out := &in.AutoTuned, &out.AutoTuned
		*out = new(bool)
		**out = **in
	}
	if in.BytesPerSync != nil {
		in, out := &in.BytesPerSync, &out.BytesPerSync
		*out = new(string)
		**out = **in
	}
	if in.WalBytesPerSync != nil {
		in, out := &in.WalBytesPerSync, &out.WalBytesPerSync
		*out = new(string)
		**out = **in
	}
	if in.MaxSubCompactions != nil {
		in, out := &in.MaxSubCompactions, &out.MaxSubCompactions
		*out = new(int64)
		**out = **in
	}
	if in.WritableFileMaxBufferSize != nil {
		in, out := &in.WritableFileMaxBufferSize, &out.WritableFileMaxBufferSize
		*out = new(string)
		**out = **in
	}
	if in.UseDirectIoForFlushAndCompaction != nil {
		in, out := &in.UseDirectIoForFlushAndCompaction, &out.UseDirectIoForFlushAndCompaction
		*out = new(bool)
		**out = **in
	}
	if in.EnablePipelinedWrite != nil {
		in, out := &in.EnablePipelinedWrite, &out.EnablePipelinedWrite
		*out = new(bool)
		**out = **in
	}
	if in.Defaultcf != nil {
		in, out := &in.Defaultcf, &out.Defaultcf
		*out = new(TiKVCfConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.Writecf != nil {
		in, out := &in.Writecf, &out.Writecf
		*out = new(TiKVCfConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.Lockcf != nil {
		in, out := &in.Lockcf, &out.Lockcf
		*out = new(TiKVCfConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.Raftcf != nil {
		in, out := &in.Raftcf, &out.Raftcf
		*out = new(TiKVCfConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.Titan != nil {
		in, out := &in.Titan, &out.Titan
		*out = new(TiKVTitanDBConfig)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVDbConfig.
func (in *TiKVDbConfig) DeepCopy() *TiKVDbConfig {
	if in == nil {
		return nil
	}
	out := new(TiKVDbConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVEncryptionConfig) DeepCopyInto(out *TiKVEncryptionConfig) {
	*out = *in
	if in.Method != nil {
		in, out := &in.Method, &out.Method
		*out = new(string)
		**out = **in
	}
	if in.DataKeyRotationPeriod != nil {
		in, out := &in.DataKeyRotationPeriod, &out.DataKeyRotationPeriod
		*out = new(string)
		**out = **in
	}
	if in.MasterKey != nil {
		in, out := &in.MasterKey, &out.MasterKey
		*out = new(TiKVMasterKeyConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.PreviousMasterKey != nil {
		in, out := &in.PreviousMasterKey, &out.PreviousMasterKey
		*out = new(TiKVMasterKeyConfig)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVEncryptionConfig.
func (in *TiKVEncryptionConfig) DeepCopy() *TiKVEncryptionConfig {
	if in == nil {
		return nil
	}
	out := new(TiKVEncryptionConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVFailureStore) DeepCopyInto(out *TiKVFailureStore) {
	*out = *in
	if in.PVCUIDSet != nil {
		in, out := &in.PVCUIDSet, &out.PVCUIDSet
		*out = make(map[types.UID]EmptyStruct, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	in.CreatedAt.DeepCopyInto(&out.CreatedAt)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVFailureStore.
func (in *TiKVFailureStore) DeepCopy() *TiKVFailureStore {
	if in == nil {
		return nil
	}
	out := new(TiKVFailureStore)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVGCConfig) DeepCopyInto(out *TiKVGCConfig) {
	*out = *in
	if in.BatchKeys != nil {
		in, out := &in.BatchKeys, &out.BatchKeys
		*out = new(int64)
		**out = **in
	}
	if in.MaxWriteBytesPerSec != nil {
		in, out := &in.MaxWriteBytesPerSec, &out.MaxWriteBytesPerSec
		*out = new(string)
		**out = **in
	}
	if in.EnableCompactionFilter != nil {
		in, out := &in.EnableCompactionFilter, &out.EnableCompactionFilter
		*out = new(bool)
		**out = **in
	}
	if in.EnableCompactionFilterSkipVersionCheck != nil {
		in, out := &in.EnableCompactionFilterSkipVersionCheck, &out.EnableCompactionFilterSkipVersionCheck
		*out = new(bool)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVGCConfig.
func (in *TiKVGCConfig) DeepCopy() *TiKVGCConfig {
	if in == nil {
		return nil
	}
	out := new(TiKVGCConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVImportConfig) DeepCopyInto(out *TiKVImportConfig) {
	*out = *in
	if in.ImportDir != nil {
		in, out := &in.ImportDir, &out.ImportDir
		*out = new(string)
		**out = **in
	}
	if in.NumThreads != nil {
		in, out := &in.NumThreads, &out.NumThreads
		*out = new(int64)
		**out = **in
	}
	if in.NumImportJobs != nil {
		in, out := &in.NumImportJobs, &out.NumImportJobs
		*out = new(int64)
		**out = **in
	}
	if in.NumImportSstJobs != nil {
		in, out := &in.NumImportSstJobs, &out.NumImportSstJobs
		*out = new(int64)
		**out = **in
	}
	if in.MaxPrepareDuration != nil {
		in, out := &in.MaxPrepareDuration, &out.MaxPrepareDuration
		*out = new(string)
		**out = **in
	}
	if in.RegionSplitSize != nil {
		in, out := &in.RegionSplitSize, &out.RegionSplitSize
		*out = new(string)
		**out = **in
	}
	if in.StreamChannelWindow != nil {
		in, out := &in.StreamChannelWindow, &out.StreamChannelWindow
		*out = new(int64)
		**out = **in
	}
	if in.MaxOpenEngines != nil {
		in, out := &in.MaxOpenEngines, &out.MaxOpenEngines
		*out = new(int64)
		**out = **in
	}
	if in.UploadSpeedLimit != nil {
		in, out := &in.UploadSpeedLimit, &out.UploadSpeedLimit
		*out = new(string)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVImportConfig.
func (in *TiKVImportConfig) DeepCopy() *TiKVImportConfig {
	if in == nil {
		return nil
	}
	out := new(TiKVImportConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVMasterKeyConfig) DeepCopyInto(out *TiKVMasterKeyConfig) {
	*out = *in
	if in.Type != nil {
		in, out := &in.Type, &out.Type
		*out = new(string)
		**out = **in
	}
	in.MasterKeyFileConfig.DeepCopyInto(&out.MasterKeyFileConfig)
	in.MasterKeyKMSConfig.DeepCopyInto(&out.MasterKeyKMSConfig)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVMasterKeyConfig.
func (in *TiKVMasterKeyConfig) DeepCopy() *TiKVMasterKeyConfig {
	if in == nil {
		return nil
	}
	out := new(TiKVMasterKeyConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVPDConfig) DeepCopyInto(out *TiKVPDConfig) {
	*out = *in
	if in.Endpoints != nil {
		in, out := &in.Endpoints, &out.Endpoints
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	if in.RetryInterval != nil {
		in, out := &in.RetryInterval, &out.RetryInterval
		*out = new(string)
		**out = **in
	}
	if in.RetryMaxCount != nil {
		in, out := &in.RetryMaxCount, &out.RetryMaxCount
		*out = new(int64)
		**out = **in
	}
	if in.RetryLogEvery != nil {
		in, out := &in.RetryLogEvery, &out.RetryLogEvery
		*out = new(int64)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVPDConfig.
func (in *TiKVPDConfig) DeepCopy() *TiKVPDConfig {
	if in == nil {
		return nil
	}
	out := new(TiKVPDConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVPessimisticTxn) DeepCopyInto(out *TiKVPessimisticTxn) {
	*out = *in
	if in.Enabled != nil {
		in, out := &in.Enabled, &out.Enabled
		*out = new(bool)
		**out = **in
	}
	if in.WaitForLockTimeout != nil {
		in, out := &in.WaitForLockTimeout, &out.WaitForLockTimeout
		*out = new(string)
		**out = **in
	}
	if in.WakeUpDelayDuration != nil {
		in, out := &in.WakeUpDelayDuration, &out.WakeUpDelayDuration
		*out = new(string)
		**out = **in
	}
	if in.Pipelined != nil {
		in, out := &in.Pipelined, &out.Pipelined
		*out = new(bool)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVPessimisticTxn.
func (in *TiKVPessimisticTxn) DeepCopy() *TiKVPessimisticTxn {
	if in == nil {
		return nil
	}
	out := new(TiKVPessimisticTxn)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVRaftDBConfig) DeepCopyInto(out *TiKVRaftDBConfig) {
	*out = *in
	if in.WalRecoveryMode != nil {
		in, out := &in.WalRecoveryMode, &out.WalRecoveryMode
		*out = new(string)
		**out = **in
	}
	if in.WalDir != nil {
		in, out := &in.WalDir, &out.WalDir
		*out = new(string)
		**out = **in
	}
	if in.WalTtlSeconds != nil {
		in, out := &in.WalTtlSeconds, &out.WalTtlSeconds
		*out = new(int64)
		**out = **in
	}
	if in.WalSizeLimit != nil {
		in, out := &in.WalSizeLimit, &out.WalSizeLimit
		*out = new(string)
		**out = **in
	}
	if in.MaxTotalWalSize != nil {
		in, out := &in.MaxTotalWalSize, &out.MaxTotalWalSize
		*out = new(string)
		**out = **in
	}
	if in.MaxBackgroundJobs != nil {
		in, out := &in.MaxBackgroundJobs, &out.MaxBackgroundJobs
		*out = new(int64)
		**out = **in
	}
	if in.MaxManifestFileSize != nil {
		in, out := &in.MaxManifestFileSize, &out.MaxManifestFileSize
		*out = new(string)
		**out = **in
	}
	if in.CreateIfMissing != nil {
		in, out := &in.CreateIfMissing, &out.CreateIfMissing
		*out = new(bool)
		**out = **in
	}
	if in.MaxOpenFiles != nil {
		in, out := &in.MaxOpenFiles, &out.MaxOpenFiles
		*out = new(int64)
		**out = **in
	}
	if in.EnableStatistics != nil {
		in, out := &in.EnableStatistics, &out.EnableStatistics
		*out = new(bool)
		**out = **in
	}
	if in.StatsDumpPeriod != nil {
		in, out := &in.StatsDumpPeriod, &out.StatsDumpPeriod
		*out = new(string)
		**out = **in
	}
	if in.CompactionReadaheadSize != nil {
		in, out := &in.CompactionReadaheadSize, &out.CompactionReadaheadSize
		*out = new(string)
		**out = **in
	}
	if in.InfoLogMaxSize != nil {
		in, out := &in.InfoLogMaxSize, &out.InfoLogMaxSize
		*out = new(string)
		**out = **in
	}
	if in.FnfoLogRollTime != nil {
		in, out := &in.FnfoLogRollTime, &out.FnfoLogRollTime
		*out = new(string)
		**out = **in
	}
	if in.InfoLogKeepLogFileNum != nil {
		in, out := &in.InfoLogKeepLogFileNum, &out.InfoLogKeepLogFileNum
		*out = new(int64)
		**out = **in
	}
	if in.InfoLogDir != nil {
		in, out := &in.InfoLogDir, &out.InfoLogDir
		*out = new(string)
		**out = **in
	}
	if in.MaxSubCompactions != nil {
		in, out := &in.MaxSubCompactions, &out.MaxSubCompactions
		*out = new(int64)
		**out = **in
	}
	if in.WritableFileMaxBufferSize != nil {
		in, out := &in.WritableFileMaxBufferSize, &out.WritableFileMaxBufferSize
		*out = new(string)
		**out = **in
	}
	if in.UseDirectIoForFlushAndCompaction != nil {
		in, out := &in.UseDirectIoForFlushAndCompaction, &out.UseDirectIoForFlushAndCompaction
		*out = new(bool)
		**out = **in
	}
	if in.EnablePipelinedWrite != nil {
		in, out := &in.EnablePipelinedWrite, &out.EnablePipelinedWrite
		*out = new(bool)
		**out = **in
	}
	if in.AllowConcurrentMemtableWrite != nil {
		in, out := &in.AllowConcurrentMemtableWrite, &out.AllowConcurrentMemtableWrite
		*out = new(bool)
		**out = **in
	}
	if in.BytesPerSync != nil {
		in, out := &in.BytesPerSync, &out.BytesPerSync
		*out = new(string)
		**out = **in
	}
	if in.WalBytesPerSync != nil {
		in, out := &in.WalBytesPerSync, &out.WalBytesPerSync
		*out = new(string)
		**out = **in
	}
	if in.Defaultcf != nil {
		in, out := &in.Defaultcf, &out.Defaultcf
		*out = new(TiKVCfConfig)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVRaftDBConfig.
func (in *TiKVRaftDBConfig) DeepCopy() *TiKVRaftDBConfig {
	if in == nil {
		return nil
	}
	out := new(TiKVRaftDBConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVRaftstoreConfig) DeepCopyInto(out *TiKVRaftstoreConfig) {
	*out = *in
	if in.SyncLog != nil {
		in, out := &in.SyncLog, &out.SyncLog
		*out = new(bool)
		**out = **in
	}
	if in.Prevote != nil {
		in, out := &in.Prevote, &out.Prevote
		*out = new(bool)
		**out = **in
	}
	if in.RaftBaseTickInterval != nil {
		in, out := &in.RaftBaseTickInterval, &out.RaftBaseTickInterval
		*out = new(string)
		**out = **in
	}
	if in.RaftHeartbeatTicks != nil {
		in, out := &in.RaftHeartbeatTicks, &out.RaftHeartbeatTicks
		*out = new(int64)
		**out = **in
	}
	if in.RaftElectionTimeoutTicks != nil {
		in, out := &in.RaftElectionTimeoutTicks, &out.RaftElectionTimeoutTicks
		*out = new(int64)
		**out = **in
	}
	if in.RaftEntryMaxSize != nil {
		in, out := &in.RaftEntryMaxSize, &out.RaftEntryMaxSize
		*out = new(string)
		**out = **in
	}
	if in.RaftMaxSizePerMsg != nil {
		in, out := &in.RaftMaxSizePerMsg, &out.RaftMaxSizePerMsg
		*out = new(string)
		**out = **in
	}
	if in.RaftMaxInflightMsgs != nil {
		in, out := &in.RaftMaxInflightMsgs, &out.RaftMaxInflightMsgs
		*out = new(int64)
		**out = **in
	}
	if in.RaftLogGCTickInterval != nil {
		in, out := &in.RaftLogGCTickInterval, &out.RaftLogGCTickInterval
		*out = new(string)
		**out = **in
	}
	if in.RaftLogGCThreshold != nil {
		in, out := &in.RaftLogGCThreshold, &out.RaftLogGCThreshold
		*out = new(int64)
		**out = **in
	}
	if in.RaftLogGCCountLimit != nil {
		in, out := &in.RaftLogGCCountLimit, &out.RaftLogGCCountLimit
		*out = new(int64)
		**out = **in
	}
	if in.RaftLogGCSizeLimit != nil {
		in, out := &in.RaftLogGCSizeLimit, &out.RaftLogGCSizeLimit
		*out = new(string)
		**out = **in
	}
	if in.RaftEntryCacheLifeTime != nil {
		in, out := &in.RaftEntryCacheLifeTime, &out.RaftEntryCacheLifeTime
		*out = new(string)
		**out = **in
	}
	if in.RaftRejectTransferLeaderDuration != nil {
		in, out := &in.RaftRejectTransferLeaderDuration, &out.RaftRejectTransferLeaderDuration
		*out = new(string)
		**out = **in
	}
	if in.SplitRegionCheckTickInterval != nil {
		in, out := &in.SplitRegionCheckTickInterval, &out.SplitRegionCheckTickInterval
		*out = new(string)
		**out = **in
	}
	if in.RegionSplitCheckDiff != nil {
		in, out := &in.RegionSplitCheckDiff, &out.RegionSplitCheckDiff
		*out = new(string)
		**out = **in
	}
	if in.RegionCompactCheckInterval != nil {
		in, out := &in.RegionCompactCheckInterval, &out.RegionCompactCheckInterval
		*out = new(string)
		**out = **in
	}
	if in.CleanStalePeerDelay != nil {
		in, out := &in.CleanStalePeerDelay, &out.CleanStalePeerDelay
		*out = new(string)
		**out = **in
	}
	if in.RegionCompactCheckStep != nil {
		in, out := &in.RegionCompactCheckStep, &out.RegionCompactCheckStep
		*out = new(int64)
		**out = **in
	}
	if in.RegionCompactMinTombstones != nil {
		in, out := &in.RegionCompactMinTombstones, &out.RegionCompactMinTombstones
		*out = new(int64)
		**out = **in
	}
	if in.RegionCompactTombstonesPercent != nil {
		in, out := &in.RegionCompactTombstonesPercent, &out.RegionCompactTombstonesPercent
		*out = new(int64)
		**out = **in
	}
	if in.PdHeartbeatTickInterval != nil {
		in, out := &in.PdHeartbeatTickInterval, &out.PdHeartbeatTickInterval
		*out = new(string)
		**out = **in
	}
	if in.PdStoreHeartbeatTickInterval != nil {
		in, out := &in.PdStoreHeartbeatTickInterval, &out.PdStoreHeartbeatTickInterval
		*out = new(string)
		**out = **in
	}
	if in.SnapMgrGCTickInterval != nil {
		in, out := &in.SnapMgrGCTickInterval, &out.SnapMgrGCTickInterval
		*out = new(string)
		**out = **in
	}
	if in.SnapGCTimeout != nil {
		in, out := &in.SnapGCTimeout, &out.SnapGCTimeout
		*out = new(string)
		**out = **in
	}
	if in.LockCfCompactInterval != nil {
		in, out := &in.LockCfCompactInterval, &out.LockCfCompactInterval
		*out = new(string)
		**out = **in
	}
	if in.LockCfCompactBytesThreshold != nil {
		in, out := &in.LockCfCompactBytesThreshold, &out.LockCfCompactBytesThreshold
		*out = new(string)
		**out = **in
	}
	if in.NotifyCapacity != nil {
		in, out := &in.NotifyCapacity, &out.NotifyCapacity
		*out = new(int64)
		**out = **in
	}
	if in.MessagesPerTick != nil {
		in, out := &in.MessagesPerTick, &out.MessagesPerTick
		*out = new(int64)
		**out = **in
	}
	if in.MaxPeerDownDuration != nil {
		in, out := &in.MaxPeerDownDuration, &out.MaxPeerDownDuration
		*out = new(string)
		**out = **in
	}
	if in.MaxLeaderMissingDuration != nil {
		in, out := &in.MaxLeaderMissingDuration, &out.MaxLeaderMissingDuration
		*out = new(string)
		**out = **in
	}
	if in.AbnormalLeaderMissingDuration != nil {
		in, out := &in.AbnormalLeaderMissingDuration, &out.AbnormalLeaderMissingDuration
		*out = new(string)
		**out = **in
	}
	if in.PeerStaleStateCheckInterval != nil {
		in, out := &in.PeerStaleStateCheckInterval, &out.PeerStaleStateCheckInterval
		*out = new(string)
		**out = **in
	}
	if in.LeaderTransferMaxLogLag != nil {
		in, out := &in.LeaderTransferMaxLogLag, &out.LeaderTransferMaxLogLag
		*out = new(int64)
		**out = **in
	}
	if in.SnapApplyBatchSize != nil {
		in, out := &in.SnapApplyBatchSize, &out.SnapApplyBatchSize
		*out = new(string)
		**out = **in
	}
	if in.ConsistencyCheckInterval != nil {
		in, out := &in.ConsistencyCheckInterval, &out.ConsistencyCheckInterval
		*out = new(string)
		**out = **in
	}
	if in.ReportRegionFlowInterval != nil {
		in, out := &in.ReportRegionFlowInterval, &out.ReportRegionFlowInterval
		*out = new(string)
		**out = **in
	}
	if in.RaftStoreMaxLeaderLease != nil {
		in, out := &in.RaftStoreMaxLeaderLease, &out.RaftStoreMaxLeaderLease
		*out = new(string)
		**out = **in
	}
	if in.RightDeriveWhenSplit != nil {
		in, out := &in.RightDeriveWhenSplit, &out.RightDeriveWhenSplit
		*out = new(bool)
		**out = **in
	}
	if in.AllowRemoveLeader != nil {
		in, out := &in.AllowRemoveLeader, &out.AllowRemoveLeader
		*out = new(bool)
		**out = **in
	}
	if in.MergeMaxLogGap != nil {
		in, out := &in.MergeMaxLogGap, &out.MergeMaxLogGap
		*out = new(int64)
		**out = **in
	}
	if in.MergeCheckTickInterval != nil {
		in, out := &in.MergeCheckTickInterval, &out.MergeCheckTickInterval
		*out = new(string)
		**out = **in
	}
	if in.UseDeleteRange != nil {
		in, out := &in.UseDeleteRange, &out.UseDeleteRange
		*out = new(bool)
		**out = **in
	}
	if in.CleanupImportSstInterval != nil {
		in, out := &in.CleanupImportSstInterval, &out.CleanupImportSstInterval
		*out = new(string)
		**out = **in
	}
	if in.ApplyMaxBatchSize != nil {
		in, out := &in.ApplyMaxBatchSize, &out.ApplyMaxBatchSize
		*out = new(int64)
		**out = **in
	}
	if in.ApplyPoolSize != nil {
		in, out := &in.ApplyPoolSize, &out.ApplyPoolSize
		*out = new(int64)
		**out = **in
	}
	if in.StoreMaxBatchSize != nil {
		in, out := &in.StoreMaxBatchSize, &out.StoreMaxBatchSize
		*out = new(int64)
		**out = **in
	}
	if in.StorePoolSize != nil {
		in, out := &in.StorePoolSize, &out.StorePoolSize
		*out = new(int64)
		**out = **in
	}
	if in.StoreRescheduleDuration != nil {
		in, out := &in.StoreRescheduleDuration, &out.StoreRescheduleDuration
		*out = new(string)
		**out = **in
	}
	if in.ApplyYieldDuration != nil {
		in, out := &in.ApplyYieldDuration, &out.ApplyYieldDuration
		*out = new(string)
		**out = **in
	}
	if in.HibernateRegions != nil {
		in, out := &in.HibernateRegions, &out.HibernateRegions
		*out = new(bool)
		**out = **in
	}
	if in.ApplyEarly != nil {
		in, out := &in.ApplyEarly, &out.ApplyEarly
		*out = new(bool)
		**out = **in
	}
	if in.PerfLevel != nil {
		in, out := &in.PerfLevel, &out.PerfLevel
		*out = new(int64)
		**out = **in
	}
	if in.DevAssert != nil {
		in, out := &in.DevAssert, &out.DevAssert
		*out = new(bool)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVRaftstoreConfig.
func (in *TiKVRaftstoreConfig) DeepCopy() *TiKVRaftstoreConfig {
	if in == nil {
		return nil
	}
	out := new(TiKVRaftstoreConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVReadPoolConfig) DeepCopyInto(out *TiKVReadPoolConfig) {
	*out = *in
	if in.Unified != nil {
		in, out := &in.Unified, &out.Unified
		*out = new(TiKVUnifiedReadPoolConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.Coprocessor != nil {
		in, out := &in.Coprocessor, &out.Coprocessor
		*out = new(TiKVCoprocessorReadPoolConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.Storage != nil {
		in, out := &in.Storage, &out.Storage
		*out = new(TiKVStorageReadPoolConfig)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVReadPoolConfig.
func (in *TiKVReadPoolConfig) DeepCopy() *TiKVReadPoolConfig {
	if in == nil {
		return nil
	}
	out := new(TiKVReadPoolConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVSecurityConfig) DeepCopyInto(out *TiKVSecurityConfig) {
	*out = *in
	if in.CAPath != nil {
		in, out := &in.CAPath, &out.CAPath
		*out = new(string)
		**out = **in
	}
	if in.CertPath != nil {
		in, out := &in.CertPath, &out.CertPath
		*out = new(string)
		**out = **in
	}
	if in.KeyPath != nil {
		in, out := &in.KeyPath, &out.KeyPath
		*out = new(string)
		**out = **in
	}
	if in.CertAllowedCN != nil {
		in, out := &in.CertAllowedCN, &out.CertAllowedCN
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	if in.OverrideSslTarget != nil {
		in, out := &in.OverrideSslTarget, &out.OverrideSslTarget
		*out = new(string)
		**out = **in
	}
	if in.CipherFile != nil {
		in, out := &in.CipherFile, &out.CipherFile
		*out = new(string)
		**out = **in
	}
	if in.Encryption != nil {
		in, out := &in.Encryption, &out.Encryption
		*out = new(TiKVSecurityConfigEncryption)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVSecurityConfig.
func (in *TiKVSecurityConfig) DeepCopy() *TiKVSecurityConfig {
	if in == nil {
		return nil
	}
	out := new(TiKVSecurityConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVSecurityConfigEncryption) DeepCopyInto(out *TiKVSecurityConfigEncryption) {
	*out = *in
	if in.DataEncryptionMethod != nil {
		in, out := &in.DataEncryptionMethod, &out.DataEncryptionMethod
		*out = new(string)
		**out = **in
	}
	if in.DataKeyRotationPeriod != nil {
		in, out := &in.DataKeyRotationPeriod, &out.DataKeyRotationPeriod
		*out = new(string)
		**out = **in
	}
	if in.MasterKey != nil {
		in, out := &in.MasterKey, &out.MasterKey
		*out = new(TiKVSecurityConfigEncryptionMasterKey)
		(*in).DeepCopyInto(*out)
	}
	if in.PreviousMasterKey != nil {
		in, out := &in.PreviousMasterKey, &out.PreviousMasterKey
		*out = new(TiKVSecurityConfigEncryptionPreviousMasterKey)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVSecurityConfigEncryption.
func (in *TiKVSecurityConfigEncryption) DeepCopy() *TiKVSecurityConfigEncryption {
	if in == nil {
		return nil
	}
	out := new(TiKVSecurityConfigEncryption)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVSecurityConfigEncryptionMasterKey) DeepCopyInto(out *TiKVSecurityConfigEncryptionMasterKey) {
	*out = *in
	if in.Type != nil {
		in, out := &in.Type, &out.Type
		*out = new(string)
		**out = **in
	}
	in.MasterKeyFileConfig.DeepCopyInto(&out.MasterKeyFileConfig)
	in.MasterKeyKMSConfig.DeepCopyInto(&out.MasterKeyKMSConfig)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVSecurityConfigEncryptionMasterKey.
func (in *TiKVSecurityConfigEncryptionMasterKey) DeepCopy() *TiKVSecurityConfigEncryptionMasterKey {
	if in == nil {
		return nil
	}
	out := new(TiKVSecurityConfigEncryptionMasterKey)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVSecurityConfigEncryptionPreviousMasterKey) DeepCopyInto(out *TiKVSecurityConfigEncryptionPreviousMasterKey) {
	*out = *in
	if in.Type != nil {
		in, out := &in.Type, &out.Type
		*out = new(string)
		**out = **in
	}
	in.MasterKeyFileConfig.DeepCopyInto(&out.MasterKeyFileConfig)
	in.MasterKeyKMSConfig.DeepCopyInto(&out.MasterKeyKMSConfig)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVSecurityConfigEncryptionPreviousMasterKey.
func (in *TiKVSecurityConfigEncryptionPreviousMasterKey) DeepCopy() *TiKVSecurityConfigEncryptionPreviousMasterKey {
	if in == nil {
		return nil
	}
	out := new(TiKVSecurityConfigEncryptionPreviousMasterKey)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVServerConfig) DeepCopyInto(out *TiKVServerConfig) {
	*out = *in
	if in.StatusThreadPoolSize != nil {
		in, out := &in.StatusThreadPoolSize, &out.StatusThreadPoolSize
		*out = new(string)
		**out = **in
	}
	if in.MaxGrpcSendMsgLen != nil {
		in, out := &in.MaxGrpcSendMsgLen, &out.MaxGrpcSendMsgLen
		*out = new(uint)
		**out = **in
	}
	if in.GrpcCompressionType != nil {
		in, out := &in.GrpcCompressionType, &out.GrpcCompressionType
		*out = new(string)
		**out = **in
	}
	if in.GrpcConcurrency != nil {
		in, out := &in.GrpcConcurrency, &out.GrpcConcurrency
		*out = new(uint)
		**out = **in
	}
	if in.GrpcConcurrentStream != nil {
		in, out := &in.GrpcConcurrentStream, &out.GrpcConcurrentStream
		*out = new(uint)
		**out = **in
	}
	if in.GrpcMemoryQuota != nil {
		in, out := &in.GrpcMemoryQuota, &out.GrpcMemoryQuota
		*out = new(string)
		**out = **in
	}
	if in.GrpcRaftConnNum != nil {
		in, out := &in.GrpcRaftConnNum, &out.GrpcRaftConnNum
		*out = new(uint)
		**out = **in
	}
	if in.GrpcStreamInitialWindowSize != nil {
		in, out := &in.GrpcStreamInitialWindowSize, &out.GrpcStreamInitialWindowSize
		*out = new(string)
		**out = **in
	}
	if in.GrpcKeepaliveTime != nil {
		in, out := &in.GrpcKeepaliveTime, &out.GrpcKeepaliveTime
		*out = new(string)
		**out = **in
	}
	if in.GrpcKeepaliveTimeout != nil {
		in, out := &in.GrpcKeepaliveTimeout, &out.GrpcKeepaliveTimeout
		*out = new(string)
		**out = **in
	}
	if in.ConcurrentSendSnapLimit != nil {
		in, out := &in.ConcurrentSendSnapLimit, &out.ConcurrentSendSnapLimit
		*out = new(uint)
		**out = **in
	}
	if in.ConcurrentRecvSnapLimit != nil {
		in, out := &in.ConcurrentRecvSnapLimit, &out.ConcurrentRecvSnapLimit
		*out = new(uint)
		**out = **in
	}
	if in.EndPointRecursionLimit != nil {
		in, out := &in.EndPointRecursionLimit, &out.EndPointRecursionLimit
		*out = new(uint)
		**out = **in
	}
	if in.EndPointStreamChannelSize != nil {
		in, out := &in.EndPointStreamChannelSize, &out.EndPointStreamChannelSize
		*out = new(uint)
		**out = **in
	}
	if in.EndPointBatchRowLimit != nil {
		in, out := &in.EndPointBatchRowLimit, &out.EndPointBatchRowLimit
		*out = new(uint)
		**out = **in
	}
	if in.EndPointStreamBatchRowLimit != nil {
		in, out := &in.EndPointStreamBatchRowLimit, &out.EndPointStreamBatchRowLimit
		*out = new(uint)
		**out = **in
	}
	if in.EndPointEnableBatchIfPossible != nil {
		in, out := &in.EndPointEnableBatchIfPossible, &out.EndPointEnableBatchIfPossible
		*out = new(uint)
		**out = **in
	}
	if in.EndPointRequestMaxHandleDuration != nil {
		in, out := &in.EndPointRequestMaxHandleDuration, &out.EndPointRequestMaxHandleDuration
		*out = new(string)
		**out = **in
	}
	if in.SnapMaxWriteBytesPerSec != nil {
		in, out := &in.SnapMaxWriteBytesPerSec, &out.SnapMaxWriteBytesPerSec
		*out = new(string)
		**out = **in
	}
	if in.SnapMaxTotalSize != nil {
		in, out := &in.SnapMaxTotalSize, &out.SnapMaxTotalSize
		*out = new(string)
		**out = **in
	}
	if in.StatsConcurrency != nil {
		in, out := &in.StatsConcurrency, &out.StatsConcurrency
		*out = new(uint)
		**out = **in
	}
	if in.HeavyLoadThreshold != nil {
		in, out := &in.HeavyLoadThreshold, &out.HeavyLoadThreshold
		*out = new(uint)
		**out = **in
	}
	if in.HeavyLoadWaitDuration != nil {
		in, out := &in.HeavyLoadWaitDuration, &out.HeavyLoadWaitDuration
		*out = new(string)
		**out = **in
	}
	if in.Labels != nil {
		in, out := &in.Labels, &out.Labels
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	if in.EnableRequestBatch != nil {
		in, out := &in.EnableRequestBatch, &out.EnableRequestBatch
		*out = new(bool)
		**out = **in
	}
	if in.RequestBatchEnableCrossCommand != nil {
		in, out := &in.RequestBatchEnableCrossCommand, &out.RequestBatchEnableCrossCommand
		*out = new(bool)
		**out = **in
	}
	if in.RequestBatchWaitDuration != nil {
		in, out := &in.RequestBatchWaitDuration, &out.RequestBatchWaitDuration
		*out = new(string)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVServerConfig.
func (in *TiKVServerConfig) DeepCopy() *TiKVServerConfig {
	if in == nil {
		return nil
	}
	out := new(TiKVServerConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVSpec) DeepCopyInto(out *TiKVSpec) {
	*out = *in
	in.ComponentSpec.DeepCopyInto(&out.ComponentSpec)
	in.ResourceRequirements.DeepCopyInto(&out.ResourceRequirements)
	if in.Privileged != nil {
		in, out := &in.Privileged, &out.Privileged
		*out = new(bool)
		**out = **in
	}
	if in.MaxFailoverCount != nil {
		in, out := &in.MaxFailoverCount, &out.MaxFailoverCount
		*out = new(int32)
		**out = **in
	}
	if in.SeparateRocksDBLog != nil {
		in, out := &in.SeparateRocksDBLog, &out.SeparateRocksDBLog
		*out = new(bool)
		**out = **in
	}
	if in.SeparateRaftLog != nil {
		in, out := &in.SeparateRaftLog, &out.SeparateRaftLog
		*out = new(bool)
		**out = **in
	}
	if in.LogTailer != nil {
		in, out := &in.LogTailer, &out.LogTailer
		*out = new(LogTailerSpec)
		(*in).DeepCopyInto(*out)
	}
	if in.StorageClassName != nil {
		in, out := &in.StorageClassName, &out.StorageClassName
		*out = new(string)
		**out = **in
	}
	if in.Config != nil {
		in, out := &in.Config, &out.Config
		*out = new(TiKVConfigWraper)
		(*in).DeepCopyInto(*out)
	}
	if in.Failover != nil {
		in, out := &in.Failover, &out.Failover
		*out = new(Failover)
		(*in).DeepCopyInto(*out)
	}
	if in.MountClusterClientSecret != nil {
		in, out := &in.MountClusterClientSecret, &out.MountClusterClientSecret
		*out = new(bool)
		**out = **in
	}
	if in.EvictLeaderTimeout != nil {
		in, out := &in.EvictLeaderTimeout, &out.EvictLeaderTimeout
		*out = new(string)
		**out = **in
	}
	if in.StorageVolumes != nil {
		in, out := &in.StorageVolumes, &out.StorageVolumes
		*out = make([]StorageVolume, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.StoreLabels != nil {
		in, out := &in.StoreLabels, &out.StoreLabels
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	in.ScalePolicy.DeepCopyInto(&out.ScalePolicy)
	if in.EnablePVReclaim != nil {
		in, out := &in.EnablePVReclaim, &out.EnablePVReclaim
		*out = new(bool)
		**out = **in
	}
	if in.PVReclaimDelayDuration != nil {
		in, out := &in.PVReclaimDelayDuration, &out.PVReclaimDelayDuration
		*out = new(string)
		**out = **in
	}
	if in.EnableConfigRollback != nil {
		in, out := &in.EnableConfigRollback, &out.EnableConfigRollback
		*out = new(bool)
		**out = **in
	}
	if in.CanaryUpgrade != nil {
		in, out := &in.CanaryUpgrade, &out.CanaryUpgrade
		*out = new(CanaryUpgrade)
		(*in).DeepCopyInto(*out)
	}
	if in.AutoScaling != nil {
		in, out := &in.AutoScaling, &out.AutoScaling
		*out = new(AutoScaling)
		(*in).DeepCopyInto(*out)
	}
	if in.ScaleInProtection != nil {
		in, out := &in.ScaleInProtection, &out.ScaleInProtection
		*out = new(ScaleInProtection)
		(*in).DeepCopyInto(*out)
	}
	if in.ScaleInProtectionForNode != nil {
		in, out := &in.ScaleInProtectionForNode, &out.ScaleInProtectionForNode
		*out = new(bool)
		**out = **in
	}
	if in.StoreLimit != nil {
		in, out := &in.StoreLimit, &out.StoreLimit
		*out = new(StoreLimit)
		(*in).DeepCopyInto(*out)
	}
	if in.GroupName != nil {
		in, out := &in.GroupName, &out.GroupName
		*out = new(string)
		**out = **in
	}
	if in.EnableUpgradeInNonReadyStates != nil {
		in, out := &in.EnableUpgradeInNonReadyStates, &out.EnableUpgradeInNonReadyStates
		*out = new(bool)
		**out = **in
	}
	if in.SupersedingCluster != nil {
		in, out := &in.SupersedingCluster, &out.SupersedingCluster
		*out = new(TidbClusterRef)
		**out = **in
	}
	if in.HotCluster != nil {
		in, out := &in.HotCluster, &out.HotCluster
		*out = new(HotCluster)
		(*in).DeepCopyInto(*out)
	}
	if in.IsolatedCluster != nil {
		in, out := &in.IsolatedCluster, &out.IsolatedCluster
		*out = new(IsolatedCluster)
		(*in).DeepCopyInto(*out)
	}
	if in.IsolatedClusterReplicas != nil {
		in, out := &in.IsolatedClusterReplicas, &out.IsolatedClusterReplicas
		*out = new(int32)
		**out = **in
	}
	if in.FallbackCluster != nil {
		in, out := &in.FallbackCluster, &out.FallbackCluster
		*out = new(FallbackCluster)
		(*in).DeepCopyInto(*out)
	}
	if in.UpgradeDelayAfterEvictLeader != nil {
		in, out := &in.UpgradeDelayAfterEvictLeader, &out.UpgradeDelayAfterEvictLeader
		*out = new(string)
		**out = **in
	}
	if in.EndEvictLeaderDelayAfterReady != nil {
		in, out := &in.EndEvictLeaderDelayAfterReady, &out.EndEvictLeaderDelayAfterReady
		*out = new(string)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVSpec.
func (in *TiKVSpec) DeepCopy() *TiKVSpec {
	if in == nil {
		return nil
	}
	out := new(TiKVSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVStatus) DeepCopyInto(out *TiKVStatus) {
	*out = *in
	if in.StatefulSet != nil {
		in, out := &in.StatefulSet, &out.StatefulSet
		*out = new(appsv1.StatefulSetStatus)
		(*in).DeepCopyInto(*out)
	}
	if in.Stores != nil {
		in, out := &in.Stores, &out.Stores
		*out = make(map[string]TiKVStore, len(*in))
		for key, val := range *in {
			(*out)[key] = *val.DeepCopy()
		}
	}
	if in.PeerStores != nil {
		in, out := &in.PeerStores, &out.PeerStores
		*out = make(map[string]TiKVStore, len(*in))
		for key, val := range *in {
			(*out)[key] = *val.DeepCopy()
		}
	}
	if in.TombstoneStores != nil {
		in, out := &in.TombstoneStores, &out.TombstoneStores
		*out = make(map[string]TiKVStore, len(*in))
		for key, val := range *in {
			(*out)[key] = *val.DeepCopy()
		}
	}
	if in.FailureStores != nil {
		in, out := &in.FailureStores, &out.FailureStores
		*out = make(map[string]TiKVFailureStore, len(*in))
		for key, val := range *in {
			(*out)[key] = *val.DeepCopy()
		}
	}
	if in.AppliedConfig != nil {
		in, out := &in.AppliedConfig, &out.AppliedConfig
		*out = new(AppliedConfig)
		**out = **in
	}
	if in.EvictLeader != nil {
		in, out := &in.EvictLeader, &out.EvictLeader
		*out = make(map[string]*EvictLeaderStatus, len(*in))
		for key, val := range *in {
			var outVal *EvictLeaderStatus
			if val == nil {
				(*out)[key] = nil
			} else {
				in, out := &val, &outVal
				*out = new(EvictLeaderStatus)
				(*in).DeepCopyInto(*out)
			}
			(*out)[key] = outVal
		}
	}
	if in.Volumes != nil {
		in, out := &in.Volumes, &out.Volumes
		*out = make(map[StorageVolumeName]*StorageVolumeStatus, len(*in))
		for key, val := range *in {
			var outVal *StorageVolumeStatus
			if val == nil {
				(*out)[key] = nil
			} else {
				in, out := &val, &outVal
				*out = new(StorageVolumeStatus)
				(*in).DeepCopyInto(*out)
			}
			(*out)[key] = outVal
		}
	}
	if in.Conditions != nil {
		in, out := &in.Conditions, &out.Conditions
		*out = make([]metav1.Condition, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	out.ResourceUsage = in.ResourceUsage
	in.AutoScaling.DeepCopyInto(&out.AutoScaling)
	out.SpecReplicas = in.SpecReplicas
	if in.Groups != nil {
		in, out := &in.Groups, &out.Groups
		*out = make(map[string]TidbClusterGroup, len(*in))
		for key, val := range *in {
			(*out)[key] = *val.DeepCopy()
		}
	}
	in.HotCluster.DeepCopyInto(&out.HotCluster)
	in.FallbackCluster.DeepCopyInto(&out.FallbackCluster)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVStatus.
func (in *TiKVStatus) DeepCopy() *TiKVStatus {
	if in == nil {
		return nil
	}
	out := new(TiKVStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVStorageConfig) DeepCopyInto(out *TiKVStorageConfig) {
	*out = *in
	if in.MaxKeySize != nil {
		in, out := &in.MaxKeySize, &out.MaxKeySize
		*out = new(int64)
		**out = **in
	}
	if in.SchedulerNotifyCapacity != nil {
		in, out := &in.SchedulerNotifyCapacity, &out.SchedulerNotifyCapacity
		*out = new(int64)
		**out = **in
	}
	if in.SchedulerConcurrency != nil {
		in, out := &in.SchedulerConcurrency, &out.SchedulerConcurrency
		*out = new(int64)
		**out = **in
	}
	if in.SchedulerWorkerPoolSize != nil {
		in, out := &in.SchedulerWorkerPoolSize, &out.SchedulerWorkerPoolSize
		*out = new(int64)
		**out = **in
	}
	if in.SchedulerPendingWriteThreshold != nil {
		in, out := &in.SchedulerPendingWriteThreshold, &out.SchedulerPendingWriteThreshold
		*out = new(string)
		**out = **in
	}
	if in.BlockCache != nil {
		in, out := &in.BlockCache, &out.BlockCache
		*out = new(TiKVBlockCacheConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.ReserveSpace != nil {
		in, out := &in.ReserveSpace, &out.ReserveSpace
		*out = new(string)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVStorageConfig.
func (in *TiKVStorageConfig) DeepCopy() *TiKVStorageConfig {
	if in == nil {
		return nil
	}
	out := new(TiKVStorageConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVStorageReadPoolConfig) DeepCopyInto(out *TiKVStorageReadPoolConfig) {
	*out = *in
	if in.HighConcurrency != nil {
		in, out := &in.HighConcurrency, &out.HighConcurrency
		*out = new(int64)
		**out = **in
	}
	if in.NormalConcurrency != nil {
		in, out := &in.NormalConcurrency, &out.NormalConcurrency
		*out = new(int64)
		**out = **in
	}
	if in.LowConcurrency != nil {
		in, out := &in.LowConcurrency, &out.LowConcurrency
		*out = new(int64)
		**out = **in
	}
	if in.MaxTasksPerWorkerHigh != nil {
		in, out := &in.MaxTasksPerWorkerHigh, &out.MaxTasksPerWorkerHigh
		*out = new(int64)
		**out = **in
	}
	if in.MaxTasksPerWorkerNormal != nil {
		in, out := &in.MaxTasksPerWorkerNormal, &out.MaxTasksPerWorkerNormal
		*out = new(int64)
		**out = **in
	}
	if in.MaxTasksPerWorkerLow != nil {
		in, out := &in.MaxTasksPerWorkerLow, &out.MaxTasksPerWorkerLow
		*out = new(int64)
		**out = **in
	}
	if in.StackSize != nil {
		in, out := &in.StackSize, &out.StackSize
		*out = new(string)
		**out = **in
	}
	if in.UseUnifiedPool != nil {
		in, out := &in.UseUnifiedPool, &out.UseUnifiedPool
		*out = new(bool)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVStorageReadPoolConfig.
func (in *TiKVStorageReadPoolConfig) DeepCopy() *TiKVStorageReadPoolConfig {
	if in == nil {
		return nil
	}
	out := new(TiKVStorageReadPoolConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVStore) DeepCopyInto(out *TiKVStore) {
	*out = *in
	in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime)
	in.ResourceUsages.DeepCopyInto(&out.ResourceUsages)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVStore.
func (in *TiKVStore) DeepCopy() *TiKVStore {
	if in == nil {
		return nil
	}
	out := new(TiKVStore)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVTitanCfConfig) DeepCopyInto(out *TiKVTitanCfConfig) {
	*out = *in
	if in.MinBlobSize != nil {
		in, out := &in.MinBlobSize, &out.MinBlobSize
		*out = new(string)
		**out = **in
	}
	if in.BlobFileCompression != nil {
		in, out := &in.BlobFileCompression, &out.BlobFileCompression
		*out = new(string)
		**out = **in
	}
	if in.BlobCacheSize != nil {
		in, out := &in.BlobCacheSize, &out.BlobCacheSize
		*out = new(string)
		**out = **in
	}
	if in.MinGcBatchSize != nil {
		in, out := &in.MinGcBatchSize, &out.MinGcBatchSize
		*out = new(string)
		**out = **in
	}
	if in.MaxGcBatchSize != nil {
		in, out := &in.MaxGcBatchSize, &out.MaxGcBatchSize
		*out = new(string)
		**out = **in
	}
	if in.DiscardableRatio != nil {
		in, out := &in.DiscardableRatio, &out.DiscardableRatio
		*out = new(float64)
		**out = **in
	}
	if in.SampleRatio != nil {
		in, out := &in.SampleRatio, &out.SampleRatio
		*out = new(float64)
		**out = **in
	}
	if in.MergeSmallFileThreshold != nil {
		in, out := &in.MergeSmallFileThreshold, &out.MergeSmallFileThreshold
		*out = new(string)
		**out = **in
	}
	if in.BlobRunMode != nil {
		in, out := &in.BlobRunMode, &out.BlobRunMode
		*out = new(string)
		**out = **in
	}
	if in.LevelMerge != nil {
		in, out := &in.LevelMerge, &out.LevelMerge
		*out = new(bool)
		**out = **in
	}
	if in.GcMergeRewrite != nil {
		in, out := &in.GcMergeRewrite, &out.GcMergeRewrite
		*out = new(bool)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVTitanCfConfig.
func (in *TiKVTitanCfConfig) DeepCopy() *TiKVTitanCfConfig {
	if in == nil {
		return nil
	}
	out := new(TiKVTitanCfConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVTitanDBConfig) DeepCopyInto(out *TiKVTitanDBConfig) {
	*out = *in
	if in.Enabled != nil {
		in, out := &in.Enabled, &out.Enabled
		*out = new(bool)
		**out = **in
	}
	if in.Dirname != nil {
		in, out := &in.Dirname, &out.Dirname
		*out = new(string)
		**out = **in
	}
	if in.DisableGc != nil {
		in, out := &in.DisableGc, &out.DisableGc
		*out = new(bool)
		**out = **in
	}
	if in.MaxBackgroundGc != nil {
		in, out := &in.MaxBackgroundGc, &out.MaxBackgroundGc
		*out = new(int64)
		**out = **in
	}
	if in.PurgeObsoleteFilesPeriod != nil {
		in, out := &in.PurgeObsoleteFilesPeriod, &out.PurgeObsoleteFilesPeriod
		*out = new(string)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVTitanDBConfig.
func (in *TiKVTitanDBConfig) DeepCopy() *TiKVTitanDBConfig {
	if in == nil {
		return nil
	}
	out := new(TiKVTitanDBConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVUnifiedReadPoolConfig) DeepCopyInto(out *TiKVUnifiedReadPoolConfig) {
	*out = *in
	if in.MinThreadCount != nil {
		in, out := &in.MinThreadCount, &out.MinThreadCount
		*out = new(int32)
		**out = **in
	}
	if in.MaxThreadCount != nil {
		in, out := &in.MaxThreadCount, &out.MaxThreadCount
		*out = new(int32)
		**out = **in
	}
	if in.StackSize != nil {
		in, out := &in.StackSize, &out.StackSize
		*out = new(string)
		**out = **in
	}
	if in.MaxTasksPerWorker != nil {
		in, out := &in.MaxTasksPerWorker, &out.MaxTasksPerWorker
		*out = new(int32)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVUnifiedReadPoolConfig.
func (in *TiKVUnifiedReadPoolConfig) DeepCopy() *TiKVUnifiedReadPoolConfig {
	if in == nil {
		return nil
	}
	out := new(TiKVUnifiedReadPoolConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiProxySpec) DeepCopyInto(out *TiProxySpec) {
	*out = *in
	in.ComponentSpec.DeepCopyInto(&out.ComponentSpec)
	in.ResourceRequirements.DeepCopyInto(&out.ResourceRequirements)
	if in.TLSClientSecretName != nil {
		in, out := &in.TLSClientSecretName, &out.TLSClientSecretName
		*out = new(string)
		**out = **in
	}
	if in.Proxy != nil {
		in, out := &in.Proxy, &out.Proxy
		*out = new(config.ProxyServerOnline)
		**out = **in
	}
	if in.StorageVolumes != nil {
		in, out := &in.StorageVolumes, &out.StorageVolumes
		*out = make([]StorageVolume, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.StorageClassName != nil {
		in, out := &in.StorageClassName, &out.StorageClassName
		*out = new(string)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiProxySpec.
func (in *TiProxySpec) DeepCopy() *TiProxySpec {
	if in == nil {
		return nil
	}
	out := new(TiProxySpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiProxyStatus) DeepCopyInto(out *TiProxyStatus) {
	*out = *in
	if in.StatefulSet != nil {
		in, out := &in.StatefulSet, &out.StatefulSet
		*out = new(appsv1.StatefulSetStatus)
		(*in).DeepCopyInto(*out)
	}
	out.Proxy = in.Proxy
	if in.Volumes != nil {
		in, out := &in.Volumes, &out.Volumes
		*out = make(map[StorageVolumeName]*StorageVolumeStatus, len(*in))
		for key, val := range *in {
			var outVal *StorageVolumeStatus
			if val == nil {
				(*out)[key] = nil
			} else {
				in, out := &val, &outVal
				*out = new(StorageVolumeStatus)
				(*in).DeepCopyInto(*out)
			}
			(*out)[key] = outVal
		}
	}
	if in.Conditions != nil {
		in, out := &in.Conditions, &out.Conditions
		*out = make([]metav1.Condition, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiProxyStatus.
func (in *TiProxyStatus) DeepCopy() *TiProxyStatus {
	if in == nil {
		return nil
	}
	out := new(TiProxyStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TidbAutoScalerSpec) DeepCopyInto(out *TidbAutoScalerSpec) {
	*out = *in
	in.BasicAutoScalerSpec.DeepCopyInto(&out.BasicAutoScalerSpec)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TidbAutoScalerSpec.
func (in *TidbAutoScalerSpec) DeepCopy() *TidbAutoScalerSpec {
	if in == nil {
		return nil
	}
	out := new(TidbAutoScalerSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TidbAutoScalerStatus) DeepCopyInto(out *TidbAutoScalerStatus) {
	*out = *in
	in.BasicAutoScalerStatus.DeepCopyInto(&out.BasicAutoScalerStatus)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TidbAutoScalerStatus.
func (in *TidbAutoScalerStatus) DeepCopy() *TidbAutoScalerStatus {
	if in == nil {
		return nil
	}
	out := new(TidbAutoScalerStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TidbCluster) DeepCopyInto(out *TidbCluster) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	in.Spec.DeepCopyInto(&out.Spec)
	in.Status.DeepCopyInto(&out.Status)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TidbCluster.
func (in *TidbCluster) DeepCopy() *TidbCluster {
	if in == nil {
		return nil
	}
	out := new(TidbCluster)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *TidbCluster) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TidbClusterAutoScaler) DeepCopyInto(out *TidbClusterAutoScaler) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	in.Spec.DeepCopyInto(&out.Spec)
	in.Status.DeepCopyInto(&out.Status)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TidbClusterAutoScaler.
func (in *TidbClusterAutoScaler) DeepCopy() *TidbClusterAutoScaler {
	if in == nil {
		return nil
	}
	out := new(TidbClusterAutoScaler)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *TidbClusterAutoScaler) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TidbClusterAutoScalerList) DeepCopyInto(out *TidbClusterAutoScalerList) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ListMeta.DeepCopyInto(&out.ListMeta)
	if in.Items != nil {
		in, out := &in.Items, &out.Items
		*out = make([]TidbClusterAutoScaler, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TidbClusterAutoScalerList.
func (in *TidbClusterAutoScalerList) DeepCopy() *TidbClusterAutoScalerList {
	if in == nil {
		return nil
	}
	out := new(TidbClusterAutoScalerList)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *TidbClusterAutoScalerList) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TidbClusterAutoScalerRef) DeepCopyInto(out *TidbClusterAutoScalerRef) {
	*out = *in
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TidbClusterAutoScalerRef.
func (in *TidbClusterAutoScalerRef) DeepCopy() *TidbClusterAutoScalerRef {
	if in == nil {
		return nil
	}
	out := new(TidbClusterAutoScalerRef)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TidbClusterAutoScalerSpec) DeepCopyInto(out *TidbClusterAutoScalerSpec) {
	*out = *in
	out.Cluster = in.Cluster
	if in.TiKV != nil {
		in, out := &in.TiKV, &out.TiKV
		*out = new(TikvAutoScalerSpec)
		(*in).DeepCopyInto(*out)
	}
	if in.TiDB != nil {
		in, out := &in.TiDB, &out.TiDB
		*out = new(TidbAutoScalerSpec)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TidbClusterAutoScalerSpec.
func (in *TidbClusterAutoScalerSpec) DeepCopy() *TidbClusterAutoScalerSpec {
	if in == nil {
		return nil
	}
	out := new(TidbClusterAutoScalerSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TidbClusterAutoScalerStatus) DeepCopyInto(out *TidbClusterAutoScalerStatus) {
	*out = *in
	if in.TiKV != nil {
		in, out := &in.TiKV, &out.TiKV
		*out = make(map[string]TikvAutoScalerStatus, len(*in))
		for key, val := range *in {
			(*out)[key] = *val.DeepCopy()
		}
	}
	if in.TiDB != nil {
		in, out := &in.TiDB, &out.TiDB
		*out = make(map[string]TidbAutoScalerStatus, len(*in))
		for key, val := range *in {
			(*out)[key] = *val.DeepCopy()
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TidbClusterAutoScalerStatus.
func (in *TidbClusterAutoScalerStatus) DeepCopy() *TidbClusterAutoScalerStatus {
	if in == nil {
		return nil
	}
	out := new(TidbClusterAutoScalerStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TidbClusterCondition) DeepCopyInto(out *TidbClusterCondition) {
	*out = *in
	in.LastUpdateTime.DeepCopyInto(&out.LastUpdateTime)
	in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TidbClusterCondition.
func (in *TidbClusterCondition) DeepCopy() *TidbClusterCondition {
	if in == nil {
		return nil
	}
	out := new(TidbClusterCondition)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TidbClusterGroup) DeepCopyInto(out *TidbClusterGroup) {
	*out = *in
	if in.Clusters != nil {
		in, out := &in.Clusters, &out.Clusters
		*out = make([]TidbClusterRef, len(*in))
		copy(*out, *in)
	}
	if in.NotReadyMembers != nil {
		in, out := &in.NotReadyMembers, &out.NotReadyMembers
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	if in.ScalingClusters != nil {
		in, out := &in.ScalingClusters, &out.ScalingClusters
		*out = make([]TidbClusterRef, len(*in))
		copy(*out, *in)
	}
	if in.UpgradingClusters != nil {
		in, out := &in.UpgradingClusters, &out.UpgradingClusters
		*out = make([]TidbClusterRef, len(*in))
		copy(*out, *in)
	}
	if in.IsolatedClusters != nil {
		in, out := &in.IsolatedClusters, &out.IsolatedClusters
		*out = make([]TidbClusterRef, len(*in))
		copy(*out, *in)
	}
	in.LastReadyTime.DeepCopyInto(&out.LastReadyTime)
	in.LastUpgradeTime.DeepCopyInto(&out.LastUpgradeTime)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TidbClusterGroup.
func (in *TidbClusterGroup) DeepCopy() *TidbClusterGroup {
	if in == nil {
		return nil
	}
	out := new(TidbClusterGroup)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TidbClusterList) DeepCopyInto(out *TidbClusterList) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ListMeta.DeepCopyInto(&out.ListMeta)
	if in.Items != nil {
		in, out := &in.Items, &out.Items
		*out = make([]TidbCluster, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TidbClusterList.
func (in *TidbClusterList) DeepCopy() *TidbClusterList {
	if in == nil {
		return nil
	}
	out := new(TidbClusterList)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *TidbClusterList) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TidbClusterRef) DeepCopyInto(out *TidbClusterRef) {
	*out = *in
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TidbClusterRef.
func (in *TidbClusterRef) DeepCopy() *TidbClusterRef {
	if in == nil {
		return nil
	}
	out := new(TidbClusterRef)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TidbClusterSpec) DeepCopyInto(out *TidbClusterSpec) {
	*out = *in
	in.Discovery.DeepCopyInto(&out.Discovery)
	if in.PD != nil {
		in, out := &in.PD, &out.PD
		*out = new(PDSpec)
		(*in).DeepCopyInto(*out)
	}
	if in.TiDB != nil {
		in, out := &in.TiDB, &out.TiDB
		*out = new(TiDBSpec)
		(*in).DeepCopyInto(*out)
	}
	if in.TiKV != nil {
		in, out := &in.TiKV, &out.TiKV
		*out = new(TiKVSpec)
		(*in).DeepCopyInto(*out)
	}
	if in.TiFlash != nil {
		in, out := &in.TiFlash, &out.TiFlash
		*out = new(TiFlashSpec)
		(*in).DeepCopyInto(*out)
	}
	if in.TiCDC != nil {
		in, out := &in.TiCDC, &out.TiCDC
		*out = new(TiCDCSpec)
		(*in).DeepCopyInto(*out)
	}
	if in.TiProxy != nil {
		in, out := &in.TiProxy, &out.TiProxy
		*out = new(TiProxySpec)
		(*in).DeepCopyInto(*out)
	}
	if in.Pump != nil {
		in, out := &in.Pump, &out.Pump
		*out = new(PumpSpec)
		(*in).DeepCopyInto(*out)
	}
	if in.Helper != nil {
		in, out := &in.Helper, &out.Helper
		*out = new(HelperSpec)
		(*in).DeepCopyInto(*out)
	}
	if in.PVReclaimPolicy != nil {
		in, out := &in.PVReclaimPolicy, &out.PVReclaimPolicy
		*out = new(v1.PersistentVolumeReclaimPolicy)
		**out = **in
	}
	if in.ImagePullSecrets != nil {
		in, out := &in.ImagePullSecrets, &out.ImagePullSecrets
		*out = make([]v1.LocalObjectReference, len(*in))
		copy(*out, *in)
	}
	if in.EnablePVReclaim != nil {
		in, out := &in.EnablePVReclaim, &out.EnablePVReclaim
		*out = new(bool)
		**out = **in
	}
	if in.TLSCluster != nil {
		in, out := &in.TLSCluster, &out.TLSCluster
		*out = new(TLSCluster)
		**out = **in
	}
	if in.HostNetwork != nil {
		in, out := &in.HostNetwork, &out.HostNetwork
		*out = new(bool)
		**out = **in
	}
	if in.Affinity != nil {
		in, out := &in.Affinity, &out.Affinity
		*out = new(v1.Affinity)
		(*in).DeepCopyInto(*out)
	}
	if in.PriorityClassName != nil {
		in, out := &in.PriorityClassName, &out.PriorityClassName
		*out = new(string)
		**out = **in
	}
	if in.NodeSelector != nil {
		in, out := &in.NodeSelector, &out.NodeSelector
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	if in.Annotations != nil {
		in, out := &in.Annotations, &out.Annotations
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	if in.Labels != nil {
		in, out := &in.Labels, &out.Labels
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	if in.Tolerations != nil {
		in, out := &in.Tolerations, &out.Tolerations
		*out = make([]v1.Toleration, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.DNSConfig != nil {
		in, out := &in.DNSConfig, &out.DNSConfig
		*out = new(v1.PodDNSConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.Services != nil {
		in, out := &in.Services, &out.Services
		*out = make([]Service, len(*in))
		copy(*out, *in)
	}
	if in.EnableDynamicConfiguration != nil {
		in, out := &in.EnableDynamicConfiguration, &out.EnableDynamicConfiguration
		*out = new(bool)
		**out = **in
	}
	if in.Cluster != nil {
		in, out := &in.Cluster, &out.Cluster
		*out = new(TidbClusterRef)
		**out = **in
	}
	if in.PDAddresses != nil {
		in, out := &in.PDAddresses, &out.PDAddresses
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	if in.PodSecurityContext != nil {
		in, out := &in.PodSecurityContext, &out.PodSecurityContext
		*out = new(v1.PodSecurityContext)
		(*in).DeepCopyInto(*out)
	}
	if in.TopologySpreadConstraints != nil {
		in, out := &in.TopologySpreadConstraints, &out.TopologySpreadConstraints
		*out = make([]TopologySpreadConstraint, len(*in))
		copy(*out, *in)
	}
	if in.SuspendAction != nil {
		in, out := &in.SuspendAction, &out.SuspendAction
		*out = new(SuspendAction)
		**out = **in
	}
	if in.Blacklist != nil {
		in, out := &in.Blacklist, &out.Blacklist
		*out = new(Blacklist)
		(*in).DeepCopyInto(*out)
	}
	if in.PVReclaimDelayDuration != nil {
		in, out := &in.PVReclaimDelayDuration, &out.PVReclaimDelayDuration
		*out = new(string)
		**out = **in
	}
	if in.MultiAZ != nil {
		in, out := &in.MultiAZ, &out.MultiAZ
		*out = new(bool)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TidbClusterSpec.
func (in *TidbClusterSpec) DeepCopy() *TidbClusterSpec {
	if in == nil {
		return nil
	}
	out := new(TidbClusterSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TidbClusterStatus) DeepCopyInto(out *TidbClusterStatus) {
	*out = *in
	in.PD.DeepCopyInto(&out.PD)
	in.TiKV.DeepCopyInto(&out.TiKV)
	in.TiDB.DeepCopyInto(&out.TiDB)
	in.Pump.DeepCopyInto(&out.Pump)
	in.TiFlash.DeepCopyInto(&out.TiFlash)
	in.TiProxy.DeepCopyInto(&out.TiProxy)
	in.TiCDC.DeepCopyInto(&out.TiCDC)
	if in.Blacklist != nil {
		in, out := &in.Blacklist, &out.Blacklist
		*out = new(BlacklistStatus)
		**out = **in
	}
	if in.AutoScaler != nil {
		in, out := &in.AutoScaler, &out.AutoScaler
		*out = new(TidbClusterAutoScalerRef)
		**out = **in
	}
	if in.Conditions != nil {
		in, out := &in.Conditions, &out.Conditions
		*out = make([]TidbClusterCondition, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TidbClusterStatus.
func (in *TidbClusterStatus) DeepCopy() *TidbClusterStatus {
	if in == nil {
		return nil
	}
	out := new(TidbClusterStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TidbDashboard) DeepCopyInto(out *TidbDashboard) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	in.Spec.DeepCopyInto(&out.Spec)
	in.Status.DeepCopyInto(&out.Status)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TidbDashboard.
func (in *TidbDashboard) DeepCopy() *TidbDashboard {
	if in == nil {
		return nil
	}
	out := new(TidbDashboard)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *TidbDashboard) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TidbDashboardList) DeepCopyInto(out *TidbDashboardList) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ListMeta.DeepCopyInto(&out.ListMeta)
	if in.Items != nil {
		in, out := &in.Items, &out.Items
		*out = make([]TidbDashboard, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TidbDashboardList.
func (in *TidbDashboardList) DeepCopy() *TidbDashboardList {
	if in == nil {
		return nil
	}
	out := new(TidbDashboardList)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *TidbDashboardList) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TidbDashboardSpec) DeepCopyInto(out *TidbDashboardSpec) {
	*out = *in
	in.ComponentSpec.DeepCopyInto(&out.ComponentSpec)
	in.ResourceRequirements.DeepCopyInto(&out.ResourceRequirements)
	if in.Clusters != nil {
		in, out := &in.Clusters, &out.Clusters
		*out = make([]TidbClusterRef, len(*in))
		copy(*out, *in)
	}
	if in.PVReclaimPolicy != nil {
		in, out := &in.PVReclaimPolicy, &out.PVReclaimPolicy
		*out = new(v1.PersistentVolumeReclaimPolicy)
		**out = **in
	}
	if in.StorageClassName != nil {
		in, out := &in.StorageClassName, &out.StorageClassName
		*out = new(string)
		**out = **in
	}
	if in.StorageVolumes != nil {
		in, out := &in.StorageVolumes, &out.StorageVolumes
		*out = make([]StorageVolume, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.PathPrefix != nil {
		in, out := &in.PathPrefix, &out.PathPrefix
		*out = new(string)
		**out = **in
	}
	in.Service.DeepCopyInto(&out.Service)
	if in.Telemetry != nil {
		in, out := &in.Telemetry, &out.Telemetry
		*out = new(bool)
		**out = **in
	}
	if in.Experimental != nil {
		in, out := &in.Experimental, &out.Experimental
		*out = new(bool)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TidbDashboardSpec.
func (in *TidbDashboardSpec) DeepCopy() *TidbDashboardSpec {
	if in == nil {
		return nil
	}
	out := new(TidbDashboardSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TidbDashboardStatus) DeepCopyInto(out *TidbDashboardStatus) {
	*out = *in
	if in.StatefulSet != nil {
		in, out := &in.StatefulSet, &out.StatefulSet
		*out = new(appsv1.StatefulSetStatus)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TidbDashboardStatus.
func (in *TidbDashboardStatus) DeepCopy() *TidbDashboardStatus {
	if in == nil {
		return nil
	}
	out := new(TidbDashboardStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TidbInitializer) DeepCopyInto(out *TidbInitializer) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	in.Spec.DeepCopyInto(&out.Spec)
	in.Status.DeepCopyInto(&out.Status)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TidbInitializer.
func (in *TidbInitializer) DeepCopy() *TidbInitializer {
	if in == nil {
		return nil
	}
	out := new(TidbInitializer)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *TidbInitializer) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TidbInitializerList) DeepCopyInto(out *TidbInitializerList) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ListMeta.DeepCopyInto(&out.ListMeta)
	if in.Items != nil {
		in, out := &in.Items, &out.Items
		*out = make([]TidbInitializer, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TidbInitializerList.
func (in *TidbInitializerList) DeepCopy() *TidbInitializerList {
	if in == nil {
		return nil
	}
	out := new(TidbInitializerList)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *TidbInitializerList) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TidbInitializerSpec) DeepCopyInto(out *TidbInitializerSpec) {
	*out = *in
	out.Clusters = in.Clusters
	if in.PodSecurityContext != nil {
		in, out := &in.PodSecurityContext, &out.PodSecurityContext
		*out = new(v1.PodSecurityContext)
		(*in).DeepCopyInto(*out)
	}
	if in.ImagePullPolicy != nil {
		in, out := &in.ImagePullPolicy, &out.ImagePullPolicy
		*out = new(v1.PullPolicy)
		**out = **in
	}
	if in.ImagePullSecrets != nil {
		in, out := &in.ImagePullSecrets, &out.ImagePullSecrets
		*out = make([]v1.LocalObjectReference, len(*in))
		copy(*out, *in)
	}
	if in.PermitHost != nil {
		in, out := &in.PermitHost, &out.PermitHost
		*out = new(string)
		**out = **in
	}
	if in.InitSql != nil {
		in, out := &in.InitSql, &out.InitSql
		*out = new(string)
		**out = **in
	}
	if in.InitSqlConfigMap != nil {
		in, out := &in.InitSqlConfigMap, &out.InitSqlConfigMap
		*out = new(string)
		**out = **in
	}
	if in.PasswordSecret != nil {
		in, out := &in.PasswordSecret, &out.PasswordSecret
		*out = new(string)
		**out = **in
	}
	if in.Resources != nil {
		in, out := &in.Resources, &out.Resources
		*out = new(v1.ResourceRequirements)
		(*in).DeepCopyInto(*out)
	}
	if in.TLSClientSecretName != nil {
		in, out := &in.TLSClientSecretName, &out.TLSClientSecretName
		*out = new(string)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TidbInitializerSpec.
func (in *TidbInitializerSpec) DeepCopy() *TidbInitializerSpec {
	if in == nil {
		return nil
	}
	out := new(TidbInitializerSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TidbInitializerStatus) DeepCopyInto(out *TidbInitializerStatus) {
	*out = *in
	in.JobStatus.DeepCopyInto(&out.JobStatus)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TidbInitializerStatus.
func (in *TidbInitializerStatus) DeepCopy() *TidbInitializerStatus {
	if in == nil {
		return nil
	}
	out := new(TidbInitializerStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TidbMonitor) DeepCopyInto(out *TidbMonitor) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	in.Spec.DeepCopyInto(&out.Spec)
	in.Status.DeepCopyInto(&out.Status)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TidbMonitor.
func (in *TidbMonitor) DeepCopy() *TidbMonitor {
	if in == nil {
		return nil
	}
	out := new(TidbMonitor)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *TidbMonitor) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TidbMonitorList) DeepCopyInto(out *TidbMonitorList) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ListMeta.DeepCopyInto(&out.ListMeta)
	if in.Items != nil {
		in, out := &in.Items, &out.Items
		*out = make([]TidbMonitor, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TidbMonitorList.
func (in *TidbMonitorList) DeepCopy() *TidbMonitorList {
	if in == nil {
		return nil
	}
	out := new(TidbMonitorList)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *TidbMonitorList) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TidbMonitorRef) DeepCopyInto(out *TidbMonitorRef) {
	*out = *in
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TidbMonitorRef.
func (in *TidbMonitorRef) DeepCopy() *TidbMonitorRef {
	if in == nil {
		return nil
	}
	out := new(TidbMonitorRef)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TidbMonitorSpec) DeepCopyInto(out *TidbMonitorSpec) {
	*out = *in
	if in.Clusters != nil {
		in, out := &in.Clusters, &out.Clusters
		*out = make([]TidbClusterRef, len(*in))
		copy(*out, *in)
	}
	in.Prometheus.DeepCopyInto(&out.Prometheus)
	if in.Grafana != nil {
		in, out := &in.Grafana, &out.Grafana
		*out = new(GrafanaSpec)
		(*in).DeepCopyInto(*out)
	}
	in.Reloader.DeepCopyInto(&out.Reloader)
	in.Initializer.DeepCopyInto(&out.Initializer)
	if in.DM != nil {
		in, out := &in.DM, &out.DM
		*out = new(DMMonitorSpec)
		(*in).DeepCopyInto(*out)
	}
	if in.Thanos != nil {
		in, out := &in.Thanos, &out.Thanos
		*out = new(ThanosSpec)
		(*in).DeepCopyInto(*out)
	}
	if in.PrometheusReloader != nil {
		in, out := &in.PrometheusReloader, &out.PrometheusReloader
		*out = new(PrometheusReloaderSpec)
		(*in).DeepCopyInto(*out)
	}
	if in.PVReclaimPolicy != nil {
		in, out := &in.PVReclaimPolicy, &out.PVReclaimPolicy
		*out = new(v1.PersistentVolumeReclaimPolicy)
		**out = **in
	}
	if in.ImagePullSecrets != nil {
		in, out := &in.ImagePullSecrets, &out.ImagePullSecrets
		*out = make([]v1.LocalObjectReference, len(*in))
		copy(*out, *in)
	}
	if in.StorageClassName != nil {
		in, out := &in.StorageClassName, &out.StorageClassName
		*out = new(string)
		**out = **in
	}
	if in.NodeSelector != nil {
		in, out := &in.NodeSelector, &out.NodeSelector
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	if in.Annotations != nil {
		in, out := &in.Annotations, &out.Annotations
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	if in.Labels != nil {
		in, out := &in.Labels, &out.Labels
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	if in.Tolerations != nil {
		in, out := &in.Tolerations, &out.Tolerations
		*out = make([]v1.Toleration, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.KubePrometheusURL != nil {
		in, out := &in.KubePrometheusURL, &out.KubePrometheusURL
		*out = new(string)
		**out = **in
	}
	if in.AlertmanagerURL != nil {
		in, out := &in.AlertmanagerURL, &out.AlertmanagerURL
		*out = new(string)
		**out = **in
	}
	if in.AlertManagerRulesVersion != nil {
		in, out := &in.AlertManagerRulesVersion, &out.AlertManagerRulesVersion
		*out = new(string)
		**out = **in
	}
	if in.AdditionalContainers != nil {
		in, out := &in.AdditionalContainers, &out.AdditionalContainers
		*out = make([]v1.Container, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.ExternalLabels != nil {
		in, out := &in.ExternalLabels, &out.ExternalLabels
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	if in.ReplicaExternalLabelName != nil {
		in, out := &in.ReplicaExternalLabelName, &out.ReplicaExternalLabelName
		*out = new(string)
		**out = **in
	}
	if in.Replicas != nil {
		in, out := &in.Replicas, &out.Replicas
		*out = new(int32)
		**out = **in
	}
	if in.Shards != nil {
		in, out := &in.Shards, &out.Shards
		*out = new(int32)
		**out = **in
	}
	if in.AdditionalVolumes != nil {
		in, out := &in.AdditionalVolumes, &out.AdditionalVolumes
		*out = make([]v1.Volume, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.PodSecurityContext != nil {
		in, out := &in.PodSecurityContext, &out.PodSecurityContext
		*out = new(v1.PodSecurityContext)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TidbMonitorSpec.
func (in *TidbMonitorSpec) DeepCopy() *TidbMonitorSpec {
	if in == nil {
		return nil
	}
	out := new(TidbMonitorSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TidbMonitorStatus) DeepCopyInto(out *TidbMonitorStatus) {
	*out = *in
	if in.DeploymentStorageStatus != nil {
		in, out := &in.DeploymentStorageStatus, &out.DeploymentStorageStatus
		*out = new(DeploymentStorageStatus)
		**out = **in
	}
	if in.StatefulSet != nil {
		in, out := &in.StatefulSet, &out.StatefulSet
		*out = new(appsv1.StatefulSetStatus)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TidbMonitorStatus.
func (in *TidbMonitorStatus) DeepCopy() *TidbMonitorStatus {
	if in == nil {
		return nil
	}
	out := new(TidbMonitorStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TidbNGMonitoring) DeepCopyInto(out *TidbNGMonitoring) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	in.Spec.DeepCopyInto(&out.Spec)
	in.Status.DeepCopyInto(&out.Status)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TidbNGMonitoring.
func (in *TidbNGMonitoring) DeepCopy() *TidbNGMonitoring {
	if in == nil {
		return nil
	}
	out := new(TidbNGMonitoring)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *TidbNGMonitoring) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TidbNGMonitoringList) DeepCopyInto(out *TidbNGMonitoringList) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ListMeta.DeepCopyInto(&out.ListMeta)
	if in.Items != nil {
		in, out := &in.Items, &out.Items
		*out = make([]TidbNGMonitoring, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TidbNGMonitoringList.
func (in *TidbNGMonitoringList) DeepCopy() *TidbNGMonitoringList {
	if in == nil {
		return nil
	}
	out := new(TidbNGMonitoringList)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *TidbNGMonitoringList) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TidbNGMonitoringSpec) DeepCopyInto(out *TidbNGMonitoringSpec) {
	*out = *in
	in.ComponentSpec.DeepCopyInto(&out.ComponentSpec)
	if in.Clusters != nil {
		in, out := &in.Clusters, &out.Clusters
		*out = make([]TidbClusterRef, len(*in))
		copy(*out, *in)
	}
	if in.PVReclaimPolicy != nil {
		in, out := &in.PVReclaimPolicy, &out.PVReclaimPolicy
		*out = new(v1.PersistentVolumeReclaimPolicy)
		**out = **in
	}
	in.NGMonitoring.DeepCopyInto(&out.NGMonitoring)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TidbNGMonitoringSpec.
func (in *TidbNGMonitoringSpec) DeepCopy() *TidbNGMonitoringSpec {
	if in == nil {
		return nil
	}
	out := new(TidbNGMonitoringSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TidbNGMonitoringStatus) DeepCopyInto(out *TidbNGMonitoringStatus) {
	*out = *in
	in.NGMonitoring.DeepCopyInto(&out.NGMonitoring)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TidbNGMonitoringStatus.
func (in *TidbNGMonitoringStatus) DeepCopy() *TidbNGMonitoringStatus {
	if in == nil {
		return nil
	}
	out := new(TidbNGMonitoringStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TikvAutoScalerSpec) DeepCopyInto(out *TikvAutoScalerSpec) {
	*out = *in
	in.BasicAutoScalerSpec.DeepCopyInto(&out.BasicAutoScalerSpec)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TikvAutoScalerSpec.
func (in *TikvAutoScalerSpec) DeepCopy() *TikvAutoScalerSpec {
	if in == nil {
		return nil
	}
	out := new(TikvAutoScalerSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TikvAutoScalerStatus) DeepCopyInto(out *TikvAutoScalerStatus) {
	*out = *in
	in.BasicAutoScalerStatus.DeepCopyInto(&out.BasicAutoScalerStatus)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TikvAutoScalerStatus.
func (in *TikvAutoScalerStatus) DeepCopy() *TikvAutoScalerStatus {
	if in == nil {
		return nil
	}
	out := new(TikvAutoScalerStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TopologySpreadConstraint) DeepCopyInto(out *TopologySpreadConstraint) {
	*out = *in
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TopologySpreadConstraint.
func (in *TopologySpreadConstraint) DeepCopy() *TopologySpreadConstraint {
	if in == nil {
		return nil
	}
	out := new(TopologySpreadConstraint)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TxnLocalLatches) DeepCopyInto(out *TxnLocalLatches) {
	*out = *in
	if in.Enabled != nil {
		in, out := &in.Enabled, &out.Enabled
		*out = new(bool)
		**out = **in
	}
	if in.Capacity != nil {
		in, out := &in.Capacity, &out.Capacity
		*out = new(uint)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TxnLocalLatches.
func (in *TxnLocalLatches) DeepCopy() *TxnLocalLatches {
	if in == nil {
		return nil
	}
	out := new(TxnLocalLatches)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *UnjoinedMember) DeepCopyInto(out *UnjoinedMember) {
	*out = *in
	if in.PVCUIDSet != nil {
		in, out := &in.PVCUIDSet, &out.PVCUIDSet
		*out = make(map[types.UID]EmptyStruct, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	in.CreatedAt.DeepCopyInto(&out.CreatedAt)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UnjoinedMember.
func (in *UnjoinedMember) DeepCopy() *UnjoinedMember {
	if in == nil {
		return nil
	}
	out := new(UnjoinedMember)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *User) DeepCopyInto(out *User) {
	*out = *in
	if in.Profile != nil {
		in, out := &in.Profile, &out.Profile
		*out = new(string)
		**out = **in
	}
	if in.Quota != nil {
		in, out := &in.Quota, &out.Quota
		*out = new(string)
		**out = **in
	}
	if in.Networks != nil {
		in, out := &in.Networks, &out.Networks
		*out = new(Networks)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new User.
func (in *User) DeepCopy() *User {
	if in == nil {
		return nil
	}
	out := new(User)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *WorkerConfig) DeepCopyInto(out *WorkerConfig) {
	*out = *in
	if in.LogLevel != nil {
		in, out := &in.LogLevel, &out.LogLevel
		*out = new(string)
		**out = **in
	}
	if in.LogFile != nil {
		in, out := &in.LogFile, &out.LogFile
		*out = new(string)
		**out = **in
	}
	if in.LogFormat != nil {
		in, out := &in.LogFormat, &out.LogFormat
		*out = new(string)
		**out = **in
	}
	if in.KeepAliveTTL != nil {
		in, out := &in.KeepAliveTTL, &out.KeepAliveTTL
		*out = new(int64)
		**out = **in
	}
	in.DMSecurityConfig.DeepCopyInto(&out.DMSecurityConfig)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkerConfig.
func (in *WorkerConfig) DeepCopy() *WorkerConfig {
	if in == nil {
		return nil
	}
	out := new(WorkerConfig)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *WorkerConfigWraper) DeepCopyInto(out *WorkerConfigWraper) {
	*out = *in
	if in.GenericConfig != nil {
		in, out := &in.GenericConfig, &out.GenericConfig
		*out = (*in).DeepCopy()
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkerConfigWraper.
func (in *WorkerConfigWraper) DeepCopy() *WorkerConfigWraper {
	if in == nil {
		return nil
	}
	out := new(WorkerConfigWraper)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *WorkerFailureMember) DeepCopyInto(out *WorkerFailureMember) {
	*out = *in
	in.CreatedAt.DeepCopyInto(&out.CreatedAt)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkerFailureMember.
func (in *WorkerFailureMember) DeepCopy() *WorkerFailureMember {
	if in == nil {
		return nil
	}
	out := new(WorkerFailureMember)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *WorkerMember) DeepCopyInto(out *WorkerMember) {
	*out = *in
	in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkerMember.
func (in *WorkerMember) DeepCopy() *WorkerMember {
	if in == nil {
		return nil
	}
	out := new(WorkerMember)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *WorkerSpec) DeepCopyInto(out *WorkerSpec) {
	*out = *in
	in.ComponentSpec.DeepCopyInto(&out.ComponentSpec)
	in.ResourceRequirements.DeepCopyInto(&out.ResourceRequirements)
	if in.MaxFailoverCount != nil {
		in, out := &in.MaxFailoverCount, &out.MaxFailoverCount
		*out = new(int32)
		**out = **in
	}
	if in.StorageClassName != nil {
		in, out := &in.StorageClassName, &out.StorageClassName
		*out = new(string)
		**out = **in
	}
	if in.Config != nil {
		in, out := &in.Config, &out.Config
		*out = new(WorkerConfigWraper)
		(*in).DeepCopyInto(*out)
	}
	if in.Failover != nil {
		in, out := &in.Failover, &out.Failover
		*out = new(Failover)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkerSpec.
func (in *WorkerSpec) DeepCopy() *WorkerSpec {
	if in == nil {
		return nil
	}
	out := new(WorkerSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *WorkerStatus) DeepCopyInto(out *WorkerStatus) {
	*out = *in
	if in.StatefulSet != nil {
		in, out := &in.StatefulSet, &out.StatefulSet
		*out = new(appsv1.StatefulSetStatus)
		(*in).DeepCopyInto(*out)
	}
	if in.Members != nil {
		in, out := &in.Members, &out.Members
		*out = make(map[string]WorkerMember, len(*in))
		for key, val := range *in {
			(*out)[key] = *val.DeepCopy()
		}
	}
	if in.FailureMembers != nil {
		in, out := &in.FailureMembers, &out.FailureMembers
		*out = make(map[string]WorkerFailureMember, len(*in))
		for key, val := range *in {
			(*out)[key] = *val.DeepCopy()
		}
	}
	if in.Volumes != nil {
		in, out := &in.Volumes, &out.Volumes
		*out = make(map[StorageVolumeName]*StorageVolumeStatus, len(*in))
		for key, val := range *in {
			var outVal *StorageVolumeStatus
			if val == nil {
				(*out)[key] = nil
			} else {
				in, out := &val, &outVal
				*out = new(StorageVolumeStatus)
				(*in).DeepCopyInto(*out)
			}
			(*out)[key] = outVal
		}
	}
	if in.Conditions != nil {
		in, out := &in.Conditions, &out.Conditions
		*out = make([]metav1.Condition, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkerStatus.
func (in *WorkerStatus) DeepCopy() *WorkerStatus {
	if in == nil {
		return nil
	}
	out := new(WorkerStatus)
	in.DeepCopyInto(out)
	return out
}
