gitee.com/ks-custle/core-gm@v0.0.0-20230922171213-b83bdd97b62c/go-control-plane/envoy/config/route/v3/route_components.pb.go (about) 1 // Code generated by protoc-gen-go. DO NOT EDIT. 2 // versions: 3 // protoc-gen-go v1.25.0 4 // protoc v3.16.0 5 // source: envoy/config/route/v3/route_components.proto 6 7 package envoy_config_route_v3 8 9 import ( 10 _ "github.com/cncf/xds/go/udpa/annotations" 11 _ "gitee.com/ks-custle/core-gm/go-control-plane/envoy/annotations" 12 v3 "gitee.com/ks-custle/core-gm/go-control-plane/envoy/config/core/v3" 13 v31 "gitee.com/ks-custle/core-gm/go-control-plane/envoy/type/matcher/v3" 14 v34 "gitee.com/ks-custle/core-gm/go-control-plane/envoy/type/metadata/v3" 15 v33 "gitee.com/ks-custle/core-gm/go-control-plane/envoy/type/tracing/v3" 16 v32 "gitee.com/ks-custle/core-gm/go-control-plane/envoy/type/v3" 17 _ "github.com/envoyproxy/protoc-gen-validate/validate" 18 proto "github.com/golang/protobuf/proto" 19 any "github.com/golang/protobuf/ptypes/any" 20 duration "github.com/golang/protobuf/ptypes/duration" 21 _struct "github.com/golang/protobuf/ptypes/struct" 22 wrappers "github.com/golang/protobuf/ptypes/wrappers" 23 protoreflect "google.golang.org/protobuf/reflect/protoreflect" 24 protoimpl "google.golang.org/protobuf/runtime/protoimpl" 25 reflect "reflect" 26 sync "sync" 27 ) 28 29 const ( 30 // Verify that this generated code is sufficiently up-to-date. 31 _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) 32 // Verify that runtime/protoimpl is sufficiently up-to-date. 33 _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) 34 ) 35 36 // This is a compile-time assertion that a sufficiently up-to-date version 37 // of the legacy proto package is being used. 38 const _ = proto.ProtoPackageIsVersion4 39 40 type VirtualHost_TlsRequirementType int32 41 42 const ( 43 // No TLS requirement for the virtual host. 44 VirtualHost_NONE VirtualHost_TlsRequirementType = 0 45 // External requests must use TLS. If a request is external and it is not 46 // using TLS, a 301 redirect will be sent telling the client to use HTTPS. 47 VirtualHost_EXTERNAL_ONLY VirtualHost_TlsRequirementType = 1 48 // All requests must use TLS. If a request is not using TLS, a 301 redirect 49 // will be sent telling the client to use HTTPS. 50 VirtualHost_ALL VirtualHost_TlsRequirementType = 2 51 ) 52 53 // Enum value maps for VirtualHost_TlsRequirementType. 54 var ( 55 VirtualHost_TlsRequirementType_name = map[int32]string{ 56 0: "NONE", 57 1: "EXTERNAL_ONLY", 58 2: "ALL", 59 } 60 VirtualHost_TlsRequirementType_value = map[string]int32{ 61 "NONE": 0, 62 "EXTERNAL_ONLY": 1, 63 "ALL": 2, 64 } 65 ) 66 67 func (x VirtualHost_TlsRequirementType) Enum() *VirtualHost_TlsRequirementType { 68 p := new(VirtualHost_TlsRequirementType) 69 *p = x 70 return p 71 } 72 73 func (x VirtualHost_TlsRequirementType) String() string { 74 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 75 } 76 77 func (VirtualHost_TlsRequirementType) Descriptor() protoreflect.EnumDescriptor { 78 return file_envoy_config_route_v3_route_components_proto_enumTypes[0].Descriptor() 79 } 80 81 func (VirtualHost_TlsRequirementType) Type() protoreflect.EnumType { 82 return &file_envoy_config_route_v3_route_components_proto_enumTypes[0] 83 } 84 85 func (x VirtualHost_TlsRequirementType) Number() protoreflect.EnumNumber { 86 return protoreflect.EnumNumber(x) 87 } 88 89 // Deprecated: Use VirtualHost_TlsRequirementType.Descriptor instead. 90 func (VirtualHost_TlsRequirementType) EnumDescriptor() ([]byte, []int) { 91 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{0, 0} 92 } 93 94 type RouteAction_ClusterNotFoundResponseCode int32 95 96 const ( 97 // HTTP status code - 503 Service Unavailable. 98 RouteAction_SERVICE_UNAVAILABLE RouteAction_ClusterNotFoundResponseCode = 0 99 // HTTP status code - 404 Not Found. 100 RouteAction_NOT_FOUND RouteAction_ClusterNotFoundResponseCode = 1 101 ) 102 103 // Enum value maps for RouteAction_ClusterNotFoundResponseCode. 104 var ( 105 RouteAction_ClusterNotFoundResponseCode_name = map[int32]string{ 106 0: "SERVICE_UNAVAILABLE", 107 1: "NOT_FOUND", 108 } 109 RouteAction_ClusterNotFoundResponseCode_value = map[string]int32{ 110 "SERVICE_UNAVAILABLE": 0, 111 "NOT_FOUND": 1, 112 } 113 ) 114 115 func (x RouteAction_ClusterNotFoundResponseCode) Enum() *RouteAction_ClusterNotFoundResponseCode { 116 p := new(RouteAction_ClusterNotFoundResponseCode) 117 *p = x 118 return p 119 } 120 121 func (x RouteAction_ClusterNotFoundResponseCode) String() string { 122 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 123 } 124 125 func (RouteAction_ClusterNotFoundResponseCode) Descriptor() protoreflect.EnumDescriptor { 126 return file_envoy_config_route_v3_route_components_proto_enumTypes[1].Descriptor() 127 } 128 129 func (RouteAction_ClusterNotFoundResponseCode) Type() protoreflect.EnumType { 130 return &file_envoy_config_route_v3_route_components_proto_enumTypes[1] 131 } 132 133 func (x RouteAction_ClusterNotFoundResponseCode) Number() protoreflect.EnumNumber { 134 return protoreflect.EnumNumber(x) 135 } 136 137 // Deprecated: Use RouteAction_ClusterNotFoundResponseCode.Descriptor instead. 138 func (RouteAction_ClusterNotFoundResponseCode) EnumDescriptor() ([]byte, []int) { 139 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{6, 0} 140 } 141 142 // Configures :ref:`internal redirect <arch_overview_internal_redirects>` behavior. 143 // [#next-major-version: remove this definition - it's defined in the InternalRedirectPolicy message.] 144 // 145 // Deprecated: Do not use. 146 type RouteAction_InternalRedirectAction int32 147 148 const ( 149 RouteAction_PASS_THROUGH_INTERNAL_REDIRECT RouteAction_InternalRedirectAction = 0 150 RouteAction_HANDLE_INTERNAL_REDIRECT RouteAction_InternalRedirectAction = 1 151 ) 152 153 // Enum value maps for RouteAction_InternalRedirectAction. 154 var ( 155 RouteAction_InternalRedirectAction_name = map[int32]string{ 156 0: "PASS_THROUGH_INTERNAL_REDIRECT", 157 1: "HANDLE_INTERNAL_REDIRECT", 158 } 159 RouteAction_InternalRedirectAction_value = map[string]int32{ 160 "PASS_THROUGH_INTERNAL_REDIRECT": 0, 161 "HANDLE_INTERNAL_REDIRECT": 1, 162 } 163 ) 164 165 func (x RouteAction_InternalRedirectAction) Enum() *RouteAction_InternalRedirectAction { 166 p := new(RouteAction_InternalRedirectAction) 167 *p = x 168 return p 169 } 170 171 func (x RouteAction_InternalRedirectAction) String() string { 172 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 173 } 174 175 func (RouteAction_InternalRedirectAction) Descriptor() protoreflect.EnumDescriptor { 176 return file_envoy_config_route_v3_route_components_proto_enumTypes[2].Descriptor() 177 } 178 179 func (RouteAction_InternalRedirectAction) Type() protoreflect.EnumType { 180 return &file_envoy_config_route_v3_route_components_proto_enumTypes[2] 181 } 182 183 func (x RouteAction_InternalRedirectAction) Number() protoreflect.EnumNumber { 184 return protoreflect.EnumNumber(x) 185 } 186 187 // Deprecated: Use RouteAction_InternalRedirectAction.Descriptor instead. 188 func (RouteAction_InternalRedirectAction) EnumDescriptor() ([]byte, []int) { 189 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{6, 1} 190 } 191 192 type RetryPolicy_ResetHeaderFormat int32 193 194 const ( 195 RetryPolicy_SECONDS RetryPolicy_ResetHeaderFormat = 0 196 RetryPolicy_UNIX_TIMESTAMP RetryPolicy_ResetHeaderFormat = 1 197 ) 198 199 // Enum value maps for RetryPolicy_ResetHeaderFormat. 200 var ( 201 RetryPolicy_ResetHeaderFormat_name = map[int32]string{ 202 0: "SECONDS", 203 1: "UNIX_TIMESTAMP", 204 } 205 RetryPolicy_ResetHeaderFormat_value = map[string]int32{ 206 "SECONDS": 0, 207 "UNIX_TIMESTAMP": 1, 208 } 209 ) 210 211 func (x RetryPolicy_ResetHeaderFormat) Enum() *RetryPolicy_ResetHeaderFormat { 212 p := new(RetryPolicy_ResetHeaderFormat) 213 *p = x 214 return p 215 } 216 217 func (x RetryPolicy_ResetHeaderFormat) String() string { 218 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 219 } 220 221 func (RetryPolicy_ResetHeaderFormat) Descriptor() protoreflect.EnumDescriptor { 222 return file_envoy_config_route_v3_route_components_proto_enumTypes[3].Descriptor() 223 } 224 225 func (RetryPolicy_ResetHeaderFormat) Type() protoreflect.EnumType { 226 return &file_envoy_config_route_v3_route_components_proto_enumTypes[3] 227 } 228 229 func (x RetryPolicy_ResetHeaderFormat) Number() protoreflect.EnumNumber { 230 return protoreflect.EnumNumber(x) 231 } 232 233 // Deprecated: Use RetryPolicy_ResetHeaderFormat.Descriptor instead. 234 func (RetryPolicy_ResetHeaderFormat) EnumDescriptor() ([]byte, []int) { 235 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{7, 0} 236 } 237 238 type RedirectAction_RedirectResponseCode int32 239 240 const ( 241 // Moved Permanently HTTP Status Code - 301. 242 RedirectAction_MOVED_PERMANENTLY RedirectAction_RedirectResponseCode = 0 243 // Found HTTP Status Code - 302. 244 RedirectAction_FOUND RedirectAction_RedirectResponseCode = 1 245 // See Other HTTP Status Code - 303. 246 RedirectAction_SEE_OTHER RedirectAction_RedirectResponseCode = 2 247 // Temporary Redirect HTTP Status Code - 307. 248 RedirectAction_TEMPORARY_REDIRECT RedirectAction_RedirectResponseCode = 3 249 // Permanent Redirect HTTP Status Code - 308. 250 RedirectAction_PERMANENT_REDIRECT RedirectAction_RedirectResponseCode = 4 251 ) 252 253 // Enum value maps for RedirectAction_RedirectResponseCode. 254 var ( 255 RedirectAction_RedirectResponseCode_name = map[int32]string{ 256 0: "MOVED_PERMANENTLY", 257 1: "FOUND", 258 2: "SEE_OTHER", 259 3: "TEMPORARY_REDIRECT", 260 4: "PERMANENT_REDIRECT", 261 } 262 RedirectAction_RedirectResponseCode_value = map[string]int32{ 263 "MOVED_PERMANENTLY": 0, 264 "FOUND": 1, 265 "SEE_OTHER": 2, 266 "TEMPORARY_REDIRECT": 3, 267 "PERMANENT_REDIRECT": 4, 268 } 269 ) 270 271 func (x RedirectAction_RedirectResponseCode) Enum() *RedirectAction_RedirectResponseCode { 272 p := new(RedirectAction_RedirectResponseCode) 273 *p = x 274 return p 275 } 276 277 func (x RedirectAction_RedirectResponseCode) String() string { 278 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 279 } 280 281 func (RedirectAction_RedirectResponseCode) Descriptor() protoreflect.EnumDescriptor { 282 return file_envoy_config_route_v3_route_components_proto_enumTypes[4].Descriptor() 283 } 284 285 func (RedirectAction_RedirectResponseCode) Type() protoreflect.EnumType { 286 return &file_envoy_config_route_v3_route_components_proto_enumTypes[4] 287 } 288 289 func (x RedirectAction_RedirectResponseCode) Number() protoreflect.EnumNumber { 290 return protoreflect.EnumNumber(x) 291 } 292 293 // Deprecated: Use RedirectAction_RedirectResponseCode.Descriptor instead. 294 func (RedirectAction_RedirectResponseCode) EnumDescriptor() ([]byte, []int) { 295 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{9, 0} 296 } 297 298 type RateLimit_Action_MetaData_Source int32 299 300 const ( 301 // Query :ref:`dynamic metadata <well_known_dynamic_metadata>` 302 RateLimit_Action_MetaData_DYNAMIC RateLimit_Action_MetaData_Source = 0 303 // Query :ref:`route entry metadata <envoy_v3_api_field_config.route.v3.Route.metadata>` 304 RateLimit_Action_MetaData_ROUTE_ENTRY RateLimit_Action_MetaData_Source = 1 305 ) 306 307 // Enum value maps for RateLimit_Action_MetaData_Source. 308 var ( 309 RateLimit_Action_MetaData_Source_name = map[int32]string{ 310 0: "DYNAMIC", 311 1: "ROUTE_ENTRY", 312 } 313 RateLimit_Action_MetaData_Source_value = map[string]int32{ 314 "DYNAMIC": 0, 315 "ROUTE_ENTRY": 1, 316 } 317 ) 318 319 func (x RateLimit_Action_MetaData_Source) Enum() *RateLimit_Action_MetaData_Source { 320 p := new(RateLimit_Action_MetaData_Source) 321 *p = x 322 return p 323 } 324 325 func (x RateLimit_Action_MetaData_Source) String() string { 326 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 327 } 328 329 func (RateLimit_Action_MetaData_Source) Descriptor() protoreflect.EnumDescriptor { 330 return file_envoy_config_route_v3_route_components_proto_enumTypes[5].Descriptor() 331 } 332 333 func (RateLimit_Action_MetaData_Source) Type() protoreflect.EnumType { 334 return &file_envoy_config_route_v3_route_components_proto_enumTypes[5] 335 } 336 337 func (x RateLimit_Action_MetaData_Source) Number() protoreflect.EnumNumber { 338 return protoreflect.EnumNumber(x) 339 } 340 341 // Deprecated: Use RateLimit_Action_MetaData_Source.Descriptor instead. 342 func (RateLimit_Action_MetaData_Source) EnumDescriptor() ([]byte, []int) { 343 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{15, 0, 7, 0} 344 } 345 346 // The top level element in the routing configuration is a virtual host. Each virtual host has 347 // a logical name as well as a set of domains that get routed to it based on the incoming request's 348 // host header. This allows a single listener to service multiple top level domain path trees. Once 349 // a virtual host is selected based on the domain, the routes are processed in order to see which 350 // upstream cluster to route to or whether to perform a redirect. 351 // [#next-free-field: 21] 352 type VirtualHost struct { 353 state protoimpl.MessageState 354 sizeCache protoimpl.SizeCache 355 unknownFields protoimpl.UnknownFields 356 357 // The logical name of the virtual host. This is used when emitting certain 358 // statistics but is not relevant for routing. 359 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 360 // A list of domains (host/authority header) that will be matched to this 361 // virtual host. Wildcard hosts are supported in the suffix or prefix form. 362 // 363 // Domain search order: 364 // 1. Exact domain names: ``www.foo.com``. 365 // 2. Suffix domain wildcards: ``*.foo.com`` or ``*-bar.foo.com``. 366 // 3. Prefix domain wildcards: ``foo.*`` or ``foo-*``. 367 // 4. Special wildcard ``*`` matching any domain. 368 // 369 // .. note:: 370 // 371 // The wildcard will not match the empty string. 372 // e.g. ``*-bar.foo.com`` will match ``baz-bar.foo.com`` but not ``-bar.foo.com``. 373 // The longest wildcards match first. 374 // Only a single virtual host in the entire route configuration can match on ``*``. A domain 375 // must be unique across all virtual hosts or the config will fail to load. 376 // 377 // Domains cannot contain control characters. This is validated by the well_known_regex HTTP_HEADER_VALUE. 378 Domains []string `protobuf:"bytes,2,rep,name=domains,proto3" json:"domains,omitempty"` 379 // The list of routes that will be matched, in order, for incoming requests. 380 // The first route that matches will be used. 381 Routes []*Route `protobuf:"bytes,3,rep,name=routes,proto3" json:"routes,omitempty"` 382 // Specifies the type of TLS enforcement the virtual host expects. If this option is not 383 // specified, there is no TLS requirement for the virtual host. 384 RequireTls VirtualHost_TlsRequirementType `protobuf:"varint,4,opt,name=require_tls,json=requireTls,proto3,enum=envoy.config.route.v3.VirtualHost_TlsRequirementType" json:"require_tls,omitempty"` 385 // A list of virtual clusters defined for this virtual host. Virtual clusters 386 // are used for additional statistics gathering. 387 VirtualClusters []*VirtualCluster `protobuf:"bytes,5,rep,name=virtual_clusters,json=virtualClusters,proto3" json:"virtual_clusters,omitempty"` 388 // Specifies a set of rate limit configurations that will be applied to the 389 // virtual host. 390 RateLimits []*RateLimit `protobuf:"bytes,6,rep,name=rate_limits,json=rateLimits,proto3" json:"rate_limits,omitempty"` 391 // Specifies a list of HTTP headers that should be added to each request 392 // handled by this virtual host. Headers specified at this level are applied 393 // after headers from enclosed :ref:`envoy_v3_api_msg_config.route.v3.Route` and before headers from the 394 // enclosing :ref:`envoy_v3_api_msg_config.route.v3.RouteConfiguration`. For more information, including 395 // details on header value syntax, see the documentation on :ref:`custom request headers 396 // <config_http_conn_man_headers_custom_request_headers>`. 397 RequestHeadersToAdd []*v3.HeaderValueOption `protobuf:"bytes,7,rep,name=request_headers_to_add,json=requestHeadersToAdd,proto3" json:"request_headers_to_add,omitempty"` 398 // Specifies a list of HTTP headers that should be removed from each request 399 // handled by this virtual host. 400 RequestHeadersToRemove []string `protobuf:"bytes,13,rep,name=request_headers_to_remove,json=requestHeadersToRemove,proto3" json:"request_headers_to_remove,omitempty"` 401 // Specifies a list of HTTP headers that should be added to each response 402 // handled by this virtual host. Headers specified at this level are applied 403 // after headers from enclosed :ref:`envoy_v3_api_msg_config.route.v3.Route` and before headers from the 404 // enclosing :ref:`envoy_v3_api_msg_config.route.v3.RouteConfiguration`. For more information, including 405 // details on header value syntax, see the documentation on :ref:`custom request headers 406 // <config_http_conn_man_headers_custom_request_headers>`. 407 ResponseHeadersToAdd []*v3.HeaderValueOption `protobuf:"bytes,10,rep,name=response_headers_to_add,json=responseHeadersToAdd,proto3" json:"response_headers_to_add,omitempty"` 408 // Specifies a list of HTTP headers that should be removed from each response 409 // handled by this virtual host. 410 ResponseHeadersToRemove []string `protobuf:"bytes,11,rep,name=response_headers_to_remove,json=responseHeadersToRemove,proto3" json:"response_headers_to_remove,omitempty"` 411 // Indicates that the virtual host has a CORS policy. 412 Cors *CorsPolicy `protobuf:"bytes,8,opt,name=cors,proto3" json:"cors,omitempty"` 413 // The per_filter_config field can be used to provide virtual host-specific 414 // configurations for filters. The key should match the filter name, such as 415 // *envoy.filters.http.buffer* for the HTTP buffer filter. Use of this field is filter 416 // specific; see the :ref:`HTTP filter documentation <config_http_filters>` 417 // for if and how it is utilized. 418 // [#comment: An entry's value may be wrapped in a 419 // :ref:`FilterConfig<envoy_v3_api_msg_config.route.v3.FilterConfig>` 420 // message to specify additional options.] 421 TypedPerFilterConfig map[string]*any.Any `protobuf:"bytes,15,rep,name=typed_per_filter_config,json=typedPerFilterConfig,proto3" json:"typed_per_filter_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 422 // Decides whether the :ref:`x-envoy-attempt-count 423 // <config_http_filters_router_x-envoy-attempt-count>` header should be included 424 // in the upstream request. Setting this option will cause it to override any existing header 425 // value, so in the case of two Envoys on the request path with this option enabled, the upstream 426 // will see the attempt count as perceived by the second Envoy. Defaults to false. 427 // This header is unaffected by the 428 // :ref:`suppress_envoy_headers 429 // <envoy_v3_api_field_extensions.filters.http.router.v3.Router.suppress_envoy_headers>` flag. 430 // 431 // [#next-major-version: rename to include_attempt_count_in_request.] 432 IncludeRequestAttemptCount bool `protobuf:"varint,14,opt,name=include_request_attempt_count,json=includeRequestAttemptCount,proto3" json:"include_request_attempt_count,omitempty"` 433 // Decides whether the :ref:`x-envoy-attempt-count 434 // <config_http_filters_router_x-envoy-attempt-count>` header should be included 435 // in the downstream response. Setting this option will cause the router to override any existing header 436 // value, so in the case of two Envoys on the request path with this option enabled, the downstream 437 // will see the attempt count as perceived by the Envoy closest upstream from itself. Defaults to false. 438 // This header is unaffected by the 439 // :ref:`suppress_envoy_headers 440 // <envoy_v3_api_field_extensions.filters.http.router.v3.Router.suppress_envoy_headers>` flag. 441 IncludeAttemptCountInResponse bool `protobuf:"varint,19,opt,name=include_attempt_count_in_response,json=includeAttemptCountInResponse,proto3" json:"include_attempt_count_in_response,omitempty"` 442 // Indicates the retry policy for all routes in this virtual host. Note that setting a 443 // route level entry will take precedence over this config and it'll be treated 444 // independently (e.g.: values are not inherited). 445 RetryPolicy *RetryPolicy `protobuf:"bytes,16,opt,name=retry_policy,json=retryPolicy,proto3" json:"retry_policy,omitempty"` 446 // [#not-implemented-hide:] 447 // Specifies the configuration for retry policy extension. Note that setting a route level entry 448 // will take precedence over this config and it'll be treated independently (e.g.: values are not 449 // inherited). :ref:`Retry policy <envoy_v3_api_field_config.route.v3.VirtualHost.retry_policy>` should not be 450 // set if this field is used. 451 RetryPolicyTypedConfig *any.Any `protobuf:"bytes,20,opt,name=retry_policy_typed_config,json=retryPolicyTypedConfig,proto3" json:"retry_policy_typed_config,omitempty"` 452 // Indicates the hedge policy for all routes in this virtual host. Note that setting a 453 // route level entry will take precedence over this config and it'll be treated 454 // independently (e.g.: values are not inherited). 455 HedgePolicy *HedgePolicy `protobuf:"bytes,17,opt,name=hedge_policy,json=hedgePolicy,proto3" json:"hedge_policy,omitempty"` 456 // The maximum bytes which will be buffered for retries and shadowing. 457 // If set and a route-specific limit is not set, the bytes actually buffered will be the minimum 458 // value of this and the listener per_connection_buffer_limit_bytes. 459 PerRequestBufferLimitBytes *wrappers.UInt32Value `protobuf:"bytes,18,opt,name=per_request_buffer_limit_bytes,json=perRequestBufferLimitBytes,proto3" json:"per_request_buffer_limit_bytes,omitempty"` 460 // Deprecated: Do not use. 461 HiddenEnvoyDeprecatedPerFilterConfig map[string]*_struct.Struct `protobuf:"bytes,12,rep,name=hidden_envoy_deprecated_per_filter_config,json=hiddenEnvoyDeprecatedPerFilterConfig,proto3" json:"hidden_envoy_deprecated_per_filter_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 462 } 463 464 func (x *VirtualHost) Reset() { 465 *x = VirtualHost{} 466 if protoimpl.UnsafeEnabled { 467 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[0] 468 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 469 ms.StoreMessageInfo(mi) 470 } 471 } 472 473 func (x *VirtualHost) String() string { 474 return protoimpl.X.MessageStringOf(x) 475 } 476 477 func (*VirtualHost) ProtoMessage() {} 478 479 func (x *VirtualHost) ProtoReflect() protoreflect.Message { 480 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[0] 481 if protoimpl.UnsafeEnabled && x != nil { 482 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 483 if ms.LoadMessageInfo() == nil { 484 ms.StoreMessageInfo(mi) 485 } 486 return ms 487 } 488 return mi.MessageOf(x) 489 } 490 491 // Deprecated: Use VirtualHost.ProtoReflect.Descriptor instead. 492 func (*VirtualHost) Descriptor() ([]byte, []int) { 493 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{0} 494 } 495 496 func (x *VirtualHost) GetName() string { 497 if x != nil { 498 return x.Name 499 } 500 return "" 501 } 502 503 func (x *VirtualHost) GetDomains() []string { 504 if x != nil { 505 return x.Domains 506 } 507 return nil 508 } 509 510 func (x *VirtualHost) GetRoutes() []*Route { 511 if x != nil { 512 return x.Routes 513 } 514 return nil 515 } 516 517 func (x *VirtualHost) GetRequireTls() VirtualHost_TlsRequirementType { 518 if x != nil { 519 return x.RequireTls 520 } 521 return VirtualHost_NONE 522 } 523 524 func (x *VirtualHost) GetVirtualClusters() []*VirtualCluster { 525 if x != nil { 526 return x.VirtualClusters 527 } 528 return nil 529 } 530 531 func (x *VirtualHost) GetRateLimits() []*RateLimit { 532 if x != nil { 533 return x.RateLimits 534 } 535 return nil 536 } 537 538 func (x *VirtualHost) GetRequestHeadersToAdd() []*v3.HeaderValueOption { 539 if x != nil { 540 return x.RequestHeadersToAdd 541 } 542 return nil 543 } 544 545 func (x *VirtualHost) GetRequestHeadersToRemove() []string { 546 if x != nil { 547 return x.RequestHeadersToRemove 548 } 549 return nil 550 } 551 552 func (x *VirtualHost) GetResponseHeadersToAdd() []*v3.HeaderValueOption { 553 if x != nil { 554 return x.ResponseHeadersToAdd 555 } 556 return nil 557 } 558 559 func (x *VirtualHost) GetResponseHeadersToRemove() []string { 560 if x != nil { 561 return x.ResponseHeadersToRemove 562 } 563 return nil 564 } 565 566 func (x *VirtualHost) GetCors() *CorsPolicy { 567 if x != nil { 568 return x.Cors 569 } 570 return nil 571 } 572 573 func (x *VirtualHost) GetTypedPerFilterConfig() map[string]*any.Any { 574 if x != nil { 575 return x.TypedPerFilterConfig 576 } 577 return nil 578 } 579 580 func (x *VirtualHost) GetIncludeRequestAttemptCount() bool { 581 if x != nil { 582 return x.IncludeRequestAttemptCount 583 } 584 return false 585 } 586 587 func (x *VirtualHost) GetIncludeAttemptCountInResponse() bool { 588 if x != nil { 589 return x.IncludeAttemptCountInResponse 590 } 591 return false 592 } 593 594 func (x *VirtualHost) GetRetryPolicy() *RetryPolicy { 595 if x != nil { 596 return x.RetryPolicy 597 } 598 return nil 599 } 600 601 func (x *VirtualHost) GetRetryPolicyTypedConfig() *any.Any { 602 if x != nil { 603 return x.RetryPolicyTypedConfig 604 } 605 return nil 606 } 607 608 func (x *VirtualHost) GetHedgePolicy() *HedgePolicy { 609 if x != nil { 610 return x.HedgePolicy 611 } 612 return nil 613 } 614 615 func (x *VirtualHost) GetPerRequestBufferLimitBytes() *wrappers.UInt32Value { 616 if x != nil { 617 return x.PerRequestBufferLimitBytes 618 } 619 return nil 620 } 621 622 // Deprecated: Do not use. 623 func (x *VirtualHost) GetHiddenEnvoyDeprecatedPerFilterConfig() map[string]*_struct.Struct { 624 if x != nil { 625 return x.HiddenEnvoyDeprecatedPerFilterConfig 626 } 627 return nil 628 } 629 630 // A filter-defined action type. 631 type FilterAction struct { 632 state protoimpl.MessageState 633 sizeCache protoimpl.SizeCache 634 unknownFields protoimpl.UnknownFields 635 636 Action *any.Any `protobuf:"bytes,1,opt,name=action,proto3" json:"action,omitempty"` 637 } 638 639 func (x *FilterAction) Reset() { 640 *x = FilterAction{} 641 if protoimpl.UnsafeEnabled { 642 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[1] 643 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 644 ms.StoreMessageInfo(mi) 645 } 646 } 647 648 func (x *FilterAction) String() string { 649 return protoimpl.X.MessageStringOf(x) 650 } 651 652 func (*FilterAction) ProtoMessage() {} 653 654 func (x *FilterAction) ProtoReflect() protoreflect.Message { 655 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[1] 656 if protoimpl.UnsafeEnabled && x != nil { 657 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 658 if ms.LoadMessageInfo() == nil { 659 ms.StoreMessageInfo(mi) 660 } 661 return ms 662 } 663 return mi.MessageOf(x) 664 } 665 666 // Deprecated: Use FilterAction.ProtoReflect.Descriptor instead. 667 func (*FilterAction) Descriptor() ([]byte, []int) { 668 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{1} 669 } 670 671 func (x *FilterAction) GetAction() *any.Any { 672 if x != nil { 673 return x.Action 674 } 675 return nil 676 } 677 678 // A route is both a specification of how to match a request as well as an indication of what to do 679 // next (e.g., redirect, forward, rewrite, etc.). 680 // 681 // .. attention:: 682 // 683 // Envoy supports routing on HTTP method via :ref:`header matching 684 // <envoy_v3_api_msg_config.route.v3.HeaderMatcher>`. 685 // [#next-free-field: 19] 686 type Route struct { 687 state protoimpl.MessageState 688 sizeCache protoimpl.SizeCache 689 unknownFields protoimpl.UnknownFields 690 691 // Name for the route. 692 Name string `protobuf:"bytes,14,opt,name=name,proto3" json:"name,omitempty"` 693 // Route matching parameters. 694 Match *RouteMatch `protobuf:"bytes,1,opt,name=match,proto3" json:"match,omitempty"` 695 // Types that are assignable to Action: 696 // *Route_Route 697 // *Route_Redirect 698 // *Route_DirectResponse 699 // *Route_FilterAction 700 // *Route_NonForwardingAction 701 Action isRoute_Action `protobuf_oneof:"action"` 702 // The Metadata field can be used to provide additional information 703 // about the route. It can be used for configuration, stats, and logging. 704 // The metadata should go under the filter namespace that will need it. 705 // For instance, if the metadata is intended for the Router filter, 706 // the filter name should be specified as *envoy.filters.http.router*. 707 Metadata *v3.Metadata `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"` 708 // Decorator for the matched route. 709 Decorator *Decorator `protobuf:"bytes,5,opt,name=decorator,proto3" json:"decorator,omitempty"` 710 // The typed_per_filter_config field can be used to provide route-specific 711 // configurations for filters. The key should match the filter name, such as 712 // *envoy.filters.http.buffer* for the HTTP buffer filter. Use of this field is filter 713 // specific; see the :ref:`HTTP filter documentation <config_http_filters>` for 714 // if and how it is utilized. 715 // [#comment: An entry's value may be wrapped in a 716 // :ref:`FilterConfig<envoy_v3_api_msg_config.route.v3.FilterConfig>` 717 // message to specify additional options.] 718 TypedPerFilterConfig map[string]*any.Any `protobuf:"bytes,13,rep,name=typed_per_filter_config,json=typedPerFilterConfig,proto3" json:"typed_per_filter_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 719 // Specifies a set of headers that will be added to requests matching this 720 // route. Headers specified at this level are applied before headers from the 721 // enclosing :ref:`envoy_v3_api_msg_config.route.v3.VirtualHost` and 722 // :ref:`envoy_v3_api_msg_config.route.v3.RouteConfiguration`. For more information, including details on 723 // header value syntax, see the documentation on :ref:`custom request headers 724 // <config_http_conn_man_headers_custom_request_headers>`. 725 RequestHeadersToAdd []*v3.HeaderValueOption `protobuf:"bytes,9,rep,name=request_headers_to_add,json=requestHeadersToAdd,proto3" json:"request_headers_to_add,omitempty"` 726 // Specifies a list of HTTP headers that should be removed from each request 727 // matching this route. 728 RequestHeadersToRemove []string `protobuf:"bytes,12,rep,name=request_headers_to_remove,json=requestHeadersToRemove,proto3" json:"request_headers_to_remove,omitempty"` 729 // Specifies a set of headers that will be added to responses to requests 730 // matching this route. Headers specified at this level are applied before 731 // headers from the enclosing :ref:`envoy_v3_api_msg_config.route.v3.VirtualHost` and 732 // :ref:`envoy_v3_api_msg_config.route.v3.RouteConfiguration`. For more information, including 733 // details on header value syntax, see the documentation on 734 // :ref:`custom request headers <config_http_conn_man_headers_custom_request_headers>`. 735 ResponseHeadersToAdd []*v3.HeaderValueOption `protobuf:"bytes,10,rep,name=response_headers_to_add,json=responseHeadersToAdd,proto3" json:"response_headers_to_add,omitempty"` 736 // Specifies a list of HTTP headers that should be removed from each response 737 // to requests matching this route. 738 ResponseHeadersToRemove []string `protobuf:"bytes,11,rep,name=response_headers_to_remove,json=responseHeadersToRemove,proto3" json:"response_headers_to_remove,omitempty"` 739 // Presence of the object defines whether the connection manager's tracing configuration 740 // is overridden by this route specific instance. 741 Tracing *Tracing `protobuf:"bytes,15,opt,name=tracing,proto3" json:"tracing,omitempty"` 742 // The maximum bytes which will be buffered for retries and shadowing. 743 // If set, the bytes actually buffered will be the minimum value of this and the 744 // listener per_connection_buffer_limit_bytes. 745 PerRequestBufferLimitBytes *wrappers.UInt32Value `protobuf:"bytes,16,opt,name=per_request_buffer_limit_bytes,json=perRequestBufferLimitBytes,proto3" json:"per_request_buffer_limit_bytes,omitempty"` 746 // Deprecated: Do not use. 747 HiddenEnvoyDeprecatedPerFilterConfig map[string]*_struct.Struct `protobuf:"bytes,8,rep,name=hidden_envoy_deprecated_per_filter_config,json=hiddenEnvoyDeprecatedPerFilterConfig,proto3" json:"hidden_envoy_deprecated_per_filter_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 748 } 749 750 func (x *Route) Reset() { 751 *x = Route{} 752 if protoimpl.UnsafeEnabled { 753 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[2] 754 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 755 ms.StoreMessageInfo(mi) 756 } 757 } 758 759 func (x *Route) String() string { 760 return protoimpl.X.MessageStringOf(x) 761 } 762 763 func (*Route) ProtoMessage() {} 764 765 func (x *Route) ProtoReflect() protoreflect.Message { 766 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[2] 767 if protoimpl.UnsafeEnabled && x != nil { 768 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 769 if ms.LoadMessageInfo() == nil { 770 ms.StoreMessageInfo(mi) 771 } 772 return ms 773 } 774 return mi.MessageOf(x) 775 } 776 777 // Deprecated: Use Route.ProtoReflect.Descriptor instead. 778 func (*Route) Descriptor() ([]byte, []int) { 779 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{2} 780 } 781 782 func (x *Route) GetName() string { 783 if x != nil { 784 return x.Name 785 } 786 return "" 787 } 788 789 func (x *Route) GetMatch() *RouteMatch { 790 if x != nil { 791 return x.Match 792 } 793 return nil 794 } 795 796 func (m *Route) GetAction() isRoute_Action { 797 if m != nil { 798 return m.Action 799 } 800 return nil 801 } 802 803 func (x *Route) GetRoute() *RouteAction { 804 if x, ok := x.GetAction().(*Route_Route); ok { 805 return x.Route 806 } 807 return nil 808 } 809 810 func (x *Route) GetRedirect() *RedirectAction { 811 if x, ok := x.GetAction().(*Route_Redirect); ok { 812 return x.Redirect 813 } 814 return nil 815 } 816 817 func (x *Route) GetDirectResponse() *DirectResponseAction { 818 if x, ok := x.GetAction().(*Route_DirectResponse); ok { 819 return x.DirectResponse 820 } 821 return nil 822 } 823 824 func (x *Route) GetFilterAction() *FilterAction { 825 if x, ok := x.GetAction().(*Route_FilterAction); ok { 826 return x.FilterAction 827 } 828 return nil 829 } 830 831 func (x *Route) GetNonForwardingAction() *NonForwardingAction { 832 if x, ok := x.GetAction().(*Route_NonForwardingAction); ok { 833 return x.NonForwardingAction 834 } 835 return nil 836 } 837 838 func (x *Route) GetMetadata() *v3.Metadata { 839 if x != nil { 840 return x.Metadata 841 } 842 return nil 843 } 844 845 func (x *Route) GetDecorator() *Decorator { 846 if x != nil { 847 return x.Decorator 848 } 849 return nil 850 } 851 852 func (x *Route) GetTypedPerFilterConfig() map[string]*any.Any { 853 if x != nil { 854 return x.TypedPerFilterConfig 855 } 856 return nil 857 } 858 859 func (x *Route) GetRequestHeadersToAdd() []*v3.HeaderValueOption { 860 if x != nil { 861 return x.RequestHeadersToAdd 862 } 863 return nil 864 } 865 866 func (x *Route) GetRequestHeadersToRemove() []string { 867 if x != nil { 868 return x.RequestHeadersToRemove 869 } 870 return nil 871 } 872 873 func (x *Route) GetResponseHeadersToAdd() []*v3.HeaderValueOption { 874 if x != nil { 875 return x.ResponseHeadersToAdd 876 } 877 return nil 878 } 879 880 func (x *Route) GetResponseHeadersToRemove() []string { 881 if x != nil { 882 return x.ResponseHeadersToRemove 883 } 884 return nil 885 } 886 887 func (x *Route) GetTracing() *Tracing { 888 if x != nil { 889 return x.Tracing 890 } 891 return nil 892 } 893 894 func (x *Route) GetPerRequestBufferLimitBytes() *wrappers.UInt32Value { 895 if x != nil { 896 return x.PerRequestBufferLimitBytes 897 } 898 return nil 899 } 900 901 // Deprecated: Do not use. 902 func (x *Route) GetHiddenEnvoyDeprecatedPerFilterConfig() map[string]*_struct.Struct { 903 if x != nil { 904 return x.HiddenEnvoyDeprecatedPerFilterConfig 905 } 906 return nil 907 } 908 909 type isRoute_Action interface { 910 isRoute_Action() 911 } 912 913 type Route_Route struct { 914 // Route request to some upstream cluster. 915 Route *RouteAction `protobuf:"bytes,2,opt,name=route,proto3,oneof"` 916 } 917 918 type Route_Redirect struct { 919 // Return a redirect. 920 Redirect *RedirectAction `protobuf:"bytes,3,opt,name=redirect,proto3,oneof"` 921 } 922 923 type Route_DirectResponse struct { 924 // Return an arbitrary HTTP response directly, without proxying. 925 DirectResponse *DirectResponseAction `protobuf:"bytes,7,opt,name=direct_response,json=directResponse,proto3,oneof"` 926 } 927 928 type Route_FilterAction struct { 929 // [#not-implemented-hide:] 930 // A filter-defined action (e.g., it could dynamically generate the RouteAction). 931 // [#comment: TODO(samflattery): Remove cleanup in route_fuzz_test.cc when 932 // implemented] 933 FilterAction *FilterAction `protobuf:"bytes,17,opt,name=filter_action,json=filterAction,proto3,oneof"` 934 } 935 936 type Route_NonForwardingAction struct { 937 // [#not-implemented-hide:] 938 // An action used when the route will generate a response directly, 939 // without forwarding to an upstream host. This will be used in non-proxy 940 // xDS clients like the gRPC server. It could also be used in the future 941 // in Envoy for a filter that directly generates responses for requests. 942 NonForwardingAction *NonForwardingAction `protobuf:"bytes,18,opt,name=non_forwarding_action,json=nonForwardingAction,proto3,oneof"` 943 } 944 945 func (*Route_Route) isRoute_Action() {} 946 947 func (*Route_Redirect) isRoute_Action() {} 948 949 func (*Route_DirectResponse) isRoute_Action() {} 950 951 func (*Route_FilterAction) isRoute_Action() {} 952 953 func (*Route_NonForwardingAction) isRoute_Action() {} 954 955 // Compared to the :ref:`cluster <envoy_v3_api_field_config.route.v3.RouteAction.cluster>` field that specifies a 956 // single upstream cluster as the target of a request, the :ref:`weighted_clusters 957 // <envoy_v3_api_field_config.route.v3.RouteAction.weighted_clusters>` option allows for specification of 958 // multiple upstream clusters along with weights that indicate the percentage of 959 // traffic to be forwarded to each cluster. The router selects an upstream cluster based on the 960 // weights. 961 type WeightedCluster struct { 962 state protoimpl.MessageState 963 sizeCache protoimpl.SizeCache 964 unknownFields protoimpl.UnknownFields 965 966 // Specifies one or more upstream clusters associated with the route. 967 Clusters []*WeightedCluster_ClusterWeight `protobuf:"bytes,1,rep,name=clusters,proto3" json:"clusters,omitempty"` 968 // Specifies the total weight across all clusters. The sum of all cluster weights must equal this 969 // value, which must be greater than 0. Defaults to 100. 970 TotalWeight *wrappers.UInt32Value `protobuf:"bytes,3,opt,name=total_weight,json=totalWeight,proto3" json:"total_weight,omitempty"` 971 // Specifies the runtime key prefix that should be used to construct the 972 // runtime keys associated with each cluster. When the *runtime_key_prefix* is 973 // specified, the router will look for weights associated with each upstream 974 // cluster under the key *runtime_key_prefix* + "." + *cluster[i].name* where 975 // *cluster[i]* denotes an entry in the clusters array field. If the runtime 976 // key for the cluster does not exist, the value specified in the 977 // configuration file will be used as the default weight. See the :ref:`runtime documentation 978 // <operations_runtime>` for how key names map to the underlying implementation. 979 RuntimeKeyPrefix string `protobuf:"bytes,2,opt,name=runtime_key_prefix,json=runtimeKeyPrefix,proto3" json:"runtime_key_prefix,omitempty"` 980 } 981 982 func (x *WeightedCluster) Reset() { 983 *x = WeightedCluster{} 984 if protoimpl.UnsafeEnabled { 985 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[3] 986 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 987 ms.StoreMessageInfo(mi) 988 } 989 } 990 991 func (x *WeightedCluster) String() string { 992 return protoimpl.X.MessageStringOf(x) 993 } 994 995 func (*WeightedCluster) ProtoMessage() {} 996 997 func (x *WeightedCluster) ProtoReflect() protoreflect.Message { 998 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[3] 999 if protoimpl.UnsafeEnabled && x != nil { 1000 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1001 if ms.LoadMessageInfo() == nil { 1002 ms.StoreMessageInfo(mi) 1003 } 1004 return ms 1005 } 1006 return mi.MessageOf(x) 1007 } 1008 1009 // Deprecated: Use WeightedCluster.ProtoReflect.Descriptor instead. 1010 func (*WeightedCluster) Descriptor() ([]byte, []int) { 1011 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{3} 1012 } 1013 1014 func (x *WeightedCluster) GetClusters() []*WeightedCluster_ClusterWeight { 1015 if x != nil { 1016 return x.Clusters 1017 } 1018 return nil 1019 } 1020 1021 func (x *WeightedCluster) GetTotalWeight() *wrappers.UInt32Value { 1022 if x != nil { 1023 return x.TotalWeight 1024 } 1025 return nil 1026 } 1027 1028 func (x *WeightedCluster) GetRuntimeKeyPrefix() string { 1029 if x != nil { 1030 return x.RuntimeKeyPrefix 1031 } 1032 return "" 1033 } 1034 1035 // [#next-free-field: 14] 1036 type RouteMatch struct { 1037 state protoimpl.MessageState 1038 sizeCache protoimpl.SizeCache 1039 unknownFields protoimpl.UnknownFields 1040 1041 // Types that are assignable to PathSpecifier: 1042 // *RouteMatch_Prefix 1043 // *RouteMatch_Path 1044 // *RouteMatch_SafeRegex 1045 // *RouteMatch_ConnectMatcher_ 1046 // *RouteMatch_HiddenEnvoyDeprecatedRegex 1047 PathSpecifier isRouteMatch_PathSpecifier `protobuf_oneof:"path_specifier"` 1048 // Indicates that prefix/path matching should be case sensitive. The default 1049 // is true. Ignored for safe_regex matching. 1050 CaseSensitive *wrappers.BoolValue `protobuf:"bytes,4,opt,name=case_sensitive,json=caseSensitive,proto3" json:"case_sensitive,omitempty"` 1051 // Indicates that the route should additionally match on a runtime key. Every time the route 1052 // is considered for a match, it must also fall under the percentage of matches indicated by 1053 // this field. For some fraction N/D, a random number in the range [0,D) is selected. If the 1054 // number is <= the value of the numerator N, or if the key is not present, the default 1055 // value, the router continues to evaluate the remaining match criteria. A runtime_fraction 1056 // route configuration can be used to roll out route changes in a gradual manner without full 1057 // code/config deploys. Refer to the :ref:`traffic shifting 1058 // <config_http_conn_man_route_table_traffic_splitting_shift>` docs for additional documentation. 1059 // 1060 // .. note:: 1061 // 1062 // Parsing this field is implemented such that the runtime key's data may be represented 1063 // as a FractionalPercent proto represented as JSON/YAML and may also be represented as an 1064 // integer with the assumption that the value is an integral percentage out of 100. For 1065 // instance, a runtime key lookup returning the value "42" would parse as a FractionalPercent 1066 // whose numerator is 42 and denominator is HUNDRED. This preserves legacy semantics. 1067 RuntimeFraction *v3.RuntimeFractionalPercent `protobuf:"bytes,9,opt,name=runtime_fraction,json=runtimeFraction,proto3" json:"runtime_fraction,omitempty"` 1068 // Specifies a set of headers that the route should match on. The router will 1069 // check the request’s headers against all the specified headers in the route 1070 // config. A match will happen if all the headers in the route are present in 1071 // the request with the same values (or based on presence if the value field 1072 // is not in the config). 1073 Headers []*HeaderMatcher `protobuf:"bytes,6,rep,name=headers,proto3" json:"headers,omitempty"` 1074 // Specifies a set of URL query parameters on which the route should 1075 // match. The router will check the query string from the *path* header 1076 // against all the specified query parameters. If the number of specified 1077 // query parameters is nonzero, they all must match the *path* header's 1078 // query string for a match to occur. 1079 QueryParameters []*QueryParameterMatcher `protobuf:"bytes,7,rep,name=query_parameters,json=queryParameters,proto3" json:"query_parameters,omitempty"` 1080 // If specified, only gRPC requests will be matched. The router will check 1081 // that the content-type header has a application/grpc or one of the various 1082 // application/grpc+ values. 1083 Grpc *RouteMatch_GrpcRouteMatchOptions `protobuf:"bytes,8,opt,name=grpc,proto3" json:"grpc,omitempty"` 1084 // If specified, the client tls context will be matched against the defined 1085 // match options. 1086 // 1087 // [#next-major-version: unify with RBAC] 1088 TlsContext *RouteMatch_TlsContextMatchOptions `protobuf:"bytes,11,opt,name=tls_context,json=tlsContext,proto3" json:"tls_context,omitempty"` 1089 // Specifies a set of dynamic metadata matchers on which the route should match. 1090 // The router will check the dynamic metadata against all the specified dynamic metadata matchers. 1091 // If the number of specified dynamic metadata matchers is nonzero, they all must match the 1092 // dynamic metadata for a match to occur. 1093 DynamicMetadata []*v31.MetadataMatcher `protobuf:"bytes,13,rep,name=dynamic_metadata,json=dynamicMetadata,proto3" json:"dynamic_metadata,omitempty"` 1094 } 1095 1096 func (x *RouteMatch) Reset() { 1097 *x = RouteMatch{} 1098 if protoimpl.UnsafeEnabled { 1099 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[4] 1100 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1101 ms.StoreMessageInfo(mi) 1102 } 1103 } 1104 1105 func (x *RouteMatch) String() string { 1106 return protoimpl.X.MessageStringOf(x) 1107 } 1108 1109 func (*RouteMatch) ProtoMessage() {} 1110 1111 func (x *RouteMatch) ProtoReflect() protoreflect.Message { 1112 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[4] 1113 if protoimpl.UnsafeEnabled && x != nil { 1114 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1115 if ms.LoadMessageInfo() == nil { 1116 ms.StoreMessageInfo(mi) 1117 } 1118 return ms 1119 } 1120 return mi.MessageOf(x) 1121 } 1122 1123 // Deprecated: Use RouteMatch.ProtoReflect.Descriptor instead. 1124 func (*RouteMatch) Descriptor() ([]byte, []int) { 1125 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{4} 1126 } 1127 1128 func (m *RouteMatch) GetPathSpecifier() isRouteMatch_PathSpecifier { 1129 if m != nil { 1130 return m.PathSpecifier 1131 } 1132 return nil 1133 } 1134 1135 func (x *RouteMatch) GetPrefix() string { 1136 if x, ok := x.GetPathSpecifier().(*RouteMatch_Prefix); ok { 1137 return x.Prefix 1138 } 1139 return "" 1140 } 1141 1142 func (x *RouteMatch) GetPath() string { 1143 if x, ok := x.GetPathSpecifier().(*RouteMatch_Path); ok { 1144 return x.Path 1145 } 1146 return "" 1147 } 1148 1149 func (x *RouteMatch) GetSafeRegex() *v31.RegexMatcher { 1150 if x, ok := x.GetPathSpecifier().(*RouteMatch_SafeRegex); ok { 1151 return x.SafeRegex 1152 } 1153 return nil 1154 } 1155 1156 func (x *RouteMatch) GetConnectMatcher() *RouteMatch_ConnectMatcher { 1157 if x, ok := x.GetPathSpecifier().(*RouteMatch_ConnectMatcher_); ok { 1158 return x.ConnectMatcher 1159 } 1160 return nil 1161 } 1162 1163 // Deprecated: Do not use. 1164 func (x *RouteMatch) GetHiddenEnvoyDeprecatedRegex() string { 1165 if x, ok := x.GetPathSpecifier().(*RouteMatch_HiddenEnvoyDeprecatedRegex); ok { 1166 return x.HiddenEnvoyDeprecatedRegex 1167 } 1168 return "" 1169 } 1170 1171 func (x *RouteMatch) GetCaseSensitive() *wrappers.BoolValue { 1172 if x != nil { 1173 return x.CaseSensitive 1174 } 1175 return nil 1176 } 1177 1178 func (x *RouteMatch) GetRuntimeFraction() *v3.RuntimeFractionalPercent { 1179 if x != nil { 1180 return x.RuntimeFraction 1181 } 1182 return nil 1183 } 1184 1185 func (x *RouteMatch) GetHeaders() []*HeaderMatcher { 1186 if x != nil { 1187 return x.Headers 1188 } 1189 return nil 1190 } 1191 1192 func (x *RouteMatch) GetQueryParameters() []*QueryParameterMatcher { 1193 if x != nil { 1194 return x.QueryParameters 1195 } 1196 return nil 1197 } 1198 1199 func (x *RouteMatch) GetGrpc() *RouteMatch_GrpcRouteMatchOptions { 1200 if x != nil { 1201 return x.Grpc 1202 } 1203 return nil 1204 } 1205 1206 func (x *RouteMatch) GetTlsContext() *RouteMatch_TlsContextMatchOptions { 1207 if x != nil { 1208 return x.TlsContext 1209 } 1210 return nil 1211 } 1212 1213 func (x *RouteMatch) GetDynamicMetadata() []*v31.MetadataMatcher { 1214 if x != nil { 1215 return x.DynamicMetadata 1216 } 1217 return nil 1218 } 1219 1220 type isRouteMatch_PathSpecifier interface { 1221 isRouteMatch_PathSpecifier() 1222 } 1223 1224 type RouteMatch_Prefix struct { 1225 // If specified, the route is a prefix rule meaning that the prefix must 1226 // match the beginning of the *:path* header. 1227 Prefix string `protobuf:"bytes,1,opt,name=prefix,proto3,oneof"` 1228 } 1229 1230 type RouteMatch_Path struct { 1231 // If specified, the route is an exact path rule meaning that the path must 1232 // exactly match the *:path* header once the query string is removed. 1233 Path string `protobuf:"bytes,2,opt,name=path,proto3,oneof"` 1234 } 1235 1236 type RouteMatch_SafeRegex struct { 1237 // If specified, the route is a regular expression rule meaning that the 1238 // regex must match the *:path* header once the query string is removed. The entire path 1239 // (without the query string) must match the regex. The rule will not match if only a 1240 // subsequence of the *:path* header matches the regex. 1241 // 1242 // [#next-major-version: In the v3 API we should redo how path specification works such 1243 // that we utilize StringMatcher, and additionally have consistent options around whether we 1244 // strip query strings, do a case sensitive match, etc. In the interim it will be too disruptive 1245 // to deprecate the existing options. We should even consider whether we want to do away with 1246 // path_specifier entirely and just rely on a set of header matchers which can already match 1247 // on :path, etc. The issue with that is it is unclear how to generically deal with query string 1248 // stripping. This needs more thought.] 1249 SafeRegex *v31.RegexMatcher `protobuf:"bytes,10,opt,name=safe_regex,json=safeRegex,proto3,oneof"` 1250 } 1251 1252 type RouteMatch_ConnectMatcher_ struct { 1253 // If this is used as the matcher, the matcher will only match CONNECT requests. 1254 // Note that this will not match HTTP/2 upgrade-style CONNECT requests 1255 // (WebSocket and the like) as they are normalized in Envoy as HTTP/1.1 style 1256 // upgrades. 1257 // This is the only way to match CONNECT requests for HTTP/1.1. For HTTP/2, 1258 // where Extended CONNECT requests may have a path, the path matchers will work if 1259 // there is a path present. 1260 // Note that CONNECT support is currently considered alpha in Envoy. 1261 // [#comment: TODO(htuch): Replace the above comment with an alpha tag.] 1262 ConnectMatcher *RouteMatch_ConnectMatcher `protobuf:"bytes,12,opt,name=connect_matcher,json=connectMatcher,proto3,oneof"` 1263 } 1264 1265 type RouteMatch_HiddenEnvoyDeprecatedRegex struct { 1266 // Deprecated: Do not use. 1267 HiddenEnvoyDeprecatedRegex string `protobuf:"bytes,3,opt,name=hidden_envoy_deprecated_regex,json=hiddenEnvoyDeprecatedRegex,proto3,oneof"` 1268 } 1269 1270 func (*RouteMatch_Prefix) isRouteMatch_PathSpecifier() {} 1271 1272 func (*RouteMatch_Path) isRouteMatch_PathSpecifier() {} 1273 1274 func (*RouteMatch_SafeRegex) isRouteMatch_PathSpecifier() {} 1275 1276 func (*RouteMatch_ConnectMatcher_) isRouteMatch_PathSpecifier() {} 1277 1278 func (*RouteMatch_HiddenEnvoyDeprecatedRegex) isRouteMatch_PathSpecifier() {} 1279 1280 // [#next-free-field: 12] 1281 type CorsPolicy struct { 1282 state protoimpl.MessageState 1283 sizeCache protoimpl.SizeCache 1284 unknownFields protoimpl.UnknownFields 1285 1286 // Specifies string patterns that match allowed origins. An origin is allowed if any of the 1287 // string matchers match. 1288 AllowOriginStringMatch []*v31.StringMatcher `protobuf:"bytes,11,rep,name=allow_origin_string_match,json=allowOriginStringMatch,proto3" json:"allow_origin_string_match,omitempty"` 1289 // Specifies the content for the *access-control-allow-methods* header. 1290 AllowMethods string `protobuf:"bytes,2,opt,name=allow_methods,json=allowMethods,proto3" json:"allow_methods,omitempty"` 1291 // Specifies the content for the *access-control-allow-headers* header. 1292 AllowHeaders string `protobuf:"bytes,3,opt,name=allow_headers,json=allowHeaders,proto3" json:"allow_headers,omitempty"` 1293 // Specifies the content for the *access-control-expose-headers* header. 1294 ExposeHeaders string `protobuf:"bytes,4,opt,name=expose_headers,json=exposeHeaders,proto3" json:"expose_headers,omitempty"` 1295 // Specifies the content for the *access-control-max-age* header. 1296 MaxAge string `protobuf:"bytes,5,opt,name=max_age,json=maxAge,proto3" json:"max_age,omitempty"` 1297 // Specifies whether the resource allows credentials. 1298 AllowCredentials *wrappers.BoolValue `protobuf:"bytes,6,opt,name=allow_credentials,json=allowCredentials,proto3" json:"allow_credentials,omitempty"` 1299 // Types that are assignable to EnabledSpecifier: 1300 // *CorsPolicy_FilterEnabled 1301 // *CorsPolicy_HiddenEnvoyDeprecatedEnabled 1302 EnabledSpecifier isCorsPolicy_EnabledSpecifier `protobuf_oneof:"enabled_specifier"` 1303 // Specifies the % of requests for which the CORS policies will be evaluated and tracked, but not 1304 // enforced. 1305 // 1306 // This field is intended to be used when ``filter_enabled`` and ``enabled`` are off. One of those 1307 // fields have to explicitly disable the filter in order for this setting to take effect. 1308 // 1309 // If :ref:`runtime_key <envoy_v3_api_field_config.core.v3.RuntimeFractionalPercent.runtime_key>` is specified, 1310 // Envoy will lookup the runtime key to get the percentage of requests for which it will evaluate 1311 // and track the request's *Origin* to determine if it's valid but will not enforce any policies. 1312 ShadowEnabled *v3.RuntimeFractionalPercent `protobuf:"bytes,10,opt,name=shadow_enabled,json=shadowEnabled,proto3" json:"shadow_enabled,omitempty"` 1313 // Deprecated: Do not use. 1314 HiddenEnvoyDeprecatedAllowOrigin []string `protobuf:"bytes,1,rep,name=hidden_envoy_deprecated_allow_origin,json=hiddenEnvoyDeprecatedAllowOrigin,proto3" json:"hidden_envoy_deprecated_allow_origin,omitempty"` 1315 // Deprecated: Do not use. 1316 HiddenEnvoyDeprecatedAllowOriginRegex []string `protobuf:"bytes,8,rep,name=hidden_envoy_deprecated_allow_origin_regex,json=hiddenEnvoyDeprecatedAllowOriginRegex,proto3" json:"hidden_envoy_deprecated_allow_origin_regex,omitempty"` 1317 } 1318 1319 func (x *CorsPolicy) Reset() { 1320 *x = CorsPolicy{} 1321 if protoimpl.UnsafeEnabled { 1322 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[5] 1323 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1324 ms.StoreMessageInfo(mi) 1325 } 1326 } 1327 1328 func (x *CorsPolicy) String() string { 1329 return protoimpl.X.MessageStringOf(x) 1330 } 1331 1332 func (*CorsPolicy) ProtoMessage() {} 1333 1334 func (x *CorsPolicy) ProtoReflect() protoreflect.Message { 1335 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[5] 1336 if protoimpl.UnsafeEnabled && x != nil { 1337 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1338 if ms.LoadMessageInfo() == nil { 1339 ms.StoreMessageInfo(mi) 1340 } 1341 return ms 1342 } 1343 return mi.MessageOf(x) 1344 } 1345 1346 // Deprecated: Use CorsPolicy.ProtoReflect.Descriptor instead. 1347 func (*CorsPolicy) Descriptor() ([]byte, []int) { 1348 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{5} 1349 } 1350 1351 func (x *CorsPolicy) GetAllowOriginStringMatch() []*v31.StringMatcher { 1352 if x != nil { 1353 return x.AllowOriginStringMatch 1354 } 1355 return nil 1356 } 1357 1358 func (x *CorsPolicy) GetAllowMethods() string { 1359 if x != nil { 1360 return x.AllowMethods 1361 } 1362 return "" 1363 } 1364 1365 func (x *CorsPolicy) GetAllowHeaders() string { 1366 if x != nil { 1367 return x.AllowHeaders 1368 } 1369 return "" 1370 } 1371 1372 func (x *CorsPolicy) GetExposeHeaders() string { 1373 if x != nil { 1374 return x.ExposeHeaders 1375 } 1376 return "" 1377 } 1378 1379 func (x *CorsPolicy) GetMaxAge() string { 1380 if x != nil { 1381 return x.MaxAge 1382 } 1383 return "" 1384 } 1385 1386 func (x *CorsPolicy) GetAllowCredentials() *wrappers.BoolValue { 1387 if x != nil { 1388 return x.AllowCredentials 1389 } 1390 return nil 1391 } 1392 1393 func (m *CorsPolicy) GetEnabledSpecifier() isCorsPolicy_EnabledSpecifier { 1394 if m != nil { 1395 return m.EnabledSpecifier 1396 } 1397 return nil 1398 } 1399 1400 func (x *CorsPolicy) GetFilterEnabled() *v3.RuntimeFractionalPercent { 1401 if x, ok := x.GetEnabledSpecifier().(*CorsPolicy_FilterEnabled); ok { 1402 return x.FilterEnabled 1403 } 1404 return nil 1405 } 1406 1407 // Deprecated: Do not use. 1408 func (x *CorsPolicy) GetHiddenEnvoyDeprecatedEnabled() *wrappers.BoolValue { 1409 if x, ok := x.GetEnabledSpecifier().(*CorsPolicy_HiddenEnvoyDeprecatedEnabled); ok { 1410 return x.HiddenEnvoyDeprecatedEnabled 1411 } 1412 return nil 1413 } 1414 1415 func (x *CorsPolicy) GetShadowEnabled() *v3.RuntimeFractionalPercent { 1416 if x != nil { 1417 return x.ShadowEnabled 1418 } 1419 return nil 1420 } 1421 1422 // Deprecated: Do not use. 1423 func (x *CorsPolicy) GetHiddenEnvoyDeprecatedAllowOrigin() []string { 1424 if x != nil { 1425 return x.HiddenEnvoyDeprecatedAllowOrigin 1426 } 1427 return nil 1428 } 1429 1430 // Deprecated: Do not use. 1431 func (x *CorsPolicy) GetHiddenEnvoyDeprecatedAllowOriginRegex() []string { 1432 if x != nil { 1433 return x.HiddenEnvoyDeprecatedAllowOriginRegex 1434 } 1435 return nil 1436 } 1437 1438 type isCorsPolicy_EnabledSpecifier interface { 1439 isCorsPolicy_EnabledSpecifier() 1440 } 1441 1442 type CorsPolicy_FilterEnabled struct { 1443 // Specifies the % of requests for which the CORS filter is enabled. 1444 // 1445 // If neither ``enabled``, ``filter_enabled``, nor ``shadow_enabled`` are specified, the CORS 1446 // filter will be enabled for 100% of the requests. 1447 // 1448 // If :ref:`runtime_key <envoy_v3_api_field_config.core.v3.RuntimeFractionalPercent.runtime_key>` is 1449 // specified, Envoy will lookup the runtime key to get the percentage of requests to filter. 1450 FilterEnabled *v3.RuntimeFractionalPercent `protobuf:"bytes,9,opt,name=filter_enabled,json=filterEnabled,proto3,oneof"` 1451 } 1452 1453 type CorsPolicy_HiddenEnvoyDeprecatedEnabled struct { 1454 // Deprecated: Do not use. 1455 HiddenEnvoyDeprecatedEnabled *wrappers.BoolValue `protobuf:"bytes,7,opt,name=hidden_envoy_deprecated_enabled,json=hiddenEnvoyDeprecatedEnabled,proto3,oneof"` 1456 } 1457 1458 func (*CorsPolicy_FilterEnabled) isCorsPolicy_EnabledSpecifier() {} 1459 1460 func (*CorsPolicy_HiddenEnvoyDeprecatedEnabled) isCorsPolicy_EnabledSpecifier() {} 1461 1462 // [#next-free-field: 38] 1463 type RouteAction struct { 1464 state protoimpl.MessageState 1465 sizeCache protoimpl.SizeCache 1466 unknownFields protoimpl.UnknownFields 1467 1468 // Types that are assignable to ClusterSpecifier: 1469 // *RouteAction_Cluster 1470 // *RouteAction_ClusterHeader 1471 // *RouteAction_WeightedClusters 1472 // *RouteAction_ClusterSpecifierPlugin 1473 ClusterSpecifier isRouteAction_ClusterSpecifier `protobuf_oneof:"cluster_specifier"` 1474 // The HTTP status code to use when configured cluster is not found. 1475 // The default response code is 503 Service Unavailable. 1476 ClusterNotFoundResponseCode RouteAction_ClusterNotFoundResponseCode `protobuf:"varint,20,opt,name=cluster_not_found_response_code,json=clusterNotFoundResponseCode,proto3,enum=envoy.config.route.v3.RouteAction_ClusterNotFoundResponseCode" json:"cluster_not_found_response_code,omitempty"` 1477 // Optional endpoint metadata match criteria used by the subset load balancer. Only endpoints 1478 // in the upstream cluster with metadata matching what's set in this field will be considered 1479 // for load balancing. If using :ref:`weighted_clusters 1480 // <envoy_v3_api_field_config.route.v3.RouteAction.weighted_clusters>`, metadata will be merged, with values 1481 // provided there taking precedence. The filter name should be specified as *envoy.lb*. 1482 MetadataMatch *v3.Metadata `protobuf:"bytes,4,opt,name=metadata_match,json=metadataMatch,proto3" json:"metadata_match,omitempty"` 1483 // Indicates that during forwarding, the matched prefix (or path) should be 1484 // swapped with this value. This option allows application URLs to be rooted 1485 // at a different path from those exposed at the reverse proxy layer. The router filter will 1486 // place the original path before rewrite into the :ref:`x-envoy-original-path 1487 // <config_http_filters_router_x-envoy-original-path>` header. 1488 // 1489 // Only one of *prefix_rewrite* or 1490 // :ref:`regex_rewrite <envoy_v3_api_field_config.route.v3.RouteAction.regex_rewrite>` 1491 // may be specified. 1492 // 1493 // .. attention:: 1494 // 1495 // Pay careful attention to the use of trailing slashes in the 1496 // :ref:`route's match <envoy_v3_api_field_config.route.v3.Route.match>` prefix value. 1497 // Stripping a prefix from a path requires multiple Routes to handle all cases. For example, 1498 // rewriting */prefix* to */* and */prefix/etc* to */etc* cannot be done in a single 1499 // :ref:`Route <envoy_v3_api_msg_config.route.v3.Route>`, as shown by the below config entries: 1500 // 1501 // .. code-block:: yaml 1502 // 1503 // - match: 1504 // prefix: "/prefix/" 1505 // route: 1506 // prefix_rewrite: "/" 1507 // - match: 1508 // prefix: "/prefix" 1509 // route: 1510 // prefix_rewrite: "/" 1511 // 1512 // Having above entries in the config, requests to */prefix* will be stripped to */*, while 1513 // requests to */prefix/etc* will be stripped to */etc*. 1514 PrefixRewrite string `protobuf:"bytes,5,opt,name=prefix_rewrite,json=prefixRewrite,proto3" json:"prefix_rewrite,omitempty"` 1515 // Indicates that during forwarding, portions of the path that match the 1516 // pattern should be rewritten, even allowing the substitution of capture 1517 // groups from the pattern into the new path as specified by the rewrite 1518 // substitution string. This is useful to allow application paths to be 1519 // rewritten in a way that is aware of segments with variable content like 1520 // identifiers. The router filter will place the original path as it was 1521 // before the rewrite into the :ref:`x-envoy-original-path 1522 // <config_http_filters_router_x-envoy-original-path>` header. 1523 // 1524 // Only one of :ref:`prefix_rewrite <envoy_v3_api_field_config.route.v3.RouteAction.prefix_rewrite>` 1525 // or *regex_rewrite* may be specified. 1526 // 1527 // Examples using Google's `RE2 <https://github.com/google/re2>`_ engine: 1528 // 1529 // * The path pattern ``^/service/([^/]+)(/.*)$`` paired with a substitution 1530 // string of ``\2/instance/\1`` would transform ``/service/foo/v1/api`` 1531 // into ``/v1/api/instance/foo``. 1532 // 1533 // * The pattern ``one`` paired with a substitution string of ``two`` would 1534 // transform ``/xxx/one/yyy/one/zzz`` into ``/xxx/two/yyy/two/zzz``. 1535 // 1536 // * The pattern ``^(.*?)one(.*)$`` paired with a substitution string of 1537 // ``\1two\2`` would replace only the first occurrence of ``one``, 1538 // transforming path ``/xxx/one/yyy/one/zzz`` into ``/xxx/two/yyy/one/zzz``. 1539 // 1540 // * The pattern ``(?i)/xxx/`` paired with a substitution string of ``/yyy/`` 1541 // would do a case-insensitive match and transform path ``/aaa/XxX/bbb`` to 1542 // ``/aaa/yyy/bbb``. 1543 RegexRewrite *v31.RegexMatchAndSubstitute `protobuf:"bytes,32,opt,name=regex_rewrite,json=regexRewrite,proto3" json:"regex_rewrite,omitempty"` 1544 // Types that are assignable to HostRewriteSpecifier: 1545 // *RouteAction_HostRewriteLiteral 1546 // *RouteAction_AutoHostRewrite 1547 // *RouteAction_HostRewriteHeader 1548 // *RouteAction_HostRewritePathRegex 1549 HostRewriteSpecifier isRouteAction_HostRewriteSpecifier `protobuf_oneof:"host_rewrite_specifier"` 1550 // Specifies the upstream timeout for the route. If not specified, the default is 15s. This 1551 // spans between the point at which the entire downstream request (i.e. end-of-stream) has been 1552 // processed and when the upstream response has been completely processed. A value of 0 will 1553 // disable the route's timeout. 1554 // 1555 // .. note:: 1556 // 1557 // This timeout includes all retries. See also 1558 // :ref:`config_http_filters_router_x-envoy-upstream-rq-timeout-ms`, 1559 // :ref:`config_http_filters_router_x-envoy-upstream-rq-per-try-timeout-ms`, and the 1560 // :ref:`retry overview <arch_overview_http_routing_retry>`. 1561 Timeout *duration.Duration `protobuf:"bytes,8,opt,name=timeout,proto3" json:"timeout,omitempty"` 1562 // Specifies the idle timeout for the route. If not specified, there is no per-route idle timeout, 1563 // although the connection manager wide :ref:`stream_idle_timeout 1564 // <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.stream_idle_timeout>` 1565 // will still apply. A value of 0 will completely disable the route's idle timeout, even if a 1566 // connection manager stream idle timeout is configured. 1567 // 1568 // The idle timeout is distinct to :ref:`timeout 1569 // <envoy_v3_api_field_config.route.v3.RouteAction.timeout>`, which provides an upper bound 1570 // on the upstream response time; :ref:`idle_timeout 1571 // <envoy_v3_api_field_config.route.v3.RouteAction.idle_timeout>` instead bounds the amount 1572 // of time the request's stream may be idle. 1573 // 1574 // After header decoding, the idle timeout will apply on downstream and 1575 // upstream request events. Each time an encode/decode event for headers or 1576 // data is processed for the stream, the timer will be reset. If the timeout 1577 // fires, the stream is terminated with a 408 Request Timeout error code if no 1578 // upstream response header has been received, otherwise a stream reset 1579 // occurs. 1580 // 1581 // If the :ref:`overload action <config_overload_manager_overload_actions>` "envoy.overload_actions.reduce_timeouts" 1582 // is configured, this timeout is scaled according to the value for 1583 // :ref:`HTTP_DOWNSTREAM_STREAM_IDLE <envoy_v3_api_enum_value_config.overload.v3.ScaleTimersOverloadActionConfig.TimerType.HTTP_DOWNSTREAM_STREAM_IDLE>`. 1584 IdleTimeout *duration.Duration `protobuf:"bytes,24,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"` 1585 // Indicates that the route has a retry policy. Note that if this is set, 1586 // it'll take precedence over the virtual host level retry policy entirely 1587 // (e.g.: policies are not merged, most internal one becomes the enforced policy). 1588 RetryPolicy *RetryPolicy `protobuf:"bytes,9,opt,name=retry_policy,json=retryPolicy,proto3" json:"retry_policy,omitempty"` 1589 // [#not-implemented-hide:] 1590 // Specifies the configuration for retry policy extension. Note that if this is set, it'll take 1591 // precedence over the virtual host level retry policy entirely (e.g.: policies are not merged, 1592 // most internal one becomes the enforced policy). :ref:`Retry policy <envoy_v3_api_field_config.route.v3.VirtualHost.retry_policy>` 1593 // should not be set if this field is used. 1594 RetryPolicyTypedConfig *any.Any `protobuf:"bytes,33,opt,name=retry_policy_typed_config,json=retryPolicyTypedConfig,proto3" json:"retry_policy_typed_config,omitempty"` 1595 // Indicates that the route has request mirroring policies. 1596 RequestMirrorPolicies []*RouteAction_RequestMirrorPolicy `protobuf:"bytes,30,rep,name=request_mirror_policies,json=requestMirrorPolicies,proto3" json:"request_mirror_policies,omitempty"` 1597 // Optionally specifies the :ref:`routing priority <arch_overview_http_routing_priority>`. 1598 Priority v3.RoutingPriority `protobuf:"varint,11,opt,name=priority,proto3,enum=envoy.config.core.v3.RoutingPriority" json:"priority,omitempty"` 1599 // Specifies a set of rate limit configurations that could be applied to the 1600 // route. 1601 RateLimits []*RateLimit `protobuf:"bytes,13,rep,name=rate_limits,json=rateLimits,proto3" json:"rate_limits,omitempty"` 1602 // Specifies if the rate limit filter should include the virtual host rate 1603 // limits. By default, if the route configured rate limits, the virtual host 1604 // :ref:`rate_limits <envoy_v3_api_field_config.route.v3.VirtualHost.rate_limits>` are not applied to the 1605 // request. 1606 // 1607 // This field is deprecated. Please use :ref:`vh_rate_limits <envoy_v3_api_field_extensions.filters.http.ratelimit.v3.RateLimitPerRoute.vh_rate_limits>` 1608 // 1609 // Deprecated: Do not use. 1610 IncludeVhRateLimits *wrappers.BoolValue `protobuf:"bytes,14,opt,name=include_vh_rate_limits,json=includeVhRateLimits,proto3" json:"include_vh_rate_limits,omitempty"` 1611 // Specifies a list of hash policies to use for ring hash load balancing. Each 1612 // hash policy is evaluated individually and the combined result is used to 1613 // route the request. The method of combination is deterministic such that 1614 // identical lists of hash policies will produce the same hash. Since a hash 1615 // policy examines specific parts of a request, it can fail to produce a hash 1616 // (i.e. if the hashed header is not present). If (and only if) all configured 1617 // hash policies fail to generate a hash, no hash will be produced for 1618 // the route. In this case, the behavior is the same as if no hash policies 1619 // were specified (i.e. the ring hash load balancer will choose a random 1620 // backend). If a hash policy has the "terminal" attribute set to true, and 1621 // there is already a hash generated, the hash is returned immediately, 1622 // ignoring the rest of the hash policy list. 1623 HashPolicy []*RouteAction_HashPolicy `protobuf:"bytes,15,rep,name=hash_policy,json=hashPolicy,proto3" json:"hash_policy,omitempty"` 1624 // Indicates that the route has a CORS policy. 1625 Cors *CorsPolicy `protobuf:"bytes,17,opt,name=cors,proto3" json:"cors,omitempty"` 1626 // Deprecated by :ref:`grpc_timeout_header_max <envoy_v3_api_field_config.route.v3.RouteAction.MaxStreamDuration.grpc_timeout_header_max>` 1627 // If present, and the request is a gRPC request, use the 1628 // `grpc-timeout header <https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md>`_, 1629 // or its default value (infinity) instead of 1630 // :ref:`timeout <envoy_v3_api_field_config.route.v3.RouteAction.timeout>`, but limit the applied timeout 1631 // to the maximum value specified here. If configured as 0, the maximum allowed timeout for 1632 // gRPC requests is infinity. If not configured at all, the `grpc-timeout` header is not used 1633 // and gRPC requests time out like any other requests using 1634 // :ref:`timeout <envoy_v3_api_field_config.route.v3.RouteAction.timeout>` or its default. 1635 // This can be used to prevent unexpected upstream request timeouts due to potentially long 1636 // time gaps between gRPC request and response in gRPC streaming mode. 1637 // 1638 // .. note:: 1639 // 1640 // If a timeout is specified using :ref:`config_http_filters_router_x-envoy-upstream-rq-timeout-ms`, it takes 1641 // precedence over `grpc-timeout header <https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md>`_, when 1642 // both are present. See also 1643 // :ref:`config_http_filters_router_x-envoy-upstream-rq-timeout-ms`, 1644 // :ref:`config_http_filters_router_x-envoy-upstream-rq-per-try-timeout-ms`, and the 1645 // :ref:`retry overview <arch_overview_http_routing_retry>`. 1646 // 1647 // Deprecated: Do not use. 1648 MaxGrpcTimeout *duration.Duration `protobuf:"bytes,23,opt,name=max_grpc_timeout,json=maxGrpcTimeout,proto3" json:"max_grpc_timeout,omitempty"` 1649 // Deprecated by :ref:`grpc_timeout_header_offset <envoy_v3_api_field_config.route.v3.RouteAction.MaxStreamDuration.grpc_timeout_header_offset>`. 1650 // If present, Envoy will adjust the timeout provided by the `grpc-timeout` header by subtracting 1651 // the provided duration from the header. This is useful in allowing Envoy to set its global 1652 // timeout to be less than that of the deadline imposed by the calling client, which makes it more 1653 // likely that Envoy will handle the timeout instead of having the call canceled by the client. 1654 // The offset will only be applied if the provided grpc_timeout is greater than the offset. This 1655 // ensures that the offset will only ever decrease the timeout and never set it to 0 (meaning 1656 // infinity). 1657 // 1658 // Deprecated: Do not use. 1659 GrpcTimeoutOffset *duration.Duration `protobuf:"bytes,28,opt,name=grpc_timeout_offset,json=grpcTimeoutOffset,proto3" json:"grpc_timeout_offset,omitempty"` 1660 UpgradeConfigs []*RouteAction_UpgradeConfig `protobuf:"bytes,25,rep,name=upgrade_configs,json=upgradeConfigs,proto3" json:"upgrade_configs,omitempty"` 1661 // If present, Envoy will try to follow an upstream redirect response instead of proxying the 1662 // response back to the downstream. An upstream redirect response is defined 1663 // by :ref:`redirect_response_codes 1664 // <envoy_v3_api_field_config.route.v3.InternalRedirectPolicy.redirect_response_codes>`. 1665 InternalRedirectPolicy *InternalRedirectPolicy `protobuf:"bytes,34,opt,name=internal_redirect_policy,json=internalRedirectPolicy,proto3" json:"internal_redirect_policy,omitempty"` 1666 // Deprecated: Do not use. 1667 InternalRedirectAction RouteAction_InternalRedirectAction `protobuf:"varint,26,opt,name=internal_redirect_action,json=internalRedirectAction,proto3,enum=envoy.config.route.v3.RouteAction_InternalRedirectAction" json:"internal_redirect_action,omitempty"` 1668 // An internal redirect is handled, iff the number of previous internal redirects that a 1669 // downstream request has encountered is lower than this value, and 1670 // :ref:`internal_redirect_action <envoy_v3_api_field_config.route.v3.RouteAction.internal_redirect_action>` 1671 // is set to :ref:`HANDLE_INTERNAL_REDIRECT 1672 // <envoy_v3_api_enum_value_config.route.v3.RouteAction.InternalRedirectAction.HANDLE_INTERNAL_REDIRECT>` 1673 // In the case where a downstream request is bounced among multiple routes by internal redirect, 1674 // the first route that hits this threshold, or has 1675 // :ref:`internal_redirect_action <envoy_v3_api_field_config.route.v3.RouteAction.internal_redirect_action>` 1676 // set to 1677 // :ref:`PASS_THROUGH_INTERNAL_REDIRECT 1678 // <envoy_v3_api_enum_value_config.route.v3.RouteAction.InternalRedirectAction.PASS_THROUGH_INTERNAL_REDIRECT>` 1679 // will pass the redirect back to downstream. 1680 // 1681 // If not specified, at most one redirect will be followed. 1682 // 1683 // Deprecated: Do not use. 1684 MaxInternalRedirects *wrappers.UInt32Value `protobuf:"bytes,31,opt,name=max_internal_redirects,json=maxInternalRedirects,proto3" json:"max_internal_redirects,omitempty"` 1685 // Indicates that the route has a hedge policy. Note that if this is set, 1686 // it'll take precedence over the virtual host level hedge policy entirely 1687 // (e.g.: policies are not merged, most internal one becomes the enforced policy). 1688 HedgePolicy *HedgePolicy `protobuf:"bytes,27,opt,name=hedge_policy,json=hedgePolicy,proto3" json:"hedge_policy,omitempty"` 1689 // Specifies the maximum stream duration for this route. 1690 MaxStreamDuration *RouteAction_MaxStreamDuration `protobuf:"bytes,36,opt,name=max_stream_duration,json=maxStreamDuration,proto3" json:"max_stream_duration,omitempty"` 1691 // Deprecated: Do not use. 1692 HiddenEnvoyDeprecatedRequestMirrorPolicy *RouteAction_RequestMirrorPolicy `protobuf:"bytes,10,opt,name=hidden_envoy_deprecated_request_mirror_policy,json=hiddenEnvoyDeprecatedRequestMirrorPolicy,proto3" json:"hidden_envoy_deprecated_request_mirror_policy,omitempty"` 1693 } 1694 1695 func (x *RouteAction) Reset() { 1696 *x = RouteAction{} 1697 if protoimpl.UnsafeEnabled { 1698 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[6] 1699 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1700 ms.StoreMessageInfo(mi) 1701 } 1702 } 1703 1704 func (x *RouteAction) String() string { 1705 return protoimpl.X.MessageStringOf(x) 1706 } 1707 1708 func (*RouteAction) ProtoMessage() {} 1709 1710 func (x *RouteAction) ProtoReflect() protoreflect.Message { 1711 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[6] 1712 if protoimpl.UnsafeEnabled && x != nil { 1713 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1714 if ms.LoadMessageInfo() == nil { 1715 ms.StoreMessageInfo(mi) 1716 } 1717 return ms 1718 } 1719 return mi.MessageOf(x) 1720 } 1721 1722 // Deprecated: Use RouteAction.ProtoReflect.Descriptor instead. 1723 func (*RouteAction) Descriptor() ([]byte, []int) { 1724 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{6} 1725 } 1726 1727 func (m *RouteAction) GetClusterSpecifier() isRouteAction_ClusterSpecifier { 1728 if m != nil { 1729 return m.ClusterSpecifier 1730 } 1731 return nil 1732 } 1733 1734 func (x *RouteAction) GetCluster() string { 1735 if x, ok := x.GetClusterSpecifier().(*RouteAction_Cluster); ok { 1736 return x.Cluster 1737 } 1738 return "" 1739 } 1740 1741 func (x *RouteAction) GetClusterHeader() string { 1742 if x, ok := x.GetClusterSpecifier().(*RouteAction_ClusterHeader); ok { 1743 return x.ClusterHeader 1744 } 1745 return "" 1746 } 1747 1748 func (x *RouteAction) GetWeightedClusters() *WeightedCluster { 1749 if x, ok := x.GetClusterSpecifier().(*RouteAction_WeightedClusters); ok { 1750 return x.WeightedClusters 1751 } 1752 return nil 1753 } 1754 1755 func (x *RouteAction) GetClusterSpecifierPlugin() string { 1756 if x, ok := x.GetClusterSpecifier().(*RouteAction_ClusterSpecifierPlugin); ok { 1757 return x.ClusterSpecifierPlugin 1758 } 1759 return "" 1760 } 1761 1762 func (x *RouteAction) GetClusterNotFoundResponseCode() RouteAction_ClusterNotFoundResponseCode { 1763 if x != nil { 1764 return x.ClusterNotFoundResponseCode 1765 } 1766 return RouteAction_SERVICE_UNAVAILABLE 1767 } 1768 1769 func (x *RouteAction) GetMetadataMatch() *v3.Metadata { 1770 if x != nil { 1771 return x.MetadataMatch 1772 } 1773 return nil 1774 } 1775 1776 func (x *RouteAction) GetPrefixRewrite() string { 1777 if x != nil { 1778 return x.PrefixRewrite 1779 } 1780 return "" 1781 } 1782 1783 func (x *RouteAction) GetRegexRewrite() *v31.RegexMatchAndSubstitute { 1784 if x != nil { 1785 return x.RegexRewrite 1786 } 1787 return nil 1788 } 1789 1790 func (m *RouteAction) GetHostRewriteSpecifier() isRouteAction_HostRewriteSpecifier { 1791 if m != nil { 1792 return m.HostRewriteSpecifier 1793 } 1794 return nil 1795 } 1796 1797 func (x *RouteAction) GetHostRewriteLiteral() string { 1798 if x, ok := x.GetHostRewriteSpecifier().(*RouteAction_HostRewriteLiteral); ok { 1799 return x.HostRewriteLiteral 1800 } 1801 return "" 1802 } 1803 1804 func (x *RouteAction) GetAutoHostRewrite() *wrappers.BoolValue { 1805 if x, ok := x.GetHostRewriteSpecifier().(*RouteAction_AutoHostRewrite); ok { 1806 return x.AutoHostRewrite 1807 } 1808 return nil 1809 } 1810 1811 func (x *RouteAction) GetHostRewriteHeader() string { 1812 if x, ok := x.GetHostRewriteSpecifier().(*RouteAction_HostRewriteHeader); ok { 1813 return x.HostRewriteHeader 1814 } 1815 return "" 1816 } 1817 1818 func (x *RouteAction) GetHostRewritePathRegex() *v31.RegexMatchAndSubstitute { 1819 if x, ok := x.GetHostRewriteSpecifier().(*RouteAction_HostRewritePathRegex); ok { 1820 return x.HostRewritePathRegex 1821 } 1822 return nil 1823 } 1824 1825 func (x *RouteAction) GetTimeout() *duration.Duration { 1826 if x != nil { 1827 return x.Timeout 1828 } 1829 return nil 1830 } 1831 1832 func (x *RouteAction) GetIdleTimeout() *duration.Duration { 1833 if x != nil { 1834 return x.IdleTimeout 1835 } 1836 return nil 1837 } 1838 1839 func (x *RouteAction) GetRetryPolicy() *RetryPolicy { 1840 if x != nil { 1841 return x.RetryPolicy 1842 } 1843 return nil 1844 } 1845 1846 func (x *RouteAction) GetRetryPolicyTypedConfig() *any.Any { 1847 if x != nil { 1848 return x.RetryPolicyTypedConfig 1849 } 1850 return nil 1851 } 1852 1853 func (x *RouteAction) GetRequestMirrorPolicies() []*RouteAction_RequestMirrorPolicy { 1854 if x != nil { 1855 return x.RequestMirrorPolicies 1856 } 1857 return nil 1858 } 1859 1860 func (x *RouteAction) GetPriority() v3.RoutingPriority { 1861 if x != nil { 1862 return x.Priority 1863 } 1864 return v3.RoutingPriority_DEFAULT 1865 } 1866 1867 func (x *RouteAction) GetRateLimits() []*RateLimit { 1868 if x != nil { 1869 return x.RateLimits 1870 } 1871 return nil 1872 } 1873 1874 // Deprecated: Do not use. 1875 func (x *RouteAction) GetIncludeVhRateLimits() *wrappers.BoolValue { 1876 if x != nil { 1877 return x.IncludeVhRateLimits 1878 } 1879 return nil 1880 } 1881 1882 func (x *RouteAction) GetHashPolicy() []*RouteAction_HashPolicy { 1883 if x != nil { 1884 return x.HashPolicy 1885 } 1886 return nil 1887 } 1888 1889 func (x *RouteAction) GetCors() *CorsPolicy { 1890 if x != nil { 1891 return x.Cors 1892 } 1893 return nil 1894 } 1895 1896 // Deprecated: Do not use. 1897 func (x *RouteAction) GetMaxGrpcTimeout() *duration.Duration { 1898 if x != nil { 1899 return x.MaxGrpcTimeout 1900 } 1901 return nil 1902 } 1903 1904 // Deprecated: Do not use. 1905 func (x *RouteAction) GetGrpcTimeoutOffset() *duration.Duration { 1906 if x != nil { 1907 return x.GrpcTimeoutOffset 1908 } 1909 return nil 1910 } 1911 1912 func (x *RouteAction) GetUpgradeConfigs() []*RouteAction_UpgradeConfig { 1913 if x != nil { 1914 return x.UpgradeConfigs 1915 } 1916 return nil 1917 } 1918 1919 func (x *RouteAction) GetInternalRedirectPolicy() *InternalRedirectPolicy { 1920 if x != nil { 1921 return x.InternalRedirectPolicy 1922 } 1923 return nil 1924 } 1925 1926 // Deprecated: Do not use. 1927 func (x *RouteAction) GetInternalRedirectAction() RouteAction_InternalRedirectAction { 1928 if x != nil { 1929 return x.InternalRedirectAction 1930 } 1931 return RouteAction_PASS_THROUGH_INTERNAL_REDIRECT 1932 } 1933 1934 // Deprecated: Do not use. 1935 func (x *RouteAction) GetMaxInternalRedirects() *wrappers.UInt32Value { 1936 if x != nil { 1937 return x.MaxInternalRedirects 1938 } 1939 return nil 1940 } 1941 1942 func (x *RouteAction) GetHedgePolicy() *HedgePolicy { 1943 if x != nil { 1944 return x.HedgePolicy 1945 } 1946 return nil 1947 } 1948 1949 func (x *RouteAction) GetMaxStreamDuration() *RouteAction_MaxStreamDuration { 1950 if x != nil { 1951 return x.MaxStreamDuration 1952 } 1953 return nil 1954 } 1955 1956 // Deprecated: Do not use. 1957 func (x *RouteAction) GetHiddenEnvoyDeprecatedRequestMirrorPolicy() *RouteAction_RequestMirrorPolicy { 1958 if x != nil { 1959 return x.HiddenEnvoyDeprecatedRequestMirrorPolicy 1960 } 1961 return nil 1962 } 1963 1964 type isRouteAction_ClusterSpecifier interface { 1965 isRouteAction_ClusterSpecifier() 1966 } 1967 1968 type RouteAction_Cluster struct { 1969 // Indicates the upstream cluster to which the request should be routed 1970 // to. 1971 Cluster string `protobuf:"bytes,1,opt,name=cluster,proto3,oneof"` 1972 } 1973 1974 type RouteAction_ClusterHeader struct { 1975 // Envoy will determine the cluster to route to by reading the value of the 1976 // HTTP header named by cluster_header from the request headers. If the 1977 // header is not found or the referenced cluster does not exist, Envoy will 1978 // return a 404 response. 1979 // 1980 // .. attention:: 1981 // 1982 // Internally, Envoy always uses the HTTP/2 *:authority* header to represent the HTTP/1 1983 // *Host* header. Thus, if attempting to match on *Host*, match on *:authority* instead. 1984 // 1985 // .. note:: 1986 // 1987 // If the header appears multiple times only the first value is used. 1988 ClusterHeader string `protobuf:"bytes,2,opt,name=cluster_header,json=clusterHeader,proto3,oneof"` 1989 } 1990 1991 type RouteAction_WeightedClusters struct { 1992 // Multiple upstream clusters can be specified for a given route. The 1993 // request is routed to one of the upstream clusters based on weights 1994 // assigned to each cluster. See 1995 // :ref:`traffic splitting <config_http_conn_man_route_table_traffic_splitting_split>` 1996 // for additional documentation. 1997 WeightedClusters *WeightedCluster `protobuf:"bytes,3,opt,name=weighted_clusters,json=weightedClusters,proto3,oneof"` 1998 } 1999 2000 type RouteAction_ClusterSpecifierPlugin struct { 2001 // [#not-implemented-hide:] 2002 // Name of the cluster specifier plugin to use to determine the cluster for 2003 // requests on this route. The plugin name must be defined in the associated 2004 // :ref:`envoy_v3_api_field_config.route.v3.RouteConfiguration.cluster_specifier_plugins` 2005 // in the 2006 // :ref:`envoy_v3_api_field_config.core.v3.TypedExtensionConfig.name` field. 2007 ClusterSpecifierPlugin string `protobuf:"bytes,37,opt,name=cluster_specifier_plugin,json=clusterSpecifierPlugin,proto3,oneof"` 2008 } 2009 2010 func (*RouteAction_Cluster) isRouteAction_ClusterSpecifier() {} 2011 2012 func (*RouteAction_ClusterHeader) isRouteAction_ClusterSpecifier() {} 2013 2014 func (*RouteAction_WeightedClusters) isRouteAction_ClusterSpecifier() {} 2015 2016 func (*RouteAction_ClusterSpecifierPlugin) isRouteAction_ClusterSpecifier() {} 2017 2018 type isRouteAction_HostRewriteSpecifier interface { 2019 isRouteAction_HostRewriteSpecifier() 2020 } 2021 2022 type RouteAction_HostRewriteLiteral struct { 2023 // Indicates that during forwarding, the host header will be swapped with 2024 // this value. 2025 HostRewriteLiteral string `protobuf:"bytes,6,opt,name=host_rewrite_literal,json=hostRewriteLiteral,proto3,oneof"` 2026 } 2027 2028 type RouteAction_AutoHostRewrite struct { 2029 // Indicates that during forwarding, the host header will be swapped with 2030 // the hostname of the upstream host chosen by the cluster manager. This 2031 // option is applicable only when the destination cluster for a route is of 2032 // type *strict_dns* or *logical_dns*. Setting this to true with other cluster 2033 // types has no effect. 2034 AutoHostRewrite *wrappers.BoolValue `protobuf:"bytes,7,opt,name=auto_host_rewrite,json=autoHostRewrite,proto3,oneof"` 2035 } 2036 2037 type RouteAction_HostRewriteHeader struct { 2038 // Indicates that during forwarding, the host header will be swapped with the content of given 2039 // downstream or :ref:`custom <config_http_conn_man_headers_custom_request_headers>` header. 2040 // If header value is empty, host header is left intact. 2041 // 2042 // .. attention:: 2043 // 2044 // Pay attention to the potential security implications of using this option. Provided header 2045 // must come from trusted source. 2046 // 2047 // .. note:: 2048 // 2049 // If the header appears multiple times only the first value is used. 2050 HostRewriteHeader string `protobuf:"bytes,29,opt,name=host_rewrite_header,json=hostRewriteHeader,proto3,oneof"` 2051 } 2052 2053 type RouteAction_HostRewritePathRegex struct { 2054 // Indicates that during forwarding, the host header will be swapped with 2055 // the result of the regex substitution executed on path value with query and fragment removed. 2056 // This is useful for transitioning variable content between path segment and subdomain. 2057 // 2058 // For example with the following config: 2059 // 2060 // .. code-block:: yaml 2061 // 2062 // host_rewrite_path_regex: 2063 // pattern: 2064 // google_re2: {} 2065 // regex: "^/(.+)/.+$" 2066 // substitution: \1 2067 // 2068 // Would rewrite the host header to `envoyproxy.io` given the path `/envoyproxy.io/some/path`. 2069 HostRewritePathRegex *v31.RegexMatchAndSubstitute `protobuf:"bytes,35,opt,name=host_rewrite_path_regex,json=hostRewritePathRegex,proto3,oneof"` 2070 } 2071 2072 func (*RouteAction_HostRewriteLiteral) isRouteAction_HostRewriteSpecifier() {} 2073 2074 func (*RouteAction_AutoHostRewrite) isRouteAction_HostRewriteSpecifier() {} 2075 2076 func (*RouteAction_HostRewriteHeader) isRouteAction_HostRewriteSpecifier() {} 2077 2078 func (*RouteAction_HostRewritePathRegex) isRouteAction_HostRewriteSpecifier() {} 2079 2080 // HTTP retry :ref:`architecture overview <arch_overview_http_routing_retry>`. 2081 // [#next-free-field: 12] 2082 type RetryPolicy struct { 2083 state protoimpl.MessageState 2084 sizeCache protoimpl.SizeCache 2085 unknownFields protoimpl.UnknownFields 2086 2087 // Specifies the conditions under which retry takes place. These are the same 2088 // conditions documented for :ref:`config_http_filters_router_x-envoy-retry-on` and 2089 // :ref:`config_http_filters_router_x-envoy-retry-grpc-on`. 2090 RetryOn string `protobuf:"bytes,1,opt,name=retry_on,json=retryOn,proto3" json:"retry_on,omitempty"` 2091 // Specifies the allowed number of retries. This parameter is optional and 2092 // defaults to 1. These are the same conditions documented for 2093 // :ref:`config_http_filters_router_x-envoy-max-retries`. 2094 NumRetries *wrappers.UInt32Value `protobuf:"bytes,2,opt,name=num_retries,json=numRetries,proto3" json:"num_retries,omitempty"` 2095 // Specifies a non-zero upstream timeout per retry attempt. This parameter is optional. The 2096 // same conditions documented for 2097 // :ref:`config_http_filters_router_x-envoy-upstream-rq-per-try-timeout-ms` apply. 2098 // 2099 // .. note:: 2100 // 2101 // If left unspecified, Envoy will use the global 2102 // :ref:`route timeout <envoy_v3_api_field_config.route.v3.RouteAction.timeout>` for the request. 2103 // Consequently, when using a :ref:`5xx <config_http_filters_router_x-envoy-retry-on>` based 2104 // retry policy, a request that times out will not be retried as the total timeout budget 2105 // would have been exhausted. 2106 PerTryTimeout *duration.Duration `protobuf:"bytes,3,opt,name=per_try_timeout,json=perTryTimeout,proto3" json:"per_try_timeout,omitempty"` 2107 // Specifies an implementation of a RetryPriority which is used to determine the 2108 // distribution of load across priorities used for retries. Refer to 2109 // :ref:`retry plugin configuration <arch_overview_http_retry_plugins>` for more details. 2110 RetryPriority *RetryPolicy_RetryPriority `protobuf:"bytes,4,opt,name=retry_priority,json=retryPriority,proto3" json:"retry_priority,omitempty"` 2111 // Specifies a collection of RetryHostPredicates that will be consulted when selecting a host 2112 // for retries. If any of the predicates reject the host, host selection will be reattempted. 2113 // Refer to :ref:`retry plugin configuration <arch_overview_http_retry_plugins>` for more 2114 // details. 2115 RetryHostPredicate []*RetryPolicy_RetryHostPredicate `protobuf:"bytes,5,rep,name=retry_host_predicate,json=retryHostPredicate,proto3" json:"retry_host_predicate,omitempty"` 2116 // The maximum number of times host selection will be reattempted before giving up, at which 2117 // point the host that was last selected will be routed to. If unspecified, this will default to 2118 // retrying once. 2119 HostSelectionRetryMaxAttempts int64 `protobuf:"varint,6,opt,name=host_selection_retry_max_attempts,json=hostSelectionRetryMaxAttempts,proto3" json:"host_selection_retry_max_attempts,omitempty"` 2120 // HTTP status codes that should trigger a retry in addition to those specified by retry_on. 2121 RetriableStatusCodes []uint32 `protobuf:"varint,7,rep,packed,name=retriable_status_codes,json=retriableStatusCodes,proto3" json:"retriable_status_codes,omitempty"` 2122 // Specifies parameters that control exponential retry back off. This parameter is optional, in which case the 2123 // default base interval is 25 milliseconds or, if set, the current value of the 2124 // `upstream.base_retry_backoff_ms` runtime parameter. The default maximum interval is 10 times 2125 // the base interval. The documentation for :ref:`config_http_filters_router_x-envoy-max-retries` 2126 // describes Envoy's back-off algorithm. 2127 RetryBackOff *RetryPolicy_RetryBackOff `protobuf:"bytes,8,opt,name=retry_back_off,json=retryBackOff,proto3" json:"retry_back_off,omitempty"` 2128 // Specifies parameters that control a retry back-off strategy that is used 2129 // when the request is rate limited by the upstream server. The server may 2130 // return a response header like ``Retry-After`` or ``X-RateLimit-Reset`` to 2131 // provide feedback to the client on how long to wait before retrying. If 2132 // configured, this back-off strategy will be used instead of the 2133 // default exponential back off strategy (configured using `retry_back_off`) 2134 // whenever a response includes the matching headers. 2135 RateLimitedRetryBackOff *RetryPolicy_RateLimitedRetryBackOff `protobuf:"bytes,11,opt,name=rate_limited_retry_back_off,json=rateLimitedRetryBackOff,proto3" json:"rate_limited_retry_back_off,omitempty"` 2136 // HTTP response headers that trigger a retry if present in the response. A retry will be 2137 // triggered if any of the header matches match the upstream response headers. 2138 // The field is only consulted if 'retriable-headers' retry policy is active. 2139 RetriableHeaders []*HeaderMatcher `protobuf:"bytes,9,rep,name=retriable_headers,json=retriableHeaders,proto3" json:"retriable_headers,omitempty"` 2140 // HTTP headers which must be present in the request for retries to be attempted. 2141 RetriableRequestHeaders []*HeaderMatcher `protobuf:"bytes,10,rep,name=retriable_request_headers,json=retriableRequestHeaders,proto3" json:"retriable_request_headers,omitempty"` 2142 } 2143 2144 func (x *RetryPolicy) Reset() { 2145 *x = RetryPolicy{} 2146 if protoimpl.UnsafeEnabled { 2147 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[7] 2148 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2149 ms.StoreMessageInfo(mi) 2150 } 2151 } 2152 2153 func (x *RetryPolicy) String() string { 2154 return protoimpl.X.MessageStringOf(x) 2155 } 2156 2157 func (*RetryPolicy) ProtoMessage() {} 2158 2159 func (x *RetryPolicy) ProtoReflect() protoreflect.Message { 2160 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[7] 2161 if protoimpl.UnsafeEnabled && x != nil { 2162 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2163 if ms.LoadMessageInfo() == nil { 2164 ms.StoreMessageInfo(mi) 2165 } 2166 return ms 2167 } 2168 return mi.MessageOf(x) 2169 } 2170 2171 // Deprecated: Use RetryPolicy.ProtoReflect.Descriptor instead. 2172 func (*RetryPolicy) Descriptor() ([]byte, []int) { 2173 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{7} 2174 } 2175 2176 func (x *RetryPolicy) GetRetryOn() string { 2177 if x != nil { 2178 return x.RetryOn 2179 } 2180 return "" 2181 } 2182 2183 func (x *RetryPolicy) GetNumRetries() *wrappers.UInt32Value { 2184 if x != nil { 2185 return x.NumRetries 2186 } 2187 return nil 2188 } 2189 2190 func (x *RetryPolicy) GetPerTryTimeout() *duration.Duration { 2191 if x != nil { 2192 return x.PerTryTimeout 2193 } 2194 return nil 2195 } 2196 2197 func (x *RetryPolicy) GetRetryPriority() *RetryPolicy_RetryPriority { 2198 if x != nil { 2199 return x.RetryPriority 2200 } 2201 return nil 2202 } 2203 2204 func (x *RetryPolicy) GetRetryHostPredicate() []*RetryPolicy_RetryHostPredicate { 2205 if x != nil { 2206 return x.RetryHostPredicate 2207 } 2208 return nil 2209 } 2210 2211 func (x *RetryPolicy) GetHostSelectionRetryMaxAttempts() int64 { 2212 if x != nil { 2213 return x.HostSelectionRetryMaxAttempts 2214 } 2215 return 0 2216 } 2217 2218 func (x *RetryPolicy) GetRetriableStatusCodes() []uint32 { 2219 if x != nil { 2220 return x.RetriableStatusCodes 2221 } 2222 return nil 2223 } 2224 2225 func (x *RetryPolicy) GetRetryBackOff() *RetryPolicy_RetryBackOff { 2226 if x != nil { 2227 return x.RetryBackOff 2228 } 2229 return nil 2230 } 2231 2232 func (x *RetryPolicy) GetRateLimitedRetryBackOff() *RetryPolicy_RateLimitedRetryBackOff { 2233 if x != nil { 2234 return x.RateLimitedRetryBackOff 2235 } 2236 return nil 2237 } 2238 2239 func (x *RetryPolicy) GetRetriableHeaders() []*HeaderMatcher { 2240 if x != nil { 2241 return x.RetriableHeaders 2242 } 2243 return nil 2244 } 2245 2246 func (x *RetryPolicy) GetRetriableRequestHeaders() []*HeaderMatcher { 2247 if x != nil { 2248 return x.RetriableRequestHeaders 2249 } 2250 return nil 2251 } 2252 2253 // HTTP request hedging :ref:`architecture overview <arch_overview_http_routing_hedging>`. 2254 type HedgePolicy struct { 2255 state protoimpl.MessageState 2256 sizeCache protoimpl.SizeCache 2257 unknownFields protoimpl.UnknownFields 2258 2259 // Specifies the number of initial requests that should be sent upstream. 2260 // Must be at least 1. 2261 // Defaults to 1. 2262 // [#not-implemented-hide:] 2263 InitialRequests *wrappers.UInt32Value `protobuf:"bytes,1,opt,name=initial_requests,json=initialRequests,proto3" json:"initial_requests,omitempty"` 2264 // Specifies a probability that an additional upstream request should be sent 2265 // on top of what is specified by initial_requests. 2266 // Defaults to 0. 2267 // [#not-implemented-hide:] 2268 AdditionalRequestChance *v32.FractionalPercent `protobuf:"bytes,2,opt,name=additional_request_chance,json=additionalRequestChance,proto3" json:"additional_request_chance,omitempty"` 2269 // Indicates that a hedged request should be sent when the per-try timeout is hit. 2270 // This means that a retry will be issued without resetting the original request, leaving multiple upstream requests in flight. 2271 // The first request to complete successfully will be the one returned to the caller. 2272 // 2273 // * At any time, a successful response (i.e. not triggering any of the retry-on conditions) would be returned to the client. 2274 // * Before per-try timeout, an error response (per retry-on conditions) would be retried immediately or returned ot the client 2275 // if there are no more retries left. 2276 // * After per-try timeout, an error response would be discarded, as a retry in the form of a hedged request is already in progress. 2277 // 2278 // Note: For this to have effect, you must have a :ref:`RetryPolicy <envoy_v3_api_msg_config.route.v3.RetryPolicy>` that retries at least 2279 // one error code and specifies a maximum number of retries. 2280 // 2281 // Defaults to false. 2282 HedgeOnPerTryTimeout bool `protobuf:"varint,3,opt,name=hedge_on_per_try_timeout,json=hedgeOnPerTryTimeout,proto3" json:"hedge_on_per_try_timeout,omitempty"` 2283 } 2284 2285 func (x *HedgePolicy) Reset() { 2286 *x = HedgePolicy{} 2287 if protoimpl.UnsafeEnabled { 2288 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[8] 2289 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2290 ms.StoreMessageInfo(mi) 2291 } 2292 } 2293 2294 func (x *HedgePolicy) String() string { 2295 return protoimpl.X.MessageStringOf(x) 2296 } 2297 2298 func (*HedgePolicy) ProtoMessage() {} 2299 2300 func (x *HedgePolicy) ProtoReflect() protoreflect.Message { 2301 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[8] 2302 if protoimpl.UnsafeEnabled && x != nil { 2303 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2304 if ms.LoadMessageInfo() == nil { 2305 ms.StoreMessageInfo(mi) 2306 } 2307 return ms 2308 } 2309 return mi.MessageOf(x) 2310 } 2311 2312 // Deprecated: Use HedgePolicy.ProtoReflect.Descriptor instead. 2313 func (*HedgePolicy) Descriptor() ([]byte, []int) { 2314 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{8} 2315 } 2316 2317 func (x *HedgePolicy) GetInitialRequests() *wrappers.UInt32Value { 2318 if x != nil { 2319 return x.InitialRequests 2320 } 2321 return nil 2322 } 2323 2324 func (x *HedgePolicy) GetAdditionalRequestChance() *v32.FractionalPercent { 2325 if x != nil { 2326 return x.AdditionalRequestChance 2327 } 2328 return nil 2329 } 2330 2331 func (x *HedgePolicy) GetHedgeOnPerTryTimeout() bool { 2332 if x != nil { 2333 return x.HedgeOnPerTryTimeout 2334 } 2335 return false 2336 } 2337 2338 // [#next-free-field: 10] 2339 type RedirectAction struct { 2340 state protoimpl.MessageState 2341 sizeCache protoimpl.SizeCache 2342 unknownFields protoimpl.UnknownFields 2343 2344 // When the scheme redirection take place, the following rules apply: 2345 // 1. If the source URI scheme is `http` and the port is explicitly 2346 // set to `:80`, the port will be removed after the redirection 2347 // 2. If the source URI scheme is `https` and the port is explicitly 2348 // set to `:443`, the port will be removed after the redirection 2349 // 2350 // Types that are assignable to SchemeRewriteSpecifier: 2351 // *RedirectAction_HttpsRedirect 2352 // *RedirectAction_SchemeRedirect 2353 SchemeRewriteSpecifier isRedirectAction_SchemeRewriteSpecifier `protobuf_oneof:"scheme_rewrite_specifier"` 2354 // The host portion of the URL will be swapped with this value. 2355 HostRedirect string `protobuf:"bytes,1,opt,name=host_redirect,json=hostRedirect,proto3" json:"host_redirect,omitempty"` 2356 // The port value of the URL will be swapped with this value. 2357 PortRedirect uint32 `protobuf:"varint,8,opt,name=port_redirect,json=portRedirect,proto3" json:"port_redirect,omitempty"` 2358 // Types that are assignable to PathRewriteSpecifier: 2359 // *RedirectAction_PathRedirect 2360 // *RedirectAction_PrefixRewrite 2361 // *RedirectAction_RegexRewrite 2362 PathRewriteSpecifier isRedirectAction_PathRewriteSpecifier `protobuf_oneof:"path_rewrite_specifier"` 2363 // The HTTP status code to use in the redirect response. The default response 2364 // code is MOVED_PERMANENTLY (301). 2365 ResponseCode RedirectAction_RedirectResponseCode `protobuf:"varint,3,opt,name=response_code,json=responseCode,proto3,enum=envoy.config.route.v3.RedirectAction_RedirectResponseCode" json:"response_code,omitempty"` 2366 // Indicates that during redirection, the query portion of the URL will 2367 // be removed. Default value is false. 2368 StripQuery bool `protobuf:"varint,6,opt,name=strip_query,json=stripQuery,proto3" json:"strip_query,omitempty"` 2369 } 2370 2371 func (x *RedirectAction) Reset() { 2372 *x = RedirectAction{} 2373 if protoimpl.UnsafeEnabled { 2374 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[9] 2375 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2376 ms.StoreMessageInfo(mi) 2377 } 2378 } 2379 2380 func (x *RedirectAction) String() string { 2381 return protoimpl.X.MessageStringOf(x) 2382 } 2383 2384 func (*RedirectAction) ProtoMessage() {} 2385 2386 func (x *RedirectAction) ProtoReflect() protoreflect.Message { 2387 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[9] 2388 if protoimpl.UnsafeEnabled && x != nil { 2389 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2390 if ms.LoadMessageInfo() == nil { 2391 ms.StoreMessageInfo(mi) 2392 } 2393 return ms 2394 } 2395 return mi.MessageOf(x) 2396 } 2397 2398 // Deprecated: Use RedirectAction.ProtoReflect.Descriptor instead. 2399 func (*RedirectAction) Descriptor() ([]byte, []int) { 2400 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{9} 2401 } 2402 2403 func (m *RedirectAction) GetSchemeRewriteSpecifier() isRedirectAction_SchemeRewriteSpecifier { 2404 if m != nil { 2405 return m.SchemeRewriteSpecifier 2406 } 2407 return nil 2408 } 2409 2410 func (x *RedirectAction) GetHttpsRedirect() bool { 2411 if x, ok := x.GetSchemeRewriteSpecifier().(*RedirectAction_HttpsRedirect); ok { 2412 return x.HttpsRedirect 2413 } 2414 return false 2415 } 2416 2417 func (x *RedirectAction) GetSchemeRedirect() string { 2418 if x, ok := x.GetSchemeRewriteSpecifier().(*RedirectAction_SchemeRedirect); ok { 2419 return x.SchemeRedirect 2420 } 2421 return "" 2422 } 2423 2424 func (x *RedirectAction) GetHostRedirect() string { 2425 if x != nil { 2426 return x.HostRedirect 2427 } 2428 return "" 2429 } 2430 2431 func (x *RedirectAction) GetPortRedirect() uint32 { 2432 if x != nil { 2433 return x.PortRedirect 2434 } 2435 return 0 2436 } 2437 2438 func (m *RedirectAction) GetPathRewriteSpecifier() isRedirectAction_PathRewriteSpecifier { 2439 if m != nil { 2440 return m.PathRewriteSpecifier 2441 } 2442 return nil 2443 } 2444 2445 func (x *RedirectAction) GetPathRedirect() string { 2446 if x, ok := x.GetPathRewriteSpecifier().(*RedirectAction_PathRedirect); ok { 2447 return x.PathRedirect 2448 } 2449 return "" 2450 } 2451 2452 func (x *RedirectAction) GetPrefixRewrite() string { 2453 if x, ok := x.GetPathRewriteSpecifier().(*RedirectAction_PrefixRewrite); ok { 2454 return x.PrefixRewrite 2455 } 2456 return "" 2457 } 2458 2459 func (x *RedirectAction) GetRegexRewrite() *v31.RegexMatchAndSubstitute { 2460 if x, ok := x.GetPathRewriteSpecifier().(*RedirectAction_RegexRewrite); ok { 2461 return x.RegexRewrite 2462 } 2463 return nil 2464 } 2465 2466 func (x *RedirectAction) GetResponseCode() RedirectAction_RedirectResponseCode { 2467 if x != nil { 2468 return x.ResponseCode 2469 } 2470 return RedirectAction_MOVED_PERMANENTLY 2471 } 2472 2473 func (x *RedirectAction) GetStripQuery() bool { 2474 if x != nil { 2475 return x.StripQuery 2476 } 2477 return false 2478 } 2479 2480 type isRedirectAction_SchemeRewriteSpecifier interface { 2481 isRedirectAction_SchemeRewriteSpecifier() 2482 } 2483 2484 type RedirectAction_HttpsRedirect struct { 2485 // The scheme portion of the URL will be swapped with "https". 2486 HttpsRedirect bool `protobuf:"varint,4,opt,name=https_redirect,json=httpsRedirect,proto3,oneof"` 2487 } 2488 2489 type RedirectAction_SchemeRedirect struct { 2490 // The scheme portion of the URL will be swapped with this value. 2491 SchemeRedirect string `protobuf:"bytes,7,opt,name=scheme_redirect,json=schemeRedirect,proto3,oneof"` 2492 } 2493 2494 func (*RedirectAction_HttpsRedirect) isRedirectAction_SchemeRewriteSpecifier() {} 2495 2496 func (*RedirectAction_SchemeRedirect) isRedirectAction_SchemeRewriteSpecifier() {} 2497 2498 type isRedirectAction_PathRewriteSpecifier interface { 2499 isRedirectAction_PathRewriteSpecifier() 2500 } 2501 2502 type RedirectAction_PathRedirect struct { 2503 // The path portion of the URL will be swapped with this value. 2504 // Please note that query string in path_redirect will override the 2505 // request's query string and will not be stripped. 2506 // 2507 // For example, let's say we have the following routes: 2508 // 2509 // - match: { path: "/old-path-1" } 2510 // redirect: { path_redirect: "/new-path-1" } 2511 // - match: { path: "/old-path-2" } 2512 // redirect: { path_redirect: "/new-path-2", strip-query: "true" } 2513 // - match: { path: "/old-path-3" } 2514 // redirect: { path_redirect: "/new-path-3?foo=1", strip_query: "true" } 2515 // 2516 // 1. if request uri is "/old-path-1?bar=1", users will be redirected to "/new-path-1?bar=1" 2517 // 2. if request uri is "/old-path-2?bar=1", users will be redirected to "/new-path-2" 2518 // 3. if request uri is "/old-path-3?bar=1", users will be redirected to "/new-path-3?foo=1" 2519 PathRedirect string `protobuf:"bytes,2,opt,name=path_redirect,json=pathRedirect,proto3,oneof"` 2520 } 2521 2522 type RedirectAction_PrefixRewrite struct { 2523 // Indicates that during redirection, the matched prefix (or path) 2524 // should be swapped with this value. This option allows redirect URLs be dynamically created 2525 // based on the request. 2526 // 2527 // .. attention:: 2528 // 2529 // Pay attention to the use of trailing slashes as mentioned in 2530 // :ref:`RouteAction's prefix_rewrite <envoy_v3_api_field_config.route.v3.RouteAction.prefix_rewrite>`. 2531 PrefixRewrite string `protobuf:"bytes,5,opt,name=prefix_rewrite,json=prefixRewrite,proto3,oneof"` 2532 } 2533 2534 type RedirectAction_RegexRewrite struct { 2535 // Indicates that during redirect, portions of the path that match the 2536 // pattern should be rewritten, even allowing the substitution of capture 2537 // groups from the pattern into the new path as specified by the rewrite 2538 // substitution string. This is useful to allow application paths to be 2539 // rewritten in a way that is aware of segments with variable content like 2540 // identifiers. 2541 // 2542 // Examples using Google's `RE2 <https://github.com/google/re2>`_ engine: 2543 // 2544 // * The path pattern ``^/service/([^/]+)(/.*)$`` paired with a substitution 2545 // string of ``\2/instance/\1`` would transform ``/service/foo/v1/api`` 2546 // into ``/v1/api/instance/foo``. 2547 // 2548 // * The pattern ``one`` paired with a substitution string of ``two`` would 2549 // transform ``/xxx/one/yyy/one/zzz`` into ``/xxx/two/yyy/two/zzz``. 2550 // 2551 // * The pattern ``^(.*?)one(.*)$`` paired with a substitution string of 2552 // ``\1two\2`` would replace only the first occurrence of ``one``, 2553 // transforming path ``/xxx/one/yyy/one/zzz`` into ``/xxx/two/yyy/one/zzz``. 2554 // 2555 // * The pattern ``(?i)/xxx/`` paired with a substitution string of ``/yyy/`` 2556 // would do a case-insensitive match and transform path ``/aaa/XxX/bbb`` to 2557 // ``/aaa/yyy/bbb``. 2558 RegexRewrite *v31.RegexMatchAndSubstitute `protobuf:"bytes,9,opt,name=regex_rewrite,json=regexRewrite,proto3,oneof"` 2559 } 2560 2561 func (*RedirectAction_PathRedirect) isRedirectAction_PathRewriteSpecifier() {} 2562 2563 func (*RedirectAction_PrefixRewrite) isRedirectAction_PathRewriteSpecifier() {} 2564 2565 func (*RedirectAction_RegexRewrite) isRedirectAction_PathRewriteSpecifier() {} 2566 2567 type DirectResponseAction struct { 2568 state protoimpl.MessageState 2569 sizeCache protoimpl.SizeCache 2570 unknownFields protoimpl.UnknownFields 2571 2572 // Specifies the HTTP response status to be returned. 2573 Status uint32 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"` 2574 // Specifies the content of the response body. If this setting is omitted, 2575 // no body is included in the generated response. 2576 // 2577 // .. note:: 2578 // 2579 // Headers can be specified using *response_headers_to_add* in the enclosing 2580 // :ref:`envoy_v3_api_msg_config.route.v3.Route`, :ref:`envoy_v3_api_msg_config.route.v3.RouteConfiguration` or 2581 // :ref:`envoy_v3_api_msg_config.route.v3.VirtualHost`. 2582 Body *v3.DataSource `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"` 2583 } 2584 2585 func (x *DirectResponseAction) Reset() { 2586 *x = DirectResponseAction{} 2587 if protoimpl.UnsafeEnabled { 2588 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[10] 2589 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2590 ms.StoreMessageInfo(mi) 2591 } 2592 } 2593 2594 func (x *DirectResponseAction) String() string { 2595 return protoimpl.X.MessageStringOf(x) 2596 } 2597 2598 func (*DirectResponseAction) ProtoMessage() {} 2599 2600 func (x *DirectResponseAction) ProtoReflect() protoreflect.Message { 2601 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[10] 2602 if protoimpl.UnsafeEnabled && x != nil { 2603 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2604 if ms.LoadMessageInfo() == nil { 2605 ms.StoreMessageInfo(mi) 2606 } 2607 return ms 2608 } 2609 return mi.MessageOf(x) 2610 } 2611 2612 // Deprecated: Use DirectResponseAction.ProtoReflect.Descriptor instead. 2613 func (*DirectResponseAction) Descriptor() ([]byte, []int) { 2614 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{10} 2615 } 2616 2617 func (x *DirectResponseAction) GetStatus() uint32 { 2618 if x != nil { 2619 return x.Status 2620 } 2621 return 0 2622 } 2623 2624 func (x *DirectResponseAction) GetBody() *v3.DataSource { 2625 if x != nil { 2626 return x.Body 2627 } 2628 return nil 2629 } 2630 2631 // [#not-implemented-hide:] 2632 type NonForwardingAction struct { 2633 state protoimpl.MessageState 2634 sizeCache protoimpl.SizeCache 2635 unknownFields protoimpl.UnknownFields 2636 } 2637 2638 func (x *NonForwardingAction) Reset() { 2639 *x = NonForwardingAction{} 2640 if protoimpl.UnsafeEnabled { 2641 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[11] 2642 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2643 ms.StoreMessageInfo(mi) 2644 } 2645 } 2646 2647 func (x *NonForwardingAction) String() string { 2648 return protoimpl.X.MessageStringOf(x) 2649 } 2650 2651 func (*NonForwardingAction) ProtoMessage() {} 2652 2653 func (x *NonForwardingAction) ProtoReflect() protoreflect.Message { 2654 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[11] 2655 if protoimpl.UnsafeEnabled && x != nil { 2656 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2657 if ms.LoadMessageInfo() == nil { 2658 ms.StoreMessageInfo(mi) 2659 } 2660 return ms 2661 } 2662 return mi.MessageOf(x) 2663 } 2664 2665 // Deprecated: Use NonForwardingAction.ProtoReflect.Descriptor instead. 2666 func (*NonForwardingAction) Descriptor() ([]byte, []int) { 2667 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{11} 2668 } 2669 2670 type Decorator struct { 2671 state protoimpl.MessageState 2672 sizeCache protoimpl.SizeCache 2673 unknownFields protoimpl.UnknownFields 2674 2675 // The operation name associated with the request matched to this route. If tracing is 2676 // enabled, this information will be used as the span name reported for this request. 2677 // 2678 // .. note:: 2679 // 2680 // For ingress (inbound) requests, or egress (outbound) responses, this value may be overridden 2681 // by the :ref:`x-envoy-decorator-operation 2682 // <config_http_filters_router_x-envoy-decorator-operation>` header. 2683 Operation string `protobuf:"bytes,1,opt,name=operation,proto3" json:"operation,omitempty"` 2684 // Whether the decorated details should be propagated to the other party. The default is true. 2685 Propagate *wrappers.BoolValue `protobuf:"bytes,2,opt,name=propagate,proto3" json:"propagate,omitempty"` 2686 } 2687 2688 func (x *Decorator) Reset() { 2689 *x = Decorator{} 2690 if protoimpl.UnsafeEnabled { 2691 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[12] 2692 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2693 ms.StoreMessageInfo(mi) 2694 } 2695 } 2696 2697 func (x *Decorator) String() string { 2698 return protoimpl.X.MessageStringOf(x) 2699 } 2700 2701 func (*Decorator) ProtoMessage() {} 2702 2703 func (x *Decorator) ProtoReflect() protoreflect.Message { 2704 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[12] 2705 if protoimpl.UnsafeEnabled && x != nil { 2706 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2707 if ms.LoadMessageInfo() == nil { 2708 ms.StoreMessageInfo(mi) 2709 } 2710 return ms 2711 } 2712 return mi.MessageOf(x) 2713 } 2714 2715 // Deprecated: Use Decorator.ProtoReflect.Descriptor instead. 2716 func (*Decorator) Descriptor() ([]byte, []int) { 2717 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{12} 2718 } 2719 2720 func (x *Decorator) GetOperation() string { 2721 if x != nil { 2722 return x.Operation 2723 } 2724 return "" 2725 } 2726 2727 func (x *Decorator) GetPropagate() *wrappers.BoolValue { 2728 if x != nil { 2729 return x.Propagate 2730 } 2731 return nil 2732 } 2733 2734 type Tracing struct { 2735 state protoimpl.MessageState 2736 sizeCache protoimpl.SizeCache 2737 unknownFields protoimpl.UnknownFields 2738 2739 // Target percentage of requests managed by this HTTP connection manager that will be force 2740 // traced if the :ref:`x-client-trace-id <config_http_conn_man_headers_x-client-trace-id>` 2741 // header is set. This field is a direct analog for the runtime variable 2742 // 'tracing.client_sampling' in the :ref:`HTTP Connection Manager 2743 // <config_http_conn_man_runtime>`. 2744 // Default: 100% 2745 ClientSampling *v32.FractionalPercent `protobuf:"bytes,1,opt,name=client_sampling,json=clientSampling,proto3" json:"client_sampling,omitempty"` 2746 // Target percentage of requests managed by this HTTP connection manager that will be randomly 2747 // selected for trace generation, if not requested by the client or not forced. This field is 2748 // a direct analog for the runtime variable 'tracing.random_sampling' in the 2749 // :ref:`HTTP Connection Manager <config_http_conn_man_runtime>`. 2750 // Default: 100% 2751 RandomSampling *v32.FractionalPercent `protobuf:"bytes,2,opt,name=random_sampling,json=randomSampling,proto3" json:"random_sampling,omitempty"` 2752 // Target percentage of requests managed by this HTTP connection manager that will be traced 2753 // after all other sampling checks have been applied (client-directed, force tracing, random 2754 // sampling). This field functions as an upper limit on the total configured sampling rate. For 2755 // instance, setting client_sampling to 100% but overall_sampling to 1% will result in only 1% 2756 // of client requests with the appropriate headers to be force traced. This field is a direct 2757 // analog for the runtime variable 'tracing.global_enabled' in the 2758 // :ref:`HTTP Connection Manager <config_http_conn_man_runtime>`. 2759 // Default: 100% 2760 OverallSampling *v32.FractionalPercent `protobuf:"bytes,3,opt,name=overall_sampling,json=overallSampling,proto3" json:"overall_sampling,omitempty"` 2761 // A list of custom tags with unique tag name to create tags for the active span. 2762 // It will take effect after merging with the :ref:`corresponding configuration 2763 // <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.Tracing.custom_tags>` 2764 // configured in the HTTP connection manager. If two tags with the same name are configured 2765 // each in the HTTP connection manager and the route level, the one configured here takes 2766 // priority. 2767 CustomTags []*v33.CustomTag `protobuf:"bytes,4,rep,name=custom_tags,json=customTags,proto3" json:"custom_tags,omitempty"` 2768 } 2769 2770 func (x *Tracing) Reset() { 2771 *x = Tracing{} 2772 if protoimpl.UnsafeEnabled { 2773 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[13] 2774 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2775 ms.StoreMessageInfo(mi) 2776 } 2777 } 2778 2779 func (x *Tracing) String() string { 2780 return protoimpl.X.MessageStringOf(x) 2781 } 2782 2783 func (*Tracing) ProtoMessage() {} 2784 2785 func (x *Tracing) ProtoReflect() protoreflect.Message { 2786 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[13] 2787 if protoimpl.UnsafeEnabled && x != nil { 2788 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2789 if ms.LoadMessageInfo() == nil { 2790 ms.StoreMessageInfo(mi) 2791 } 2792 return ms 2793 } 2794 return mi.MessageOf(x) 2795 } 2796 2797 // Deprecated: Use Tracing.ProtoReflect.Descriptor instead. 2798 func (*Tracing) Descriptor() ([]byte, []int) { 2799 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{13} 2800 } 2801 2802 func (x *Tracing) GetClientSampling() *v32.FractionalPercent { 2803 if x != nil { 2804 return x.ClientSampling 2805 } 2806 return nil 2807 } 2808 2809 func (x *Tracing) GetRandomSampling() *v32.FractionalPercent { 2810 if x != nil { 2811 return x.RandomSampling 2812 } 2813 return nil 2814 } 2815 2816 func (x *Tracing) GetOverallSampling() *v32.FractionalPercent { 2817 if x != nil { 2818 return x.OverallSampling 2819 } 2820 return nil 2821 } 2822 2823 func (x *Tracing) GetCustomTags() []*v33.CustomTag { 2824 if x != nil { 2825 return x.CustomTags 2826 } 2827 return nil 2828 } 2829 2830 // A virtual cluster is a way of specifying a regex matching rule against 2831 // certain important endpoints such that statistics are generated explicitly for 2832 // the matched requests. The reason this is useful is that when doing 2833 // prefix/path matching Envoy does not always know what the application 2834 // considers to be an endpoint. Thus, it’s impossible for Envoy to generically 2835 // emit per endpoint statistics. However, often systems have highly critical 2836 // endpoints that they wish to get “perfect” statistics on. Virtual cluster 2837 // statistics are perfect in the sense that they are emitted on the downstream 2838 // side such that they include network level failures. 2839 // 2840 // Documentation for :ref:`virtual cluster statistics <config_http_filters_router_vcluster_stats>`. 2841 // 2842 // .. note:: 2843 // 2844 // Virtual clusters are a useful tool, but we do not recommend setting up a virtual cluster for 2845 // every application endpoint. This is both not easily maintainable and as well the matching and 2846 // statistics output are not free. 2847 type VirtualCluster struct { 2848 state protoimpl.MessageState 2849 sizeCache protoimpl.SizeCache 2850 unknownFields protoimpl.UnknownFields 2851 2852 // Specifies a list of header matchers to use for matching requests. Each specified header must 2853 // match. The pseudo-headers `:path` and `:method` can be used to match the request path and 2854 // method, respectively. 2855 Headers []*HeaderMatcher `protobuf:"bytes,4,rep,name=headers,proto3" json:"headers,omitempty"` 2856 // Specifies the name of the virtual cluster. The virtual cluster name as well 2857 // as the virtual host name are used when emitting statistics. The statistics are emitted by the 2858 // router filter and are documented :ref:`here <config_http_filters_router_stats>`. 2859 Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` 2860 // Deprecated: Do not use. 2861 HiddenEnvoyDeprecatedPattern string `protobuf:"bytes,1,opt,name=hidden_envoy_deprecated_pattern,json=hiddenEnvoyDeprecatedPattern,proto3" json:"hidden_envoy_deprecated_pattern,omitempty"` 2862 // Deprecated: Do not use. 2863 HiddenEnvoyDeprecatedMethod v3.RequestMethod `protobuf:"varint,3,opt,name=hidden_envoy_deprecated_method,json=hiddenEnvoyDeprecatedMethod,proto3,enum=envoy.config.core.v3.RequestMethod" json:"hidden_envoy_deprecated_method,omitempty"` 2864 } 2865 2866 func (x *VirtualCluster) Reset() { 2867 *x = VirtualCluster{} 2868 if protoimpl.UnsafeEnabled { 2869 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[14] 2870 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2871 ms.StoreMessageInfo(mi) 2872 } 2873 } 2874 2875 func (x *VirtualCluster) String() string { 2876 return protoimpl.X.MessageStringOf(x) 2877 } 2878 2879 func (*VirtualCluster) ProtoMessage() {} 2880 2881 func (x *VirtualCluster) ProtoReflect() protoreflect.Message { 2882 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[14] 2883 if protoimpl.UnsafeEnabled && x != nil { 2884 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2885 if ms.LoadMessageInfo() == nil { 2886 ms.StoreMessageInfo(mi) 2887 } 2888 return ms 2889 } 2890 return mi.MessageOf(x) 2891 } 2892 2893 // Deprecated: Use VirtualCluster.ProtoReflect.Descriptor instead. 2894 func (*VirtualCluster) Descriptor() ([]byte, []int) { 2895 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{14} 2896 } 2897 2898 func (x *VirtualCluster) GetHeaders() []*HeaderMatcher { 2899 if x != nil { 2900 return x.Headers 2901 } 2902 return nil 2903 } 2904 2905 func (x *VirtualCluster) GetName() string { 2906 if x != nil { 2907 return x.Name 2908 } 2909 return "" 2910 } 2911 2912 // Deprecated: Do not use. 2913 func (x *VirtualCluster) GetHiddenEnvoyDeprecatedPattern() string { 2914 if x != nil { 2915 return x.HiddenEnvoyDeprecatedPattern 2916 } 2917 return "" 2918 } 2919 2920 // Deprecated: Do not use. 2921 func (x *VirtualCluster) GetHiddenEnvoyDeprecatedMethod() v3.RequestMethod { 2922 if x != nil { 2923 return x.HiddenEnvoyDeprecatedMethod 2924 } 2925 return v3.RequestMethod_METHOD_UNSPECIFIED 2926 } 2927 2928 // Global rate limiting :ref:`architecture overview <arch_overview_global_rate_limit>`. 2929 // Also applies to Local rate limiting :ref:`using descriptors <config_http_filters_local_rate_limit_descriptors>`. 2930 type RateLimit struct { 2931 state protoimpl.MessageState 2932 sizeCache protoimpl.SizeCache 2933 unknownFields protoimpl.UnknownFields 2934 2935 // Refers to the stage set in the filter. The rate limit configuration only 2936 // applies to filters with the same stage number. The default stage number is 2937 // 0. 2938 // 2939 // .. note:: 2940 // 2941 // The filter supports a range of 0 - 10 inclusively for stage numbers. 2942 Stage *wrappers.UInt32Value `protobuf:"bytes,1,opt,name=stage,proto3" json:"stage,omitempty"` 2943 // The key to be set in runtime to disable this rate limit configuration. 2944 DisableKey string `protobuf:"bytes,2,opt,name=disable_key,json=disableKey,proto3" json:"disable_key,omitempty"` 2945 // A list of actions that are to be applied for this rate limit configuration. 2946 // Order matters as the actions are processed sequentially and the descriptor 2947 // is composed by appending descriptor entries in that sequence. If an action 2948 // cannot append a descriptor entry, no descriptor is generated for the 2949 // configuration. See :ref:`composing actions 2950 // <config_http_filters_rate_limit_composing_actions>` for additional documentation. 2951 Actions []*RateLimit_Action `protobuf:"bytes,3,rep,name=actions,proto3" json:"actions,omitempty"` 2952 // An optional limit override to be appended to the descriptor produced by this 2953 // rate limit configuration. If the override value is invalid or cannot be resolved 2954 // from metadata, no override is provided. See :ref:`rate limit override 2955 // <config_http_filters_rate_limit_rate_limit_override>` for more information. 2956 Limit *RateLimit_Override `protobuf:"bytes,4,opt,name=limit,proto3" json:"limit,omitempty"` 2957 } 2958 2959 func (x *RateLimit) Reset() { 2960 *x = RateLimit{} 2961 if protoimpl.UnsafeEnabled { 2962 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[15] 2963 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2964 ms.StoreMessageInfo(mi) 2965 } 2966 } 2967 2968 func (x *RateLimit) String() string { 2969 return protoimpl.X.MessageStringOf(x) 2970 } 2971 2972 func (*RateLimit) ProtoMessage() {} 2973 2974 func (x *RateLimit) ProtoReflect() protoreflect.Message { 2975 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[15] 2976 if protoimpl.UnsafeEnabled && x != nil { 2977 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2978 if ms.LoadMessageInfo() == nil { 2979 ms.StoreMessageInfo(mi) 2980 } 2981 return ms 2982 } 2983 return mi.MessageOf(x) 2984 } 2985 2986 // Deprecated: Use RateLimit.ProtoReflect.Descriptor instead. 2987 func (*RateLimit) Descriptor() ([]byte, []int) { 2988 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{15} 2989 } 2990 2991 func (x *RateLimit) GetStage() *wrappers.UInt32Value { 2992 if x != nil { 2993 return x.Stage 2994 } 2995 return nil 2996 } 2997 2998 func (x *RateLimit) GetDisableKey() string { 2999 if x != nil { 3000 return x.DisableKey 3001 } 3002 return "" 3003 } 3004 3005 func (x *RateLimit) GetActions() []*RateLimit_Action { 3006 if x != nil { 3007 return x.Actions 3008 } 3009 return nil 3010 } 3011 3012 func (x *RateLimit) GetLimit() *RateLimit_Override { 3013 if x != nil { 3014 return x.Limit 3015 } 3016 return nil 3017 } 3018 3019 // .. attention:: 3020 // 3021 // Internally, Envoy always uses the HTTP/2 *:authority* header to represent the HTTP/1 *Host* 3022 // header. Thus, if attempting to match on *Host*, match on *:authority* instead. 3023 // 3024 // .. attention:: 3025 // 3026 // To route on HTTP method, use the special HTTP/2 *:method* header. This works for both 3027 // HTTP/1 and HTTP/2 as Envoy normalizes headers. E.g., 3028 // 3029 // .. code-block:: json 3030 // 3031 // { 3032 // "name": ":method", 3033 // "exact_match": "POST" 3034 // } 3035 // 3036 // .. attention:: 3037 // In the absence of any header match specifier, match will default to :ref:`present_match 3038 // <envoy_v3_api_field_config.route.v3.HeaderMatcher.present_match>`. i.e, a request that has the :ref:`name 3039 // <envoy_v3_api_field_config.route.v3.HeaderMatcher.name>` header will match, regardless of the header's 3040 // value. 3041 // 3042 // [#next-major-version: HeaderMatcher should be refactored to use StringMatcher.] 3043 // [#next-free-field: 14] 3044 type HeaderMatcher struct { 3045 state protoimpl.MessageState 3046 sizeCache protoimpl.SizeCache 3047 unknownFields protoimpl.UnknownFields 3048 3049 // Specifies the name of the header in the request. 3050 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 3051 // Specifies how the header match will be performed to route the request. 3052 // 3053 // Types that are assignable to HeaderMatchSpecifier: 3054 // *HeaderMatcher_ExactMatch 3055 // *HeaderMatcher_SafeRegexMatch 3056 // *HeaderMatcher_RangeMatch 3057 // *HeaderMatcher_PresentMatch 3058 // *HeaderMatcher_PrefixMatch 3059 // *HeaderMatcher_SuffixMatch 3060 // *HeaderMatcher_ContainsMatch 3061 // *HeaderMatcher_StringMatch 3062 // *HeaderMatcher_HiddenEnvoyDeprecatedRegexMatch 3063 HeaderMatchSpecifier isHeaderMatcher_HeaderMatchSpecifier `protobuf_oneof:"header_match_specifier"` 3064 // If specified, the match result will be inverted before checking. Defaults to false. 3065 // 3066 // Examples: 3067 // 3068 // * The regex ``\d{3}`` does not match the value *1234*, so it will match when inverted. 3069 // * The range [-10,0) will match the value -1, so it will not match when inverted. 3070 InvertMatch bool `protobuf:"varint,8,opt,name=invert_match,json=invertMatch,proto3" json:"invert_match,omitempty"` 3071 } 3072 3073 func (x *HeaderMatcher) Reset() { 3074 *x = HeaderMatcher{} 3075 if protoimpl.UnsafeEnabled { 3076 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[16] 3077 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3078 ms.StoreMessageInfo(mi) 3079 } 3080 } 3081 3082 func (x *HeaderMatcher) String() string { 3083 return protoimpl.X.MessageStringOf(x) 3084 } 3085 3086 func (*HeaderMatcher) ProtoMessage() {} 3087 3088 func (x *HeaderMatcher) ProtoReflect() protoreflect.Message { 3089 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[16] 3090 if protoimpl.UnsafeEnabled && x != nil { 3091 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3092 if ms.LoadMessageInfo() == nil { 3093 ms.StoreMessageInfo(mi) 3094 } 3095 return ms 3096 } 3097 return mi.MessageOf(x) 3098 } 3099 3100 // Deprecated: Use HeaderMatcher.ProtoReflect.Descriptor instead. 3101 func (*HeaderMatcher) Descriptor() ([]byte, []int) { 3102 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{16} 3103 } 3104 3105 func (x *HeaderMatcher) GetName() string { 3106 if x != nil { 3107 return x.Name 3108 } 3109 return "" 3110 } 3111 3112 func (m *HeaderMatcher) GetHeaderMatchSpecifier() isHeaderMatcher_HeaderMatchSpecifier { 3113 if m != nil { 3114 return m.HeaderMatchSpecifier 3115 } 3116 return nil 3117 } 3118 3119 // Deprecated: Do not use. 3120 func (x *HeaderMatcher) GetExactMatch() string { 3121 if x, ok := x.GetHeaderMatchSpecifier().(*HeaderMatcher_ExactMatch); ok { 3122 return x.ExactMatch 3123 } 3124 return "" 3125 } 3126 3127 // Deprecated: Do not use. 3128 func (x *HeaderMatcher) GetSafeRegexMatch() *v31.RegexMatcher { 3129 if x, ok := x.GetHeaderMatchSpecifier().(*HeaderMatcher_SafeRegexMatch); ok { 3130 return x.SafeRegexMatch 3131 } 3132 return nil 3133 } 3134 3135 func (x *HeaderMatcher) GetRangeMatch() *v32.Int64Range { 3136 if x, ok := x.GetHeaderMatchSpecifier().(*HeaderMatcher_RangeMatch); ok { 3137 return x.RangeMatch 3138 } 3139 return nil 3140 } 3141 3142 func (x *HeaderMatcher) GetPresentMatch() bool { 3143 if x, ok := x.GetHeaderMatchSpecifier().(*HeaderMatcher_PresentMatch); ok { 3144 return x.PresentMatch 3145 } 3146 return false 3147 } 3148 3149 // Deprecated: Do not use. 3150 func (x *HeaderMatcher) GetPrefixMatch() string { 3151 if x, ok := x.GetHeaderMatchSpecifier().(*HeaderMatcher_PrefixMatch); ok { 3152 return x.PrefixMatch 3153 } 3154 return "" 3155 } 3156 3157 // Deprecated: Do not use. 3158 func (x *HeaderMatcher) GetSuffixMatch() string { 3159 if x, ok := x.GetHeaderMatchSpecifier().(*HeaderMatcher_SuffixMatch); ok { 3160 return x.SuffixMatch 3161 } 3162 return "" 3163 } 3164 3165 // Deprecated: Do not use. 3166 func (x *HeaderMatcher) GetContainsMatch() string { 3167 if x, ok := x.GetHeaderMatchSpecifier().(*HeaderMatcher_ContainsMatch); ok { 3168 return x.ContainsMatch 3169 } 3170 return "" 3171 } 3172 3173 func (x *HeaderMatcher) GetStringMatch() *v31.StringMatcher { 3174 if x, ok := x.GetHeaderMatchSpecifier().(*HeaderMatcher_StringMatch); ok { 3175 return x.StringMatch 3176 } 3177 return nil 3178 } 3179 3180 // Deprecated: Do not use. 3181 func (x *HeaderMatcher) GetHiddenEnvoyDeprecatedRegexMatch() string { 3182 if x, ok := x.GetHeaderMatchSpecifier().(*HeaderMatcher_HiddenEnvoyDeprecatedRegexMatch); ok { 3183 return x.HiddenEnvoyDeprecatedRegexMatch 3184 } 3185 return "" 3186 } 3187 3188 func (x *HeaderMatcher) GetInvertMatch() bool { 3189 if x != nil { 3190 return x.InvertMatch 3191 } 3192 return false 3193 } 3194 3195 type isHeaderMatcher_HeaderMatchSpecifier interface { 3196 isHeaderMatcher_HeaderMatchSpecifier() 3197 } 3198 3199 type HeaderMatcher_ExactMatch struct { 3200 // If specified, header match will be performed based on the value of the header. 3201 // This field is deprecated. Please use :ref:`string_match <envoy_v3_api_field_config.route.v3.HeaderMatcher.string_match>`. 3202 // 3203 // Deprecated: Do not use. 3204 ExactMatch string `protobuf:"bytes,4,opt,name=exact_match,json=exactMatch,proto3,oneof"` 3205 } 3206 3207 type HeaderMatcher_SafeRegexMatch struct { 3208 // If specified, this regex string is a regular expression rule which implies the entire request 3209 // header value must match the regex. The rule will not match if only a subsequence of the 3210 // request header value matches the regex. 3211 // This field is deprecated. Please use :ref:`string_match <envoy_v3_api_field_config.route.v3.HeaderMatcher.string_match>`. 3212 // 3213 // Deprecated: Do not use. 3214 SafeRegexMatch *v31.RegexMatcher `protobuf:"bytes,11,opt,name=safe_regex_match,json=safeRegexMatch,proto3,oneof"` 3215 } 3216 3217 type HeaderMatcher_RangeMatch struct { 3218 // If specified, header match will be performed based on range. 3219 // The rule will match if the request header value is within this range. 3220 // The entire request header value must represent an integer in base 10 notation: consisting of 3221 // an optional plus or minus sign followed by a sequence of digits. The rule will not match if 3222 // the header value does not represent an integer. Match will fail for empty values, floating 3223 // point numbers or if only a subsequence of the header value is an integer. 3224 // 3225 // Examples: 3226 // 3227 // * For range [-10,0), route will match for header value -1, but not for 0, "somestring", 10.9, 3228 // "-1somestring" 3229 RangeMatch *v32.Int64Range `protobuf:"bytes,6,opt,name=range_match,json=rangeMatch,proto3,oneof"` 3230 } 3231 3232 type HeaderMatcher_PresentMatch struct { 3233 // If specified as true, header match will be performed based on whether the header is in the 3234 // request. If specified as false, header match will be performed based on whether the header is absent. 3235 PresentMatch bool `protobuf:"varint,7,opt,name=present_match,json=presentMatch,proto3,oneof"` 3236 } 3237 3238 type HeaderMatcher_PrefixMatch struct { 3239 // If specified, header match will be performed based on the prefix of the header value. 3240 // Note: empty prefix is not allowed, please use present_match instead. 3241 // This field is deprecated. Please use :ref:`string_match <envoy_v3_api_field_config.route.v3.HeaderMatcher.string_match>`. 3242 // 3243 // Examples: 3244 // 3245 // * The prefix *abcd* matches the value *abcdxyz*, but not for *abcxyz*. 3246 // 3247 // Deprecated: Do not use. 3248 PrefixMatch string `protobuf:"bytes,9,opt,name=prefix_match,json=prefixMatch,proto3,oneof"` 3249 } 3250 3251 type HeaderMatcher_SuffixMatch struct { 3252 // If specified, header match will be performed based on the suffix of the header value. 3253 // Note: empty suffix is not allowed, please use present_match instead. 3254 // This field is deprecated. Please use :ref:`string_match <envoy_v3_api_field_config.route.v3.HeaderMatcher.string_match>`. 3255 // 3256 // Examples: 3257 // 3258 // * The suffix *abcd* matches the value *xyzabcd*, but not for *xyzbcd*. 3259 // 3260 // Deprecated: Do not use. 3261 SuffixMatch string `protobuf:"bytes,10,opt,name=suffix_match,json=suffixMatch,proto3,oneof"` 3262 } 3263 3264 type HeaderMatcher_ContainsMatch struct { 3265 // If specified, header match will be performed based on whether the header value contains 3266 // the given value or not. 3267 // Note: empty contains match is not allowed, please use present_match instead. 3268 // This field is deprecated. Please use :ref:`string_match <envoy_v3_api_field_config.route.v3.HeaderMatcher.string_match>`. 3269 // 3270 // Examples: 3271 // 3272 // * The value *abcd* matches the value *xyzabcdpqr*, but not for *xyzbcdpqr*. 3273 // 3274 // Deprecated: Do not use. 3275 ContainsMatch string `protobuf:"bytes,12,opt,name=contains_match,json=containsMatch,proto3,oneof"` 3276 } 3277 3278 type HeaderMatcher_StringMatch struct { 3279 // If specified, header match will be performed based on the string match of the header value. 3280 StringMatch *v31.StringMatcher `protobuf:"bytes,13,opt,name=string_match,json=stringMatch,proto3,oneof"` 3281 } 3282 3283 type HeaderMatcher_HiddenEnvoyDeprecatedRegexMatch struct { 3284 // Deprecated: Do not use. 3285 HiddenEnvoyDeprecatedRegexMatch string `protobuf:"bytes,5,opt,name=hidden_envoy_deprecated_regex_match,json=hiddenEnvoyDeprecatedRegexMatch,proto3,oneof"` 3286 } 3287 3288 func (*HeaderMatcher_ExactMatch) isHeaderMatcher_HeaderMatchSpecifier() {} 3289 3290 func (*HeaderMatcher_SafeRegexMatch) isHeaderMatcher_HeaderMatchSpecifier() {} 3291 3292 func (*HeaderMatcher_RangeMatch) isHeaderMatcher_HeaderMatchSpecifier() {} 3293 3294 func (*HeaderMatcher_PresentMatch) isHeaderMatcher_HeaderMatchSpecifier() {} 3295 3296 func (*HeaderMatcher_PrefixMatch) isHeaderMatcher_HeaderMatchSpecifier() {} 3297 3298 func (*HeaderMatcher_SuffixMatch) isHeaderMatcher_HeaderMatchSpecifier() {} 3299 3300 func (*HeaderMatcher_ContainsMatch) isHeaderMatcher_HeaderMatchSpecifier() {} 3301 3302 func (*HeaderMatcher_StringMatch) isHeaderMatcher_HeaderMatchSpecifier() {} 3303 3304 func (*HeaderMatcher_HiddenEnvoyDeprecatedRegexMatch) isHeaderMatcher_HeaderMatchSpecifier() {} 3305 3306 // Query parameter matching treats the query string of a request's :path header 3307 // as an ampersand-separated list of keys and/or key=value elements. 3308 // [#next-free-field: 7] 3309 type QueryParameterMatcher struct { 3310 state protoimpl.MessageState 3311 sizeCache protoimpl.SizeCache 3312 unknownFields protoimpl.UnknownFields 3313 3314 // Specifies the name of a key that must be present in the requested 3315 // *path*'s query string. 3316 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 3317 // Types that are assignable to QueryParameterMatchSpecifier: 3318 // *QueryParameterMatcher_StringMatch 3319 // *QueryParameterMatcher_PresentMatch 3320 QueryParameterMatchSpecifier isQueryParameterMatcher_QueryParameterMatchSpecifier `protobuf_oneof:"query_parameter_match_specifier"` 3321 // Deprecated: Do not use. 3322 HiddenEnvoyDeprecatedValue string `protobuf:"bytes,3,opt,name=hidden_envoy_deprecated_value,json=hiddenEnvoyDeprecatedValue,proto3" json:"hidden_envoy_deprecated_value,omitempty"` 3323 // Deprecated: Do not use. 3324 HiddenEnvoyDeprecatedRegex *wrappers.BoolValue `protobuf:"bytes,4,opt,name=hidden_envoy_deprecated_regex,json=hiddenEnvoyDeprecatedRegex,proto3" json:"hidden_envoy_deprecated_regex,omitempty"` 3325 } 3326 3327 func (x *QueryParameterMatcher) Reset() { 3328 *x = QueryParameterMatcher{} 3329 if protoimpl.UnsafeEnabled { 3330 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[17] 3331 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3332 ms.StoreMessageInfo(mi) 3333 } 3334 } 3335 3336 func (x *QueryParameterMatcher) String() string { 3337 return protoimpl.X.MessageStringOf(x) 3338 } 3339 3340 func (*QueryParameterMatcher) ProtoMessage() {} 3341 3342 func (x *QueryParameterMatcher) ProtoReflect() protoreflect.Message { 3343 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[17] 3344 if protoimpl.UnsafeEnabled && x != nil { 3345 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3346 if ms.LoadMessageInfo() == nil { 3347 ms.StoreMessageInfo(mi) 3348 } 3349 return ms 3350 } 3351 return mi.MessageOf(x) 3352 } 3353 3354 // Deprecated: Use QueryParameterMatcher.ProtoReflect.Descriptor instead. 3355 func (*QueryParameterMatcher) Descriptor() ([]byte, []int) { 3356 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{17} 3357 } 3358 3359 func (x *QueryParameterMatcher) GetName() string { 3360 if x != nil { 3361 return x.Name 3362 } 3363 return "" 3364 } 3365 3366 func (m *QueryParameterMatcher) GetQueryParameterMatchSpecifier() isQueryParameterMatcher_QueryParameterMatchSpecifier { 3367 if m != nil { 3368 return m.QueryParameterMatchSpecifier 3369 } 3370 return nil 3371 } 3372 3373 func (x *QueryParameterMatcher) GetStringMatch() *v31.StringMatcher { 3374 if x, ok := x.GetQueryParameterMatchSpecifier().(*QueryParameterMatcher_StringMatch); ok { 3375 return x.StringMatch 3376 } 3377 return nil 3378 } 3379 3380 func (x *QueryParameterMatcher) GetPresentMatch() bool { 3381 if x, ok := x.GetQueryParameterMatchSpecifier().(*QueryParameterMatcher_PresentMatch); ok { 3382 return x.PresentMatch 3383 } 3384 return false 3385 } 3386 3387 // Deprecated: Do not use. 3388 func (x *QueryParameterMatcher) GetHiddenEnvoyDeprecatedValue() string { 3389 if x != nil { 3390 return x.HiddenEnvoyDeprecatedValue 3391 } 3392 return "" 3393 } 3394 3395 // Deprecated: Do not use. 3396 func (x *QueryParameterMatcher) GetHiddenEnvoyDeprecatedRegex() *wrappers.BoolValue { 3397 if x != nil { 3398 return x.HiddenEnvoyDeprecatedRegex 3399 } 3400 return nil 3401 } 3402 3403 type isQueryParameterMatcher_QueryParameterMatchSpecifier interface { 3404 isQueryParameterMatcher_QueryParameterMatchSpecifier() 3405 } 3406 3407 type QueryParameterMatcher_StringMatch struct { 3408 // Specifies whether a query parameter value should match against a string. 3409 StringMatch *v31.StringMatcher `protobuf:"bytes,5,opt,name=string_match,json=stringMatch,proto3,oneof"` 3410 } 3411 3412 type QueryParameterMatcher_PresentMatch struct { 3413 // Specifies whether a query parameter should be present. 3414 PresentMatch bool `protobuf:"varint,6,opt,name=present_match,json=presentMatch,proto3,oneof"` 3415 } 3416 3417 func (*QueryParameterMatcher_StringMatch) isQueryParameterMatcher_QueryParameterMatchSpecifier() {} 3418 3419 func (*QueryParameterMatcher_PresentMatch) isQueryParameterMatcher_QueryParameterMatchSpecifier() {} 3420 3421 // HTTP Internal Redirect :ref:`architecture overview <arch_overview_internal_redirects>`. 3422 type InternalRedirectPolicy struct { 3423 state protoimpl.MessageState 3424 sizeCache protoimpl.SizeCache 3425 unknownFields protoimpl.UnknownFields 3426 3427 // An internal redirect is not handled, unless the number of previous internal redirects that a 3428 // downstream request has encountered is lower than this value. 3429 // In the case where a downstream request is bounced among multiple routes by internal redirect, 3430 // the first route that hits this threshold, or does not set :ref:`internal_redirect_policy 3431 // <envoy_v3_api_field_config.route.v3.RouteAction.internal_redirect_policy>` 3432 // will pass the redirect back to downstream. 3433 // 3434 // If not specified, at most one redirect will be followed. 3435 MaxInternalRedirects *wrappers.UInt32Value `protobuf:"bytes,1,opt,name=max_internal_redirects,json=maxInternalRedirects,proto3" json:"max_internal_redirects,omitempty"` 3436 // Defines what upstream response codes are allowed to trigger internal redirect. If unspecified, 3437 // only 302 will be treated as internal redirect. 3438 // Only 301, 302, 303, 307 and 308 are valid values. Any other codes will be ignored. 3439 RedirectResponseCodes []uint32 `protobuf:"varint,2,rep,packed,name=redirect_response_codes,json=redirectResponseCodes,proto3" json:"redirect_response_codes,omitempty"` 3440 // Specifies a list of predicates that are queried when an upstream response is deemed 3441 // to trigger an internal redirect by all other criteria. Any predicate in the list can reject 3442 // the redirect, causing the response to be proxied to downstream. 3443 // [#extension-category: envoy.internal_redirect_predicates] 3444 Predicates []*v3.TypedExtensionConfig `protobuf:"bytes,3,rep,name=predicates,proto3" json:"predicates,omitempty"` 3445 // Allow internal redirect to follow a target URI with a different scheme than the value of 3446 // x-forwarded-proto. The default is false. 3447 AllowCrossSchemeRedirect bool `protobuf:"varint,4,opt,name=allow_cross_scheme_redirect,json=allowCrossSchemeRedirect,proto3" json:"allow_cross_scheme_redirect,omitempty"` 3448 } 3449 3450 func (x *InternalRedirectPolicy) Reset() { 3451 *x = InternalRedirectPolicy{} 3452 if protoimpl.UnsafeEnabled { 3453 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[18] 3454 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3455 ms.StoreMessageInfo(mi) 3456 } 3457 } 3458 3459 func (x *InternalRedirectPolicy) String() string { 3460 return protoimpl.X.MessageStringOf(x) 3461 } 3462 3463 func (*InternalRedirectPolicy) ProtoMessage() {} 3464 3465 func (x *InternalRedirectPolicy) ProtoReflect() protoreflect.Message { 3466 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[18] 3467 if protoimpl.UnsafeEnabled && x != nil { 3468 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3469 if ms.LoadMessageInfo() == nil { 3470 ms.StoreMessageInfo(mi) 3471 } 3472 return ms 3473 } 3474 return mi.MessageOf(x) 3475 } 3476 3477 // Deprecated: Use InternalRedirectPolicy.ProtoReflect.Descriptor instead. 3478 func (*InternalRedirectPolicy) Descriptor() ([]byte, []int) { 3479 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{18} 3480 } 3481 3482 func (x *InternalRedirectPolicy) GetMaxInternalRedirects() *wrappers.UInt32Value { 3483 if x != nil { 3484 return x.MaxInternalRedirects 3485 } 3486 return nil 3487 } 3488 3489 func (x *InternalRedirectPolicy) GetRedirectResponseCodes() []uint32 { 3490 if x != nil { 3491 return x.RedirectResponseCodes 3492 } 3493 return nil 3494 } 3495 3496 func (x *InternalRedirectPolicy) GetPredicates() []*v3.TypedExtensionConfig { 3497 if x != nil { 3498 return x.Predicates 3499 } 3500 return nil 3501 } 3502 3503 func (x *InternalRedirectPolicy) GetAllowCrossSchemeRedirect() bool { 3504 if x != nil { 3505 return x.AllowCrossSchemeRedirect 3506 } 3507 return false 3508 } 3509 3510 // A simple wrapper for an HTTP filter config. This is intended to be used as a wrapper for the 3511 // map value in 3512 // :ref:`VirtualHost.typed_per_filter_config<envoy_v3_api_field_config.route.v3.VirtualHost.typed_per_filter_config>`, 3513 // :ref:`Route.typed_per_filter_config<envoy_v3_api_field_config.route.v3.Route.typed_per_filter_config>`, 3514 // or :ref:`WeightedCluster.ClusterWeight.typed_per_filter_config<envoy_v3_api_field_config.route.v3.WeightedCluster.ClusterWeight.typed_per_filter_config>` 3515 // to add additional flags to the filter. 3516 // [#not-implemented-hide:] 3517 type FilterConfig struct { 3518 state protoimpl.MessageState 3519 sizeCache protoimpl.SizeCache 3520 unknownFields protoimpl.UnknownFields 3521 3522 // The filter config. 3523 Config *any.Any `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` 3524 // If true, the filter is optional, meaning that if the client does 3525 // not support the specified filter, it may ignore the map entry rather 3526 // than rejecting the config. 3527 IsOptional bool `protobuf:"varint,2,opt,name=is_optional,json=isOptional,proto3" json:"is_optional,omitempty"` 3528 } 3529 3530 func (x *FilterConfig) Reset() { 3531 *x = FilterConfig{} 3532 if protoimpl.UnsafeEnabled { 3533 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[19] 3534 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3535 ms.StoreMessageInfo(mi) 3536 } 3537 } 3538 3539 func (x *FilterConfig) String() string { 3540 return protoimpl.X.MessageStringOf(x) 3541 } 3542 3543 func (*FilterConfig) ProtoMessage() {} 3544 3545 func (x *FilterConfig) ProtoReflect() protoreflect.Message { 3546 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[19] 3547 if protoimpl.UnsafeEnabled && x != nil { 3548 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3549 if ms.LoadMessageInfo() == nil { 3550 ms.StoreMessageInfo(mi) 3551 } 3552 return ms 3553 } 3554 return mi.MessageOf(x) 3555 } 3556 3557 // Deprecated: Use FilterConfig.ProtoReflect.Descriptor instead. 3558 func (*FilterConfig) Descriptor() ([]byte, []int) { 3559 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{19} 3560 } 3561 3562 func (x *FilterConfig) GetConfig() *any.Any { 3563 if x != nil { 3564 return x.Config 3565 } 3566 return nil 3567 } 3568 3569 func (x *FilterConfig) GetIsOptional() bool { 3570 if x != nil { 3571 return x.IsOptional 3572 } 3573 return false 3574 } 3575 3576 // [#next-free-field: 13] 3577 type WeightedCluster_ClusterWeight struct { 3578 state protoimpl.MessageState 3579 sizeCache protoimpl.SizeCache 3580 unknownFields protoimpl.UnknownFields 3581 3582 // Only one of *name* and *cluster_header* may be specified. 3583 // [#next-major-version: Need to add back the validation rule: (validate.rules).string = {min_len: 1}] 3584 // Name of the upstream cluster. The cluster must exist in the 3585 // :ref:`cluster manager configuration <config_cluster_manager>`. 3586 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 3587 // Only one of *name* and *cluster_header* may be specified. 3588 // [#next-major-version: Need to add back the validation rule: (validate.rules).string = {min_len: 1 }] 3589 // Envoy will determine the cluster to route to by reading the value of the 3590 // HTTP header named by cluster_header from the request headers. If the 3591 // header is not found or the referenced cluster does not exist, Envoy will 3592 // return a 404 response. 3593 // 3594 // .. attention:: 3595 // 3596 // Internally, Envoy always uses the HTTP/2 *:authority* header to represent the HTTP/1 3597 // *Host* header. Thus, if attempting to match on *Host*, match on *:authority* instead. 3598 // 3599 // .. note:: 3600 // 3601 // If the header appears multiple times only the first value is used. 3602 ClusterHeader string `protobuf:"bytes,12,opt,name=cluster_header,json=clusterHeader,proto3" json:"cluster_header,omitempty"` 3603 // An integer between 0 and :ref:`total_weight 3604 // <envoy_v3_api_field_config.route.v3.WeightedCluster.total_weight>`. When a request matches the route, 3605 // the choice of an upstream cluster is determined by its weight. The sum of weights across all 3606 // entries in the clusters array must add up to the total_weight, which defaults to 100. 3607 Weight *wrappers.UInt32Value `protobuf:"bytes,2,opt,name=weight,proto3" json:"weight,omitempty"` 3608 // Optional endpoint metadata match criteria used by the subset load balancer. Only endpoints in 3609 // the upstream cluster with metadata matching what is set in this field will be considered for 3610 // load balancing. Note that this will be merged with what's provided in 3611 // :ref:`RouteAction.metadata_match <envoy_v3_api_field_config.route.v3.RouteAction.metadata_match>`, with 3612 // values here taking precedence. The filter name should be specified as *envoy.lb*. 3613 MetadataMatch *v3.Metadata `protobuf:"bytes,3,opt,name=metadata_match,json=metadataMatch,proto3" json:"metadata_match,omitempty"` 3614 // Specifies a list of headers to be added to requests when this cluster is selected 3615 // through the enclosing :ref:`envoy_v3_api_msg_config.route.v3.RouteAction`. 3616 // Headers specified at this level are applied before headers from the enclosing 3617 // :ref:`envoy_v3_api_msg_config.route.v3.Route`, :ref:`envoy_v3_api_msg_config.route.v3.VirtualHost`, and 3618 // :ref:`envoy_v3_api_msg_config.route.v3.RouteConfiguration`. For more information, including details on 3619 // header value syntax, see the documentation on :ref:`custom request headers 3620 // <config_http_conn_man_headers_custom_request_headers>`. 3621 RequestHeadersToAdd []*v3.HeaderValueOption `protobuf:"bytes,4,rep,name=request_headers_to_add,json=requestHeadersToAdd,proto3" json:"request_headers_to_add,omitempty"` 3622 // Specifies a list of HTTP headers that should be removed from each request when 3623 // this cluster is selected through the enclosing :ref:`envoy_v3_api_msg_config.route.v3.RouteAction`. 3624 RequestHeadersToRemove []string `protobuf:"bytes,9,rep,name=request_headers_to_remove,json=requestHeadersToRemove,proto3" json:"request_headers_to_remove,omitempty"` 3625 // Specifies a list of headers to be added to responses when this cluster is selected 3626 // through the enclosing :ref:`envoy_v3_api_msg_config.route.v3.RouteAction`. 3627 // Headers specified at this level are applied before headers from the enclosing 3628 // :ref:`envoy_v3_api_msg_config.route.v3.Route`, :ref:`envoy_v3_api_msg_config.route.v3.VirtualHost`, and 3629 // :ref:`envoy_v3_api_msg_config.route.v3.RouteConfiguration`. For more information, including details on 3630 // header value syntax, see the documentation on :ref:`custom request headers 3631 // <config_http_conn_man_headers_custom_request_headers>`. 3632 ResponseHeadersToAdd []*v3.HeaderValueOption `protobuf:"bytes,5,rep,name=response_headers_to_add,json=responseHeadersToAdd,proto3" json:"response_headers_to_add,omitempty"` 3633 // Specifies a list of headers to be removed from responses when this cluster is selected 3634 // through the enclosing :ref:`envoy_v3_api_msg_config.route.v3.RouteAction`. 3635 ResponseHeadersToRemove []string `protobuf:"bytes,6,rep,name=response_headers_to_remove,json=responseHeadersToRemove,proto3" json:"response_headers_to_remove,omitempty"` 3636 // The per_filter_config field can be used to provide weighted cluster-specific 3637 // configurations for filters. The key should match the filter name, such as 3638 // *envoy.filters.http.buffer* for the HTTP buffer filter. Use of this field is filter 3639 // specific; see the :ref:`HTTP filter documentation <config_http_filters>` 3640 // for if and how it is utilized. 3641 // [#comment: An entry's value may be wrapped in a 3642 // :ref:`FilterConfig<envoy_v3_api_msg_config.route.v3.FilterConfig>` 3643 // message to specify additional options.] 3644 TypedPerFilterConfig map[string]*any.Any `protobuf:"bytes,10,rep,name=typed_per_filter_config,json=typedPerFilterConfig,proto3" json:"typed_per_filter_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 3645 // Types that are assignable to HostRewriteSpecifier: 3646 // *WeightedCluster_ClusterWeight_HostRewriteLiteral 3647 HostRewriteSpecifier isWeightedCluster_ClusterWeight_HostRewriteSpecifier `protobuf_oneof:"host_rewrite_specifier"` 3648 // Deprecated: Do not use. 3649 HiddenEnvoyDeprecatedPerFilterConfig map[string]*_struct.Struct `protobuf:"bytes,8,rep,name=hidden_envoy_deprecated_per_filter_config,json=hiddenEnvoyDeprecatedPerFilterConfig,proto3" json:"hidden_envoy_deprecated_per_filter_config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 3650 } 3651 3652 func (x *WeightedCluster_ClusterWeight) Reset() { 3653 *x = WeightedCluster_ClusterWeight{} 3654 if protoimpl.UnsafeEnabled { 3655 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[24] 3656 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3657 ms.StoreMessageInfo(mi) 3658 } 3659 } 3660 3661 func (x *WeightedCluster_ClusterWeight) String() string { 3662 return protoimpl.X.MessageStringOf(x) 3663 } 3664 3665 func (*WeightedCluster_ClusterWeight) ProtoMessage() {} 3666 3667 func (x *WeightedCluster_ClusterWeight) ProtoReflect() protoreflect.Message { 3668 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[24] 3669 if protoimpl.UnsafeEnabled && x != nil { 3670 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3671 if ms.LoadMessageInfo() == nil { 3672 ms.StoreMessageInfo(mi) 3673 } 3674 return ms 3675 } 3676 return mi.MessageOf(x) 3677 } 3678 3679 // Deprecated: Use WeightedCluster_ClusterWeight.ProtoReflect.Descriptor instead. 3680 func (*WeightedCluster_ClusterWeight) Descriptor() ([]byte, []int) { 3681 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{3, 0} 3682 } 3683 3684 func (x *WeightedCluster_ClusterWeight) GetName() string { 3685 if x != nil { 3686 return x.Name 3687 } 3688 return "" 3689 } 3690 3691 func (x *WeightedCluster_ClusterWeight) GetClusterHeader() string { 3692 if x != nil { 3693 return x.ClusterHeader 3694 } 3695 return "" 3696 } 3697 3698 func (x *WeightedCluster_ClusterWeight) GetWeight() *wrappers.UInt32Value { 3699 if x != nil { 3700 return x.Weight 3701 } 3702 return nil 3703 } 3704 3705 func (x *WeightedCluster_ClusterWeight) GetMetadataMatch() *v3.Metadata { 3706 if x != nil { 3707 return x.MetadataMatch 3708 } 3709 return nil 3710 } 3711 3712 func (x *WeightedCluster_ClusterWeight) GetRequestHeadersToAdd() []*v3.HeaderValueOption { 3713 if x != nil { 3714 return x.RequestHeadersToAdd 3715 } 3716 return nil 3717 } 3718 3719 func (x *WeightedCluster_ClusterWeight) GetRequestHeadersToRemove() []string { 3720 if x != nil { 3721 return x.RequestHeadersToRemove 3722 } 3723 return nil 3724 } 3725 3726 func (x *WeightedCluster_ClusterWeight) GetResponseHeadersToAdd() []*v3.HeaderValueOption { 3727 if x != nil { 3728 return x.ResponseHeadersToAdd 3729 } 3730 return nil 3731 } 3732 3733 func (x *WeightedCluster_ClusterWeight) GetResponseHeadersToRemove() []string { 3734 if x != nil { 3735 return x.ResponseHeadersToRemove 3736 } 3737 return nil 3738 } 3739 3740 func (x *WeightedCluster_ClusterWeight) GetTypedPerFilterConfig() map[string]*any.Any { 3741 if x != nil { 3742 return x.TypedPerFilterConfig 3743 } 3744 return nil 3745 } 3746 3747 func (m *WeightedCluster_ClusterWeight) GetHostRewriteSpecifier() isWeightedCluster_ClusterWeight_HostRewriteSpecifier { 3748 if m != nil { 3749 return m.HostRewriteSpecifier 3750 } 3751 return nil 3752 } 3753 3754 func (x *WeightedCluster_ClusterWeight) GetHostRewriteLiteral() string { 3755 if x, ok := x.GetHostRewriteSpecifier().(*WeightedCluster_ClusterWeight_HostRewriteLiteral); ok { 3756 return x.HostRewriteLiteral 3757 } 3758 return "" 3759 } 3760 3761 // Deprecated: Do not use. 3762 func (x *WeightedCluster_ClusterWeight) GetHiddenEnvoyDeprecatedPerFilterConfig() map[string]*_struct.Struct { 3763 if x != nil { 3764 return x.HiddenEnvoyDeprecatedPerFilterConfig 3765 } 3766 return nil 3767 } 3768 3769 type isWeightedCluster_ClusterWeight_HostRewriteSpecifier interface { 3770 isWeightedCluster_ClusterWeight_HostRewriteSpecifier() 3771 } 3772 3773 type WeightedCluster_ClusterWeight_HostRewriteLiteral struct { 3774 // Indicates that during forwarding, the host header will be swapped with 3775 // this value. 3776 HostRewriteLiteral string `protobuf:"bytes,11,opt,name=host_rewrite_literal,json=hostRewriteLiteral,proto3,oneof"` 3777 } 3778 3779 func (*WeightedCluster_ClusterWeight_HostRewriteLiteral) isWeightedCluster_ClusterWeight_HostRewriteSpecifier() { 3780 } 3781 3782 type RouteMatch_GrpcRouteMatchOptions struct { 3783 state protoimpl.MessageState 3784 sizeCache protoimpl.SizeCache 3785 unknownFields protoimpl.UnknownFields 3786 } 3787 3788 func (x *RouteMatch_GrpcRouteMatchOptions) Reset() { 3789 *x = RouteMatch_GrpcRouteMatchOptions{} 3790 if protoimpl.UnsafeEnabled { 3791 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[27] 3792 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3793 ms.StoreMessageInfo(mi) 3794 } 3795 } 3796 3797 func (x *RouteMatch_GrpcRouteMatchOptions) String() string { 3798 return protoimpl.X.MessageStringOf(x) 3799 } 3800 3801 func (*RouteMatch_GrpcRouteMatchOptions) ProtoMessage() {} 3802 3803 func (x *RouteMatch_GrpcRouteMatchOptions) ProtoReflect() protoreflect.Message { 3804 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[27] 3805 if protoimpl.UnsafeEnabled && x != nil { 3806 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3807 if ms.LoadMessageInfo() == nil { 3808 ms.StoreMessageInfo(mi) 3809 } 3810 return ms 3811 } 3812 return mi.MessageOf(x) 3813 } 3814 3815 // Deprecated: Use RouteMatch_GrpcRouteMatchOptions.ProtoReflect.Descriptor instead. 3816 func (*RouteMatch_GrpcRouteMatchOptions) Descriptor() ([]byte, []int) { 3817 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{4, 0} 3818 } 3819 3820 type RouteMatch_TlsContextMatchOptions struct { 3821 state protoimpl.MessageState 3822 sizeCache protoimpl.SizeCache 3823 unknownFields protoimpl.UnknownFields 3824 3825 // If specified, the route will match against whether or not a certificate is presented. 3826 // If not specified, certificate presentation status (true or false) will not be considered when route matching. 3827 Presented *wrappers.BoolValue `protobuf:"bytes,1,opt,name=presented,proto3" json:"presented,omitempty"` 3828 // If specified, the route will match against whether or not a certificate is validated. 3829 // If not specified, certificate validation status (true or false) will not be considered when route matching. 3830 Validated *wrappers.BoolValue `protobuf:"bytes,2,opt,name=validated,proto3" json:"validated,omitempty"` 3831 } 3832 3833 func (x *RouteMatch_TlsContextMatchOptions) Reset() { 3834 *x = RouteMatch_TlsContextMatchOptions{} 3835 if protoimpl.UnsafeEnabled { 3836 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[28] 3837 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3838 ms.StoreMessageInfo(mi) 3839 } 3840 } 3841 3842 func (x *RouteMatch_TlsContextMatchOptions) String() string { 3843 return protoimpl.X.MessageStringOf(x) 3844 } 3845 3846 func (*RouteMatch_TlsContextMatchOptions) ProtoMessage() {} 3847 3848 func (x *RouteMatch_TlsContextMatchOptions) ProtoReflect() protoreflect.Message { 3849 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[28] 3850 if protoimpl.UnsafeEnabled && x != nil { 3851 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3852 if ms.LoadMessageInfo() == nil { 3853 ms.StoreMessageInfo(mi) 3854 } 3855 return ms 3856 } 3857 return mi.MessageOf(x) 3858 } 3859 3860 // Deprecated: Use RouteMatch_TlsContextMatchOptions.ProtoReflect.Descriptor instead. 3861 func (*RouteMatch_TlsContextMatchOptions) Descriptor() ([]byte, []int) { 3862 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{4, 1} 3863 } 3864 3865 func (x *RouteMatch_TlsContextMatchOptions) GetPresented() *wrappers.BoolValue { 3866 if x != nil { 3867 return x.Presented 3868 } 3869 return nil 3870 } 3871 3872 func (x *RouteMatch_TlsContextMatchOptions) GetValidated() *wrappers.BoolValue { 3873 if x != nil { 3874 return x.Validated 3875 } 3876 return nil 3877 } 3878 3879 // An extensible message for matching CONNECT requests. 3880 type RouteMatch_ConnectMatcher struct { 3881 state protoimpl.MessageState 3882 sizeCache protoimpl.SizeCache 3883 unknownFields protoimpl.UnknownFields 3884 } 3885 3886 func (x *RouteMatch_ConnectMatcher) Reset() { 3887 *x = RouteMatch_ConnectMatcher{} 3888 if protoimpl.UnsafeEnabled { 3889 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[29] 3890 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3891 ms.StoreMessageInfo(mi) 3892 } 3893 } 3894 3895 func (x *RouteMatch_ConnectMatcher) String() string { 3896 return protoimpl.X.MessageStringOf(x) 3897 } 3898 3899 func (*RouteMatch_ConnectMatcher) ProtoMessage() {} 3900 3901 func (x *RouteMatch_ConnectMatcher) ProtoReflect() protoreflect.Message { 3902 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[29] 3903 if protoimpl.UnsafeEnabled && x != nil { 3904 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3905 if ms.LoadMessageInfo() == nil { 3906 ms.StoreMessageInfo(mi) 3907 } 3908 return ms 3909 } 3910 return mi.MessageOf(x) 3911 } 3912 3913 // Deprecated: Use RouteMatch_ConnectMatcher.ProtoReflect.Descriptor instead. 3914 func (*RouteMatch_ConnectMatcher) Descriptor() ([]byte, []int) { 3915 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{4, 2} 3916 } 3917 3918 // The router is capable of shadowing traffic from one cluster to another. The current 3919 // implementation is "fire and forget," meaning Envoy will not wait for the shadow cluster to 3920 // respond before returning the response from the primary cluster. All normal statistics are 3921 // collected for the shadow cluster making this feature useful for testing. 3922 // 3923 // During shadowing, the host/authority header is altered such that *-shadow* is appended. This is 3924 // useful for logging. For example, *cluster1* becomes *cluster1-shadow*. 3925 // 3926 // .. note:: 3927 // 3928 // Shadowing will not be triggered if the primary cluster does not exist. 3929 type RouteAction_RequestMirrorPolicy struct { 3930 state protoimpl.MessageState 3931 sizeCache protoimpl.SizeCache 3932 unknownFields protoimpl.UnknownFields 3933 3934 // Specifies the cluster that requests will be mirrored to. The cluster must 3935 // exist in the cluster manager configuration. 3936 Cluster string `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` 3937 // If not specified, all requests to the target cluster will be mirrored. 3938 // 3939 // If specified, this field takes precedence over the `runtime_key` field and requests must also 3940 // fall under the percentage of matches indicated by this field. 3941 // 3942 // For some fraction N/D, a random number in the range [0,D) is selected. If the 3943 // number is <= the value of the numerator N, or if the key is not present, the default 3944 // value, the request will be mirrored. 3945 RuntimeFraction *v3.RuntimeFractionalPercent `protobuf:"bytes,3,opt,name=runtime_fraction,json=runtimeFraction,proto3" json:"runtime_fraction,omitempty"` 3946 // Determines if the trace span should be sampled. Defaults to true. 3947 TraceSampled *wrappers.BoolValue `protobuf:"bytes,4,opt,name=trace_sampled,json=traceSampled,proto3" json:"trace_sampled,omitempty"` 3948 // Deprecated: Do not use. 3949 HiddenEnvoyDeprecatedRuntimeKey string `protobuf:"bytes,2,opt,name=hidden_envoy_deprecated_runtime_key,json=hiddenEnvoyDeprecatedRuntimeKey,proto3" json:"hidden_envoy_deprecated_runtime_key,omitempty"` 3950 } 3951 3952 func (x *RouteAction_RequestMirrorPolicy) Reset() { 3953 *x = RouteAction_RequestMirrorPolicy{} 3954 if protoimpl.UnsafeEnabled { 3955 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[30] 3956 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3957 ms.StoreMessageInfo(mi) 3958 } 3959 } 3960 3961 func (x *RouteAction_RequestMirrorPolicy) String() string { 3962 return protoimpl.X.MessageStringOf(x) 3963 } 3964 3965 func (*RouteAction_RequestMirrorPolicy) ProtoMessage() {} 3966 3967 func (x *RouteAction_RequestMirrorPolicy) ProtoReflect() protoreflect.Message { 3968 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[30] 3969 if protoimpl.UnsafeEnabled && x != nil { 3970 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3971 if ms.LoadMessageInfo() == nil { 3972 ms.StoreMessageInfo(mi) 3973 } 3974 return ms 3975 } 3976 return mi.MessageOf(x) 3977 } 3978 3979 // Deprecated: Use RouteAction_RequestMirrorPolicy.ProtoReflect.Descriptor instead. 3980 func (*RouteAction_RequestMirrorPolicy) Descriptor() ([]byte, []int) { 3981 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{6, 0} 3982 } 3983 3984 func (x *RouteAction_RequestMirrorPolicy) GetCluster() string { 3985 if x != nil { 3986 return x.Cluster 3987 } 3988 return "" 3989 } 3990 3991 func (x *RouteAction_RequestMirrorPolicy) GetRuntimeFraction() *v3.RuntimeFractionalPercent { 3992 if x != nil { 3993 return x.RuntimeFraction 3994 } 3995 return nil 3996 } 3997 3998 func (x *RouteAction_RequestMirrorPolicy) GetTraceSampled() *wrappers.BoolValue { 3999 if x != nil { 4000 return x.TraceSampled 4001 } 4002 return nil 4003 } 4004 4005 // Deprecated: Do not use. 4006 func (x *RouteAction_RequestMirrorPolicy) GetHiddenEnvoyDeprecatedRuntimeKey() string { 4007 if x != nil { 4008 return x.HiddenEnvoyDeprecatedRuntimeKey 4009 } 4010 return "" 4011 } 4012 4013 // Specifies the route's hashing policy if the upstream cluster uses a hashing :ref:`load balancer 4014 // <arch_overview_load_balancing_types>`. 4015 // [#next-free-field: 7] 4016 type RouteAction_HashPolicy struct { 4017 state protoimpl.MessageState 4018 sizeCache protoimpl.SizeCache 4019 unknownFields protoimpl.UnknownFields 4020 4021 // Types that are assignable to PolicySpecifier: 4022 // *RouteAction_HashPolicy_Header_ 4023 // *RouteAction_HashPolicy_Cookie_ 4024 // *RouteAction_HashPolicy_ConnectionProperties_ 4025 // *RouteAction_HashPolicy_QueryParameter_ 4026 // *RouteAction_HashPolicy_FilterState_ 4027 PolicySpecifier isRouteAction_HashPolicy_PolicySpecifier `protobuf_oneof:"policy_specifier"` 4028 // The flag that short-circuits the hash computing. This field provides a 4029 // 'fallback' style of configuration: "if a terminal policy doesn't work, 4030 // fallback to rest of the policy list", it saves time when the terminal 4031 // policy works. 4032 // 4033 // If true, and there is already a hash computed, ignore rest of the 4034 // list of hash polices. 4035 // For example, if the following hash methods are configured: 4036 // 4037 // ========= ======== 4038 // specifier terminal 4039 // ========= ======== 4040 // Header A true 4041 // Header B false 4042 // Header C false 4043 // ========= ======== 4044 // 4045 // The generateHash process ends if policy "header A" generates a hash, as 4046 // it's a terminal policy. 4047 Terminal bool `protobuf:"varint,4,opt,name=terminal,proto3" json:"terminal,omitempty"` 4048 } 4049 4050 func (x *RouteAction_HashPolicy) Reset() { 4051 *x = RouteAction_HashPolicy{} 4052 if protoimpl.UnsafeEnabled { 4053 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[31] 4054 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4055 ms.StoreMessageInfo(mi) 4056 } 4057 } 4058 4059 func (x *RouteAction_HashPolicy) String() string { 4060 return protoimpl.X.MessageStringOf(x) 4061 } 4062 4063 func (*RouteAction_HashPolicy) ProtoMessage() {} 4064 4065 func (x *RouteAction_HashPolicy) ProtoReflect() protoreflect.Message { 4066 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[31] 4067 if protoimpl.UnsafeEnabled && x != nil { 4068 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4069 if ms.LoadMessageInfo() == nil { 4070 ms.StoreMessageInfo(mi) 4071 } 4072 return ms 4073 } 4074 return mi.MessageOf(x) 4075 } 4076 4077 // Deprecated: Use RouteAction_HashPolicy.ProtoReflect.Descriptor instead. 4078 func (*RouteAction_HashPolicy) Descriptor() ([]byte, []int) { 4079 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{6, 1} 4080 } 4081 4082 func (m *RouteAction_HashPolicy) GetPolicySpecifier() isRouteAction_HashPolicy_PolicySpecifier { 4083 if m != nil { 4084 return m.PolicySpecifier 4085 } 4086 return nil 4087 } 4088 4089 func (x *RouteAction_HashPolicy) GetHeader() *RouteAction_HashPolicy_Header { 4090 if x, ok := x.GetPolicySpecifier().(*RouteAction_HashPolicy_Header_); ok { 4091 return x.Header 4092 } 4093 return nil 4094 } 4095 4096 func (x *RouteAction_HashPolicy) GetCookie() *RouteAction_HashPolicy_Cookie { 4097 if x, ok := x.GetPolicySpecifier().(*RouteAction_HashPolicy_Cookie_); ok { 4098 return x.Cookie 4099 } 4100 return nil 4101 } 4102 4103 func (x *RouteAction_HashPolicy) GetConnectionProperties() *RouteAction_HashPolicy_ConnectionProperties { 4104 if x, ok := x.GetPolicySpecifier().(*RouteAction_HashPolicy_ConnectionProperties_); ok { 4105 return x.ConnectionProperties 4106 } 4107 return nil 4108 } 4109 4110 func (x *RouteAction_HashPolicy) GetQueryParameter() *RouteAction_HashPolicy_QueryParameter { 4111 if x, ok := x.GetPolicySpecifier().(*RouteAction_HashPolicy_QueryParameter_); ok { 4112 return x.QueryParameter 4113 } 4114 return nil 4115 } 4116 4117 func (x *RouteAction_HashPolicy) GetFilterState() *RouteAction_HashPolicy_FilterState { 4118 if x, ok := x.GetPolicySpecifier().(*RouteAction_HashPolicy_FilterState_); ok { 4119 return x.FilterState 4120 } 4121 return nil 4122 } 4123 4124 func (x *RouteAction_HashPolicy) GetTerminal() bool { 4125 if x != nil { 4126 return x.Terminal 4127 } 4128 return false 4129 } 4130 4131 type isRouteAction_HashPolicy_PolicySpecifier interface { 4132 isRouteAction_HashPolicy_PolicySpecifier() 4133 } 4134 4135 type RouteAction_HashPolicy_Header_ struct { 4136 // Header hash policy. 4137 Header *RouteAction_HashPolicy_Header `protobuf:"bytes,1,opt,name=header,proto3,oneof"` 4138 } 4139 4140 type RouteAction_HashPolicy_Cookie_ struct { 4141 // Cookie hash policy. 4142 Cookie *RouteAction_HashPolicy_Cookie `protobuf:"bytes,2,opt,name=cookie,proto3,oneof"` 4143 } 4144 4145 type RouteAction_HashPolicy_ConnectionProperties_ struct { 4146 // Connection properties hash policy. 4147 ConnectionProperties *RouteAction_HashPolicy_ConnectionProperties `protobuf:"bytes,3,opt,name=connection_properties,json=connectionProperties,proto3,oneof"` 4148 } 4149 4150 type RouteAction_HashPolicy_QueryParameter_ struct { 4151 // Query parameter hash policy. 4152 QueryParameter *RouteAction_HashPolicy_QueryParameter `protobuf:"bytes,5,opt,name=query_parameter,json=queryParameter,proto3,oneof"` 4153 } 4154 4155 type RouteAction_HashPolicy_FilterState_ struct { 4156 // Filter state hash policy. 4157 FilterState *RouteAction_HashPolicy_FilterState `protobuf:"bytes,6,opt,name=filter_state,json=filterState,proto3,oneof"` 4158 } 4159 4160 func (*RouteAction_HashPolicy_Header_) isRouteAction_HashPolicy_PolicySpecifier() {} 4161 4162 func (*RouteAction_HashPolicy_Cookie_) isRouteAction_HashPolicy_PolicySpecifier() {} 4163 4164 func (*RouteAction_HashPolicy_ConnectionProperties_) isRouteAction_HashPolicy_PolicySpecifier() {} 4165 4166 func (*RouteAction_HashPolicy_QueryParameter_) isRouteAction_HashPolicy_PolicySpecifier() {} 4167 4168 func (*RouteAction_HashPolicy_FilterState_) isRouteAction_HashPolicy_PolicySpecifier() {} 4169 4170 // Allows enabling and disabling upgrades on a per-route basis. 4171 // This overrides any enabled/disabled upgrade filter chain specified in the 4172 // HttpConnectionManager 4173 // :ref:`upgrade_configs 4174 // <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.upgrade_configs>` 4175 // but does not affect any custom filter chain specified there. 4176 type RouteAction_UpgradeConfig struct { 4177 state protoimpl.MessageState 4178 sizeCache protoimpl.SizeCache 4179 unknownFields protoimpl.UnknownFields 4180 4181 // The case-insensitive name of this upgrade, e.g. "websocket". 4182 // For each upgrade type present in upgrade_configs, requests with 4183 // Upgrade: [upgrade_type] will be proxied upstream. 4184 UpgradeType string `protobuf:"bytes,1,opt,name=upgrade_type,json=upgradeType,proto3" json:"upgrade_type,omitempty"` 4185 // Determines if upgrades are available on this route. Defaults to true. 4186 Enabled *wrappers.BoolValue `protobuf:"bytes,2,opt,name=enabled,proto3" json:"enabled,omitempty"` 4187 // Configuration for sending data upstream as a raw data payload. This is used for 4188 // CONNECT requests, when forwarding CONNECT payload as raw TCP. 4189 // Note that CONNECT support is currently considered alpha in Envoy. 4190 // [#comment: TODO(htuch): Replace the above comment with an alpha tag.] 4191 ConnectConfig *RouteAction_UpgradeConfig_ConnectConfig `protobuf:"bytes,3,opt,name=connect_config,json=connectConfig,proto3" json:"connect_config,omitempty"` 4192 } 4193 4194 func (x *RouteAction_UpgradeConfig) Reset() { 4195 *x = RouteAction_UpgradeConfig{} 4196 if protoimpl.UnsafeEnabled { 4197 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[32] 4198 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4199 ms.StoreMessageInfo(mi) 4200 } 4201 } 4202 4203 func (x *RouteAction_UpgradeConfig) String() string { 4204 return protoimpl.X.MessageStringOf(x) 4205 } 4206 4207 func (*RouteAction_UpgradeConfig) ProtoMessage() {} 4208 4209 func (x *RouteAction_UpgradeConfig) ProtoReflect() protoreflect.Message { 4210 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[32] 4211 if protoimpl.UnsafeEnabled && x != nil { 4212 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4213 if ms.LoadMessageInfo() == nil { 4214 ms.StoreMessageInfo(mi) 4215 } 4216 return ms 4217 } 4218 return mi.MessageOf(x) 4219 } 4220 4221 // Deprecated: Use RouteAction_UpgradeConfig.ProtoReflect.Descriptor instead. 4222 func (*RouteAction_UpgradeConfig) Descriptor() ([]byte, []int) { 4223 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{6, 2} 4224 } 4225 4226 func (x *RouteAction_UpgradeConfig) GetUpgradeType() string { 4227 if x != nil { 4228 return x.UpgradeType 4229 } 4230 return "" 4231 } 4232 4233 func (x *RouteAction_UpgradeConfig) GetEnabled() *wrappers.BoolValue { 4234 if x != nil { 4235 return x.Enabled 4236 } 4237 return nil 4238 } 4239 4240 func (x *RouteAction_UpgradeConfig) GetConnectConfig() *RouteAction_UpgradeConfig_ConnectConfig { 4241 if x != nil { 4242 return x.ConnectConfig 4243 } 4244 return nil 4245 } 4246 4247 type RouteAction_MaxStreamDuration struct { 4248 state protoimpl.MessageState 4249 sizeCache protoimpl.SizeCache 4250 unknownFields protoimpl.UnknownFields 4251 4252 // Specifies the maximum duration allowed for streams on the route. If not specified, the value 4253 // from the :ref:`max_stream_duration 4254 // <envoy_v3_api_field_config.core.v3.HttpProtocolOptions.max_stream_duration>` field in 4255 // :ref:`HttpConnectionManager.common_http_protocol_options 4256 // <envoy_v3_api_field_extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.common_http_protocol_options>` 4257 // is used. If this field is set explicitly to zero, any 4258 // HttpConnectionManager max_stream_duration timeout will be disabled for 4259 // this route. 4260 MaxStreamDuration *duration.Duration `protobuf:"bytes,1,opt,name=max_stream_duration,json=maxStreamDuration,proto3" json:"max_stream_duration,omitempty"` 4261 // If present, and the request contains a `grpc-timeout header 4262 // <https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md>`_, use that value as the 4263 // *max_stream_duration*, but limit the applied timeout to the maximum value specified here. 4264 // If set to 0, the `grpc-timeout` header is used without modification. 4265 GrpcTimeoutHeaderMax *duration.Duration `protobuf:"bytes,2,opt,name=grpc_timeout_header_max,json=grpcTimeoutHeaderMax,proto3" json:"grpc_timeout_header_max,omitempty"` 4266 // If present, Envoy will adjust the timeout provided by the `grpc-timeout` header by 4267 // subtracting the provided duration from the header. This is useful for allowing Envoy to set 4268 // its global timeout to be less than that of the deadline imposed by the calling client, which 4269 // makes it more likely that Envoy will handle the timeout instead of having the call canceled 4270 // by the client. If, after applying the offset, the resulting timeout is zero or negative, 4271 // the stream will timeout immediately. 4272 GrpcTimeoutHeaderOffset *duration.Duration `protobuf:"bytes,3,opt,name=grpc_timeout_header_offset,json=grpcTimeoutHeaderOffset,proto3" json:"grpc_timeout_header_offset,omitempty"` 4273 } 4274 4275 func (x *RouteAction_MaxStreamDuration) Reset() { 4276 *x = RouteAction_MaxStreamDuration{} 4277 if protoimpl.UnsafeEnabled { 4278 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[33] 4279 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4280 ms.StoreMessageInfo(mi) 4281 } 4282 } 4283 4284 func (x *RouteAction_MaxStreamDuration) String() string { 4285 return protoimpl.X.MessageStringOf(x) 4286 } 4287 4288 func (*RouteAction_MaxStreamDuration) ProtoMessage() {} 4289 4290 func (x *RouteAction_MaxStreamDuration) ProtoReflect() protoreflect.Message { 4291 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[33] 4292 if protoimpl.UnsafeEnabled && x != nil { 4293 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4294 if ms.LoadMessageInfo() == nil { 4295 ms.StoreMessageInfo(mi) 4296 } 4297 return ms 4298 } 4299 return mi.MessageOf(x) 4300 } 4301 4302 // Deprecated: Use RouteAction_MaxStreamDuration.ProtoReflect.Descriptor instead. 4303 func (*RouteAction_MaxStreamDuration) Descriptor() ([]byte, []int) { 4304 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{6, 3} 4305 } 4306 4307 func (x *RouteAction_MaxStreamDuration) GetMaxStreamDuration() *duration.Duration { 4308 if x != nil { 4309 return x.MaxStreamDuration 4310 } 4311 return nil 4312 } 4313 4314 func (x *RouteAction_MaxStreamDuration) GetGrpcTimeoutHeaderMax() *duration.Duration { 4315 if x != nil { 4316 return x.GrpcTimeoutHeaderMax 4317 } 4318 return nil 4319 } 4320 4321 func (x *RouteAction_MaxStreamDuration) GetGrpcTimeoutHeaderOffset() *duration.Duration { 4322 if x != nil { 4323 return x.GrpcTimeoutHeaderOffset 4324 } 4325 return nil 4326 } 4327 4328 type RouteAction_HashPolicy_Header struct { 4329 state protoimpl.MessageState 4330 sizeCache protoimpl.SizeCache 4331 unknownFields protoimpl.UnknownFields 4332 4333 // The name of the request header that will be used to obtain the hash 4334 // key. If the request header is not present, no hash will be produced. 4335 HeaderName string `protobuf:"bytes,1,opt,name=header_name,json=headerName,proto3" json:"header_name,omitempty"` 4336 // If specified, the request header value will be rewritten and used 4337 // to produce the hash key. 4338 RegexRewrite *v31.RegexMatchAndSubstitute `protobuf:"bytes,2,opt,name=regex_rewrite,json=regexRewrite,proto3" json:"regex_rewrite,omitempty"` 4339 } 4340 4341 func (x *RouteAction_HashPolicy_Header) Reset() { 4342 *x = RouteAction_HashPolicy_Header{} 4343 if protoimpl.UnsafeEnabled { 4344 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[34] 4345 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4346 ms.StoreMessageInfo(mi) 4347 } 4348 } 4349 4350 func (x *RouteAction_HashPolicy_Header) String() string { 4351 return protoimpl.X.MessageStringOf(x) 4352 } 4353 4354 func (*RouteAction_HashPolicy_Header) ProtoMessage() {} 4355 4356 func (x *RouteAction_HashPolicy_Header) ProtoReflect() protoreflect.Message { 4357 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[34] 4358 if protoimpl.UnsafeEnabled && x != nil { 4359 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4360 if ms.LoadMessageInfo() == nil { 4361 ms.StoreMessageInfo(mi) 4362 } 4363 return ms 4364 } 4365 return mi.MessageOf(x) 4366 } 4367 4368 // Deprecated: Use RouteAction_HashPolicy_Header.ProtoReflect.Descriptor instead. 4369 func (*RouteAction_HashPolicy_Header) Descriptor() ([]byte, []int) { 4370 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{6, 1, 0} 4371 } 4372 4373 func (x *RouteAction_HashPolicy_Header) GetHeaderName() string { 4374 if x != nil { 4375 return x.HeaderName 4376 } 4377 return "" 4378 } 4379 4380 func (x *RouteAction_HashPolicy_Header) GetRegexRewrite() *v31.RegexMatchAndSubstitute { 4381 if x != nil { 4382 return x.RegexRewrite 4383 } 4384 return nil 4385 } 4386 4387 // Envoy supports two types of cookie affinity: 4388 // 4389 // 1. Passive. Envoy takes a cookie that's present in the cookies header and 4390 // hashes on its value. 4391 // 4392 // 2. Generated. Envoy generates and sets a cookie with an expiration (TTL) 4393 // on the first request from the client in its response to the client, 4394 // based on the endpoint the request gets sent to. The client then 4395 // presents this on the next and all subsequent requests. The hash of 4396 // this is sufficient to ensure these requests get sent to the same 4397 // endpoint. The cookie is generated by hashing the source and 4398 // destination ports and addresses so that multiple independent HTTP2 4399 // streams on the same connection will independently receive the same 4400 // cookie, even if they arrive at the Envoy simultaneously. 4401 type RouteAction_HashPolicy_Cookie struct { 4402 state protoimpl.MessageState 4403 sizeCache protoimpl.SizeCache 4404 unknownFields protoimpl.UnknownFields 4405 4406 // The name of the cookie that will be used to obtain the hash key. If the 4407 // cookie is not present and ttl below is not set, no hash will be 4408 // produced. 4409 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 4410 // If specified, a cookie with the TTL will be generated if the cookie is 4411 // not present. If the TTL is present and zero, the generated cookie will 4412 // be a session cookie. 4413 Ttl *duration.Duration `protobuf:"bytes,2,opt,name=ttl,proto3" json:"ttl,omitempty"` 4414 // The name of the path for the cookie. If no path is specified here, no path 4415 // will be set for the cookie. 4416 Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` 4417 } 4418 4419 func (x *RouteAction_HashPolicy_Cookie) Reset() { 4420 *x = RouteAction_HashPolicy_Cookie{} 4421 if protoimpl.UnsafeEnabled { 4422 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[35] 4423 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4424 ms.StoreMessageInfo(mi) 4425 } 4426 } 4427 4428 func (x *RouteAction_HashPolicy_Cookie) String() string { 4429 return protoimpl.X.MessageStringOf(x) 4430 } 4431 4432 func (*RouteAction_HashPolicy_Cookie) ProtoMessage() {} 4433 4434 func (x *RouteAction_HashPolicy_Cookie) ProtoReflect() protoreflect.Message { 4435 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[35] 4436 if protoimpl.UnsafeEnabled && x != nil { 4437 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4438 if ms.LoadMessageInfo() == nil { 4439 ms.StoreMessageInfo(mi) 4440 } 4441 return ms 4442 } 4443 return mi.MessageOf(x) 4444 } 4445 4446 // Deprecated: Use RouteAction_HashPolicy_Cookie.ProtoReflect.Descriptor instead. 4447 func (*RouteAction_HashPolicy_Cookie) Descriptor() ([]byte, []int) { 4448 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{6, 1, 1} 4449 } 4450 4451 func (x *RouteAction_HashPolicy_Cookie) GetName() string { 4452 if x != nil { 4453 return x.Name 4454 } 4455 return "" 4456 } 4457 4458 func (x *RouteAction_HashPolicy_Cookie) GetTtl() *duration.Duration { 4459 if x != nil { 4460 return x.Ttl 4461 } 4462 return nil 4463 } 4464 4465 func (x *RouteAction_HashPolicy_Cookie) GetPath() string { 4466 if x != nil { 4467 return x.Path 4468 } 4469 return "" 4470 } 4471 4472 type RouteAction_HashPolicy_ConnectionProperties struct { 4473 state protoimpl.MessageState 4474 sizeCache protoimpl.SizeCache 4475 unknownFields protoimpl.UnknownFields 4476 4477 // Hash on source IP address. 4478 SourceIp bool `protobuf:"varint,1,opt,name=source_ip,json=sourceIp,proto3" json:"source_ip,omitempty"` 4479 } 4480 4481 func (x *RouteAction_HashPolicy_ConnectionProperties) Reset() { 4482 *x = RouteAction_HashPolicy_ConnectionProperties{} 4483 if protoimpl.UnsafeEnabled { 4484 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[36] 4485 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4486 ms.StoreMessageInfo(mi) 4487 } 4488 } 4489 4490 func (x *RouteAction_HashPolicy_ConnectionProperties) String() string { 4491 return protoimpl.X.MessageStringOf(x) 4492 } 4493 4494 func (*RouteAction_HashPolicy_ConnectionProperties) ProtoMessage() {} 4495 4496 func (x *RouteAction_HashPolicy_ConnectionProperties) ProtoReflect() protoreflect.Message { 4497 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[36] 4498 if protoimpl.UnsafeEnabled && x != nil { 4499 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4500 if ms.LoadMessageInfo() == nil { 4501 ms.StoreMessageInfo(mi) 4502 } 4503 return ms 4504 } 4505 return mi.MessageOf(x) 4506 } 4507 4508 // Deprecated: Use RouteAction_HashPolicy_ConnectionProperties.ProtoReflect.Descriptor instead. 4509 func (*RouteAction_HashPolicy_ConnectionProperties) Descriptor() ([]byte, []int) { 4510 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{6, 1, 2} 4511 } 4512 4513 func (x *RouteAction_HashPolicy_ConnectionProperties) GetSourceIp() bool { 4514 if x != nil { 4515 return x.SourceIp 4516 } 4517 return false 4518 } 4519 4520 type RouteAction_HashPolicy_QueryParameter struct { 4521 state protoimpl.MessageState 4522 sizeCache protoimpl.SizeCache 4523 unknownFields protoimpl.UnknownFields 4524 4525 // The name of the URL query parameter that will be used to obtain the hash 4526 // key. If the parameter is not present, no hash will be produced. Query 4527 // parameter names are case-sensitive. 4528 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 4529 } 4530 4531 func (x *RouteAction_HashPolicy_QueryParameter) Reset() { 4532 *x = RouteAction_HashPolicy_QueryParameter{} 4533 if protoimpl.UnsafeEnabled { 4534 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[37] 4535 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4536 ms.StoreMessageInfo(mi) 4537 } 4538 } 4539 4540 func (x *RouteAction_HashPolicy_QueryParameter) String() string { 4541 return protoimpl.X.MessageStringOf(x) 4542 } 4543 4544 func (*RouteAction_HashPolicy_QueryParameter) ProtoMessage() {} 4545 4546 func (x *RouteAction_HashPolicy_QueryParameter) ProtoReflect() protoreflect.Message { 4547 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[37] 4548 if protoimpl.UnsafeEnabled && x != nil { 4549 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4550 if ms.LoadMessageInfo() == nil { 4551 ms.StoreMessageInfo(mi) 4552 } 4553 return ms 4554 } 4555 return mi.MessageOf(x) 4556 } 4557 4558 // Deprecated: Use RouteAction_HashPolicy_QueryParameter.ProtoReflect.Descriptor instead. 4559 func (*RouteAction_HashPolicy_QueryParameter) Descriptor() ([]byte, []int) { 4560 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{6, 1, 3} 4561 } 4562 4563 func (x *RouteAction_HashPolicy_QueryParameter) GetName() string { 4564 if x != nil { 4565 return x.Name 4566 } 4567 return "" 4568 } 4569 4570 type RouteAction_HashPolicy_FilterState struct { 4571 state protoimpl.MessageState 4572 sizeCache protoimpl.SizeCache 4573 unknownFields protoimpl.UnknownFields 4574 4575 // The name of the Object in the per-request filterState, which is an 4576 // Envoy::Http::Hashable object. If there is no data associated with the key, 4577 // or the stored object is not Envoy::Http::Hashable, no hash will be produced. 4578 Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` 4579 } 4580 4581 func (x *RouteAction_HashPolicy_FilterState) Reset() { 4582 *x = RouteAction_HashPolicy_FilterState{} 4583 if protoimpl.UnsafeEnabled { 4584 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[38] 4585 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4586 ms.StoreMessageInfo(mi) 4587 } 4588 } 4589 4590 func (x *RouteAction_HashPolicy_FilterState) String() string { 4591 return protoimpl.X.MessageStringOf(x) 4592 } 4593 4594 func (*RouteAction_HashPolicy_FilterState) ProtoMessage() {} 4595 4596 func (x *RouteAction_HashPolicy_FilterState) ProtoReflect() protoreflect.Message { 4597 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[38] 4598 if protoimpl.UnsafeEnabled && x != nil { 4599 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4600 if ms.LoadMessageInfo() == nil { 4601 ms.StoreMessageInfo(mi) 4602 } 4603 return ms 4604 } 4605 return mi.MessageOf(x) 4606 } 4607 4608 // Deprecated: Use RouteAction_HashPolicy_FilterState.ProtoReflect.Descriptor instead. 4609 func (*RouteAction_HashPolicy_FilterState) Descriptor() ([]byte, []int) { 4610 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{6, 1, 4} 4611 } 4612 4613 func (x *RouteAction_HashPolicy_FilterState) GetKey() string { 4614 if x != nil { 4615 return x.Key 4616 } 4617 return "" 4618 } 4619 4620 // Configuration for sending data upstream as a raw data payload. This is used for 4621 // CONNECT or POST requests, when forwarding request payload as raw TCP. 4622 type RouteAction_UpgradeConfig_ConnectConfig struct { 4623 state protoimpl.MessageState 4624 sizeCache protoimpl.SizeCache 4625 unknownFields protoimpl.UnknownFields 4626 4627 // If present, the proxy protocol header will be prepended to the CONNECT payload sent upstream. 4628 ProxyProtocolConfig *v3.ProxyProtocolConfig `protobuf:"bytes,1,opt,name=proxy_protocol_config,json=proxyProtocolConfig,proto3" json:"proxy_protocol_config,omitempty"` 4629 // If set, the route will also allow forwarding POST payload as raw TCP. 4630 AllowPost bool `protobuf:"varint,2,opt,name=allow_post,json=allowPost,proto3" json:"allow_post,omitempty"` 4631 } 4632 4633 func (x *RouteAction_UpgradeConfig_ConnectConfig) Reset() { 4634 *x = RouteAction_UpgradeConfig_ConnectConfig{} 4635 if protoimpl.UnsafeEnabled { 4636 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[39] 4637 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4638 ms.StoreMessageInfo(mi) 4639 } 4640 } 4641 4642 func (x *RouteAction_UpgradeConfig_ConnectConfig) String() string { 4643 return protoimpl.X.MessageStringOf(x) 4644 } 4645 4646 func (*RouteAction_UpgradeConfig_ConnectConfig) ProtoMessage() {} 4647 4648 func (x *RouteAction_UpgradeConfig_ConnectConfig) ProtoReflect() protoreflect.Message { 4649 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[39] 4650 if protoimpl.UnsafeEnabled && x != nil { 4651 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4652 if ms.LoadMessageInfo() == nil { 4653 ms.StoreMessageInfo(mi) 4654 } 4655 return ms 4656 } 4657 return mi.MessageOf(x) 4658 } 4659 4660 // Deprecated: Use RouteAction_UpgradeConfig_ConnectConfig.ProtoReflect.Descriptor instead. 4661 func (*RouteAction_UpgradeConfig_ConnectConfig) Descriptor() ([]byte, []int) { 4662 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{6, 2, 0} 4663 } 4664 4665 func (x *RouteAction_UpgradeConfig_ConnectConfig) GetProxyProtocolConfig() *v3.ProxyProtocolConfig { 4666 if x != nil { 4667 return x.ProxyProtocolConfig 4668 } 4669 return nil 4670 } 4671 4672 func (x *RouteAction_UpgradeConfig_ConnectConfig) GetAllowPost() bool { 4673 if x != nil { 4674 return x.AllowPost 4675 } 4676 return false 4677 } 4678 4679 type RetryPolicy_RetryPriority struct { 4680 state protoimpl.MessageState 4681 sizeCache protoimpl.SizeCache 4682 unknownFields protoimpl.UnknownFields 4683 4684 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 4685 // [#extension-category: envoy.retry_priorities] 4686 // 4687 // Types that are assignable to ConfigType: 4688 // *RetryPolicy_RetryPriority_TypedConfig 4689 // *RetryPolicy_RetryPriority_HiddenEnvoyDeprecatedConfig 4690 ConfigType isRetryPolicy_RetryPriority_ConfigType `protobuf_oneof:"config_type"` 4691 } 4692 4693 func (x *RetryPolicy_RetryPriority) Reset() { 4694 *x = RetryPolicy_RetryPriority{} 4695 if protoimpl.UnsafeEnabled { 4696 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[40] 4697 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4698 ms.StoreMessageInfo(mi) 4699 } 4700 } 4701 4702 func (x *RetryPolicy_RetryPriority) String() string { 4703 return protoimpl.X.MessageStringOf(x) 4704 } 4705 4706 func (*RetryPolicy_RetryPriority) ProtoMessage() {} 4707 4708 func (x *RetryPolicy_RetryPriority) ProtoReflect() protoreflect.Message { 4709 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[40] 4710 if protoimpl.UnsafeEnabled && x != nil { 4711 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4712 if ms.LoadMessageInfo() == nil { 4713 ms.StoreMessageInfo(mi) 4714 } 4715 return ms 4716 } 4717 return mi.MessageOf(x) 4718 } 4719 4720 // Deprecated: Use RetryPolicy_RetryPriority.ProtoReflect.Descriptor instead. 4721 func (*RetryPolicy_RetryPriority) Descriptor() ([]byte, []int) { 4722 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{7, 0} 4723 } 4724 4725 func (x *RetryPolicy_RetryPriority) GetName() string { 4726 if x != nil { 4727 return x.Name 4728 } 4729 return "" 4730 } 4731 4732 func (m *RetryPolicy_RetryPriority) GetConfigType() isRetryPolicy_RetryPriority_ConfigType { 4733 if m != nil { 4734 return m.ConfigType 4735 } 4736 return nil 4737 } 4738 4739 func (x *RetryPolicy_RetryPriority) GetTypedConfig() *any.Any { 4740 if x, ok := x.GetConfigType().(*RetryPolicy_RetryPriority_TypedConfig); ok { 4741 return x.TypedConfig 4742 } 4743 return nil 4744 } 4745 4746 // Deprecated: Do not use. 4747 func (x *RetryPolicy_RetryPriority) GetHiddenEnvoyDeprecatedConfig() *_struct.Struct { 4748 if x, ok := x.GetConfigType().(*RetryPolicy_RetryPriority_HiddenEnvoyDeprecatedConfig); ok { 4749 return x.HiddenEnvoyDeprecatedConfig 4750 } 4751 return nil 4752 } 4753 4754 type isRetryPolicy_RetryPriority_ConfigType interface { 4755 isRetryPolicy_RetryPriority_ConfigType() 4756 } 4757 4758 type RetryPolicy_RetryPriority_TypedConfig struct { 4759 TypedConfig *any.Any `protobuf:"bytes,3,opt,name=typed_config,json=typedConfig,proto3,oneof"` 4760 } 4761 4762 type RetryPolicy_RetryPriority_HiddenEnvoyDeprecatedConfig struct { 4763 // Deprecated: Do not use. 4764 HiddenEnvoyDeprecatedConfig *_struct.Struct `protobuf:"bytes,2,opt,name=hidden_envoy_deprecated_config,json=hiddenEnvoyDeprecatedConfig,proto3,oneof"` 4765 } 4766 4767 func (*RetryPolicy_RetryPriority_TypedConfig) isRetryPolicy_RetryPriority_ConfigType() {} 4768 4769 func (*RetryPolicy_RetryPriority_HiddenEnvoyDeprecatedConfig) isRetryPolicy_RetryPriority_ConfigType() { 4770 } 4771 4772 type RetryPolicy_RetryHostPredicate struct { 4773 state protoimpl.MessageState 4774 sizeCache protoimpl.SizeCache 4775 unknownFields protoimpl.UnknownFields 4776 4777 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 4778 // [#extension-category: envoy.retry_host_predicates] 4779 // 4780 // Types that are assignable to ConfigType: 4781 // *RetryPolicy_RetryHostPredicate_TypedConfig 4782 // *RetryPolicy_RetryHostPredicate_HiddenEnvoyDeprecatedConfig 4783 ConfigType isRetryPolicy_RetryHostPredicate_ConfigType `protobuf_oneof:"config_type"` 4784 } 4785 4786 func (x *RetryPolicy_RetryHostPredicate) Reset() { 4787 *x = RetryPolicy_RetryHostPredicate{} 4788 if protoimpl.UnsafeEnabled { 4789 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[41] 4790 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4791 ms.StoreMessageInfo(mi) 4792 } 4793 } 4794 4795 func (x *RetryPolicy_RetryHostPredicate) String() string { 4796 return protoimpl.X.MessageStringOf(x) 4797 } 4798 4799 func (*RetryPolicy_RetryHostPredicate) ProtoMessage() {} 4800 4801 func (x *RetryPolicy_RetryHostPredicate) ProtoReflect() protoreflect.Message { 4802 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[41] 4803 if protoimpl.UnsafeEnabled && x != nil { 4804 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4805 if ms.LoadMessageInfo() == nil { 4806 ms.StoreMessageInfo(mi) 4807 } 4808 return ms 4809 } 4810 return mi.MessageOf(x) 4811 } 4812 4813 // Deprecated: Use RetryPolicy_RetryHostPredicate.ProtoReflect.Descriptor instead. 4814 func (*RetryPolicy_RetryHostPredicate) Descriptor() ([]byte, []int) { 4815 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{7, 1} 4816 } 4817 4818 func (x *RetryPolicy_RetryHostPredicate) GetName() string { 4819 if x != nil { 4820 return x.Name 4821 } 4822 return "" 4823 } 4824 4825 func (m *RetryPolicy_RetryHostPredicate) GetConfigType() isRetryPolicy_RetryHostPredicate_ConfigType { 4826 if m != nil { 4827 return m.ConfigType 4828 } 4829 return nil 4830 } 4831 4832 func (x *RetryPolicy_RetryHostPredicate) GetTypedConfig() *any.Any { 4833 if x, ok := x.GetConfigType().(*RetryPolicy_RetryHostPredicate_TypedConfig); ok { 4834 return x.TypedConfig 4835 } 4836 return nil 4837 } 4838 4839 // Deprecated: Do not use. 4840 func (x *RetryPolicy_RetryHostPredicate) GetHiddenEnvoyDeprecatedConfig() *_struct.Struct { 4841 if x, ok := x.GetConfigType().(*RetryPolicy_RetryHostPredicate_HiddenEnvoyDeprecatedConfig); ok { 4842 return x.HiddenEnvoyDeprecatedConfig 4843 } 4844 return nil 4845 } 4846 4847 type isRetryPolicy_RetryHostPredicate_ConfigType interface { 4848 isRetryPolicy_RetryHostPredicate_ConfigType() 4849 } 4850 4851 type RetryPolicy_RetryHostPredicate_TypedConfig struct { 4852 TypedConfig *any.Any `protobuf:"bytes,3,opt,name=typed_config,json=typedConfig,proto3,oneof"` 4853 } 4854 4855 type RetryPolicy_RetryHostPredicate_HiddenEnvoyDeprecatedConfig struct { 4856 // Deprecated: Do not use. 4857 HiddenEnvoyDeprecatedConfig *_struct.Struct `protobuf:"bytes,2,opt,name=hidden_envoy_deprecated_config,json=hiddenEnvoyDeprecatedConfig,proto3,oneof"` 4858 } 4859 4860 func (*RetryPolicy_RetryHostPredicate_TypedConfig) isRetryPolicy_RetryHostPredicate_ConfigType() {} 4861 4862 func (*RetryPolicy_RetryHostPredicate_HiddenEnvoyDeprecatedConfig) isRetryPolicy_RetryHostPredicate_ConfigType() { 4863 } 4864 4865 type RetryPolicy_RetryBackOff struct { 4866 state protoimpl.MessageState 4867 sizeCache protoimpl.SizeCache 4868 unknownFields protoimpl.UnknownFields 4869 4870 // Specifies the base interval between retries. This parameter is required and must be greater 4871 // than zero. Values less than 1 ms are rounded up to 1 ms. 4872 // See :ref:`config_http_filters_router_x-envoy-max-retries` for a discussion of Envoy's 4873 // back-off algorithm. 4874 BaseInterval *duration.Duration `protobuf:"bytes,1,opt,name=base_interval,json=baseInterval,proto3" json:"base_interval,omitempty"` 4875 // Specifies the maximum interval between retries. This parameter is optional, but must be 4876 // greater than or equal to the `base_interval` if set. The default is 10 times the 4877 // `base_interval`. See :ref:`config_http_filters_router_x-envoy-max-retries` for a discussion 4878 // of Envoy's back-off algorithm. 4879 MaxInterval *duration.Duration `protobuf:"bytes,2,opt,name=max_interval,json=maxInterval,proto3" json:"max_interval,omitempty"` 4880 } 4881 4882 func (x *RetryPolicy_RetryBackOff) Reset() { 4883 *x = RetryPolicy_RetryBackOff{} 4884 if protoimpl.UnsafeEnabled { 4885 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[42] 4886 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4887 ms.StoreMessageInfo(mi) 4888 } 4889 } 4890 4891 func (x *RetryPolicy_RetryBackOff) String() string { 4892 return protoimpl.X.MessageStringOf(x) 4893 } 4894 4895 func (*RetryPolicy_RetryBackOff) ProtoMessage() {} 4896 4897 func (x *RetryPolicy_RetryBackOff) ProtoReflect() protoreflect.Message { 4898 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[42] 4899 if protoimpl.UnsafeEnabled && x != nil { 4900 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4901 if ms.LoadMessageInfo() == nil { 4902 ms.StoreMessageInfo(mi) 4903 } 4904 return ms 4905 } 4906 return mi.MessageOf(x) 4907 } 4908 4909 // Deprecated: Use RetryPolicy_RetryBackOff.ProtoReflect.Descriptor instead. 4910 func (*RetryPolicy_RetryBackOff) Descriptor() ([]byte, []int) { 4911 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{7, 2} 4912 } 4913 4914 func (x *RetryPolicy_RetryBackOff) GetBaseInterval() *duration.Duration { 4915 if x != nil { 4916 return x.BaseInterval 4917 } 4918 return nil 4919 } 4920 4921 func (x *RetryPolicy_RetryBackOff) GetMaxInterval() *duration.Duration { 4922 if x != nil { 4923 return x.MaxInterval 4924 } 4925 return nil 4926 } 4927 4928 type RetryPolicy_ResetHeader struct { 4929 state protoimpl.MessageState 4930 sizeCache protoimpl.SizeCache 4931 unknownFields protoimpl.UnknownFields 4932 4933 // The name of the reset header. 4934 // 4935 // .. note:: 4936 // 4937 // If the header appears multiple times only the first value is used. 4938 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 4939 // The format of the reset header. 4940 Format RetryPolicy_ResetHeaderFormat `protobuf:"varint,2,opt,name=format,proto3,enum=envoy.config.route.v3.RetryPolicy_ResetHeaderFormat" json:"format,omitempty"` 4941 } 4942 4943 func (x *RetryPolicy_ResetHeader) Reset() { 4944 *x = RetryPolicy_ResetHeader{} 4945 if protoimpl.UnsafeEnabled { 4946 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[43] 4947 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4948 ms.StoreMessageInfo(mi) 4949 } 4950 } 4951 4952 func (x *RetryPolicy_ResetHeader) String() string { 4953 return protoimpl.X.MessageStringOf(x) 4954 } 4955 4956 func (*RetryPolicy_ResetHeader) ProtoMessage() {} 4957 4958 func (x *RetryPolicy_ResetHeader) ProtoReflect() protoreflect.Message { 4959 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[43] 4960 if protoimpl.UnsafeEnabled && x != nil { 4961 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 4962 if ms.LoadMessageInfo() == nil { 4963 ms.StoreMessageInfo(mi) 4964 } 4965 return ms 4966 } 4967 return mi.MessageOf(x) 4968 } 4969 4970 // Deprecated: Use RetryPolicy_ResetHeader.ProtoReflect.Descriptor instead. 4971 func (*RetryPolicy_ResetHeader) Descriptor() ([]byte, []int) { 4972 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{7, 3} 4973 } 4974 4975 func (x *RetryPolicy_ResetHeader) GetName() string { 4976 if x != nil { 4977 return x.Name 4978 } 4979 return "" 4980 } 4981 4982 func (x *RetryPolicy_ResetHeader) GetFormat() RetryPolicy_ResetHeaderFormat { 4983 if x != nil { 4984 return x.Format 4985 } 4986 return RetryPolicy_SECONDS 4987 } 4988 4989 // A retry back-off strategy that applies when the upstream server rate limits 4990 // the request. 4991 // 4992 // Given this configuration: 4993 // 4994 // .. code-block:: yaml 4995 // 4996 // rate_limited_retry_back_off: 4997 // reset_headers: 4998 // - name: Retry-After 4999 // format: SECONDS 5000 // - name: X-RateLimit-Reset 5001 // format: UNIX_TIMESTAMP 5002 // max_interval: "300s" 5003 // 5004 // The following algorithm will apply: 5005 // 5006 // 1. If the response contains the header ``Retry-After`` its value must be on 5007 // the form ``120`` (an integer that represents the number of seconds to 5008 // wait before retrying). If so, this value is used as the back-off interval. 5009 // 2. Otherwise, if the response contains the header ``X-RateLimit-Reset`` its 5010 // value must be on the form ``1595320702`` (an integer that represents the 5011 // point in time at which to retry, as a Unix timestamp in seconds). If so, 5012 // the current time is subtracted from this value and the result is used as 5013 // the back-off interval. 5014 // 3. Otherwise, Envoy will use the default 5015 // :ref:`exponential back-off <envoy_v3_api_field_config.route.v3.RetryPolicy.retry_back_off>` 5016 // strategy. 5017 // 5018 // No matter which format is used, if the resulting back-off interval exceeds 5019 // ``max_interval`` it is discarded and the next header in ``reset_headers`` 5020 // is tried. If a request timeout is configured for the route it will further 5021 // limit how long the request will be allowed to run. 5022 // 5023 // To prevent many clients retrying at the same point in time jitter is added 5024 // to the back-off interval, so the resulting interval is decided by taking: 5025 // ``random(interval, interval * 1.5)``. 5026 // 5027 // .. attention:: 5028 // 5029 // Configuring ``rate_limited_retry_back_off`` will not by itself cause a request 5030 // to be retried. You will still need to configure the right retry policy to match 5031 // the responses from the upstream server. 5032 type RetryPolicy_RateLimitedRetryBackOff struct { 5033 state protoimpl.MessageState 5034 sizeCache protoimpl.SizeCache 5035 unknownFields protoimpl.UnknownFields 5036 5037 // Specifies the reset headers (like ``Retry-After`` or ``X-RateLimit-Reset``) 5038 // to match against the response. Headers are tried in order, and matched case 5039 // insensitive. The first header to be parsed successfully is used. If no headers 5040 // match the default exponential back-off is used instead. 5041 ResetHeaders []*RetryPolicy_ResetHeader `protobuf:"bytes,1,rep,name=reset_headers,json=resetHeaders,proto3" json:"reset_headers,omitempty"` 5042 // Specifies the maximum back off interval that Envoy will allow. If a reset 5043 // header contains an interval longer than this then it will be discarded and 5044 // the next header will be tried. Defaults to 300 seconds. 5045 MaxInterval *duration.Duration `protobuf:"bytes,2,opt,name=max_interval,json=maxInterval,proto3" json:"max_interval,omitempty"` 5046 } 5047 5048 func (x *RetryPolicy_RateLimitedRetryBackOff) Reset() { 5049 *x = RetryPolicy_RateLimitedRetryBackOff{} 5050 if protoimpl.UnsafeEnabled { 5051 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[44] 5052 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 5053 ms.StoreMessageInfo(mi) 5054 } 5055 } 5056 5057 func (x *RetryPolicy_RateLimitedRetryBackOff) String() string { 5058 return protoimpl.X.MessageStringOf(x) 5059 } 5060 5061 func (*RetryPolicy_RateLimitedRetryBackOff) ProtoMessage() {} 5062 5063 func (x *RetryPolicy_RateLimitedRetryBackOff) ProtoReflect() protoreflect.Message { 5064 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[44] 5065 if protoimpl.UnsafeEnabled && x != nil { 5066 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 5067 if ms.LoadMessageInfo() == nil { 5068 ms.StoreMessageInfo(mi) 5069 } 5070 return ms 5071 } 5072 return mi.MessageOf(x) 5073 } 5074 5075 // Deprecated: Use RetryPolicy_RateLimitedRetryBackOff.ProtoReflect.Descriptor instead. 5076 func (*RetryPolicy_RateLimitedRetryBackOff) Descriptor() ([]byte, []int) { 5077 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{7, 4} 5078 } 5079 5080 func (x *RetryPolicy_RateLimitedRetryBackOff) GetResetHeaders() []*RetryPolicy_ResetHeader { 5081 if x != nil { 5082 return x.ResetHeaders 5083 } 5084 return nil 5085 } 5086 5087 func (x *RetryPolicy_RateLimitedRetryBackOff) GetMaxInterval() *duration.Duration { 5088 if x != nil { 5089 return x.MaxInterval 5090 } 5091 return nil 5092 } 5093 5094 // [#next-free-field: 10] 5095 type RateLimit_Action struct { 5096 state protoimpl.MessageState 5097 sizeCache protoimpl.SizeCache 5098 unknownFields protoimpl.UnknownFields 5099 5100 // Types that are assignable to ActionSpecifier: 5101 // *RateLimit_Action_SourceCluster_ 5102 // *RateLimit_Action_DestinationCluster_ 5103 // *RateLimit_Action_RequestHeaders_ 5104 // *RateLimit_Action_RemoteAddress_ 5105 // *RateLimit_Action_GenericKey_ 5106 // *RateLimit_Action_HeaderValueMatch_ 5107 // *RateLimit_Action_DynamicMetadata 5108 // *RateLimit_Action_Metadata 5109 // *RateLimit_Action_Extension 5110 ActionSpecifier isRateLimit_Action_ActionSpecifier `protobuf_oneof:"action_specifier"` 5111 } 5112 5113 func (x *RateLimit_Action) Reset() { 5114 *x = RateLimit_Action{} 5115 if protoimpl.UnsafeEnabled { 5116 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[45] 5117 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 5118 ms.StoreMessageInfo(mi) 5119 } 5120 } 5121 5122 func (x *RateLimit_Action) String() string { 5123 return protoimpl.X.MessageStringOf(x) 5124 } 5125 5126 func (*RateLimit_Action) ProtoMessage() {} 5127 5128 func (x *RateLimit_Action) ProtoReflect() protoreflect.Message { 5129 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[45] 5130 if protoimpl.UnsafeEnabled && x != nil { 5131 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 5132 if ms.LoadMessageInfo() == nil { 5133 ms.StoreMessageInfo(mi) 5134 } 5135 return ms 5136 } 5137 return mi.MessageOf(x) 5138 } 5139 5140 // Deprecated: Use RateLimit_Action.ProtoReflect.Descriptor instead. 5141 func (*RateLimit_Action) Descriptor() ([]byte, []int) { 5142 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{15, 0} 5143 } 5144 5145 func (m *RateLimit_Action) GetActionSpecifier() isRateLimit_Action_ActionSpecifier { 5146 if m != nil { 5147 return m.ActionSpecifier 5148 } 5149 return nil 5150 } 5151 5152 func (x *RateLimit_Action) GetSourceCluster() *RateLimit_Action_SourceCluster { 5153 if x, ok := x.GetActionSpecifier().(*RateLimit_Action_SourceCluster_); ok { 5154 return x.SourceCluster 5155 } 5156 return nil 5157 } 5158 5159 func (x *RateLimit_Action) GetDestinationCluster() *RateLimit_Action_DestinationCluster { 5160 if x, ok := x.GetActionSpecifier().(*RateLimit_Action_DestinationCluster_); ok { 5161 return x.DestinationCluster 5162 } 5163 return nil 5164 } 5165 5166 func (x *RateLimit_Action) GetRequestHeaders() *RateLimit_Action_RequestHeaders { 5167 if x, ok := x.GetActionSpecifier().(*RateLimit_Action_RequestHeaders_); ok { 5168 return x.RequestHeaders 5169 } 5170 return nil 5171 } 5172 5173 func (x *RateLimit_Action) GetRemoteAddress() *RateLimit_Action_RemoteAddress { 5174 if x, ok := x.GetActionSpecifier().(*RateLimit_Action_RemoteAddress_); ok { 5175 return x.RemoteAddress 5176 } 5177 return nil 5178 } 5179 5180 func (x *RateLimit_Action) GetGenericKey() *RateLimit_Action_GenericKey { 5181 if x, ok := x.GetActionSpecifier().(*RateLimit_Action_GenericKey_); ok { 5182 return x.GenericKey 5183 } 5184 return nil 5185 } 5186 5187 func (x *RateLimit_Action) GetHeaderValueMatch() *RateLimit_Action_HeaderValueMatch { 5188 if x, ok := x.GetActionSpecifier().(*RateLimit_Action_HeaderValueMatch_); ok { 5189 return x.HeaderValueMatch 5190 } 5191 return nil 5192 } 5193 5194 // Deprecated: Do not use. 5195 func (x *RateLimit_Action) GetDynamicMetadata() *RateLimit_Action_DynamicMetaData { 5196 if x, ok := x.GetActionSpecifier().(*RateLimit_Action_DynamicMetadata); ok { 5197 return x.DynamicMetadata 5198 } 5199 return nil 5200 } 5201 5202 func (x *RateLimit_Action) GetMetadata() *RateLimit_Action_MetaData { 5203 if x, ok := x.GetActionSpecifier().(*RateLimit_Action_Metadata); ok { 5204 return x.Metadata 5205 } 5206 return nil 5207 } 5208 5209 func (x *RateLimit_Action) GetExtension() *v3.TypedExtensionConfig { 5210 if x, ok := x.GetActionSpecifier().(*RateLimit_Action_Extension); ok { 5211 return x.Extension 5212 } 5213 return nil 5214 } 5215 5216 type isRateLimit_Action_ActionSpecifier interface { 5217 isRateLimit_Action_ActionSpecifier() 5218 } 5219 5220 type RateLimit_Action_SourceCluster_ struct { 5221 // Rate limit on source cluster. 5222 SourceCluster *RateLimit_Action_SourceCluster `protobuf:"bytes,1,opt,name=source_cluster,json=sourceCluster,proto3,oneof"` 5223 } 5224 5225 type RateLimit_Action_DestinationCluster_ struct { 5226 // Rate limit on destination cluster. 5227 DestinationCluster *RateLimit_Action_DestinationCluster `protobuf:"bytes,2,opt,name=destination_cluster,json=destinationCluster,proto3,oneof"` 5228 } 5229 5230 type RateLimit_Action_RequestHeaders_ struct { 5231 // Rate limit on request headers. 5232 RequestHeaders *RateLimit_Action_RequestHeaders `protobuf:"bytes,3,opt,name=request_headers,json=requestHeaders,proto3,oneof"` 5233 } 5234 5235 type RateLimit_Action_RemoteAddress_ struct { 5236 // Rate limit on remote address. 5237 RemoteAddress *RateLimit_Action_RemoteAddress `protobuf:"bytes,4,opt,name=remote_address,json=remoteAddress,proto3,oneof"` 5238 } 5239 5240 type RateLimit_Action_GenericKey_ struct { 5241 // Rate limit on a generic key. 5242 GenericKey *RateLimit_Action_GenericKey `protobuf:"bytes,5,opt,name=generic_key,json=genericKey,proto3,oneof"` 5243 } 5244 5245 type RateLimit_Action_HeaderValueMatch_ struct { 5246 // Rate limit on the existence of request headers. 5247 HeaderValueMatch *RateLimit_Action_HeaderValueMatch `protobuf:"bytes,6,opt,name=header_value_match,json=headerValueMatch,proto3,oneof"` 5248 } 5249 5250 type RateLimit_Action_DynamicMetadata struct { 5251 // Rate limit on dynamic metadata. 5252 // 5253 // .. attention:: 5254 // This field has been deprecated in favor of the :ref:`metadata <envoy_v3_api_field_config.route.v3.RateLimit.Action.metadata>` field 5255 // 5256 // Deprecated: Do not use. 5257 DynamicMetadata *RateLimit_Action_DynamicMetaData `protobuf:"bytes,7,opt,name=dynamic_metadata,json=dynamicMetadata,proto3,oneof"` 5258 } 5259 5260 type RateLimit_Action_Metadata struct { 5261 // Rate limit on metadata. 5262 Metadata *RateLimit_Action_MetaData `protobuf:"bytes,8,opt,name=metadata,proto3,oneof"` 5263 } 5264 5265 type RateLimit_Action_Extension struct { 5266 // Rate limit descriptor extension. See the rate limit descriptor extensions documentation. 5267 // [#extension-category: envoy.rate_limit_descriptors] 5268 Extension *v3.TypedExtensionConfig `protobuf:"bytes,9,opt,name=extension,proto3,oneof"` 5269 } 5270 5271 func (*RateLimit_Action_SourceCluster_) isRateLimit_Action_ActionSpecifier() {} 5272 5273 func (*RateLimit_Action_DestinationCluster_) isRateLimit_Action_ActionSpecifier() {} 5274 5275 func (*RateLimit_Action_RequestHeaders_) isRateLimit_Action_ActionSpecifier() {} 5276 5277 func (*RateLimit_Action_RemoteAddress_) isRateLimit_Action_ActionSpecifier() {} 5278 5279 func (*RateLimit_Action_GenericKey_) isRateLimit_Action_ActionSpecifier() {} 5280 5281 func (*RateLimit_Action_HeaderValueMatch_) isRateLimit_Action_ActionSpecifier() {} 5282 5283 func (*RateLimit_Action_DynamicMetadata) isRateLimit_Action_ActionSpecifier() {} 5284 5285 func (*RateLimit_Action_Metadata) isRateLimit_Action_ActionSpecifier() {} 5286 5287 func (*RateLimit_Action_Extension) isRateLimit_Action_ActionSpecifier() {} 5288 5289 type RateLimit_Override struct { 5290 state protoimpl.MessageState 5291 sizeCache protoimpl.SizeCache 5292 unknownFields protoimpl.UnknownFields 5293 5294 // Types that are assignable to OverrideSpecifier: 5295 // *RateLimit_Override_DynamicMetadata_ 5296 OverrideSpecifier isRateLimit_Override_OverrideSpecifier `protobuf_oneof:"override_specifier"` 5297 } 5298 5299 func (x *RateLimit_Override) Reset() { 5300 *x = RateLimit_Override{} 5301 if protoimpl.UnsafeEnabled { 5302 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[46] 5303 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 5304 ms.StoreMessageInfo(mi) 5305 } 5306 } 5307 5308 func (x *RateLimit_Override) String() string { 5309 return protoimpl.X.MessageStringOf(x) 5310 } 5311 5312 func (*RateLimit_Override) ProtoMessage() {} 5313 5314 func (x *RateLimit_Override) ProtoReflect() protoreflect.Message { 5315 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[46] 5316 if protoimpl.UnsafeEnabled && x != nil { 5317 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 5318 if ms.LoadMessageInfo() == nil { 5319 ms.StoreMessageInfo(mi) 5320 } 5321 return ms 5322 } 5323 return mi.MessageOf(x) 5324 } 5325 5326 // Deprecated: Use RateLimit_Override.ProtoReflect.Descriptor instead. 5327 func (*RateLimit_Override) Descriptor() ([]byte, []int) { 5328 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{15, 1} 5329 } 5330 5331 func (m *RateLimit_Override) GetOverrideSpecifier() isRateLimit_Override_OverrideSpecifier { 5332 if m != nil { 5333 return m.OverrideSpecifier 5334 } 5335 return nil 5336 } 5337 5338 func (x *RateLimit_Override) GetDynamicMetadata() *RateLimit_Override_DynamicMetadata { 5339 if x, ok := x.GetOverrideSpecifier().(*RateLimit_Override_DynamicMetadata_); ok { 5340 return x.DynamicMetadata 5341 } 5342 return nil 5343 } 5344 5345 type isRateLimit_Override_OverrideSpecifier interface { 5346 isRateLimit_Override_OverrideSpecifier() 5347 } 5348 5349 type RateLimit_Override_DynamicMetadata_ struct { 5350 // Limit override from dynamic metadata. 5351 DynamicMetadata *RateLimit_Override_DynamicMetadata `protobuf:"bytes,1,opt,name=dynamic_metadata,json=dynamicMetadata,proto3,oneof"` 5352 } 5353 5354 func (*RateLimit_Override_DynamicMetadata_) isRateLimit_Override_OverrideSpecifier() {} 5355 5356 // The following descriptor entry is appended to the descriptor: 5357 // 5358 // .. code-block:: cpp 5359 // 5360 // ("source_cluster", "<local service cluster>") 5361 // 5362 // <local service cluster> is derived from the :option:`--service-cluster` option. 5363 type RateLimit_Action_SourceCluster struct { 5364 state protoimpl.MessageState 5365 sizeCache protoimpl.SizeCache 5366 unknownFields protoimpl.UnknownFields 5367 } 5368 5369 func (x *RateLimit_Action_SourceCluster) Reset() { 5370 *x = RateLimit_Action_SourceCluster{} 5371 if protoimpl.UnsafeEnabled { 5372 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[47] 5373 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 5374 ms.StoreMessageInfo(mi) 5375 } 5376 } 5377 5378 func (x *RateLimit_Action_SourceCluster) String() string { 5379 return protoimpl.X.MessageStringOf(x) 5380 } 5381 5382 func (*RateLimit_Action_SourceCluster) ProtoMessage() {} 5383 5384 func (x *RateLimit_Action_SourceCluster) ProtoReflect() protoreflect.Message { 5385 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[47] 5386 if protoimpl.UnsafeEnabled && x != nil { 5387 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 5388 if ms.LoadMessageInfo() == nil { 5389 ms.StoreMessageInfo(mi) 5390 } 5391 return ms 5392 } 5393 return mi.MessageOf(x) 5394 } 5395 5396 // Deprecated: Use RateLimit_Action_SourceCluster.ProtoReflect.Descriptor instead. 5397 func (*RateLimit_Action_SourceCluster) Descriptor() ([]byte, []int) { 5398 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{15, 0, 0} 5399 } 5400 5401 // The following descriptor entry is appended to the descriptor: 5402 // 5403 // .. code-block:: cpp 5404 // 5405 // ("destination_cluster", "<routed target cluster>") 5406 // 5407 // Once a request matches against a route table rule, a routed cluster is determined by one of 5408 // the following :ref:`route table configuration <envoy_v3_api_msg_config.route.v3.RouteConfiguration>` 5409 // settings: 5410 // 5411 // * :ref:`cluster <envoy_v3_api_field_config.route.v3.RouteAction.cluster>` indicates the upstream cluster 5412 // to route to. 5413 // * :ref:`weighted_clusters <envoy_v3_api_field_config.route.v3.RouteAction.weighted_clusters>` 5414 // chooses a cluster randomly from a set of clusters with attributed weight. 5415 // * :ref:`cluster_header <envoy_v3_api_field_config.route.v3.RouteAction.cluster_header>` indicates which 5416 // header in the request contains the target cluster. 5417 type RateLimit_Action_DestinationCluster struct { 5418 state protoimpl.MessageState 5419 sizeCache protoimpl.SizeCache 5420 unknownFields protoimpl.UnknownFields 5421 } 5422 5423 func (x *RateLimit_Action_DestinationCluster) Reset() { 5424 *x = RateLimit_Action_DestinationCluster{} 5425 if protoimpl.UnsafeEnabled { 5426 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[48] 5427 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 5428 ms.StoreMessageInfo(mi) 5429 } 5430 } 5431 5432 func (x *RateLimit_Action_DestinationCluster) String() string { 5433 return protoimpl.X.MessageStringOf(x) 5434 } 5435 5436 func (*RateLimit_Action_DestinationCluster) ProtoMessage() {} 5437 5438 func (x *RateLimit_Action_DestinationCluster) ProtoReflect() protoreflect.Message { 5439 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[48] 5440 if protoimpl.UnsafeEnabled && x != nil { 5441 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 5442 if ms.LoadMessageInfo() == nil { 5443 ms.StoreMessageInfo(mi) 5444 } 5445 return ms 5446 } 5447 return mi.MessageOf(x) 5448 } 5449 5450 // Deprecated: Use RateLimit_Action_DestinationCluster.ProtoReflect.Descriptor instead. 5451 func (*RateLimit_Action_DestinationCluster) Descriptor() ([]byte, []int) { 5452 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{15, 0, 1} 5453 } 5454 5455 // The following descriptor entry is appended when a header contains a key that matches the 5456 // *header_name*: 5457 // 5458 // .. code-block:: cpp 5459 // 5460 // ("<descriptor_key>", "<header_value_queried_from_header>") 5461 type RateLimit_Action_RequestHeaders struct { 5462 state protoimpl.MessageState 5463 sizeCache protoimpl.SizeCache 5464 unknownFields protoimpl.UnknownFields 5465 5466 // The header name to be queried from the request headers. The header’s 5467 // value is used to populate the value of the descriptor entry for the 5468 // descriptor_key. 5469 HeaderName string `protobuf:"bytes,1,opt,name=header_name,json=headerName,proto3" json:"header_name,omitempty"` 5470 // The key to use in the descriptor entry. 5471 DescriptorKey string `protobuf:"bytes,2,opt,name=descriptor_key,json=descriptorKey,proto3" json:"descriptor_key,omitempty"` 5472 // If set to true, Envoy skips the descriptor while calling rate limiting service 5473 // when header is not present in the request. By default it skips calling the 5474 // rate limiting service if this header is not present in the request. 5475 SkipIfAbsent bool `protobuf:"varint,3,opt,name=skip_if_absent,json=skipIfAbsent,proto3" json:"skip_if_absent,omitempty"` 5476 } 5477 5478 func (x *RateLimit_Action_RequestHeaders) Reset() { 5479 *x = RateLimit_Action_RequestHeaders{} 5480 if protoimpl.UnsafeEnabled { 5481 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[49] 5482 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 5483 ms.StoreMessageInfo(mi) 5484 } 5485 } 5486 5487 func (x *RateLimit_Action_RequestHeaders) String() string { 5488 return protoimpl.X.MessageStringOf(x) 5489 } 5490 5491 func (*RateLimit_Action_RequestHeaders) ProtoMessage() {} 5492 5493 func (x *RateLimit_Action_RequestHeaders) ProtoReflect() protoreflect.Message { 5494 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[49] 5495 if protoimpl.UnsafeEnabled && x != nil { 5496 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 5497 if ms.LoadMessageInfo() == nil { 5498 ms.StoreMessageInfo(mi) 5499 } 5500 return ms 5501 } 5502 return mi.MessageOf(x) 5503 } 5504 5505 // Deprecated: Use RateLimit_Action_RequestHeaders.ProtoReflect.Descriptor instead. 5506 func (*RateLimit_Action_RequestHeaders) Descriptor() ([]byte, []int) { 5507 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{15, 0, 2} 5508 } 5509 5510 func (x *RateLimit_Action_RequestHeaders) GetHeaderName() string { 5511 if x != nil { 5512 return x.HeaderName 5513 } 5514 return "" 5515 } 5516 5517 func (x *RateLimit_Action_RequestHeaders) GetDescriptorKey() string { 5518 if x != nil { 5519 return x.DescriptorKey 5520 } 5521 return "" 5522 } 5523 5524 func (x *RateLimit_Action_RequestHeaders) GetSkipIfAbsent() bool { 5525 if x != nil { 5526 return x.SkipIfAbsent 5527 } 5528 return false 5529 } 5530 5531 // The following descriptor entry is appended to the descriptor and is populated using the 5532 // trusted address from :ref:`x-forwarded-for <config_http_conn_man_headers_x-forwarded-for>`: 5533 // 5534 // .. code-block:: cpp 5535 // 5536 // ("remote_address", "<trusted address from x-forwarded-for>") 5537 type RateLimit_Action_RemoteAddress struct { 5538 state protoimpl.MessageState 5539 sizeCache protoimpl.SizeCache 5540 unknownFields protoimpl.UnknownFields 5541 } 5542 5543 func (x *RateLimit_Action_RemoteAddress) Reset() { 5544 *x = RateLimit_Action_RemoteAddress{} 5545 if protoimpl.UnsafeEnabled { 5546 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[50] 5547 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 5548 ms.StoreMessageInfo(mi) 5549 } 5550 } 5551 5552 func (x *RateLimit_Action_RemoteAddress) String() string { 5553 return protoimpl.X.MessageStringOf(x) 5554 } 5555 5556 func (*RateLimit_Action_RemoteAddress) ProtoMessage() {} 5557 5558 func (x *RateLimit_Action_RemoteAddress) ProtoReflect() protoreflect.Message { 5559 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[50] 5560 if protoimpl.UnsafeEnabled && x != nil { 5561 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 5562 if ms.LoadMessageInfo() == nil { 5563 ms.StoreMessageInfo(mi) 5564 } 5565 return ms 5566 } 5567 return mi.MessageOf(x) 5568 } 5569 5570 // Deprecated: Use RateLimit_Action_RemoteAddress.ProtoReflect.Descriptor instead. 5571 func (*RateLimit_Action_RemoteAddress) Descriptor() ([]byte, []int) { 5572 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{15, 0, 3} 5573 } 5574 5575 // The following descriptor entry is appended to the descriptor: 5576 // 5577 // .. code-block:: cpp 5578 // 5579 // ("generic_key", "<descriptor_value>") 5580 type RateLimit_Action_GenericKey struct { 5581 state protoimpl.MessageState 5582 sizeCache protoimpl.SizeCache 5583 unknownFields protoimpl.UnknownFields 5584 5585 // The value to use in the descriptor entry. 5586 DescriptorValue string `protobuf:"bytes,1,opt,name=descriptor_value,json=descriptorValue,proto3" json:"descriptor_value,omitempty"` 5587 // An optional key to use in the descriptor entry. If not set it defaults 5588 // to 'generic_key' as the descriptor key. 5589 DescriptorKey string `protobuf:"bytes,2,opt,name=descriptor_key,json=descriptorKey,proto3" json:"descriptor_key,omitempty"` 5590 } 5591 5592 func (x *RateLimit_Action_GenericKey) Reset() { 5593 *x = RateLimit_Action_GenericKey{} 5594 if protoimpl.UnsafeEnabled { 5595 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[51] 5596 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 5597 ms.StoreMessageInfo(mi) 5598 } 5599 } 5600 5601 func (x *RateLimit_Action_GenericKey) String() string { 5602 return protoimpl.X.MessageStringOf(x) 5603 } 5604 5605 func (*RateLimit_Action_GenericKey) ProtoMessage() {} 5606 5607 func (x *RateLimit_Action_GenericKey) ProtoReflect() protoreflect.Message { 5608 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[51] 5609 if protoimpl.UnsafeEnabled && x != nil { 5610 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 5611 if ms.LoadMessageInfo() == nil { 5612 ms.StoreMessageInfo(mi) 5613 } 5614 return ms 5615 } 5616 return mi.MessageOf(x) 5617 } 5618 5619 // Deprecated: Use RateLimit_Action_GenericKey.ProtoReflect.Descriptor instead. 5620 func (*RateLimit_Action_GenericKey) Descriptor() ([]byte, []int) { 5621 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{15, 0, 4} 5622 } 5623 5624 func (x *RateLimit_Action_GenericKey) GetDescriptorValue() string { 5625 if x != nil { 5626 return x.DescriptorValue 5627 } 5628 return "" 5629 } 5630 5631 func (x *RateLimit_Action_GenericKey) GetDescriptorKey() string { 5632 if x != nil { 5633 return x.DescriptorKey 5634 } 5635 return "" 5636 } 5637 5638 // The following descriptor entry is appended to the descriptor: 5639 // 5640 // .. code-block:: cpp 5641 // 5642 // ("header_match", "<descriptor_value>") 5643 type RateLimit_Action_HeaderValueMatch struct { 5644 state protoimpl.MessageState 5645 sizeCache protoimpl.SizeCache 5646 unknownFields protoimpl.UnknownFields 5647 5648 // The value to use in the descriptor entry. 5649 DescriptorValue string `protobuf:"bytes,1,opt,name=descriptor_value,json=descriptorValue,proto3" json:"descriptor_value,omitempty"` 5650 // If set to true, the action will append a descriptor entry when the 5651 // request matches the headers. If set to false, the action will append a 5652 // descriptor entry when the request does not match the headers. The 5653 // default value is true. 5654 ExpectMatch *wrappers.BoolValue `protobuf:"bytes,2,opt,name=expect_match,json=expectMatch,proto3" json:"expect_match,omitempty"` 5655 // Specifies a set of headers that the rate limit action should match 5656 // on. The action will check the request’s headers against all the 5657 // specified headers in the config. A match will happen if all the 5658 // headers in the config are present in the request with the same values 5659 // (or based on presence if the value field is not in the config). 5660 Headers []*HeaderMatcher `protobuf:"bytes,3,rep,name=headers,proto3" json:"headers,omitempty"` 5661 } 5662 5663 func (x *RateLimit_Action_HeaderValueMatch) Reset() { 5664 *x = RateLimit_Action_HeaderValueMatch{} 5665 if protoimpl.UnsafeEnabled { 5666 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[52] 5667 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 5668 ms.StoreMessageInfo(mi) 5669 } 5670 } 5671 5672 func (x *RateLimit_Action_HeaderValueMatch) String() string { 5673 return protoimpl.X.MessageStringOf(x) 5674 } 5675 5676 func (*RateLimit_Action_HeaderValueMatch) ProtoMessage() {} 5677 5678 func (x *RateLimit_Action_HeaderValueMatch) ProtoReflect() protoreflect.Message { 5679 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[52] 5680 if protoimpl.UnsafeEnabled && x != nil { 5681 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 5682 if ms.LoadMessageInfo() == nil { 5683 ms.StoreMessageInfo(mi) 5684 } 5685 return ms 5686 } 5687 return mi.MessageOf(x) 5688 } 5689 5690 // Deprecated: Use RateLimit_Action_HeaderValueMatch.ProtoReflect.Descriptor instead. 5691 func (*RateLimit_Action_HeaderValueMatch) Descriptor() ([]byte, []int) { 5692 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{15, 0, 5} 5693 } 5694 5695 func (x *RateLimit_Action_HeaderValueMatch) GetDescriptorValue() string { 5696 if x != nil { 5697 return x.DescriptorValue 5698 } 5699 return "" 5700 } 5701 5702 func (x *RateLimit_Action_HeaderValueMatch) GetExpectMatch() *wrappers.BoolValue { 5703 if x != nil { 5704 return x.ExpectMatch 5705 } 5706 return nil 5707 } 5708 5709 func (x *RateLimit_Action_HeaderValueMatch) GetHeaders() []*HeaderMatcher { 5710 if x != nil { 5711 return x.Headers 5712 } 5713 return nil 5714 } 5715 5716 // The following descriptor entry is appended when the 5717 // :ref:`dynamic metadata <well_known_dynamic_metadata>` contains a key value: 5718 // 5719 // .. code-block:: cpp 5720 // 5721 // ("<descriptor_key>", "<value_queried_from_dynamic_metadata>") 5722 // 5723 // .. attention:: 5724 // This action has been deprecated in favor of the :ref:`metadata <envoy_v3_api_msg_config.route.v3.RateLimit.Action.MetaData>` action 5725 type RateLimit_Action_DynamicMetaData struct { 5726 state protoimpl.MessageState 5727 sizeCache protoimpl.SizeCache 5728 unknownFields protoimpl.UnknownFields 5729 5730 // The key to use in the descriptor entry. 5731 DescriptorKey string `protobuf:"bytes,1,opt,name=descriptor_key,json=descriptorKey,proto3" json:"descriptor_key,omitempty"` 5732 // Metadata struct that defines the key and path to retrieve the string value. A match will 5733 // only happen if the value in the dynamic metadata is of type string. 5734 MetadataKey *v34.MetadataKey `protobuf:"bytes,2,opt,name=metadata_key,json=metadataKey,proto3" json:"metadata_key,omitempty"` 5735 // An optional value to use if *metadata_key* is empty. If not set and 5736 // no value is present under the metadata_key then no descriptor is generated. 5737 DefaultValue string `protobuf:"bytes,3,opt,name=default_value,json=defaultValue,proto3" json:"default_value,omitempty"` 5738 } 5739 5740 func (x *RateLimit_Action_DynamicMetaData) Reset() { 5741 *x = RateLimit_Action_DynamicMetaData{} 5742 if protoimpl.UnsafeEnabled { 5743 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[53] 5744 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 5745 ms.StoreMessageInfo(mi) 5746 } 5747 } 5748 5749 func (x *RateLimit_Action_DynamicMetaData) String() string { 5750 return protoimpl.X.MessageStringOf(x) 5751 } 5752 5753 func (*RateLimit_Action_DynamicMetaData) ProtoMessage() {} 5754 5755 func (x *RateLimit_Action_DynamicMetaData) ProtoReflect() protoreflect.Message { 5756 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[53] 5757 if protoimpl.UnsafeEnabled && x != nil { 5758 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 5759 if ms.LoadMessageInfo() == nil { 5760 ms.StoreMessageInfo(mi) 5761 } 5762 return ms 5763 } 5764 return mi.MessageOf(x) 5765 } 5766 5767 // Deprecated: Use RateLimit_Action_DynamicMetaData.ProtoReflect.Descriptor instead. 5768 func (*RateLimit_Action_DynamicMetaData) Descriptor() ([]byte, []int) { 5769 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{15, 0, 6} 5770 } 5771 5772 func (x *RateLimit_Action_DynamicMetaData) GetDescriptorKey() string { 5773 if x != nil { 5774 return x.DescriptorKey 5775 } 5776 return "" 5777 } 5778 5779 func (x *RateLimit_Action_DynamicMetaData) GetMetadataKey() *v34.MetadataKey { 5780 if x != nil { 5781 return x.MetadataKey 5782 } 5783 return nil 5784 } 5785 5786 func (x *RateLimit_Action_DynamicMetaData) GetDefaultValue() string { 5787 if x != nil { 5788 return x.DefaultValue 5789 } 5790 return "" 5791 } 5792 5793 // The following descriptor entry is appended when the metadata contains a key value: 5794 // 5795 // .. code-block:: cpp 5796 // 5797 // ("<descriptor_key>", "<value_queried_from_metadata>") 5798 type RateLimit_Action_MetaData struct { 5799 state protoimpl.MessageState 5800 sizeCache protoimpl.SizeCache 5801 unknownFields protoimpl.UnknownFields 5802 5803 // The key to use in the descriptor entry. 5804 DescriptorKey string `protobuf:"bytes,1,opt,name=descriptor_key,json=descriptorKey,proto3" json:"descriptor_key,omitempty"` 5805 // Metadata struct that defines the key and path to retrieve the string value. A match will 5806 // only happen if the value in the metadata is of type string. 5807 MetadataKey *v34.MetadataKey `protobuf:"bytes,2,opt,name=metadata_key,json=metadataKey,proto3" json:"metadata_key,omitempty"` 5808 // An optional value to use if *metadata_key* is empty. If not set and 5809 // no value is present under the metadata_key then no descriptor is generated. 5810 DefaultValue string `protobuf:"bytes,3,opt,name=default_value,json=defaultValue,proto3" json:"default_value,omitempty"` 5811 // Source of metadata 5812 Source RateLimit_Action_MetaData_Source `protobuf:"varint,4,opt,name=source,proto3,enum=envoy.config.route.v3.RateLimit_Action_MetaData_Source" json:"source,omitempty"` 5813 } 5814 5815 func (x *RateLimit_Action_MetaData) Reset() { 5816 *x = RateLimit_Action_MetaData{} 5817 if protoimpl.UnsafeEnabled { 5818 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[54] 5819 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 5820 ms.StoreMessageInfo(mi) 5821 } 5822 } 5823 5824 func (x *RateLimit_Action_MetaData) String() string { 5825 return protoimpl.X.MessageStringOf(x) 5826 } 5827 5828 func (*RateLimit_Action_MetaData) ProtoMessage() {} 5829 5830 func (x *RateLimit_Action_MetaData) ProtoReflect() protoreflect.Message { 5831 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[54] 5832 if protoimpl.UnsafeEnabled && x != nil { 5833 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 5834 if ms.LoadMessageInfo() == nil { 5835 ms.StoreMessageInfo(mi) 5836 } 5837 return ms 5838 } 5839 return mi.MessageOf(x) 5840 } 5841 5842 // Deprecated: Use RateLimit_Action_MetaData.ProtoReflect.Descriptor instead. 5843 func (*RateLimit_Action_MetaData) Descriptor() ([]byte, []int) { 5844 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{15, 0, 7} 5845 } 5846 5847 func (x *RateLimit_Action_MetaData) GetDescriptorKey() string { 5848 if x != nil { 5849 return x.DescriptorKey 5850 } 5851 return "" 5852 } 5853 5854 func (x *RateLimit_Action_MetaData) GetMetadataKey() *v34.MetadataKey { 5855 if x != nil { 5856 return x.MetadataKey 5857 } 5858 return nil 5859 } 5860 5861 func (x *RateLimit_Action_MetaData) GetDefaultValue() string { 5862 if x != nil { 5863 return x.DefaultValue 5864 } 5865 return "" 5866 } 5867 5868 func (x *RateLimit_Action_MetaData) GetSource() RateLimit_Action_MetaData_Source { 5869 if x != nil { 5870 return x.Source 5871 } 5872 return RateLimit_Action_MetaData_DYNAMIC 5873 } 5874 5875 // Fetches the override from the dynamic metadata. 5876 type RateLimit_Override_DynamicMetadata struct { 5877 state protoimpl.MessageState 5878 sizeCache protoimpl.SizeCache 5879 unknownFields protoimpl.UnknownFields 5880 5881 // Metadata struct that defines the key and path to retrieve the struct value. 5882 // The value must be a struct containing an integer "requests_per_unit" property 5883 // and a "unit" property with a value parseable to :ref:`RateLimitUnit 5884 // enum <envoy_v3_api_enum_type.v3.RateLimitUnit>` 5885 MetadataKey *v34.MetadataKey `protobuf:"bytes,1,opt,name=metadata_key,json=metadataKey,proto3" json:"metadata_key,omitempty"` 5886 } 5887 5888 func (x *RateLimit_Override_DynamicMetadata) Reset() { 5889 *x = RateLimit_Override_DynamicMetadata{} 5890 if protoimpl.UnsafeEnabled { 5891 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[55] 5892 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 5893 ms.StoreMessageInfo(mi) 5894 } 5895 } 5896 5897 func (x *RateLimit_Override_DynamicMetadata) String() string { 5898 return protoimpl.X.MessageStringOf(x) 5899 } 5900 5901 func (*RateLimit_Override_DynamicMetadata) ProtoMessage() {} 5902 5903 func (x *RateLimit_Override_DynamicMetadata) ProtoReflect() protoreflect.Message { 5904 mi := &file_envoy_config_route_v3_route_components_proto_msgTypes[55] 5905 if protoimpl.UnsafeEnabled && x != nil { 5906 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 5907 if ms.LoadMessageInfo() == nil { 5908 ms.StoreMessageInfo(mi) 5909 } 5910 return ms 5911 } 5912 return mi.MessageOf(x) 5913 } 5914 5915 // Deprecated: Use RateLimit_Override_DynamicMetadata.ProtoReflect.Descriptor instead. 5916 func (*RateLimit_Override_DynamicMetadata) Descriptor() ([]byte, []int) { 5917 return file_envoy_config_route_v3_route_components_proto_rawDescGZIP(), []int{15, 1, 0} 5918 } 5919 5920 func (x *RateLimit_Override_DynamicMetadata) GetMetadataKey() *v34.MetadataKey { 5921 if x != nil { 5922 return x.MetadataKey 5923 } 5924 return nil 5925 } 5926 5927 var File_envoy_config_route_v3_route_components_proto protoreflect.FileDescriptor 5928 5929 var file_envoy_config_route_v3_route_components_proto_rawDesc = []byte{ 5930 0x0a, 0x2c, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x72, 5931 0x6f, 0x75, 0x74, 0x65, 0x2f, 0x76, 0x33, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x63, 0x6f, 5932 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x15, 5933 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 5934 0x74, 0x65, 0x2e, 0x76, 0x33, 0x1a, 0x1f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 5935 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, 0x2f, 0x62, 0x61, 0x73, 0x65, 5936 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 5937 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76, 0x33, 0x2f, 0x65, 0x78, 0x74, 5938 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x29, 0x65, 0x6e, 5939 0x76, 0x6f, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x72, 0x65, 0x2f, 5940 0x76, 0x33, 0x2f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 5941 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x74, 5942 0x79, 0x70, 0x65, 0x2f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2f, 0x76, 0x33, 0x2f, 0x6d, 5943 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x65, 5944 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 5945 0x72, 0x2f, 0x76, 0x33, 0x2f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 5946 0x1a, 0x22, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x6d, 0x61, 0x74, 5947 0x63, 0x68, 0x65, 0x72, 0x2f, 0x76, 0x33, 0x2f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x70, 5948 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x25, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 5949 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x76, 0x33, 0x2f, 0x6d, 0x65, 0x74, 5950 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x26, 0x65, 0x6e, 0x76, 5951 0x6f, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x2f, 5952 0x76, 0x33, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x74, 0x61, 0x67, 0x2e, 0x70, 0x72, 5953 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 5954 0x76, 0x33, 0x2f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 5955 0x1a, 0x19, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f, 0x76, 0x33, 0x2f, 5956 0x72, 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 5957 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 5958 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 5959 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 5960 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 5961 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 5962 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 5963 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 5964 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 5965 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 5966 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x75, 0x64, 0x70, 0x61, 0x2f, 5967 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6d, 0x69, 0x67, 0x72, 5968 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x75, 0x64, 0x70, 0x61, 0x2f, 5969 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x74, 5970 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x75, 0x64, 0x70, 0x61, 0x2f, 0x61, 5971 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x76, 0x65, 0x72, 0x73, 0x69, 5972 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 5973 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 5974 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe2, 0x0e, 0x0a, 0x0b, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 5975 0x48, 0x6f, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 5976 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 5977 0x65, 0x12, 0x2c, 0x0a, 0x07, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 5978 0x28, 0x09, 0x42, 0x12, 0xfa, 0x42, 0x0f, 0x92, 0x01, 0x0c, 0x08, 0x01, 0x22, 0x08, 0x72, 0x06, 5979 0xc0, 0x01, 0x02, 0xc8, 0x01, 0x00, 0x52, 0x07, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x12, 5980 0x34, 0x0a, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 5981 0x1c, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 5982 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x06, 0x72, 5983 0x6f, 0x75, 0x74, 0x65, 0x73, 0x12, 0x60, 0x0a, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 5984 0x5f, 0x74, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x65, 0x6e, 0x76, 5985 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 5986 0x76, 0x33, 0x2e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, 0x73, 0x74, 0x2e, 0x54, 5987 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 5988 0x65, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x71, 5989 0x75, 0x69, 0x72, 0x65, 0x54, 0x6c, 0x73, 0x12, 0x50, 0x0a, 0x10, 0x76, 0x69, 0x72, 0x74, 0x75, 5990 0x61, 0x6c, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 5991 0x0b, 0x32, 0x25, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 5992 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 5993 0x6c, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x0f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 5994 0x6c, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x41, 0x0a, 0x0b, 0x72, 0x61, 0x74, 5995 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 5996 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 5997 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 5998 0x52, 0x0a, 0x72, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x67, 0x0a, 0x16, 5999 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 6000 0x74, 0x6f, 0x5f, 0x61, 0x64, 0x64, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x65, 6001 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 6002 0x2e, 0x76, 0x33, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 6003 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x92, 0x01, 0x03, 0x10, 0xe8, 0x07, 6004 0x52, 0x13, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 6005 0x54, 0x6f, 0x41, 0x64, 0x64, 0x12, 0x4d, 0x0a, 0x19, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 6006 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 6007 0x76, 0x65, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x09, 0x42, 0x12, 0xfa, 0x42, 0x0f, 0x92, 0x01, 0x0c, 6008 0x22, 0x0a, 0x72, 0x08, 0x10, 0x01, 0xc0, 0x01, 0x01, 0xc8, 0x01, 0x00, 0x52, 0x16, 0x72, 0x65, 6009 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x52, 0x65, 6010 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x69, 0x0a, 0x17, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 6011 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x61, 0x64, 0x64, 0x18, 6012 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 6013 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x48, 0x65, 0x61, 6014 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, 6015 0xfa, 0x42, 0x06, 0x92, 0x01, 0x03, 0x10, 0xe8, 0x07, 0x52, 0x14, 0x72, 0x65, 0x73, 0x70, 0x6f, 6016 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x41, 0x64, 0x64, 0x12, 6017 0x4f, 0x0a, 0x1a, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 6018 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x0b, 0x20, 6019 0x03, 0x28, 0x09, 0x42, 0x12, 0xfa, 0x42, 0x0f, 0x92, 0x01, 0x0c, 0x22, 0x0a, 0x72, 0x08, 0x10, 6020 0x01, 0xc0, 0x01, 0x01, 0xc8, 0x01, 0x00, 0x52, 0x17, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 6021 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 6022 0x12, 0x35, 0x0a, 0x04, 0x63, 0x6f, 0x72, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 6023 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 6024 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x72, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 6025 0x79, 0x52, 0x04, 0x63, 0x6f, 0x72, 0x73, 0x12, 0x73, 0x0a, 0x17, 0x74, 0x79, 0x70, 0x65, 0x64, 6026 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 6027 0x69, 0x67, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 6028 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 6029 0x2e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, 0x73, 0x74, 0x2e, 0x54, 0x79, 0x70, 6030 0x65, 0x64, 0x50, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 6031 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x14, 0x74, 0x79, 0x70, 0x65, 0x64, 0x50, 0x65, 0x72, 6032 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x41, 0x0a, 0x1d, 6033 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 6034 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0e, 0x20, 6035 0x01, 0x28, 0x08, 0x52, 0x1a, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 6036 0x65, 0x73, 0x74, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 6037 0x48, 0x0a, 0x21, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 6038 0x70, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x70, 6039 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1d, 0x69, 0x6e, 0x63, 0x6c, 6040 0x75, 0x64, 0x65, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x49, 6041 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x0c, 0x72, 0x65, 0x74, 6042 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 6043 0x22, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 6044 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 6045 0x69, 0x63, 0x79, 0x52, 0x0b, 0x72, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 6046 0x12, 0x4f, 0x0a, 0x19, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 6047 0x5f, 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x14, 0x20, 6048 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 6049 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x16, 0x72, 0x65, 0x74, 0x72, 0x79, 6050 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x79, 0x70, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 6051 0x67, 0x12, 0x45, 0x0a, 0x0c, 0x68, 0x65, 0x64, 0x67, 0x65, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 6052 0x79, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 6053 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 6054 0x48, 0x65, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0b, 0x68, 0x65, 0x64, 6055 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x60, 0x0a, 0x1e, 0x70, 0x65, 0x72, 0x5f, 6056 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x6c, 6057 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 6058 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 6059 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1a, 6060 0x70, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 6061 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0xb2, 0x01, 0x0a, 0x29, 0x68, 6062 0x69, 0x64, 0x64, 0x65, 0x6e, 0x5f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x5f, 0x64, 0x65, 0x70, 0x72, 6063 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 6064 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4c, 6065 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 6066 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, 6067 0x73, 0x74, 0x2e, 0x48, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x44, 0x65, 6068 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x50, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 6069 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x0b, 0x18, 0x01, 6070 0x92, 0xc7, 0x86, 0xd8, 0x04, 0x03, 0x33, 0x2e, 0x30, 0x52, 0x24, 0x68, 0x69, 0x64, 0x64, 0x65, 6071 0x6e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 6072 0x50, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 6073 0x5d, 0x0a, 0x19, 0x54, 0x79, 0x70, 0x65, 0x64, 0x50, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 6074 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 6075 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2a, 6076 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 6077 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 6078 0x41, 0x6e, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x70, 6079 0x0a, 0x29, 0x48, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x44, 0x65, 0x70, 6080 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x50, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 6081 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 6082 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 6083 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 6084 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 6085 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 6086 0x22, 0x3a, 0x0a, 0x12, 0x54, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x6d, 0x65, 6087 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 6088 0x12, 0x11, 0x0a, 0x0d, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x4f, 0x4e, 0x4c, 6089 0x59, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x4c, 0x4c, 0x10, 0x02, 0x3a, 0x25, 0x9a, 0xc5, 6090 0x88, 0x1e, 0x20, 0x0a, 0x1e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 6091 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, 6092 0x6f, 0x73, 0x74, 0x4a, 0x04, 0x08, 0x09, 0x10, 0x0a, 0x22, 0x64, 0x0a, 0x0c, 0x46, 0x69, 0x6c, 6093 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x06, 0x61, 0x63, 0x74, 6094 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 6095 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 6096 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x26, 0x9a, 0xc5, 0x88, 0x1e, 0x21, 0x0a, 0x1f, 6097 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 6098 0x74, 0x65, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 6099 0x96, 0x0d, 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 6100 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x41, 0x0a, 6101 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x65, 6102 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 6103 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x42, 6104 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 6105 0x12, 0x3a, 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 6106 0x22, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 6107 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 6108 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x43, 0x0a, 0x08, 6109 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 6110 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 6111 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x41, 6112 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 6113 0x74, 0x12, 0x56, 0x0a, 0x0f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x70, 6114 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x65, 0x6e, 0x76, 6115 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 6116 0x76, 0x33, 0x2e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 6117 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0e, 0x64, 0x69, 0x72, 0x65, 0x63, 6118 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x0d, 0x66, 0x69, 0x6c, 6119 0x74, 0x65, 0x72, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 6120 0x32, 0x23, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 6121 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x41, 6122 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0c, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x41, 6123 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x60, 0x0a, 0x15, 0x6e, 0x6f, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 6124 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x12, 6125 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 6126 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x4e, 0x6f, 0x6e, 6127 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 6128 0x48, 0x00, 0x52, 0x13, 0x6e, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 6129 0x67, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 6130 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 6131 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 6132 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 6133 0x61, 0x74, 0x61, 0x12, 0x3e, 0x0a, 0x09, 0x64, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 6134 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 6135 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x44, 6136 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x09, 0x64, 0x65, 0x63, 0x6f, 0x72, 0x61, 6137 0x74, 0x6f, 0x72, 0x12, 0x6d, 0x0a, 0x17, 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, 0x70, 0x65, 0x72, 6138 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0d, 6139 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 6140 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x6f, 0x75, 6141 0x74, 0x65, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x50, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 6142 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x14, 0x74, 0x79, 6143 0x70, 0x65, 0x64, 0x50, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 6144 0x69, 0x67, 0x12, 0x67, 0x0a, 0x16, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 6145 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x61, 0x64, 0x64, 0x18, 0x09, 0x20, 0x03, 6146 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 6147 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 6148 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0xfa, 0x42, 0x06, 6149 0x92, 0x01, 0x03, 0x10, 0xe8, 0x07, 0x52, 0x13, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 6150 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x41, 0x64, 0x64, 0x12, 0x4d, 0x0a, 0x19, 0x72, 6151 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 6152 0x6f, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x42, 0x12, 6153 0xfa, 0x42, 0x0f, 0x92, 0x01, 0x0c, 0x22, 0x0a, 0x72, 0x08, 0x10, 0x01, 0xc0, 0x01, 0x01, 0xc8, 6154 0x01, 0x00, 0x52, 0x16, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 6155 0x72, 0x73, 0x54, 0x6f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x69, 0x0a, 0x17, 0x72, 0x65, 6156 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 6157 0x6f, 0x5f, 0x61, 0x64, 0x64, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x65, 0x6e, 6158 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 6159 0x76, 0x33, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 6160 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x92, 0x01, 0x03, 0x10, 0xe8, 0x07, 0x52, 6161 0x14, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 6162 0x54, 0x6f, 0x41, 0x64, 0x64, 0x12, 0x4f, 0x0a, 0x1a, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 6163 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x6d, 6164 0x6f, 0x76, 0x65, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x42, 0x12, 0xfa, 0x42, 0x0f, 0x92, 0x01, 6165 0x0c, 0x22, 0x0a, 0x72, 0x08, 0x10, 0x01, 0xc0, 0x01, 0x01, 0xc8, 0x01, 0x00, 0x52, 0x17, 0x72, 6166 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 6167 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x38, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 6168 0x67, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 6169 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 6170 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 6171 0x12, 0x60, 0x0a, 0x1e, 0x70, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 6172 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x62, 0x79, 0x74, 6173 0x65, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 6174 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 6175 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1a, 0x70, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 6176 0x73, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x79, 0x74, 6177 0x65, 0x73, 0x12, 0xac, 0x01, 0x0a, 0x29, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x5f, 0x65, 0x6e, 6178 0x76, 0x6f, 0x79, 0x5f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x70, 6179 0x65, 0x72, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 6180 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 6181 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 6182 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x48, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 6183 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x50, 0x65, 0x72, 0x46, 0x69, 0x6c, 6184 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x0b, 6185 0x18, 0x01, 0x92, 0xc7, 0x86, 0xd8, 0x04, 0x03, 0x33, 0x2e, 0x30, 0x52, 0x24, 0x68, 0x69, 0x64, 6186 0x64, 0x65, 0x6e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 6187 0x65, 0x64, 0x50, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 6188 0x67, 0x1a, 0x5d, 0x0a, 0x19, 0x54, 0x79, 0x70, 0x65, 0x64, 0x50, 0x65, 0x72, 0x46, 0x69, 0x6c, 6189 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 6190 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 6191 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 6192 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 6193 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 6194 0x1a, 0x70, 0x0a, 0x29, 0x48, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x44, 6195 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x50, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 6196 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 6197 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 6198 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 6199 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 6200 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 6201 0x38, 0x01, 0x3a, 0x1f, 0x9a, 0xc5, 0x88, 0x1e, 0x1a, 0x0a, 0x18, 0x65, 0x6e, 0x76, 0x6f, 0x79, 6202 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 6203 0x75, 0x74, 0x65, 0x42, 0x0d, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x03, 0xf8, 6204 0x42, 0x01, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x22, 0xc5, 0x0c, 0x0a, 0x0f, 0x57, 0x65, 0x69, 6205 0x67, 0x68, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x5a, 0x0a, 0x08, 6206 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 6207 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 6208 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x43, 6209 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x57, 0x65, 6210 0x69, 0x67, 0x68, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x08, 6211 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x48, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 6212 0x6c, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 6213 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 6214 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0xfa, 0x42, 6215 0x04, 0x2a, 0x02, 0x28, 0x01, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x57, 0x65, 0x69, 0x67, 6216 0x68, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6b, 0x65, 6217 0x79, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 6218 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x4b, 0x65, 0x79, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 6219 0x1a, 0xb2, 0x0a, 0x0a, 0x0d, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x57, 0x65, 0x69, 0x67, 6220 0x68, 0x74, 0x12, 0x2d, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 6221 0x42, 0x19, 0xf2, 0x98, 0xfe, 0x8f, 0x05, 0x13, 0x12, 0x11, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 6222 0x72, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 0x04, 0x6e, 0x61, 0x6d, 6223 0x65, 0x12, 0x4b, 0x0a, 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x68, 0x65, 0x61, 6224 0x64, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x42, 0x24, 0xfa, 0x42, 0x08, 0x72, 0x06, 6225 0xc0, 0x01, 0x01, 0xc8, 0x01, 0x00, 0xf2, 0x98, 0xfe, 0x8f, 0x05, 0x13, 0x12, 0x11, 0x63, 0x6c, 6226 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x52, 6227 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x34, 6228 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 6229 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 6230 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x77, 0x65, 6231 0x69, 0x67, 0x68, 0x74, 0x12, 0x45, 0x0a, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 6232 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x65, 6233 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 6234 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0d, 0x6d, 0x65, 6235 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x67, 0x0a, 0x16, 0x72, 6236 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 6237 0x6f, 0x5f, 0x61, 0x64, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x65, 0x6e, 6238 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 6239 0x76, 0x33, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 6240 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x92, 0x01, 0x03, 0x10, 0xe8, 0x07, 0x52, 6241 0x13, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 6242 0x6f, 0x41, 0x64, 0x64, 0x12, 0x4b, 0x0a, 0x19, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 6243 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 6244 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x42, 0x10, 0xfa, 0x42, 0x0d, 0x92, 0x01, 0x0a, 0x22, 6245 0x08, 0x72, 0x06, 0xc0, 0x01, 0x01, 0xc8, 0x01, 0x00, 0x52, 0x16, 0x72, 0x65, 0x71, 0x75, 0x65, 6246 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 6247 0x65, 0x12, 0x69, 0x0a, 0x17, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 6248 0x61, 0x64, 0x65, 0x72, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x61, 0x64, 0x64, 0x18, 0x05, 0x20, 0x03, 6249 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 6250 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 6251 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0xfa, 0x42, 0x06, 6252 0x92, 0x01, 0x03, 0x10, 0xe8, 0x07, 0x52, 0x14, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 6253 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x54, 0x6f, 0x41, 0x64, 0x64, 0x12, 0x4d, 0x0a, 0x1a, 6254 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 6255 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 6256 0x42, 0x10, 0xfa, 0x42, 0x0d, 0x92, 0x01, 0x0a, 0x22, 0x08, 0x72, 0x06, 0xc0, 0x01, 0x01, 0xc8, 6257 0x01, 0x00, 0x52, 0x17, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 6258 0x65, 0x72, 0x73, 0x54, 0x6f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0x85, 0x01, 0x0a, 0x17, 6259 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 6260 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4e, 0x2e, 6261 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 6262 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x43, 0x6c, 6263 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x57, 0x65, 0x69, 6264 0x67, 0x68, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x50, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 6265 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x14, 0x74, 6266 0x79, 0x70, 0x65, 0x64, 0x50, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 6267 0x66, 0x69, 0x67, 0x12, 0x3f, 0x0a, 0x14, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x77, 0x72, 6268 0x69, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 6269 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, 0xc0, 0x01, 0x02, 0xc8, 0x01, 0x00, 0x48, 0x00, 6270 0x52, 0x12, 0x68, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x4c, 0x69, 0x74, 6271 0x65, 0x72, 0x61, 0x6c, 0x12, 0xc4, 0x01, 0x0a, 0x29, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x5f, 6272 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x5f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 6273 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 6274 0x69, 0x67, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x5e, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 6275 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 6276 0x2e, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 6277 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x2e, 0x48, 6278 0x69, 0x64, 0x64, 0x65, 0x6e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 6279 0x61, 0x74, 0x65, 0x64, 0x50, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 6280 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x0b, 0x18, 0x01, 0x92, 0xc7, 0x86, 0xd8, 6281 0x04, 0x03, 0x33, 0x2e, 0x30, 0x52, 0x24, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x45, 0x6e, 0x76, 6282 0x6f, 0x79, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x50, 0x65, 0x72, 0x46, 6283 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x5d, 0x0a, 0x19, 0x54, 6284 0x79, 0x70, 0x65, 0x64, 0x50, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 6285 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 6286 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 6287 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 6288 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 6289 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x70, 0x0a, 0x29, 0x48, 0x69, 6290 0x64, 0x64, 0x65, 0x6e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 6291 0x74, 0x65, 0x64, 0x50, 0x65, 0x72, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 6292 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 6293 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 6294 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 6295 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 6296 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x37, 0x9a, 0xc5, 6297 0x88, 0x1e, 0x32, 0x0a, 0x30, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 6298 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 6299 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x57, 6300 0x65, 0x69, 0x67, 0x68, 0x74, 0x42, 0x18, 0x0a, 0x16, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 6301 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4a, 6302 0x04, 0x08, 0x07, 0x10, 0x08, 0x3a, 0x29, 0x9a, 0xc5, 0x88, 0x1e, 0x24, 0x0a, 0x22, 0x65, 0x6e, 6303 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 6304 0x2e, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 6305 0x22, 0xf1, 0x09, 0x0a, 0x0a, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 6306 0x18, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 6307 0x00, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x14, 0x0a, 0x04, 0x70, 0x61, 0x74, 6308 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 6309 0x4e, 0x0a, 0x0a, 0x73, 0x61, 0x66, 0x65, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x0a, 0x20, 6310 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 6311 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x67, 0x65, 6312 0x78, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 6313 0x10, 0x01, 0x48, 0x00, 0x52, 0x09, 0x73, 0x61, 0x66, 0x65, 0x52, 0x65, 0x67, 0x65, 0x78, 0x12, 6314 0x5b, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 6315 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 6316 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 6317 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 6318 0x65, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x6f, 6319 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x5e, 0x0a, 0x1d, 6320 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x5f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x5f, 0x64, 0x65, 0x70, 6321 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x03, 0x20, 6322 0x01, 0x28, 0x09, 0x42, 0x19, 0x18, 0x01, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x28, 0x80, 0x08, 0x92, 6323 0xc7, 0x86, 0xd8, 0x04, 0x03, 0x33, 0x2e, 0x30, 0xb8, 0xee, 0xf2, 0xd2, 0x05, 0x01, 0x48, 0x00, 6324 0x52, 0x1a, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x44, 0x65, 0x70, 6325 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x67, 0x65, 0x78, 0x12, 0x41, 0x0a, 0x0e, 6326 0x63, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x18, 0x04, 6327 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 6328 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 6329 0x52, 0x0d, 0x63, 0x61, 0x73, 0x65, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12, 6330 0x59, 0x0a, 0x10, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x66, 0x72, 0x61, 0x63, 0x74, 6331 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 6332 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 6333 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x46, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 6334 0x61, 0x6c, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x0f, 0x72, 0x75, 0x6e, 0x74, 0x69, 6335 0x6d, 0x65, 0x46, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x07, 0x68, 0x65, 6336 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x6e, 6337 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 6338 0x2e, 0x76, 0x33, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 6339 0x72, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x57, 0x0a, 0x10, 0x71, 0x75, 6340 0x65, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x07, 6341 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 6342 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x51, 0x75, 0x65, 6343 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 6344 0x65, 0x72, 0x52, 0x0f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 6345 0x65, 0x72, 0x73, 0x12, 0x4b, 0x0a, 0x04, 0x67, 0x72, 0x70, 0x63, 0x18, 0x08, 0x20, 0x01, 0x28, 6346 0x0b, 0x32, 0x37, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 6347 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 6348 0x61, 0x74, 0x63, 0x68, 0x2e, 0x47, 0x72, 0x70, 0x63, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, 6349 0x74, 0x63, 0x68, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x04, 0x67, 0x72, 0x70, 0x63, 6350 0x12, 0x59, 0x0a, 0x0b, 0x74, 0x6c, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 6351 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 6352 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x6f, 6353 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x54, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x74, 6354 0x65, 0x78, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 6355 0x0a, 0x74, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x51, 0x0a, 0x10, 0x64, 6356 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 6357 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 6358 0x70, 0x65, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x65, 6359 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x0f, 0x64, 6360 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x53, 6361 0x0a, 0x15, 0x47, 0x72, 0x70, 0x63, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 6362 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0x3a, 0x9a, 0xc5, 0x88, 0x1e, 0x35, 0x0a, 0x33, 6363 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 6364 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x47, 0x72, 6365 0x70, 0x63, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x70, 0x74, 0x69, 6366 0x6f, 0x6e, 0x73, 0x1a, 0xc9, 0x01, 0x0a, 0x16, 0x54, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 6367 0x78, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x38, 6368 0x0a, 0x09, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 6369 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 6370 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x70, 6371 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x12, 0x38, 0x0a, 0x09, 0x76, 0x61, 0x6c, 0x69, 6372 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 6373 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 6374 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 6375 0x65, 0x64, 0x3a, 0x3b, 0x9a, 0xc5, 0x88, 0x1e, 0x36, 0x0a, 0x34, 0x65, 0x6e, 0x76, 0x6f, 0x79, 6376 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 6377 0x75, 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x2e, 0x54, 0x6c, 0x73, 0x43, 0x6f, 0x6e, 0x74, 6378 0x65, 0x78, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 6379 0x10, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 6380 0x72, 0x3a, 0x24, 0x9a, 0xc5, 0x88, 0x1e, 0x1f, 0x0a, 0x1d, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 6381 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 6382 0x74, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x42, 0x15, 0x0a, 0x0e, 0x70, 0x61, 0x74, 0x68, 0x5f, 6383 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x4a, 0x04, 6384 0x08, 0x05, 0x10, 0x06, 0x22, 0xfb, 0x06, 0x0a, 0x0a, 0x43, 0x6f, 0x72, 0x73, 0x50, 0x6f, 0x6c, 6385 0x69, 0x63, 0x79, 0x12, 0x5f, 0x0a, 0x19, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x72, 0x69, 6386 0x67, 0x69, 0x6e, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 6387 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 6388 0x79, 0x70, 0x65, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 6389 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x16, 0x61, 0x6c, 6390 0x6c, 0x6f, 0x77, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 6391 0x61, 0x74, 0x63, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x65, 6392 0x74, 0x68, 0x6f, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 6393 0x6f, 0x77, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 6394 0x6f, 0x77, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 6395 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x25, 6396 0x0a, 0x0e, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 6397 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x48, 0x65, 6398 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x67, 0x65, 6399 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x61, 0x78, 0x41, 0x67, 0x65, 0x12, 0x47, 6400 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 6401 0x61, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 6402 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 6403 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x43, 0x72, 0x65, 0x64, 6404 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x57, 0x0a, 0x0e, 0x66, 0x69, 0x6c, 0x74, 0x65, 6405 0x72, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 6406 0x2e, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 6407 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x46, 0x72, 6408 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x48, 6409 0x00, 0x52, 0x0d, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 6410 0x12, 0x76, 0x0a, 0x1f, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x5f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 6411 0x5f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x61, 0x62, 6412 0x6c, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 6413 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 6414 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x11, 0x18, 0x01, 0x92, 0xc7, 0x86, 0xd8, 0x04, 0x03, 0x33, 6415 0x2e, 0x30, 0xb8, 0xee, 0xf2, 0xd2, 0x05, 0x01, 0x48, 0x00, 0x52, 0x1c, 0x68, 0x69, 0x64, 0x64, 6416 0x65, 0x6e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 6417 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x55, 0x0a, 0x0e, 0x73, 0x68, 0x61, 0x64, 6418 0x6f, 0x77, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 6419 0x32, 0x2e, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 6420 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x46, 6421 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 6422 0x52, 0x0d, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 6423 0x61, 0x0a, 0x24, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x5f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x5f, 6424 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 6425 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x11, 0x18, 6426 0x01, 0x92, 0xc7, 0x86, 0xd8, 0x04, 0x03, 0x33, 0x2e, 0x30, 0xb8, 0xee, 0xf2, 0xd2, 0x05, 0x01, 6427 0x52, 0x20, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x44, 0x65, 0x70, 6428 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x4f, 0x72, 0x69, 0x67, 6429 0x69, 0x6e, 0x12, 0x73, 0x0a, 0x2a, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x5f, 0x65, 0x6e, 0x76, 6430 0x6f, 0x79, 0x5f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x6c, 6431 0x6c, 0x6f, 0x77, 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 6432 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x42, 0x18, 0x18, 0x01, 0xfa, 0x42, 0x0a, 0x92, 0x01, 0x07, 6433 0x22, 0x05, 0x72, 0x03, 0x28, 0x80, 0x08, 0x92, 0xc7, 0x86, 0xd8, 0x04, 0x03, 0x33, 0x2e, 0x30, 6434 0x52, 0x25, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x44, 0x65, 0x70, 6435 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x4f, 0x72, 0x69, 0x67, 6436 0x69, 0x6e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x3a, 0x24, 0x9a, 0xc5, 0x88, 0x1e, 0x1f, 0x0a, 0x1d, 6437 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 6438 0x74, 0x65, 0x2e, 0x43, 0x6f, 0x72, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x42, 0x13, 0x0a, 6439 0x11, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 6440 0x65, 0x72, 0x22, 0x8a, 0x29, 0x0a, 0x0b, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 6441 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 6442 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x48, 0x00, 0x52, 0x07, 6443 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, 6444 0x65, 0x72, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 6445 0x0d, 0xfa, 0x42, 0x0a, 0x72, 0x08, 0x10, 0x01, 0xc0, 0x01, 0x01, 0xc8, 0x01, 0x00, 0x48, 0x00, 6446 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 6447 0x55, 0x0a, 0x11, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6c, 0x75, 0x73, 6448 0x74, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x6e, 0x76, 6449 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 6450 0x76, 0x33, 0x2e, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x43, 0x6c, 0x75, 0x73, 0x74, 6451 0x65, 0x72, 0x48, 0x00, 0x52, 0x10, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x43, 0x6c, 6452 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x3a, 0x0a, 0x18, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 6453 0x72, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x5f, 0x70, 0x6c, 0x75, 0x67, 6454 0x69, 0x6e, 0x18, 0x25, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x16, 0x63, 0x6c, 0x75, 0x73, 6455 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x50, 0x6c, 0x75, 0x67, 6456 0x69, 0x6e, 0x12, 0x8e, 0x01, 0x0a, 0x1f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, 6457 0x6f, 0x74, 0x5f, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 6458 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3e, 0x2e, 0x65, 6459 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 6460 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 6461 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 6462 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x42, 0x08, 0xfa, 0x42, 6463 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x1b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 6464 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 6465 0x6f, 0x64, 0x65, 0x12, 0x45, 0x0a, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 6466 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x65, 0x6e, 6467 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 6468 0x76, 0x33, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0d, 0x6d, 0x65, 0x74, 6469 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x32, 0x0a, 0x0e, 0x70, 0x72, 6470 0x65, 0x66, 0x69, 0x78, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 6471 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, 0xc0, 0x01, 0x02, 0xc8, 0x01, 0x00, 0x52, 6472 0x0d, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x53, 6473 0x0a, 0x0d, 0x72, 0x65, 0x67, 0x65, 0x78, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 6474 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 6475 0x70, 0x65, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 6476 0x67, 0x65, 0x78, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x6e, 0x64, 0x53, 0x75, 0x62, 0x73, 0x74, 6477 0x69, 0x74, 0x75, 0x74, 0x65, 0x52, 0x0c, 0x72, 0x65, 0x67, 0x65, 0x78, 0x52, 0x65, 0x77, 0x72, 6478 0x69, 0x74, 0x65, 0x12, 0x3f, 0x0a, 0x14, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x77, 0x72, 6479 0x69, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 6480 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, 0xc0, 0x01, 0x02, 0xc8, 0x01, 0x00, 0x48, 0x01, 6481 0x52, 0x12, 0x68, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x4c, 0x69, 0x74, 6482 0x65, 0x72, 0x61, 0x6c, 0x12, 0x48, 0x0a, 0x11, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x68, 0x6f, 0x73, 6483 0x74, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 6484 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 6485 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x01, 0x52, 0x0f, 0x61, 6486 0x75, 0x74, 0x6f, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x3d, 6487 0x0a, 0x13, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x68, 6488 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 6489 0x72, 0x06, 0xc0, 0x01, 0x01, 0xc8, 0x01, 0x00, 0x48, 0x01, 0x52, 0x11, 0x68, 0x6f, 0x73, 0x74, 6490 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x67, 0x0a, 6491 0x17, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x70, 0x61, 6492 0x74, 0x68, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 6493 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x6d, 0x61, 0x74, 0x63, 6494 0x68, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x4d, 0x61, 0x74, 0x63, 6495 0x68, 0x41, 0x6e, 0x64, 0x53, 0x75, 0x62, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x65, 0x48, 0x01, 6496 0x52, 0x14, 0x68, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x50, 0x61, 0x74, 6497 0x68, 0x52, 0x65, 0x67, 0x65, 0x78, 0x12, 0x33, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 6498 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 6499 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 6500 0x6f, 0x6e, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x3c, 0x0a, 0x0c, 0x69, 6501 0x64, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 6502 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 6503 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x69, 0x64, 6504 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x45, 0x0a, 0x0c, 0x72, 0x65, 0x74, 6505 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 6506 0x22, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 6507 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 6508 0x69, 0x63, 0x79, 0x52, 0x0b, 0x72, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 6509 0x12, 0x4f, 0x0a, 0x19, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 6510 0x5f, 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x21, 0x20, 6511 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 6512 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x16, 0x72, 0x65, 0x74, 0x72, 0x79, 6513 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x79, 0x70, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 6514 0x67, 0x12, 0x6e, 0x0a, 0x17, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x72, 6515 0x72, 0x6f, 0x72, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x1e, 0x20, 0x03, 6516 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 6517 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 6518 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x69, 6519 0x72, 0x72, 0x6f, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x15, 0x72, 0x65, 0x71, 0x75, 6520 0x65, 0x73, 0x74, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 6521 0x73, 0x12, 0x4b, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0b, 0x20, 6522 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 6523 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x69, 6524 0x6e, 0x67, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 6525 0x01, 0x02, 0x10, 0x01, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x41, 6526 0x0a, 0x0b, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x0d, 0x20, 6527 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 6528 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x61, 0x74, 0x65, 6529 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x0a, 0x72, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 6530 0x73, 0x12, 0x5c, 0x0a, 0x16, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x76, 0x68, 0x5f, 6531 0x72, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 6532 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 6533 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0b, 0x18, 6534 0x01, 0x92, 0xc7, 0x86, 0xd8, 0x04, 0x03, 0x33, 0x2e, 0x30, 0x52, 0x13, 0x69, 0x6e, 0x63, 0x6c, 6535 0x75, 0x64, 0x65, 0x56, 0x68, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x73, 0x12, 6536 0x4e, 0x0a, 0x0b, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x0f, 6537 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 6538 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x6f, 0x75, 6539 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x50, 0x6f, 0x6c, 6540 0x69, 0x63, 0x79, 0x52, 0x0a, 0x68, 0x61, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 6541 0x35, 0x0a, 0x04, 0x63, 0x6f, 0x72, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 6542 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 6543 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x72, 0x73, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 6544 0x52, 0x04, 0x63, 0x6f, 0x72, 0x73, 0x12, 0x50, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x67, 0x72, 6545 0x70, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 6546 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 6547 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0b, 0x18, 0x01, 0x92, 6548 0xc7, 0x86, 0xd8, 0x04, 0x03, 0x33, 0x2e, 0x30, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x47, 0x72, 0x70, 6549 0x63, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x56, 0x0a, 0x13, 0x67, 0x72, 0x70, 0x63, 6550 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 6551 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 6552 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 6553 0x42, 0x0b, 0x18, 0x01, 0x92, 0xc7, 0x86, 0xd8, 0x04, 0x03, 0x33, 0x2e, 0x30, 0x52, 0x11, 0x67, 6554 0x72, 0x70, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 6555 0x12, 0x59, 0x0a, 0x0f, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 6556 0x69, 0x67, 0x73, 0x18, 0x19, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 6557 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 6558 0x33, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x55, 0x70, 6559 0x67, 0x72, 0x61, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x75, 0x70, 0x67, 6560 0x72, 0x61, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x12, 0x67, 0x0a, 0x18, 0x69, 6561 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 6562 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 6563 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 6564 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 6565 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x16, 0x69, 0x6e, 6566 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 0x6f, 6567 0x6c, 0x69, 0x63, 0x79, 0x12, 0x80, 0x01, 0x0a, 0x18, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 6568 0x6c, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 6569 0x6e, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 6570 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 6571 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x49, 0x6e, 0x74, 0x65, 6572 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 6573 0x6f, 0x6e, 0x42, 0x0b, 0x18, 0x01, 0x92, 0xc7, 0x86, 0xd8, 0x04, 0x03, 0x33, 0x2e, 0x30, 0x52, 6574 0x16, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 6575 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5f, 0x0a, 0x16, 0x6d, 0x61, 0x78, 0x5f, 0x69, 6576 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 6577 0x73, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 6578 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 6579 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0b, 0x18, 0x01, 0x92, 0xc7, 0x86, 0xd8, 0x04, 0x03, 0x33, 6580 0x2e, 0x30, 0x52, 0x14, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 6581 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x73, 0x12, 0x45, 0x0a, 0x0c, 0x68, 0x65, 0x64, 0x67, 6582 0x65, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 6583 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 6584 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x48, 0x65, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 6585 0x63, 0x79, 0x52, 0x0b, 0x68, 0x65, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 6586 0x64, 0x0a, 0x13, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x64, 0x75, 6587 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x65, 6588 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 6589 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 6590 0x2e, 0x4d, 0x61, 0x78, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 6591 0x6f, 0x6e, 0x52, 0x11, 0x6d, 0x61, 0x78, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x44, 0x75, 0x72, 6592 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0xa4, 0x01, 0x0a, 0x2d, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 6593 0x5f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x5f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 6594 0x64, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 6595 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 6596 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 6597 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 6598 0x6e, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x50, 6599 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x42, 0x0b, 0x18, 0x01, 0x92, 0xc7, 0x86, 0xd8, 0x04, 0x03, 0x33, 6600 0x2e, 0x30, 0x52, 0x28, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x44, 6601 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 6602 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x1a, 0xf0, 0x02, 0x0a, 6603 0x13, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x50, 0x6f, 6604 0x6c, 0x69, 0x63, 0x79, 0x12, 0x21, 0x0a, 0x07, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 6605 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 6606 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x59, 0x0a, 0x10, 0x72, 0x75, 0x6e, 0x74, 0x69, 6607 0x6d, 0x65, 0x5f, 0x66, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 6608 0x0b, 0x32, 0x2e, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 6609 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 6610 0x46, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 6611 0x74, 0x52, 0x0f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x46, 0x72, 0x61, 0x63, 0x74, 0x69, 6612 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x61, 0x6d, 0x70, 6613 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 6614 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 6615 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x63, 0x65, 0x53, 0x61, 0x6d, 0x70, 6616 0x6c, 0x65, 0x64, 0x12, 0x5f, 0x0a, 0x23, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x5f, 0x65, 0x6e, 6617 0x76, 0x6f, 0x79, 0x5f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x72, 6618 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 6619 0x42, 0x11, 0x18, 0x01, 0x92, 0xc7, 0x86, 0xd8, 0x04, 0x03, 0x33, 0x2e, 0x30, 0xb8, 0xee, 0xf2, 6620 0xd2, 0x05, 0x01, 0x52, 0x1f, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 6621 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 6622 0x65, 0x4b, 0x65, 0x79, 0x3a, 0x39, 0x9a, 0xc5, 0x88, 0x1e, 0x34, 0x0a, 0x32, 0x65, 0x6e, 0x76, 6623 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 6624 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x71, 0x75, 6625 0x65, 0x73, 0x74, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x1a, 6626 0x96, 0x0a, 0x0a, 0x0a, 0x48, 0x61, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x4e, 6627 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 6628 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 6629 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 6630 0x6f, 0x6e, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x48, 0x65, 6631 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x4e, 6632 0x0a, 0x06, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 6633 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 6634 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 6635 0x6f, 0x6e, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x43, 0x6f, 6636 0x6f, 0x6b, 0x69, 0x65, 0x48, 0x00, 0x52, 0x06, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x12, 0x79, 6637 0x0a, 0x15, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 6638 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 6639 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 6640 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 6641 0x6e, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x43, 0x6f, 0x6e, 6642 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 6643 0x73, 0x48, 0x00, 0x52, 0x14, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 6644 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x67, 0x0a, 0x0f, 0x71, 0x75, 0x65, 6645 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 6646 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 6647 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 6648 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, 6649 0x79, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 6650 0x48, 0x00, 0x52, 0x0e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 6651 0x65, 0x72, 0x12, 0x5e, 0x0a, 0x0c, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 6652 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 6653 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 6654 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x61, 0x73, 6655 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x74, 6656 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 6657 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x18, 0x04, 6658 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x1a, 0xc6, 6659 0x01, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x0b, 0x68, 0x65, 0x61, 6660 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 6661 0xfa, 0x42, 0x0a, 0x72, 0x08, 0x10, 0x01, 0xc0, 0x01, 0x01, 0xc8, 0x01, 0x00, 0x52, 0x0a, 0x68, 6662 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x53, 0x0a, 0x0d, 0x72, 0x65, 0x67, 6663 0x65, 0x78, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 6664 0x32, 0x2e, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x6d, 0x61, 6665 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x4d, 0x61, 6666 0x74, 0x63, 0x68, 0x41, 0x6e, 0x64, 0x53, 0x75, 0x62, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x65, 6667 0x52, 0x0c, 0x72, 0x65, 0x67, 0x65, 0x78, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x3a, 0x37, 6668 0x9a, 0xc5, 0x88, 0x1e, 0x32, 0x0a, 0x30, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 6669 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 6670 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 6671 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x1a, 0x9f, 0x01, 0x0a, 0x06, 0x43, 0x6f, 0x6f, 0x6b, 6672 0x69, 0x65, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 6673 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 6674 0x2b, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 6675 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 6676 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x12, 0x12, 0x0a, 0x04, 6677 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 6678 0x3a, 0x37, 0x9a, 0xc5, 0x88, 0x1e, 0x32, 0x0a, 0x30, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 6679 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 6680 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 6681 0x63, 0x79, 0x2e, 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x1a, 0x7a, 0x0a, 0x14, 0x43, 0x6f, 0x6e, 6682 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 6683 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x70, 0x18, 0x01, 6684 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x70, 0x3a, 0x45, 6685 0x9a, 0xc5, 0x88, 0x1e, 0x40, 0x0a, 0x3e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 6686 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 6687 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 6688 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x65, 6689 0x72, 0x74, 0x69, 0x65, 0x73, 0x1a, 0x6e, 0x0a, 0x0e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 6690 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 6691 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 6692 0x6e, 0x61, 0x6d, 0x65, 0x3a, 0x3f, 0x9a, 0xc5, 0x88, 0x1e, 0x3a, 0x0a, 0x38, 0x65, 0x6e, 0x76, 6693 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 6694 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x61, 0x73, 0x68, 6695 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 6696 0x6d, 0x65, 0x74, 0x65, 0x72, 0x1a, 0x66, 0x0a, 0x0b, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 6697 0x74, 0x61, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 6698 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x3a, 6699 0x3c, 0x9a, 0xc5, 0x88, 0x1e, 0x37, 0x0a, 0x35, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 6700 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 6701 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, 6702 0x79, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x3a, 0x30, 0x9a, 6703 0xc5, 0x88, 0x1e, 0x2b, 0x0a, 0x29, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 6704 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 6705 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x42, 6706 0x17, 0x0a, 0x10, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 6707 0x69, 0x65, 0x72, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x1a, 0xa3, 0x03, 0x0a, 0x0d, 0x55, 0x70, 0x67, 6708 0x72, 0x61, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x30, 0x0a, 0x0c, 0x75, 0x70, 6709 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 6710 0x42, 0x0d, 0xfa, 0x42, 0x0a, 0x72, 0x08, 0x10, 0x01, 0xc0, 0x01, 0x02, 0xc8, 0x01, 0x00, 0x52, 6711 0x0b, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x34, 0x0a, 0x07, 6712 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 6713 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 6714 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 6715 0x65, 0x64, 0x12, 0x65, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x63, 0x6f, 6716 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x65, 0x6e, 0x76, 6717 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 6718 0x76, 0x33, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x55, 6719 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 6720 0x6e, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x6e, 6721 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x8d, 0x01, 0x0a, 0x0d, 0x43, 0x6f, 6722 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5d, 0x0a, 0x15, 0x70, 6723 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x63, 0x6f, 6724 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x65, 0x6e, 0x76, 6725 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 6726 0x33, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x43, 6727 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x13, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x50, 0x72, 0x6f, 0x74, 6728 0x6f, 0x63, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x6c, 6729 0x6c, 0x6f, 0x77, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 6730 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x50, 0x6f, 0x73, 0x74, 0x3a, 0x33, 0x9a, 0xc5, 0x88, 0x1e, 0x2e, 6731 0x0a, 0x2c, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 6732 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 6733 0x2e, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x88, 6734 0x02, 0x0a, 0x11, 0x4d, 0x61, 0x78, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x44, 0x75, 0x72, 0x61, 6735 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x49, 0x0a, 0x13, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x74, 0x72, 0x65, 6736 0x61, 0x6d, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 6737 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 6738 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x6d, 0x61, 6739 0x78, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 6740 0x50, 0x0a, 0x17, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 6741 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 6742 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 6743 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x14, 0x67, 0x72, 0x70, 6744 0x63, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 6745 0x78, 0x12, 0x56, 0x0a, 0x1a, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 6746 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 6747 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 6748 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 6749 0x52, 0x17, 0x67, 0x72, 0x70, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x48, 0x65, 0x61, 6750 0x64, 0x65, 0x72, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x45, 0x0a, 0x1b, 0x43, 0x6c, 0x75, 6751 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 6752 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x45, 0x52, 0x56, 6753 0x49, 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x10, 6754 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x01, 6755 0x22, 0x5e, 0x0a, 0x16, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x64, 0x69, 6756 0x72, 0x65, 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x41, 6757 0x53, 0x53, 0x5f, 0x54, 0x48, 0x52, 0x4f, 0x55, 0x47, 0x48, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 6758 0x4e, 0x41, 0x4c, 0x5f, 0x52, 0x45, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x10, 0x00, 0x12, 0x1c, 6759 0x0a, 0x18, 0x48, 0x41, 0x4e, 0x44, 0x4c, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 6760 0x4c, 0x5f, 0x52, 0x45, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x10, 0x01, 0x1a, 0x02, 0x18, 0x01, 6761 0x3a, 0x25, 0x9a, 0xc5, 0x88, 0x1e, 0x20, 0x0a, 0x1e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 6762 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x6f, 0x75, 0x74, 6763 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x18, 0x0a, 0x11, 0x63, 0x6c, 0x75, 0x73, 0x74, 6764 0x65, 0x72, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x03, 0xf8, 0x42, 6765 0x01, 0x42, 0x18, 0x0a, 0x16, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 6766 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4a, 0x04, 0x08, 0x0c, 0x10, 6767 0x0d, 0x4a, 0x04, 0x08, 0x12, 0x10, 0x13, 0x4a, 0x04, 0x08, 0x13, 0x10, 0x14, 0x4a, 0x04, 0x08, 6768 0x10, 0x10, 0x11, 0x4a, 0x04, 0x08, 0x16, 0x10, 0x17, 0x4a, 0x04, 0x08, 0x15, 0x10, 0x16, 0x22, 6769 0xcb, 0x10, 0x0a, 0x0b, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 6770 0x19, 0x0a, 0x08, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 6771 0x09, 0x52, 0x07, 0x72, 0x65, 0x74, 0x72, 0x79, 0x4f, 0x6e, 0x12, 0x52, 0x0a, 0x0b, 0x6e, 0x75, 6772 0x6d, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 6773 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 6774 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x13, 0xf2, 6775 0x98, 0xfe, 0x8f, 0x05, 0x0d, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x69, 6776 0x65, 0x73, 0x52, 0x0a, 0x6e, 0x75, 0x6d, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x41, 6777 0x0a, 0x0f, 0x70, 0x65, 0x72, 0x5f, 0x74, 0x72, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 6778 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 6779 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 6780 0x6f, 0x6e, 0x52, 0x0d, 0x70, 0x65, 0x72, 0x54, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 6781 0x74, 0x12, 0x57, 0x0a, 0x0e, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 6782 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 6783 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 6784 0x33, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65, 6785 0x74, 0x72, 0x79, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x0d, 0x72, 0x65, 0x74, 6786 0x72, 0x79, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x67, 0x0a, 0x14, 0x72, 0x65, 6787 0x74, 0x72, 0x79, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 6788 0x74, 0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 6789 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 6790 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65, 0x74, 6791 0x72, 0x79, 0x48, 0x6f, 0x73, 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 6792 0x12, 0x72, 0x65, 0x74, 0x72, 0x79, 0x48, 0x6f, 0x73, 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 6793 0x61, 0x74, 0x65, 0x12, 0x48, 0x0a, 0x21, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 6794 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 6795 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1d, 6796 0x68, 0x6f, 0x73, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x74, 6797 0x72, 0x79, 0x4d, 0x61, 0x78, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x12, 0x34, 0x0a, 6798 0x16, 0x72, 0x65, 0x74, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 6799 0x73, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x14, 0x72, 6800 0x65, 0x74, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 6801 0x64, 0x65, 0x73, 0x12, 0x55, 0x0a, 0x0e, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x62, 0x61, 0x63, 6802 0x6b, 0x5f, 0x6f, 0x66, 0x66, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x65, 0x6e, 6803 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 6804 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 6805 0x52, 0x65, 0x74, 0x72, 0x79, 0x42, 0x61, 0x63, 0x6b, 0x4f, 0x66, 0x66, 0x52, 0x0c, 0x72, 0x65, 6806 0x74, 0x72, 0x79, 0x42, 0x61, 0x63, 0x6b, 0x4f, 0x66, 0x66, 0x12, 0x78, 0x0a, 0x1b, 0x72, 0x61, 6807 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x79, 6808 0x5f, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x6f, 0x66, 0x66, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 6809 0x3a, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 6810 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 6811 0x69, 0x63, 0x79, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x52, 6812 0x65, 0x74, 0x72, 0x79, 0x42, 0x61, 0x63, 0x6b, 0x4f, 0x66, 0x66, 0x52, 0x17, 0x72, 0x61, 0x74, 6813 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x52, 0x65, 0x74, 0x72, 0x79, 0x42, 0x61, 0x63, 6814 0x6b, 0x4f, 0x66, 0x66, 0x12, 0x51, 0x0a, 0x11, 0x72, 0x65, 0x74, 0x72, 0x69, 0x61, 0x62, 0x6c, 6815 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 6816 0x24, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 6817 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 6818 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x10, 0x72, 0x65, 0x74, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 6819 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x60, 0x0a, 0x19, 0x72, 0x65, 0x74, 0x72, 0x69, 6820 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 6821 0x64, 0x65, 0x72, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x6e, 0x76, 6822 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 6823 0x76, 0x33, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 6824 0x52, 0x17, 0x72, 0x65, 0x74, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 6825 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x1a, 0x98, 0x02, 0x0a, 0x0d, 0x52, 0x65, 6826 0x74, 0x72, 0x79, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 6827 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 6828 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0c, 0x74, 0x79, 0x70, 0x65, 6829 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 6830 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 6831 0x2e, 0x41, 0x6e, 0x79, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x79, 0x70, 0x65, 0x64, 0x43, 0x6f, 0x6e, 6832 0x66, 0x69, 0x67, 0x12, 0x6b, 0x0a, 0x1e, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x5f, 0x65, 0x6e, 6833 0x76, 0x6f, 0x79, 0x5f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x63, 6834 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 6835 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 6836 0x72, 0x75, 0x63, 0x74, 0x42, 0x0b, 0x18, 0x01, 0x92, 0xc7, 0x86, 0xd8, 0x04, 0x03, 0x33, 0x2e, 6837 0x30, 0x48, 0x00, 0x52, 0x1b, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 6838 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 6839 0x3a, 0x33, 0x9a, 0xc5, 0x88, 0x1e, 0x2e, 0x0a, 0x2c, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 6840 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x74, 0x72, 6841 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x72, 0x69, 6842 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x0d, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 6843 0x74, 0x79, 0x70, 0x65, 0x1a, 0xa2, 0x02, 0x0a, 0x12, 0x52, 0x65, 0x74, 0x72, 0x79, 0x48, 0x6f, 6844 0x73, 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 6845 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 6846 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0c, 0x74, 0x79, 0x70, 0x65, 6847 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 6848 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 6849 0x2e, 0x41, 0x6e, 0x79, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x79, 0x70, 0x65, 0x64, 0x43, 0x6f, 0x6e, 6850 0x66, 0x69, 0x67, 0x12, 0x6b, 0x0a, 0x1e, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x5f, 0x65, 0x6e, 6851 0x76, 0x6f, 0x79, 0x5f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x63, 6852 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 6853 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 6854 0x72, 0x75, 0x63, 0x74, 0x42, 0x0b, 0x18, 0x01, 0x92, 0xc7, 0x86, 0xd8, 0x04, 0x03, 0x33, 0x2e, 6855 0x30, 0x48, 0x00, 0x52, 0x1b, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 6856 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 6857 0x3a, 0x38, 0x9a, 0xc5, 0x88, 0x1e, 0x33, 0x0a, 0x31, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 6858 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x74, 0x72, 6859 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x48, 0x6f, 0x73, 6860 0x74, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x63, 0x6f, 6861 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x1a, 0xd6, 0x01, 0x0a, 0x0c, 0x52, 0x65, 6862 0x74, 0x72, 0x79, 0x42, 0x61, 0x63, 0x6b, 0x4f, 0x66, 0x66, 0x12, 0x4a, 0x0a, 0x0d, 0x62, 0x61, 6863 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 6864 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 6865 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0xfa, 0x42, 6866 0x07, 0xaa, 0x01, 0x04, 0x08, 0x01, 0x2a, 0x00, 0x52, 0x0c, 0x62, 0x61, 0x73, 0x65, 0x49, 0x6e, 6867 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x46, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 6868 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 6869 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 6870 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xaa, 0x01, 0x02, 0x2a, 6871 0x00, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x3a, 0x32, 6872 0x9a, 0xc5, 0x88, 0x1e, 0x2d, 0x0a, 0x2b, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 6873 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 6874 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x42, 0x61, 0x63, 0x6b, 0x4f, 6875 0x66, 0x66, 0x1a, 0x88, 0x01, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x65, 0x74, 0x48, 0x65, 0x61, 0x64, 6876 0x65, 0x72, 0x12, 0x21, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 6877 0x42, 0x0d, 0xfa, 0x42, 0x0a, 0x72, 0x08, 0x10, 0x01, 0xc0, 0x01, 0x01, 0xc8, 0x01, 0x00, 0x52, 6878 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x56, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 6879 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 6880 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 6881 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x48, 6882 0x65, 0x61, 0x64, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x42, 0x08, 0xfa, 0x42, 0x05, 6883 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x1a, 0xc0, 0x01, 6884 0x0a, 0x17, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x52, 0x65, 0x74, 6885 0x72, 0x79, 0x42, 0x61, 0x63, 0x6b, 0x4f, 0x66, 0x66, 0x12, 0x5d, 0x0a, 0x0d, 0x72, 0x65, 0x73, 6886 0x65, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 6887 0x32, 0x2e, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 6888 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 6889 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 6890 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x65, 6891 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x46, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 6892 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 6893 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 6894 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0xaa, 0x01, 6895 0x02, 0x2a, 0x00, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 6896 0x22, 0x34, 0x0a, 0x11, 0x52, 0x65, 0x73, 0x65, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x46, 6897 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x45, 0x43, 0x4f, 0x4e, 0x44, 0x53, 6898 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x55, 0x4e, 0x49, 0x58, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x53, 6899 0x54, 0x41, 0x4d, 0x50, 0x10, 0x01, 0x3a, 0x25, 0x9a, 0xc5, 0x88, 0x1e, 0x20, 0x0a, 0x1e, 0x65, 6900 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 6901 0x65, 0x2e, 0x52, 0x65, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x9c, 0x02, 6902 0x0a, 0x0b, 0x48, 0x65, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x50, 0x0a, 6903 0x10, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 6904 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 6905 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 6906 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x28, 0x01, 0x52, 0x0f, 6907 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x12, 6908 0x5c, 0x0a, 0x19, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x72, 0x65, 6909 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 6910 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 6911 0x76, 0x33, 0x2e, 0x46, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x65, 0x72, 6912 0x63, 0x65, 0x6e, 0x74, 0x52, 0x17, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 6913 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x36, 0x0a, 6914 0x18, 0x68, 0x65, 0x64, 0x67, 0x65, 0x5f, 0x6f, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x74, 0x72, 6915 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 6916 0x14, 0x68, 0x65, 0x64, 0x67, 0x65, 0x4f, 0x6e, 0x50, 0x65, 0x72, 0x54, 0x72, 0x79, 0x54, 0x69, 6917 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x3a, 0x25, 0x9a, 0xc5, 0x88, 0x1e, 0x20, 0x0a, 0x1e, 0x65, 0x6e, 6918 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 6919 0x2e, 0x48, 0x65, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0xe1, 0x05, 0x0a, 6920 0x0e, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 6921 0x27, 0x0a, 0x0e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 6922 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0d, 0x68, 0x74, 0x74, 0x70, 0x73, 6923 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x29, 0x0a, 0x0f, 0x73, 0x63, 0x68, 0x65, 6924 0x6d, 0x65, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 6925 0x09, 0x48, 0x00, 0x52, 0x0e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x52, 0x65, 0x64, 0x69, 0x72, 6926 0x65, 0x63, 0x74, 0x12, 0x30, 0x0a, 0x0d, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x64, 0x69, 6927 0x72, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, 6928 0x06, 0xc0, 0x01, 0x02, 0xc8, 0x01, 0x00, 0x52, 0x0c, 0x68, 0x6f, 0x73, 0x74, 0x52, 0x65, 0x64, 6929 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x72, 0x65, 6930 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x70, 0x6f, 6931 0x72, 0x74, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x32, 0x0a, 0x0d, 0x70, 0x61, 6932 0x74, 0x68, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 6933 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, 0xc0, 0x01, 0x02, 0xc8, 0x01, 0x00, 0x48, 0x01, 6934 0x52, 0x0c, 0x70, 0x61, 0x74, 0x68, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x34, 6935 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 6936 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0b, 0xfa, 0x42, 0x08, 0x72, 0x06, 0xc0, 0x01, 0x02, 6937 0xc8, 0x01, 0x00, 0x48, 0x01, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x52, 0x65, 0x77, 6938 0x72, 0x69, 0x74, 0x65, 0x12, 0x55, 0x0a, 0x0d, 0x72, 0x65, 0x67, 0x65, 0x78, 0x5f, 0x72, 0x65, 6939 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x65, 0x6e, 6940 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 6941 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x6e, 6942 0x64, 0x53, 0x75, 0x62, 0x73, 0x74, 0x69, 0x74, 0x75, 0x74, 0x65, 0x48, 0x01, 0x52, 0x0c, 0x72, 6943 0x65, 0x67, 0x65, 0x78, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0x69, 0x0a, 0x0d, 0x72, 6944 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 6945 0x28, 0x0e, 0x32, 0x3a, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 6946 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x64, 0x69, 0x72, 6947 0x65, 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 6948 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x42, 0x08, 6949 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 6950 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x70, 0x5f, 6951 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x73, 0x74, 0x72, 6952 0x69, 0x70, 0x51, 0x75, 0x65, 0x72, 0x79, 0x22, 0x77, 0x0a, 0x14, 0x52, 0x65, 0x64, 0x69, 0x72, 6953 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 6954 0x15, 0x0a, 0x11, 0x4d, 0x4f, 0x56, 0x45, 0x44, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x41, 0x4e, 0x45, 6955 0x4e, 0x54, 0x4c, 0x59, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 6956 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x45, 0x45, 0x5f, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x10, 0x02, 6957 0x12, 0x16, 0x0a, 0x12, 0x54, 0x45, 0x4d, 0x50, 0x4f, 0x52, 0x41, 0x52, 0x59, 0x5f, 0x52, 0x45, 6958 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x10, 0x03, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x45, 0x52, 0x4d, 6959 0x41, 0x4e, 0x45, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x10, 0x04, 6960 0x3a, 0x28, 0x9a, 0xc5, 0x88, 0x1e, 0x23, 0x0a, 0x21, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 6961 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x65, 0x64, 0x69, 6962 0x72, 0x65, 0x63, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x1a, 0x0a, 0x18, 0x73, 0x63, 6963 0x68, 0x65, 0x6d, 0x65, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x65, 6964 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x18, 0x0a, 0x16, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x72, 6965 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 6966 0x22, 0xa0, 0x01, 0x0a, 0x14, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 6967 0x6e, 0x73, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x06, 0x73, 0x74, 0x61, 6968 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x2a, 0x05, 6969 0x10, 0xd8, 0x04, 0x28, 0x64, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x34, 0x0a, 6970 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x65, 0x6e, 6971 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 6972 0x76, 0x33, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x04, 0x62, 6973 0x6f, 0x64, 0x79, 0x3a, 0x2e, 0x9a, 0xc5, 0x88, 0x1e, 0x29, 0x0a, 0x27, 0x65, 0x6e, 0x76, 0x6f, 6974 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x44, 6975 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x41, 0x63, 0x74, 6976 0x69, 0x6f, 0x6e, 0x22, 0x15, 0x0a, 0x13, 0x4e, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 6977 0x64, 0x69, 0x6e, 0x67, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x91, 0x01, 0x0a, 0x09, 0x44, 6978 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x25, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 6979 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 6980 0x72, 0x02, 0x10, 0x01, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 6981 0x38, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 6982 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 6983 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 6984 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x65, 0x3a, 0x23, 0x9a, 0xc5, 0x88, 0x1e, 0x1e, 6985 0x0a, 0x1c, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 6986 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x44, 0x65, 0x63, 0x6f, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x22, 0xd2, 6987 0x02, 0x0a, 0x07, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x12, 0x49, 0x0a, 0x0f, 0x63, 0x6c, 6988 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 6989 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 6990 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x65, 6991 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x0e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x61, 0x6d, 6992 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x49, 0x0a, 0x0f, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x5f, 6993 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 6994 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x46, 6995 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 6996 0x52, 0x0e, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 6997 0x12, 0x4b, 0x0a, 0x10, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x61, 0x6d, 0x70, 6998 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x65, 0x6e, 0x76, 6999 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x72, 0x61, 0x63, 0x74, 7000 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x52, 0x0f, 0x6f, 0x76, 7001 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x12, 0x41, 0x0a, 7002 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 7003 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 7004 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 7005 0x6d, 0x54, 0x61, 0x67, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x61, 0x67, 0x73, 7006 0x3a, 0x21, 0x9a, 0xc5, 0x88, 0x1e, 0x1c, 0x0a, 0x1a, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 7007 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x63, 7008 0x69, 0x6e, 0x67, 0x22, 0xf6, 0x02, 0x0a, 0x0e, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x43, 7009 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x3e, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 7010 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 7011 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 7012 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x07, 0x68, 7013 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 7014 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 7015 0x61, 0x6d, 0x65, 0x12, 0x60, 0x0a, 0x1f, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x5f, 0x65, 0x6e, 7016 0x76, 0x6f, 0x79, 0x5f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x70, 7017 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x19, 0x18, 0x01, 7018 0xfa, 0x42, 0x05, 0x72, 0x03, 0x28, 0x80, 0x08, 0x92, 0xc7, 0x86, 0xd8, 0x04, 0x03, 0x33, 0x2e, 7019 0x30, 0xb8, 0xee, 0xf2, 0xd2, 0x05, 0x01, 0x52, 0x1c, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x45, 7020 0x6e, 0x76, 0x6f, 0x79, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x50, 0x61, 7021 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x7b, 0x0a, 0x1e, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x5f, 7022 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x5f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 7023 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 7024 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x6f, 0x72, 7025 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x68, 7026 0x6f, 0x64, 0x42, 0x11, 0x18, 0x01, 0x92, 0xc7, 0x86, 0xd8, 0x04, 0x03, 0x33, 0x2e, 0x30, 0xb8, 7027 0xee, 0xf2, 0xd2, 0x05, 0x01, 0x52, 0x1b, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x45, 0x6e, 0x76, 7028 0x6f, 0x79, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x68, 7029 0x6f, 0x64, 0x3a, 0x28, 0x9a, 0xc5, 0x88, 0x1e, 0x23, 0x0a, 0x21, 0x65, 0x6e, 0x76, 0x6f, 0x79, 7030 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x56, 0x69, 7031 0x72, 0x74, 0x75, 0x61, 0x6c, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x22, 0xaa, 0x16, 0x0a, 7032 0x09, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x3b, 0x0a, 0x05, 0x73, 0x74, 7033 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 7034 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 7035 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x2a, 0x02, 0x18, 0x0a, 7036 0x52, 0x05, 0x73, 0x74, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x61, 0x62, 7037 0x6c, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x69, 7038 0x73, 0x61, 0x62, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x4b, 0x0a, 0x07, 0x61, 0x63, 0x74, 0x69, 7039 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 7040 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 7041 0x33, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 7042 0x6f, 0x6e, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x07, 0x61, 0x63, 7043 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3f, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 7044 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 7045 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x61, 0x74, 7046 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 7047 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x1a, 0x96, 0x12, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 7048 0x6e, 0x12, 0x5e, 0x0a, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x75, 0x73, 7049 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 7050 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 7051 0x33, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 7052 0x6f, 0x6e, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 7053 0x48, 0x00, 0x52, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 7054 0x72, 0x12, 0x6d, 0x0a, 0x13, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 7055 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 7056 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 7057 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 7058 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 7059 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x12, 0x64, 0x65, 7060 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 7061 0x12, 0x61, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 7062 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 7063 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 7064 0x33, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 7065 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 7066 0x73, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 7067 0x65, 0x72, 0x73, 0x12, 0x5e, 0x0a, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x61, 0x64, 7068 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x65, 0x6e, 7069 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 7070 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x41, 0x63, 7071 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 7072 0x73, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x64, 0x64, 0x72, 7073 0x65, 0x73, 0x73, 0x12, 0x55, 0x0a, 0x0b, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6b, 7074 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 7075 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 7076 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 7077 0x6e, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x0a, 7078 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x68, 0x0a, 0x12, 0x68, 0x65, 7079 0x61, 0x64, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 7080 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 7081 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 7082 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 7083 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 7084 0x48, 0x00, 0x52, 0x10, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 7085 0x61, 0x74, 0x63, 0x68, 0x12, 0x77, 0x0a, 0x10, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 7086 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 7087 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 7088 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 7089 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4d, 7090 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x42, 0x11, 0x18, 0x01, 0x92, 0xc7, 0x86, 0xd8, 0x04, 7091 0x03, 0x33, 0x2e, 0x30, 0xb8, 0xee, 0xf2, 0xd2, 0x05, 0x01, 0x48, 0x00, 0x52, 0x0f, 0x64, 0x79, 7092 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x4e, 0x0a, 7093 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 7094 0x30, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 7095 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 7096 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 7097 0x61, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x4a, 0x0a, 7098 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 7099 0x32, 0x2a, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 7100 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x45, 0x78, 0x74, 7101 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x09, 7102 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x49, 0x0a, 0x0d, 0x53, 0x6f, 0x75, 7103 0x72, 0x63, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x3a, 0x38, 0x9a, 0xc5, 0x88, 0x1e, 7104 0x33, 0x0a, 0x31, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 7105 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 7106 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6c, 0x75, 7107 0x73, 0x74, 0x65, 0x72, 0x1a, 0x53, 0x0a, 0x12, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 7108 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x3a, 0x3d, 0x9a, 0xc5, 0x88, 0x1e, 7109 0x38, 0x0a, 0x36, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 7110 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 7111 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 7112 0x6f, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x1a, 0xd1, 0x01, 0x0a, 0x0e, 0x52, 0x65, 7113 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x2e, 0x0a, 0x0b, 7114 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 7115 0x09, 0x42, 0x0d, 0xfa, 0x42, 0x0a, 0x72, 0x08, 0x10, 0x01, 0xc0, 0x01, 0x01, 0xc8, 0x01, 0x00, 7116 0x52, 0x0a, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x0e, 7117 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 7118 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0d, 0x64, 7119 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x24, 0x0a, 0x0e, 7120 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x69, 0x66, 0x5f, 0x61, 0x62, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x03, 7121 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x73, 0x6b, 0x69, 0x70, 0x49, 0x66, 0x41, 0x62, 0x73, 0x65, 7122 0x6e, 0x74, 0x3a, 0x39, 0x9a, 0xc5, 0x88, 0x1e, 0x34, 0x0a, 0x32, 0x65, 0x6e, 0x76, 0x6f, 0x79, 7123 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x61, 7124 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 7125 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x1a, 0x49, 0x0a, 7126 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x38, 7127 0x9a, 0xc5, 0x88, 0x1e, 0x33, 0x0a, 0x31, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 7128 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 7129 0x6d, 0x69, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 7130 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x1a, 0x9e, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x6e, 7131 0x65, 0x72, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x32, 0x0a, 0x10, 0x64, 0x65, 0x73, 0x63, 0x72, 7132 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 7133 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0f, 0x64, 0x65, 0x73, 0x63, 7134 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x64, 7135 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 7136 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x4b, 7137 0x65, 0x79, 0x3a, 0x35, 0x9a, 0xc5, 0x88, 0x1e, 0x30, 0x0a, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 7138 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x61, 7139 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 7140 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x1a, 0x8c, 0x02, 0x0a, 0x10, 0x48, 0x65, 7141 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x32, 7142 0x0a, 0x10, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x61, 0x6c, 7143 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 7144 0x01, 0x52, 0x0f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x61, 0x6c, 7145 0x75, 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x5f, 0x6d, 0x61, 0x74, 7146 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 7147 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 7148 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 7149 0x68, 0x12, 0x48, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 7150 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 7151 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 7152 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 7153 0x08, 0x01, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x3a, 0x3b, 0x9a, 0xc5, 0x88, 7154 0x1e, 0x36, 0x0a, 0x34, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 7155 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 7156 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 7157 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x1a, 0xb8, 0x01, 0x0a, 0x0f, 0x44, 0x79, 0x6e, 7158 0x61, 0x6d, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2e, 0x0a, 0x0e, 7159 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 7160 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x0d, 0x64, 7161 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x50, 0x0a, 0x0c, 7162 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 7163 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 7164 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x65, 0x74, 0x61, 7165 0x64, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 7166 0x01, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x12, 0x23, 7167 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 7168 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 7169 0x6c, 0x75, 0x65, 0x1a, 0xb4, 0x02, 0x0a, 0x08, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 7170 0x12, 0x2e, 0x0a, 0x0e, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x6b, 7171 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 7172 0x01, 0x52, 0x0d, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x4b, 0x65, 0x79, 7173 0x12, 0x50, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6b, 0x65, 0x79, 7174 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 7175 0x79, 0x70, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x76, 0x33, 0x2e, 7176 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 7177 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4b, 7178 0x65, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, 7179 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 7180 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x59, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 7181 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 7182 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 7183 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 7184 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 7185 0x42, 0x08, 0xfa, 0x42, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 7186 0x63, 0x65, 0x22, 0x26, 0x0a, 0x06, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x0b, 0x0a, 0x07, 7187 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x4f, 0x55, 7188 0x54, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x01, 0x3a, 0x2a, 0x9a, 0xc5, 0x88, 0x1e, 7189 0x25, 0x0a, 0x23, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 7190 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 7191 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x17, 0x0a, 0x10, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 7192 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x03, 0xf8, 0x42, 0x01, 0x1a, 7193 0xf2, 0x01, 0x0a, 0x08, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x66, 0x0a, 0x10, 7194 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 7195 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 7196 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x52, 7197 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 7198 0x65, 0x2e, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 7199 0x61, 0x48, 0x00, 0x52, 0x0f, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x61, 7200 0x64, 0x61, 0x74, 0x61, 0x1a, 0x63, 0x0a, 0x0f, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x4d, 7201 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x50, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x61, 0x64, 7202 0x61, 0x74, 0x61, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 7203 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 7204 0x61, 0x74, 0x61, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4b, 7205 0x65, 0x79, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x6d, 0x65, 7206 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x42, 0x19, 0x0a, 0x12, 0x6f, 0x76, 0x65, 7207 0x72, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 7208 0x03, 0xf8, 0x42, 0x01, 0x3a, 0x23, 0x9a, 0xc5, 0x88, 0x1e, 0x1e, 0x0a, 0x1c, 0x65, 0x6e, 0x76, 7209 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 7210 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0xfc, 0x05, 0x0a, 0x0d, 0x48, 0x65, 7211 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x04, 0x6e, 7212 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0d, 0xfa, 0x42, 0x0a, 0x72, 0x08, 7213 0x10, 0x01, 0xc0, 0x01, 0x01, 0xc8, 0x01, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 7214 0x0a, 0x0b, 0x65, 0x78, 0x61, 0x63, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 7215 0x01, 0x28, 0x09, 0x42, 0x0b, 0x18, 0x01, 0x92, 0xc7, 0x86, 0xd8, 0x04, 0x03, 0x33, 0x2e, 0x30, 7216 0x48, 0x00, 0x52, 0x0a, 0x65, 0x78, 0x61, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x5c, 7217 0x0a, 0x10, 0x73, 0x61, 0x66, 0x65, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x5f, 0x6d, 0x61, 0x74, 7218 0x63, 0x68, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 7219 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e, 0x76, 0x33, 7220 0x2e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x42, 0x0b, 0x18, 7221 0x01, 0x92, 0xc7, 0x86, 0xd8, 0x04, 0x03, 0x33, 0x2e, 0x30, 0x48, 0x00, 0x52, 0x0e, 0x73, 0x61, 7222 0x66, 0x65, 0x52, 0x65, 0x67, 0x65, 0x78, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x3c, 0x0a, 0x0b, 7223 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 7224 0x0b, 0x32, 0x19, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x76, 7225 0x33, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x0a, 7226 0x72, 0x61, 0x6e, 0x67, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x25, 0x0a, 0x0d, 0x70, 0x72, 7227 0x65, 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 7228 0x08, 0x48, 0x00, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x74, 0x63, 7229 0x68, 0x12, 0x37, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x6d, 0x61, 0x74, 0x63, 7230 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x12, 0x18, 0x01, 0xfa, 0x42, 0x04, 0x72, 0x02, 7231 0x10, 0x01, 0x92, 0xc7, 0x86, 0xd8, 0x04, 0x03, 0x33, 0x2e, 0x30, 0x48, 0x00, 0x52, 0x0b, 0x70, 7232 0x72, 0x65, 0x66, 0x69, 0x78, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x37, 0x0a, 0x0c, 0x73, 0x75, 7233 0x66, 0x66, 0x69, 0x78, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 7234 0x42, 0x12, 0x18, 0x01, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x92, 0xc7, 0x86, 0xd8, 0x04, 7235 0x03, 0x33, 0x2e, 0x30, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x4d, 0x61, 7236 0x74, 0x63, 0x68, 0x12, 0x3b, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x5f, 7237 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x42, 0x12, 0x18, 0x01, 0xfa, 7238 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x92, 0xc7, 0x86, 0xd8, 0x04, 0x03, 0x33, 0x2e, 0x30, 0x48, 7239 0x00, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x4d, 0x61, 0x74, 0x63, 0x68, 7240 0x12, 0x49, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 7241 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x74, 7242 0x79, 0x70, 0x65, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x53, 7243 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0b, 7244 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x69, 0x0a, 0x23, 0x68, 7245 0x69, 0x64, 0x64, 0x65, 0x6e, 0x5f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x5f, 0x64, 0x65, 0x70, 0x72, 7246 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x67, 0x65, 0x78, 0x5f, 0x6d, 0x61, 0x74, 7247 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x19, 0x18, 0x01, 0xfa, 0x42, 0x05, 0x72, 7248 0x03, 0x28, 0x80, 0x08, 0x92, 0xc7, 0x86, 0xd8, 0x04, 0x03, 0x33, 0x2e, 0x30, 0xb8, 0xee, 0xf2, 7249 0xd2, 0x05, 0x01, 0x48, 0x00, 0x52, 0x1f, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x45, 0x6e, 0x76, 7250 0x6f, 0x79, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x67, 0x65, 7251 0x78, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x76, 0x65, 0x72, 0x74, 7252 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x6e, 7253 0x76, 0x65, 0x72, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x3a, 0x27, 0x9a, 0xc5, 0x88, 0x1e, 0x22, 7254 0x0a, 0x20, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 7255 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 7256 0x65, 0x72, 0x42, 0x18, 0x0a, 0x16, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x74, 7257 0x63, 0x68, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4a, 0x04, 0x08, 0x02, 7258 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0xcf, 0x03, 0x0a, 0x15, 0x51, 0x75, 0x65, 7259 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 7260 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 7261 0x42, 0x0a, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x10, 0x01, 0x28, 0x80, 0x08, 0x52, 0x04, 0x6e, 0x61, 7262 0x6d, 0x65, 0x12, 0x53, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x61, 0x74, 7263 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 7264 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e, 0x76, 0x33, 7265 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x42, 0x08, 7266 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 7267 0x6e, 0x67, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x25, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x73, 0x65, 7268 0x6e, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 7269 0x52, 0x0c, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x54, 7270 0x0a, 0x1d, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x5f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x5f, 0x64, 7271 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 7272 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x11, 0x18, 0x01, 0x92, 0xc7, 0x86, 0xd8, 0x04, 0x03, 0x33, 7273 0x2e, 0x30, 0xb8, 0xee, 0xf2, 0xd2, 0x05, 0x01, 0x52, 0x1a, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 7274 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x56, 7275 0x61, 0x6c, 0x75, 0x65, 0x12, 0x70, 0x0a, 0x1d, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x5f, 0x65, 7276 0x6e, 0x76, 0x6f, 0x79, 0x5f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 7277 0x72, 0x65, 0x67, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 7278 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 7279 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x11, 0x18, 0x01, 0x92, 0xc7, 0x86, 0xd8, 0x04, 7280 0x03, 0x33, 0x2e, 0x30, 0xb8, 0xee, 0xf2, 0xd2, 0x05, 0x01, 0x52, 0x1a, 0x68, 0x69, 0x64, 0x64, 7281 0x65, 0x6e, 0x45, 0x6e, 0x76, 0x6f, 0x79, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 7282 0x64, 0x52, 0x65, 0x67, 0x65, 0x78, 0x3a, 0x2f, 0x9a, 0xc5, 0x88, 0x1e, 0x2a, 0x0a, 0x28, 0x65, 7283 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x72, 0x6f, 0x75, 0x74, 7284 0x65, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 7285 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x42, 0x21, 0x0a, 0x1f, 0x71, 0x75, 0x65, 0x72, 0x79, 7286 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 7287 0x5f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x22, 0xb9, 0x02, 0x0a, 0x16, 0x49, 7288 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x50, 7289 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x52, 0x0a, 0x16, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x74, 7290 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x73, 0x18, 7291 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 7292 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 7293 0x6c, 0x75, 0x65, 0x52, 0x14, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 7294 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x73, 0x12, 0x40, 0x0a, 0x17, 0x72, 0x65, 0x64, 7295 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x63, 7296 0x6f, 0x64, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x08, 0xfa, 0x42, 0x05, 0x92, 7297 0x01, 0x02, 0x10, 0x05, 0x52, 0x15, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 7298 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x0a, 0x70, 7299 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 7300 0x2a, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 7301 0x6f, 0x72, 0x65, 0x2e, 0x76, 0x33, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 7302 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x70, 0x72, 0x65, 7303 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x12, 0x3d, 0x0a, 0x1b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 7304 0x5f, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x5f, 0x72, 0x65, 7305 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x61, 0x6c, 7306 0x6c, 0x6f, 0x77, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x52, 0x65, 7307 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x22, 0x5d, 0x0a, 0x0c, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 7308 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2c, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 7309 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 7310 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x06, 0x63, 0x6f, 7311 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 7312 0x6e, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x4f, 0x70, 0x74, 7313 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x45, 0x0a, 0x23, 0x69, 0x6f, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 7314 0x79, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x63, 0x6f, 0x6e, 7315 0x66, 0x69, 0x67, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x2e, 0x76, 0x33, 0x42, 0x14, 0x52, 0x6f, 7316 0x75, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x50, 0x72, 0x6f, 7317 0x74, 0x6f, 0x50, 0x01, 0xba, 0x80, 0xc8, 0xd1, 0x06, 0x02, 0x10, 0x02, 0x62, 0x06, 0x70, 0x72, 7318 0x6f, 0x74, 0x6f, 0x33, 7319 } 7320 7321 var ( 7322 file_envoy_config_route_v3_route_components_proto_rawDescOnce sync.Once 7323 file_envoy_config_route_v3_route_components_proto_rawDescData = file_envoy_config_route_v3_route_components_proto_rawDesc 7324 ) 7325 7326 func file_envoy_config_route_v3_route_components_proto_rawDescGZIP() []byte { 7327 file_envoy_config_route_v3_route_components_proto_rawDescOnce.Do(func() { 7328 file_envoy_config_route_v3_route_components_proto_rawDescData = protoimpl.X.CompressGZIP(file_envoy_config_route_v3_route_components_proto_rawDescData) 7329 }) 7330 return file_envoy_config_route_v3_route_components_proto_rawDescData 7331 } 7332 7333 var file_envoy_config_route_v3_route_components_proto_enumTypes = make([]protoimpl.EnumInfo, 6) 7334 var file_envoy_config_route_v3_route_components_proto_msgTypes = make([]protoimpl.MessageInfo, 56) 7335 var file_envoy_config_route_v3_route_components_proto_goTypes = []interface{}{ 7336 (VirtualHost_TlsRequirementType)(0), // 0: envoy.config.route.v3.VirtualHost.TlsRequirementType 7337 (RouteAction_ClusterNotFoundResponseCode)(0), // 1: envoy.config.route.v3.RouteAction.ClusterNotFoundResponseCode 7338 (RouteAction_InternalRedirectAction)(0), // 2: envoy.config.route.v3.RouteAction.InternalRedirectAction 7339 (RetryPolicy_ResetHeaderFormat)(0), // 3: envoy.config.route.v3.RetryPolicy.ResetHeaderFormat 7340 (RedirectAction_RedirectResponseCode)(0), // 4: envoy.config.route.v3.RedirectAction.RedirectResponseCode 7341 (RateLimit_Action_MetaData_Source)(0), // 5: envoy.config.route.v3.RateLimit.Action.MetaData.Source 7342 (*VirtualHost)(nil), // 6: envoy.config.route.v3.VirtualHost 7343 (*FilterAction)(nil), // 7: envoy.config.route.v3.FilterAction 7344 (*Route)(nil), // 8: envoy.config.route.v3.Route 7345 (*WeightedCluster)(nil), // 9: envoy.config.route.v3.WeightedCluster 7346 (*RouteMatch)(nil), // 10: envoy.config.route.v3.RouteMatch 7347 (*CorsPolicy)(nil), // 11: envoy.config.route.v3.CorsPolicy 7348 (*RouteAction)(nil), // 12: envoy.config.route.v3.RouteAction 7349 (*RetryPolicy)(nil), // 13: envoy.config.route.v3.RetryPolicy 7350 (*HedgePolicy)(nil), // 14: envoy.config.route.v3.HedgePolicy 7351 (*RedirectAction)(nil), // 15: envoy.config.route.v3.RedirectAction 7352 (*DirectResponseAction)(nil), // 16: envoy.config.route.v3.DirectResponseAction 7353 (*NonForwardingAction)(nil), // 17: envoy.config.route.v3.NonForwardingAction 7354 (*Decorator)(nil), // 18: envoy.config.route.v3.Decorator 7355 (*Tracing)(nil), // 19: envoy.config.route.v3.Tracing 7356 (*VirtualCluster)(nil), // 20: envoy.config.route.v3.VirtualCluster 7357 (*RateLimit)(nil), // 21: envoy.config.route.v3.RateLimit 7358 (*HeaderMatcher)(nil), // 22: envoy.config.route.v3.HeaderMatcher 7359 (*QueryParameterMatcher)(nil), // 23: envoy.config.route.v3.QueryParameterMatcher 7360 (*InternalRedirectPolicy)(nil), // 24: envoy.config.route.v3.InternalRedirectPolicy 7361 (*FilterConfig)(nil), // 25: envoy.config.route.v3.FilterConfig 7362 nil, // 26: envoy.config.route.v3.VirtualHost.TypedPerFilterConfigEntry 7363 nil, // 27: envoy.config.route.v3.VirtualHost.HiddenEnvoyDeprecatedPerFilterConfigEntry 7364 nil, // 28: envoy.config.route.v3.Route.TypedPerFilterConfigEntry 7365 nil, // 29: envoy.config.route.v3.Route.HiddenEnvoyDeprecatedPerFilterConfigEntry 7366 (*WeightedCluster_ClusterWeight)(nil), // 30: envoy.config.route.v3.WeightedCluster.ClusterWeight 7367 nil, // 31: envoy.config.route.v3.WeightedCluster.ClusterWeight.TypedPerFilterConfigEntry 7368 nil, // 32: envoy.config.route.v3.WeightedCluster.ClusterWeight.HiddenEnvoyDeprecatedPerFilterConfigEntry 7369 (*RouteMatch_GrpcRouteMatchOptions)(nil), // 33: envoy.config.route.v3.RouteMatch.GrpcRouteMatchOptions 7370 (*RouteMatch_TlsContextMatchOptions)(nil), // 34: envoy.config.route.v3.RouteMatch.TlsContextMatchOptions 7371 (*RouteMatch_ConnectMatcher)(nil), // 35: envoy.config.route.v3.RouteMatch.ConnectMatcher 7372 (*RouteAction_RequestMirrorPolicy)(nil), // 36: envoy.config.route.v3.RouteAction.RequestMirrorPolicy 7373 (*RouteAction_HashPolicy)(nil), // 37: envoy.config.route.v3.RouteAction.HashPolicy 7374 (*RouteAction_UpgradeConfig)(nil), // 38: envoy.config.route.v3.RouteAction.UpgradeConfig 7375 (*RouteAction_MaxStreamDuration)(nil), // 39: envoy.config.route.v3.RouteAction.MaxStreamDuration 7376 (*RouteAction_HashPolicy_Header)(nil), // 40: envoy.config.route.v3.RouteAction.HashPolicy.Header 7377 (*RouteAction_HashPolicy_Cookie)(nil), // 41: envoy.config.route.v3.RouteAction.HashPolicy.Cookie 7378 (*RouteAction_HashPolicy_ConnectionProperties)(nil), // 42: envoy.config.route.v3.RouteAction.HashPolicy.ConnectionProperties 7379 (*RouteAction_HashPolicy_QueryParameter)(nil), // 43: envoy.config.route.v3.RouteAction.HashPolicy.QueryParameter 7380 (*RouteAction_HashPolicy_FilterState)(nil), // 44: envoy.config.route.v3.RouteAction.HashPolicy.FilterState 7381 (*RouteAction_UpgradeConfig_ConnectConfig)(nil), // 45: envoy.config.route.v3.RouteAction.UpgradeConfig.ConnectConfig 7382 (*RetryPolicy_RetryPriority)(nil), // 46: envoy.config.route.v3.RetryPolicy.RetryPriority 7383 (*RetryPolicy_RetryHostPredicate)(nil), // 47: envoy.config.route.v3.RetryPolicy.RetryHostPredicate 7384 (*RetryPolicy_RetryBackOff)(nil), // 48: envoy.config.route.v3.RetryPolicy.RetryBackOff 7385 (*RetryPolicy_ResetHeader)(nil), // 49: envoy.config.route.v3.RetryPolicy.ResetHeader 7386 (*RetryPolicy_RateLimitedRetryBackOff)(nil), // 50: envoy.config.route.v3.RetryPolicy.RateLimitedRetryBackOff 7387 (*RateLimit_Action)(nil), // 51: envoy.config.route.v3.RateLimit.Action 7388 (*RateLimit_Override)(nil), // 52: envoy.config.route.v3.RateLimit.Override 7389 (*RateLimit_Action_SourceCluster)(nil), // 53: envoy.config.route.v3.RateLimit.Action.SourceCluster 7390 (*RateLimit_Action_DestinationCluster)(nil), // 54: envoy.config.route.v3.RateLimit.Action.DestinationCluster 7391 (*RateLimit_Action_RequestHeaders)(nil), // 55: envoy.config.route.v3.RateLimit.Action.RequestHeaders 7392 (*RateLimit_Action_RemoteAddress)(nil), // 56: envoy.config.route.v3.RateLimit.Action.RemoteAddress 7393 (*RateLimit_Action_GenericKey)(nil), // 57: envoy.config.route.v3.RateLimit.Action.GenericKey 7394 (*RateLimit_Action_HeaderValueMatch)(nil), // 58: envoy.config.route.v3.RateLimit.Action.HeaderValueMatch 7395 (*RateLimit_Action_DynamicMetaData)(nil), // 59: envoy.config.route.v3.RateLimit.Action.DynamicMetaData 7396 (*RateLimit_Action_MetaData)(nil), // 60: envoy.config.route.v3.RateLimit.Action.MetaData 7397 (*RateLimit_Override_DynamicMetadata)(nil), // 61: envoy.config.route.v3.RateLimit.Override.DynamicMetadata 7398 (*v3.HeaderValueOption)(nil), // 62: envoy.config.core.v3.HeaderValueOption 7399 (*any.Any)(nil), // 63: google.protobuf.Any 7400 (*wrappers.UInt32Value)(nil), // 64: google.protobuf.UInt32Value 7401 (*v3.Metadata)(nil), // 65: envoy.config.core.v3.Metadata 7402 (*v31.RegexMatcher)(nil), // 66: envoy.type.matcher.v3.RegexMatcher 7403 (*wrappers.BoolValue)(nil), // 67: google.protobuf.BoolValue 7404 (*v3.RuntimeFractionalPercent)(nil), // 68: envoy.config.core.v3.RuntimeFractionalPercent 7405 (*v31.MetadataMatcher)(nil), // 69: envoy.type.matcher.v3.MetadataMatcher 7406 (*v31.StringMatcher)(nil), // 70: envoy.type.matcher.v3.StringMatcher 7407 (*v31.RegexMatchAndSubstitute)(nil), // 71: envoy.type.matcher.v3.RegexMatchAndSubstitute 7408 (*duration.Duration)(nil), // 72: google.protobuf.Duration 7409 (v3.RoutingPriority)(0), // 73: envoy.config.core.v3.RoutingPriority 7410 (*v32.FractionalPercent)(nil), // 74: envoy.type.v3.FractionalPercent 7411 (*v3.DataSource)(nil), // 75: envoy.config.core.v3.DataSource 7412 (*v33.CustomTag)(nil), // 76: envoy.type.tracing.v3.CustomTag 7413 (v3.RequestMethod)(0), // 77: envoy.config.core.v3.RequestMethod 7414 (*v32.Int64Range)(nil), // 78: envoy.type.v3.Int64Range 7415 (*v3.TypedExtensionConfig)(nil), // 79: envoy.config.core.v3.TypedExtensionConfig 7416 (*_struct.Struct)(nil), // 80: google.protobuf.Struct 7417 (*v3.ProxyProtocolConfig)(nil), // 81: envoy.config.core.v3.ProxyProtocolConfig 7418 (*v34.MetadataKey)(nil), // 82: envoy.type.metadata.v3.MetadataKey 7419 } 7420 var file_envoy_config_route_v3_route_components_proto_depIdxs = []int32{ 7421 8, // 0: envoy.config.route.v3.VirtualHost.routes:type_name -> envoy.config.route.v3.Route 7422 0, // 1: envoy.config.route.v3.VirtualHost.require_tls:type_name -> envoy.config.route.v3.VirtualHost.TlsRequirementType 7423 20, // 2: envoy.config.route.v3.VirtualHost.virtual_clusters:type_name -> envoy.config.route.v3.VirtualCluster 7424 21, // 3: envoy.config.route.v3.VirtualHost.rate_limits:type_name -> envoy.config.route.v3.RateLimit 7425 62, // 4: envoy.config.route.v3.VirtualHost.request_headers_to_add:type_name -> envoy.config.core.v3.HeaderValueOption 7426 62, // 5: envoy.config.route.v3.VirtualHost.response_headers_to_add:type_name -> envoy.config.core.v3.HeaderValueOption 7427 11, // 6: envoy.config.route.v3.VirtualHost.cors:type_name -> envoy.config.route.v3.CorsPolicy 7428 26, // 7: envoy.config.route.v3.VirtualHost.typed_per_filter_config:type_name -> envoy.config.route.v3.VirtualHost.TypedPerFilterConfigEntry 7429 13, // 8: envoy.config.route.v3.VirtualHost.retry_policy:type_name -> envoy.config.route.v3.RetryPolicy 7430 63, // 9: envoy.config.route.v3.VirtualHost.retry_policy_typed_config:type_name -> google.protobuf.Any 7431 14, // 10: envoy.config.route.v3.VirtualHost.hedge_policy:type_name -> envoy.config.route.v3.HedgePolicy 7432 64, // 11: envoy.config.route.v3.VirtualHost.per_request_buffer_limit_bytes:type_name -> google.protobuf.UInt32Value 7433 27, // 12: envoy.config.route.v3.VirtualHost.hidden_envoy_deprecated_per_filter_config:type_name -> envoy.config.route.v3.VirtualHost.HiddenEnvoyDeprecatedPerFilterConfigEntry 7434 63, // 13: envoy.config.route.v3.FilterAction.action:type_name -> google.protobuf.Any 7435 10, // 14: envoy.config.route.v3.Route.match:type_name -> envoy.config.route.v3.RouteMatch 7436 12, // 15: envoy.config.route.v3.Route.route:type_name -> envoy.config.route.v3.RouteAction 7437 15, // 16: envoy.config.route.v3.Route.redirect:type_name -> envoy.config.route.v3.RedirectAction 7438 16, // 17: envoy.config.route.v3.Route.direct_response:type_name -> envoy.config.route.v3.DirectResponseAction 7439 7, // 18: envoy.config.route.v3.Route.filter_action:type_name -> envoy.config.route.v3.FilterAction 7440 17, // 19: envoy.config.route.v3.Route.non_forwarding_action:type_name -> envoy.config.route.v3.NonForwardingAction 7441 65, // 20: envoy.config.route.v3.Route.metadata:type_name -> envoy.config.core.v3.Metadata 7442 18, // 21: envoy.config.route.v3.Route.decorator:type_name -> envoy.config.route.v3.Decorator 7443 28, // 22: envoy.config.route.v3.Route.typed_per_filter_config:type_name -> envoy.config.route.v3.Route.TypedPerFilterConfigEntry 7444 62, // 23: envoy.config.route.v3.Route.request_headers_to_add:type_name -> envoy.config.core.v3.HeaderValueOption 7445 62, // 24: envoy.config.route.v3.Route.response_headers_to_add:type_name -> envoy.config.core.v3.HeaderValueOption 7446 19, // 25: envoy.config.route.v3.Route.tracing:type_name -> envoy.config.route.v3.Tracing 7447 64, // 26: envoy.config.route.v3.Route.per_request_buffer_limit_bytes:type_name -> google.protobuf.UInt32Value 7448 29, // 27: envoy.config.route.v3.Route.hidden_envoy_deprecated_per_filter_config:type_name -> envoy.config.route.v3.Route.HiddenEnvoyDeprecatedPerFilterConfigEntry 7449 30, // 28: envoy.config.route.v3.WeightedCluster.clusters:type_name -> envoy.config.route.v3.WeightedCluster.ClusterWeight 7450 64, // 29: envoy.config.route.v3.WeightedCluster.total_weight:type_name -> google.protobuf.UInt32Value 7451 66, // 30: envoy.config.route.v3.RouteMatch.safe_regex:type_name -> envoy.type.matcher.v3.RegexMatcher 7452 35, // 31: envoy.config.route.v3.RouteMatch.connect_matcher:type_name -> envoy.config.route.v3.RouteMatch.ConnectMatcher 7453 67, // 32: envoy.config.route.v3.RouteMatch.case_sensitive:type_name -> google.protobuf.BoolValue 7454 68, // 33: envoy.config.route.v3.RouteMatch.runtime_fraction:type_name -> envoy.config.core.v3.RuntimeFractionalPercent 7455 22, // 34: envoy.config.route.v3.RouteMatch.headers:type_name -> envoy.config.route.v3.HeaderMatcher 7456 23, // 35: envoy.config.route.v3.RouteMatch.query_parameters:type_name -> envoy.config.route.v3.QueryParameterMatcher 7457 33, // 36: envoy.config.route.v3.RouteMatch.grpc:type_name -> envoy.config.route.v3.RouteMatch.GrpcRouteMatchOptions 7458 34, // 37: envoy.config.route.v3.RouteMatch.tls_context:type_name -> envoy.config.route.v3.RouteMatch.TlsContextMatchOptions 7459 69, // 38: envoy.config.route.v3.RouteMatch.dynamic_metadata:type_name -> envoy.type.matcher.v3.MetadataMatcher 7460 70, // 39: envoy.config.route.v3.CorsPolicy.allow_origin_string_match:type_name -> envoy.type.matcher.v3.StringMatcher 7461 67, // 40: envoy.config.route.v3.CorsPolicy.allow_credentials:type_name -> google.protobuf.BoolValue 7462 68, // 41: envoy.config.route.v3.CorsPolicy.filter_enabled:type_name -> envoy.config.core.v3.RuntimeFractionalPercent 7463 67, // 42: envoy.config.route.v3.CorsPolicy.hidden_envoy_deprecated_enabled:type_name -> google.protobuf.BoolValue 7464 68, // 43: envoy.config.route.v3.CorsPolicy.shadow_enabled:type_name -> envoy.config.core.v3.RuntimeFractionalPercent 7465 9, // 44: envoy.config.route.v3.RouteAction.weighted_clusters:type_name -> envoy.config.route.v3.WeightedCluster 7466 1, // 45: envoy.config.route.v3.RouteAction.cluster_not_found_response_code:type_name -> envoy.config.route.v3.RouteAction.ClusterNotFoundResponseCode 7467 65, // 46: envoy.config.route.v3.RouteAction.metadata_match:type_name -> envoy.config.core.v3.Metadata 7468 71, // 47: envoy.config.route.v3.RouteAction.regex_rewrite:type_name -> envoy.type.matcher.v3.RegexMatchAndSubstitute 7469 67, // 48: envoy.config.route.v3.RouteAction.auto_host_rewrite:type_name -> google.protobuf.BoolValue 7470 71, // 49: envoy.config.route.v3.RouteAction.host_rewrite_path_regex:type_name -> envoy.type.matcher.v3.RegexMatchAndSubstitute 7471 72, // 50: envoy.config.route.v3.RouteAction.timeout:type_name -> google.protobuf.Duration 7472 72, // 51: envoy.config.route.v3.RouteAction.idle_timeout:type_name -> google.protobuf.Duration 7473 13, // 52: envoy.config.route.v3.RouteAction.retry_policy:type_name -> envoy.config.route.v3.RetryPolicy 7474 63, // 53: envoy.config.route.v3.RouteAction.retry_policy_typed_config:type_name -> google.protobuf.Any 7475 36, // 54: envoy.config.route.v3.RouteAction.request_mirror_policies:type_name -> envoy.config.route.v3.RouteAction.RequestMirrorPolicy 7476 73, // 55: envoy.config.route.v3.RouteAction.priority:type_name -> envoy.config.core.v3.RoutingPriority 7477 21, // 56: envoy.config.route.v3.RouteAction.rate_limits:type_name -> envoy.config.route.v3.RateLimit 7478 67, // 57: envoy.config.route.v3.RouteAction.include_vh_rate_limits:type_name -> google.protobuf.BoolValue 7479 37, // 58: envoy.config.route.v3.RouteAction.hash_policy:type_name -> envoy.config.route.v3.RouteAction.HashPolicy 7480 11, // 59: envoy.config.route.v3.RouteAction.cors:type_name -> envoy.config.route.v3.CorsPolicy 7481 72, // 60: envoy.config.route.v3.RouteAction.max_grpc_timeout:type_name -> google.protobuf.Duration 7482 72, // 61: envoy.config.route.v3.RouteAction.grpc_timeout_offset:type_name -> google.protobuf.Duration 7483 38, // 62: envoy.config.route.v3.RouteAction.upgrade_configs:type_name -> envoy.config.route.v3.RouteAction.UpgradeConfig 7484 24, // 63: envoy.config.route.v3.RouteAction.internal_redirect_policy:type_name -> envoy.config.route.v3.InternalRedirectPolicy 7485 2, // 64: envoy.config.route.v3.RouteAction.internal_redirect_action:type_name -> envoy.config.route.v3.RouteAction.InternalRedirectAction 7486 64, // 65: envoy.config.route.v3.RouteAction.max_internal_redirects:type_name -> google.protobuf.UInt32Value 7487 14, // 66: envoy.config.route.v3.RouteAction.hedge_policy:type_name -> envoy.config.route.v3.HedgePolicy 7488 39, // 67: envoy.config.route.v3.RouteAction.max_stream_duration:type_name -> envoy.config.route.v3.RouteAction.MaxStreamDuration 7489 36, // 68: envoy.config.route.v3.RouteAction.hidden_envoy_deprecated_request_mirror_policy:type_name -> envoy.config.route.v3.RouteAction.RequestMirrorPolicy 7490 64, // 69: envoy.config.route.v3.RetryPolicy.num_retries:type_name -> google.protobuf.UInt32Value 7491 72, // 70: envoy.config.route.v3.RetryPolicy.per_try_timeout:type_name -> google.protobuf.Duration 7492 46, // 71: envoy.config.route.v3.RetryPolicy.retry_priority:type_name -> envoy.config.route.v3.RetryPolicy.RetryPriority 7493 47, // 72: envoy.config.route.v3.RetryPolicy.retry_host_predicate:type_name -> envoy.config.route.v3.RetryPolicy.RetryHostPredicate 7494 48, // 73: envoy.config.route.v3.RetryPolicy.retry_back_off:type_name -> envoy.config.route.v3.RetryPolicy.RetryBackOff 7495 50, // 74: envoy.config.route.v3.RetryPolicy.rate_limited_retry_back_off:type_name -> envoy.config.route.v3.RetryPolicy.RateLimitedRetryBackOff 7496 22, // 75: envoy.config.route.v3.RetryPolicy.retriable_headers:type_name -> envoy.config.route.v3.HeaderMatcher 7497 22, // 76: envoy.config.route.v3.RetryPolicy.retriable_request_headers:type_name -> envoy.config.route.v3.HeaderMatcher 7498 64, // 77: envoy.config.route.v3.HedgePolicy.initial_requests:type_name -> google.protobuf.UInt32Value 7499 74, // 78: envoy.config.route.v3.HedgePolicy.additional_request_chance:type_name -> envoy.type.v3.FractionalPercent 7500 71, // 79: envoy.config.route.v3.RedirectAction.regex_rewrite:type_name -> envoy.type.matcher.v3.RegexMatchAndSubstitute 7501 4, // 80: envoy.config.route.v3.RedirectAction.response_code:type_name -> envoy.config.route.v3.RedirectAction.RedirectResponseCode 7502 75, // 81: envoy.config.route.v3.DirectResponseAction.body:type_name -> envoy.config.core.v3.DataSource 7503 67, // 82: envoy.config.route.v3.Decorator.propagate:type_name -> google.protobuf.BoolValue 7504 74, // 83: envoy.config.route.v3.Tracing.client_sampling:type_name -> envoy.type.v3.FractionalPercent 7505 74, // 84: envoy.config.route.v3.Tracing.random_sampling:type_name -> envoy.type.v3.FractionalPercent 7506 74, // 85: envoy.config.route.v3.Tracing.overall_sampling:type_name -> envoy.type.v3.FractionalPercent 7507 76, // 86: envoy.config.route.v3.Tracing.custom_tags:type_name -> envoy.type.tracing.v3.CustomTag 7508 22, // 87: envoy.config.route.v3.VirtualCluster.headers:type_name -> envoy.config.route.v3.HeaderMatcher 7509 77, // 88: envoy.config.route.v3.VirtualCluster.hidden_envoy_deprecated_method:type_name -> envoy.config.core.v3.RequestMethod 7510 64, // 89: envoy.config.route.v3.RateLimit.stage:type_name -> google.protobuf.UInt32Value 7511 51, // 90: envoy.config.route.v3.RateLimit.actions:type_name -> envoy.config.route.v3.RateLimit.Action 7512 52, // 91: envoy.config.route.v3.RateLimit.limit:type_name -> envoy.config.route.v3.RateLimit.Override 7513 66, // 92: envoy.config.route.v3.HeaderMatcher.safe_regex_match:type_name -> envoy.type.matcher.v3.RegexMatcher 7514 78, // 93: envoy.config.route.v3.HeaderMatcher.range_match:type_name -> envoy.type.v3.Int64Range 7515 70, // 94: envoy.config.route.v3.HeaderMatcher.string_match:type_name -> envoy.type.matcher.v3.StringMatcher 7516 70, // 95: envoy.config.route.v3.QueryParameterMatcher.string_match:type_name -> envoy.type.matcher.v3.StringMatcher 7517 67, // 96: envoy.config.route.v3.QueryParameterMatcher.hidden_envoy_deprecated_regex:type_name -> google.protobuf.BoolValue 7518 64, // 97: envoy.config.route.v3.InternalRedirectPolicy.max_internal_redirects:type_name -> google.protobuf.UInt32Value 7519 79, // 98: envoy.config.route.v3.InternalRedirectPolicy.predicates:type_name -> envoy.config.core.v3.TypedExtensionConfig 7520 63, // 99: envoy.config.route.v3.FilterConfig.config:type_name -> google.protobuf.Any 7521 63, // 100: envoy.config.route.v3.VirtualHost.TypedPerFilterConfigEntry.value:type_name -> google.protobuf.Any 7522 80, // 101: envoy.config.route.v3.VirtualHost.HiddenEnvoyDeprecatedPerFilterConfigEntry.value:type_name -> google.protobuf.Struct 7523 63, // 102: envoy.config.route.v3.Route.TypedPerFilterConfigEntry.value:type_name -> google.protobuf.Any 7524 80, // 103: envoy.config.route.v3.Route.HiddenEnvoyDeprecatedPerFilterConfigEntry.value:type_name -> google.protobuf.Struct 7525 64, // 104: envoy.config.route.v3.WeightedCluster.ClusterWeight.weight:type_name -> google.protobuf.UInt32Value 7526 65, // 105: envoy.config.route.v3.WeightedCluster.ClusterWeight.metadata_match:type_name -> envoy.config.core.v3.Metadata 7527 62, // 106: envoy.config.route.v3.WeightedCluster.ClusterWeight.request_headers_to_add:type_name -> envoy.config.core.v3.HeaderValueOption 7528 62, // 107: envoy.config.route.v3.WeightedCluster.ClusterWeight.response_headers_to_add:type_name -> envoy.config.core.v3.HeaderValueOption 7529 31, // 108: envoy.config.route.v3.WeightedCluster.ClusterWeight.typed_per_filter_config:type_name -> envoy.config.route.v3.WeightedCluster.ClusterWeight.TypedPerFilterConfigEntry 7530 32, // 109: envoy.config.route.v3.WeightedCluster.ClusterWeight.hidden_envoy_deprecated_per_filter_config:type_name -> envoy.config.route.v3.WeightedCluster.ClusterWeight.HiddenEnvoyDeprecatedPerFilterConfigEntry 7531 63, // 110: envoy.config.route.v3.WeightedCluster.ClusterWeight.TypedPerFilterConfigEntry.value:type_name -> google.protobuf.Any 7532 80, // 111: envoy.config.route.v3.WeightedCluster.ClusterWeight.HiddenEnvoyDeprecatedPerFilterConfigEntry.value:type_name -> google.protobuf.Struct 7533 67, // 112: envoy.config.route.v3.RouteMatch.TlsContextMatchOptions.presented:type_name -> google.protobuf.BoolValue 7534 67, // 113: envoy.config.route.v3.RouteMatch.TlsContextMatchOptions.validated:type_name -> google.protobuf.BoolValue 7535 68, // 114: envoy.config.route.v3.RouteAction.RequestMirrorPolicy.runtime_fraction:type_name -> envoy.config.core.v3.RuntimeFractionalPercent 7536 67, // 115: envoy.config.route.v3.RouteAction.RequestMirrorPolicy.trace_sampled:type_name -> google.protobuf.BoolValue 7537 40, // 116: envoy.config.route.v3.RouteAction.HashPolicy.header:type_name -> envoy.config.route.v3.RouteAction.HashPolicy.Header 7538 41, // 117: envoy.config.route.v3.RouteAction.HashPolicy.cookie:type_name -> envoy.config.route.v3.RouteAction.HashPolicy.Cookie 7539 42, // 118: envoy.config.route.v3.RouteAction.HashPolicy.connection_properties:type_name -> envoy.config.route.v3.RouteAction.HashPolicy.ConnectionProperties 7540 43, // 119: envoy.config.route.v3.RouteAction.HashPolicy.query_parameter:type_name -> envoy.config.route.v3.RouteAction.HashPolicy.QueryParameter 7541 44, // 120: envoy.config.route.v3.RouteAction.HashPolicy.filter_state:type_name -> envoy.config.route.v3.RouteAction.HashPolicy.FilterState 7542 67, // 121: envoy.config.route.v3.RouteAction.UpgradeConfig.enabled:type_name -> google.protobuf.BoolValue 7543 45, // 122: envoy.config.route.v3.RouteAction.UpgradeConfig.connect_config:type_name -> envoy.config.route.v3.RouteAction.UpgradeConfig.ConnectConfig 7544 72, // 123: envoy.config.route.v3.RouteAction.MaxStreamDuration.max_stream_duration:type_name -> google.protobuf.Duration 7545 72, // 124: envoy.config.route.v3.RouteAction.MaxStreamDuration.grpc_timeout_header_max:type_name -> google.protobuf.Duration 7546 72, // 125: envoy.config.route.v3.RouteAction.MaxStreamDuration.grpc_timeout_header_offset:type_name -> google.protobuf.Duration 7547 71, // 126: envoy.config.route.v3.RouteAction.HashPolicy.Header.regex_rewrite:type_name -> envoy.type.matcher.v3.RegexMatchAndSubstitute 7548 72, // 127: envoy.config.route.v3.RouteAction.HashPolicy.Cookie.ttl:type_name -> google.protobuf.Duration 7549 81, // 128: envoy.config.route.v3.RouteAction.UpgradeConfig.ConnectConfig.proxy_protocol_config:type_name -> envoy.config.core.v3.ProxyProtocolConfig 7550 63, // 129: envoy.config.route.v3.RetryPolicy.RetryPriority.typed_config:type_name -> google.protobuf.Any 7551 80, // 130: envoy.config.route.v3.RetryPolicy.RetryPriority.hidden_envoy_deprecated_config:type_name -> google.protobuf.Struct 7552 63, // 131: envoy.config.route.v3.RetryPolicy.RetryHostPredicate.typed_config:type_name -> google.protobuf.Any 7553 80, // 132: envoy.config.route.v3.RetryPolicy.RetryHostPredicate.hidden_envoy_deprecated_config:type_name -> google.protobuf.Struct 7554 72, // 133: envoy.config.route.v3.RetryPolicy.RetryBackOff.base_interval:type_name -> google.protobuf.Duration 7555 72, // 134: envoy.config.route.v3.RetryPolicy.RetryBackOff.max_interval:type_name -> google.protobuf.Duration 7556 3, // 135: envoy.config.route.v3.RetryPolicy.ResetHeader.format:type_name -> envoy.config.route.v3.RetryPolicy.ResetHeaderFormat 7557 49, // 136: envoy.config.route.v3.RetryPolicy.RateLimitedRetryBackOff.reset_headers:type_name -> envoy.config.route.v3.RetryPolicy.ResetHeader 7558 72, // 137: envoy.config.route.v3.RetryPolicy.RateLimitedRetryBackOff.max_interval:type_name -> google.protobuf.Duration 7559 53, // 138: envoy.config.route.v3.RateLimit.Action.source_cluster:type_name -> envoy.config.route.v3.RateLimit.Action.SourceCluster 7560 54, // 139: envoy.config.route.v3.RateLimit.Action.destination_cluster:type_name -> envoy.config.route.v3.RateLimit.Action.DestinationCluster 7561 55, // 140: envoy.config.route.v3.RateLimit.Action.request_headers:type_name -> envoy.config.route.v3.RateLimit.Action.RequestHeaders 7562 56, // 141: envoy.config.route.v3.RateLimit.Action.remote_address:type_name -> envoy.config.route.v3.RateLimit.Action.RemoteAddress 7563 57, // 142: envoy.config.route.v3.RateLimit.Action.generic_key:type_name -> envoy.config.route.v3.RateLimit.Action.GenericKey 7564 58, // 143: envoy.config.route.v3.RateLimit.Action.header_value_match:type_name -> envoy.config.route.v3.RateLimit.Action.HeaderValueMatch 7565 59, // 144: envoy.config.route.v3.RateLimit.Action.dynamic_metadata:type_name -> envoy.config.route.v3.RateLimit.Action.DynamicMetaData 7566 60, // 145: envoy.config.route.v3.RateLimit.Action.metadata:type_name -> envoy.config.route.v3.RateLimit.Action.MetaData 7567 79, // 146: envoy.config.route.v3.RateLimit.Action.extension:type_name -> envoy.config.core.v3.TypedExtensionConfig 7568 61, // 147: envoy.config.route.v3.RateLimit.Override.dynamic_metadata:type_name -> envoy.config.route.v3.RateLimit.Override.DynamicMetadata 7569 67, // 148: envoy.config.route.v3.RateLimit.Action.HeaderValueMatch.expect_match:type_name -> google.protobuf.BoolValue 7570 22, // 149: envoy.config.route.v3.RateLimit.Action.HeaderValueMatch.headers:type_name -> envoy.config.route.v3.HeaderMatcher 7571 82, // 150: envoy.config.route.v3.RateLimit.Action.DynamicMetaData.metadata_key:type_name -> envoy.type.metadata.v3.MetadataKey 7572 82, // 151: envoy.config.route.v3.RateLimit.Action.MetaData.metadata_key:type_name -> envoy.type.metadata.v3.MetadataKey 7573 5, // 152: envoy.config.route.v3.RateLimit.Action.MetaData.source:type_name -> envoy.config.route.v3.RateLimit.Action.MetaData.Source 7574 82, // 153: envoy.config.route.v3.RateLimit.Override.DynamicMetadata.metadata_key:type_name -> envoy.type.metadata.v3.MetadataKey 7575 154, // [154:154] is the sub-list for method output_type 7576 154, // [154:154] is the sub-list for method input_type 7577 154, // [154:154] is the sub-list for extension type_name 7578 154, // [154:154] is the sub-list for extension extendee 7579 0, // [0:154] is the sub-list for field type_name 7580 } 7581 7582 func init() { file_envoy_config_route_v3_route_components_proto_init() } 7583 func file_envoy_config_route_v3_route_components_proto_init() { 7584 if File_envoy_config_route_v3_route_components_proto != nil { 7585 return 7586 } 7587 if !protoimpl.UnsafeEnabled { 7588 file_envoy_config_route_v3_route_components_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { 7589 switch v := v.(*VirtualHost); i { 7590 case 0: 7591 return &v.state 7592 case 1: 7593 return &v.sizeCache 7594 case 2: 7595 return &v.unknownFields 7596 default: 7597 return nil 7598 } 7599 } 7600 file_envoy_config_route_v3_route_components_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { 7601 switch v := v.(*FilterAction); i { 7602 case 0: 7603 return &v.state 7604 case 1: 7605 return &v.sizeCache 7606 case 2: 7607 return &v.unknownFields 7608 default: 7609 return nil 7610 } 7611 } 7612 file_envoy_config_route_v3_route_components_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { 7613 switch v := v.(*Route); i { 7614 case 0: 7615 return &v.state 7616 case 1: 7617 return &v.sizeCache 7618 case 2: 7619 return &v.unknownFields 7620 default: 7621 return nil 7622 } 7623 } 7624 file_envoy_config_route_v3_route_components_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { 7625 switch v := v.(*WeightedCluster); i { 7626 case 0: 7627 return &v.state 7628 case 1: 7629 return &v.sizeCache 7630 case 2: 7631 return &v.unknownFields 7632 default: 7633 return nil 7634 } 7635 } 7636 file_envoy_config_route_v3_route_components_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { 7637 switch v := v.(*RouteMatch); i { 7638 case 0: 7639 return &v.state 7640 case 1: 7641 return &v.sizeCache 7642 case 2: 7643 return &v.unknownFields 7644 default: 7645 return nil 7646 } 7647 } 7648 file_envoy_config_route_v3_route_components_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { 7649 switch v := v.(*CorsPolicy); i { 7650 case 0: 7651 return &v.state 7652 case 1: 7653 return &v.sizeCache 7654 case 2: 7655 return &v.unknownFields 7656 default: 7657 return nil 7658 } 7659 } 7660 file_envoy_config_route_v3_route_components_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { 7661 switch v := v.(*RouteAction); i { 7662 case 0: 7663 return &v.state 7664 case 1: 7665 return &v.sizeCache 7666 case 2: 7667 return &v.unknownFields 7668 default: 7669 return nil 7670 } 7671 } 7672 file_envoy_config_route_v3_route_components_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { 7673 switch v := v.(*RetryPolicy); i { 7674 case 0: 7675 return &v.state 7676 case 1: 7677 return &v.sizeCache 7678 case 2: 7679 return &v.unknownFields 7680 default: 7681 return nil 7682 } 7683 } 7684 file_envoy_config_route_v3_route_components_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { 7685 switch v := v.(*HedgePolicy); i { 7686 case 0: 7687 return &v.state 7688 case 1: 7689 return &v.sizeCache 7690 case 2: 7691 return &v.unknownFields 7692 default: 7693 return nil 7694 } 7695 } 7696 file_envoy_config_route_v3_route_components_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { 7697 switch v := v.(*RedirectAction); i { 7698 case 0: 7699 return &v.state 7700 case 1: 7701 return &v.sizeCache 7702 case 2: 7703 return &v.unknownFields 7704 default: 7705 return nil 7706 } 7707 } 7708 file_envoy_config_route_v3_route_components_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { 7709 switch v := v.(*DirectResponseAction); i { 7710 case 0: 7711 return &v.state 7712 case 1: 7713 return &v.sizeCache 7714 case 2: 7715 return &v.unknownFields 7716 default: 7717 return nil 7718 } 7719 } 7720 file_envoy_config_route_v3_route_components_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { 7721 switch v := v.(*NonForwardingAction); i { 7722 case 0: 7723 return &v.state 7724 case 1: 7725 return &v.sizeCache 7726 case 2: 7727 return &v.unknownFields 7728 default: 7729 return nil 7730 } 7731 } 7732 file_envoy_config_route_v3_route_components_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { 7733 switch v := v.(*Decorator); i { 7734 case 0: 7735 return &v.state 7736 case 1: 7737 return &v.sizeCache 7738 case 2: 7739 return &v.unknownFields 7740 default: 7741 return nil 7742 } 7743 } 7744 file_envoy_config_route_v3_route_components_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { 7745 switch v := v.(*Tracing); i { 7746 case 0: 7747 return &v.state 7748 case 1: 7749 return &v.sizeCache 7750 case 2: 7751 return &v.unknownFields 7752 default: 7753 return nil 7754 } 7755 } 7756 file_envoy_config_route_v3_route_components_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { 7757 switch v := v.(*VirtualCluster); i { 7758 case 0: 7759 return &v.state 7760 case 1: 7761 return &v.sizeCache 7762 case 2: 7763 return &v.unknownFields 7764 default: 7765 return nil 7766 } 7767 } 7768 file_envoy_config_route_v3_route_components_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { 7769 switch v := v.(*RateLimit); i { 7770 case 0: 7771 return &v.state 7772 case 1: 7773 return &v.sizeCache 7774 case 2: 7775 return &v.unknownFields 7776 default: 7777 return nil 7778 } 7779 } 7780 file_envoy_config_route_v3_route_components_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { 7781 switch v := v.(*HeaderMatcher); i { 7782 case 0: 7783 return &v.state 7784 case 1: 7785 return &v.sizeCache 7786 case 2: 7787 return &v.unknownFields 7788 default: 7789 return nil 7790 } 7791 } 7792 file_envoy_config_route_v3_route_components_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { 7793 switch v := v.(*QueryParameterMatcher); i { 7794 case 0: 7795 return &v.state 7796 case 1: 7797 return &v.sizeCache 7798 case 2: 7799 return &v.unknownFields 7800 default: 7801 return nil 7802 } 7803 } 7804 file_envoy_config_route_v3_route_components_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { 7805 switch v := v.(*InternalRedirectPolicy); i { 7806 case 0: 7807 return &v.state 7808 case 1: 7809 return &v.sizeCache 7810 case 2: 7811 return &v.unknownFields 7812 default: 7813 return nil 7814 } 7815 } 7816 file_envoy_config_route_v3_route_components_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { 7817 switch v := v.(*FilterConfig); i { 7818 case 0: 7819 return &v.state 7820 case 1: 7821 return &v.sizeCache 7822 case 2: 7823 return &v.unknownFields 7824 default: 7825 return nil 7826 } 7827 } 7828 file_envoy_config_route_v3_route_components_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { 7829 switch v := v.(*WeightedCluster_ClusterWeight); i { 7830 case 0: 7831 return &v.state 7832 case 1: 7833 return &v.sizeCache 7834 case 2: 7835 return &v.unknownFields 7836 default: 7837 return nil 7838 } 7839 } 7840 file_envoy_config_route_v3_route_components_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { 7841 switch v := v.(*RouteMatch_GrpcRouteMatchOptions); i { 7842 case 0: 7843 return &v.state 7844 case 1: 7845 return &v.sizeCache 7846 case 2: 7847 return &v.unknownFields 7848 default: 7849 return nil 7850 } 7851 } 7852 file_envoy_config_route_v3_route_components_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { 7853 switch v := v.(*RouteMatch_TlsContextMatchOptions); i { 7854 case 0: 7855 return &v.state 7856 case 1: 7857 return &v.sizeCache 7858 case 2: 7859 return &v.unknownFields 7860 default: 7861 return nil 7862 } 7863 } 7864 file_envoy_config_route_v3_route_components_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { 7865 switch v := v.(*RouteMatch_ConnectMatcher); i { 7866 case 0: 7867 return &v.state 7868 case 1: 7869 return &v.sizeCache 7870 case 2: 7871 return &v.unknownFields 7872 default: 7873 return nil 7874 } 7875 } 7876 file_envoy_config_route_v3_route_components_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { 7877 switch v := v.(*RouteAction_RequestMirrorPolicy); i { 7878 case 0: 7879 return &v.state 7880 case 1: 7881 return &v.sizeCache 7882 case 2: 7883 return &v.unknownFields 7884 default: 7885 return nil 7886 } 7887 } 7888 file_envoy_config_route_v3_route_components_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { 7889 switch v := v.(*RouteAction_HashPolicy); i { 7890 case 0: 7891 return &v.state 7892 case 1: 7893 return &v.sizeCache 7894 case 2: 7895 return &v.unknownFields 7896 default: 7897 return nil 7898 } 7899 } 7900 file_envoy_config_route_v3_route_components_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { 7901 switch v := v.(*RouteAction_UpgradeConfig); i { 7902 case 0: 7903 return &v.state 7904 case 1: 7905 return &v.sizeCache 7906 case 2: 7907 return &v.unknownFields 7908 default: 7909 return nil 7910 } 7911 } 7912 file_envoy_config_route_v3_route_components_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { 7913 switch v := v.(*RouteAction_MaxStreamDuration); i { 7914 case 0: 7915 return &v.state 7916 case 1: 7917 return &v.sizeCache 7918 case 2: 7919 return &v.unknownFields 7920 default: 7921 return nil 7922 } 7923 } 7924 file_envoy_config_route_v3_route_components_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { 7925 switch v := v.(*RouteAction_HashPolicy_Header); i { 7926 case 0: 7927 return &v.state 7928 case 1: 7929 return &v.sizeCache 7930 case 2: 7931 return &v.unknownFields 7932 default: 7933 return nil 7934 } 7935 } 7936 file_envoy_config_route_v3_route_components_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { 7937 switch v := v.(*RouteAction_HashPolicy_Cookie); i { 7938 case 0: 7939 return &v.state 7940 case 1: 7941 return &v.sizeCache 7942 case 2: 7943 return &v.unknownFields 7944 default: 7945 return nil 7946 } 7947 } 7948 file_envoy_config_route_v3_route_components_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { 7949 switch v := v.(*RouteAction_HashPolicy_ConnectionProperties); i { 7950 case 0: 7951 return &v.state 7952 case 1: 7953 return &v.sizeCache 7954 case 2: 7955 return &v.unknownFields 7956 default: 7957 return nil 7958 } 7959 } 7960 file_envoy_config_route_v3_route_components_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { 7961 switch v := v.(*RouteAction_HashPolicy_QueryParameter); i { 7962 case 0: 7963 return &v.state 7964 case 1: 7965 return &v.sizeCache 7966 case 2: 7967 return &v.unknownFields 7968 default: 7969 return nil 7970 } 7971 } 7972 file_envoy_config_route_v3_route_components_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { 7973 switch v := v.(*RouteAction_HashPolicy_FilterState); i { 7974 case 0: 7975 return &v.state 7976 case 1: 7977 return &v.sizeCache 7978 case 2: 7979 return &v.unknownFields 7980 default: 7981 return nil 7982 } 7983 } 7984 file_envoy_config_route_v3_route_components_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { 7985 switch v := v.(*RouteAction_UpgradeConfig_ConnectConfig); i { 7986 case 0: 7987 return &v.state 7988 case 1: 7989 return &v.sizeCache 7990 case 2: 7991 return &v.unknownFields 7992 default: 7993 return nil 7994 } 7995 } 7996 file_envoy_config_route_v3_route_components_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { 7997 switch v := v.(*RetryPolicy_RetryPriority); i { 7998 case 0: 7999 return &v.state 8000 case 1: 8001 return &v.sizeCache 8002 case 2: 8003 return &v.unknownFields 8004 default: 8005 return nil 8006 } 8007 } 8008 file_envoy_config_route_v3_route_components_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { 8009 switch v := v.(*RetryPolicy_RetryHostPredicate); i { 8010 case 0: 8011 return &v.state 8012 case 1: 8013 return &v.sizeCache 8014 case 2: 8015 return &v.unknownFields 8016 default: 8017 return nil 8018 } 8019 } 8020 file_envoy_config_route_v3_route_components_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { 8021 switch v := v.(*RetryPolicy_RetryBackOff); i { 8022 case 0: 8023 return &v.state 8024 case 1: 8025 return &v.sizeCache 8026 case 2: 8027 return &v.unknownFields 8028 default: 8029 return nil 8030 } 8031 } 8032 file_envoy_config_route_v3_route_components_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { 8033 switch v := v.(*RetryPolicy_ResetHeader); i { 8034 case 0: 8035 return &v.state 8036 case 1: 8037 return &v.sizeCache 8038 case 2: 8039 return &v.unknownFields 8040 default: 8041 return nil 8042 } 8043 } 8044 file_envoy_config_route_v3_route_components_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { 8045 switch v := v.(*RetryPolicy_RateLimitedRetryBackOff); i { 8046 case 0: 8047 return &v.state 8048 case 1: 8049 return &v.sizeCache 8050 case 2: 8051 return &v.unknownFields 8052 default: 8053 return nil 8054 } 8055 } 8056 file_envoy_config_route_v3_route_components_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { 8057 switch v := v.(*RateLimit_Action); i { 8058 case 0: 8059 return &v.state 8060 case 1: 8061 return &v.sizeCache 8062 case 2: 8063 return &v.unknownFields 8064 default: 8065 return nil 8066 } 8067 } 8068 file_envoy_config_route_v3_route_components_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { 8069 switch v := v.(*RateLimit_Override); i { 8070 case 0: 8071 return &v.state 8072 case 1: 8073 return &v.sizeCache 8074 case 2: 8075 return &v.unknownFields 8076 default: 8077 return nil 8078 } 8079 } 8080 file_envoy_config_route_v3_route_components_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { 8081 switch v := v.(*RateLimit_Action_SourceCluster); i { 8082 case 0: 8083 return &v.state 8084 case 1: 8085 return &v.sizeCache 8086 case 2: 8087 return &v.unknownFields 8088 default: 8089 return nil 8090 } 8091 } 8092 file_envoy_config_route_v3_route_components_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { 8093 switch v := v.(*RateLimit_Action_DestinationCluster); i { 8094 case 0: 8095 return &v.state 8096 case 1: 8097 return &v.sizeCache 8098 case 2: 8099 return &v.unknownFields 8100 default: 8101 return nil 8102 } 8103 } 8104 file_envoy_config_route_v3_route_components_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { 8105 switch v := v.(*RateLimit_Action_RequestHeaders); i { 8106 case 0: 8107 return &v.state 8108 case 1: 8109 return &v.sizeCache 8110 case 2: 8111 return &v.unknownFields 8112 default: 8113 return nil 8114 } 8115 } 8116 file_envoy_config_route_v3_route_components_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { 8117 switch v := v.(*RateLimit_Action_RemoteAddress); i { 8118 case 0: 8119 return &v.state 8120 case 1: 8121 return &v.sizeCache 8122 case 2: 8123 return &v.unknownFields 8124 default: 8125 return nil 8126 } 8127 } 8128 file_envoy_config_route_v3_route_components_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { 8129 switch v := v.(*RateLimit_Action_GenericKey); i { 8130 case 0: 8131 return &v.state 8132 case 1: 8133 return &v.sizeCache 8134 case 2: 8135 return &v.unknownFields 8136 default: 8137 return nil 8138 } 8139 } 8140 file_envoy_config_route_v3_route_components_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { 8141 switch v := v.(*RateLimit_Action_HeaderValueMatch); i { 8142 case 0: 8143 return &v.state 8144 case 1: 8145 return &v.sizeCache 8146 case 2: 8147 return &v.unknownFields 8148 default: 8149 return nil 8150 } 8151 } 8152 file_envoy_config_route_v3_route_components_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { 8153 switch v := v.(*RateLimit_Action_DynamicMetaData); i { 8154 case 0: 8155 return &v.state 8156 case 1: 8157 return &v.sizeCache 8158 case 2: 8159 return &v.unknownFields 8160 default: 8161 return nil 8162 } 8163 } 8164 file_envoy_config_route_v3_route_components_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { 8165 switch v := v.(*RateLimit_Action_MetaData); i { 8166 case 0: 8167 return &v.state 8168 case 1: 8169 return &v.sizeCache 8170 case 2: 8171 return &v.unknownFields 8172 default: 8173 return nil 8174 } 8175 } 8176 file_envoy_config_route_v3_route_components_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { 8177 switch v := v.(*RateLimit_Override_DynamicMetadata); i { 8178 case 0: 8179 return &v.state 8180 case 1: 8181 return &v.sizeCache 8182 case 2: 8183 return &v.unknownFields 8184 default: 8185 return nil 8186 } 8187 } 8188 } 8189 file_envoy_config_route_v3_route_components_proto_msgTypes[2].OneofWrappers = []interface{}{ 8190 (*Route_Route)(nil), 8191 (*Route_Redirect)(nil), 8192 (*Route_DirectResponse)(nil), 8193 (*Route_FilterAction)(nil), 8194 (*Route_NonForwardingAction)(nil), 8195 } 8196 file_envoy_config_route_v3_route_components_proto_msgTypes[4].OneofWrappers = []interface{}{ 8197 (*RouteMatch_Prefix)(nil), 8198 (*RouteMatch_Path)(nil), 8199 (*RouteMatch_SafeRegex)(nil), 8200 (*RouteMatch_ConnectMatcher_)(nil), 8201 (*RouteMatch_HiddenEnvoyDeprecatedRegex)(nil), 8202 } 8203 file_envoy_config_route_v3_route_components_proto_msgTypes[5].OneofWrappers = []interface{}{ 8204 (*CorsPolicy_FilterEnabled)(nil), 8205 (*CorsPolicy_HiddenEnvoyDeprecatedEnabled)(nil), 8206 } 8207 file_envoy_config_route_v3_route_components_proto_msgTypes[6].OneofWrappers = []interface{}{ 8208 (*RouteAction_Cluster)(nil), 8209 (*RouteAction_ClusterHeader)(nil), 8210 (*RouteAction_WeightedClusters)(nil), 8211 (*RouteAction_ClusterSpecifierPlugin)(nil), 8212 (*RouteAction_HostRewriteLiteral)(nil), 8213 (*RouteAction_AutoHostRewrite)(nil), 8214 (*RouteAction_HostRewriteHeader)(nil), 8215 (*RouteAction_HostRewritePathRegex)(nil), 8216 } 8217 file_envoy_config_route_v3_route_components_proto_msgTypes[9].OneofWrappers = []interface{}{ 8218 (*RedirectAction_HttpsRedirect)(nil), 8219 (*RedirectAction_SchemeRedirect)(nil), 8220 (*RedirectAction_PathRedirect)(nil), 8221 (*RedirectAction_PrefixRewrite)(nil), 8222 (*RedirectAction_RegexRewrite)(nil), 8223 } 8224 file_envoy_config_route_v3_route_components_proto_msgTypes[16].OneofWrappers = []interface{}{ 8225 (*HeaderMatcher_ExactMatch)(nil), 8226 (*HeaderMatcher_SafeRegexMatch)(nil), 8227 (*HeaderMatcher_RangeMatch)(nil), 8228 (*HeaderMatcher_PresentMatch)(nil), 8229 (*HeaderMatcher_PrefixMatch)(nil), 8230 (*HeaderMatcher_SuffixMatch)(nil), 8231 (*HeaderMatcher_ContainsMatch)(nil), 8232 (*HeaderMatcher_StringMatch)(nil), 8233 (*HeaderMatcher_HiddenEnvoyDeprecatedRegexMatch)(nil), 8234 } 8235 file_envoy_config_route_v3_route_components_proto_msgTypes[17].OneofWrappers = []interface{}{ 8236 (*QueryParameterMatcher_StringMatch)(nil), 8237 (*QueryParameterMatcher_PresentMatch)(nil), 8238 } 8239 file_envoy_config_route_v3_route_components_proto_msgTypes[24].OneofWrappers = []interface{}{ 8240 (*WeightedCluster_ClusterWeight_HostRewriteLiteral)(nil), 8241 } 8242 file_envoy_config_route_v3_route_components_proto_msgTypes[31].OneofWrappers = []interface{}{ 8243 (*RouteAction_HashPolicy_Header_)(nil), 8244 (*RouteAction_HashPolicy_Cookie_)(nil), 8245 (*RouteAction_HashPolicy_ConnectionProperties_)(nil), 8246 (*RouteAction_HashPolicy_QueryParameter_)(nil), 8247 (*RouteAction_HashPolicy_FilterState_)(nil), 8248 } 8249 file_envoy_config_route_v3_route_components_proto_msgTypes[40].OneofWrappers = []interface{}{ 8250 (*RetryPolicy_RetryPriority_TypedConfig)(nil), 8251 (*RetryPolicy_RetryPriority_HiddenEnvoyDeprecatedConfig)(nil), 8252 } 8253 file_envoy_config_route_v3_route_components_proto_msgTypes[41].OneofWrappers = []interface{}{ 8254 (*RetryPolicy_RetryHostPredicate_TypedConfig)(nil), 8255 (*RetryPolicy_RetryHostPredicate_HiddenEnvoyDeprecatedConfig)(nil), 8256 } 8257 file_envoy_config_route_v3_route_components_proto_msgTypes[45].OneofWrappers = []interface{}{ 8258 (*RateLimit_Action_SourceCluster_)(nil), 8259 (*RateLimit_Action_DestinationCluster_)(nil), 8260 (*RateLimit_Action_RequestHeaders_)(nil), 8261 (*RateLimit_Action_RemoteAddress_)(nil), 8262 (*RateLimit_Action_GenericKey_)(nil), 8263 (*RateLimit_Action_HeaderValueMatch_)(nil), 8264 (*RateLimit_Action_DynamicMetadata)(nil), 8265 (*RateLimit_Action_Metadata)(nil), 8266 (*RateLimit_Action_Extension)(nil), 8267 } 8268 file_envoy_config_route_v3_route_components_proto_msgTypes[46].OneofWrappers = []interface{}{ 8269 (*RateLimit_Override_DynamicMetadata_)(nil), 8270 } 8271 type x struct{} 8272 out := protoimpl.TypeBuilder{ 8273 File: protoimpl.DescBuilder{ 8274 GoPackagePath: reflect.TypeOf(x{}).PkgPath(), 8275 RawDescriptor: file_envoy_config_route_v3_route_components_proto_rawDesc, 8276 NumEnums: 6, 8277 NumMessages: 56, 8278 NumExtensions: 0, 8279 NumServices: 0, 8280 }, 8281 GoTypes: file_envoy_config_route_v3_route_components_proto_goTypes, 8282 DependencyIndexes: file_envoy_config_route_v3_route_components_proto_depIdxs, 8283 EnumInfos: file_envoy_config_route_v3_route_components_proto_enumTypes, 8284 MessageInfos: file_envoy_config_route_v3_route_components_proto_msgTypes, 8285 }.Build() 8286 File_envoy_config_route_v3_route_components_proto = out.File 8287 file_envoy_config_route_v3_route_components_proto_rawDesc = nil 8288 file_envoy_config_route_v3_route_components_proto_goTypes = nil 8289 file_envoy_config_route_v3_route_components_proto_depIdxs = nil 8290 }