1// Code generated by protoc-gen-gogo. DO NOT EDIT.
2// source: envoy/api/v2/cds.proto
3
4package v2
5
6import proto "github.com/gogo/protobuf/proto"
7import fmt "fmt"
8import math "math"
9import auth "github.com/envoyproxy/go-control-plane/envoy/api/v2/auth"
10import cluster "github.com/envoyproxy/go-control-plane/envoy/api/v2/cluster"
11import core "github.com/envoyproxy/go-control-plane/envoy/api/v2/core"
12import _type "github.com/envoyproxy/go-control-plane/envoy/type"
13import _ "github.com/gogo/googleapis/google/api"
14import _ "github.com/gogo/protobuf/gogoproto"
15import types "github.com/gogo/protobuf/types"
16import _ "github.com/lyft/protoc-gen-validate/validate"
17
18import time "time"
19
20import bytes "bytes"
21
22import context "golang.org/x/net/context"
23import grpc "google.golang.org/grpc"
24
25import github_com_gogo_protobuf_types "github.com/gogo/protobuf/types"
26
27import io "io"
28
29// Reference imports to suppress errors if they are not otherwise used.
30var _ = proto.Marshal
31var _ = fmt.Errorf
32var _ = math.Inf
33var _ = time.Kitchen
34
35// This is a compile-time assertion to ensure that this generated file
36// is compatible with the proto package it is being compiled against.
37// A compilation error at this line likely means your copy of the
38// proto package needs to be updated.
39const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package
40
41// Refer to :ref:`service discovery type <arch_overview_service_discovery_types>`
42// for an explanation on each type.
43type Cluster_DiscoveryType int32
44
45const (
46	// Refer to the :ref:`static discovery type<arch_overview_service_discovery_types_static>`
47	// for an explanation.
48	Cluster_STATIC Cluster_DiscoveryType = 0
49	// Refer to the :ref:`strict DNS discovery
50	// type<arch_overview_service_discovery_types_strict_dns>`
51	// for an explanation.
52	Cluster_STRICT_DNS Cluster_DiscoveryType = 1
53	// Refer to the :ref:`logical DNS discovery
54	// type<arch_overview_service_discovery_types_logical_dns>`
55	// for an explanation.
56	Cluster_LOGICAL_DNS Cluster_DiscoveryType = 2
57	// Refer to the :ref:`service discovery type<arch_overview_service_discovery_types_sds>`
58	// for an explanation.
59	Cluster_EDS Cluster_DiscoveryType = 3
60	// Refer to the :ref:`original destination discovery
61	// type<arch_overview_service_discovery_types_original_destination>`
62	// for an explanation.
63	Cluster_ORIGINAL_DST Cluster_DiscoveryType = 4
64)
65
66var Cluster_DiscoveryType_name = map[int32]string{
67	0: "STATIC",
68	1: "STRICT_DNS",
69	2: "LOGICAL_DNS",
70	3: "EDS",
71	4: "ORIGINAL_DST",
72}
73var Cluster_DiscoveryType_value = map[string]int32{
74	"STATIC":       0,
75	"STRICT_DNS":   1,
76	"LOGICAL_DNS":  2,
77	"EDS":          3,
78	"ORIGINAL_DST": 4,
79}
80
81func (x Cluster_DiscoveryType) String() string {
82	return proto.EnumName(Cluster_DiscoveryType_name, int32(x))
83}
84func (Cluster_DiscoveryType) EnumDescriptor() ([]byte, []int) {
85	return fileDescriptor_cds_c9aad078b729c273, []int{0, 0}
86}
87
88// Refer to :ref:`load balancer type <arch_overview_load_balancing_types>` architecture
89// overview section for information on each type.
90type Cluster_LbPolicy int32
91
92const (
93	// Refer to the :ref:`round robin load balancing
94	// policy<arch_overview_load_balancing_types_round_robin>`
95	// for an explanation.
96	Cluster_ROUND_ROBIN Cluster_LbPolicy = 0
97	// Refer to the :ref:`least request load balancing
98	// policy<arch_overview_load_balancing_types_least_request>`
99	// for an explanation.
100	Cluster_LEAST_REQUEST Cluster_LbPolicy = 1
101	// Refer to the :ref:`ring hash load balancing
102	// policy<arch_overview_load_balancing_types_ring_hash>`
103	// for an explanation.
104	Cluster_RING_HASH Cluster_LbPolicy = 2
105	// Refer to the :ref:`random load balancing
106	// policy<arch_overview_load_balancing_types_random>`
107	// for an explanation.
108	Cluster_RANDOM Cluster_LbPolicy = 3
109	// Refer to the :ref:`original destination load balancing
110	// policy<arch_overview_load_balancing_types_original_destination>`
111	// for an explanation.
112	Cluster_ORIGINAL_DST_LB Cluster_LbPolicy = 4
113	// Refer to the :ref:`Maglev load balancing policy<arch_overview_load_balancing_types_maglev>`
114	// for an explanation.
115	Cluster_MAGLEV Cluster_LbPolicy = 5
116)
117
118var Cluster_LbPolicy_name = map[int32]string{
119	0: "ROUND_ROBIN",
120	1: "LEAST_REQUEST",
121	2: "RING_HASH",
122	3: "RANDOM",
123	4: "ORIGINAL_DST_LB",
124	5: "MAGLEV",
125}
126var Cluster_LbPolicy_value = map[string]int32{
127	"ROUND_ROBIN":     0,
128	"LEAST_REQUEST":   1,
129	"RING_HASH":       2,
130	"RANDOM":          3,
131	"ORIGINAL_DST_LB": 4,
132	"MAGLEV":          5,
133}
134
135func (x Cluster_LbPolicy) String() string {
136	return proto.EnumName(Cluster_LbPolicy_name, int32(x))
137}
138func (Cluster_LbPolicy) EnumDescriptor() ([]byte, []int) {
139	return fileDescriptor_cds_c9aad078b729c273, []int{0, 1}
140}
141
142// When V4_ONLY is selected, the DNS resolver will only perform a lookup for
143// addresses in the IPv4 family. If V6_ONLY is selected, the DNS resolver will
144// only perform a lookup for addresses in the IPv6 family. If AUTO is
145// specified, the DNS resolver will first perform a lookup for addresses in
146// the IPv6 family and fallback to a lookup for addresses in the IPv4 family.
147// For cluster types other than
148// :ref:`STRICT_DNS<envoy_api_enum_value_Cluster.DiscoveryType.STRICT_DNS>` and
149// :ref:`LOGICAL_DNS<envoy_api_enum_value_Cluster.DiscoveryType.LOGICAL_DNS>`,
150// this setting is
151// ignored.
152type Cluster_DnsLookupFamily int32
153
154const (
155	Cluster_AUTO    Cluster_DnsLookupFamily = 0
156	Cluster_V4_ONLY Cluster_DnsLookupFamily = 1
157	Cluster_V6_ONLY Cluster_DnsLookupFamily = 2
158)
159
160var Cluster_DnsLookupFamily_name = map[int32]string{
161	0: "AUTO",
162	1: "V4_ONLY",
163	2: "V6_ONLY",
164}
165var Cluster_DnsLookupFamily_value = map[string]int32{
166	"AUTO":    0,
167	"V4_ONLY": 1,
168	"V6_ONLY": 2,
169}
170
171func (x Cluster_DnsLookupFamily) String() string {
172	return proto.EnumName(Cluster_DnsLookupFamily_name, int32(x))
173}
174func (Cluster_DnsLookupFamily) EnumDescriptor() ([]byte, []int) {
175	return fileDescriptor_cds_c9aad078b729c273, []int{0, 2}
176}
177
178type Cluster_ClusterProtocolSelection int32
179
180const (
181	// Cluster can only operate on one of the possible upstream protocols (HTTP1.1, HTTP2).
182	// If :ref:`http2_protocol_options <envoy_api_field_Cluster.http2_protocol_options>` are
183	// present, HTTP2 will be used, otherwise HTTP1.1 will be used.
184	Cluster_USE_CONFIGURED_PROTOCOL Cluster_ClusterProtocolSelection = 0
185	// Use HTTP1.1 or HTTP2, depending on which one is used on the downstream connection.
186	Cluster_USE_DOWNSTREAM_PROTOCOL Cluster_ClusterProtocolSelection = 1
187)
188
189var Cluster_ClusterProtocolSelection_name = map[int32]string{
190	0: "USE_CONFIGURED_PROTOCOL",
191	1: "USE_DOWNSTREAM_PROTOCOL",
192}
193var Cluster_ClusterProtocolSelection_value = map[string]int32{
194	"USE_CONFIGURED_PROTOCOL": 0,
195	"USE_DOWNSTREAM_PROTOCOL": 1,
196}
197
198func (x Cluster_ClusterProtocolSelection) String() string {
199	return proto.EnumName(Cluster_ClusterProtocolSelection_name, int32(x))
200}
201func (Cluster_ClusterProtocolSelection) EnumDescriptor() ([]byte, []int) {
202	return fileDescriptor_cds_c9aad078b729c273, []int{0, 3}
203}
204
205// If NO_FALLBACK is selected, a result
206// equivalent to no healthy hosts is reported. If ANY_ENDPOINT is selected,
207// any cluster endpoint may be returned (subject to policy, health checks,
208// etc). If DEFAULT_SUBSET is selected, load balancing is performed over the
209// endpoints matching the values from the default_subset field.
210type Cluster_LbSubsetConfig_LbSubsetFallbackPolicy int32
211
212const (
213	Cluster_LbSubsetConfig_NO_FALLBACK    Cluster_LbSubsetConfig_LbSubsetFallbackPolicy = 0
214	Cluster_LbSubsetConfig_ANY_ENDPOINT   Cluster_LbSubsetConfig_LbSubsetFallbackPolicy = 1
215	Cluster_LbSubsetConfig_DEFAULT_SUBSET Cluster_LbSubsetConfig_LbSubsetFallbackPolicy = 2
216)
217
218var Cluster_LbSubsetConfig_LbSubsetFallbackPolicy_name = map[int32]string{
219	0: "NO_FALLBACK",
220	1: "ANY_ENDPOINT",
221	2: "DEFAULT_SUBSET",
222}
223var Cluster_LbSubsetConfig_LbSubsetFallbackPolicy_value = map[string]int32{
224	"NO_FALLBACK":    0,
225	"ANY_ENDPOINT":   1,
226	"DEFAULT_SUBSET": 2,
227}
228
229func (x Cluster_LbSubsetConfig_LbSubsetFallbackPolicy) String() string {
230	return proto.EnumName(Cluster_LbSubsetConfig_LbSubsetFallbackPolicy_name, int32(x))
231}
232func (Cluster_LbSubsetConfig_LbSubsetFallbackPolicy) EnumDescriptor() ([]byte, []int) {
233	return fileDescriptor_cds_c9aad078b729c273, []int{0, 2, 0}
234}
235
236// Configuration for a single upstream cluster.
237// [#comment:next free field: 36]
238type Cluster struct {
239	// Supplies the name of the cluster which must be unique across all clusters.
240	// The cluster name is used when emitting
241	// :ref:`statistics <config_cluster_manager_cluster_stats>` if :ref:`alt_stat_name
242	// <envoy_api_field_Cluster.alt_stat_name>` is not provided.
243	// Any ``:`` in the cluster name will be converted to ``_`` when emitting statistics.
244	// By default, the maximum length of a cluster name is limited to 60
245	// characters. This limit can be increased by setting the
246	// :option:`--max-obj-name-len` command line argument to the desired value.
247	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
248	// An optional alternative to the cluster name to be used while emitting stats.
249	// Any ``:`` in the name will be converted to ``_`` when emitting statistics. This should not be
250	// confused with :ref:`Router Filter Header
251	// <config_http_filters_router_x-envoy-upstream-alt-stat-name>`.
252	AltStatName string `protobuf:"bytes,28,opt,name=alt_stat_name,json=altStatName,proto3" json:"alt_stat_name,omitempty"`
253	// The :ref:`service discovery type <arch_overview_service_discovery_types>`
254	// to use for resolving the cluster.
255	Type Cluster_DiscoveryType `protobuf:"varint,2,opt,name=type,proto3,enum=envoy.api.v2.Cluster_DiscoveryType" json:"type,omitempty"`
256	// Configuration to use for EDS updates for the Cluster.
257	EdsClusterConfig *Cluster_EdsClusterConfig `protobuf:"bytes,3,opt,name=eds_cluster_config,json=edsClusterConfig" json:"eds_cluster_config,omitempty"`
258	// The timeout for new network connections to hosts in the cluster.
259	ConnectTimeout time.Duration `protobuf:"bytes,4,opt,name=connect_timeout,json=connectTimeout,stdduration" json:"connect_timeout"`
260	// Soft limit on size of the cluster’s connections read and write buffers. If
261	// unspecified, an implementation defined default is applied (1MiB).
262	PerConnectionBufferLimitBytes *types.UInt32Value `protobuf:"bytes,5,opt,name=per_connection_buffer_limit_bytes,json=perConnectionBufferLimitBytes" json:"per_connection_buffer_limit_bytes,omitempty"`
263	// The :ref:`load balancer type <arch_overview_load_balancing_types>` to use
264	// when picking a host in the cluster.
265	LbPolicy Cluster_LbPolicy `protobuf:"varint,6,opt,name=lb_policy,json=lbPolicy,proto3,enum=envoy.api.v2.Cluster_LbPolicy" json:"lb_policy,omitempty"`
266	// If the service discovery type is
267	// :ref:`STATIC<envoy_api_enum_value_Cluster.DiscoveryType.STATIC>`,
268	// :ref:`STRICT_DNS<envoy_api_enum_value_Cluster.DiscoveryType.STRICT_DNS>`
269	// or :ref:`LOGICAL_DNS<envoy_api_enum_value_Cluster.DiscoveryType.LOGICAL_DNS>`,
270	// then hosts is required.
271	//
272	// .. attention::
273	//
274	//   **This field is deprecated**. Set the
275	//   :ref:`load_assignment<envoy_api_field_Cluster.load_assignment>` field instead.
276	//
277	Hosts []*core.Address `protobuf:"bytes,7,rep,name=hosts" json:"hosts,omitempty"` // Deprecated: Do not use.
278	// Setting this is required for specifying members of
279	// :ref:`STATIC<envoy_api_enum_value_Cluster.DiscoveryType.STATIC>`,
280	// :ref:`STRICT_DNS<envoy_api_enum_value_Cluster.DiscoveryType.STRICT_DNS>`
281	// or :ref:`LOGICAL_DNS<envoy_api_enum_value_Cluster.DiscoveryType.LOGICAL_DNS>` clusters.
282	// This field supersedes :ref:`hosts<envoy_api_field_Cluster.hosts>` field.
283	// [#comment:TODO(dio): Deprecate the hosts field and add it to DEPRECATED.md
284	// once load_assignment is implemented.]
285	//
286	// .. attention::
287	//
288	//   Setting this allows non-EDS cluster types to contain embedded EDS equivalent
289	//   :ref:`endpoint assignments<envoy_api_msg_ClusterLoadAssignment>`.
290	//   Setting this overrides :ref:`hosts<envoy_api_field_Cluster.hosts>` values.
291	//
292	LoadAssignment *ClusterLoadAssignment `protobuf:"bytes,33,opt,name=load_assignment,json=loadAssignment" json:"load_assignment,omitempty"`
293	// Optional :ref:`active health checking <arch_overview_health_checking>`
294	// configuration for the cluster. If no
295	// configuration is specified no health checking will be done and all cluster
296	// members will be considered healthy at all times.
297	HealthChecks []*core.HealthCheck `protobuf:"bytes,8,rep,name=health_checks,json=healthChecks" json:"health_checks,omitempty"`
298	// Optional maximum requests for a single upstream connection. This parameter
299	// is respected by both the HTTP/1.1 and HTTP/2 connection pool
300	// implementations. If not specified, there is no limit. Setting this
301	// parameter to 1 will effectively disable keep alive.
302	MaxRequestsPerConnection *types.UInt32Value `protobuf:"bytes,9,opt,name=max_requests_per_connection,json=maxRequestsPerConnection" json:"max_requests_per_connection,omitempty"`
303	// Optional :ref:`circuit breaking <arch_overview_circuit_break>` for the cluster.
304	CircuitBreakers *cluster.CircuitBreakers `protobuf:"bytes,10,opt,name=circuit_breakers,json=circuitBreakers" json:"circuit_breakers,omitempty"`
305	// The TLS configuration for connections to the upstream cluster. If no TLS
306	// configuration is specified, TLS will not be used for new connections.
307	//
308	// .. attention::
309	//
310	//   Server certificate verification is not enabled by default. Configure
311	//   :ref:`trusted_ca<envoy_api_field_auth.CertificateValidationContext.trusted_ca>` to enable
312	//   verification.
313	TlsContext *auth.UpstreamTlsContext `protobuf:"bytes,11,opt,name=tls_context,json=tlsContext" json:"tls_context,omitempty"`
314	// Additional options when handling HTTP requests. These options will be applicable to both
315	// HTTP1 and HTTP2 requests.
316	CommonHttpProtocolOptions *core.HttpProtocolOptions `protobuf:"bytes,29,opt,name=common_http_protocol_options,json=commonHttpProtocolOptions" json:"common_http_protocol_options,omitempty"`
317	// Additional options when handling HTTP1 requests.
318	HttpProtocolOptions *core.Http1ProtocolOptions `protobuf:"bytes,13,opt,name=http_protocol_options,json=httpProtocolOptions" json:"http_protocol_options,omitempty"`
319	// Even if default HTTP2 protocol options are desired, this field must be
320	// set so that Envoy will assume that the upstream supports HTTP/2 when
321	// making new HTTP connection pool connections. Currently, Envoy only
322	// supports prior knowledge for upstream connections. Even if TLS is used
323	// with ALPN, `http2_protocol_options` must be specified. As an aside this allows HTTP/2
324	// connections to happen over plain text.
325	Http2ProtocolOptions *core.Http2ProtocolOptions `protobuf:"bytes,14,opt,name=http2_protocol_options,json=http2ProtocolOptions" json:"http2_protocol_options,omitempty"`
326	// The extension_protocol_options field is used to provide extension-specific protocol options
327	// for upstream connections. The key should match the extension filter name, such as
328	// "envoy.filters.network.thrift_proxy". See the extension's documentation for details on
329	// specific options.
330	ExtensionProtocolOptions map[string]*types.Struct `protobuf:"bytes,35,rep,name=extension_protocol_options,json=extensionProtocolOptions" json:"extension_protocol_options,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value"`
331	// If the DNS refresh rate is specified and the cluster type is either
332	// :ref:`STRICT_DNS<envoy_api_enum_value_Cluster.DiscoveryType.STRICT_DNS>`,
333	// or :ref:`LOGICAL_DNS<envoy_api_enum_value_Cluster.DiscoveryType.LOGICAL_DNS>`,
334	// this value is used as the cluster’s DNS refresh
335	// rate. If this setting is not specified, the value defaults to 5000. For
336	// cluster types other than
337	// :ref:`STRICT_DNS<envoy_api_enum_value_Cluster.DiscoveryType.STRICT_DNS>`
338	// and :ref:`LOGICAL_DNS<envoy_api_enum_value_Cluster.DiscoveryType.LOGICAL_DNS>`
339	// this setting is ignored.
340	DnsRefreshRate *time.Duration `protobuf:"bytes,16,opt,name=dns_refresh_rate,json=dnsRefreshRate,stdduration" json:"dns_refresh_rate,omitempty"`
341	// The DNS IP address resolution policy. If this setting is not specified, the
342	// value defaults to
343	// :ref:`AUTO<envoy_api_enum_value_Cluster.DnsLookupFamily.AUTO>`.
344	DnsLookupFamily Cluster_DnsLookupFamily `protobuf:"varint,17,opt,name=dns_lookup_family,json=dnsLookupFamily,proto3,enum=envoy.api.v2.Cluster_DnsLookupFamily" json:"dns_lookup_family,omitempty"`
345	// If DNS resolvers are specified and the cluster type is either
346	// :ref:`STRICT_DNS<envoy_api_enum_value_Cluster.DiscoveryType.STRICT_DNS>`,
347	// or :ref:`LOGICAL_DNS<envoy_api_enum_value_Cluster.DiscoveryType.LOGICAL_DNS>`,
348	// this value is used to specify the cluster’s dns resolvers.
349	// If this setting is not specified, the value defaults to the default
350	// resolver, which uses /etc/resolv.conf for configuration. For cluster types
351	// other than
352	// :ref:`STRICT_DNS<envoy_api_enum_value_Cluster.DiscoveryType.STRICT_DNS>`
353	// and :ref:`LOGICAL_DNS<envoy_api_enum_value_Cluster.DiscoveryType.LOGICAL_DNS>`
354	// this setting is ignored.
355	DnsResolvers []*core.Address `protobuf:"bytes,18,rep,name=dns_resolvers,json=dnsResolvers" json:"dns_resolvers,omitempty"`
356	// If specified, outlier detection will be enabled for this upstream cluster.
357	// Each of the configuration values can be overridden via
358	// :ref:`runtime values <config_cluster_manager_cluster_runtime_outlier_detection>`.
359	OutlierDetection *cluster.OutlierDetection `protobuf:"bytes,19,opt,name=outlier_detection,json=outlierDetection" json:"outlier_detection,omitempty"`
360	// The interval for removing stale hosts from a cluster type
361	// :ref:`ORIGINAL_DST<envoy_api_enum_value_Cluster.DiscoveryType.ORIGINAL_DST>`.
362	// Hosts are considered stale if they have not been used
363	// as upstream destinations during this interval. New hosts are added
364	// to original destination clusters on demand as new connections are
365	// redirected to Envoy, causing the number of hosts in the cluster to
366	// grow over time. Hosts that are not stale (they are actively used as
367	// destinations) are kept in the cluster, which allows connections to
368	// them remain open, saving the latency that would otherwise be spent
369	// on opening new connections. If this setting is not specified, the
370	// value defaults to 5000ms. For cluster types other than
371	// :ref:`ORIGINAL_DST<envoy_api_enum_value_Cluster.DiscoveryType.ORIGINAL_DST>`
372	// this setting is ignored.
373	CleanupInterval *time.Duration `protobuf:"bytes,20,opt,name=cleanup_interval,json=cleanupInterval,stdduration" json:"cleanup_interval,omitempty"`
374	// Optional configuration used to bind newly established upstream connections.
375	// This overrides any bind_config specified in the bootstrap proto.
376	// If the address and port are empty, no bind will be performed.
377	UpstreamBindConfig *core.BindConfig `protobuf:"bytes,21,opt,name=upstream_bind_config,json=upstreamBindConfig" json:"upstream_bind_config,omitempty"`
378	// Configuration for load balancing subsetting.
379	LbSubsetConfig *Cluster_LbSubsetConfig `protobuf:"bytes,22,opt,name=lb_subset_config,json=lbSubsetConfig" json:"lb_subset_config,omitempty"`
380	// Optional configuration for the load balancing algorithm selected by
381	// LbPolicy. Currently only
382	// :ref:`RING_HASH<envoy_api_enum_value_Cluster.LbPolicy.RING_HASH>`
383	// has additional configuration options.
384	// Specifying ring_hash_lb_config without setting the LbPolicy to
385	// :ref:`RING_HASH<envoy_api_enum_value_Cluster.LbPolicy.RING_HASH>`
386	// will generate an error at runtime.
387	//
388	// Types that are valid to be assigned to LbConfig:
389	//	*Cluster_RingHashLbConfig_
390	//	*Cluster_OriginalDstLbConfig_
391	LbConfig isCluster_LbConfig `protobuf_oneof:"lb_config"`
392	// Common configuration for all load balancer implementations.
393	CommonLbConfig *Cluster_CommonLbConfig `protobuf:"bytes,27,opt,name=common_lb_config,json=commonLbConfig" json:"common_lb_config,omitempty"`
394	// Optional custom transport socket implementation to use for upstream connections.
395	TransportSocket *core.TransportSocket `protobuf:"bytes,24,opt,name=transport_socket,json=transportSocket" json:"transport_socket,omitempty"`
396	// The Metadata field can be used to provide additional information about the
397	// cluster. It can be used for stats, logging, and varying filter behavior.
398	// Fields should use reverse DNS notation to denote which entity within Envoy
399	// will need the information. For instance, if the metadata is intended for
400	// the Router filter, the filter name should be specified as *envoy.router*.
401	Metadata *core.Metadata `protobuf:"bytes,25,opt,name=metadata" json:"metadata,omitempty"`
402	// Determines how Envoy selects the protocol used to speak to upstream hosts.
403	ProtocolSelection Cluster_ClusterProtocolSelection `protobuf:"varint,26,opt,name=protocol_selection,json=protocolSelection,proto3,enum=envoy.api.v2.Cluster_ClusterProtocolSelection" json:"protocol_selection,omitempty"`
404	// Optional options for upstream connections.
405	UpstreamConnectionOptions *UpstreamConnectionOptions `protobuf:"bytes,30,opt,name=upstream_connection_options,json=upstreamConnectionOptions" json:"upstream_connection_options,omitempty"`
406	// If an upstream host becomes unhealthy (as determined by the configured health checks
407	// or outlier detection), immediately close all connections to the failed host.
408	//
409	// .. note::
410	//
411	//   This is currently only supported for connections created by tcp_proxy.
412	//
413	// .. note::
414	//
415	//   The current implementation of this feature closes all connections immediately when
416	//   the unhealthy status is detected. If there are a large number of connections open
417	//   to an upstream host that becomes unhealthy, Envoy may spend a substantial amount of
418	//   time exclusively closing these connections, and not processing any other traffic.
419	CloseConnectionsOnHostHealthFailure bool `protobuf:"varint,31,opt,name=close_connections_on_host_health_failure,json=closeConnectionsOnHostHealthFailure,proto3" json:"close_connections_on_host_health_failure,omitempty"`
420	// If this cluster uses EDS or STRICT_DNS to configure its hosts, immediately drain
421	// connections from any hosts that are removed from service discovery.
422	//
423	// This only affects behavior for hosts that are being actively health checked.
424	// If this flag is not set to true, Envoy will wait until the hosts fail active health
425	// checking before removing it from the cluster.
426	DrainConnectionsOnHostRemoval bool     `protobuf:"varint,32,opt,name=drain_connections_on_host_removal,json=drainConnectionsOnHostRemoval,proto3" json:"drain_connections_on_host_removal,omitempty"`
427	XXX_NoUnkeyedLiteral          struct{} `json:"-"`
428	XXX_unrecognized              []byte   `json:"-"`
429	XXX_sizecache                 int32    `json:"-"`
430}
431
432func (m *Cluster) Reset()         { *m = Cluster{} }
433func (m *Cluster) String() string { return proto.CompactTextString(m) }
434func (*Cluster) ProtoMessage()    {}
435func (*Cluster) Descriptor() ([]byte, []int) {
436	return fileDescriptor_cds_c9aad078b729c273, []int{0}
437}
438func (m *Cluster) XXX_Unmarshal(b []byte) error {
439	return m.Unmarshal(b)
440}
441func (m *Cluster) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
442	if deterministic {
443		return xxx_messageInfo_Cluster.Marshal(b, m, deterministic)
444	} else {
445		b = b[:cap(b)]
446		n, err := m.MarshalTo(b)
447		if err != nil {
448			return nil, err
449		}
450		return b[:n], nil
451	}
452}
453func (dst *Cluster) XXX_Merge(src proto.Message) {
454	xxx_messageInfo_Cluster.Merge(dst, src)
455}
456func (m *Cluster) XXX_Size() int {
457	return m.Size()
458}
459func (m *Cluster) XXX_DiscardUnknown() {
460	xxx_messageInfo_Cluster.DiscardUnknown(m)
461}
462
463var xxx_messageInfo_Cluster proto.InternalMessageInfo
464
465type isCluster_LbConfig interface {
466	isCluster_LbConfig()
467	Equal(interface{}) bool
468	MarshalTo([]byte) (int, error)
469	Size() int
470}
471
472type Cluster_RingHashLbConfig_ struct {
473	RingHashLbConfig *Cluster_RingHashLbConfig `protobuf:"bytes,23,opt,name=ring_hash_lb_config,json=ringHashLbConfig,oneof"`
474}
475type Cluster_OriginalDstLbConfig_ struct {
476	OriginalDstLbConfig *Cluster_OriginalDstLbConfig `protobuf:"bytes,34,opt,name=original_dst_lb_config,json=originalDstLbConfig,oneof"`
477}
478
479func (*Cluster_RingHashLbConfig_) isCluster_LbConfig()    {}
480func (*Cluster_OriginalDstLbConfig_) isCluster_LbConfig() {}
481
482func (m *Cluster) GetLbConfig() isCluster_LbConfig {
483	if m != nil {
484		return m.LbConfig
485	}
486	return nil
487}
488
489func (m *Cluster) GetName() string {
490	if m != nil {
491		return m.Name
492	}
493	return ""
494}
495
496func (m *Cluster) GetAltStatName() string {
497	if m != nil {
498		return m.AltStatName
499	}
500	return ""
501}
502
503func (m *Cluster) GetType() Cluster_DiscoveryType {
504	if m != nil {
505		return m.Type
506	}
507	return Cluster_STATIC
508}
509
510func (m *Cluster) GetEdsClusterConfig() *Cluster_EdsClusterConfig {
511	if m != nil {
512		return m.EdsClusterConfig
513	}
514	return nil
515}
516
517func (m *Cluster) GetConnectTimeout() time.Duration {
518	if m != nil {
519		return m.ConnectTimeout
520	}
521	return 0
522}
523
524func (m *Cluster) GetPerConnectionBufferLimitBytes() *types.UInt32Value {
525	if m != nil {
526		return m.PerConnectionBufferLimitBytes
527	}
528	return nil
529}
530
531func (m *Cluster) GetLbPolicy() Cluster_LbPolicy {
532	if m != nil {
533		return m.LbPolicy
534	}
535	return Cluster_ROUND_ROBIN
536}
537
538// Deprecated: Do not use.
539func (m *Cluster) GetHosts() []*core.Address {
540	if m != nil {
541		return m.Hosts
542	}
543	return nil
544}
545
546func (m *Cluster) GetLoadAssignment() *ClusterLoadAssignment {
547	if m != nil {
548		return m.LoadAssignment
549	}
550	return nil
551}
552
553func (m *Cluster) GetHealthChecks() []*core.HealthCheck {
554	if m != nil {
555		return m.HealthChecks
556	}
557	return nil
558}
559
560func (m *Cluster) GetMaxRequestsPerConnection() *types.UInt32Value {
561	if m != nil {
562		return m.MaxRequestsPerConnection
563	}
564	return nil
565}
566
567func (m *Cluster) GetCircuitBreakers() *cluster.CircuitBreakers {
568	if m != nil {
569		return m.CircuitBreakers
570	}
571	return nil
572}
573
574func (m *Cluster) GetTlsContext() *auth.UpstreamTlsContext {
575	if m != nil {
576		return m.TlsContext
577	}
578	return nil
579}
580
581func (m *Cluster) GetCommonHttpProtocolOptions() *core.HttpProtocolOptions {
582	if m != nil {
583		return m.CommonHttpProtocolOptions
584	}
585	return nil
586}
587
588func (m *Cluster) GetHttpProtocolOptions() *core.Http1ProtocolOptions {
589	if m != nil {
590		return m.HttpProtocolOptions
591	}
592	return nil
593}
594
595func (m *Cluster) GetHttp2ProtocolOptions() *core.Http2ProtocolOptions {
596	if m != nil {
597		return m.Http2ProtocolOptions
598	}
599	return nil
600}
601
602func (m *Cluster) GetExtensionProtocolOptions() map[string]*types.Struct {
603	if m != nil {
604		return m.ExtensionProtocolOptions
605	}
606	return nil
607}
608
609func (m *Cluster) GetDnsRefreshRate() *time.Duration {
610	if m != nil {
611		return m.DnsRefreshRate
612	}
613	return nil
614}
615
616func (m *Cluster) GetDnsLookupFamily() Cluster_DnsLookupFamily {
617	if m != nil {
618		return m.DnsLookupFamily
619	}
620	return Cluster_AUTO
621}
622
623func (m *Cluster) GetDnsResolvers() []*core.Address {
624	if m != nil {
625		return m.DnsResolvers
626	}
627	return nil
628}
629
630func (m *Cluster) GetOutlierDetection() *cluster.OutlierDetection {
631	if m != nil {
632		return m.OutlierDetection
633	}
634	return nil
635}
636
637func (m *Cluster) GetCleanupInterval() *time.Duration {
638	if m != nil {
639		return m.CleanupInterval
640	}
641	return nil
642}
643
644func (m *Cluster) GetUpstreamBindConfig() *core.BindConfig {
645	if m != nil {
646		return m.UpstreamBindConfig
647	}
648	return nil
649}
650
651func (m *Cluster) GetLbSubsetConfig() *Cluster_LbSubsetConfig {
652	if m != nil {
653		return m.LbSubsetConfig
654	}
655	return nil
656}
657
658func (m *Cluster) GetRingHashLbConfig() *Cluster_RingHashLbConfig {
659	if x, ok := m.GetLbConfig().(*Cluster_RingHashLbConfig_); ok {
660		return x.RingHashLbConfig
661	}
662	return nil
663}
664
665func (m *Cluster) GetOriginalDstLbConfig() *Cluster_OriginalDstLbConfig {
666	if x, ok := m.GetLbConfig().(*Cluster_OriginalDstLbConfig_); ok {
667		return x.OriginalDstLbConfig
668	}
669	return nil
670}
671
672func (m *Cluster) GetCommonLbConfig() *Cluster_CommonLbConfig {
673	if m != nil {
674		return m.CommonLbConfig
675	}
676	return nil
677}
678
679func (m *Cluster) GetTransportSocket() *core.TransportSocket {
680	if m != nil {
681		return m.TransportSocket
682	}
683	return nil
684}
685
686func (m *Cluster) GetMetadata() *core.Metadata {
687	if m != nil {
688		return m.Metadata
689	}
690	return nil
691}
692
693func (m *Cluster) GetProtocolSelection() Cluster_ClusterProtocolSelection {
694	if m != nil {
695		return m.ProtocolSelection
696	}
697	return Cluster_USE_CONFIGURED_PROTOCOL
698}
699
700func (m *Cluster) GetUpstreamConnectionOptions() *UpstreamConnectionOptions {
701	if m != nil {
702		return m.UpstreamConnectionOptions
703	}
704	return nil
705}
706
707func (m *Cluster) GetCloseConnectionsOnHostHealthFailure() bool {
708	if m != nil {
709		return m.CloseConnectionsOnHostHealthFailure
710	}
711	return false
712}
713
714func (m *Cluster) GetDrainConnectionsOnHostRemoval() bool {
715	if m != nil {
716		return m.DrainConnectionsOnHostRemoval
717	}
718	return false
719}
720
721// XXX_OneofFuncs is for the internal use of the proto package.
722func (*Cluster) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
723	return _Cluster_OneofMarshaler, _Cluster_OneofUnmarshaler, _Cluster_OneofSizer, []interface{}{
724		(*Cluster_RingHashLbConfig_)(nil),
725		(*Cluster_OriginalDstLbConfig_)(nil),
726	}
727}
728
729func _Cluster_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
730	m := msg.(*Cluster)
731	// lb_config
732	switch x := m.LbConfig.(type) {
733	case *Cluster_RingHashLbConfig_:
734		_ = b.EncodeVarint(23<<3 | proto.WireBytes)
735		if err := b.EncodeMessage(x.RingHashLbConfig); err != nil {
736			return err
737		}
738	case *Cluster_OriginalDstLbConfig_:
739		_ = b.EncodeVarint(34<<3 | proto.WireBytes)
740		if err := b.EncodeMessage(x.OriginalDstLbConfig); err != nil {
741			return err
742		}
743	case nil:
744	default:
745		return fmt.Errorf("Cluster.LbConfig has unexpected type %T", x)
746	}
747	return nil
748}
749
750func _Cluster_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
751	m := msg.(*Cluster)
752	switch tag {
753	case 23: // lb_config.ring_hash_lb_config
754		if wire != proto.WireBytes {
755			return true, proto.ErrInternalBadWireType
756		}
757		msg := new(Cluster_RingHashLbConfig)
758		err := b.DecodeMessage(msg)
759		m.LbConfig = &Cluster_RingHashLbConfig_{msg}
760		return true, err
761	case 34: // lb_config.original_dst_lb_config
762		if wire != proto.WireBytes {
763			return true, proto.ErrInternalBadWireType
764		}
765		msg := new(Cluster_OriginalDstLbConfig)
766		err := b.DecodeMessage(msg)
767		m.LbConfig = &Cluster_OriginalDstLbConfig_{msg}
768		return true, err
769	default:
770		return false, nil
771	}
772}
773
774func _Cluster_OneofSizer(msg proto.Message) (n int) {
775	m := msg.(*Cluster)
776	// lb_config
777	switch x := m.LbConfig.(type) {
778	case *Cluster_RingHashLbConfig_:
779		s := proto.Size(x.RingHashLbConfig)
780		n += 2 // tag and wire
781		n += proto.SizeVarint(uint64(s))
782		n += s
783	case *Cluster_OriginalDstLbConfig_:
784		s := proto.Size(x.OriginalDstLbConfig)
785		n += 2 // tag and wire
786		n += proto.SizeVarint(uint64(s))
787		n += s
788	case nil:
789	default:
790		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
791	}
792	return n
793}
794
795// Only valid when discovery type is EDS.
796type Cluster_EdsClusterConfig struct {
797	// Configuration for the source of EDS updates for this Cluster.
798	EdsConfig *core.ConfigSource `protobuf:"bytes,1,opt,name=eds_config,json=edsConfig" json:"eds_config,omitempty"`
799	// Optional alternative to cluster name to present to EDS. This does not
800	// have the same restrictions as cluster name, i.e. it may be arbitrary
801	// length.
802	ServiceName          string   `protobuf:"bytes,2,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"`
803	XXX_NoUnkeyedLiteral struct{} `json:"-"`
804	XXX_unrecognized     []byte   `json:"-"`
805	XXX_sizecache        int32    `json:"-"`
806}
807
808func (m *Cluster_EdsClusterConfig) Reset()         { *m = Cluster_EdsClusterConfig{} }
809func (m *Cluster_EdsClusterConfig) String() string { return proto.CompactTextString(m) }
810func (*Cluster_EdsClusterConfig) ProtoMessage()    {}
811func (*Cluster_EdsClusterConfig) Descriptor() ([]byte, []int) {
812	return fileDescriptor_cds_c9aad078b729c273, []int{0, 0}
813}
814func (m *Cluster_EdsClusterConfig) XXX_Unmarshal(b []byte) error {
815	return m.Unmarshal(b)
816}
817func (m *Cluster_EdsClusterConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
818	if deterministic {
819		return xxx_messageInfo_Cluster_EdsClusterConfig.Marshal(b, m, deterministic)
820	} else {
821		b = b[:cap(b)]
822		n, err := m.MarshalTo(b)
823		if err != nil {
824			return nil, err
825		}
826		return b[:n], nil
827	}
828}
829func (dst *Cluster_EdsClusterConfig) XXX_Merge(src proto.Message) {
830	xxx_messageInfo_Cluster_EdsClusterConfig.Merge(dst, src)
831}
832func (m *Cluster_EdsClusterConfig) XXX_Size() int {
833	return m.Size()
834}
835func (m *Cluster_EdsClusterConfig) XXX_DiscardUnknown() {
836	xxx_messageInfo_Cluster_EdsClusterConfig.DiscardUnknown(m)
837}
838
839var xxx_messageInfo_Cluster_EdsClusterConfig proto.InternalMessageInfo
840
841func (m *Cluster_EdsClusterConfig) GetEdsConfig() *core.ConfigSource {
842	if m != nil {
843		return m.EdsConfig
844	}
845	return nil
846}
847
848func (m *Cluster_EdsClusterConfig) GetServiceName() string {
849	if m != nil {
850		return m.ServiceName
851	}
852	return ""
853}
854
855// Optionally divide the endpoints in this cluster into subsets defined by
856// endpoint metadata and selected by route and weighted cluster metadata.
857type Cluster_LbSubsetConfig struct {
858	// The behavior used when no endpoint subset matches the selected route's
859	// metadata. The value defaults to
860	// :ref:`NO_FALLBACK<envoy_api_enum_value_Cluster.LbSubsetConfig.LbSubsetFallbackPolicy.NO_FALLBACK>`.
861	FallbackPolicy Cluster_LbSubsetConfig_LbSubsetFallbackPolicy `protobuf:"varint,1,opt,name=fallback_policy,json=fallbackPolicy,proto3,enum=envoy.api.v2.Cluster_LbSubsetConfig_LbSubsetFallbackPolicy" json:"fallback_policy,omitempty"`
862	// Specifies the default subset of endpoints used during fallback if
863	// fallback_policy is
864	// :ref:`DEFAULT_SUBSET<envoy_api_enum_value_Cluster.LbSubsetConfig.LbSubsetFallbackPolicy.DEFAULT_SUBSET>`.
865	// Each field in default_subset is
866	// compared to the matching LbEndpoint.Metadata under the *envoy.lb*
867	// namespace. It is valid for no hosts to match, in which case the behavior
868	// is the same as a fallback_policy of
869	// :ref:`NO_FALLBACK<envoy_api_enum_value_Cluster.LbSubsetConfig.LbSubsetFallbackPolicy.NO_FALLBACK>`.
870	DefaultSubset *types.Struct `protobuf:"bytes,2,opt,name=default_subset,json=defaultSubset" json:"default_subset,omitempty"`
871	// For each entry, LbEndpoint.Metadata's
872	// *envoy.lb* namespace is traversed and a subset is created for each unique
873	// combination of key and value. For example:
874	//
875	// .. code-block:: json
876	//
877	//   { "subset_selectors": [
878	//       { "keys": [ "version" ] },
879	//       { "keys": [ "stage", "hardware_type" ] }
880	//   ]}
881	//
882	// A subset is matched when the metadata from the selected route and
883	// weighted cluster contains the same keys and values as the subset's
884	// metadata. The same host may appear in multiple subsets.
885	SubsetSelectors []*Cluster_LbSubsetConfig_LbSubsetSelector `protobuf:"bytes,3,rep,name=subset_selectors,json=subsetSelectors" json:"subset_selectors,omitempty"`
886	// If true, routing to subsets will take into account the localities and locality weights of the
887	// endpoints when making the routing decision.
888	//
889	// There are some potential pitfalls associated with enabling this feature, as the resulting
890	// traffic split after applying both a subset match and locality weights might be undesirable.
891	//
892	// Consider for example a situation in which you have 50/50 split across two localities X/Y
893	// which have 100 hosts each without subsetting. If the subset LB results in X having only 1
894	// host selected but Y having 100, then a lot more load is being dumped on the single host in X
895	// than originally anticipated in the load balancing assignment delivered via EDS.
896	LocalityWeightAware  bool     `protobuf:"varint,4,opt,name=locality_weight_aware,json=localityWeightAware,proto3" json:"locality_weight_aware,omitempty"`
897	XXX_NoUnkeyedLiteral struct{} `json:"-"`
898	XXX_unrecognized     []byte   `json:"-"`
899	XXX_sizecache        int32    `json:"-"`
900}
901
902func (m *Cluster_LbSubsetConfig) Reset()         { *m = Cluster_LbSubsetConfig{} }
903func (m *Cluster_LbSubsetConfig) String() string { return proto.CompactTextString(m) }
904func (*Cluster_LbSubsetConfig) ProtoMessage()    {}
905func (*Cluster_LbSubsetConfig) Descriptor() ([]byte, []int) {
906	return fileDescriptor_cds_c9aad078b729c273, []int{0, 2}
907}
908func (m *Cluster_LbSubsetConfig) XXX_Unmarshal(b []byte) error {
909	return m.Unmarshal(b)
910}
911func (m *Cluster_LbSubsetConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
912	if deterministic {
913		return xxx_messageInfo_Cluster_LbSubsetConfig.Marshal(b, m, deterministic)
914	} else {
915		b = b[:cap(b)]
916		n, err := m.MarshalTo(b)
917		if err != nil {
918			return nil, err
919		}
920		return b[:n], nil
921	}
922}
923func (dst *Cluster_LbSubsetConfig) XXX_Merge(src proto.Message) {
924	xxx_messageInfo_Cluster_LbSubsetConfig.Merge(dst, src)
925}
926func (m *Cluster_LbSubsetConfig) XXX_Size() int {
927	return m.Size()
928}
929func (m *Cluster_LbSubsetConfig) XXX_DiscardUnknown() {
930	xxx_messageInfo_Cluster_LbSubsetConfig.DiscardUnknown(m)
931}
932
933var xxx_messageInfo_Cluster_LbSubsetConfig proto.InternalMessageInfo
934
935func (m *Cluster_LbSubsetConfig) GetFallbackPolicy() Cluster_LbSubsetConfig_LbSubsetFallbackPolicy {
936	if m != nil {
937		return m.FallbackPolicy
938	}
939	return Cluster_LbSubsetConfig_NO_FALLBACK
940}
941
942func (m *Cluster_LbSubsetConfig) GetDefaultSubset() *types.Struct {
943	if m != nil {
944		return m.DefaultSubset
945	}
946	return nil
947}
948
949func (m *Cluster_LbSubsetConfig) GetSubsetSelectors() []*Cluster_LbSubsetConfig_LbSubsetSelector {
950	if m != nil {
951		return m.SubsetSelectors
952	}
953	return nil
954}
955
956func (m *Cluster_LbSubsetConfig) GetLocalityWeightAware() bool {
957	if m != nil {
958		return m.LocalityWeightAware
959	}
960	return false
961}
962
963// Specifications for subsets.
964type Cluster_LbSubsetConfig_LbSubsetSelector struct {
965	// List of keys to match with the weighted cluster metadata.
966	Keys                 []string `protobuf:"bytes,1,rep,name=keys" json:"keys,omitempty"`
967	XXX_NoUnkeyedLiteral struct{} `json:"-"`
968	XXX_unrecognized     []byte   `json:"-"`
969	XXX_sizecache        int32    `json:"-"`
970}
971
972func (m *Cluster_LbSubsetConfig_LbSubsetSelector) Reset() {
973	*m = Cluster_LbSubsetConfig_LbSubsetSelector{}
974}
975func (m *Cluster_LbSubsetConfig_LbSubsetSelector) String() string { return proto.CompactTextString(m) }
976func (*Cluster_LbSubsetConfig_LbSubsetSelector) ProtoMessage()    {}
977func (*Cluster_LbSubsetConfig_LbSubsetSelector) Descriptor() ([]byte, []int) {
978	return fileDescriptor_cds_c9aad078b729c273, []int{0, 2, 0}
979}
980func (m *Cluster_LbSubsetConfig_LbSubsetSelector) XXX_Unmarshal(b []byte) error {
981	return m.Unmarshal(b)
982}
983func (m *Cluster_LbSubsetConfig_LbSubsetSelector) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
984	if deterministic {
985		return xxx_messageInfo_Cluster_LbSubsetConfig_LbSubsetSelector.Marshal(b, m, deterministic)
986	} else {
987		b = b[:cap(b)]
988		n, err := m.MarshalTo(b)
989		if err != nil {
990			return nil, err
991		}
992		return b[:n], nil
993	}
994}
995func (dst *Cluster_LbSubsetConfig_LbSubsetSelector) XXX_Merge(src proto.Message) {
996	xxx_messageInfo_Cluster_LbSubsetConfig_LbSubsetSelector.Merge(dst, src)
997}
998func (m *Cluster_LbSubsetConfig_LbSubsetSelector) XXX_Size() int {
999	return m.Size()
1000}
1001func (m *Cluster_LbSubsetConfig_LbSubsetSelector) XXX_DiscardUnknown() {
1002	xxx_messageInfo_Cluster_LbSubsetConfig_LbSubsetSelector.DiscardUnknown(m)
1003}
1004
1005var xxx_messageInfo_Cluster_LbSubsetConfig_LbSubsetSelector proto.InternalMessageInfo
1006
1007func (m *Cluster_LbSubsetConfig_LbSubsetSelector) GetKeys() []string {
1008	if m != nil {
1009		return m.Keys
1010	}
1011	return nil
1012}
1013
1014// Specific configuration for the :ref:`RingHash<arch_overview_load_balancing_types_ring_hash>`
1015// load balancing policy.
1016type Cluster_RingHashLbConfig struct {
1017	// Minimum hash ring size, i.e. total virtual nodes. A larger size
1018	// will provide better request distribution since each host in the
1019	// cluster will have more virtual nodes. Defaults to 1024. In the case
1020	// that total number of hosts is greater than the minimum, each host will
1021	// be allocated a single virtual node. This field is limited to 8M to bound
1022	// resource use.
1023	MinimumRingSize *types.UInt64Value `protobuf:"bytes,1,opt,name=minimum_ring_size,json=minimumRingSize" json:"minimum_ring_size,omitempty"`
1024	// Deprecated settings from v1 config.
1025	// [#not-implemented-hide:] Hide from docs.
1026	DeprecatedV1         *Cluster_RingHashLbConfig_DeprecatedV1 `protobuf:"bytes,2,opt,name=deprecated_v1,json=deprecatedV1" json:"deprecated_v1,omitempty"` // Deprecated: Do not use.
1027	XXX_NoUnkeyedLiteral struct{}                               `json:"-"`
1028	XXX_unrecognized     []byte                                 `json:"-"`
1029	XXX_sizecache        int32                                  `json:"-"`
1030}
1031
1032func (m *Cluster_RingHashLbConfig) Reset()         { *m = Cluster_RingHashLbConfig{} }
1033func (m *Cluster_RingHashLbConfig) String() string { return proto.CompactTextString(m) }
1034func (*Cluster_RingHashLbConfig) ProtoMessage()    {}
1035func (*Cluster_RingHashLbConfig) Descriptor() ([]byte, []int) {
1036	return fileDescriptor_cds_c9aad078b729c273, []int{0, 3}
1037}
1038func (m *Cluster_RingHashLbConfig) XXX_Unmarshal(b []byte) error {
1039	return m.Unmarshal(b)
1040}
1041func (m *Cluster_RingHashLbConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
1042	if deterministic {
1043		return xxx_messageInfo_Cluster_RingHashLbConfig.Marshal(b, m, deterministic)
1044	} else {
1045		b = b[:cap(b)]
1046		n, err := m.MarshalTo(b)
1047		if err != nil {
1048			return nil, err
1049		}
1050		return b[:n], nil
1051	}
1052}
1053func (dst *Cluster_RingHashLbConfig) XXX_Merge(src proto.Message) {
1054	xxx_messageInfo_Cluster_RingHashLbConfig.Merge(dst, src)
1055}
1056func (m *Cluster_RingHashLbConfig) XXX_Size() int {
1057	return m.Size()
1058}
1059func (m *Cluster_RingHashLbConfig) XXX_DiscardUnknown() {
1060	xxx_messageInfo_Cluster_RingHashLbConfig.DiscardUnknown(m)
1061}
1062
1063var xxx_messageInfo_Cluster_RingHashLbConfig proto.InternalMessageInfo
1064
1065func (m *Cluster_RingHashLbConfig) GetMinimumRingSize() *types.UInt64Value {
1066	if m != nil {
1067		return m.MinimumRingSize
1068	}
1069	return nil
1070}
1071
1072// Deprecated: Do not use.
1073func (m *Cluster_RingHashLbConfig) GetDeprecatedV1() *Cluster_RingHashLbConfig_DeprecatedV1 {
1074	if m != nil {
1075		return m.DeprecatedV1
1076	}
1077	return nil
1078}
1079
1080// [#not-implemented-hide:] Hide from docs.
1081type Cluster_RingHashLbConfig_DeprecatedV1 struct {
1082	// Defaults to true, meaning that std::hash is used to hash hosts onto
1083	// the ketama ring. std::hash can vary by platform. For this reason,
1084	// Envoy will eventually use `xxHash <https://github.com/Cyan4973/xxHash>`_
1085	// by default. This field exists for
1086	// migration purposes and will eventually be deprecated. Set it to false
1087	// to use `xxHash <https://github.com/Cyan4973/xxHash>`_ now.
1088	UseStdHash           *types.BoolValue `protobuf:"bytes,1,opt,name=use_std_hash,json=useStdHash" json:"use_std_hash,omitempty"`
1089	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
1090	XXX_unrecognized     []byte           `json:"-"`
1091	XXX_sizecache        int32            `json:"-"`
1092}
1093
1094func (m *Cluster_RingHashLbConfig_DeprecatedV1) Reset()         { *m = Cluster_RingHashLbConfig_DeprecatedV1{} }
1095func (m *Cluster_RingHashLbConfig_DeprecatedV1) String() string { return proto.CompactTextString(m) }
1096func (*Cluster_RingHashLbConfig_DeprecatedV1) ProtoMessage()    {}
1097func (*Cluster_RingHashLbConfig_DeprecatedV1) Descriptor() ([]byte, []int) {
1098	return fileDescriptor_cds_c9aad078b729c273, []int{0, 3, 0}
1099}
1100func (m *Cluster_RingHashLbConfig_DeprecatedV1) XXX_Unmarshal(b []byte) error {
1101	return m.Unmarshal(b)
1102}
1103func (m *Cluster_RingHashLbConfig_DeprecatedV1) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
1104	if deterministic {
1105		return xxx_messageInfo_Cluster_RingHashLbConfig_DeprecatedV1.Marshal(b, m, deterministic)
1106	} else {
1107		b = b[:cap(b)]
1108		n, err := m.MarshalTo(b)
1109		if err != nil {
1110			return nil, err
1111		}
1112		return b[:n], nil
1113	}
1114}
1115func (dst *Cluster_RingHashLbConfig_DeprecatedV1) XXX_Merge(src proto.Message) {
1116	xxx_messageInfo_Cluster_RingHashLbConfig_DeprecatedV1.Merge(dst, src)
1117}
1118func (m *Cluster_RingHashLbConfig_DeprecatedV1) XXX_Size() int {
1119	return m.Size()
1120}
1121func (m *Cluster_RingHashLbConfig_DeprecatedV1) XXX_DiscardUnknown() {
1122	xxx_messageInfo_Cluster_RingHashLbConfig_DeprecatedV1.DiscardUnknown(m)
1123}
1124
1125var xxx_messageInfo_Cluster_RingHashLbConfig_DeprecatedV1 proto.InternalMessageInfo
1126
1127func (m *Cluster_RingHashLbConfig_DeprecatedV1) GetUseStdHash() *types.BoolValue {
1128	if m != nil {
1129		return m.UseStdHash
1130	}
1131	return nil
1132}
1133
1134// Specific configuration for the
1135// :ref:`Original Destination <arch_overview_load_balancing_types_original_destination>`
1136// load balancing policy.
1137type Cluster_OriginalDstLbConfig struct {
1138	// When true, :ref:`x-envoy-orignal-dst-host
1139	// <config_http_conn_man_headers_x-envoy-original-dst-host>` can be used to override destination
1140	// address.
1141	//
1142	// .. attention::
1143	//
1144	//   This header isn't sanitized by default, so enabling this feature allows HTTP clients to
1145	//   route traffic to arbitrary hosts and/or ports, which may have serious security
1146	//   consequences.
1147	UseHttpHeader        bool     `protobuf:"varint,1,opt,name=use_http_header,json=useHttpHeader,proto3" json:"use_http_header,omitempty"`
1148	XXX_NoUnkeyedLiteral struct{} `json:"-"`
1149	XXX_unrecognized     []byte   `json:"-"`
1150	XXX_sizecache        int32    `json:"-"`
1151}
1152
1153func (m *Cluster_OriginalDstLbConfig) Reset()         { *m = Cluster_OriginalDstLbConfig{} }
1154func (m *Cluster_OriginalDstLbConfig) String() string { return proto.CompactTextString(m) }
1155func (*Cluster_OriginalDstLbConfig) ProtoMessage()    {}
1156func (*Cluster_OriginalDstLbConfig) Descriptor() ([]byte, []int) {
1157	return fileDescriptor_cds_c9aad078b729c273, []int{0, 4}
1158}
1159func (m *Cluster_OriginalDstLbConfig) XXX_Unmarshal(b []byte) error {
1160	return m.Unmarshal(b)
1161}
1162func (m *Cluster_OriginalDstLbConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
1163	if deterministic {
1164		return xxx_messageInfo_Cluster_OriginalDstLbConfig.Marshal(b, m, deterministic)
1165	} else {
1166		b = b[:cap(b)]
1167		n, err := m.MarshalTo(b)
1168		if err != nil {
1169			return nil, err
1170		}
1171		return b[:n], nil
1172	}
1173}
1174func (dst *Cluster_OriginalDstLbConfig) XXX_Merge(src proto.Message) {
1175	xxx_messageInfo_Cluster_OriginalDstLbConfig.Merge(dst, src)
1176}
1177func (m *Cluster_OriginalDstLbConfig) XXX_Size() int {
1178	return m.Size()
1179}
1180func (m *Cluster_OriginalDstLbConfig) XXX_DiscardUnknown() {
1181	xxx_messageInfo_Cluster_OriginalDstLbConfig.DiscardUnknown(m)
1182}
1183
1184var xxx_messageInfo_Cluster_OriginalDstLbConfig proto.InternalMessageInfo
1185
1186func (m *Cluster_OriginalDstLbConfig) GetUseHttpHeader() bool {
1187	if m != nil {
1188		return m.UseHttpHeader
1189	}
1190	return false
1191}
1192
1193// Common configuration for all load balancer implementations.
1194type Cluster_CommonLbConfig struct {
1195	// Configures the :ref:`healthy panic threshold <arch_overview_load_balancing_panic_threshold>`.
1196	// If not specified, the default is 50%.
1197	//
1198	// .. note::
1199	//   The specified percent will be truncated to the nearest 1%.
1200	HealthyPanicThreshold *_type.Percent `protobuf:"bytes,1,opt,name=healthy_panic_threshold,json=healthyPanicThreshold" json:"healthy_panic_threshold,omitempty"`
1201	// Types that are valid to be assigned to LocalityConfigSpecifier:
1202	//	*Cluster_CommonLbConfig_ZoneAwareLbConfig_
1203	//	*Cluster_CommonLbConfig_LocalityWeightedLbConfig_
1204	LocalityConfigSpecifier isCluster_CommonLbConfig_LocalityConfigSpecifier `protobuf_oneof:"locality_config_specifier"`
1205	// If set, all health check/weight/metadata updates that happen within this duration will be
1206	// merged and delivered in one shot when the duration expires. The start of the duration is when
1207	// the first update happens. This is useful for big clusters, with potentially noisy deploys
1208	// that might trigger excessive CPU usage due to a constant stream of healthcheck state changes
1209	// or metadata updates. By default, this is not configured and updates apply immediately. Also,
1210	// the first set of updates to be seen apply immediately as well (e.g.: a new cluster).
1211	//
1212	// Note: merging does not apply to cluster membership changes (e.g.: adds/removes); this is
1213	// because merging those updates isn't currently safe. See
1214	// https://github.com/envoyproxy/envoy/pull/3941.
1215	UpdateMergeWindow    *types.Duration `protobuf:"bytes,4,opt,name=update_merge_window,json=updateMergeWindow" json:"update_merge_window,omitempty"`
1216	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
1217	XXX_unrecognized     []byte          `json:"-"`
1218	XXX_sizecache        int32           `json:"-"`
1219}
1220
1221func (m *Cluster_CommonLbConfig) Reset()         { *m = Cluster_CommonLbConfig{} }
1222func (m *Cluster_CommonLbConfig) String() string { return proto.CompactTextString(m) }
1223func (*Cluster_CommonLbConfig) ProtoMessage()    {}
1224func (*Cluster_CommonLbConfig) Descriptor() ([]byte, []int) {
1225	return fileDescriptor_cds_c9aad078b729c273, []int{0, 5}
1226}
1227func (m *Cluster_CommonLbConfig) XXX_Unmarshal(b []byte) error {
1228	return m.Unmarshal(b)
1229}
1230func (m *Cluster_CommonLbConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
1231	if deterministic {
1232		return xxx_messageInfo_Cluster_CommonLbConfig.Marshal(b, m, deterministic)
1233	} else {
1234		b = b[:cap(b)]
1235		n, err := m.MarshalTo(b)
1236		if err != nil {
1237			return nil, err
1238		}
1239		return b[:n], nil
1240	}
1241}
1242func (dst *Cluster_CommonLbConfig) XXX_Merge(src proto.Message) {
1243	xxx_messageInfo_Cluster_CommonLbConfig.Merge(dst, src)
1244}
1245func (m *Cluster_CommonLbConfig) XXX_Size() int {
1246	return m.Size()
1247}
1248func (m *Cluster_CommonLbConfig) XXX_DiscardUnknown() {
1249	xxx_messageInfo_Cluster_CommonLbConfig.DiscardUnknown(m)
1250}
1251
1252var xxx_messageInfo_Cluster_CommonLbConfig proto.InternalMessageInfo
1253
1254type isCluster_CommonLbConfig_LocalityConfigSpecifier interface {
1255	isCluster_CommonLbConfig_LocalityConfigSpecifier()
1256	Equal(interface{}) bool
1257	MarshalTo([]byte) (int, error)
1258	Size() int
1259}
1260
1261type Cluster_CommonLbConfig_ZoneAwareLbConfig_ struct {
1262	ZoneAwareLbConfig *Cluster_CommonLbConfig_ZoneAwareLbConfig `protobuf:"bytes,2,opt,name=zone_aware_lb_config,json=zoneAwareLbConfig,oneof"`
1263}
1264type Cluster_CommonLbConfig_LocalityWeightedLbConfig_ struct {
1265	LocalityWeightedLbConfig *Cluster_CommonLbConfig_LocalityWeightedLbConfig `protobuf:"bytes,3,opt,name=locality_weighted_lb_config,json=localityWeightedLbConfig,oneof"`
1266}
1267
1268func (*Cluster_CommonLbConfig_ZoneAwareLbConfig_) isCluster_CommonLbConfig_LocalityConfigSpecifier() {}
1269func (*Cluster_CommonLbConfig_LocalityWeightedLbConfig_) isCluster_CommonLbConfig_LocalityConfigSpecifier() {
1270}
1271
1272func (m *Cluster_CommonLbConfig) GetLocalityConfigSpecifier() isCluster_CommonLbConfig_LocalityConfigSpecifier {
1273	if m != nil {
1274		return m.LocalityConfigSpecifier
1275	}
1276	return nil
1277}
1278
1279func (m *Cluster_CommonLbConfig) GetHealthyPanicThreshold() *_type.Percent {
1280	if m != nil {
1281		return m.HealthyPanicThreshold
1282	}
1283	return nil
1284}
1285
1286func (m *Cluster_CommonLbConfig) GetZoneAwareLbConfig() *Cluster_CommonLbConfig_ZoneAwareLbConfig {
1287	if x, ok := m.GetLocalityConfigSpecifier().(*Cluster_CommonLbConfig_ZoneAwareLbConfig_); ok {
1288		return x.ZoneAwareLbConfig
1289	}
1290	return nil
1291}
1292
1293func (m *Cluster_CommonLbConfig) GetLocalityWeightedLbConfig() *Cluster_CommonLbConfig_LocalityWeightedLbConfig {
1294	if x, ok := m.GetLocalityConfigSpecifier().(*Cluster_CommonLbConfig_LocalityWeightedLbConfig_); ok {
1295		return x.LocalityWeightedLbConfig
1296	}
1297	return nil
1298}
1299
1300func (m *Cluster_CommonLbConfig) GetUpdateMergeWindow() *types.Duration {
1301	if m != nil {
1302		return m.UpdateMergeWindow
1303	}
1304	return nil
1305}
1306
1307// XXX_OneofFuncs is for the internal use of the proto package.
1308func (*Cluster_CommonLbConfig) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
1309	return _Cluster_CommonLbConfig_OneofMarshaler, _Cluster_CommonLbConfig_OneofUnmarshaler, _Cluster_CommonLbConfig_OneofSizer, []interface{}{
1310		(*Cluster_CommonLbConfig_ZoneAwareLbConfig_)(nil),
1311		(*Cluster_CommonLbConfig_LocalityWeightedLbConfig_)(nil),
1312	}
1313}
1314
1315func _Cluster_CommonLbConfig_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
1316	m := msg.(*Cluster_CommonLbConfig)
1317	// locality_config_specifier
1318	switch x := m.LocalityConfigSpecifier.(type) {
1319	case *Cluster_CommonLbConfig_ZoneAwareLbConfig_:
1320		_ = b.EncodeVarint(2<<3 | proto.WireBytes)
1321		if err := b.EncodeMessage(x.ZoneAwareLbConfig); err != nil {
1322			return err
1323		}
1324	case *Cluster_CommonLbConfig_LocalityWeightedLbConfig_:
1325		_ = b.EncodeVarint(3<<3 | proto.WireBytes)
1326		if err := b.EncodeMessage(x.LocalityWeightedLbConfig); err != nil {
1327			return err
1328		}
1329	case nil:
1330	default:
1331		return fmt.Errorf("Cluster_CommonLbConfig.LocalityConfigSpecifier has unexpected type %T", x)
1332	}
1333	return nil
1334}
1335
1336func _Cluster_CommonLbConfig_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
1337	m := msg.(*Cluster_CommonLbConfig)
1338	switch tag {
1339	case 2: // locality_config_specifier.zone_aware_lb_config
1340		if wire != proto.WireBytes {
1341			return true, proto.ErrInternalBadWireType
1342		}
1343		msg := new(Cluster_CommonLbConfig_ZoneAwareLbConfig)
1344		err := b.DecodeMessage(msg)
1345		m.LocalityConfigSpecifier = &Cluster_CommonLbConfig_ZoneAwareLbConfig_{msg}
1346		return true, err
1347	case 3: // locality_config_specifier.locality_weighted_lb_config
1348		if wire != proto.WireBytes {
1349			return true, proto.ErrInternalBadWireType
1350		}
1351		msg := new(Cluster_CommonLbConfig_LocalityWeightedLbConfig)
1352		err := b.DecodeMessage(msg)
1353		m.LocalityConfigSpecifier = &Cluster_CommonLbConfig_LocalityWeightedLbConfig_{msg}
1354		return true, err
1355	default:
1356		return false, nil
1357	}
1358}
1359
1360func _Cluster_CommonLbConfig_OneofSizer(msg proto.Message) (n int) {
1361	m := msg.(*Cluster_CommonLbConfig)
1362	// locality_config_specifier
1363	switch x := m.LocalityConfigSpecifier.(type) {
1364	case *Cluster_CommonLbConfig_ZoneAwareLbConfig_:
1365		s := proto.Size(x.ZoneAwareLbConfig)
1366		n += 1 // tag and wire
1367		n += proto.SizeVarint(uint64(s))
1368		n += s
1369	case *Cluster_CommonLbConfig_LocalityWeightedLbConfig_:
1370		s := proto.Size(x.LocalityWeightedLbConfig)
1371		n += 1 // tag and wire
1372		n += proto.SizeVarint(uint64(s))
1373		n += s
1374	case nil:
1375	default:
1376		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
1377	}
1378	return n
1379}
1380
1381// Configuration for :ref:`zone aware routing
1382// <arch_overview_load_balancing_zone_aware_routing>`.
1383type Cluster_CommonLbConfig_ZoneAwareLbConfig struct {
1384	// Configures percentage of requests that will be considered for zone aware routing
1385	// if zone aware routing is configured. If not specified, the default is 100%.
1386	// * :ref:`runtime values <config_cluster_manager_cluster_runtime_zone_routing>`.
1387	// * :ref:`Zone aware routing support <arch_overview_load_balancing_zone_aware_routing>`.
1388	RoutingEnabled *_type.Percent `protobuf:"bytes,1,opt,name=routing_enabled,json=routingEnabled" json:"routing_enabled,omitempty"`
1389	// Configures minimum upstream cluster size required for zone aware routing
1390	// If upstream cluster size is less than specified, zone aware routing is not performed
1391	// even if zone aware routing is configured. If not specified, the default is 6.
1392	// * :ref:`runtime values <config_cluster_manager_cluster_runtime_zone_routing>`.
1393	// * :ref:`Zone aware routing support <arch_overview_load_balancing_zone_aware_routing>`.
1394	MinClusterSize       *types.UInt64Value `protobuf:"bytes,2,opt,name=min_cluster_size,json=minClusterSize" json:"min_cluster_size,omitempty"`
1395	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
1396	XXX_unrecognized     []byte             `json:"-"`
1397	XXX_sizecache        int32              `json:"-"`
1398}
1399
1400func (m *Cluster_CommonLbConfig_ZoneAwareLbConfig) Reset() {
1401	*m = Cluster_CommonLbConfig_ZoneAwareLbConfig{}
1402}
1403func (m *Cluster_CommonLbConfig_ZoneAwareLbConfig) String() string { return proto.CompactTextString(m) }
1404func (*Cluster_CommonLbConfig_ZoneAwareLbConfig) ProtoMessage()    {}
1405func (*Cluster_CommonLbConfig_ZoneAwareLbConfig) Descriptor() ([]byte, []int) {
1406	return fileDescriptor_cds_c9aad078b729c273, []int{0, 5, 0}
1407}
1408func (m *Cluster_CommonLbConfig_ZoneAwareLbConfig) XXX_Unmarshal(b []byte) error {
1409	return m.Unmarshal(b)
1410}
1411func (m *Cluster_CommonLbConfig_ZoneAwareLbConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
1412	if deterministic {
1413		return xxx_messageInfo_Cluster_CommonLbConfig_ZoneAwareLbConfig.Marshal(b, m, deterministic)
1414	} else {
1415		b = b[:cap(b)]
1416		n, err := m.MarshalTo(b)
1417		if err != nil {
1418			return nil, err
1419		}
1420		return b[:n], nil
1421	}
1422}
1423func (dst *Cluster_CommonLbConfig_ZoneAwareLbConfig) XXX_Merge(src proto.Message) {
1424	xxx_messageInfo_Cluster_CommonLbConfig_ZoneAwareLbConfig.Merge(dst, src)
1425}
1426func (m *Cluster_CommonLbConfig_ZoneAwareLbConfig) XXX_Size() int {
1427	return m.Size()
1428}
1429func (m *Cluster_CommonLbConfig_ZoneAwareLbConfig) XXX_DiscardUnknown() {
1430	xxx_messageInfo_Cluster_CommonLbConfig_ZoneAwareLbConfig.DiscardUnknown(m)
1431}
1432
1433var xxx_messageInfo_Cluster_CommonLbConfig_ZoneAwareLbConfig proto.InternalMessageInfo
1434
1435func (m *Cluster_CommonLbConfig_ZoneAwareLbConfig) GetRoutingEnabled() *_type.Percent {
1436	if m != nil {
1437		return m.RoutingEnabled
1438	}
1439	return nil
1440}
1441
1442func (m *Cluster_CommonLbConfig_ZoneAwareLbConfig) GetMinClusterSize() *types.UInt64Value {
1443	if m != nil {
1444		return m.MinClusterSize
1445	}
1446	return nil
1447}
1448
1449// Configuration for :ref:`locality weighted load balancing
1450// <arch_overview_load_balancing_locality_weighted_lb>`
1451type Cluster_CommonLbConfig_LocalityWeightedLbConfig struct {
1452	XXX_NoUnkeyedLiteral struct{} `json:"-"`
1453	XXX_unrecognized     []byte   `json:"-"`
1454	XXX_sizecache        int32    `json:"-"`
1455}
1456
1457func (m *Cluster_CommonLbConfig_LocalityWeightedLbConfig) Reset() {
1458	*m = Cluster_CommonLbConfig_LocalityWeightedLbConfig{}
1459}
1460func (m *Cluster_CommonLbConfig_LocalityWeightedLbConfig) String() string {
1461	return proto.CompactTextString(m)
1462}
1463func (*Cluster_CommonLbConfig_LocalityWeightedLbConfig) ProtoMessage() {}
1464func (*Cluster_CommonLbConfig_LocalityWeightedLbConfig) Descriptor() ([]byte, []int) {
1465	return fileDescriptor_cds_c9aad078b729c273, []int{0, 5, 1}
1466}
1467func (m *Cluster_CommonLbConfig_LocalityWeightedLbConfig) XXX_Unmarshal(b []byte) error {
1468	return m.Unmarshal(b)
1469}
1470func (m *Cluster_CommonLbConfig_LocalityWeightedLbConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
1471	if deterministic {
1472		return xxx_messageInfo_Cluster_CommonLbConfig_LocalityWeightedLbConfig.Marshal(b, m, deterministic)
1473	} else {
1474		b = b[:cap(b)]
1475		n, err := m.MarshalTo(b)
1476		if err != nil {
1477			return nil, err
1478		}
1479		return b[:n], nil
1480	}
1481}
1482func (dst *Cluster_CommonLbConfig_LocalityWeightedLbConfig) XXX_Merge(src proto.Message) {
1483	xxx_messageInfo_Cluster_CommonLbConfig_LocalityWeightedLbConfig.Merge(dst, src)
1484}
1485func (m *Cluster_CommonLbConfig_LocalityWeightedLbConfig) XXX_Size() int {
1486	return m.Size()
1487}
1488func (m *Cluster_CommonLbConfig_LocalityWeightedLbConfig) XXX_DiscardUnknown() {
1489	xxx_messageInfo_Cluster_CommonLbConfig_LocalityWeightedLbConfig.DiscardUnknown(m)
1490}
1491
1492var xxx_messageInfo_Cluster_CommonLbConfig_LocalityWeightedLbConfig proto.InternalMessageInfo
1493
1494// An extensible structure containing the address Envoy should bind to when
1495// establishing upstream connections.
1496type UpstreamBindConfig struct {
1497	// The address Envoy should bind to when establishing upstream connections.
1498	SourceAddress        *core.Address `protobuf:"bytes,1,opt,name=source_address,json=sourceAddress" json:"source_address,omitempty"`
1499	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
1500	XXX_unrecognized     []byte        `json:"-"`
1501	XXX_sizecache        int32         `json:"-"`
1502}
1503
1504func (m *UpstreamBindConfig) Reset()         { *m = UpstreamBindConfig{} }
1505func (m *UpstreamBindConfig) String() string { return proto.CompactTextString(m) }
1506func (*UpstreamBindConfig) ProtoMessage()    {}
1507func (*UpstreamBindConfig) Descriptor() ([]byte, []int) {
1508	return fileDescriptor_cds_c9aad078b729c273, []int{1}
1509}
1510func (m *UpstreamBindConfig) XXX_Unmarshal(b []byte) error {
1511	return m.Unmarshal(b)
1512}
1513func (m *UpstreamBindConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
1514	if deterministic {
1515		return xxx_messageInfo_UpstreamBindConfig.Marshal(b, m, deterministic)
1516	} else {
1517		b = b[:cap(b)]
1518		n, err := m.MarshalTo(b)
1519		if err != nil {
1520			return nil, err
1521		}
1522		return b[:n], nil
1523	}
1524}
1525func (dst *UpstreamBindConfig) XXX_Merge(src proto.Message) {
1526	xxx_messageInfo_UpstreamBindConfig.Merge(dst, src)
1527}
1528func (m *UpstreamBindConfig) XXX_Size() int {
1529	return m.Size()
1530}
1531func (m *UpstreamBindConfig) XXX_DiscardUnknown() {
1532	xxx_messageInfo_UpstreamBindConfig.DiscardUnknown(m)
1533}
1534
1535var xxx_messageInfo_UpstreamBindConfig proto.InternalMessageInfo
1536
1537func (m *UpstreamBindConfig) GetSourceAddress() *core.Address {
1538	if m != nil {
1539		return m.SourceAddress
1540	}
1541	return nil
1542}
1543
1544type UpstreamConnectionOptions struct {
1545	// If set then set SO_KEEPALIVE on the socket to enable TCP Keepalives.
1546	TcpKeepalive         *core.TcpKeepalive `protobuf:"bytes,1,opt,name=tcp_keepalive,json=tcpKeepalive" json:"tcp_keepalive,omitempty"`
1547	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
1548	XXX_unrecognized     []byte             `json:"-"`
1549	XXX_sizecache        int32              `json:"-"`
1550}
1551
1552func (m *UpstreamConnectionOptions) Reset()         { *m = UpstreamConnectionOptions{} }
1553func (m *UpstreamConnectionOptions) String() string { return proto.CompactTextString(m) }
1554func (*UpstreamConnectionOptions) ProtoMessage()    {}
1555func (*UpstreamConnectionOptions) Descriptor() ([]byte, []int) {
1556	return fileDescriptor_cds_c9aad078b729c273, []int{2}
1557}
1558func (m *UpstreamConnectionOptions) XXX_Unmarshal(b []byte) error {
1559	return m.Unmarshal(b)
1560}
1561func (m *UpstreamConnectionOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
1562	if deterministic {
1563		return xxx_messageInfo_UpstreamConnectionOptions.Marshal(b, m, deterministic)
1564	} else {
1565		b = b[:cap(b)]
1566		n, err := m.MarshalTo(b)
1567		if err != nil {
1568			return nil, err
1569		}
1570		return b[:n], nil
1571	}
1572}
1573func (dst *UpstreamConnectionOptions) XXX_Merge(src proto.Message) {
1574	xxx_messageInfo_UpstreamConnectionOptions.Merge(dst, src)
1575}
1576func (m *UpstreamConnectionOptions) XXX_Size() int {
1577	return m.Size()
1578}
1579func (m *UpstreamConnectionOptions) XXX_DiscardUnknown() {
1580	xxx_messageInfo_UpstreamConnectionOptions.DiscardUnknown(m)
1581}
1582
1583var xxx_messageInfo_UpstreamConnectionOptions proto.InternalMessageInfo
1584
1585func (m *UpstreamConnectionOptions) GetTcpKeepalive() *core.TcpKeepalive {
1586	if m != nil {
1587		return m.TcpKeepalive
1588	}
1589	return nil
1590}
1591
1592func init() {
1593	proto.RegisterType((*Cluster)(nil), "envoy.api.v2.Cluster")
1594	proto.RegisterMapType((map[string]*types.Struct)(nil), "envoy.api.v2.Cluster.ExtensionProtocolOptionsEntry")
1595	proto.RegisterType((*Cluster_EdsClusterConfig)(nil), "envoy.api.v2.Cluster.EdsClusterConfig")
1596	proto.RegisterType((*Cluster_LbSubsetConfig)(nil), "envoy.api.v2.Cluster.LbSubsetConfig")
1597	proto.RegisterType((*Cluster_LbSubsetConfig_LbSubsetSelector)(nil), "envoy.api.v2.Cluster.LbSubsetConfig.LbSubsetSelector")
1598	proto.RegisterType((*Cluster_RingHashLbConfig)(nil), "envoy.api.v2.Cluster.RingHashLbConfig")
1599	proto.RegisterType((*Cluster_RingHashLbConfig_DeprecatedV1)(nil), "envoy.api.v2.Cluster.RingHashLbConfig.DeprecatedV1")
1600	proto.RegisterType((*Cluster_OriginalDstLbConfig)(nil), "envoy.api.v2.Cluster.OriginalDstLbConfig")
1601	proto.RegisterType((*Cluster_CommonLbConfig)(nil), "envoy.api.v2.Cluster.CommonLbConfig")
1602	proto.RegisterType((*Cluster_CommonLbConfig_ZoneAwareLbConfig)(nil), "envoy.api.v2.Cluster.CommonLbConfig.ZoneAwareLbConfig")
1603	proto.RegisterType((*Cluster_CommonLbConfig_LocalityWeightedLbConfig)(nil), "envoy.api.v2.Cluster.CommonLbConfig.LocalityWeightedLbConfig")
1604	proto.RegisterType((*UpstreamBindConfig)(nil), "envoy.api.v2.UpstreamBindConfig")
1605	proto.RegisterType((*UpstreamConnectionOptions)(nil), "envoy.api.v2.UpstreamConnectionOptions")
1606	proto.RegisterEnum("envoy.api.v2.Cluster_DiscoveryType", Cluster_DiscoveryType_name, Cluster_DiscoveryType_value)
1607	proto.RegisterEnum("envoy.api.v2.Cluster_LbPolicy", Cluster_LbPolicy_name, Cluster_LbPolicy_value)
1608	proto.RegisterEnum("envoy.api.v2.Cluster_DnsLookupFamily", Cluster_DnsLookupFamily_name, Cluster_DnsLookupFamily_value)
1609	proto.RegisterEnum("envoy.api.v2.Cluster_ClusterProtocolSelection", Cluster_ClusterProtocolSelection_name, Cluster_ClusterProtocolSelection_value)
1610	proto.RegisterEnum("envoy.api.v2.Cluster_LbSubsetConfig_LbSubsetFallbackPolicy", Cluster_LbSubsetConfig_LbSubsetFallbackPolicy_name, Cluster_LbSubsetConfig_LbSubsetFallbackPolicy_value)
1611}
1612func (this *Cluster) Equal(that interface{}) bool {
1613	if that == nil {
1614		return this == nil
1615	}
1616
1617	that1, ok := that.(*Cluster)
1618	if !ok {
1619		that2, ok := that.(Cluster)
1620		if ok {
1621			that1 = &that2
1622		} else {
1623			return false
1624		}
1625	}
1626	if that1 == nil {
1627		return this == nil
1628	} else if this == nil {
1629		return false
1630	}
1631	if this.Name != that1.Name {
1632		return false
1633	}
1634	if this.AltStatName != that1.AltStatName {
1635		return false
1636	}
1637	if this.Type != that1.Type {
1638		return false
1639	}
1640	if !this.EdsClusterConfig.Equal(that1.EdsClusterConfig) {
1641		return false
1642	}
1643	if this.ConnectTimeout != that1.ConnectTimeout {
1644		return false
1645	}
1646	if !this.PerConnectionBufferLimitBytes.Equal(that1.PerConnectionBufferLimitBytes) {
1647		return false
1648	}
1649	if this.LbPolicy != that1.LbPolicy {
1650		return false
1651	}
1652	if len(this.Hosts) != len(that1.Hosts) {
1653		return false
1654	}
1655	for i := range this.Hosts {
1656		if !this.Hosts[i].Equal(that1.Hosts[i]) {
1657			return false
1658		}
1659	}
1660	if !this.LoadAssignment.Equal(that1.LoadAssignment) {
1661		return false
1662	}
1663	if len(this.HealthChecks) != len(that1.HealthChecks) {
1664		return false
1665	}
1666	for i := range this.HealthChecks {
1667		if !this.HealthChecks[i].Equal(that1.HealthChecks[i]) {
1668			return false
1669		}
1670	}
1671	if !this.MaxRequestsPerConnection.Equal(that1.MaxRequestsPerConnection) {
1672		return false
1673	}
1674	if !this.CircuitBreakers.Equal(that1.CircuitBreakers) {
1675		return false
1676	}
1677	if !this.TlsContext.Equal(that1.TlsContext) {
1678		return false
1679	}
1680	if !this.CommonHttpProtocolOptions.Equal(that1.CommonHttpProtocolOptions) {
1681		return false
1682	}
1683	if !this.HttpProtocolOptions.Equal(that1.HttpProtocolOptions) {
1684		return false
1685	}
1686	if !this.Http2ProtocolOptions.Equal(that1.Http2ProtocolOptions) {
1687		return false
1688	}
1689	if len(this.ExtensionProtocolOptions) != len(that1.ExtensionProtocolOptions) {
1690		return false
1691	}
1692	for i := range this.ExtensionProtocolOptions {
1693		if !this.ExtensionProtocolOptions[i].Equal(that1.ExtensionProtocolOptions[i]) {
1694			return false
1695		}
1696	}
1697	if this.DnsRefreshRate != nil && that1.DnsRefreshRate != nil {
1698		if *this.DnsRefreshRate != *that1.DnsRefreshRate {
1699			return false
1700		}
1701	} else if this.DnsRefreshRate != nil {
1702		return false
1703	} else if that1.DnsRefreshRate != nil {
1704		return false
1705	}
1706	if this.DnsLookupFamily != that1.DnsLookupFamily {
1707		return false
1708	}
1709	if len(this.DnsResolvers) != len(that1.DnsResolvers) {
1710		return false
1711	}
1712	for i := range this.DnsResolvers {
1713		if !this.DnsResolvers[i].Equal(that1.DnsResolvers[i]) {
1714			return false
1715		}
1716	}
1717	if !this.OutlierDetection.Equal(that1.OutlierDetection) {
1718		return false
1719	}
1720	if this.CleanupInterval != nil && that1.CleanupInterval != nil {
1721		if *this.CleanupInterval != *that1.CleanupInterval {
1722			return false
1723		}
1724	} else if this.CleanupInterval != nil {
1725		return false
1726	} else if that1.CleanupInterval != nil {
1727		return false
1728	}
1729	if !this.UpstreamBindConfig.Equal(that1.UpstreamBindConfig) {
1730		return false
1731	}
1732	if !this.LbSubsetConfig.Equal(that1.LbSubsetConfig) {
1733		return false
1734	}
1735	if that1.LbConfig == nil {
1736		if this.LbConfig != nil {
1737			return false
1738		}
1739	} else if this.LbConfig == nil {
1740		return false
1741	} else if !this.LbConfig.Equal(that1.LbConfig) {
1742		return false
1743	}
1744	if !this.CommonLbConfig.Equal(that1.CommonLbConfig) {
1745		return false
1746	}
1747	if !this.TransportSocket.Equal(that1.TransportSocket) {
1748		return false
1749	}
1750	if !this.Metadata.Equal(that1.Metadata) {
1751		return false
1752	}
1753	if this.ProtocolSelection != that1.ProtocolSelection {
1754		return false
1755	}
1756	if !this.UpstreamConnectionOptions.Equal(that1.UpstreamConnectionOptions) {
1757		return false
1758	}
1759	if this.CloseConnectionsOnHostHealthFailure != that1.CloseConnectionsOnHostHealthFailure {
1760		return false
1761	}
1762	if this.DrainConnectionsOnHostRemoval != that1.DrainConnectionsOnHostRemoval {
1763		return false
1764	}
1765	if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) {
1766		return false
1767	}
1768	return true
1769}
1770func (this *Cluster_RingHashLbConfig_) Equal(that interface{}) bool {
1771	if that == nil {
1772		return this == nil
1773	}
1774
1775	that1, ok := that.(*Cluster_RingHashLbConfig_)
1776	if !ok {
1777		that2, ok := that.(Cluster_RingHashLbConfig_)
1778		if ok {
1779			that1 = &that2
1780		} else {
1781			return false
1782		}
1783	}
1784	if that1 == nil {
1785		return this == nil
1786	} else if this == nil {
1787		return false
1788	}
1789	if !this.RingHashLbConfig.Equal(that1.RingHashLbConfig) {
1790		return false
1791	}
1792	return true
1793}
1794func (this *Cluster_OriginalDstLbConfig_) Equal(that interface{}) bool {
1795	if that == nil {
1796		return this == nil
1797	}
1798
1799	that1, ok := that.(*Cluster_OriginalDstLbConfig_)
1800	if !ok {
1801		that2, ok := that.(Cluster_OriginalDstLbConfig_)
1802		if ok {
1803			that1 = &that2
1804		} else {
1805			return false
1806		}
1807	}
1808	if that1 == nil {
1809		return this == nil
1810	} else if this == nil {
1811		return false
1812	}
1813	if !this.OriginalDstLbConfig.Equal(that1.OriginalDstLbConfig) {
1814		return false
1815	}
1816	return true
1817}
1818func (this *Cluster_EdsClusterConfig) Equal(that interface{}) bool {
1819	if that == nil {
1820		return this == nil
1821	}
1822
1823	that1, ok := that.(*Cluster_EdsClusterConfig)
1824	if !ok {
1825		that2, ok := that.(Cluster_EdsClusterConfig)
1826		if ok {
1827			that1 = &that2
1828		} else {
1829			return false
1830		}
1831	}
1832	if that1 == nil {
1833		return this == nil
1834	} else if this == nil {
1835		return false
1836	}
1837	if !this.EdsConfig.Equal(that1.EdsConfig) {
1838		return false
1839	}
1840	if this.ServiceName != that1.ServiceName {
1841		return false
1842	}
1843	if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) {
1844		return false
1845	}
1846	return true
1847}
1848func (this *Cluster_LbSubsetConfig) Equal(that interface{}) bool {
1849	if that == nil {
1850		return this == nil
1851	}
1852
1853	that1, ok := that.(*Cluster_LbSubsetConfig)
1854	if !ok {
1855		that2, ok := that.(Cluster_LbSubsetConfig)
1856		if ok {
1857			that1 = &that2
1858		} else {
1859			return false
1860		}
1861	}
1862	if that1 == nil {
1863		return this == nil
1864	} else if this == nil {
1865		return false
1866	}
1867	if this.FallbackPolicy != that1.FallbackPolicy {
1868		return false
1869	}
1870	if !this.DefaultSubset.Equal(that1.DefaultSubset) {
1871		return false
1872	}
1873	if len(this.SubsetSelectors) != len(that1.SubsetSelectors) {
1874		return false
1875	}
1876	for i := range this.SubsetSelectors {
1877		if !this.SubsetSelectors[i].Equal(that1.SubsetSelectors[i]) {
1878			return false
1879		}
1880	}
1881	if this.LocalityWeightAware != that1.LocalityWeightAware {
1882		return false
1883	}
1884	if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) {
1885		return false
1886	}
1887	return true
1888}
1889func (this *Cluster_LbSubsetConfig_LbSubsetSelector) Equal(that interface{}) bool {
1890	if that == nil {
1891		return this == nil
1892	}
1893
1894	that1, ok := that.(*Cluster_LbSubsetConfig_LbSubsetSelector)
1895	if !ok {
1896		that2, ok := that.(Cluster_LbSubsetConfig_LbSubsetSelector)
1897		if ok {
1898			that1 = &that2
1899		} else {
1900			return false
1901		}
1902	}
1903	if that1 == nil {
1904		return this == nil
1905	} else if this == nil {
1906		return false
1907	}
1908	if len(this.Keys) != len(that1.Keys) {
1909		return false
1910	}
1911	for i := range this.Keys {
1912		if this.Keys[i] != that1.Keys[i] {
1913			return false
1914		}
1915	}
1916	if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) {
1917		return false
1918	}
1919	return true
1920}
1921func (this *Cluster_RingHashLbConfig) Equal(that interface{}) bool {
1922	if that == nil {
1923		return this == nil
1924	}
1925
1926	that1, ok := that.(*Cluster_RingHashLbConfig)
1927	if !ok {
1928		that2, ok := that.(Cluster_RingHashLbConfig)
1929		if ok {
1930			that1 = &that2
1931		} else {
1932			return false
1933		}
1934	}
1935	if that1 == nil {
1936		return this == nil
1937	} else if this == nil {
1938		return false
1939	}
1940	if !this.MinimumRingSize.Equal(that1.MinimumRingSize) {
1941		return false
1942	}
1943	if !this.DeprecatedV1.Equal(that1.DeprecatedV1) {
1944		return false
1945	}
1946	if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) {
1947		return false
1948	}
1949	return true
1950}
1951func (this *Cluster_RingHashLbConfig_DeprecatedV1) Equal(that interface{}) bool {
1952	if that == nil {
1953		return this == nil
1954	}
1955
1956	that1, ok := that.(*Cluster_RingHashLbConfig_DeprecatedV1)
1957	if !ok {
1958		that2, ok := that.(Cluster_RingHashLbConfig_DeprecatedV1)
1959		if ok {
1960			that1 = &that2
1961		} else {
1962			return false
1963		}
1964	}
1965	if that1 == nil {
1966		return this == nil
1967	} else if this == nil {
1968		return false
1969	}
1970	if !this.UseStdHash.Equal(that1.UseStdHash) {
1971		return false
1972	}
1973	if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) {
1974		return false
1975	}
1976	return true
1977}
1978func (this *Cluster_OriginalDstLbConfig) Equal(that interface{}) bool {
1979	if that == nil {
1980		return this == nil
1981	}
1982
1983	that1, ok := that.(*Cluster_OriginalDstLbConfig)
1984	if !ok {
1985		that2, ok := that.(Cluster_OriginalDstLbConfig)
1986		if ok {
1987			that1 = &that2
1988		} else {
1989			return false
1990		}
1991	}
1992	if that1 == nil {
1993		return this == nil
1994	} else if this == nil {
1995		return false
1996	}
1997	if this.UseHttpHeader != that1.UseHttpHeader {
1998		return false
1999	}
2000	if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) {
2001		return false
2002	}
2003	return true
2004}
2005func (this *Cluster_CommonLbConfig) Equal(that interface{}) bool {
2006	if that == nil {
2007		return this == nil
2008	}
2009
2010	that1, ok := that.(*Cluster_CommonLbConfig)
2011	if !ok {
2012		that2, ok := that.(Cluster_CommonLbConfig)
2013		if ok {
2014			that1 = &that2
2015		} else {
2016			return false
2017		}
2018	}
2019	if that1 == nil {
2020		return this == nil
2021	} else if this == nil {
2022		return false
2023	}
2024	if !this.HealthyPanicThreshold.Equal(that1.HealthyPanicThreshold) {
2025		return false
2026	}
2027	if that1.LocalityConfigSpecifier == nil {
2028		if this.LocalityConfigSpecifier != nil {
2029			return false
2030		}
2031	} else if this.LocalityConfigSpecifier == nil {
2032		return false
2033	} else if !this.LocalityConfigSpecifier.Equal(that1.LocalityConfigSpecifier) {
2034		return false
2035	}
2036	if !this.UpdateMergeWindow.Equal(that1.UpdateMergeWindow) {
2037		return false
2038	}
2039	if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) {
2040		return false
2041	}
2042	return true
2043}
2044func (this *Cluster_CommonLbConfig_ZoneAwareLbConfig_) Equal(that interface{}) bool {
2045	if that == nil {
2046		return this == nil
2047	}
2048
2049	that1, ok := that.(*Cluster_CommonLbConfig_ZoneAwareLbConfig_)
2050	if !ok {
2051		that2, ok := that.(Cluster_CommonLbConfig_ZoneAwareLbConfig_)
2052		if ok {
2053			that1 = &that2
2054		} else {
2055			return false
2056		}
2057	}
2058	if that1 == nil {
2059		return this == nil
2060	} else if this == nil {
2061		return false
2062	}
2063	if !this.ZoneAwareLbConfig.Equal(that1.ZoneAwareLbConfig) {
2064		return false
2065	}
2066	return true
2067}
2068func (this *Cluster_CommonLbConfig_LocalityWeightedLbConfig_) Equal(that interface{}) bool {
2069	if that == nil {
2070		return this == nil
2071	}
2072
2073	that1, ok := that.(*Cluster_CommonLbConfig_LocalityWeightedLbConfig_)
2074	if !ok {
2075		that2, ok := that.(Cluster_CommonLbConfig_LocalityWeightedLbConfig_)
2076		if ok {
2077			that1 = &that2
2078		} else {
2079			return false
2080		}
2081	}
2082	if that1 == nil {
2083		return this == nil
2084	} else if this == nil {
2085		return false
2086	}
2087	if !this.LocalityWeightedLbConfig.Equal(that1.LocalityWeightedLbConfig) {
2088		return false
2089	}
2090	return true
2091}
2092func (this *Cluster_CommonLbConfig_ZoneAwareLbConfig) Equal(that interface{}) bool {
2093	if that == nil {
2094		return this == nil
2095	}
2096
2097	that1, ok := that.(*Cluster_CommonLbConfig_ZoneAwareLbConfig)
2098	if !ok {
2099		that2, ok := that.(Cluster_CommonLbConfig_ZoneAwareLbConfig)
2100		if ok {
2101			that1 = &that2
2102		} else {
2103			return false
2104		}
2105	}
2106	if that1 == nil {
2107		return this == nil
2108	} else if this == nil {
2109		return false
2110	}
2111	if !this.RoutingEnabled.Equal(that1.RoutingEnabled) {
2112		return false
2113	}
2114	if !this.MinClusterSize.Equal(that1.MinClusterSize) {
2115		return false
2116	}
2117	if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) {
2118		return false
2119	}
2120	return true
2121}
2122func (this *Cluster_CommonLbConfig_LocalityWeightedLbConfig) Equal(that interface{}) bool {
2123	if that == nil {
2124		return this == nil
2125	}
2126
2127	that1, ok := that.(*Cluster_CommonLbConfig_LocalityWeightedLbConfig)
2128	if !ok {
2129		that2, ok := that.(Cluster_CommonLbConfig_LocalityWeightedLbConfig)
2130		if ok {
2131			that1 = &that2
2132		} else {
2133			return false
2134		}
2135	}
2136	if that1 == nil {
2137		return this == nil
2138	} else if this == nil {
2139		return false
2140	}
2141	if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) {
2142		return false
2143	}
2144	return true
2145}
2146func (this *UpstreamBindConfig) Equal(that interface{}) bool {
2147	if that == nil {
2148		return this == nil
2149	}
2150
2151	that1, ok := that.(*UpstreamBindConfig)
2152	if !ok {
2153		that2, ok := that.(UpstreamBindConfig)
2154		if ok {
2155			that1 = &that2
2156		} else {
2157			return false
2158		}
2159	}
2160	if that1 == nil {
2161		return this == nil
2162	} else if this == nil {
2163		return false
2164	}
2165	if !this.SourceAddress.Equal(that1.SourceAddress) {
2166		return false
2167	}
2168	if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) {
2169		return false
2170	}
2171	return true
2172}
2173func (this *UpstreamConnectionOptions) Equal(that interface{}) bool {
2174	if that == nil {
2175		return this == nil
2176	}
2177
2178	that1, ok := that.(*UpstreamConnectionOptions)
2179	if !ok {
2180		that2, ok := that.(UpstreamConnectionOptions)
2181		if ok {
2182			that1 = &that2
2183		} else {
2184			return false
2185		}
2186	}
2187	if that1 == nil {
2188		return this == nil
2189	} else if this == nil {
2190		return false
2191	}
2192	if !this.TcpKeepalive.Equal(that1.TcpKeepalive) {
2193		return false
2194	}
2195	if !bytes.Equal(this.XXX_unrecognized, that1.XXX_unrecognized) {
2196		return false
2197	}
2198	return true
2199}
2200
2201// Reference imports to suppress errors if they are not otherwise used.
2202var _ context.Context
2203var _ grpc.ClientConn
2204
2205// This is a compile-time assertion to ensure that this generated file
2206// is compatible with the grpc package it is being compiled against.
2207const _ = grpc.SupportPackageIsVersion4
2208
2209// Client API for ClusterDiscoveryService service
2210
2211type ClusterDiscoveryServiceClient interface {
2212	StreamClusters(ctx context.Context, opts ...grpc.CallOption) (ClusterDiscoveryService_StreamClustersClient, error)
2213	IncrementalClusters(ctx context.Context, opts ...grpc.CallOption) (ClusterDiscoveryService_IncrementalClustersClient, error)
2214	FetchClusters(ctx context.Context, in *DiscoveryRequest, opts ...grpc.CallOption) (*DiscoveryResponse, error)
2215}
2216
2217type clusterDiscoveryServiceClient struct {
2218	cc *grpc.ClientConn
2219}
2220
2221func NewClusterDiscoveryServiceClient(cc *grpc.ClientConn) ClusterDiscoveryServiceClient {
2222	return &clusterDiscoveryServiceClient{cc}
2223}
2224
2225func (c *clusterDiscoveryServiceClient) StreamClusters(ctx context.Context, opts ...grpc.CallOption) (ClusterDiscoveryService_StreamClustersClient, error) {
2226	stream, err := c.cc.NewStream(ctx, &_ClusterDiscoveryService_serviceDesc.Streams[0], "/envoy.api.v2.ClusterDiscoveryService/StreamClusters", opts...)
2227	if err != nil {
2228		return nil, err
2229	}
2230	x := &clusterDiscoveryServiceStreamClustersClient{stream}
2231	return x, nil
2232}
2233
2234type ClusterDiscoveryService_StreamClustersClient interface {
2235	Send(*DiscoveryRequest) error
2236	Recv() (*DiscoveryResponse, error)
2237	grpc.ClientStream
2238}
2239
2240type clusterDiscoveryServiceStreamClustersClient struct {
2241	grpc.ClientStream
2242}
2243
2244func (x *clusterDiscoveryServiceStreamClustersClient) Send(m *DiscoveryRequest) error {
2245	return x.ClientStream.SendMsg(m)
2246}
2247
2248func (x *clusterDiscoveryServiceStreamClustersClient) Recv() (*DiscoveryResponse, error) {
2249	m := new(DiscoveryResponse)
2250	if err := x.ClientStream.RecvMsg(m); err != nil {
2251		return nil, err
2252	}
2253	return m, nil
2254}
2255
2256func (c *clusterDiscoveryServiceClient) IncrementalClusters(ctx context.Context, opts ...grpc.CallOption) (ClusterDiscoveryService_IncrementalClustersClient, error) {
2257	stream, err := c.cc.NewStream(ctx, &_ClusterDiscoveryService_serviceDesc.Streams[1], "/envoy.api.v2.ClusterDiscoveryService/IncrementalClusters", opts...)
2258	if err != nil {
2259		return nil, err
2260	}
2261	x := &clusterDiscoveryServiceIncrementalClustersClient{stream}
2262	return x, nil
2263}
2264
2265type ClusterDiscoveryService_IncrementalClustersClient interface {
2266	Send(*IncrementalDiscoveryRequest) error
2267	Recv() (*IncrementalDiscoveryResponse, error)
2268	grpc.ClientStream
2269}
2270
2271type clusterDiscoveryServiceIncrementalClustersClient struct {
2272	grpc.ClientStream
2273}
2274
2275func (x *clusterDiscoveryServiceIncrementalClustersClient) Send(m *IncrementalDiscoveryRequest) error {
2276	return x.ClientStream.SendMsg(m)
2277}
2278
2279func (x *clusterDiscoveryServiceIncrementalClustersClient) Recv() (*IncrementalDiscoveryResponse, error) {
2280	m := new(IncrementalDiscoveryResponse)
2281	if err := x.ClientStream.RecvMsg(m); err != nil {
2282		return nil, err
2283	}
2284	return m, nil
2285}
2286
2287func (c *clusterDiscoveryServiceClient) FetchClusters(ctx context.Context, in *DiscoveryRequest, opts ...grpc.CallOption) (*DiscoveryResponse, error) {
2288	out := new(DiscoveryResponse)
2289	err := c.cc.Invoke(ctx, "/envoy.api.v2.ClusterDiscoveryService/FetchClusters", in, out, opts...)
2290	if err != nil {
2291		return nil, err
2292	}
2293	return out, nil
2294}
2295
2296// Server API for ClusterDiscoveryService service
2297
2298type ClusterDiscoveryServiceServer interface {
2299	StreamClusters(ClusterDiscoveryService_StreamClustersServer) error
2300	IncrementalClusters(ClusterDiscoveryService_IncrementalClustersServer) error
2301	FetchClusters(context.Context, *DiscoveryRequest) (*DiscoveryResponse, error)
2302}
2303
2304func RegisterClusterDiscoveryServiceServer(s *grpc.Server, srv ClusterDiscoveryServiceServer) {
2305	s.RegisterService(&_ClusterDiscoveryService_serviceDesc, srv)
2306}
2307
2308func _ClusterDiscoveryService_StreamClusters_Handler(srv interface{}, stream grpc.ServerStream) error {
2309	return srv.(ClusterDiscoveryServiceServer).StreamClusters(&clusterDiscoveryServiceStreamClustersServer{stream})
2310}
2311
2312type ClusterDiscoveryService_StreamClustersServer interface {
2313	Send(*DiscoveryResponse) error
2314	Recv() (*DiscoveryRequest, error)
2315	grpc.ServerStream
2316}
2317
2318type clusterDiscoveryServiceStreamClustersServer struct {
2319	grpc.ServerStream
2320}
2321
2322func (x *clusterDiscoveryServiceStreamClustersServer) Send(m *DiscoveryResponse) error {
2323	return x.ServerStream.SendMsg(m)
2324}
2325
2326func (x *clusterDiscoveryServiceStreamClustersServer) Recv() (*DiscoveryRequest, error) {
2327	m := new(DiscoveryRequest)
2328	if err := x.ServerStream.RecvMsg(m); err != nil {
2329		return nil, err
2330	}
2331	return m, nil
2332}
2333
2334func _ClusterDiscoveryService_IncrementalClusters_Handler(srv interface{}, stream grpc.ServerStream) error {
2335	return srv.(ClusterDiscoveryServiceServer).IncrementalClusters(&clusterDiscoveryServiceIncrementalClustersServer{stream})
2336}
2337
2338type ClusterDiscoveryService_IncrementalClustersServer interface {
2339	Send(*IncrementalDiscoveryResponse) error
2340	Recv() (*IncrementalDiscoveryRequest, error)
2341	grpc.ServerStream
2342}
2343
2344type clusterDiscoveryServiceIncrementalClustersServer struct {
2345	grpc.ServerStream
2346}
2347
2348func (x *clusterDiscoveryServiceIncrementalClustersServer) Send(m *IncrementalDiscoveryResponse) error {
2349	return x.ServerStream.SendMsg(m)
2350}
2351
2352func (x *clusterDiscoveryServiceIncrementalClustersServer) Recv() (*IncrementalDiscoveryRequest, error) {
2353	m := new(IncrementalDiscoveryRequest)
2354	if err := x.ServerStream.RecvMsg(m); err != nil {
2355		return nil, err
2356	}
2357	return m, nil
2358}
2359
2360func _ClusterDiscoveryService_FetchClusters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
2361	in := new(DiscoveryRequest)
2362	if err := dec(in); err != nil {
2363		return nil, err
2364	}
2365	if interceptor == nil {
2366		return srv.(ClusterDiscoveryServiceServer).FetchClusters(ctx, in)
2367	}
2368	info := &grpc.UnaryServerInfo{
2369		Server:     srv,
2370		FullMethod: "/envoy.api.v2.ClusterDiscoveryService/FetchClusters",
2371	}
2372	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
2373		return srv.(ClusterDiscoveryServiceServer).FetchClusters(ctx, req.(*DiscoveryRequest))
2374	}
2375	return interceptor(ctx, in, info, handler)
2376}
2377
2378var _ClusterDiscoveryService_serviceDesc = grpc.ServiceDesc{
2379	ServiceName: "envoy.api.v2.ClusterDiscoveryService",
2380	HandlerType: (*ClusterDiscoveryServiceServer)(nil),
2381	Methods: []grpc.MethodDesc{
2382		{
2383			MethodName: "FetchClusters",
2384			Handler:    _ClusterDiscoveryService_FetchClusters_Handler,
2385		},
2386	},
2387	Streams: []grpc.StreamDesc{
2388		{
2389			StreamName:    "StreamClusters",
2390			Handler:       _ClusterDiscoveryService_StreamClusters_Handler,
2391			ServerStreams: true,
2392			ClientStreams: true,
2393		},
2394		{
2395			StreamName:    "IncrementalClusters",
2396			Handler:       _ClusterDiscoveryService_IncrementalClusters_Handler,
2397			ServerStreams: true,
2398			ClientStreams: true,
2399		},
2400	},
2401	Metadata: "envoy/api/v2/cds.proto",
2402}
2403
2404func (m *Cluster) Marshal() (dAtA []byte, err error) {
2405	size := m.Size()
2406	dAtA = make([]byte, size)
2407	n, err := m.MarshalTo(dAtA)
2408	if err != nil {
2409		return nil, err
2410	}
2411	return dAtA[:n], nil
2412}
2413
2414func (m *Cluster) MarshalTo(dAtA []byte) (int, error) {
2415	var i int
2416	_ = i
2417	var l int
2418	_ = l
2419	if len(m.Name) > 0 {
2420		dAtA[i] = 0xa
2421		i++
2422		i = encodeVarintCds(dAtA, i, uint64(len(m.Name)))
2423		i += copy(dAtA[i:], m.Name)
2424	}
2425	if m.Type != 0 {
2426		dAtA[i] = 0x10
2427		i++
2428		i = encodeVarintCds(dAtA, i, uint64(m.Type))
2429	}
2430	if m.EdsClusterConfig != nil {
2431		dAtA[i] = 0x1a
2432		i++
2433		i = encodeVarintCds(dAtA, i, uint64(m.EdsClusterConfig.Size()))
2434		n1, err := m.EdsClusterConfig.MarshalTo(dAtA[i:])
2435		if err != nil {
2436			return 0, err
2437		}
2438		i += n1
2439	}
2440	dAtA[i] = 0x22
2441	i++
2442	i = encodeVarintCds(dAtA, i, uint64(github_com_gogo_protobuf_types.SizeOfStdDuration(m.ConnectTimeout)))
2443	n2, err := github_com_gogo_protobuf_types.StdDurationMarshalTo(m.ConnectTimeout, dAtA[i:])
2444	if err != nil {
2445		return 0, err
2446	}
2447	i += n2
2448	if m.PerConnectionBufferLimitBytes != nil {
2449		dAtA[i] = 0x2a
2450		i++
2451		i = encodeVarintCds(dAtA, i, uint64(m.PerConnectionBufferLimitBytes.Size()))
2452		n3, err := m.PerConnectionBufferLimitBytes.MarshalTo(dAtA[i:])
2453		if err != nil {
2454			return 0, err
2455		}
2456		i += n3
2457	}
2458	if m.LbPolicy != 0 {
2459		dAtA[i] = 0x30
2460		i++
2461		i = encodeVarintCds(dAtA, i, uint64(m.LbPolicy))
2462	}
2463	if len(m.Hosts) > 0 {
2464		for _, msg := range m.Hosts {
2465			dAtA[i] = 0x3a
2466			i++
2467			i = encodeVarintCds(dAtA, i, uint64(msg.Size()))
2468			n, err := msg.MarshalTo(dAtA[i:])
2469			if err != nil {
2470				return 0, err
2471			}
2472			i += n
2473		}
2474	}
2475	if len(m.HealthChecks) > 0 {
2476		for _, msg := range m.HealthChecks {
2477			dAtA[i] = 0x42
2478			i++
2479			i = encodeVarintCds(dAtA, i, uint64(msg.Size()))
2480			n, err := msg.MarshalTo(dAtA[i:])
2481			if err != nil {
2482				return 0, err
2483			}
2484			i += n
2485		}
2486	}
2487	if m.MaxRequestsPerConnection != nil {
2488		dAtA[i] = 0x4a
2489		i++
2490		i = encodeVarintCds(dAtA, i, uint64(m.MaxRequestsPerConnection.Size()))
2491		n4, err := m.MaxRequestsPerConnection.MarshalTo(dAtA[i:])
2492		if err != nil {
2493			return 0, err
2494		}
2495		i += n4
2496	}
2497	if m.CircuitBreakers != nil {
2498		dAtA[i] = 0x52
2499		i++
2500		i = encodeVarintCds(dAtA, i, uint64(m.CircuitBreakers.Size()))
2501		n5, err := m.CircuitBreakers.MarshalTo(dAtA[i:])
2502		if err != nil {
2503			return 0, err
2504		}
2505		i += n5
2506	}
2507	if m.TlsContext != nil {
2508		dAtA[i] = 0x5a
2509		i++
2510		i = encodeVarintCds(dAtA, i, uint64(m.TlsContext.Size()))
2511		n6, err := m.TlsContext.MarshalTo(dAtA[i:])
2512		if err != nil {
2513			return 0, err
2514		}
2515		i += n6
2516	}
2517	if m.HttpProtocolOptions != nil {
2518		dAtA[i] = 0x6a
2519		i++
2520		i = encodeVarintCds(dAtA, i, uint64(m.HttpProtocolOptions.Size()))
2521		n7, err := m.HttpProtocolOptions.MarshalTo(dAtA[i:])
2522		if err != nil {
2523			return 0, err
2524		}
2525		i += n7
2526	}
2527	if m.Http2ProtocolOptions != nil {
2528		dAtA[i] = 0x72
2529		i++
2530		i = encodeVarintCds(dAtA, i, uint64(m.Http2ProtocolOptions.Size()))
2531		n8, err := m.Http2ProtocolOptions.MarshalTo(dAtA[i:])
2532		if err != nil {
2533			return 0, err
2534		}
2535		i += n8
2536	}
2537	if m.DnsRefreshRate != nil {
2538		dAtA[i] = 0x82
2539		i++
2540		dAtA[i] = 0x1
2541		i++
2542		i = encodeVarintCds(dAtA, i, uint64(github_com_gogo_protobuf_types.SizeOfStdDuration(*m.DnsRefreshRate)))
2543		n9, err := github_com_gogo_protobuf_types.StdDurationMarshalTo(*m.DnsRefreshRate, dAtA[i:])
2544		if err != nil {
2545			return 0, err
2546		}
2547		i += n9
2548	}
2549	if m.DnsLookupFamily != 0 {
2550		dAtA[i] = 0x88
2551		i++
2552		dAtA[i] = 0x1
2553		i++
2554		i = encodeVarintCds(dAtA, i, uint64(m.DnsLookupFamily))
2555	}
2556	if len(m.DnsResolvers) > 0 {
2557		for _, msg := range m.DnsResolvers {
2558			dAtA[i] = 0x92
2559			i++
2560			dAtA[i] = 0x1
2561			i++
2562			i = encodeVarintCds(dAtA, i, uint64(msg.Size()))
2563			n, err := msg.MarshalTo(dAtA[i:])
2564			if err != nil {
2565				return 0, err
2566			}
2567			i += n
2568		}
2569	}
2570	if m.OutlierDetection != nil {
2571		dAtA[i] = 0x9a
2572		i++
2573		dAtA[i] = 0x1
2574		i++
2575		i = encodeVarintCds(dAtA, i, uint64(m.OutlierDetection.Size()))
2576		n10, err := m.OutlierDetection.MarshalTo(dAtA[i:])
2577		if err != nil {
2578			return 0, err
2579		}
2580		i += n10
2581	}
2582	if m.CleanupInterval != nil {
2583		dAtA[i] = 0xa2
2584		i++
2585		dAtA[i] = 0x1
2586		i++
2587		i = encodeVarintCds(dAtA, i, uint64(github_com_gogo_protobuf_types.SizeOfStdDuration(*m.CleanupInterval)))
2588		n11, err := github_com_gogo_protobuf_types.StdDurationMarshalTo(*m.CleanupInterval, dAtA[i:])
2589		if err != nil {
2590			return 0, err
2591		}
2592		i += n11
2593	}
2594	if m.UpstreamBindConfig != nil {
2595		dAtA[i] = 0xaa
2596		i++
2597		dAtA[i] = 0x1
2598		i++
2599		i = encodeVarintCds(dAtA, i, uint64(m.UpstreamBindConfig.Size()))
2600		n12, err := m.UpstreamBindConfig.MarshalTo(dAtA[i:])
2601		if err != nil {
2602			return 0, err
2603		}
2604		i += n12
2605	}
2606	if m.LbSubsetConfig != nil {
2607		dAtA[i] = 0xb2
2608		i++
2609		dAtA[i] = 0x1
2610		i++
2611		i = encodeVarintCds(dAtA, i, uint64(m.LbSubsetConfig.Size()))
2612		n13, err := m.LbSubsetConfig.MarshalTo(dAtA[i:])
2613		if err != nil {
2614			return 0, err
2615		}
2616		i += n13
2617	}
2618	if m.LbConfig != nil {
2619		nn14, err := m.LbConfig.MarshalTo(dAtA[i:])
2620		if err != nil {
2621			return 0, err
2622		}
2623		i += nn14
2624	}
2625	if m.TransportSocket != nil {
2626		dAtA[i] = 0xc2
2627		i++
2628		dAtA[i] = 0x1
2629		i++
2630		i = encodeVarintCds(dAtA, i, uint64(m.TransportSocket.Size()))
2631		n15, err := m.TransportSocket.MarshalTo(dAtA[i:])
2632		if err != nil {
2633			return 0, err
2634		}
2635		i += n15
2636	}
2637	if m.Metadata != nil {
2638		dAtA[i] = 0xca
2639		i++
2640		dAtA[i] = 0x1
2641		i++
2642		i = encodeVarintCds(dAtA, i, uint64(m.Metadata.Size()))
2643		n16, err := m.Metadata.MarshalTo(dAtA[i:])
2644		if err != nil {
2645			return 0, err
2646		}
2647		i += n16
2648	}
2649	if m.ProtocolSelection != 0 {
2650		dAtA[i] = 0xd0
2651		i++
2652		dAtA[i] = 0x1
2653		i++
2654		i = encodeVarintCds(dAtA, i, uint64(m.ProtocolSelection))
2655	}
2656	if m.CommonLbConfig != nil {
2657		dAtA[i] = 0xda
2658		i++
2659		dAtA[i] = 0x1
2660		i++
2661		i = encodeVarintCds(dAtA, i, uint64(m.CommonLbConfig.Size()))
2662		n17, err := m.CommonLbConfig.MarshalTo(dAtA[i:])
2663		if err != nil {
2664			return 0, err
2665		}
2666		i += n17
2667	}
2668	if len(m.AltStatName) > 0 {
2669		dAtA[i] = 0xe2
2670		i++
2671		dAtA[i] = 0x1
2672		i++
2673		i = encodeVarintCds(dAtA, i, uint64(len(m.AltStatName)))
2674		i += copy(dAtA[i:], m.AltStatName)
2675	}
2676	if m.CommonHttpProtocolOptions != nil {
2677		dAtA[i] = 0xea
2678		i++
2679		dAtA[i] = 0x1
2680		i++
2681		i = encodeVarintCds(dAtA, i, uint64(m.CommonHttpProtocolOptions.Size()))
2682		n18, err := m.CommonHttpProtocolOptions.MarshalTo(dAtA[i:])
2683		if err != nil {
2684			return 0, err
2685		}
2686		i += n18
2687	}
2688	if m.UpstreamConnectionOptions != nil {
2689		dAtA[i] = 0xf2
2690		i++
2691		dAtA[i] = 0x1
2692		i++
2693		i = encodeVarintCds(dAtA, i, uint64(m.UpstreamConnectionOptions.Size()))
2694		n19, err := m.UpstreamConnectionOptions.MarshalTo(dAtA[i:])
2695		if err != nil {
2696			return 0, err
2697		}
2698		i += n19
2699	}
2700	if m.CloseConnectionsOnHostHealthFailure {
2701		dAtA[i] = 0xf8
2702		i++
2703		dAtA[i] = 0x1
2704		i++
2705		if m.CloseConnectionsOnHostHealthFailure {
2706			dAtA[i] = 1
2707		} else {
2708			dAtA[i] = 0
2709		}
2710		i++
2711	}
2712	if m.DrainConnectionsOnHostRemoval {
2713		dAtA[i] = 0x80
2714		i++
2715		dAtA[i] = 0x2
2716		i++
2717		if m.DrainConnectionsOnHostRemoval {
2718			dAtA[i] = 1
2719		} else {
2720			dAtA[i] = 0
2721		}
2722		i++
2723	}
2724	if m.LoadAssignment != nil {
2725		dAtA[i] = 0x8a
2726		i++
2727		dAtA[i] = 0x2
2728		i++
2729		i = encodeVarintCds(dAtA, i, uint64(m.LoadAssignment.Size()))
2730		n20, err := m.LoadAssignment.MarshalTo(dAtA[i:])
2731		if err != nil {
2732			return 0, err
2733		}
2734		i += n20
2735	}
2736	if len(m.ExtensionProtocolOptions) > 0 {
2737		for k, _ := range m.ExtensionProtocolOptions {
2738			dAtA[i] = 0x9a
2739			i++
2740			dAtA[i] = 0x2
2741			i++
2742			v := m.ExtensionProtocolOptions[k]
2743			msgSize := 0
2744			if v != nil {
2745				msgSize = v.Size()
2746				msgSize += 1 + sovCds(uint64(msgSize))
2747			}
2748			mapSize := 1 + len(k) + sovCds(uint64(len(k))) + msgSize
2749			i = encodeVarintCds(dAtA, i, uint64(mapSize))
2750			dAtA[i] = 0xa
2751			i++
2752			i = encodeVarintCds(dAtA, i, uint64(len(k)))
2753			i += copy(dAtA[i:], k)
2754			if v != nil {
2755				dAtA[i] = 0x12
2756				i++
2757				i = encodeVarintCds(dAtA, i, uint64(v.Size()))
2758				n21, err := v.MarshalTo(dAtA[i:])
2759				if err != nil {
2760					return 0, err
2761				}
2762				i += n21
2763			}
2764		}
2765	}
2766	if m.XXX_unrecognized != nil {
2767		i += copy(dAtA[i:], m.XXX_unrecognized)
2768	}
2769	return i, nil
2770}
2771
2772func (m *Cluster_RingHashLbConfig_) MarshalTo(dAtA []byte) (int, error) {
2773	i := 0
2774	if m.RingHashLbConfig != nil {
2775		dAtA[i] = 0xba
2776		i++
2777		dAtA[i] = 0x1
2778		i++
2779		i = encodeVarintCds(dAtA, i, uint64(m.RingHashLbConfig.Size()))
2780		n22, err := m.RingHashLbConfig.MarshalTo(dAtA[i:])
2781		if err != nil {
2782			return 0, err
2783		}
2784		i += n22
2785	}
2786	return i, nil
2787}
2788func (m *Cluster_OriginalDstLbConfig_) MarshalTo(dAtA []byte) (int, error) {
2789	i := 0
2790	if m.OriginalDstLbConfig != nil {
2791		dAtA[i] = 0x92
2792		i++
2793		dAtA[i] = 0x2
2794		i++
2795		i = encodeVarintCds(dAtA, i, uint64(m.OriginalDstLbConfig.Size()))
2796		n23, err := m.OriginalDstLbConfig.MarshalTo(dAtA[i:])
2797		if err != nil {
2798			return 0, err
2799		}
2800		i += n23
2801	}
2802	return i, nil
2803}
2804func (m *Cluster_EdsClusterConfig) Marshal() (dAtA []byte, err error) {
2805	size := m.Size()
2806	dAtA = make([]byte, size)
2807	n, err := m.MarshalTo(dAtA)
2808	if err != nil {
2809		return nil, err
2810	}
2811	return dAtA[:n], nil
2812}
2813
2814func (m *Cluster_EdsClusterConfig) MarshalTo(dAtA []byte) (int, error) {
2815	var i int
2816	_ = i
2817	var l int
2818	_ = l
2819	if m.EdsConfig != nil {
2820		dAtA[i] = 0xa
2821		i++
2822		i = encodeVarintCds(dAtA, i, uint64(m.EdsConfig.Size()))
2823		n24, err := m.EdsConfig.MarshalTo(dAtA[i:])
2824		if err != nil {
2825			return 0, err
2826		}
2827		i += n24
2828	}
2829	if len(m.ServiceName) > 0 {
2830		dAtA[i] = 0x12
2831		i++
2832		i = encodeVarintCds(dAtA, i, uint64(len(m.ServiceName)))
2833		i += copy(dAtA[i:], m.ServiceName)
2834	}
2835	if m.XXX_unrecognized != nil {
2836		i += copy(dAtA[i:], m.XXX_unrecognized)
2837	}
2838	return i, nil
2839}
2840
2841func (m *Cluster_LbSubsetConfig) Marshal() (dAtA []byte, err error) {
2842	size := m.Size()
2843	dAtA = make([]byte, size)
2844	n, err := m.MarshalTo(dAtA)
2845	if err != nil {
2846		return nil, err
2847	}
2848	return dAtA[:n], nil
2849}
2850
2851func (m *Cluster_LbSubsetConfig) MarshalTo(dAtA []byte) (int, error) {
2852	var i int
2853	_ = i
2854	var l int
2855	_ = l
2856	if m.FallbackPolicy != 0 {
2857		dAtA[i] = 0x8
2858		i++
2859		i = encodeVarintCds(dAtA, i, uint64(m.FallbackPolicy))
2860	}
2861	if m.DefaultSubset != nil {
2862		dAtA[i] = 0x12
2863		i++
2864		i = encodeVarintCds(dAtA, i, uint64(m.DefaultSubset.Size()))
2865		n25, err := m.DefaultSubset.MarshalTo(dAtA[i:])
2866		if err != nil {
2867			return 0, err
2868		}
2869		i += n25
2870	}
2871	if len(m.SubsetSelectors) > 0 {
2872		for _, msg := range m.SubsetSelectors {
2873			dAtA[i] = 0x1a
2874			i++
2875			i = encodeVarintCds(dAtA, i, uint64(msg.Size()))
2876			n, err := msg.MarshalTo(dAtA[i:])
2877			if err != nil {
2878				return 0, err
2879			}
2880			i += n
2881		}
2882	}
2883	if m.LocalityWeightAware {
2884		dAtA[i] = 0x20
2885		i++
2886		if m.LocalityWeightAware {
2887			dAtA[i] = 1
2888		} else {
2889			dAtA[i] = 0
2890		}
2891		i++
2892	}
2893	if m.XXX_unrecognized != nil {
2894		i += copy(dAtA[i:], m.XXX_unrecognized)
2895	}
2896	return i, nil
2897}
2898
2899func (m *Cluster_LbSubsetConfig_LbSubsetSelector) Marshal() (dAtA []byte, err error) {
2900	size := m.Size()
2901	dAtA = make([]byte, size)
2902	n, err := m.MarshalTo(dAtA)
2903	if err != nil {
2904		return nil, err
2905	}
2906	return dAtA[:n], nil
2907}
2908
2909func (m *Cluster_LbSubsetConfig_LbSubsetSelector) MarshalTo(dAtA []byte) (int, error) {
2910	var i int
2911	_ = i
2912	var l int
2913	_ = l
2914	if len(m.Keys) > 0 {
2915		for _, s := range m.Keys {
2916			dAtA[i] = 0xa
2917			i++
2918			l = len(s)
2919			for l >= 1<<7 {
2920				dAtA[i] = uint8(uint64(l)&0x7f | 0x80)
2921				l >>= 7
2922				i++
2923			}
2924			dAtA[i] = uint8(l)
2925			i++
2926			i += copy(dAtA[i:], s)
2927		}
2928	}
2929	if m.XXX_unrecognized != nil {
2930		i += copy(dAtA[i:], m.XXX_unrecognized)
2931	}
2932	return i, nil
2933}
2934
2935func (m *Cluster_RingHashLbConfig) Marshal() (dAtA []byte, err error) {
2936	size := m.Size()
2937	dAtA = make([]byte, size)
2938	n, err := m.MarshalTo(dAtA)
2939	if err != nil {
2940		return nil, err
2941	}
2942	return dAtA[:n], nil
2943}
2944
2945func (m *Cluster_RingHashLbConfig) MarshalTo(dAtA []byte) (int, error) {
2946	var i int
2947	_ = i
2948	var l int
2949	_ = l
2950	if m.MinimumRingSize != nil {
2951		dAtA[i] = 0xa
2952		i++
2953		i = encodeVarintCds(dAtA, i, uint64(m.MinimumRingSize.Size()))
2954		n26, err := m.MinimumRingSize.MarshalTo(dAtA[i:])
2955		if err != nil {
2956			return 0, err
2957		}
2958		i += n26
2959	}
2960	if m.DeprecatedV1 != nil {
2961		dAtA[i] = 0x12
2962		i++
2963		i = encodeVarintCds(dAtA, i, uint64(m.DeprecatedV1.Size()))
2964		n27, err := m.DeprecatedV1.MarshalTo(dAtA[i:])
2965		if err != nil {
2966			return 0, err
2967		}
2968		i += n27
2969	}
2970	if m.XXX_unrecognized != nil {
2971		i += copy(dAtA[i:], m.XXX_unrecognized)
2972	}
2973	return i, nil
2974}
2975
2976func (m *Cluster_RingHashLbConfig_DeprecatedV1) Marshal() (dAtA []byte, err error) {
2977	size := m.Size()
2978	dAtA = make([]byte, size)
2979	n, err := m.MarshalTo(dAtA)
2980	if err != nil {
2981		return nil, err
2982	}
2983	return dAtA[:n], nil
2984}
2985
2986func (m *Cluster_RingHashLbConfig_DeprecatedV1) MarshalTo(dAtA []byte) (int, error) {
2987	var i int
2988	_ = i
2989	var l int
2990	_ = l
2991	if m.UseStdHash != nil {
2992		dAtA[i] = 0xa
2993		i++
2994		i = encodeVarintCds(dAtA, i, uint64(m.UseStdHash.Size()))
2995		n28, err := m.UseStdHash.MarshalTo(dAtA[i:])
2996		if err != nil {
2997			return 0, err
2998		}
2999		i += n28
3000	}
3001	if m.XXX_unrecognized != nil {
3002		i += copy(dAtA[i:], m.XXX_unrecognized)
3003	}
3004	return i, nil
3005}
3006
3007func (m *Cluster_OriginalDstLbConfig) Marshal() (dAtA []byte, err error) {
3008	size := m.Size()
3009	dAtA = make([]byte, size)
3010	n, err := m.MarshalTo(dAtA)
3011	if err != nil {
3012		return nil, err
3013	}
3014	return dAtA[:n], nil
3015}
3016
3017func (m *Cluster_OriginalDstLbConfig) MarshalTo(dAtA []byte) (int, error) {
3018	var i int
3019	_ = i
3020	var l int
3021	_ = l
3022	if m.UseHttpHeader {
3023		dAtA[i] = 0x8
3024		i++
3025		if m.UseHttpHeader {
3026			dAtA[i] = 1
3027		} else {
3028			dAtA[i] = 0
3029		}
3030		i++
3031	}
3032	if m.XXX_unrecognized != nil {
3033		i += copy(dAtA[i:], m.XXX_unrecognized)
3034	}
3035	return i, nil
3036}
3037
3038func (m *Cluster_CommonLbConfig) Marshal() (dAtA []byte, err error) {
3039	size := m.Size()
3040	dAtA = make([]byte, size)
3041	n, err := m.MarshalTo(dAtA)
3042	if err != nil {
3043		return nil, err
3044	}
3045	return dAtA[:n], nil
3046}
3047
3048func (m *Cluster_CommonLbConfig) MarshalTo(dAtA []byte) (int, error) {
3049	var i int
3050	_ = i
3051	var l int
3052	_ = l
3053	if m.HealthyPanicThreshold != nil {
3054		dAtA[i] = 0xa
3055		i++
3056		i = encodeVarintCds(dAtA, i, uint64(m.HealthyPanicThreshold.Size()))
3057		n29, err := m.HealthyPanicThreshold.MarshalTo(dAtA[i:])
3058		if err != nil {
3059			return 0, err
3060		}
3061		i += n29
3062	}
3063	if m.LocalityConfigSpecifier != nil {
3064		nn30, err := m.LocalityConfigSpecifier.MarshalTo(dAtA[i:])
3065		if err != nil {
3066			return 0, err
3067		}
3068		i += nn30
3069	}
3070	if m.UpdateMergeWindow != nil {
3071		dAtA[i] = 0x22
3072		i++
3073		i = encodeVarintCds(dAtA, i, uint64(m.UpdateMergeWindow.Size()))
3074		n31, err := m.UpdateMergeWindow.MarshalTo(dAtA[i:])
3075		if err != nil {
3076			return 0, err
3077		}
3078		i += n31
3079	}
3080	if m.XXX_unrecognized != nil {
3081		i += copy(dAtA[i:], m.XXX_unrecognized)
3082	}
3083	return i, nil
3084}
3085
3086func (m *Cluster_CommonLbConfig_ZoneAwareLbConfig_) MarshalTo(dAtA []byte) (int, error) {
3087	i := 0
3088	if m.ZoneAwareLbConfig != nil {
3089		dAtA[i] = 0x12
3090		i++
3091		i = encodeVarintCds(dAtA, i, uint64(m.ZoneAwareLbConfig.Size()))
3092		n32, err := m.ZoneAwareLbConfig.MarshalTo(dAtA[i:])
3093		if err != nil {
3094			return 0, err
3095		}
3096		i += n32
3097	}
3098	return i, nil
3099}
3100func (m *Cluster_CommonLbConfig_LocalityWeightedLbConfig_) MarshalTo(dAtA []byte) (int, error) {
3101	i := 0
3102	if m.LocalityWeightedLbConfig != nil {
3103		dAtA[i] = 0x1a
3104		i++
3105		i = encodeVarintCds(dAtA, i, uint64(m.LocalityWeightedLbConfig.Size()))
3106		n33, err := m.LocalityWeightedLbConfig.MarshalTo(dAtA[i:])
3107		if err != nil {
3108			return 0, err
3109		}
3110		i += n33
3111	}
3112	return i, nil
3113}
3114func (m *Cluster_CommonLbConfig_ZoneAwareLbConfig) Marshal() (dAtA []byte, err error) {
3115	size := m.Size()
3116	dAtA = make([]byte, size)
3117	n, err := m.MarshalTo(dAtA)
3118	if err != nil {
3119		return nil, err
3120	}
3121	return dAtA[:n], nil
3122}
3123
3124func (m *Cluster_CommonLbConfig_ZoneAwareLbConfig) MarshalTo(dAtA []byte) (int, error) {
3125	var i int
3126	_ = i
3127	var l int
3128	_ = l
3129	if m.RoutingEnabled != nil {
3130		dAtA[i] = 0xa
3131		i++
3132		i = encodeVarintCds(dAtA, i, uint64(m.RoutingEnabled.Size()))
3133		n34, err := m.RoutingEnabled.MarshalTo(dAtA[i:])
3134		if err != nil {
3135			return 0, err
3136		}
3137		i += n34
3138	}
3139	if m.MinClusterSize != nil {
3140		dAtA[i] = 0x12
3141		i++
3142		i = encodeVarintCds(dAtA, i, uint64(m.MinClusterSize.Size()))
3143		n35, err := m.MinClusterSize.MarshalTo(dAtA[i:])
3144		if err != nil {
3145			return 0, err
3146		}
3147		i += n35
3148	}
3149	if m.XXX_unrecognized != nil {
3150		i += copy(dAtA[i:], m.XXX_unrecognized)
3151	}
3152	return i, nil
3153}
3154
3155func (m *Cluster_CommonLbConfig_LocalityWeightedLbConfig) Marshal() (dAtA []byte, err error) {
3156	size := m.Size()
3157	dAtA = make([]byte, size)
3158	n, err := m.MarshalTo(dAtA)
3159	if err != nil {
3160		return nil, err
3161	}
3162	return dAtA[:n], nil
3163}
3164
3165func (m *Cluster_CommonLbConfig_LocalityWeightedLbConfig) MarshalTo(dAtA []byte) (int, error) {
3166	var i int
3167	_ = i
3168	var l int
3169	_ = l
3170	if m.XXX_unrecognized != nil {
3171		i += copy(dAtA[i:], m.XXX_unrecognized)
3172	}
3173	return i, nil
3174}
3175
3176func (m *UpstreamBindConfig) Marshal() (dAtA []byte, err error) {
3177	size := m.Size()
3178	dAtA = make([]byte, size)
3179	n, err := m.MarshalTo(dAtA)
3180	if err != nil {
3181		return nil, err
3182	}
3183	return dAtA[:n], nil
3184}
3185
3186func (m *UpstreamBindConfig) MarshalTo(dAtA []byte) (int, error) {
3187	var i int
3188	_ = i
3189	var l int
3190	_ = l
3191	if m.SourceAddress != nil {
3192		dAtA[i] = 0xa
3193		i++
3194		i = encodeVarintCds(dAtA, i, uint64(m.SourceAddress.Size()))
3195		n36, err := m.SourceAddress.MarshalTo(dAtA[i:])
3196		if err != nil {
3197			return 0, err
3198		}
3199		i += n36
3200	}
3201	if m.XXX_unrecognized != nil {
3202		i += copy(dAtA[i:], m.XXX_unrecognized)
3203	}
3204	return i, nil
3205}
3206
3207func (m *UpstreamConnectionOptions) Marshal() (dAtA []byte, err error) {
3208	size := m.Size()
3209	dAtA = make([]byte, size)
3210	n, err := m.MarshalTo(dAtA)
3211	if err != nil {
3212		return nil, err
3213	}
3214	return dAtA[:n], nil
3215}
3216
3217func (m *UpstreamConnectionOptions) MarshalTo(dAtA []byte) (int, error) {
3218	var i int
3219	_ = i
3220	var l int
3221	_ = l
3222	if m.TcpKeepalive != nil {
3223		dAtA[i] = 0xa
3224		i++
3225		i = encodeVarintCds(dAtA, i, uint64(m.TcpKeepalive.Size()))
3226		n37, err := m.TcpKeepalive.MarshalTo(dAtA[i:])
3227		if err != nil {
3228			return 0, err
3229		}
3230		i += n37
3231	}
3232	if m.XXX_unrecognized != nil {
3233		i += copy(dAtA[i:], m.XXX_unrecognized)
3234	}
3235	return i, nil
3236}
3237
3238func encodeVarintCds(dAtA []byte, offset int, v uint64) int {
3239	for v >= 1<<7 {
3240		dAtA[offset] = uint8(v&0x7f | 0x80)
3241		v >>= 7
3242		offset++
3243	}
3244	dAtA[offset] = uint8(v)
3245	return offset + 1
3246}
3247func (m *Cluster) Size() (n int) {
3248	var l int
3249	_ = l
3250	l = len(m.Name)
3251	if l > 0 {
3252		n += 1 + l + sovCds(uint64(l))
3253	}
3254	if m.Type != 0 {
3255		n += 1 + sovCds(uint64(m.Type))
3256	}
3257	if m.EdsClusterConfig != nil {
3258		l = m.EdsClusterConfig.Size()
3259		n += 1 + l + sovCds(uint64(l))
3260	}
3261	l = github_com_gogo_protobuf_types.SizeOfStdDuration(m.ConnectTimeout)
3262	n += 1 + l + sovCds(uint64(l))
3263	if m.PerConnectionBufferLimitBytes != nil {
3264		l = m.PerConnectionBufferLimitBytes.Size()
3265		n += 1 + l + sovCds(uint64(l))
3266	}
3267	if m.LbPolicy != 0 {
3268		n += 1 + sovCds(uint64(m.LbPolicy))
3269	}
3270	if len(m.Hosts) > 0 {
3271		for _, e := range m.Hosts {
3272			l = e.Size()
3273			n += 1 + l + sovCds(uint64(l))
3274		}
3275	}
3276	if len(m.HealthChecks) > 0 {
3277		for _, e := range m.HealthChecks {
3278			l = e.Size()
3279			n += 1 + l + sovCds(uint64(l))
3280		}
3281	}
3282	if m.MaxRequestsPerConnection != nil {
3283		l = m.MaxRequestsPerConnection.Size()
3284		n += 1 + l + sovCds(uint64(l))
3285	}
3286	if m.CircuitBreakers != nil {
3287		l = m.CircuitBreakers.Size()
3288		n += 1 + l + sovCds(uint64(l))
3289	}
3290	if m.TlsContext != nil {
3291		l = m.TlsContext.Size()
3292		n += 1 + l + sovCds(uint64(l))
3293	}
3294	if m.HttpProtocolOptions != nil {
3295		l = m.HttpProtocolOptions.Size()
3296		n += 1 + l + sovCds(uint64(l))
3297	}
3298	if m.Http2ProtocolOptions != nil {
3299		l = m.Http2ProtocolOptions.Size()
3300		n += 1 + l + sovCds(uint64(l))
3301	}
3302	if m.DnsRefreshRate != nil {
3303		l = github_com_gogo_protobuf_types.SizeOfStdDuration(*m.DnsRefreshRate)
3304		n += 2 + l + sovCds(uint64(l))
3305	}
3306	if m.DnsLookupFamily != 0 {
3307		n += 2 + sovCds(uint64(m.DnsLookupFamily))
3308	}
3309	if len(m.DnsResolvers) > 0 {
3310		for _, e := range m.DnsResolvers {
3311			l = e.Size()
3312			n += 2 + l + sovCds(uint64(l))
3313		}
3314	}
3315	if m.OutlierDetection != nil {
3316		l = m.OutlierDetection.Size()
3317		n += 2 + l + sovCds(uint64(l))
3318	}
3319	if m.CleanupInterval != nil {
3320		l = github_com_gogo_protobuf_types.SizeOfStdDuration(*m.CleanupInterval)
3321		n += 2 + l + sovCds(uint64(l))
3322	}
3323	if m.UpstreamBindConfig != nil {
3324		l = m.UpstreamBindConfig.Size()
3325		n += 2 + l + sovCds(uint64(l))
3326	}
3327	if m.LbSubsetConfig != nil {
3328		l = m.LbSubsetConfig.Size()
3329		n += 2 + l + sovCds(uint64(l))
3330	}
3331	if m.LbConfig != nil {
3332		n += m.LbConfig.Size()
3333	}
3334	if m.TransportSocket != nil {
3335		l = m.TransportSocket.Size()
3336		n += 2 + l + sovCds(uint64(l))
3337	}
3338	if m.Metadata != nil {
3339		l = m.Metadata.Size()
3340		n += 2 + l + sovCds(uint64(l))
3341	}
3342	if m.ProtocolSelection != 0 {
3343		n += 2 + sovCds(uint64(m.ProtocolSelection))
3344	}
3345	if m.CommonLbConfig != nil {
3346		l = m.CommonLbConfig.Size()
3347		n += 2 + l + sovCds(uint64(l))
3348	}
3349	l = len(m.AltStatName)
3350	if l > 0 {
3351		n += 2 + l + sovCds(uint64(l))
3352	}
3353	if m.CommonHttpProtocolOptions != nil {
3354		l = m.CommonHttpProtocolOptions.Size()
3355		n += 2 + l + sovCds(uint64(l))
3356	}
3357	if m.UpstreamConnectionOptions != nil {
3358		l = m.UpstreamConnectionOptions.Size()
3359		n += 2 + l + sovCds(uint64(l))
3360	}
3361	if m.CloseConnectionsOnHostHealthFailure {
3362		n += 3
3363	}
3364	if m.DrainConnectionsOnHostRemoval {
3365		n += 3
3366	}
3367	if m.LoadAssignment != nil {
3368		l = m.LoadAssignment.Size()
3369		n += 2 + l + sovCds(uint64(l))
3370	}
3371	if len(m.ExtensionProtocolOptions) > 0 {
3372		for k, v := range m.ExtensionProtocolOptions {
3373			_ = k
3374			_ = v
3375			l = 0
3376			if v != nil {
3377				l = v.Size()
3378				l += 1 + sovCds(uint64(l))
3379			}
3380			mapEntrySize := 1 + len(k) + sovCds(uint64(len(k))) + l
3381			n += mapEntrySize + 2 + sovCds(uint64(mapEntrySize))
3382		}
3383	}
3384	if m.XXX_unrecognized != nil {
3385		n += len(m.XXX_unrecognized)
3386	}
3387	return n
3388}
3389
3390func (m *Cluster_RingHashLbConfig_) Size() (n int) {
3391	var l int
3392	_ = l
3393	if m.RingHashLbConfig != nil {
3394		l = m.RingHashLbConfig.Size()
3395		n += 2 + l + sovCds(uint64(l))
3396	}
3397	return n
3398}
3399func (m *Cluster_OriginalDstLbConfig_) Size() (n int) {
3400	var l int
3401	_ = l
3402	if m.OriginalDstLbConfig != nil {
3403		l = m.OriginalDstLbConfig.Size()
3404		n += 2 + l + sovCds(uint64(l))
3405	}
3406	return n
3407}
3408func (m *Cluster_EdsClusterConfig) Size() (n int) {
3409	var l int
3410	_ = l
3411	if m.EdsConfig != nil {
3412		l = m.EdsConfig.Size()
3413		n += 1 + l + sovCds(uint64(l))
3414	}
3415	l = len(m.ServiceName)
3416	if l > 0 {
3417		n += 1 + l + sovCds(uint64(l))
3418	}
3419	if m.XXX_unrecognized != nil {
3420		n += len(m.XXX_unrecognized)
3421	}
3422	return n
3423}
3424
3425func (m *Cluster_LbSubsetConfig) Size() (n int) {
3426	var l int
3427	_ = l
3428	if m.FallbackPolicy != 0 {
3429		n += 1 + sovCds(uint64(m.FallbackPolicy))
3430	}
3431	if m.DefaultSubset != nil {
3432		l = m.DefaultSubset.Size()
3433		n += 1 + l + sovCds(uint64(l))
3434	}
3435	if len(m.SubsetSelectors) > 0 {
3436		for _, e := range m.SubsetSelectors {
3437			l = e.Size()
3438			n += 1 + l + sovCds(uint64(l))
3439		}
3440	}
3441	if m.LocalityWeightAware {
3442		n += 2
3443	}
3444	if m.XXX_unrecognized != nil {
3445		n += len(m.XXX_unrecognized)
3446	}
3447	return n
3448}
3449
3450func (m *Cluster_LbSubsetConfig_LbSubsetSelector) Size() (n int) {
3451	var l int
3452	_ = l
3453	if len(m.Keys) > 0 {
3454		for _, s := range m.Keys {
3455			l = len(s)
3456			n += 1 + l + sovCds(uint64(l))
3457		}
3458	}
3459	if m.XXX_unrecognized != nil {
3460		n += len(m.XXX_unrecognized)
3461	}
3462	return n
3463}
3464
3465func (m *Cluster_RingHashLbConfig) Size() (n int) {
3466	var l int
3467	_ = l
3468	if m.MinimumRingSize != nil {
3469		l = m.MinimumRingSize.Size()
3470		n += 1 + l + sovCds(uint64(l))
3471	}
3472	if m.DeprecatedV1 != nil {
3473		l = m.DeprecatedV1.Size()
3474		n += 1 + l + sovCds(uint64(l))
3475	}
3476	if m.XXX_unrecognized != nil {
3477		n += len(m.XXX_unrecognized)
3478	}
3479	return n
3480}
3481
3482func (m *Cluster_RingHashLbConfig_DeprecatedV1) Size() (n int) {
3483	var l int
3484	_ = l
3485	if m.UseStdHash != nil {
3486		l = m.UseStdHash.Size()
3487		n += 1 + l + sovCds(uint64(l))
3488	}
3489	if m.XXX_unrecognized != nil {
3490		n += len(m.XXX_unrecognized)
3491	}
3492	return n
3493}
3494
3495func (m *Cluster_OriginalDstLbConfig) Size() (n int) {
3496	var l int
3497	_ = l
3498	if m.UseHttpHeader {
3499		n += 2
3500	}
3501	if m.XXX_unrecognized != nil {
3502		n += len(m.XXX_unrecognized)
3503	}
3504	return n
3505}
3506
3507func (m *Cluster_CommonLbConfig) Size() (n int) {
3508	var l int
3509	_ = l
3510	if m.HealthyPanicThreshold != nil {
3511		l = m.HealthyPanicThreshold.Size()
3512		n += 1 + l + sovCds(uint64(l))
3513	}
3514	if m.LocalityConfigSpecifier != nil {
3515		n += m.LocalityConfigSpecifier.Size()
3516	}
3517	if m.UpdateMergeWindow != nil {
3518		l = m.UpdateMergeWindow.Size()
3519		n += 1 + l + sovCds(uint64(l))
3520	}
3521	if m.XXX_unrecognized != nil {
3522		n += len(m.XXX_unrecognized)
3523	}
3524	return n
3525}
3526
3527func (m *Cluster_CommonLbConfig_ZoneAwareLbConfig_) Size() (n int) {
3528	var l int
3529	_ = l
3530	if m.ZoneAwareLbConfig != nil {
3531		l = m.ZoneAwareLbConfig.Size()
3532		n += 1 + l + sovCds(uint64(l))
3533	}
3534	return n
3535}
3536func (m *Cluster_CommonLbConfig_LocalityWeightedLbConfig_) Size() (n int) {
3537	var l int
3538	_ = l
3539	if m.LocalityWeightedLbConfig != nil {
3540		l = m.LocalityWeightedLbConfig.Size()
3541		n += 1 + l + sovCds(uint64(l))
3542	}
3543	return n
3544}
3545func (m *Cluster_CommonLbConfig_ZoneAwareLbConfig) Size() (n int) {
3546	var l int
3547	_ = l
3548	if m.RoutingEnabled != nil {
3549		l = m.RoutingEnabled.Size()
3550		n += 1 + l + sovCds(uint64(l))
3551	}
3552	if m.MinClusterSize != nil {
3553		l = m.MinClusterSize.Size()
3554		n += 1 + l + sovCds(uint64(l))
3555	}
3556	if m.XXX_unrecognized != nil {
3557		n += len(m.XXX_unrecognized)
3558	}
3559	return n
3560}
3561
3562func (m *Cluster_CommonLbConfig_LocalityWeightedLbConfig) Size() (n int) {
3563	var l int
3564	_ = l
3565	if m.XXX_unrecognized != nil {
3566		n += len(m.XXX_unrecognized)
3567	}
3568	return n
3569}
3570
3571func (m *UpstreamBindConfig) Size() (n int) {
3572	var l int
3573	_ = l
3574	if m.SourceAddress != nil {
3575		l = m.SourceAddress.Size()
3576		n += 1 + l + sovCds(uint64(l))
3577	}
3578	if m.XXX_unrecognized != nil {
3579		n += len(m.XXX_unrecognized)
3580	}
3581	return n
3582}
3583
3584func (m *UpstreamConnectionOptions) Size() (n int) {
3585	var l int
3586	_ = l
3587	if m.TcpKeepalive != nil {
3588		l = m.TcpKeepalive.Size()
3589		n += 1 + l + sovCds(uint64(l))
3590	}
3591	if m.XXX_unrecognized != nil {
3592		n += len(m.XXX_unrecognized)
3593	}
3594	return n
3595}
3596
3597func sovCds(x uint64) (n int) {
3598	for {
3599		n++
3600		x >>= 7
3601		if x == 0 {
3602			break
3603		}
3604	}
3605	return n
3606}
3607func sozCds(x uint64) (n int) {
3608	return sovCds(uint64((x << 1) ^ uint64((int64(x) >> 63))))
3609}
3610func (m *Cluster) Unmarshal(dAtA []byte) error {
3611	l := len(dAtA)
3612	iNdEx := 0
3613	for iNdEx < l {
3614		preIndex := iNdEx
3615		var wire uint64
3616		for shift := uint(0); ; shift += 7 {
3617			if shift >= 64 {
3618				return ErrIntOverflowCds
3619			}
3620			if iNdEx >= l {
3621				return io.ErrUnexpectedEOF
3622			}
3623			b := dAtA[iNdEx]
3624			iNdEx++
3625			wire |= (uint64(b) & 0x7F) << shift
3626			if b < 0x80 {
3627				break
3628			}
3629		}
3630		fieldNum := int32(wire >> 3)
3631		wireType := int(wire & 0x7)
3632		if wireType == 4 {
3633			return fmt.Errorf("proto: Cluster: wiretype end group for non-group")
3634		}
3635		if fieldNum <= 0 {
3636			return fmt.Errorf("proto: Cluster: illegal tag %d (wire type %d)", fieldNum, wire)
3637		}
3638		switch fieldNum {
3639		case 1:
3640			if wireType != 2 {
3641				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
3642			}
3643			var stringLen uint64
3644			for shift := uint(0); ; shift += 7 {
3645				if shift >= 64 {
3646					return ErrIntOverflowCds
3647				}
3648				if iNdEx >= l {
3649					return io.ErrUnexpectedEOF
3650				}
3651				b := dAtA[iNdEx]
3652				iNdEx++
3653				stringLen |= (uint64(b) & 0x7F) << shift
3654				if b < 0x80 {
3655					break
3656				}
3657			}
3658			intStringLen := int(stringLen)
3659			if intStringLen < 0 {
3660				return ErrInvalidLengthCds
3661			}
3662			postIndex := iNdEx + intStringLen
3663			if postIndex > l {
3664				return io.ErrUnexpectedEOF
3665			}
3666			m.Name = string(dAtA[iNdEx:postIndex])
3667			iNdEx = postIndex
3668		case 2:
3669			if wireType != 0 {
3670				return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType)
3671			}
3672			m.Type = 0
3673			for shift := uint(0); ; shift += 7 {
3674				if shift >= 64 {
3675					return ErrIntOverflowCds
3676				}
3677				if iNdEx >= l {
3678					return io.ErrUnexpectedEOF
3679				}
3680				b := dAtA[iNdEx]
3681				iNdEx++
3682				m.Type |= (Cluster_DiscoveryType(b) & 0x7F) << shift
3683				if b < 0x80 {
3684					break
3685				}
3686			}
3687		case 3:
3688			if wireType != 2 {
3689				return fmt.Errorf("proto: wrong wireType = %d for field EdsClusterConfig", wireType)
3690			}
3691			var msglen int
3692			for shift := uint(0); ; shift += 7 {
3693				if shift >= 64 {
3694					return ErrIntOverflowCds
3695				}
3696				if iNdEx >= l {
3697					return io.ErrUnexpectedEOF
3698				}
3699				b := dAtA[iNdEx]
3700				iNdEx++
3701				msglen |= (int(b) & 0x7F) << shift
3702				if b < 0x80 {
3703					break
3704				}
3705			}
3706			if msglen < 0 {
3707				return ErrInvalidLengthCds
3708			}
3709			postIndex := iNdEx + msglen
3710			if postIndex > l {
3711				return io.ErrUnexpectedEOF
3712			}
3713			if m.EdsClusterConfig == nil {
3714				m.EdsClusterConfig = &Cluster_EdsClusterConfig{}
3715			}
3716			if err := m.EdsClusterConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
3717				return err
3718			}
3719			iNdEx = postIndex
3720		case 4:
3721			if wireType != 2 {
3722				return fmt.Errorf("proto: wrong wireType = %d for field ConnectTimeout", wireType)
3723			}
3724			var msglen int
3725			for shift := uint(0); ; shift += 7 {
3726				if shift >= 64 {
3727					return ErrIntOverflowCds
3728				}
3729				if iNdEx >= l {
3730					return io.ErrUnexpectedEOF
3731				}
3732				b := dAtA[iNdEx]
3733				iNdEx++
3734				msglen |= (int(b) & 0x7F) << shift
3735				if b < 0x80 {
3736					break
3737				}
3738			}
3739			if msglen < 0 {
3740				return ErrInvalidLengthCds
3741			}
3742			postIndex := iNdEx + msglen
3743			if postIndex > l {
3744				return io.ErrUnexpectedEOF
3745			}
3746			if err := github_com_gogo_protobuf_types.StdDurationUnmarshal(&m.ConnectTimeout, dAtA[iNdEx:postIndex]); err != nil {
3747				return err
3748			}
3749			iNdEx = postIndex
3750		case 5:
3751			if wireType != 2 {
3752				return fmt.Errorf("proto: wrong wireType = %d for field PerConnectionBufferLimitBytes", wireType)
3753			}
3754			var msglen int
3755			for shift := uint(0); ; shift += 7 {
3756				if shift >= 64 {
3757					return ErrIntOverflowCds
3758				}
3759				if iNdEx >= l {
3760					return io.ErrUnexpectedEOF
3761				}
3762				b := dAtA[iNdEx]
3763				iNdEx++
3764				msglen |= (int(b) & 0x7F) << shift
3765				if b < 0x80 {
3766					break
3767				}
3768			}
3769			if msglen < 0 {
3770				return ErrInvalidLengthCds
3771			}
3772			postIndex := iNdEx + msglen
3773			if postIndex > l {
3774				return io.ErrUnexpectedEOF
3775			}
3776			if m.PerConnectionBufferLimitBytes == nil {
3777				m.PerConnectionBufferLimitBytes = &types.UInt32Value{}
3778			}
3779			if err := m.PerConnectionBufferLimitBytes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
3780				return err
3781			}
3782			iNdEx = postIndex
3783		case 6:
3784			if wireType != 0 {
3785				return fmt.Errorf("proto: wrong wireType = %d for field LbPolicy", wireType)
3786			}
3787			m.LbPolicy = 0
3788			for shift := uint(0); ; shift += 7 {
3789				if shift >= 64 {
3790					return ErrIntOverflowCds
3791				}
3792				if iNdEx >= l {
3793					return io.ErrUnexpectedEOF
3794				}
3795				b := dAtA[iNdEx]
3796				iNdEx++
3797				m.LbPolicy |= (Cluster_LbPolicy(b) & 0x7F) << shift
3798				if b < 0x80 {
3799					break
3800				}
3801			}
3802		case 7:
3803			if wireType != 2 {
3804				return fmt.Errorf("proto: wrong wireType = %d for field Hosts", wireType)
3805			}
3806			var msglen int
3807			for shift := uint(0); ; shift += 7 {
3808				if shift >= 64 {
3809					return ErrIntOverflowCds
3810				}
3811				if iNdEx >= l {
3812					return io.ErrUnexpectedEOF
3813				}
3814				b := dAtA[iNdEx]
3815				iNdEx++
3816				msglen |= (int(b) & 0x7F) << shift
3817				if b < 0x80 {
3818					break
3819				}
3820			}
3821			if msglen < 0 {
3822				return ErrInvalidLengthCds
3823			}
3824			postIndex := iNdEx + msglen
3825			if postIndex > l {
3826				return io.ErrUnexpectedEOF
3827			}
3828			m.Hosts = append(m.Hosts, &core.Address{})
3829			if err := m.Hosts[len(m.Hosts)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
3830				return err
3831			}
3832			iNdEx = postIndex
3833		case 8:
3834			if wireType != 2 {
3835				return fmt.Errorf("proto: wrong wireType = %d for field HealthChecks", wireType)
3836			}
3837			var msglen int
3838			for shift := uint(0); ; shift += 7 {
3839				if shift >= 64 {
3840					return ErrIntOverflowCds
3841				}
3842				if iNdEx >= l {
3843					return io.ErrUnexpectedEOF
3844				}
3845				b := dAtA[iNdEx]
3846				iNdEx++
3847				msglen |= (int(b) & 0x7F) << shift
3848				if b < 0x80 {
3849					break
3850				}
3851			}
3852			if msglen < 0 {
3853				return ErrInvalidLengthCds
3854			}
3855			postIndex := iNdEx + msglen
3856			if postIndex > l {
3857				return io.ErrUnexpectedEOF
3858			}
3859			m.HealthChecks = append(m.HealthChecks, &core.HealthCheck{})
3860			if err := m.HealthChecks[len(m.HealthChecks)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
3861				return err
3862			}
3863			iNdEx = postIndex
3864		case 9:
3865			if wireType != 2 {
3866				return fmt.Errorf("proto: wrong wireType = %d for field MaxRequestsPerConnection", wireType)
3867			}
3868			var msglen int
3869			for shift := uint(0); ; shift += 7 {
3870				if shift >= 64 {
3871					return ErrIntOverflowCds
3872				}
3873				if iNdEx >= l {
3874					return io.ErrUnexpectedEOF
3875				}
3876				b := dAtA[iNdEx]
3877				iNdEx++
3878				msglen |= (int(b) & 0x7F) << shift
3879				if b < 0x80 {
3880					break
3881				}
3882			}
3883			if msglen < 0 {
3884				return ErrInvalidLengthCds
3885			}
3886			postIndex := iNdEx + msglen
3887			if postIndex > l {
3888				return io.ErrUnexpectedEOF
3889			}
3890			if m.MaxRequestsPerConnection == nil {
3891				m.MaxRequestsPerConnection = &types.UInt32Value{}
3892			}
3893			if err := m.MaxRequestsPerConnection.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
3894				return err
3895			}
3896			iNdEx = postIndex
3897		case 10:
3898			if wireType != 2 {
3899				return fmt.Errorf("proto: wrong wireType = %d for field CircuitBreakers", wireType)
3900			}
3901			var msglen int
3902			for shift := uint(0); ; shift += 7 {
3903				if shift >= 64 {
3904					return ErrIntOverflowCds
3905				}
3906				if iNdEx >= l {
3907					return io.ErrUnexpectedEOF
3908				}
3909				b := dAtA[iNdEx]
3910				iNdEx++
3911				msglen |= (int(b) & 0x7F) << shift
3912				if b < 0x80 {
3913					break
3914				}
3915			}
3916			if msglen < 0 {
3917				return ErrInvalidLengthCds
3918			}
3919			postIndex := iNdEx + msglen
3920			if postIndex > l {
3921				return io.ErrUnexpectedEOF
3922			}
3923			if m.CircuitBreakers == nil {
3924				m.CircuitBreakers = &cluster.CircuitBreakers{}
3925			}
3926			if err := m.CircuitBreakers.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
3927				return err
3928			}
3929			iNdEx = postIndex
3930		case 11:
3931			if wireType != 2 {
3932				return fmt.Errorf("proto: wrong wireType = %d for field TlsContext", wireType)
3933			}
3934			var msglen int
3935			for shift := uint(0); ; shift += 7 {
3936				if shift >= 64 {
3937					return ErrIntOverflowCds
3938				}
3939				if iNdEx >= l {
3940					return io.ErrUnexpectedEOF
3941				}
3942				b := dAtA[iNdEx]
3943				iNdEx++
3944				msglen |= (int(b) & 0x7F) << shift
3945				if b < 0x80 {
3946					break
3947				}
3948			}
3949			if msglen < 0 {
3950				return ErrInvalidLengthCds
3951			}
3952			postIndex := iNdEx + msglen
3953			if postIndex > l {
3954				return io.ErrUnexpectedEOF
3955			}
3956			if m.TlsContext == nil {
3957				m.TlsContext = &auth.UpstreamTlsContext{}
3958			}
3959			if err := m.TlsContext.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
3960				return err
3961			}
3962			iNdEx = postIndex
3963		case 13:
3964			if wireType != 2 {
3965				return fmt.Errorf("proto: wrong wireType = %d for field HttpProtocolOptions", wireType)
3966			}
3967			var msglen int
3968			for shift := uint(0); ; shift += 7 {
3969				if shift >= 64 {
3970					return ErrIntOverflowCds
3971				}
3972				if iNdEx >= l {
3973					return io.ErrUnexpectedEOF
3974				}
3975				b := dAtA[iNdEx]
3976				iNdEx++
3977				msglen |= (int(b) & 0x7F) << shift
3978				if b < 0x80 {
3979					break
3980				}
3981			}
3982			if msglen < 0 {
3983				return ErrInvalidLengthCds
3984			}
3985			postIndex := iNdEx + msglen
3986			if postIndex > l {
3987				return io.ErrUnexpectedEOF
3988			}
3989			if m.HttpProtocolOptions == nil {
3990				m.HttpProtocolOptions = &core.Http1ProtocolOptions{}
3991			}
3992			if err := m.HttpProtocolOptions.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
3993				return err
3994			}
3995			iNdEx = postIndex
3996		case 14:
3997			if wireType != 2 {
3998				return fmt.Errorf("proto: wrong wireType = %d for field Http2ProtocolOptions", wireType)
3999			}
4000			var msglen int
4001			for shift := uint(0); ; shift += 7 {
4002				if shift >= 64 {
4003					return ErrIntOverflowCds
4004				}
4005				if iNdEx >= l {
4006					return io.ErrUnexpectedEOF
4007				}
4008				b := dAtA[iNdEx]
4009				iNdEx++
4010				msglen |= (int(b) & 0x7F) << shift
4011				if b < 0x80 {
4012					break
4013				}
4014			}
4015			if msglen < 0 {
4016				return ErrInvalidLengthCds
4017			}
4018			postIndex := iNdEx + msglen
4019			if postIndex > l {
4020				return io.ErrUnexpectedEOF
4021			}
4022			if m.Http2ProtocolOptions == nil {
4023				m.Http2ProtocolOptions = &core.Http2ProtocolOptions{}
4024			}
4025			if err := m.Http2ProtocolOptions.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
4026				return err
4027			}
4028			iNdEx = postIndex
4029		case 16:
4030			if wireType != 2 {
4031				return fmt.Errorf("proto: wrong wireType = %d for field DnsRefreshRate", wireType)
4032			}
4033			var msglen int
4034			for shift := uint(0); ; shift += 7 {
4035				if shift >= 64 {
4036					return ErrIntOverflowCds
4037				}
4038				if iNdEx >= l {
4039					return io.ErrUnexpectedEOF
4040				}
4041				b := dAtA[iNdEx]
4042				iNdEx++
4043				msglen |= (int(b) & 0x7F) << shift
4044				if b < 0x80 {
4045					break
4046				}
4047			}
4048			if msglen < 0 {
4049				return ErrInvalidLengthCds
4050			}
4051			postIndex := iNdEx + msglen
4052			if postIndex > l {
4053				return io.ErrUnexpectedEOF
4054			}
4055			if m.DnsRefreshRate == nil {
4056				m.DnsRefreshRate = new(time.Duration)
4057			}
4058			if err := github_com_gogo_protobuf_types.StdDurationUnmarshal(m.DnsRefreshRate, dAtA[iNdEx:postIndex]); err != nil {
4059				return err
4060			}
4061			iNdEx = postIndex
4062		case 17:
4063			if wireType != 0 {
4064				return fmt.Errorf("proto: wrong wireType = %d for field DnsLookupFamily", wireType)
4065			}
4066			m.DnsLookupFamily = 0
4067			for shift := uint(0); ; shift += 7 {
4068				if shift >= 64 {
4069					return ErrIntOverflowCds
4070				}
4071				if iNdEx >= l {
4072					return io.ErrUnexpectedEOF
4073				}
4074				b := dAtA[iNdEx]
4075				iNdEx++
4076				m.DnsLookupFamily |= (Cluster_DnsLookupFamily(b) & 0x7F) << shift
4077				if b < 0x80 {
4078					break
4079				}
4080			}
4081		case 18:
4082			if wireType != 2 {
4083				return fmt.Errorf("proto: wrong wireType = %d for field DnsResolvers", wireType)
4084			}
4085			var msglen int
4086			for shift := uint(0); ; shift += 7 {
4087				if shift >= 64 {
4088					return ErrIntOverflowCds
4089				}
4090				if iNdEx >= l {
4091					return io.ErrUnexpectedEOF
4092				}
4093				b := dAtA[iNdEx]
4094				iNdEx++
4095				msglen |= (int(b) & 0x7F) << shift
4096				if b < 0x80 {
4097					break
4098				}
4099			}
4100			if msglen < 0 {
4101				return ErrInvalidLengthCds
4102			}
4103			postIndex := iNdEx + msglen
4104			if postIndex > l {
4105				return io.ErrUnexpectedEOF
4106			}
4107			m.DnsResolvers = append(m.DnsResolvers, &core.Address{})
4108			if err := m.DnsResolvers[len(m.DnsResolvers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
4109				return err
4110			}
4111			iNdEx = postIndex
4112		case 19:
4113			if wireType != 2 {
4114				return fmt.Errorf("proto: wrong wireType = %d for field OutlierDetection", wireType)
4115			}
4116			var msglen int
4117			for shift := uint(0); ; shift += 7 {
4118				if shift >= 64 {
4119					return ErrIntOverflowCds
4120				}
4121				if iNdEx >= l {
4122					return io.ErrUnexpectedEOF
4123				}
4124				b := dAtA[iNdEx]
4125				iNdEx++
4126				msglen |= (int(b) & 0x7F) << shift
4127				if b < 0x80 {
4128					break
4129				}
4130			}
4131			if msglen < 0 {
4132				return ErrInvalidLengthCds
4133			}
4134			postIndex := iNdEx + msglen
4135			if postIndex > l {
4136				return io.ErrUnexpectedEOF
4137			}
4138			if m.OutlierDetection == nil {
4139				m.OutlierDetection = &cluster.OutlierDetection{}
4140			}
4141			if err := m.OutlierDetection.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
4142				return err
4143			}
4144			iNdEx = postIndex
4145		case 20:
4146			if wireType != 2 {
4147				return fmt.Errorf("proto: wrong wireType = %d for field CleanupInterval", wireType)
4148			}
4149			var msglen int
4150			for shift := uint(0); ; shift += 7 {
4151				if shift >= 64 {
4152					return ErrIntOverflowCds
4153				}
4154				if iNdEx >= l {
4155					return io.ErrUnexpectedEOF
4156				}
4157				b := dAtA[iNdEx]
4158				iNdEx++
4159				msglen |= (int(b) & 0x7F) << shift
4160				if b < 0x80 {
4161					break
4162				}
4163			}
4164			if msglen < 0 {
4165				return ErrInvalidLengthCds
4166			}
4167			postIndex := iNdEx + msglen
4168			if postIndex > l {
4169				return io.ErrUnexpectedEOF
4170			}
4171			if m.CleanupInterval == nil {
4172				m.CleanupInterval = new(time.Duration)
4173			}
4174			if err := github_com_gogo_protobuf_types.StdDurationUnmarshal(m.CleanupInterval, dAtA[iNdEx:postIndex]); err != nil {
4175				return err
4176			}
4177			iNdEx = postIndex
4178		case 21:
4179			if wireType != 2 {
4180				return fmt.Errorf("proto: wrong wireType = %d for field UpstreamBindConfig", wireType)
4181			}
4182			var msglen int
4183			for shift := uint(0); ; shift += 7 {
4184				if shift >= 64 {
4185					return ErrIntOverflowCds
4186				}
4187				if iNdEx >= l {
4188					return io.ErrUnexpectedEOF
4189				}
4190				b := dAtA[iNdEx]
4191				iNdEx++
4192				msglen |= (int(b) & 0x7F) << shift
4193				if b < 0x80 {
4194					break
4195				}
4196			}
4197			if msglen < 0 {
4198				return ErrInvalidLengthCds
4199			}
4200			postIndex := iNdEx + msglen
4201			if postIndex > l {
4202				return io.ErrUnexpectedEOF
4203			}
4204			if m.UpstreamBindConfig == nil {
4205				m.UpstreamBindConfig = &core.BindConfig{}
4206			}
4207			if err := m.UpstreamBindConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
4208				return err
4209			}
4210			iNdEx = postIndex
4211		case 22:
4212			if wireType != 2 {
4213				return fmt.Errorf("proto: wrong wireType = %d for field LbSubsetConfig", wireType)
4214			}
4215			var msglen int
4216			for shift := uint(0); ; shift += 7 {
4217				if shift >= 64 {
4218					return ErrIntOverflowCds
4219				}
4220				if iNdEx >= l {
4221					return io.ErrUnexpectedEOF
4222				}
4223				b := dAtA[iNdEx]
4224				iNdEx++
4225				msglen |= (int(b) & 0x7F) << shift
4226				if b < 0x80 {
4227					break
4228				}
4229			}
4230			if msglen < 0 {
4231				return ErrInvalidLengthCds
4232			}
4233			postIndex := iNdEx + msglen
4234			if postIndex > l {
4235				return io.ErrUnexpectedEOF
4236			}
4237			if m.LbSubsetConfig == nil {
4238				m.LbSubsetConfig = &Cluster_LbSubsetConfig{}
4239			}
4240			if err := m.LbSubsetConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
4241				return err
4242			}
4243			iNdEx = postIndex
4244		case 23:
4245			if wireType != 2 {
4246				return fmt.Errorf("proto: wrong wireType = %d for field RingHashLbConfig", wireType)
4247			}
4248			var msglen int
4249			for shift := uint(0); ; shift += 7 {
4250				if shift >= 64 {
4251					return ErrIntOverflowCds
4252				}
4253				if iNdEx >= l {
4254					return io.ErrUnexpectedEOF
4255				}
4256				b := dAtA[iNdEx]
4257				iNdEx++
4258				msglen |= (int(b) & 0x7F) << shift
4259				if b < 0x80 {
4260					break
4261				}
4262			}
4263			if msglen < 0 {
4264				return ErrInvalidLengthCds
4265			}
4266			postIndex := iNdEx + msglen
4267			if postIndex > l {
4268				return io.ErrUnexpectedEOF
4269			}
4270			v := &Cluster_RingHashLbConfig{}
4271			if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
4272				return err
4273			}
4274			m.LbConfig = &Cluster_RingHashLbConfig_{v}
4275			iNdEx = postIndex
4276		case 24:
4277			if wireType != 2 {
4278				return fmt.Errorf("proto: wrong wireType = %d for field TransportSocket", wireType)
4279			}
4280			var msglen int
4281			for shift := uint(0); ; shift += 7 {
4282				if shift >= 64 {
4283					return ErrIntOverflowCds
4284				}
4285				if iNdEx >= l {
4286					return io.ErrUnexpectedEOF
4287				}
4288				b := dAtA[iNdEx]
4289				iNdEx++
4290				msglen |= (int(b) & 0x7F) << shift
4291				if b < 0x80 {
4292					break
4293				}
4294			}
4295			if msglen < 0 {
4296				return ErrInvalidLengthCds
4297			}
4298			postIndex := iNdEx + msglen
4299			if postIndex > l {
4300				return io.ErrUnexpectedEOF
4301			}
4302			if m.TransportSocket == nil {
4303				m.TransportSocket = &core.TransportSocket{}
4304			}
4305			if err := m.TransportSocket.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
4306				return err
4307			}
4308			iNdEx = postIndex
4309		case 25:
4310			if wireType != 2 {
4311				return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType)
4312			}
4313			var msglen int
4314			for shift := uint(0); ; shift += 7 {
4315				if shift >= 64 {
4316					return ErrIntOverflowCds
4317				}
4318				if iNdEx >= l {
4319					return io.ErrUnexpectedEOF
4320				}
4321				b := dAtA[iNdEx]
4322				iNdEx++
4323				msglen |= (int(b) & 0x7F) << shift
4324				if b < 0x80 {
4325					break
4326				}
4327			}
4328			if msglen < 0 {
4329				return ErrInvalidLengthCds
4330			}
4331			postIndex := iNdEx + msglen
4332			if postIndex > l {
4333				return io.ErrUnexpectedEOF
4334			}
4335			if m.Metadata == nil {
4336				m.Metadata = &core.Metadata{}
4337			}
4338			if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
4339				return err
4340			}
4341			iNdEx = postIndex
4342		case 26:
4343			if wireType != 0 {
4344				return fmt.Errorf("proto: wrong wireType = %d for field ProtocolSelection", wireType)
4345			}
4346			m.ProtocolSelection = 0
4347			for shift := uint(0); ; shift += 7 {
4348				if shift >= 64 {
4349					return ErrIntOverflowCds
4350				}
4351				if iNdEx >= l {
4352					return io.ErrUnexpectedEOF
4353				}
4354				b := dAtA[iNdEx]
4355				iNdEx++
4356				m.ProtocolSelection |= (Cluster_ClusterProtocolSelection(b) & 0x7F) << shift
4357				if b < 0x80 {
4358					break
4359				}
4360			}
4361		case 27:
4362			if wireType != 2 {
4363				return fmt.Errorf("proto: wrong wireType = %d for field CommonLbConfig", wireType)
4364			}
4365			var msglen int
4366			for shift := uint(0); ; shift += 7 {
4367				if shift >= 64 {
4368					return ErrIntOverflowCds
4369				}
4370				if iNdEx >= l {
4371					return io.ErrUnexpectedEOF
4372				}
4373				b := dAtA[iNdEx]
4374				iNdEx++
4375				msglen |= (int(b) & 0x7F) << shift
4376				if b < 0x80 {
4377					break
4378				}
4379			}
4380			if msglen < 0 {
4381				return ErrInvalidLengthCds
4382			}
4383			postIndex := iNdEx + msglen
4384			if postIndex > l {
4385				return io.ErrUnexpectedEOF
4386			}
4387			if m.CommonLbConfig == nil {
4388				m.CommonLbConfig = &Cluster_CommonLbConfig{}
4389			}
4390			if err := m.CommonLbConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
4391				return err
4392			}
4393			iNdEx = postIndex
4394		case 28:
4395			if wireType != 2 {
4396				return fmt.Errorf("proto: wrong wireType = %d for field AltStatName", wireType)
4397			}
4398			var stringLen uint64
4399			for shift := uint(0); ; shift += 7 {
4400				if shift >= 64 {
4401					return ErrIntOverflowCds
4402				}
4403				if iNdEx >= l {
4404					return io.ErrUnexpectedEOF
4405				}
4406				b := dAtA[iNdEx]
4407				iNdEx++
4408				stringLen |= (uint64(b) & 0x7F) << shift
4409				if b < 0x80 {
4410					break
4411				}
4412			}
4413			intStringLen := int(stringLen)
4414			if intStringLen < 0 {
4415				return ErrInvalidLengthCds
4416			}
4417			postIndex := iNdEx + intStringLen
4418			if postIndex > l {
4419				return io.ErrUnexpectedEOF
4420			}
4421			m.AltStatName = string(dAtA[iNdEx:postIndex])
4422			iNdEx = postIndex
4423		case 29:
4424			if wireType != 2 {
4425				return fmt.Errorf("proto: wrong wireType = %d for field CommonHttpProtocolOptions", wireType)
4426			}
4427			var msglen int
4428			for shift := uint(0); ; shift += 7 {
4429				if shift >= 64 {
4430					return ErrIntOverflowCds
4431				}
4432				if iNdEx >= l {
4433					return io.ErrUnexpectedEOF
4434				}
4435				b := dAtA[iNdEx]
4436				iNdEx++
4437				msglen |= (int(b) & 0x7F) << shift
4438				if b < 0x80 {
4439					break
4440				}
4441			}
4442			if msglen < 0 {
4443				return ErrInvalidLengthCds
4444			}
4445			postIndex := iNdEx + msglen
4446			if postIndex > l {
4447				return io.ErrUnexpectedEOF
4448			}
4449			if m.CommonHttpProtocolOptions == nil {
4450				m.CommonHttpProtocolOptions = &core.HttpProtocolOptions{}
4451			}
4452			if err := m.CommonHttpProtocolOptions.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
4453				return err
4454			}
4455			iNdEx = postIndex
4456		case 30:
4457			if wireType != 2 {
4458				return fmt.Errorf("proto: wrong wireType = %d for field UpstreamConnectionOptions", wireType)
4459			}
4460			var msglen int
4461			for shift := uint(0); ; shift += 7 {
4462				if shift >= 64 {
4463					return ErrIntOverflowCds
4464				}
4465				if iNdEx >= l {
4466					return io.ErrUnexpectedEOF
4467				}
4468				b := dAtA[iNdEx]
4469				iNdEx++
4470				msglen |= (int(b) & 0x7F) << shift
4471				if b < 0x80 {
4472					break
4473				}
4474			}
4475			if msglen < 0 {
4476				return ErrInvalidLengthCds
4477			}
4478			postIndex := iNdEx + msglen
4479			if postIndex > l {
4480				return io.ErrUnexpectedEOF
4481			}
4482			if m.UpstreamConnectionOptions == nil {
4483				m.UpstreamConnectionOptions = &UpstreamConnectionOptions{}
4484			}
4485			if err := m.UpstreamConnectionOptions.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
4486				return err
4487			}
4488			iNdEx = postIndex
4489		case 31:
4490			if wireType != 0 {
4491				return fmt.Errorf("proto: wrong wireType = %d for field CloseConnectionsOnHostHealthFailure", wireType)
4492			}
4493			var v int
4494			for shift := uint(0); ; shift += 7 {
4495				if shift >= 64 {
4496					return ErrIntOverflowCds
4497				}
4498				if iNdEx >= l {
4499					return io.ErrUnexpectedEOF
4500				}
4501				b := dAtA[iNdEx]
4502				iNdEx++
4503				v |= (int(b) & 0x7F) << shift
4504				if b < 0x80 {
4505					break
4506				}
4507			}
4508			m.CloseConnectionsOnHostHealthFailure = bool(v != 0)
4509		case 32:
4510			if wireType != 0 {
4511				return fmt.Errorf("proto: wrong wireType = %d for field DrainConnectionsOnHostRemoval", wireType)
4512			}
4513			var v int
4514			for shift := uint(0); ; shift += 7 {
4515				if shift >= 64 {
4516					return ErrIntOverflowCds
4517				}
4518				if iNdEx >= l {
4519					return io.ErrUnexpectedEOF
4520				}
4521				b := dAtA[iNdEx]
4522				iNdEx++
4523				v |= (int(b) & 0x7F) << shift
4524				if b < 0x80 {
4525					break
4526				}
4527			}
4528			m.DrainConnectionsOnHostRemoval = bool(v != 0)
4529		case 33:
4530			if wireType != 2 {
4531				return fmt.Errorf("proto: wrong wireType = %d for field LoadAssignment", wireType)
4532			}
4533			var msglen int
4534			for shift := uint(0); ; shift += 7 {
4535				if shift >= 64 {
4536					return ErrIntOverflowCds
4537				}
4538				if iNdEx >= l {
4539					return io.ErrUnexpectedEOF
4540				}
4541				b := dAtA[iNdEx]
4542				iNdEx++
4543				msglen |= (int(b) & 0x7F) << shift
4544				if b < 0x80 {
4545					break
4546				}
4547			}
4548			if msglen < 0 {
4549				return ErrInvalidLengthCds
4550			}
4551			postIndex := iNdEx + msglen
4552			if postIndex > l {
4553				return io.ErrUnexpectedEOF
4554			}
4555			if m.LoadAssignment == nil {
4556				m.LoadAssignment = &ClusterLoadAssignment{}
4557			}
4558			if err := m.LoadAssignment.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
4559				return err
4560			}
4561			iNdEx = postIndex
4562		case 34:
4563			if wireType != 2 {
4564				return fmt.Errorf("proto: wrong wireType = %d for field OriginalDstLbConfig", wireType)
4565			}
4566			var msglen int
4567			for shift := uint(0); ; shift += 7 {
4568				if shift >= 64 {
4569					return ErrIntOverflowCds
4570				}
4571				if iNdEx >= l {
4572					return io.ErrUnexpectedEOF
4573				}
4574				b := dAtA[iNdEx]
4575				iNdEx++
4576				msglen |= (int(b) & 0x7F) << shift
4577				if b < 0x80 {
4578					break
4579				}
4580			}
4581			if msglen < 0 {
4582				return ErrInvalidLengthCds
4583			}
4584			postIndex := iNdEx + msglen
4585			if postIndex > l {
4586				return io.ErrUnexpectedEOF
4587			}
4588			v := &Cluster_OriginalDstLbConfig{}
4589			if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
4590				return err
4591			}
4592			m.LbConfig = &Cluster_OriginalDstLbConfig_{v}
4593			iNdEx = postIndex
4594		case 35:
4595			if wireType != 2 {
4596				return fmt.Errorf("proto: wrong wireType = %d for field ExtensionProtocolOptions", wireType)
4597			}
4598			var msglen int
4599			for shift := uint(0); ; shift += 7 {
4600				if shift >= 64 {
4601					return ErrIntOverflowCds
4602				}
4603				if iNdEx >= l {
4604					return io.ErrUnexpectedEOF
4605				}
4606				b := dAtA[iNdEx]
4607				iNdEx++
4608				msglen |= (int(b) & 0x7F) << shift
4609				if b < 0x80 {
4610					break
4611				}
4612			}
4613			if msglen < 0 {
4614				return ErrInvalidLengthCds
4615			}
4616			postIndex := iNdEx + msglen
4617			if postIndex > l {
4618				return io.ErrUnexpectedEOF
4619			}
4620			if m.ExtensionProtocolOptions == nil {
4621				m.ExtensionProtocolOptions = make(map[string]*types.Struct)
4622			}
4623			var mapkey string
4624			var mapvalue *types.Struct
4625			for iNdEx < postIndex {
4626				entryPreIndex := iNdEx
4627				var wire uint64
4628				for shift := uint(0); ; shift += 7 {
4629					if shift >= 64 {
4630						return ErrIntOverflowCds
4631					}
4632					if iNdEx >= l {
4633						return io.ErrUnexpectedEOF
4634					}
4635					b := dAtA[iNdEx]
4636					iNdEx++
4637					wire |= (uint64(b) & 0x7F) << shift
4638					if b < 0x80 {
4639						break
4640					}
4641				}
4642				fieldNum := int32(wire >> 3)
4643				if fieldNum == 1 {
4644					var stringLenmapkey uint64
4645					for shift := uint(0); ; shift += 7 {
4646						if shift >= 64 {
4647							return ErrIntOverflowCds
4648						}
4649						if iNdEx >= l {
4650							return io.ErrUnexpectedEOF
4651						}
4652						b := dAtA[iNdEx]
4653						iNdEx++
4654						stringLenmapkey |= (uint64(b) & 0x7F) << shift
4655						if b < 0x80 {
4656							break
4657						}
4658					}
4659					intStringLenmapkey := int(stringLenmapkey)
4660					if intStringLenmapkey < 0 {
4661						return ErrInvalidLengthCds
4662					}
4663					postStringIndexmapkey := iNdEx + intStringLenmapkey
4664					if postStringIndexmapkey > l {
4665						return io.ErrUnexpectedEOF
4666					}
4667					mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
4668					iNdEx = postStringIndexmapkey
4669				} else if fieldNum == 2 {
4670					var mapmsglen int
4671					for shift := uint(0); ; shift += 7 {
4672						if shift >= 64 {
4673							return ErrIntOverflowCds
4674						}
4675						if iNdEx >= l {
4676							return io.ErrUnexpectedEOF
4677						}
4678						b := dAtA[iNdEx]
4679						iNdEx++
4680						mapmsglen |= (int(b) & 0x7F) << shift
4681						if b < 0x80 {
4682							break
4683						}
4684					}
4685					if mapmsglen < 0 {
4686						return ErrInvalidLengthCds
4687					}
4688					postmsgIndex := iNdEx + mapmsglen
4689					if mapmsglen < 0 {
4690						return ErrInvalidLengthCds
4691					}
4692					if postmsgIndex > l {
4693						return io.ErrUnexpectedEOF
4694					}
4695					mapvalue = &types.Struct{}
4696					if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
4697						return err
4698					}
4699					iNdEx = postmsgIndex
4700				} else {
4701					iNdEx = entryPreIndex
4702					skippy, err := skipCds(dAtA[iNdEx:])
4703					if err != nil {
4704						return err
4705					}
4706					if skippy < 0 {
4707						return ErrInvalidLengthCds
4708					}
4709					if (iNdEx + skippy) > postIndex {
4710						return io.ErrUnexpectedEOF
4711					}
4712					iNdEx += skippy
4713				}
4714			}
4715			m.ExtensionProtocolOptions[mapkey] = mapvalue
4716			iNdEx = postIndex
4717		default:
4718			iNdEx = preIndex
4719			skippy, err := skipCds(dAtA[iNdEx:])
4720			if err != nil {
4721				return err
4722			}
4723			if skippy < 0 {
4724				return ErrInvalidLengthCds
4725			}
4726			if (iNdEx + skippy) > l {
4727				return io.ErrUnexpectedEOF
4728			}
4729			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
4730			iNdEx += skippy
4731		}
4732	}
4733
4734	if iNdEx > l {
4735		return io.ErrUnexpectedEOF
4736	}
4737	return nil
4738}
4739func (m *Cluster_EdsClusterConfig) Unmarshal(dAtA []byte) error {
4740	l := len(dAtA)
4741	iNdEx := 0
4742	for iNdEx < l {
4743		preIndex := iNdEx
4744		var wire uint64
4745		for shift := uint(0); ; shift += 7 {
4746			if shift >= 64 {
4747				return ErrIntOverflowCds
4748			}
4749			if iNdEx >= l {
4750				return io.ErrUnexpectedEOF
4751			}
4752			b := dAtA[iNdEx]
4753			iNdEx++
4754			wire |= (uint64(b) & 0x7F) << shift
4755			if b < 0x80 {
4756				break
4757			}
4758		}
4759		fieldNum := int32(wire >> 3)
4760		wireType := int(wire & 0x7)
4761		if wireType == 4 {
4762			return fmt.Errorf("proto: EdsClusterConfig: wiretype end group for non-group")
4763		}
4764		if fieldNum <= 0 {
4765			return fmt.Errorf("proto: EdsClusterConfig: illegal tag %d (wire type %d)", fieldNum, wire)
4766		}
4767		switch fieldNum {
4768		case 1:
4769			if wireType != 2 {
4770				return fmt.Errorf("proto: wrong wireType = %d for field EdsConfig", wireType)
4771			}
4772			var msglen int
4773			for shift := uint(0); ; shift += 7 {
4774				if shift >= 64 {
4775					return ErrIntOverflowCds
4776				}
4777				if iNdEx >= l {
4778					return io.ErrUnexpectedEOF
4779				}
4780				b := dAtA[iNdEx]
4781				iNdEx++
4782				msglen |= (int(b) & 0x7F) << shift
4783				if b < 0x80 {
4784					break
4785				}
4786			}
4787			if msglen < 0 {
4788				return ErrInvalidLengthCds
4789			}
4790			postIndex := iNdEx + msglen
4791			if postIndex > l {
4792				return io.ErrUnexpectedEOF
4793			}
4794			if m.EdsConfig == nil {
4795				m.EdsConfig = &core.ConfigSource{}
4796			}
4797			if err := m.EdsConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
4798				return err
4799			}
4800			iNdEx = postIndex
4801		case 2:
4802			if wireType != 2 {
4803				return fmt.Errorf("proto: wrong wireType = %d for field ServiceName", wireType)
4804			}
4805			var stringLen uint64
4806			for shift := uint(0); ; shift += 7 {
4807				if shift >= 64 {
4808					return ErrIntOverflowCds
4809				}
4810				if iNdEx >= l {
4811					return io.ErrUnexpectedEOF
4812				}
4813				b := dAtA[iNdEx]
4814				iNdEx++
4815				stringLen |= (uint64(b) & 0x7F) << shift
4816				if b < 0x80 {
4817					break
4818				}
4819			}
4820			intStringLen := int(stringLen)
4821			if intStringLen < 0 {
4822				return ErrInvalidLengthCds
4823			}
4824			postIndex := iNdEx + intStringLen
4825			if postIndex > l {
4826				return io.ErrUnexpectedEOF
4827			}
4828			m.ServiceName = string(dAtA[iNdEx:postIndex])
4829			iNdEx = postIndex
4830		default:
4831			iNdEx = preIndex
4832			skippy, err := skipCds(dAtA[iNdEx:])
4833			if err != nil {
4834				return err
4835			}
4836			if skippy < 0 {
4837				return ErrInvalidLengthCds
4838			}
4839			if (iNdEx + skippy) > l {
4840				return io.ErrUnexpectedEOF
4841			}
4842			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
4843			iNdEx += skippy
4844		}
4845	}
4846
4847	if iNdEx > l {
4848		return io.ErrUnexpectedEOF
4849	}
4850	return nil
4851}
4852func (m *Cluster_LbSubsetConfig) Unmarshal(dAtA []byte) error {
4853	l := len(dAtA)
4854	iNdEx := 0
4855	for iNdEx < l {
4856		preIndex := iNdEx
4857		var wire uint64
4858		for shift := uint(0); ; shift += 7 {
4859			if shift >= 64 {
4860				return ErrIntOverflowCds
4861			}
4862			if iNdEx >= l {
4863				return io.ErrUnexpectedEOF
4864			}
4865			b := dAtA[iNdEx]
4866			iNdEx++
4867			wire |= (uint64(b) & 0x7F) << shift
4868			if b < 0x80 {
4869				break
4870			}
4871		}
4872		fieldNum := int32(wire >> 3)
4873		wireType := int(wire & 0x7)
4874		if wireType == 4 {
4875			return fmt.Errorf("proto: LbSubsetConfig: wiretype end group for non-group")
4876		}
4877		if fieldNum <= 0 {
4878			return fmt.Errorf("proto: LbSubsetConfig: illegal tag %d (wire type %d)", fieldNum, wire)
4879		}
4880		switch fieldNum {
4881		case 1:
4882			if wireType != 0 {
4883				return fmt.Errorf("proto: wrong wireType = %d for field FallbackPolicy", wireType)
4884			}
4885			m.FallbackPolicy = 0
4886			for shift := uint(0); ; shift += 7 {
4887				if shift >= 64 {
4888					return ErrIntOverflowCds
4889				}
4890				if iNdEx >= l {
4891					return io.ErrUnexpectedEOF
4892				}
4893				b := dAtA[iNdEx]
4894				iNdEx++
4895				m.FallbackPolicy |= (Cluster_LbSubsetConfig_LbSubsetFallbackPolicy(b) & 0x7F) << shift
4896				if b < 0x80 {
4897					break
4898				}
4899			}
4900		case 2:
4901			if wireType != 2 {
4902				return fmt.Errorf("proto: wrong wireType = %d for field DefaultSubset", wireType)
4903			}
4904			var msglen int
4905			for shift := uint(0); ; shift += 7 {
4906				if shift >= 64 {
4907					return ErrIntOverflowCds
4908				}
4909				if iNdEx >= l {
4910					return io.ErrUnexpectedEOF
4911				}
4912				b := dAtA[iNdEx]
4913				iNdEx++
4914				msglen |= (int(b) & 0x7F) << shift
4915				if b < 0x80 {
4916					break
4917				}
4918			}
4919			if msglen < 0 {
4920				return ErrInvalidLengthCds
4921			}
4922			postIndex := iNdEx + msglen
4923			if postIndex > l {
4924				return io.ErrUnexpectedEOF
4925			}
4926			if m.DefaultSubset == nil {
4927				m.DefaultSubset = &types.Struct{}
4928			}
4929			if err := m.DefaultSubset.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
4930				return err
4931			}
4932			iNdEx = postIndex
4933		case 3:
4934			if wireType != 2 {
4935				return fmt.Errorf("proto: wrong wireType = %d for field SubsetSelectors", wireType)
4936			}
4937			var msglen int
4938			for shift := uint(0); ; shift += 7 {
4939				if shift >= 64 {
4940					return ErrIntOverflowCds
4941				}
4942				if iNdEx >= l {
4943					return io.ErrUnexpectedEOF
4944				}
4945				b := dAtA[iNdEx]
4946				iNdEx++
4947				msglen |= (int(b) & 0x7F) << shift
4948				if b < 0x80 {
4949					break
4950				}
4951			}
4952			if msglen < 0 {
4953				return ErrInvalidLengthCds
4954			}
4955			postIndex := iNdEx + msglen
4956			if postIndex > l {
4957				return io.ErrUnexpectedEOF
4958			}
4959			m.SubsetSelectors = append(m.SubsetSelectors, &Cluster_LbSubsetConfig_LbSubsetSelector{})
4960			if err := m.SubsetSelectors[len(m.SubsetSelectors)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
4961				return err
4962			}
4963			iNdEx = postIndex
4964		case 4:
4965			if wireType != 0 {
4966				return fmt.Errorf("proto: wrong wireType = %d for field LocalityWeightAware", wireType)
4967			}
4968			var v int
4969			for shift := uint(0); ; shift += 7 {
4970				if shift >= 64 {
4971					return ErrIntOverflowCds
4972				}
4973				if iNdEx >= l {
4974					return io.ErrUnexpectedEOF
4975				}
4976				b := dAtA[iNdEx]
4977				iNdEx++
4978				v |= (int(b) & 0x7F) << shift
4979				if b < 0x80 {
4980					break
4981				}
4982			}
4983			m.LocalityWeightAware = bool(v != 0)
4984		default:
4985			iNdEx = preIndex
4986			skippy, err := skipCds(dAtA[iNdEx:])
4987			if err != nil {
4988				return err
4989			}
4990			if skippy < 0 {
4991				return ErrInvalidLengthCds
4992			}
4993			if (iNdEx + skippy) > l {
4994				return io.ErrUnexpectedEOF
4995			}
4996			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
4997			iNdEx += skippy
4998		}
4999	}
5000
5001	if iNdEx > l {
5002		return io.ErrUnexpectedEOF
5003	}
5004	return nil
5005}
5006func (m *Cluster_LbSubsetConfig_LbSubsetSelector) Unmarshal(dAtA []byte) error {
5007	l := len(dAtA)
5008	iNdEx := 0
5009	for iNdEx < l {
5010		preIndex := iNdEx
5011		var wire uint64
5012		for shift := uint(0); ; shift += 7 {
5013			if shift >= 64 {
5014				return ErrIntOverflowCds
5015			}
5016			if iNdEx >= l {
5017				return io.ErrUnexpectedEOF
5018			}
5019			b := dAtA[iNdEx]
5020			iNdEx++
5021			wire |= (uint64(b) & 0x7F) << shift
5022			if b < 0x80 {
5023				break
5024			}
5025		}
5026		fieldNum := int32(wire >> 3)
5027		wireType := int(wire & 0x7)
5028		if wireType == 4 {
5029			return fmt.Errorf("proto: LbSubsetSelector: wiretype end group for non-group")
5030		}
5031		if fieldNum <= 0 {
5032			return fmt.Errorf("proto: LbSubsetSelector: illegal tag %d (wire type %d)", fieldNum, wire)
5033		}
5034		switch fieldNum {
5035		case 1:
5036			if wireType != 2 {
5037				return fmt.Errorf("proto: wrong wireType = %d for field Keys", wireType)
5038			}
5039			var stringLen uint64
5040			for shift := uint(0); ; shift += 7 {
5041				if shift >= 64 {
5042					return ErrIntOverflowCds
5043				}
5044				if iNdEx >= l {
5045					return io.ErrUnexpectedEOF
5046				}
5047				b := dAtA[iNdEx]
5048				iNdEx++
5049				stringLen |= (uint64(b) & 0x7F) << shift
5050				if b < 0x80 {
5051					break
5052				}
5053			}
5054			intStringLen := int(stringLen)
5055			if intStringLen < 0 {
5056				return ErrInvalidLengthCds
5057			}
5058			postIndex := iNdEx + intStringLen
5059			if postIndex > l {
5060				return io.ErrUnexpectedEOF
5061			}
5062			m.Keys = append(m.Keys, string(dAtA[iNdEx:postIndex]))
5063			iNdEx = postIndex
5064		default:
5065			iNdEx = preIndex
5066			skippy, err := skipCds(dAtA[iNdEx:])
5067			if err != nil {
5068				return err
5069			}
5070			if skippy < 0 {
5071				return ErrInvalidLengthCds
5072			}
5073			if (iNdEx + skippy) > l {
5074				return io.ErrUnexpectedEOF
5075			}
5076			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
5077			iNdEx += skippy
5078		}
5079	}
5080
5081	if iNdEx > l {
5082		return io.ErrUnexpectedEOF
5083	}
5084	return nil
5085}
5086func (m *Cluster_RingHashLbConfig) Unmarshal(dAtA []byte) error {
5087	l := len(dAtA)
5088	iNdEx := 0
5089	for iNdEx < l {
5090		preIndex := iNdEx
5091		var wire uint64
5092		for shift := uint(0); ; shift += 7 {
5093			if shift >= 64 {
5094				return ErrIntOverflowCds
5095			}
5096			if iNdEx >= l {
5097				return io.ErrUnexpectedEOF
5098			}
5099			b := dAtA[iNdEx]
5100			iNdEx++
5101			wire |= (uint64(b) & 0x7F) << shift
5102			if b < 0x80 {
5103				break
5104			}
5105		}
5106		fieldNum := int32(wire >> 3)
5107		wireType := int(wire & 0x7)
5108		if wireType == 4 {
5109			return fmt.Errorf("proto: RingHashLbConfig: wiretype end group for non-group")
5110		}
5111		if fieldNum <= 0 {
5112			return fmt.Errorf("proto: RingHashLbConfig: illegal tag %d (wire type %d)", fieldNum, wire)
5113		}
5114		switch fieldNum {
5115		case 1:
5116			if wireType != 2 {
5117				return fmt.Errorf("proto: wrong wireType = %d for field MinimumRingSize", wireType)
5118			}
5119			var msglen int
5120			for shift := uint(0); ; shift += 7 {
5121				if shift >= 64 {
5122					return ErrIntOverflowCds
5123				}
5124				if iNdEx >= l {
5125					return io.ErrUnexpectedEOF
5126				}
5127				b := dAtA[iNdEx]
5128				iNdEx++
5129				msglen |= (int(b) & 0x7F) << shift
5130				if b < 0x80 {
5131					break
5132				}
5133			}
5134			if msglen < 0 {
5135				return ErrInvalidLengthCds
5136			}
5137			postIndex := iNdEx + msglen
5138			if postIndex > l {
5139				return io.ErrUnexpectedEOF
5140			}
5141			if m.MinimumRingSize == nil {
5142				m.MinimumRingSize = &types.UInt64Value{}
5143			}
5144			if err := m.MinimumRingSize.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
5145				return err
5146			}
5147			iNdEx = postIndex
5148		case 2:
5149			if wireType != 2 {
5150				return fmt.Errorf("proto: wrong wireType = %d for field DeprecatedV1", wireType)
5151			}
5152			var msglen int
5153			for shift := uint(0); ; shift += 7 {
5154				if shift >= 64 {
5155					return ErrIntOverflowCds
5156				}
5157				if iNdEx >= l {
5158					return io.ErrUnexpectedEOF
5159				}
5160				b := dAtA[iNdEx]
5161				iNdEx++
5162				msglen |= (int(b) & 0x7F) << shift
5163				if b < 0x80 {
5164					break
5165				}
5166			}
5167			if msglen < 0 {
5168				return ErrInvalidLengthCds
5169			}
5170			postIndex := iNdEx + msglen
5171			if postIndex > l {
5172				return io.ErrUnexpectedEOF
5173			}
5174			if m.DeprecatedV1 == nil {
5175				m.DeprecatedV1 = &Cluster_RingHashLbConfig_DeprecatedV1{}
5176			}
5177			if err := m.DeprecatedV1.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
5178				return err
5179			}
5180			iNdEx = postIndex
5181		default:
5182			iNdEx = preIndex
5183			skippy, err := skipCds(dAtA[iNdEx:])
5184			if err != nil {
5185				return err
5186			}
5187			if skippy < 0 {
5188				return ErrInvalidLengthCds
5189			}
5190			if (iNdEx + skippy) > l {
5191				return io.ErrUnexpectedEOF
5192			}
5193			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
5194			iNdEx += skippy
5195		}
5196	}
5197
5198	if iNdEx > l {
5199		return io.ErrUnexpectedEOF
5200	}
5201	return nil
5202}
5203func (m *Cluster_RingHashLbConfig_DeprecatedV1) Unmarshal(dAtA []byte) error {
5204	l := len(dAtA)
5205	iNdEx := 0
5206	for iNdEx < l {
5207		preIndex := iNdEx
5208		var wire uint64
5209		for shift := uint(0); ; shift += 7 {
5210			if shift >= 64 {
5211				return ErrIntOverflowCds
5212			}
5213			if iNdEx >= l {
5214				return io.ErrUnexpectedEOF
5215			}
5216			b := dAtA[iNdEx]
5217			iNdEx++
5218			wire |= (uint64(b) & 0x7F) << shift
5219			if b < 0x80 {
5220				break
5221			}
5222		}
5223		fieldNum := int32(wire >> 3)
5224		wireType := int(wire & 0x7)
5225		if wireType == 4 {
5226			return fmt.Errorf("proto: DeprecatedV1: wiretype end group for non-group")
5227		}
5228		if fieldNum <= 0 {
5229			return fmt.Errorf("proto: DeprecatedV1: illegal tag %d (wire type %d)", fieldNum, wire)
5230		}
5231		switch fieldNum {
5232		case 1:
5233			if wireType != 2 {
5234				return fmt.Errorf("proto: wrong wireType = %d for field UseStdHash", wireType)
5235			}
5236			var msglen int
5237			for shift := uint(0); ; shift += 7 {
5238				if shift >= 64 {
5239					return ErrIntOverflowCds
5240				}
5241				if iNdEx >= l {
5242					return io.ErrUnexpectedEOF
5243				}
5244				b := dAtA[iNdEx]
5245				iNdEx++
5246				msglen |= (int(b) & 0x7F) << shift
5247				if b < 0x80 {
5248					break
5249				}
5250			}
5251			if msglen < 0 {
5252				return ErrInvalidLengthCds
5253			}
5254			postIndex := iNdEx + msglen
5255			if postIndex > l {
5256				return io.ErrUnexpectedEOF
5257			}
5258			if m.UseStdHash == nil {
5259				m.UseStdHash = &types.BoolValue{}
5260			}
5261			if err := m.UseStdHash.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
5262				return err
5263			}
5264			iNdEx = postIndex
5265		default:
5266			iNdEx = preIndex
5267			skippy, err := skipCds(dAtA[iNdEx:])
5268			if err != nil {
5269				return err
5270			}
5271			if skippy < 0 {
5272				return ErrInvalidLengthCds
5273			}
5274			if (iNdEx + skippy) > l {
5275				return io.ErrUnexpectedEOF
5276			}
5277			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
5278			iNdEx += skippy
5279		}
5280	}
5281
5282	if iNdEx > l {
5283		return io.ErrUnexpectedEOF
5284	}
5285	return nil
5286}
5287func (m *Cluster_OriginalDstLbConfig) Unmarshal(dAtA []byte) error {
5288	l := len(dAtA)
5289	iNdEx := 0
5290	for iNdEx < l {
5291		preIndex := iNdEx
5292		var wire uint64
5293		for shift := uint(0); ; shift += 7 {
5294			if shift >= 64 {
5295				return ErrIntOverflowCds
5296			}
5297			if iNdEx >= l {
5298				return io.ErrUnexpectedEOF
5299			}
5300			b := dAtA[iNdEx]
5301			iNdEx++
5302			wire |= (uint64(b) & 0x7F) << shift
5303			if b < 0x80 {
5304				break
5305			}
5306		}
5307		fieldNum := int32(wire >> 3)
5308		wireType := int(wire & 0x7)
5309		if wireType == 4 {
5310			return fmt.Errorf("proto: OriginalDstLbConfig: wiretype end group for non-group")
5311		}
5312		if fieldNum <= 0 {
5313			return fmt.Errorf("proto: OriginalDstLbConfig: illegal tag %d (wire type %d)", fieldNum, wire)
5314		}
5315		switch fieldNum {
5316		case 1:
5317			if wireType != 0 {
5318				return fmt.Errorf("proto: wrong wireType = %d for field UseHttpHeader", wireType)
5319			}
5320			var v int
5321			for shift := uint(0); ; shift += 7 {
5322				if shift >= 64 {
5323					return ErrIntOverflowCds
5324				}
5325				if iNdEx >= l {
5326					return io.ErrUnexpectedEOF
5327				}
5328				b := dAtA[iNdEx]
5329				iNdEx++
5330				v |= (int(b) & 0x7F) << shift
5331				if b < 0x80 {
5332					break
5333				}
5334			}
5335			m.UseHttpHeader = bool(v != 0)
5336		default:
5337			iNdEx = preIndex
5338			skippy, err := skipCds(dAtA[iNdEx:])
5339			if err != nil {
5340				return err
5341			}
5342			if skippy < 0 {
5343				return ErrInvalidLengthCds
5344			}
5345			if (iNdEx + skippy) > l {
5346				return io.ErrUnexpectedEOF
5347			}
5348			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
5349			iNdEx += skippy
5350		}
5351	}
5352
5353	if iNdEx > l {
5354		return io.ErrUnexpectedEOF
5355	}
5356	return nil
5357}
5358func (m *Cluster_CommonLbConfig) Unmarshal(dAtA []byte) error {
5359	l := len(dAtA)
5360	iNdEx := 0
5361	for iNdEx < l {
5362		preIndex := iNdEx
5363		var wire uint64
5364		for shift := uint(0); ; shift += 7 {
5365			if shift >= 64 {
5366				return ErrIntOverflowCds
5367			}
5368			if iNdEx >= l {
5369				return io.ErrUnexpectedEOF
5370			}
5371			b := dAtA[iNdEx]
5372			iNdEx++
5373			wire |= (uint64(b) & 0x7F) << shift
5374			if b < 0x80 {
5375				break
5376			}
5377		}
5378		fieldNum := int32(wire >> 3)
5379		wireType := int(wire & 0x7)
5380		if wireType == 4 {
5381			return fmt.Errorf("proto: CommonLbConfig: wiretype end group for non-group")
5382		}
5383		if fieldNum <= 0 {
5384			return fmt.Errorf("proto: CommonLbConfig: illegal tag %d (wire type %d)", fieldNum, wire)
5385		}
5386		switch fieldNum {
5387		case 1:
5388			if wireType != 2 {
5389				return fmt.Errorf("proto: wrong wireType = %d for field HealthyPanicThreshold", wireType)
5390			}
5391			var msglen int
5392			for shift := uint(0); ; shift += 7 {
5393				if shift >= 64 {
5394					return ErrIntOverflowCds
5395				}
5396				if iNdEx >= l {
5397					return io.ErrUnexpectedEOF
5398				}
5399				b := dAtA[iNdEx]
5400				iNdEx++
5401				msglen |= (int(b) & 0x7F) << shift
5402				if b < 0x80 {
5403					break
5404				}
5405			}
5406			if msglen < 0 {
5407				return ErrInvalidLengthCds
5408			}
5409			postIndex := iNdEx + msglen
5410			if postIndex > l {
5411				return io.ErrUnexpectedEOF
5412			}
5413			if m.HealthyPanicThreshold == nil {
5414				m.HealthyPanicThreshold = &_type.Percent{}
5415			}
5416			if err := m.HealthyPanicThreshold.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
5417				return err
5418			}
5419			iNdEx = postIndex
5420		case 2:
5421			if wireType != 2 {
5422				return fmt.Errorf("proto: wrong wireType = %d for field ZoneAwareLbConfig", wireType)
5423			}
5424			var msglen int
5425			for shift := uint(0); ; shift += 7 {
5426				if shift >= 64 {
5427					return ErrIntOverflowCds
5428				}
5429				if iNdEx >= l {
5430					return io.ErrUnexpectedEOF
5431				}
5432				b := dAtA[iNdEx]
5433				iNdEx++
5434				msglen |= (int(b) & 0x7F) << shift
5435				if b < 0x80 {
5436					break
5437				}
5438			}
5439			if msglen < 0 {
5440				return ErrInvalidLengthCds
5441			}
5442			postIndex := iNdEx + msglen
5443			if postIndex > l {
5444				return io.ErrUnexpectedEOF
5445			}
5446			v := &Cluster_CommonLbConfig_ZoneAwareLbConfig{}
5447			if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
5448				return err
5449			}
5450			m.LocalityConfigSpecifier = &Cluster_CommonLbConfig_ZoneAwareLbConfig_{v}
5451			iNdEx = postIndex
5452		case 3:
5453			if wireType != 2 {
5454				return fmt.Errorf("proto: wrong wireType = %d for field LocalityWeightedLbConfig", wireType)
5455			}
5456			var msglen int
5457			for shift := uint(0); ; shift += 7 {
5458				if shift >= 64 {
5459					return ErrIntOverflowCds
5460				}
5461				if iNdEx >= l {
5462					return io.ErrUnexpectedEOF
5463				}
5464				b := dAtA[iNdEx]
5465				iNdEx++
5466				msglen |= (int(b) & 0x7F) << shift
5467				if b < 0x80 {
5468					break
5469				}
5470			}
5471			if msglen < 0 {
5472				return ErrInvalidLengthCds
5473			}
5474			postIndex := iNdEx + msglen
5475			if postIndex > l {
5476				return io.ErrUnexpectedEOF
5477			}
5478			v := &Cluster_CommonLbConfig_LocalityWeightedLbConfig{}
5479			if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
5480				return err
5481			}
5482			m.LocalityConfigSpecifier = &Cluster_CommonLbConfig_LocalityWeightedLbConfig_{v}
5483			iNdEx = postIndex
5484		case 4:
5485			if wireType != 2 {
5486				return fmt.Errorf("proto: wrong wireType = %d for field UpdateMergeWindow", wireType)
5487			}
5488			var msglen int
5489			for shift := uint(0); ; shift += 7 {
5490				if shift >= 64 {
5491					return ErrIntOverflowCds
5492				}
5493				if iNdEx >= l {
5494					return io.ErrUnexpectedEOF
5495				}
5496				b := dAtA[iNdEx]
5497				iNdEx++
5498				msglen |= (int(b) & 0x7F) << shift
5499				if b < 0x80 {
5500					break
5501				}
5502			}
5503			if msglen < 0 {
5504				return ErrInvalidLengthCds
5505			}
5506			postIndex := iNdEx + msglen
5507			if postIndex > l {
5508				return io.ErrUnexpectedEOF
5509			}
5510			if m.UpdateMergeWindow == nil {
5511				m.UpdateMergeWindow = &types.Duration{}
5512			}
5513			if err := m.UpdateMergeWindow.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
5514				return err
5515			}
5516			iNdEx = postIndex
5517		default:
5518			iNdEx = preIndex
5519			skippy, err := skipCds(dAtA[iNdEx:])
5520			if err != nil {
5521				return err
5522			}
5523			if skippy < 0 {
5524				return ErrInvalidLengthCds
5525			}
5526			if (iNdEx + skippy) > l {
5527				return io.ErrUnexpectedEOF
5528			}
5529			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
5530			iNdEx += skippy
5531		}
5532	}
5533
5534	if iNdEx > l {
5535		return io.ErrUnexpectedEOF
5536	}
5537	return nil
5538}
5539func (m *Cluster_CommonLbConfig_ZoneAwareLbConfig) Unmarshal(dAtA []byte) error {
5540	l := len(dAtA)
5541	iNdEx := 0
5542	for iNdEx < l {
5543		preIndex := iNdEx
5544		var wire uint64
5545		for shift := uint(0); ; shift += 7 {
5546			if shift >= 64 {
5547				return ErrIntOverflowCds
5548			}
5549			if iNdEx >= l {
5550				return io.ErrUnexpectedEOF
5551			}
5552			b := dAtA[iNdEx]
5553			iNdEx++
5554			wire |= (uint64(b) & 0x7F) << shift
5555			if b < 0x80 {
5556				break
5557			}
5558		}
5559		fieldNum := int32(wire >> 3)
5560		wireType := int(wire & 0x7)
5561		if wireType == 4 {
5562			return fmt.Errorf("proto: ZoneAwareLbConfig: wiretype end group for non-group")
5563		}
5564		if fieldNum <= 0 {
5565			return fmt.Errorf("proto: ZoneAwareLbConfig: illegal tag %d (wire type %d)", fieldNum, wire)
5566		}
5567		switch fieldNum {
5568		case 1:
5569			if wireType != 2 {
5570				return fmt.Errorf("proto: wrong wireType = %d for field RoutingEnabled", wireType)
5571			}
5572			var msglen int
5573			for shift := uint(0); ; shift += 7 {
5574				if shift >= 64 {
5575					return ErrIntOverflowCds
5576				}
5577				if iNdEx >= l {
5578					return io.ErrUnexpectedEOF
5579				}
5580				b := dAtA[iNdEx]
5581				iNdEx++
5582				msglen |= (int(b) & 0x7F) << shift
5583				if b < 0x80 {
5584					break
5585				}
5586			}
5587			if msglen < 0 {
5588				return ErrInvalidLengthCds
5589			}
5590			postIndex := iNdEx + msglen
5591			if postIndex > l {
5592				return io.ErrUnexpectedEOF
5593			}
5594			if m.RoutingEnabled == nil {
5595				m.RoutingEnabled = &_type.Percent{}
5596			}
5597			if err := m.RoutingEnabled.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
5598				return err
5599			}
5600			iNdEx = postIndex
5601		case 2:
5602			if wireType != 2 {
5603				return fmt.Errorf("proto: wrong wireType = %d for field MinClusterSize", wireType)
5604			}
5605			var msglen int
5606			for shift := uint(0); ; shift += 7 {
5607				if shift >= 64 {
5608					return ErrIntOverflowCds
5609				}
5610				if iNdEx >= l {
5611					return io.ErrUnexpectedEOF
5612				}
5613				b := dAtA[iNdEx]
5614				iNdEx++
5615				msglen |= (int(b) & 0x7F) << shift
5616				if b < 0x80 {
5617					break
5618				}
5619			}
5620			if msglen < 0 {
5621				return ErrInvalidLengthCds
5622			}
5623			postIndex := iNdEx + msglen
5624			if postIndex > l {
5625				return io.ErrUnexpectedEOF
5626			}
5627			if m.MinClusterSize == nil {
5628				m.MinClusterSize = &types.UInt64Value{}
5629			}
5630			if err := m.MinClusterSize.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
5631				return err
5632			}
5633			iNdEx = postIndex
5634		default:
5635			iNdEx = preIndex
5636			skippy, err := skipCds(dAtA[iNdEx:])
5637			if err != nil {
5638				return err
5639			}
5640			if skippy < 0 {
5641				return ErrInvalidLengthCds
5642			}
5643			if (iNdEx + skippy) > l {
5644				return io.ErrUnexpectedEOF
5645			}
5646			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
5647			iNdEx += skippy
5648		}
5649	}
5650
5651	if iNdEx > l {
5652		return io.ErrUnexpectedEOF
5653	}
5654	return nil
5655}
5656func (m *Cluster_CommonLbConfig_LocalityWeightedLbConfig) Unmarshal(dAtA []byte) error {
5657	l := len(dAtA)
5658	iNdEx := 0
5659	for iNdEx < l {
5660		preIndex := iNdEx
5661		var wire uint64
5662		for shift := uint(0); ; shift += 7 {
5663			if shift >= 64 {
5664				return ErrIntOverflowCds
5665			}
5666			if iNdEx >= l {
5667				return io.ErrUnexpectedEOF
5668			}
5669			b := dAtA[iNdEx]
5670			iNdEx++
5671			wire |= (uint64(b) & 0x7F) << shift
5672			if b < 0x80 {
5673				break
5674			}
5675		}
5676		fieldNum := int32(wire >> 3)
5677		wireType := int(wire & 0x7)
5678		if wireType == 4 {
5679			return fmt.Errorf("proto: LocalityWeightedLbConfig: wiretype end group for non-group")
5680		}
5681		if fieldNum <= 0 {
5682			return fmt.Errorf("proto: LocalityWeightedLbConfig: illegal tag %d (wire type %d)", fieldNum, wire)
5683		}
5684		switch fieldNum {
5685		default:
5686			iNdEx = preIndex
5687			skippy, err := skipCds(dAtA[iNdEx:])
5688			if err != nil {
5689				return err
5690			}
5691			if skippy < 0 {
5692				return ErrInvalidLengthCds
5693			}
5694			if (iNdEx + skippy) > l {
5695				return io.ErrUnexpectedEOF
5696			}
5697			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
5698			iNdEx += skippy
5699		}
5700	}
5701
5702	if iNdEx > l {
5703		return io.ErrUnexpectedEOF
5704	}
5705	return nil
5706}
5707func (m *UpstreamBindConfig) Unmarshal(dAtA []byte) error {
5708	l := len(dAtA)
5709	iNdEx := 0
5710	for iNdEx < l {
5711		preIndex := iNdEx
5712		var wire uint64
5713		for shift := uint(0); ; shift += 7 {
5714			if shift >= 64 {
5715				return ErrIntOverflowCds
5716			}
5717			if iNdEx >= l {
5718				return io.ErrUnexpectedEOF
5719			}
5720			b := dAtA[iNdEx]
5721			iNdEx++
5722			wire |= (uint64(b) & 0x7F) << shift
5723			if b < 0x80 {
5724				break
5725			}
5726		}
5727		fieldNum := int32(wire >> 3)
5728		wireType := int(wire & 0x7)
5729		if wireType == 4 {
5730			return fmt.Errorf("proto: UpstreamBindConfig: wiretype end group for non-group")
5731		}
5732		if fieldNum <= 0 {
5733			return fmt.Errorf("proto: UpstreamBindConfig: illegal tag %d (wire type %d)", fieldNum, wire)
5734		}
5735		switch fieldNum {
5736		case 1:
5737			if wireType != 2 {
5738				return fmt.Errorf("proto: wrong wireType = %d for field SourceAddress", wireType)
5739			}
5740			var msglen int
5741			for shift := uint(0); ; shift += 7 {
5742				if shift >= 64 {
5743					return ErrIntOverflowCds
5744				}
5745				if iNdEx >= l {
5746					return io.ErrUnexpectedEOF
5747				}
5748				b := dAtA[iNdEx]
5749				iNdEx++
5750				msglen |= (int(b) & 0x7F) << shift
5751				if b < 0x80 {
5752					break
5753				}
5754			}
5755			if msglen < 0 {
5756				return ErrInvalidLengthCds
5757			}
5758			postIndex := iNdEx + msglen
5759			if postIndex > l {
5760				return io.ErrUnexpectedEOF
5761			}
5762			if m.SourceAddress == nil {
5763				m.SourceAddress = &core.Address{}
5764			}
5765			if err := m.SourceAddress.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
5766				return err
5767			}
5768			iNdEx = postIndex
5769		default:
5770			iNdEx = preIndex
5771			skippy, err := skipCds(dAtA[iNdEx:])
5772			if err != nil {
5773				return err
5774			}
5775			if skippy < 0 {
5776				return ErrInvalidLengthCds
5777			}
5778			if (iNdEx + skippy) > l {
5779				return io.ErrUnexpectedEOF
5780			}
5781			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
5782			iNdEx += skippy
5783		}
5784	}
5785
5786	if iNdEx > l {
5787		return io.ErrUnexpectedEOF
5788	}
5789	return nil
5790}
5791func (m *UpstreamConnectionOptions) Unmarshal(dAtA []byte) error {
5792	l := len(dAtA)
5793	iNdEx := 0
5794	for iNdEx < l {
5795		preIndex := iNdEx
5796		var wire uint64
5797		for shift := uint(0); ; shift += 7 {
5798			if shift >= 64 {
5799				return ErrIntOverflowCds
5800			}
5801			if iNdEx >= l {
5802				return io.ErrUnexpectedEOF
5803			}
5804			b := dAtA[iNdEx]
5805			iNdEx++
5806			wire |= (uint64(b) & 0x7F) << shift
5807			if b < 0x80 {
5808				break
5809			}
5810		}
5811		fieldNum := int32(wire >> 3)
5812		wireType := int(wire & 0x7)
5813		if wireType == 4 {
5814			return fmt.Errorf("proto: UpstreamConnectionOptions: wiretype end group for non-group")
5815		}
5816		if fieldNum <= 0 {
5817			return fmt.Errorf("proto: UpstreamConnectionOptions: illegal tag %d (wire type %d)", fieldNum, wire)
5818		}
5819		switch fieldNum {
5820		case 1:
5821			if wireType != 2 {
5822				return fmt.Errorf("proto: wrong wireType = %d for field TcpKeepalive", wireType)
5823			}
5824			var msglen int
5825			for shift := uint(0); ; shift += 7 {
5826				if shift >= 64 {
5827					return ErrIntOverflowCds
5828				}
5829				if iNdEx >= l {
5830					return io.ErrUnexpectedEOF
5831				}
5832				b := dAtA[iNdEx]
5833				iNdEx++
5834				msglen |= (int(b) & 0x7F) << shift
5835				if b < 0x80 {
5836					break
5837				}
5838			}
5839			if msglen < 0 {
5840				return ErrInvalidLengthCds
5841			}
5842			postIndex := iNdEx + msglen
5843			if postIndex > l {
5844				return io.ErrUnexpectedEOF
5845			}
5846			if m.TcpKeepalive == nil {
5847				m.TcpKeepalive = &core.TcpKeepalive{}
5848			}
5849			if err := m.TcpKeepalive.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
5850				return err
5851			}
5852			iNdEx = postIndex
5853		default:
5854			iNdEx = preIndex
5855			skippy, err := skipCds(dAtA[iNdEx:])
5856			if err != nil {
5857				return err
5858			}
5859			if skippy < 0 {
5860				return ErrInvalidLengthCds
5861			}
5862			if (iNdEx + skippy) > l {
5863				return io.ErrUnexpectedEOF
5864			}
5865			m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
5866			iNdEx += skippy
5867		}
5868	}
5869
5870	if iNdEx > l {
5871		return io.ErrUnexpectedEOF
5872	}
5873	return nil
5874}
5875func skipCds(dAtA []byte) (n int, err error) {
5876	l := len(dAtA)
5877	iNdEx := 0
5878	for iNdEx < l {
5879		var wire uint64
5880		for shift := uint(0); ; shift += 7 {
5881			if shift >= 64 {
5882				return 0, ErrIntOverflowCds
5883			}
5884			if iNdEx >= l {
5885				return 0, io.ErrUnexpectedEOF
5886			}
5887			b := dAtA[iNdEx]
5888			iNdEx++
5889			wire |= (uint64(b) & 0x7F) << shift
5890			if b < 0x80 {
5891				break
5892			}
5893		}
5894		wireType := int(wire & 0x7)
5895		switch wireType {
5896		case 0:
5897			for shift := uint(0); ; shift += 7 {
5898				if shift >= 64 {
5899					return 0, ErrIntOverflowCds
5900				}
5901				if iNdEx >= l {
5902					return 0, io.ErrUnexpectedEOF
5903				}
5904				iNdEx++
5905				if dAtA[iNdEx-1] < 0x80 {
5906					break
5907				}
5908			}
5909			return iNdEx, nil
5910		case 1:
5911			iNdEx += 8
5912			return iNdEx, nil
5913		case 2:
5914			var length int
5915			for shift := uint(0); ; shift += 7 {
5916				if shift >= 64 {
5917					return 0, ErrIntOverflowCds
5918				}
5919				if iNdEx >= l {
5920					return 0, io.ErrUnexpectedEOF
5921				}
5922				b := dAtA[iNdEx]
5923				iNdEx++
5924				length |= (int(b) & 0x7F) << shift
5925				if b < 0x80 {
5926					break
5927				}
5928			}
5929			iNdEx += length
5930			if length < 0 {
5931				return 0, ErrInvalidLengthCds
5932			}
5933			return iNdEx, nil
5934		case 3:
5935			for {
5936				var innerWire uint64
5937				var start int = iNdEx
5938				for shift := uint(0); ; shift += 7 {
5939					if shift >= 64 {
5940						return 0, ErrIntOverflowCds
5941					}
5942					if iNdEx >= l {
5943						return 0, io.ErrUnexpectedEOF
5944					}
5945					b := dAtA[iNdEx]
5946					iNdEx++
5947					innerWire |= (uint64(b) & 0x7F) << shift
5948					if b < 0x80 {
5949						break
5950					}
5951				}
5952				innerWireType := int(innerWire & 0x7)
5953				if innerWireType == 4 {
5954					break
5955				}
5956				next, err := skipCds(dAtA[start:])
5957				if err != nil {
5958					return 0, err
5959				}
5960				iNdEx = start + next
5961			}
5962			return iNdEx, nil
5963		case 4:
5964			return iNdEx, nil
5965		case 5:
5966			iNdEx += 4
5967			return iNdEx, nil
5968		default:
5969			return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
5970		}
5971	}
5972	panic("unreachable")
5973}
5974
5975var (
5976	ErrInvalidLengthCds = fmt.Errorf("proto: negative length found during unmarshaling")
5977	ErrIntOverflowCds   = fmt.Errorf("proto: integer overflow")
5978)
5979
5980func init() { proto.RegisterFile("envoy/api/v2/cds.proto", fileDescriptor_cds_c9aad078b729c273) }
5981
5982var fileDescriptor_cds_c9aad078b729c273 = []byte{
5983	// 2344 bytes of a gzipped FileDescriptorProto
5984	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0xcd, 0x6f, 0x1b, 0xc7,
5985	0x15, 0xd7, 0x52, 0x72, 0x2c, 0x3d, 0x89, 0xe4, 0x6a, 0xe4, 0x8f, 0x35, 0x65, 0xcb, 0x32, 0xf3,
5986	0x51, 0xd5, 0x68, 0xa9, 0x46, 0x4e, 0xd2, 0x22, 0x4d, 0x52, 0xf0, 0x4b, 0x16, 0x13, 0x9a, 0x54,
5987	0x77, 0x29, 0x0b, 0x69, 0x1a, 0x4c, 0x86, 0xbb, 0x23, 0x72, 0xab, 0xe5, 0xee, 0x66, 0x67, 0x56,
5988	0xb6, 0x7c, 0x28, 0x82, 0x9c, 0x7a, 0x2f, 0x50, 0xb4, 0xff, 0x41, 0xd1, 0x3f, 0xa1, 0xa7, 0x1e,
5989	0x73, 0x6c, 0xd1, 0x63, 0x81, 0xb6, 0x30, 0x72, 0x68, 0xff, 0x8b, 0x62, 0x66, 0x67, 0x69, 0x7e,
5990	0xac, 0x6c, 0x05, 0xe8, 0x89, 0x9c, 0xf7, 0x7e, 0xef, 0x37, 0x33, 0x6f, 0xdf, 0x7b, 0xf3, 0x66,
5991	0xe0, 0x06, 0xf5, 0xcf, 0x82, 0xf3, 0x5d, 0x12, 0xba, 0xbb, 0x67, 0x7b, 0xbb, 0xb6, 0xc3, 0x2a,
5992	0x61, 0x14, 0xf0, 0x00, 0xad, 0x49, 0x79, 0x85, 0x84, 0x6e, 0xe5, 0x6c, 0xaf, 0x74, 0x77, 0x1a,
5993	0x15, 0x44, 0x74, 0x97, 0x38, 0x4e, 0x44, 0x99, 0x82, 0x97, 0x6e, 0x4f, 0x01, 0x48, 0xcc, 0x87,
5994	0xbb, 0x36, 0x8d, 0x78, 0xa6, 0x56, 0x9a, 0xf7, 0x09, 0xa3, 0x4a, 0xfb, 0xe6, 0xbc, 0xd6, 0x0e,
5995	0xfc, 0x13, 0x77, 0x80, 0x59, 0x10, 0x47, 0x36, 0xcd, 0x24, 0x71, 0x5c, 0x66, 0x07, 0x67, 0x34,
5996	0x3a, 0x57, 0xda, 0x37, 0xe6, 0x49, 0x86, 0x94, 0x78, 0x7c, 0x88, 0xed, 0x21, 0xb5, 0x4f, 0x15,
5997	0x6a, 0x7b, 0x1e, 0x25, 0x15, 0x76, 0xe0, 0x29, 0xc4, 0xfd, 0x69, 0x84, 0x17, 0x33, 0x4e, 0xa3,
5998	0x5d, 0xdb, 0x8d, 0xec, 0xd8, 0xe5, 0xb8, 0x1f, 0x51, 0x72, 0x4a, 0x23, 0x85, 0xfd, 0x41, 0x26,
5999	0x36, 0x88, 0xb9, 0xe7, 0xd2, 0x08, 0x3b, 0x94, 0x53, 0x9b, 0xbb, 0x81, 0xaf, 0xd0, 0xd3, 0x9e,
6000	0xa6, 0xa9, 0xa7, 0x4b, 0x46, 0x22, 0xe7, 0xe7, 0x21, 0xdd, 0x0d, 0x69, 0x64, 0x53, 0x7f, 0xec,
6001	0xb6, 0x41, 0x10, 0x0c, 0x3c, 0x2a, 0x4d, 0x88, 0xef, 0x07, 0x9c, 0x08, 0xba, 0xd4, 0x6e, 0x4b,
6002	0x69, 0xe5, 0xa8, 0x1f, 0x9f, 0xec, 0x3a, 0x71, 0x44, 0x26, 0xe6, 0xbb, 0x3d, 0xab, 0x67, 0x3c,
6003	0x8a, 0x6d, 0x7e, 0x91, 0xf5, 0x93, 0x88, 0x84, 0x21, 0x8d, 0x52, 0xf6, 0x9b, 0x67, 0xc4, 0x73,
6004	0x1d, 0xc2, 0xe9, 0x6e, 0xfa, 0x47, 0x29, 0xae, 0x0d, 0x82, 0x41, 0x20, 0xff, 0xee, 0x8a, 0x7f,
6005	0x89, 0xb4, 0xfc, 0xed, 0x1b, 0x70, 0xb5, 0x9e, 0x38, 0x00, 0xdd, 0x81, 0x25, 0x9f, 0x8c, 0xa8,
6006	0xa1, 0x6d, 0x6b, 0x3b, 0x2b, 0xb5, 0x95, 0x3f, 0xff, 0xf7, 0x2f, 0x8b, 0x4b, 0x51, 0x6e, 0x5b,
6007	0x33, 0xa5, 0x18, 0xd5, 0x61, 0x49, 0xec, 0xd5, 0xc8, 0x6d, 0x6b, 0x3b, 0x85, 0xbd, 0xd7, 0x2b,
6008	0x93, 0x81, 0x56, 0x51, 0x1c, 0x95, 0x46, 0xfa, 0x79, 0x7b, 0xe7, 0x21, 0xad, 0x81, 0xe0, 0xb8,
6009	0xf2, 0xb5, 0x96, 0xd3, 0x35, 0x53, 0x1a, 0xa3, 0x1e, 0x20, 0xea, 0x30, 0xac, 0x7c, 0x8e, 0x93,
6010	0x78, 0x31, 0x16, 0xb7, 0xb5, 0x9d, 0xd5, 0xbd, 0xb7, 0xb2, 0x29, 0x9b, 0x0e, 0x53, 0x7f, 0xeb,
6011	0x12, 0x6d, 0xea, 0x74, 0x46, 0x82, 0x1e, 0x43, 0xd1, 0x0e, 0x7c, 0x9f, 0xda, 0x1c, 0x73, 0x77,
6012	0x44, 0x83, 0x98, 0x1b, 0x4b, 0x92, 0xf2, 0x56, 0x25, 0x71, 0x57, 0x25, 0x75, 0x57, 0xa5, 0xa1,
6013	0x9c, 0x5d, 0x43, 0xdf, 0xfc, 0xf3, 0xee, 0xc2, 0xef, 0xff, 0x75, 0x57, 0x93, 0x6b, 0xfc, 0x93,
6014	0x96, 0xbb, 0xbf, 0x60, 0x16, 0x14, 0x4b, 0x2f, 0x21, 0x41, 0x27, 0x70, 0x2f, 0x4c, 0x56, 0xe9,
6015	0x27, 0x21, 0x81, 0xfb, 0xf1, 0xc9, 0x09, 0x8d, 0xb0, 0xe7, 0x8e, 0x44, 0x54, 0x9d, 0x73, 0xca,
6016	0x8c, 0x2b, 0x72, 0xa6, 0xdb, 0x73, 0x33, 0x1d, 0xb5, 0x7c, 0xfe, 0x60, 0xef, 0x31, 0xf1, 0x62,
6017	0x6a, 0xde, 0x09, 0xe5, 0x5a, 0x15, 0x4b, 0x4d, 0x92, 0xb4, 0x05, 0x47, 0x4d, 0x50, 0xa0, 0x87,
6018	0xb0, 0xe2, 0xf5, 0x71, 0x18, 0x78, 0xae, 0x7d, 0x6e, 0xbc, 0x26, 0xfd, 0xbb, 0x95, 0xed, 0x8c,
6019	0x76, 0xff, 0x50, 0xa2, 0xa6, 0x5c, 0xbb, 0xec, 0x29, 0x29, 0x7a, 0x07, 0xae, 0x0c, 0x03, 0xc6,
6020	0x99, 0x71, 0x75, 0x7b, 0x71, 0x67, 0x75, 0xaf, 0x34, 0x4d, 0x22, 0xf2, 0xa6, 0x52, 0x4d, 0xf2,
6021	0xbf, 0x96, 0x33, 0x34, 0x33, 0x01, 0xa3, 0x3a, 0xe4, 0x27, 0x73, 0x8e, 0x19, 0xcb, 0xd2, 0x7a,
6022	0x2b, 0xc3, 0xfa, 0x40, 0xe2, 0xea, 0x02, 0x66, 0xae, 0x0d, 0x5f, 0x0c, 0x18, 0xfa, 0x0c, 0x36,
6023	0x47, 0xe4, 0x29, 0x8e, 0xe8, 0x97, 0x31, 0x65, 0x9c, 0xe1, 0x69, 0xc7, 0x19, 0x2b, 0x97, 0xf0,
6024	0x92, 0x31, 0x22, 0x4f, 0x4d, 0x65, 0x7f, 0x38, 0xe9, 0x30, 0x74, 0x08, 0xfa, 0x4c, 0x2a, 0x33,
6025	0x03, 0x24, 0xe3, 0x9b, 0x33, 0x8b, 0x54, 0x7e, 0xaa, 0x27, 0xe8, 0x9a, 0x02, 0x9b, 0x45, 0x7b,
6026	0x5a, 0x80, 0xf6, 0x61, 0x95, 0x7b, 0x4c, 0xac, 0x90, 0xd3, 0xa7, 0xdc, 0x58, 0xcd, 0x22, 0x13,
6027	0xe5, 0xb0, 0x72, 0x14, 0x32, 0x1e, 0x51, 0x32, 0xea, 0x79, 0xac, 0x9e, 0x80, 0x4d, 0xe0, 0xe3,
6028	0xff, 0xe8, 0x33, 0xb8, 0x3e, 0xe4, 0x3c, 0xc4, 0x69, 0x39, 0xc2, 0x41, 0x28, 0x93, 0xdd, 0xc8,
6029	0x4b, 0xc6, 0xef, 0x65, 0xf9, 0x90, 0xf3, 0xf0, 0xed, 0x43, 0x85, 0xef, 0x26, 0x70, 0x73, 0x43,
6030	0xb0, 0xcc, 0x08, 0xd1, 0xe7, 0x70, 0x43, 0x88, 0xf7, 0xe6, 0xd9, 0x0b, 0x2f, 0x65, 0xdf, 0x9b,
6031	0x65, 0xbf, 0x36, 0xcc, 0x90, 0x22, 0x0b, 0x74, 0xc7, 0x67, 0x38, 0xa2, 0x27, 0x11, 0x65, 0x43,
6032	0x1c, 0x11, 0x4e, 0x0d, 0xfd, 0x55, 0x79, 0x53, 0x98, 0xcd, 0x19, 0xc7, 0x67, 0x66, 0xc2, 0x60,
6033	0x12, 0x4e, 0xd1, 0xe7, 0xb0, 0x2e, 0x48, 0xbd, 0x20, 0x38, 0x8d, 0x43, 0x7c, 0x42, 0x46, 0xae,
6034	0x77, 0x6e, 0xac, 0xcb, 0x98, 0x7e, 0xf3, 0x82, 0x9a, 0xe1, 0xb3, 0xb6, 0x44, 0xef, 0x4b, 0xf0,
6035	0x54, 0x68, 0x17, 0x9d, 0x69, 0x25, 0xfa, 0x19, 0xe4, 0x93, 0x35, 0xb3, 0xc0, 0x3b, 0x13, 0x61,
6036	0x80, 0x5e, 0x15, 0xe9, 0xe6, 0x9a, 0x5c, 0xa1, 0xc2, 0x23, 0x0b, 0xd6, 0xe7, 0x2a, 0xbd, 0xb1,
6037	0x91, 0x55, 0x80, 0xd2, 0x58, 0xea, 0x26, 0xf0, 0x46, 0x8a, 0x36, 0xf5, 0x60, 0x46, 0x82, 0x7a,
6038	0xa0, 0xdb, 0x1e, 0x25, 0x7e, 0x1c, 0x62, 0xd7, 0xe7, 0x34, 0x3a, 0x23, 0x9e, 0x71, 0xed, 0xbb,
6039	0x7a, 0xb2, 0xa8, 0x28, 0x5a, 0x8a, 0x01, 0x75, 0xe1, 0x5a, 0xac, 0xa2, 0x0f, 0xf7, 0x5d, 0xdf,
6040	0x49, 0xcb, 0xe5, 0x75, 0xc9, 0x7c, 0x27, 0x63, 0xcb, 0x35, 0xd7, 0x77, 0x54, 0x95, 0x44, 0xa9,
6041	0xe9, 0x0b, 0x19, 0xea, 0x80, 0xee, 0xf5, 0x31, 0x8b, 0xfb, 0x8c, 0xf2, 0x94, 0xec, 0x86, 0x24,
6042	0x7b, 0xe3, 0xa2, 0x72, 0x63, 0x49, 0xb0, 0xe2, 0x2c, 0x78, 0x53, 0x63, 0x74, 0x0c, 0x1b, 0x91,
6043	0xeb, 0x0f, 0xf0, 0x90, 0xb0, 0x21, 0xf6, 0xfa, 0x29, 0xe5, 0xcd, 0x97, 0x95, 0x73, 0xd3, 0xf5,
6044	0x07, 0x07, 0x84, 0x0d, 0xdb, 0xfd, 0x84, 0xe4, 0x60, 0xc1, 0xd4, 0xa3, 0x19, 0x19, 0x7a, 0x04,
6045	0x3a, 0x8f, 0x88, 0xcf, 0xc2, 0x20, 0xe2, 0x98, 0x05, 0xf6, 0x29, 0xe5, 0x86, 0x21, 0x59, 0xcb,
6046	0x19, 0xbb, 0xee, 0xa5, 0x50, 0x4b, 0x22, 0xcd, 0x22, 0x9f, 0x16, 0xa0, 0x1f, 0xc3, 0xf2, 0x88,
6047	0x72, 0xe2, 0x10, 0x4e, 0x8c, 0x5b, 0x92, 0x66, 0x33, 0x83, 0xe6, 0x91, 0x82, 0x98, 0x63, 0x30,
6048	0xfa, 0x1c, 0xd0, 0x38, 0xf5, 0x18, 0xf5, 0x54, 0xb4, 0x94, 0x64, 0x34, 0x57, 0xb2, 0xf7, 0xa7,
6049	0x7e, 0xd3, 0x5c, 0xb3, 0x52, 0x2b, 0x73, 0x3d, 0x9c, 0x15, 0x89, 0xef, 0x61, 0x07, 0xa3, 0x51,
6050	0xe0, 0x4f, 0x38, 0x6f, 0xf3, 0x65, 0xdf, 0xa3, 0x2e, 0xd1, 0xa9, 0x9b, 0xc4, 0x79, 0x35, 0x39,
6051	0x46, 0x65, 0xc8, 0x13, 0x8f, 0x63, 0xc6, 0x09, 0xc7, 0xf2, 0x28, 0xbf, 0x2d, 0x8e, 0x72, 0x73,
6052	0x95, 0x78, 0xdc, 0xe2, 0x84, 0x77, 0xc4, 0x31, 0x3e, 0x80, 0xdb, 0x6a, 0xce, 0xec, 0xba, 0x75,
6053	0x27, 0x33, 0x15, 0xd2, 0xca, 0x32, 0x5b, 0x58, 0x6e, 0x25, 0x5c, 0x19, 0x2a, 0x34, 0x80, 0xcd,
6054	0x71, 0xf4, 0x4e, 0x9c, 0xa0, 0xe9, 0x3c, 0x5b, 0x59, 0x15, 0x2c, 0x2d, 0xb6, 0x2f, 0x4a, 0xff,
6055	0x78, 0xa2, 0xf8, 0x22, 0x15, 0x3a, 0x82, 0x1d, 0xdb, 0x0b, 0x18, 0x9d, 0x98, 0x85, 0x61, 0xb1,
6056	0xbf, 0x80, 0x71, 0xac, 0x0e, 0xb6, 0x13, 0xe2, 0x7a, 0x71, 0x44, 0x8d, 0xbb, 0xdb, 0xda, 0xce,
6057	0xb2, 0xf9, 0xba, 0xc4, 0xbf, 0x60, 0x62, 0x5d, 0xff, 0x20, 0x60, 0x3c, 0x39, 0xdc, 0xf6, 0x13,
6058	0x28, 0x3a, 0x80, 0x7b, 0x4e, 0x44, 0x5c, 0x3f, 0x93, 0x36, 0xa2, 0xa3, 0x40, 0x24, 0xf9, 0xb6,
6059	0xe4, 0xbb, 0x23, 0x81, 0x73, 0x7c, 0x66, 0x02, 0x42, 0x6d, 0x28, 0x7a, 0x01, 0x71, 0x30, 0x61,
6060	0xcc, 0x1d, 0xf8, 0x23, 0xea, 0x73, 0xe3, 0x9e, 0xdc, 0x7d, 0x76, 0x13, 0xd5, 0x0e, 0x88, 0x53,
6061	0x1d, 0x43, 0xcd, 0x82, 0x37, 0x35, 0x46, 0x5f, 0xc0, 0x8d, 0x20, 0x72, 0x07, 0xae, 0x4f, 0x3c,
6062	0xec, 0x30, 0x3e, 0x11, 0x3a, 0x65, 0x49, 0xfa, 0xfd, 0xec, 0xd0, 0xe9, 0x2a, 0x9b, 0x06, 0xe3,
6063	0x13, 0xa9, 0xb7, 0x11, 0xcc, 0x8b, 0xd1, 0x97, 0x50, 0xa2, 0x4f, 0x39, 0xf5, 0x99, 0xf8, 0x5e,
6064	0x73, 0x01, 0xf2, 0xba, 0x2c, 0xb8, 0x0f, 0x2e, 0x68, 0xd6, 0x52, 0xbb, 0x99, 0x68, 0x68, 0xfa,
6065	0x3c, 0x3a, 0x37, 0x0d, 0x7a, 0x81, 0xba, 0x14, 0x83, 0x3e, 0xdb, 0xe7, 0xa1, 0x8f, 0x00, 0x64,
6066	0xaf, 0x98, 0x6c, 0x4e, 0x93, 0x9b, 0xbb, 0x9b, 0x11, 0x97, 0x09, 0xdc, 0x92, 0x77, 0x0e, 0x73,
6067	0x45, 0x34, 0x87, 0x89, 0xfd, 0x3d, 0x58, 0x63, 0x34, 0x3a, 0x73, 0x6d, 0x9a, 0x24, 0x43, 0x2e,
6068	0x49, 0x06, 0x25, 0x13, 0xc9, 0x50, 0x72, 0xe0, 0xce, 0x4b, 0x57, 0x8c, 0x74, 0x58, 0x3c, 0xa5,
6069	0xe7, 0x49, 0x4b, 0x6c, 0x8a, 0xbf, 0xe8, 0x87, 0x70, 0xe5, 0x4c, 0x74, 0x2b, 0x92, 0x6e, 0x75,
6070	0xef, 0xe6, 0x5c, 0x7d, 0xb7, 0x64, 0xbb, 0x6e, 0x26, 0xa8, 0xf7, 0x73, 0x3f, 0xd1, 0x4a, 0x7f,
6071	0x5b, 0x84, 0xc2, 0x74, 0x25, 0x45, 0x21, 0x14, 0x4f, 0x88, 0xe7, 0xf5, 0x89, 0x7d, 0x9a, 0xf6,
6072	0x7d, 0x9a, 0xac, 0x2a, 0x3f, 0xbd, 0x4c, 0x21, 0x1e, 0x0f, 0xf7, 0x15, 0x47, 0x46, 0x53, 0x58,
6073	0x38, 0x99, 0xd2, 0xa1, 0x8f, 0xa0, 0xe0, 0xd0, 0x13, 0x12, 0x8b, 0xfa, 0x20, 0x6d, 0x5f, 0xb5,
6074	0x81, 0xbc, 0x82, 0x27, 0x33, 0xa1, 0x2f, 0x40, 0x57, 0x07, 0x47, 0x52, 0x08, 0x83, 0x88, 0x19,
6075	0x8b, 0x32, 0x14, 0xde, 0xfd, 0x4e, 0x4b, 0xb6, 0x94, 0xb5, 0x59, 0x64, 0x53, 0x63, 0x86, 0xf6,
6076	0xe0, 0xba, 0x17, 0xd8, 0xc4, 0x73, 0xf9, 0x39, 0x7e, 0x42, 0xdd, 0xc1, 0x90, 0x63, 0xf2, 0x84,
6077	0x44, 0x54, 0xf6, 0xf2, 0xcb, 0xe6, 0x46, 0xaa, 0x3c, 0x96, 0xba, 0xaa, 0x50, 0x95, 0xde, 0x02,
6078	0x7d, 0x96, 0x18, 0x21, 0x58, 0x3a, 0xa5, 0xe7, 0xcc, 0xd0, 0xb6, 0x17, 0x77, 0x56, 0x4c, 0xf9,
6079	0xbf, 0xdc, 0x85, 0x1b, 0xd9, 0x3e, 0x43, 0x45, 0x58, 0xed, 0x74, 0xf1, 0x7e, 0xb5, 0xdd, 0xae,
6080	0x55, 0xeb, 0x9f, 0xe8, 0x0b, 0x48, 0x87, 0xb5, 0x6a, 0xe7, 0x53, 0xdc, 0xec, 0x34, 0x0e, 0xbb,
6081	0xad, 0x4e, 0x4f, 0xd7, 0x10, 0x82, 0x42, 0xa3, 0xb9, 0x5f, 0x3d, 0x6a, 0xf7, 0xb0, 0x75, 0x54,
6082	0xb3, 0x9a, 0x3d, 0x3d, 0x57, 0xfa, 0x5d, 0x0e, 0xf4, 0xd9, 0xa3, 0x0c, 0x3d, 0x86, 0xf5, 0x91,
6083	0xeb, 0xbb, 0xa3, 0x78, 0x84, 0xe5, 0xb9, 0xc8, 0xdc, 0x67, 0x54, 0x05, 0x6e, 0x76, 0xe7, 0xfb,
6084	0xde, 0x3b, 0xb2, 0xf3, 0xad, 0xad, 0x89, 0x0f, 0x77, 0x75, 0xef, 0x8a, 0xf1, 0xd5, 0x57, 0x5f,
6085	0x2d, 0x99, 0x45, 0x45, 0x22, 0xf8, 0x2d, 0xf7, 0x19, 0x45, 0xbf, 0x84, 0xbc, 0x43, 0xc3, 0x88,
6086	0xda, 0x84, 0x53, 0x07, 0x9f, 0xbd, 0xad, 0x3e, 0xdd, 0x83, 0xcb, 0x9d, 0xb0, 0x95, 0xc6, 0xd8,
6087	0xf6, 0xf1, 0xdb, 0xb2, 0xef, 0x5f, 0x73, 0x26, 0x24, 0xa5, 0x36, 0xac, 0x4d, 0x22, 0xd0, 0x07,
6088	0xb0, 0x16, 0x33, 0x8a, 0x19, 0x77, 0xe4, 0xc1, 0xae, 0x36, 0x50, 0x9a, 0xdb, 0x40, 0x2d, 0x08,
6089	0xbc, 0xa4, 0x71, 0x87, 0x98, 0x51, 0x8b, 0x3b, 0x62, 0xd2, 0xd2, 0x87, 0xb0, 0x91, 0x51, 0x6a,
6090	0xd0, 0x5b, 0x50, 0x14, 0xa4, 0xf2, 0xcc, 0x19, 0x52, 0xe2, 0xd0, 0x48, 0xf2, 0x2e, 0x9b, 0xf9,
6091	0x98, 0x51, 0x71, 0x7c, 0x1c, 0x48, 0x61, 0xe9, 0x3f, 0x4b, 0x50, 0x98, 0x3e, 0xe5, 0xd0, 0x27,
6092	0x70, 0x33, 0xa9, 0xe2, 0xe7, 0x38, 0x24, 0xbe, 0x6b, 0x63, 0x3e, 0x14, 0xdd, 0x66, 0xe0, 0x39,
6093	0x6a, 0x69, 0x1b, 0xca, 0x0f, 0xe2, 0x86, 0x59, 0x39, 0x4c, 0xae, 0xe2, 0xe6, 0x75, 0x65, 0x73,
6094	0x28, 0x4c, 0x7a, 0xa9, 0x05, 0x72, 0xe1, 0xda, 0xb3, 0xc0, 0xa7, 0x49, 0x64, 0x4d, 0xd4, 0xce,
6095	0xc4, 0xa3, 0xef, 0x5d, 0xe6, 0xd8, 0xad, 0xfc, 0x22, 0xf0, 0xa9, 0x0c, 0xbf, 0x89, 0x42, 0xba,
6096	0xfe, 0x6c, 0x56, 0x88, 0x7e, 0x0d, 0x9b, 0x33, 0xf1, 0x4c, 0x9d, 0x89, 0x19, 0x93, 0x4b, 0xef,
6097	0x87, 0x97, 0x9a, 0xb1, 0x3d, 0x15, 0xfa, 0xd4, 0x99, 0x98, 0xd8, 0xf0, 0x2e, 0xd0, 0xa1, 0x16,
6098	0x6c, 0xc4, 0xa1, 0x43, 0x38, 0xc5, 0x23, 0x1a, 0x0d, 0x28, 0x7e, 0xe2, 0xfa, 0x4e, 0xf0, 0xe4,
6099	0x95, 0x37, 0x63, 0x73, 0x3d, 0xb1, 0x7a, 0x24, 0x8c, 0x8e, 0xa5, 0x4d, 0xe9, 0x0f, 0x1a, 0xac,
6100	0xcf, 0xed, 0x1a, 0x7d, 0x00, 0xc5, 0x28, 0x88, 0xb9, 0x88, 0x74, 0xea, 0x93, 0xbe, 0x47, 0x5f,
6101	0xfa, 0x41, 0x0a, 0x0a, 0xdb, 0x4c, 0xa0, 0x68, 0x1f, 0xf4, 0x91, 0x38, 0x5d, 0xd5, 0x53, 0x80,
6102	0xcc, 0x95, 0xdc, 0xab, 0x73, 0xc5, 0x2c, 0x8c, 0x5c, 0x5f, 0xb9, 0x49, 0x24, 0x47, 0xa9, 0x04,
6103	0xc6, 0x45, 0xee, 0xa9, 0x6d, 0xc2, 0xad, 0xf1, 0x27, 0x48, 0xdf, 0xa6, 0x42, 0x6a, 0xbb, 0x27,
6104	0x2e, 0x8d, 0xca, 0xc7, 0x90, 0x9f, 0x7a, 0xae, 0x40, 0x00, 0xaf, 0x59, 0xbd, 0x6a, 0xaf, 0x55,
6105	0xd7, 0x17, 0x50, 0x01, 0xc0, 0xea, 0x99, 0xad, 0x7a, 0x0f, 0x37, 0x3a, 0x96, 0xae, 0x89, 0x32,
6106	0xd1, 0xee, 0x3e, 0x6c, 0xd5, 0xab, 0x6d, 0x29, 0xc8, 0xa1, 0xab, 0xb0, 0xd8, 0x6c, 0x58, 0xfa,
6107	0xa2, 0xa8, 0x17, 0x5d, 0xb3, 0xf5, 0xb0, 0xd5, 0x11, 0x2a, 0xab, 0xa7, 0x2f, 0x95, 0x7f, 0x05,
6108	0xcb, 0xe9, 0x3d, 0x5d, 0xd8, 0x99, 0xdd, 0xa3, 0x4e, 0x03, 0x9b, 0xdd, 0x5a, 0xab, 0xa3, 0x2f,
6109	0xa0, 0x75, 0xc8, 0xb7, 0x9b, 0x55, 0xab, 0x87, 0xcd, 0xe6, 0xcf, 0x8f, 0x9a, 0x96, 0xa8, 0x2f,
6110	0x79, 0x58, 0x31, 0x5b, 0x9d, 0x87, 0xf8, 0xa0, 0x6a, 0x1d, 0xe8, 0x39, 0xb1, 0x0c, 0xb3, 0xda,
6111	0x69, 0x74, 0x1f, 0xe9, 0x8b, 0x68, 0x03, 0x8a, 0x93, 0xe4, 0xb8, 0x5d, 0xd3, 0x97, 0x04, 0xe0,
6112	0x51, 0xf5, 0x61, 0xbb, 0xf9, 0x58, 0xbf, 0x52, 0x7e, 0x17, 0x8a, 0x33, 0xf7, 0x27, 0xb4, 0x0c,
6113	0x4b, 0xd5, 0xa3, 0x5e, 0x57, 0x5f, 0x40, 0xab, 0x70, 0xf5, 0xf1, 0x3b, 0xb8, 0xdb, 0x69, 0x7f,
6114	0xaa, 0x6b, 0x72, 0xf0, 0x5e, 0x32, 0xc8, 0x95, 0x7b, 0x60, 0x5c, 0xd4, 0xa8, 0xa2, 0x4d, 0xb8,
6115	0x79, 0x64, 0x35, 0x71, 0xbd, 0xdb, 0xd9, 0x6f, 0x3d, 0x3c, 0x32, 0x9b, 0x0d, 0x7c, 0x68, 0x76,
6116	0x7b, 0xdd, 0x7a, 0xb7, 0xad, 0x2f, 0xa4, 0xca, 0x46, 0xf7, 0xb8, 0x63, 0xf5, 0xcc, 0x66, 0xf5,
6117	0xd1, 0x0b, 0xa5, 0x56, 0x5b, 0x95, 0xef, 0x18, 0x89, 0xa3, 0x3f, 0x5e, 0x5a, 0x5e, 0xd3, 0xf3,
6118	0x1f, 0x2f, 0x2d, 0x17, 0x75, 0xbd, 0x7c, 0x0c, 0xe8, 0x68, 0xfe, 0x3a, 0x52, 0x85, 0x42, 0xf2,
6119	0x52, 0x88, 0xd5, 0xa3, 0xe4, 0xb8, 0xd4, 0x5c, 0x7c, 0x99, 0xcb, 0x27, 0x16, 0x6a, 0x58, 0x26,
6120	0x70, 0xeb, 0xc2, 0x9e, 0x11, 0x35, 0x20, 0xcf, 0xed, 0x10, 0x9f, 0x52, 0x1a, 0x12, 0xcf, 0x3d,
6121	0xa3, 0x2f, 0xe9, 0x21, 0x7a, 0x76, 0xf8, 0x49, 0x0a, 0x33, 0xd7, 0xf8, 0xc4, 0x68, 0xef, 0x1f,
6122	0x39, 0xb8, 0xa9, 0x7c, 0x35, 0x0e, 0x17, 0x2b, 0xe9, 0x21, 0xd0, 0x31, 0x14, 0xac, 0x64, 0xf2,
6123	0x04, 0xc0, 0xd0, 0xcc, 0xa3, 0xc9, 0xd8, 0x42, 0xbd, 0x6b, 0x94, 0xee, 0x5e, 0xa8, 0x67, 0x61,
6124	0xe0, 0x33, 0x5a, 0x5e, 0xd8, 0xd1, 0x7e, 0xa4, 0xa1, 0x08, 0x36, 0x5a, 0xbe, 0x1d, 0x51, 0xd1,
6125	0xf1, 0x11, 0x6f, 0xcc, 0x3e, 0xd3, 0xdb, 0x4d, 0x40, 0xe6, 0x26, 0xba, 0x7f, 0x19, 0xe8, 0xd4,
6126	0x9c, 0x0c, 0xf2, 0xfb, 0x94, 0xdb, 0xc3, 0xff, 0xdf, 0x5e, 0xee, 0x7d, 0xfd, 0xf7, 0x6f, 0x7f,
6127	0x9b, 0xdb, 0x2c, 0xdf, 0x98, 0x7a, 0xf9, 0x7d, 0x5f, 0xa5, 0x3c, 0x7b, 0x5f, 0xbb, 0x5f, 0xdb,
6128	0xf8, 0xe3, 0xf3, 0x2d, 0xed, 0x9b, 0xe7, 0x5b, 0xda, 0x5f, 0x9f, 0x6f, 0x69, 0xff, 0x7e, 0xbe,
6129	0xa5, 0xfd, 0x46, 0xd3, 0xfa, 0xaf, 0xc9, 0xc4, 0x7f, 0xf0, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff,
6130	0x1a, 0x9e, 0x33, 0x67, 0xe5, 0x16, 0x00, 0x00,
6131}
6132