github.com/shippio/gqlgen@v0.0.0-20220912092219-633ea699ef07/graphql/handler/apollofederatedtracingv1/generated/apollo_trace.pb.go (about) 1 // Code generated by protoc-gen-go. DO NOT EDIT. 2 // versions: 3 // protoc-gen-go v1.28.0 4 // protoc v3.19.4 5 // source: apollo_trace.proto 6 7 package generated 8 9 import ( 10 protoreflect "google.golang.org/protobuf/reflect/protoreflect" 11 protoimpl "google.golang.org/protobuf/runtime/protoimpl" 12 timestamppb "google.golang.org/protobuf/types/known/timestamppb" 13 reflect "reflect" 14 sync "sync" 15 ) 16 17 const ( 18 // Verify that this generated code is sufficiently up-to-date. 19 _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) 20 // Verify that runtime/protoimpl is sufficiently up-to-date. 21 _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) 22 ) 23 24 type Trace_CachePolicy_Scope int32 25 26 const ( 27 Trace_CachePolicy_UNKNOWN Trace_CachePolicy_Scope = 0 28 Trace_CachePolicy_PUBLIC Trace_CachePolicy_Scope = 1 29 Trace_CachePolicy_PRIVATE Trace_CachePolicy_Scope = 2 30 ) 31 32 // Enum value maps for Trace_CachePolicy_Scope. 33 var ( 34 Trace_CachePolicy_Scope_name = map[int32]string{ 35 0: "UNKNOWN", 36 1: "PUBLIC", 37 2: "PRIVATE", 38 } 39 Trace_CachePolicy_Scope_value = map[string]int32{ 40 "UNKNOWN": 0, 41 "PUBLIC": 1, 42 "PRIVATE": 2, 43 } 44 ) 45 46 func (x Trace_CachePolicy_Scope) Enum() *Trace_CachePolicy_Scope { 47 p := new(Trace_CachePolicy_Scope) 48 *p = x 49 return p 50 } 51 52 func (x Trace_CachePolicy_Scope) String() string { 53 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 54 } 55 56 func (Trace_CachePolicy_Scope) Descriptor() protoreflect.EnumDescriptor { 57 return file_apollo_trace_proto_enumTypes[0].Descriptor() 58 } 59 60 func (Trace_CachePolicy_Scope) Type() protoreflect.EnumType { 61 return &file_apollo_trace_proto_enumTypes[0] 62 } 63 64 func (x Trace_CachePolicy_Scope) Number() protoreflect.EnumNumber { 65 return protoreflect.EnumNumber(x) 66 } 67 68 // Deprecated: Use Trace_CachePolicy_Scope.Descriptor instead. 69 func (Trace_CachePolicy_Scope) EnumDescriptor() ([]byte, []int) { 70 return file_apollo_trace_proto_rawDescGZIP(), []int{0, 0, 0} 71 } 72 73 type Trace_HTTP_Method int32 74 75 const ( 76 Trace_HTTP_UNKNOWN Trace_HTTP_Method = 0 77 Trace_HTTP_OPTIONS Trace_HTTP_Method = 1 78 Trace_HTTP_GET Trace_HTTP_Method = 2 79 Trace_HTTP_HEAD Trace_HTTP_Method = 3 80 Trace_HTTP_POST Trace_HTTP_Method = 4 81 Trace_HTTP_PUT Trace_HTTP_Method = 5 82 Trace_HTTP_DELETE Trace_HTTP_Method = 6 83 Trace_HTTP_TRACE Trace_HTTP_Method = 7 84 Trace_HTTP_CONNECT Trace_HTTP_Method = 8 85 Trace_HTTP_PATCH Trace_HTTP_Method = 9 86 ) 87 88 // Enum value maps for Trace_HTTP_Method. 89 var ( 90 Trace_HTTP_Method_name = map[int32]string{ 91 0: "UNKNOWN", 92 1: "OPTIONS", 93 2: "GET", 94 3: "HEAD", 95 4: "POST", 96 5: "PUT", 97 6: "DELETE", 98 7: "TRACE", 99 8: "CONNECT", 100 9: "PATCH", 101 } 102 Trace_HTTP_Method_value = map[string]int32{ 103 "UNKNOWN": 0, 104 "OPTIONS": 1, 105 "GET": 2, 106 "HEAD": 3, 107 "POST": 4, 108 "PUT": 5, 109 "DELETE": 6, 110 "TRACE": 7, 111 "CONNECT": 8, 112 "PATCH": 9, 113 } 114 ) 115 116 func (x Trace_HTTP_Method) Enum() *Trace_HTTP_Method { 117 p := new(Trace_HTTP_Method) 118 *p = x 119 return p 120 } 121 122 func (x Trace_HTTP_Method) String() string { 123 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 124 } 125 126 func (Trace_HTTP_Method) Descriptor() protoreflect.EnumDescriptor { 127 return file_apollo_trace_proto_enumTypes[1].Descriptor() 128 } 129 130 func (Trace_HTTP_Method) Type() protoreflect.EnumType { 131 return &file_apollo_trace_proto_enumTypes[1] 132 } 133 134 func (x Trace_HTTP_Method) Number() protoreflect.EnumNumber { 135 return protoreflect.EnumNumber(x) 136 } 137 138 // Deprecated: Use Trace_HTTP_Method.Descriptor instead. 139 func (Trace_HTTP_Method) EnumDescriptor() ([]byte, []int) { 140 return file_apollo_trace_proto_rawDescGZIP(), []int{0, 3, 0} 141 } 142 143 type Trace struct { 144 state protoimpl.MessageState 145 sizeCache protoimpl.SizeCache 146 unknownFields protoimpl.UnknownFields 147 148 // Wallclock time when the trace began. 149 StartTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` // required 150 // Wallclock time when the trace ended. 151 EndTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` // required 152 // High precision duration of the trace; may not equal end_time-start_time 153 // (eg, if your machine's clock changed during the trace). 154 DurationNs uint64 `protobuf:"varint,11,opt,name=duration_ns,json=durationNs,proto3" json:"duration_ns,omitempty"` // required 155 // A tree containing information about all resolvers run directly by this 156 // service, including errors. 157 Root *Trace_Node `protobuf:"bytes,14,opt,name=root,proto3" json:"root,omitempty"` 158 // In addition to details.raw_query, we include a "signature" of the query, 159 // which can be normalized: for example, you may want to discard aliases, drop 160 // unused operations and fragments, sort fields, etc. The most important thing 161 // here is that the signature match the signature in StatsReports. In 162 // StatsReports signatures show up as the key in the per_query map (with the 163 // operation name prepended). The signature should be a valid GraphQL query. 164 // All traces must have a signature; if this Trace is in a FullTracesReport 165 // that signature is in the key of traces_per_query rather than in this field. 166 // Engineproxy provides the signature in legacy_signature_needs_resigning 167 // instead. 168 Signature string `protobuf:"bytes,19,opt,name=signature,proto3" json:"signature,omitempty"` 169 // Optional: when GraphQL parsing or validation against the GraphQL schema fails, these fields 170 // can include reference to the operation being sent for users to dig into the set of operations 171 // that are failing validation. 172 UnexecutedOperationBody string `protobuf:"bytes,27,opt,name=unexecutedOperationBody,proto3" json:"unexecutedOperationBody,omitempty"` 173 UnexecutedOperationName string `protobuf:"bytes,28,opt,name=unexecutedOperationName,proto3" json:"unexecutedOperationName,omitempty"` 174 Details *Trace_Details `protobuf:"bytes,6,opt,name=details,proto3" json:"details,omitempty"` 175 ClientName string `protobuf:"bytes,7,opt,name=client_name,json=clientName,proto3" json:"client_name,omitempty"` 176 ClientVersion string `protobuf:"bytes,8,opt,name=client_version,json=clientVersion,proto3" json:"client_version,omitempty"` 177 Http *Trace_HTTP `protobuf:"bytes,10,opt,name=http,proto3" json:"http,omitempty"` 178 CachePolicy *Trace_CachePolicy `protobuf:"bytes,18,opt,name=cache_policy,json=cachePolicy,proto3" json:"cache_policy,omitempty"` 179 // If this Trace was created by a gateway, this is the query plan, including 180 // sub-Traces for federated services. Note that the 'root' tree on the 181 // top-level Trace won't contain any resolvers (though it could contain errors 182 // that occurred in the gateway itself). 183 QueryPlan *Trace_QueryPlanNode `protobuf:"bytes,26,opt,name=query_plan,json=queryPlan,proto3" json:"query_plan,omitempty"` 184 // Was this response served from a full query response cache? (In that case 185 // the node tree will have no resolvers.) 186 FullQueryCacheHit bool `protobuf:"varint,20,opt,name=full_query_cache_hit,json=fullQueryCacheHit,proto3" json:"full_query_cache_hit,omitempty"` 187 // Was this query specified successfully as a persisted query hash? 188 PersistedQueryHit bool `protobuf:"varint,21,opt,name=persisted_query_hit,json=persistedQueryHit,proto3" json:"persisted_query_hit,omitempty"` 189 // Did this query contain both a full query string and a persisted query hash? 190 // (This typically means that a previous request was rejected as an unknown 191 // persisted query.) 192 PersistedQueryRegister bool `protobuf:"varint,22,opt,name=persisted_query_register,json=persistedQueryRegister,proto3" json:"persisted_query_register,omitempty"` 193 // Was this operation registered and a part of the safelist? 194 RegisteredOperation bool `protobuf:"varint,24,opt,name=registered_operation,json=registeredOperation,proto3" json:"registered_operation,omitempty"` 195 // Was this operation forbidden due to lack of safelisting? 196 ForbiddenOperation bool `protobuf:"varint,25,opt,name=forbidden_operation,json=forbiddenOperation,proto3" json:"forbidden_operation,omitempty"` 197 // Some servers don't do field-level instrumentation for every request and assign 198 // each request a "weight" for each request that they do instrument. When this 199 // trace is aggregated into field usage stats, it should count as this value 200 // towards the estimated_execution_count rather than just 1. This value should 201 // typically be at least 1. 202 // 203 // 0 is treated as 1 for backwards compatibility. 204 FieldExecutionWeight float64 `protobuf:"fixed64,31,opt,name=field_execution_weight,json=fieldExecutionWeight,proto3" json:"field_execution_weight,omitempty"` 205 } 206 207 func (x *Trace) Reset() { 208 *x = Trace{} 209 if protoimpl.UnsafeEnabled { 210 mi := &file_apollo_trace_proto_msgTypes[0] 211 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 212 ms.StoreMessageInfo(mi) 213 } 214 } 215 216 func (x *Trace) String() string { 217 return protoimpl.X.MessageStringOf(x) 218 } 219 220 func (*Trace) ProtoMessage() {} 221 222 func (x *Trace) ProtoReflect() protoreflect.Message { 223 mi := &file_apollo_trace_proto_msgTypes[0] 224 if protoimpl.UnsafeEnabled && x != nil { 225 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 226 if ms.LoadMessageInfo() == nil { 227 ms.StoreMessageInfo(mi) 228 } 229 return ms 230 } 231 return mi.MessageOf(x) 232 } 233 234 // Deprecated: Use Trace.ProtoReflect.Descriptor instead. 235 func (*Trace) Descriptor() ([]byte, []int) { 236 return file_apollo_trace_proto_rawDescGZIP(), []int{0} 237 } 238 239 func (x *Trace) GetStartTime() *timestamppb.Timestamp { 240 if x != nil { 241 return x.StartTime 242 } 243 return nil 244 } 245 246 func (x *Trace) GetEndTime() *timestamppb.Timestamp { 247 if x != nil { 248 return x.EndTime 249 } 250 return nil 251 } 252 253 func (x *Trace) GetDurationNs() uint64 { 254 if x != nil { 255 return x.DurationNs 256 } 257 return 0 258 } 259 260 func (x *Trace) GetRoot() *Trace_Node { 261 if x != nil { 262 return x.Root 263 } 264 return nil 265 } 266 267 func (x *Trace) GetSignature() string { 268 if x != nil { 269 return x.Signature 270 } 271 return "" 272 } 273 274 func (x *Trace) GetUnexecutedOperationBody() string { 275 if x != nil { 276 return x.UnexecutedOperationBody 277 } 278 return "" 279 } 280 281 func (x *Trace) GetUnexecutedOperationName() string { 282 if x != nil { 283 return x.UnexecutedOperationName 284 } 285 return "" 286 } 287 288 func (x *Trace) GetDetails() *Trace_Details { 289 if x != nil { 290 return x.Details 291 } 292 return nil 293 } 294 295 func (x *Trace) GetClientName() string { 296 if x != nil { 297 return x.ClientName 298 } 299 return "" 300 } 301 302 func (x *Trace) GetClientVersion() string { 303 if x != nil { 304 return x.ClientVersion 305 } 306 return "" 307 } 308 309 func (x *Trace) GetHttp() *Trace_HTTP { 310 if x != nil { 311 return x.Http 312 } 313 return nil 314 } 315 316 func (x *Trace) GetCachePolicy() *Trace_CachePolicy { 317 if x != nil { 318 return x.CachePolicy 319 } 320 return nil 321 } 322 323 func (x *Trace) GetQueryPlan() *Trace_QueryPlanNode { 324 if x != nil { 325 return x.QueryPlan 326 } 327 return nil 328 } 329 330 func (x *Trace) GetFullQueryCacheHit() bool { 331 if x != nil { 332 return x.FullQueryCacheHit 333 } 334 return false 335 } 336 337 func (x *Trace) GetPersistedQueryHit() bool { 338 if x != nil { 339 return x.PersistedQueryHit 340 } 341 return false 342 } 343 344 func (x *Trace) GetPersistedQueryRegister() bool { 345 if x != nil { 346 return x.PersistedQueryRegister 347 } 348 return false 349 } 350 351 func (x *Trace) GetRegisteredOperation() bool { 352 if x != nil { 353 return x.RegisteredOperation 354 } 355 return false 356 } 357 358 func (x *Trace) GetForbiddenOperation() bool { 359 if x != nil { 360 return x.ForbiddenOperation 361 } 362 return false 363 } 364 365 func (x *Trace) GetFieldExecutionWeight() float64 { 366 if x != nil { 367 return x.FieldExecutionWeight 368 } 369 return 0 370 } 371 372 // The `service` value embedded within the header key is not guaranteed to contain an actual service, 373 // and, in most cases, the service information is trusted to come from upstream processing. If the 374 // service _is_ specified in this header, then it is checked to match the context that is reporting it. 375 // Otherwise, the service information is deduced from the token context of the reporter and then sent 376 // along via other mechanisms (in Kafka, the `ReportKafkaKey). The other information (hostname, 377 // agent_version, etc.) is sent by the Apollo Engine Reporting agent, but we do not currently save that 378 // information to any of our persistent storage. 379 type ReportHeader struct { 380 state protoimpl.MessageState 381 sizeCache protoimpl.SizeCache 382 unknownFields protoimpl.UnknownFields 383 384 // eg "mygraph@myvariant" 385 GraphRef string `protobuf:"bytes,12,opt,name=graph_ref,json=graphRef,proto3" json:"graph_ref,omitempty"` 386 // eg "host-01.example.com" 387 Hostname string `protobuf:"bytes,5,opt,name=hostname,proto3" json:"hostname,omitempty"` 388 // eg "engineproxy 0.1.0" 389 AgentVersion string `protobuf:"bytes,6,opt,name=agent_version,json=agentVersion,proto3" json:"agent_version,omitempty"` // required 390 // eg "prod-4279-20160804T065423Z-5-g3cf0aa8" (taken from `git describe --tags`) 391 ServiceVersion string `protobuf:"bytes,7,opt,name=service_version,json=serviceVersion,proto3" json:"service_version,omitempty"` 392 // eg "node v4.6.0" 393 RuntimeVersion string `protobuf:"bytes,8,opt,name=runtime_version,json=runtimeVersion,proto3" json:"runtime_version,omitempty"` 394 // eg "Linux box 4.6.5-1-ec2 #1 SMP Mon Aug 1 02:31:38 PDT 2016 x86_64 GNU/Linux" 395 Uname string `protobuf:"bytes,9,opt,name=uname,proto3" json:"uname,omitempty"` 396 // An id that is used to represent the schema to Apollo Graph Manager 397 // Using this in place of what used to be schema_hash, since that is no longer 398 // attached to a schema in the backend. 399 ExecutableSchemaId string `protobuf:"bytes,11,opt,name=executable_schema_id,json=executableSchemaId,proto3" json:"executable_schema_id,omitempty"` 400 } 401 402 func (x *ReportHeader) Reset() { 403 *x = ReportHeader{} 404 if protoimpl.UnsafeEnabled { 405 mi := &file_apollo_trace_proto_msgTypes[1] 406 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 407 ms.StoreMessageInfo(mi) 408 } 409 } 410 411 func (x *ReportHeader) String() string { 412 return protoimpl.X.MessageStringOf(x) 413 } 414 415 func (*ReportHeader) ProtoMessage() {} 416 417 func (x *ReportHeader) ProtoReflect() protoreflect.Message { 418 mi := &file_apollo_trace_proto_msgTypes[1] 419 if protoimpl.UnsafeEnabled && x != nil { 420 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 421 if ms.LoadMessageInfo() == nil { 422 ms.StoreMessageInfo(mi) 423 } 424 return ms 425 } 426 return mi.MessageOf(x) 427 } 428 429 // Deprecated: Use ReportHeader.ProtoReflect.Descriptor instead. 430 func (*ReportHeader) Descriptor() ([]byte, []int) { 431 return file_apollo_trace_proto_rawDescGZIP(), []int{1} 432 } 433 434 func (x *ReportHeader) GetGraphRef() string { 435 if x != nil { 436 return x.GraphRef 437 } 438 return "" 439 } 440 441 func (x *ReportHeader) GetHostname() string { 442 if x != nil { 443 return x.Hostname 444 } 445 return "" 446 } 447 448 func (x *ReportHeader) GetAgentVersion() string { 449 if x != nil { 450 return x.AgentVersion 451 } 452 return "" 453 } 454 455 func (x *ReportHeader) GetServiceVersion() string { 456 if x != nil { 457 return x.ServiceVersion 458 } 459 return "" 460 } 461 462 func (x *ReportHeader) GetRuntimeVersion() string { 463 if x != nil { 464 return x.RuntimeVersion 465 } 466 return "" 467 } 468 469 func (x *ReportHeader) GetUname() string { 470 if x != nil { 471 return x.Uname 472 } 473 return "" 474 } 475 476 func (x *ReportHeader) GetExecutableSchemaId() string { 477 if x != nil { 478 return x.ExecutableSchemaId 479 } 480 return "" 481 } 482 483 type PathErrorStats struct { 484 state protoimpl.MessageState 485 sizeCache protoimpl.SizeCache 486 unknownFields protoimpl.UnknownFields 487 488 Children map[string]*PathErrorStats `protobuf:"bytes,1,rep,name=children,proto3" json:"children,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 489 ErrorsCount uint64 `protobuf:"varint,4,opt,name=errors_count,json=errorsCount,proto3" json:"errors_count,omitempty"` 490 RequestsWithErrorsCount uint64 `protobuf:"varint,5,opt,name=requests_with_errors_count,json=requestsWithErrorsCount,proto3" json:"requests_with_errors_count,omitempty"` 491 } 492 493 func (x *PathErrorStats) Reset() { 494 *x = PathErrorStats{} 495 if protoimpl.UnsafeEnabled { 496 mi := &file_apollo_trace_proto_msgTypes[2] 497 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 498 ms.StoreMessageInfo(mi) 499 } 500 } 501 502 func (x *PathErrorStats) String() string { 503 return protoimpl.X.MessageStringOf(x) 504 } 505 506 func (*PathErrorStats) ProtoMessage() {} 507 508 func (x *PathErrorStats) ProtoReflect() protoreflect.Message { 509 mi := &file_apollo_trace_proto_msgTypes[2] 510 if protoimpl.UnsafeEnabled && x != nil { 511 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 512 if ms.LoadMessageInfo() == nil { 513 ms.StoreMessageInfo(mi) 514 } 515 return ms 516 } 517 return mi.MessageOf(x) 518 } 519 520 // Deprecated: Use PathErrorStats.ProtoReflect.Descriptor instead. 521 func (*PathErrorStats) Descriptor() ([]byte, []int) { 522 return file_apollo_trace_proto_rawDescGZIP(), []int{2} 523 } 524 525 func (x *PathErrorStats) GetChildren() map[string]*PathErrorStats { 526 if x != nil { 527 return x.Children 528 } 529 return nil 530 } 531 532 func (x *PathErrorStats) GetErrorsCount() uint64 { 533 if x != nil { 534 return x.ErrorsCount 535 } 536 return 0 537 } 538 539 func (x *PathErrorStats) GetRequestsWithErrorsCount() uint64 { 540 if x != nil { 541 return x.RequestsWithErrorsCount 542 } 543 return 0 544 } 545 546 type QueryLatencyStats struct { 547 state protoimpl.MessageState 548 sizeCache protoimpl.SizeCache 549 unknownFields protoimpl.UnknownFields 550 551 LatencyCount []int64 `protobuf:"zigzag64,13,rep,packed,name=latency_count,json=latencyCount,proto3" json:"latency_count,omitempty"` 552 RequestCount uint64 `protobuf:"varint,2,opt,name=request_count,json=requestCount,proto3" json:"request_count,omitempty"` 553 CacheHits uint64 `protobuf:"varint,3,opt,name=cache_hits,json=cacheHits,proto3" json:"cache_hits,omitempty"` 554 PersistedQueryHits uint64 `protobuf:"varint,4,opt,name=persisted_query_hits,json=persistedQueryHits,proto3" json:"persisted_query_hits,omitempty"` 555 PersistedQueryMisses uint64 `protobuf:"varint,5,opt,name=persisted_query_misses,json=persistedQueryMisses,proto3" json:"persisted_query_misses,omitempty"` 556 CacheLatencyCount []int64 `protobuf:"zigzag64,14,rep,packed,name=cache_latency_count,json=cacheLatencyCount,proto3" json:"cache_latency_count,omitempty"` 557 RootErrorStats *PathErrorStats `protobuf:"bytes,7,opt,name=root_error_stats,json=rootErrorStats,proto3" json:"root_error_stats,omitempty"` 558 RequestsWithErrorsCount uint64 `protobuf:"varint,8,opt,name=requests_with_errors_count,json=requestsWithErrorsCount,proto3" json:"requests_with_errors_count,omitempty"` 559 PublicCacheTtlCount []int64 `protobuf:"zigzag64,15,rep,packed,name=public_cache_ttl_count,json=publicCacheTtlCount,proto3" json:"public_cache_ttl_count,omitempty"` 560 PrivateCacheTtlCount []int64 `protobuf:"zigzag64,16,rep,packed,name=private_cache_ttl_count,json=privateCacheTtlCount,proto3" json:"private_cache_ttl_count,omitempty"` 561 RegisteredOperationCount uint64 `protobuf:"varint,11,opt,name=registered_operation_count,json=registeredOperationCount,proto3" json:"registered_operation_count,omitempty"` 562 ForbiddenOperationCount uint64 `protobuf:"varint,12,opt,name=forbidden_operation_count,json=forbiddenOperationCount,proto3" json:"forbidden_operation_count,omitempty"` 563 // The number of requests that were executed without field-level 564 // instrumentation (and thus do not contribute to `observed_execution_count` 565 // fields on this message's cousin-twice-removed FieldStats). 566 RequestsWithoutFieldInstrumentation uint64 `protobuf:"varint,17,opt,name=requests_without_field_instrumentation,json=requestsWithoutFieldInstrumentation,proto3" json:"requests_without_field_instrumentation,omitempty"` 567 } 568 569 func (x *QueryLatencyStats) Reset() { 570 *x = QueryLatencyStats{} 571 if protoimpl.UnsafeEnabled { 572 mi := &file_apollo_trace_proto_msgTypes[3] 573 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 574 ms.StoreMessageInfo(mi) 575 } 576 } 577 578 func (x *QueryLatencyStats) String() string { 579 return protoimpl.X.MessageStringOf(x) 580 } 581 582 func (*QueryLatencyStats) ProtoMessage() {} 583 584 func (x *QueryLatencyStats) ProtoReflect() protoreflect.Message { 585 mi := &file_apollo_trace_proto_msgTypes[3] 586 if protoimpl.UnsafeEnabled && x != nil { 587 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 588 if ms.LoadMessageInfo() == nil { 589 ms.StoreMessageInfo(mi) 590 } 591 return ms 592 } 593 return mi.MessageOf(x) 594 } 595 596 // Deprecated: Use QueryLatencyStats.ProtoReflect.Descriptor instead. 597 func (*QueryLatencyStats) Descriptor() ([]byte, []int) { 598 return file_apollo_trace_proto_rawDescGZIP(), []int{3} 599 } 600 601 func (x *QueryLatencyStats) GetLatencyCount() []int64 { 602 if x != nil { 603 return x.LatencyCount 604 } 605 return nil 606 } 607 608 func (x *QueryLatencyStats) GetRequestCount() uint64 { 609 if x != nil { 610 return x.RequestCount 611 } 612 return 0 613 } 614 615 func (x *QueryLatencyStats) GetCacheHits() uint64 { 616 if x != nil { 617 return x.CacheHits 618 } 619 return 0 620 } 621 622 func (x *QueryLatencyStats) GetPersistedQueryHits() uint64 { 623 if x != nil { 624 return x.PersistedQueryHits 625 } 626 return 0 627 } 628 629 func (x *QueryLatencyStats) GetPersistedQueryMisses() uint64 { 630 if x != nil { 631 return x.PersistedQueryMisses 632 } 633 return 0 634 } 635 636 func (x *QueryLatencyStats) GetCacheLatencyCount() []int64 { 637 if x != nil { 638 return x.CacheLatencyCount 639 } 640 return nil 641 } 642 643 func (x *QueryLatencyStats) GetRootErrorStats() *PathErrorStats { 644 if x != nil { 645 return x.RootErrorStats 646 } 647 return nil 648 } 649 650 func (x *QueryLatencyStats) GetRequestsWithErrorsCount() uint64 { 651 if x != nil { 652 return x.RequestsWithErrorsCount 653 } 654 return 0 655 } 656 657 func (x *QueryLatencyStats) GetPublicCacheTtlCount() []int64 { 658 if x != nil { 659 return x.PublicCacheTtlCount 660 } 661 return nil 662 } 663 664 func (x *QueryLatencyStats) GetPrivateCacheTtlCount() []int64 { 665 if x != nil { 666 return x.PrivateCacheTtlCount 667 } 668 return nil 669 } 670 671 func (x *QueryLatencyStats) GetRegisteredOperationCount() uint64 { 672 if x != nil { 673 return x.RegisteredOperationCount 674 } 675 return 0 676 } 677 678 func (x *QueryLatencyStats) GetForbiddenOperationCount() uint64 { 679 if x != nil { 680 return x.ForbiddenOperationCount 681 } 682 return 0 683 } 684 685 func (x *QueryLatencyStats) GetRequestsWithoutFieldInstrumentation() uint64 { 686 if x != nil { 687 return x.RequestsWithoutFieldInstrumentation 688 } 689 return 0 690 } 691 692 type StatsContext struct { 693 state protoimpl.MessageState 694 sizeCache protoimpl.SizeCache 695 unknownFields protoimpl.UnknownFields 696 697 ClientName string `protobuf:"bytes,2,opt,name=client_name,json=clientName,proto3" json:"client_name,omitempty"` 698 ClientVersion string `protobuf:"bytes,3,opt,name=client_version,json=clientVersion,proto3" json:"client_version,omitempty"` 699 } 700 701 func (x *StatsContext) Reset() { 702 *x = StatsContext{} 703 if protoimpl.UnsafeEnabled { 704 mi := &file_apollo_trace_proto_msgTypes[4] 705 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 706 ms.StoreMessageInfo(mi) 707 } 708 } 709 710 func (x *StatsContext) String() string { 711 return protoimpl.X.MessageStringOf(x) 712 } 713 714 func (*StatsContext) ProtoMessage() {} 715 716 func (x *StatsContext) ProtoReflect() protoreflect.Message { 717 mi := &file_apollo_trace_proto_msgTypes[4] 718 if protoimpl.UnsafeEnabled && x != nil { 719 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 720 if ms.LoadMessageInfo() == nil { 721 ms.StoreMessageInfo(mi) 722 } 723 return ms 724 } 725 return mi.MessageOf(x) 726 } 727 728 // Deprecated: Use StatsContext.ProtoReflect.Descriptor instead. 729 func (*StatsContext) Descriptor() ([]byte, []int) { 730 return file_apollo_trace_proto_rawDescGZIP(), []int{4} 731 } 732 733 func (x *StatsContext) GetClientName() string { 734 if x != nil { 735 return x.ClientName 736 } 737 return "" 738 } 739 740 func (x *StatsContext) GetClientVersion() string { 741 if x != nil { 742 return x.ClientVersion 743 } 744 return "" 745 } 746 747 type ContextualizedQueryLatencyStats struct { 748 state protoimpl.MessageState 749 sizeCache protoimpl.SizeCache 750 unknownFields protoimpl.UnknownFields 751 752 QueryLatencyStats *QueryLatencyStats `protobuf:"bytes,1,opt,name=query_latency_stats,json=queryLatencyStats,proto3" json:"query_latency_stats,omitempty"` 753 Context *StatsContext `protobuf:"bytes,2,opt,name=context,proto3" json:"context,omitempty"` 754 } 755 756 func (x *ContextualizedQueryLatencyStats) Reset() { 757 *x = ContextualizedQueryLatencyStats{} 758 if protoimpl.UnsafeEnabled { 759 mi := &file_apollo_trace_proto_msgTypes[5] 760 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 761 ms.StoreMessageInfo(mi) 762 } 763 } 764 765 func (x *ContextualizedQueryLatencyStats) String() string { 766 return protoimpl.X.MessageStringOf(x) 767 } 768 769 func (*ContextualizedQueryLatencyStats) ProtoMessage() {} 770 771 func (x *ContextualizedQueryLatencyStats) ProtoReflect() protoreflect.Message { 772 mi := &file_apollo_trace_proto_msgTypes[5] 773 if protoimpl.UnsafeEnabled && x != nil { 774 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 775 if ms.LoadMessageInfo() == nil { 776 ms.StoreMessageInfo(mi) 777 } 778 return ms 779 } 780 return mi.MessageOf(x) 781 } 782 783 // Deprecated: Use ContextualizedQueryLatencyStats.ProtoReflect.Descriptor instead. 784 func (*ContextualizedQueryLatencyStats) Descriptor() ([]byte, []int) { 785 return file_apollo_trace_proto_rawDescGZIP(), []int{5} 786 } 787 788 func (x *ContextualizedQueryLatencyStats) GetQueryLatencyStats() *QueryLatencyStats { 789 if x != nil { 790 return x.QueryLatencyStats 791 } 792 return nil 793 } 794 795 func (x *ContextualizedQueryLatencyStats) GetContext() *StatsContext { 796 if x != nil { 797 return x.Context 798 } 799 return nil 800 } 801 802 type ContextualizedTypeStats struct { 803 state protoimpl.MessageState 804 sizeCache protoimpl.SizeCache 805 unknownFields protoimpl.UnknownFields 806 807 Context *StatsContext `protobuf:"bytes,1,opt,name=context,proto3" json:"context,omitempty"` 808 PerTypeStat map[string]*TypeStat `protobuf:"bytes,2,rep,name=per_type_stat,json=perTypeStat,proto3" json:"per_type_stat,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 809 } 810 811 func (x *ContextualizedTypeStats) Reset() { 812 *x = ContextualizedTypeStats{} 813 if protoimpl.UnsafeEnabled { 814 mi := &file_apollo_trace_proto_msgTypes[6] 815 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 816 ms.StoreMessageInfo(mi) 817 } 818 } 819 820 func (x *ContextualizedTypeStats) String() string { 821 return protoimpl.X.MessageStringOf(x) 822 } 823 824 func (*ContextualizedTypeStats) ProtoMessage() {} 825 826 func (x *ContextualizedTypeStats) ProtoReflect() protoreflect.Message { 827 mi := &file_apollo_trace_proto_msgTypes[6] 828 if protoimpl.UnsafeEnabled && x != nil { 829 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 830 if ms.LoadMessageInfo() == nil { 831 ms.StoreMessageInfo(mi) 832 } 833 return ms 834 } 835 return mi.MessageOf(x) 836 } 837 838 // Deprecated: Use ContextualizedTypeStats.ProtoReflect.Descriptor instead. 839 func (*ContextualizedTypeStats) Descriptor() ([]byte, []int) { 840 return file_apollo_trace_proto_rawDescGZIP(), []int{6} 841 } 842 843 func (x *ContextualizedTypeStats) GetContext() *StatsContext { 844 if x != nil { 845 return x.Context 846 } 847 return nil 848 } 849 850 func (x *ContextualizedTypeStats) GetPerTypeStat() map[string]*TypeStat { 851 if x != nil { 852 return x.PerTypeStat 853 } 854 return nil 855 } 856 857 type FieldStat struct { 858 state protoimpl.MessageState 859 sizeCache protoimpl.SizeCache 860 unknownFields protoimpl.UnknownFields 861 862 ReturnType string `protobuf:"bytes,3,opt,name=return_type,json=returnType,proto3" json:"return_type,omitempty"` // required; eg "String!" for User.email:String! 863 // Number of errors whose path is this field. Note that we assume that error 864 // tracking does *not* require field-level instrumentation so this *will* 865 // include errors from requests that don't contribute to the 866 // `observed_execution_count` field (and does not need to be scaled by 867 // field_execution_weight). 868 ErrorsCount uint64 `protobuf:"varint,4,opt,name=errors_count,json=errorsCount,proto3" json:"errors_count,omitempty"` 869 // Number of times that the resolver for this field is directly observed being 870 // executed. 871 ObservedExecutionCount uint64 `protobuf:"varint,5,opt,name=observed_execution_count,json=observedExecutionCount,proto3" json:"observed_execution_count,omitempty"` 872 // Same as `count` but potentially scaled upwards if the server was only 873 // performing field-level instrumentation on a sampling of operations. For 874 // example, if the server randomly instruments 1% of requests for this 875 // operation, this number will be 100 times greater than 876 // `observed_execution_count`. (When aggregating a Trace into FieldStats, 877 // this number goes up by the trace's `field_execution_weight` for each 878 // observed field execution, while `observed_execution_count` above goes 879 // up by 1.) 880 EstimatedExecutionCount uint64 `protobuf:"varint,10,opt,name=estimated_execution_count,json=estimatedExecutionCount,proto3" json:"estimated_execution_count,omitempty"` 881 // Number of times the resolver for this field is executed that resulted in 882 // at least one error. "Request" is a misnomer here as this corresponds to 883 // resolver calls, not overall operations. Like `errors_count` above, this 884 // includes all requests rather than just requests with field-level 885 // instrumentation. 886 RequestsWithErrorsCount uint64 `protobuf:"varint,6,opt,name=requests_with_errors_count,json=requestsWithErrorsCount,proto3" json:"requests_with_errors_count,omitempty"` 887 // Duration histogram for the latency of this field. Note that it is scaled in 888 // the same way as estimated_execution_count so its "total count" might be 889 // greater than `observed_execution_count` and may not exactly equal 890 // `estimated_execution_count` due to rounding. 891 LatencyCount []int64 `protobuf:"zigzag64,9,rep,packed,name=latency_count,json=latencyCount,proto3" json:"latency_count,omitempty"` 892 } 893 894 func (x *FieldStat) Reset() { 895 *x = FieldStat{} 896 if protoimpl.UnsafeEnabled { 897 mi := &file_apollo_trace_proto_msgTypes[7] 898 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 899 ms.StoreMessageInfo(mi) 900 } 901 } 902 903 func (x *FieldStat) String() string { 904 return protoimpl.X.MessageStringOf(x) 905 } 906 907 func (*FieldStat) ProtoMessage() {} 908 909 func (x *FieldStat) ProtoReflect() protoreflect.Message { 910 mi := &file_apollo_trace_proto_msgTypes[7] 911 if protoimpl.UnsafeEnabled && x != nil { 912 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 913 if ms.LoadMessageInfo() == nil { 914 ms.StoreMessageInfo(mi) 915 } 916 return ms 917 } 918 return mi.MessageOf(x) 919 } 920 921 // Deprecated: Use FieldStat.ProtoReflect.Descriptor instead. 922 func (*FieldStat) Descriptor() ([]byte, []int) { 923 return file_apollo_trace_proto_rawDescGZIP(), []int{7} 924 } 925 926 func (x *FieldStat) GetReturnType() string { 927 if x != nil { 928 return x.ReturnType 929 } 930 return "" 931 } 932 933 func (x *FieldStat) GetErrorsCount() uint64 { 934 if x != nil { 935 return x.ErrorsCount 936 } 937 return 0 938 } 939 940 func (x *FieldStat) GetObservedExecutionCount() uint64 { 941 if x != nil { 942 return x.ObservedExecutionCount 943 } 944 return 0 945 } 946 947 func (x *FieldStat) GetEstimatedExecutionCount() uint64 { 948 if x != nil { 949 return x.EstimatedExecutionCount 950 } 951 return 0 952 } 953 954 func (x *FieldStat) GetRequestsWithErrorsCount() uint64 { 955 if x != nil { 956 return x.RequestsWithErrorsCount 957 } 958 return 0 959 } 960 961 func (x *FieldStat) GetLatencyCount() []int64 { 962 if x != nil { 963 return x.LatencyCount 964 } 965 return nil 966 } 967 968 type TypeStat struct { 969 state protoimpl.MessageState 970 sizeCache protoimpl.SizeCache 971 unknownFields protoimpl.UnknownFields 972 973 // Key is (eg) "email" for User.email:String! 974 PerFieldStat map[string]*FieldStat `protobuf:"bytes,3,rep,name=per_field_stat,json=perFieldStat,proto3" json:"per_field_stat,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 975 } 976 977 func (x *TypeStat) Reset() { 978 *x = TypeStat{} 979 if protoimpl.UnsafeEnabled { 980 mi := &file_apollo_trace_proto_msgTypes[8] 981 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 982 ms.StoreMessageInfo(mi) 983 } 984 } 985 986 func (x *TypeStat) String() string { 987 return protoimpl.X.MessageStringOf(x) 988 } 989 990 func (*TypeStat) ProtoMessage() {} 991 992 func (x *TypeStat) ProtoReflect() protoreflect.Message { 993 mi := &file_apollo_trace_proto_msgTypes[8] 994 if protoimpl.UnsafeEnabled && x != nil { 995 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 996 if ms.LoadMessageInfo() == nil { 997 ms.StoreMessageInfo(mi) 998 } 999 return ms 1000 } 1001 return mi.MessageOf(x) 1002 } 1003 1004 // Deprecated: Use TypeStat.ProtoReflect.Descriptor instead. 1005 func (*TypeStat) Descriptor() ([]byte, []int) { 1006 return file_apollo_trace_proto_rawDescGZIP(), []int{8} 1007 } 1008 1009 func (x *TypeStat) GetPerFieldStat() map[string]*FieldStat { 1010 if x != nil { 1011 return x.PerFieldStat 1012 } 1013 return nil 1014 } 1015 1016 type ReferencedFieldsForType struct { 1017 state protoimpl.MessageState 1018 sizeCache protoimpl.SizeCache 1019 unknownFields protoimpl.UnknownFields 1020 1021 // Contains (eg) "email" for User.email:String! 1022 FieldNames []string `protobuf:"bytes,1,rep,name=field_names,json=fieldNames,proto3" json:"field_names,omitempty"` 1023 // True if this type is an interface. 1024 IsInterface bool `protobuf:"varint,2,opt,name=is_interface,json=isInterface,proto3" json:"is_interface,omitempty"` 1025 } 1026 1027 func (x *ReferencedFieldsForType) Reset() { 1028 *x = ReferencedFieldsForType{} 1029 if protoimpl.UnsafeEnabled { 1030 mi := &file_apollo_trace_proto_msgTypes[9] 1031 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1032 ms.StoreMessageInfo(mi) 1033 } 1034 } 1035 1036 func (x *ReferencedFieldsForType) String() string { 1037 return protoimpl.X.MessageStringOf(x) 1038 } 1039 1040 func (*ReferencedFieldsForType) ProtoMessage() {} 1041 1042 func (x *ReferencedFieldsForType) ProtoReflect() protoreflect.Message { 1043 mi := &file_apollo_trace_proto_msgTypes[9] 1044 if protoimpl.UnsafeEnabled && x != nil { 1045 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1046 if ms.LoadMessageInfo() == nil { 1047 ms.StoreMessageInfo(mi) 1048 } 1049 return ms 1050 } 1051 return mi.MessageOf(x) 1052 } 1053 1054 // Deprecated: Use ReferencedFieldsForType.ProtoReflect.Descriptor instead. 1055 func (*ReferencedFieldsForType) Descriptor() ([]byte, []int) { 1056 return file_apollo_trace_proto_rawDescGZIP(), []int{9} 1057 } 1058 1059 func (x *ReferencedFieldsForType) GetFieldNames() []string { 1060 if x != nil { 1061 return x.FieldNames 1062 } 1063 return nil 1064 } 1065 1066 func (x *ReferencedFieldsForType) GetIsInterface() bool { 1067 if x != nil { 1068 return x.IsInterface 1069 } 1070 return false 1071 } 1072 1073 // This is the top-level message used by the new traces ingress. This 1074 // is designed for the apollo-engine-reporting TypeScript agent and will 1075 // eventually be documented as a public ingress API. This message consists 1076 // solely of traces; the equivalent of the StatsReport is automatically 1077 // generated server-side from this message. Agent should either send a trace or include it in the stats 1078 // for every request in this report. Generally, buffering up until a large 1079 // size has been reached (say, 4MB) or 5-10 seconds has passed is appropriate. 1080 // This message used to be know as FullTracesReport, but got renamed since it isn't just for traces anymore 1081 type Report struct { 1082 state protoimpl.MessageState 1083 sizeCache protoimpl.SizeCache 1084 unknownFields protoimpl.UnknownFields 1085 1086 Header *ReportHeader `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` 1087 // key is statsReportKey (# operationName\nsignature) Note that the nested 1088 // traces will *not* have a signature or details.operationName (because the 1089 // key is adequate). 1090 // 1091 // We also assume that traces don't have 1092 // legacy_per_query_implicit_operation_name, and we don't require them to have 1093 // details.raw_query (which would consume a lot of space and has privacy/data 1094 // access issues, and isn't currently exposed by our app anyway). 1095 TracesPerQuery map[string]*TracesAndStats `protobuf:"bytes,5,rep,name=traces_per_query,json=tracesPerQuery,proto3" json:"traces_per_query,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 1096 // This is the time that the requests in this trace are considered to have taken place 1097 // If this field is not present the max of the end_time of each trace will be used instead. 1098 // If there are no traces and no end_time present the report will not be able to be processed. 1099 // Note: This will override the end_time from traces. 1100 EndTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` // required if no traces in this message 1101 // Total number of operations processed during this period. 1102 OperationCount uint64 `protobuf:"varint,6,opt,name=operation_count,json=operationCount,proto3" json:"operation_count,omitempty"` 1103 } 1104 1105 func (x *Report) Reset() { 1106 *x = Report{} 1107 if protoimpl.UnsafeEnabled { 1108 mi := &file_apollo_trace_proto_msgTypes[10] 1109 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1110 ms.StoreMessageInfo(mi) 1111 } 1112 } 1113 1114 func (x *Report) String() string { 1115 return protoimpl.X.MessageStringOf(x) 1116 } 1117 1118 func (*Report) ProtoMessage() {} 1119 1120 func (x *Report) ProtoReflect() protoreflect.Message { 1121 mi := &file_apollo_trace_proto_msgTypes[10] 1122 if protoimpl.UnsafeEnabled && x != nil { 1123 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1124 if ms.LoadMessageInfo() == nil { 1125 ms.StoreMessageInfo(mi) 1126 } 1127 return ms 1128 } 1129 return mi.MessageOf(x) 1130 } 1131 1132 // Deprecated: Use Report.ProtoReflect.Descriptor instead. 1133 func (*Report) Descriptor() ([]byte, []int) { 1134 return file_apollo_trace_proto_rawDescGZIP(), []int{10} 1135 } 1136 1137 func (x *Report) GetHeader() *ReportHeader { 1138 if x != nil { 1139 return x.Header 1140 } 1141 return nil 1142 } 1143 1144 func (x *Report) GetTracesPerQuery() map[string]*TracesAndStats { 1145 if x != nil { 1146 return x.TracesPerQuery 1147 } 1148 return nil 1149 } 1150 1151 func (x *Report) GetEndTime() *timestamppb.Timestamp { 1152 if x != nil { 1153 return x.EndTime 1154 } 1155 return nil 1156 } 1157 1158 func (x *Report) GetOperationCount() uint64 { 1159 if x != nil { 1160 return x.OperationCount 1161 } 1162 return 0 1163 } 1164 1165 type ContextualizedStats struct { 1166 state protoimpl.MessageState 1167 sizeCache protoimpl.SizeCache 1168 unknownFields protoimpl.UnknownFields 1169 1170 Context *StatsContext `protobuf:"bytes,1,opt,name=context,proto3" json:"context,omitempty"` 1171 QueryLatencyStats *QueryLatencyStats `protobuf:"bytes,2,opt,name=query_latency_stats,json=queryLatencyStats,proto3" json:"query_latency_stats,omitempty"` 1172 // Key is type name. This structure provides data for the count and latency of individual 1173 // field executions and thus only reflects operations for which field-level tracing occurred. 1174 PerTypeStat map[string]*TypeStat `protobuf:"bytes,3,rep,name=per_type_stat,json=perTypeStat,proto3" json:"per_type_stat,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 1175 } 1176 1177 func (x *ContextualizedStats) Reset() { 1178 *x = ContextualizedStats{} 1179 if protoimpl.UnsafeEnabled { 1180 mi := &file_apollo_trace_proto_msgTypes[11] 1181 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1182 ms.StoreMessageInfo(mi) 1183 } 1184 } 1185 1186 func (x *ContextualizedStats) String() string { 1187 return protoimpl.X.MessageStringOf(x) 1188 } 1189 1190 func (*ContextualizedStats) ProtoMessage() {} 1191 1192 func (x *ContextualizedStats) ProtoReflect() protoreflect.Message { 1193 mi := &file_apollo_trace_proto_msgTypes[11] 1194 if protoimpl.UnsafeEnabled && x != nil { 1195 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1196 if ms.LoadMessageInfo() == nil { 1197 ms.StoreMessageInfo(mi) 1198 } 1199 return ms 1200 } 1201 return mi.MessageOf(x) 1202 } 1203 1204 // Deprecated: Use ContextualizedStats.ProtoReflect.Descriptor instead. 1205 func (*ContextualizedStats) Descriptor() ([]byte, []int) { 1206 return file_apollo_trace_proto_rawDescGZIP(), []int{11} 1207 } 1208 1209 func (x *ContextualizedStats) GetContext() *StatsContext { 1210 if x != nil { 1211 return x.Context 1212 } 1213 return nil 1214 } 1215 1216 func (x *ContextualizedStats) GetQueryLatencyStats() *QueryLatencyStats { 1217 if x != nil { 1218 return x.QueryLatencyStats 1219 } 1220 return nil 1221 } 1222 1223 func (x *ContextualizedStats) GetPerTypeStat() map[string]*TypeStat { 1224 if x != nil { 1225 return x.PerTypeStat 1226 } 1227 return nil 1228 } 1229 1230 // A sequence of traces and stats. An individual operation should either be described as a trace 1231 // or as part of stats, but not both. 1232 type TracesAndStats struct { 1233 state protoimpl.MessageState 1234 sizeCache protoimpl.SizeCache 1235 unknownFields protoimpl.UnknownFields 1236 1237 Trace []*Trace `protobuf:"bytes,1,rep,name=trace,proto3" json:"trace,omitempty"` 1238 StatsWithContext []*ContextualizedStats `protobuf:"bytes,2,rep,name=stats_with_context,json=statsWithContext,proto3" json:"stats_with_context,omitempty"` 1239 // This describes the fields referenced in the operation. Note that this may 1240 // include fields that don't show up in FieldStats (due to being interface fields, 1241 // being nested under null fields or empty lists or non-matching fragments or 1242 // `@include` or `@skip`, etc). It also may be missing fields that show up in FieldStats 1243 // (as FieldStats will include the concrete object type for fields referenced 1244 // via an interface type). 1245 ReferencedFieldsByType map[string]*ReferencedFieldsForType `protobuf:"bytes,4,rep,name=referenced_fields_by_type,json=referencedFieldsByType,proto3" json:"referenced_fields_by_type,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 1246 // This field is used to validate that the algorithm used to construct `stats_with_context` 1247 // matches similar algorithms in Apollo's servers. It is otherwise ignored and should not 1248 // be included in reports. 1249 InternalTracesContributingToStats []*Trace `protobuf:"bytes,3,rep,name=internal_traces_contributing_to_stats,json=internalTracesContributingToStats,proto3" json:"internal_traces_contributing_to_stats,omitempty"` 1250 } 1251 1252 func (x *TracesAndStats) Reset() { 1253 *x = TracesAndStats{} 1254 if protoimpl.UnsafeEnabled { 1255 mi := &file_apollo_trace_proto_msgTypes[12] 1256 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1257 ms.StoreMessageInfo(mi) 1258 } 1259 } 1260 1261 func (x *TracesAndStats) String() string { 1262 return protoimpl.X.MessageStringOf(x) 1263 } 1264 1265 func (*TracesAndStats) ProtoMessage() {} 1266 1267 func (x *TracesAndStats) ProtoReflect() protoreflect.Message { 1268 mi := &file_apollo_trace_proto_msgTypes[12] 1269 if protoimpl.UnsafeEnabled && x != nil { 1270 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1271 if ms.LoadMessageInfo() == nil { 1272 ms.StoreMessageInfo(mi) 1273 } 1274 return ms 1275 } 1276 return mi.MessageOf(x) 1277 } 1278 1279 // Deprecated: Use TracesAndStats.ProtoReflect.Descriptor instead. 1280 func (*TracesAndStats) Descriptor() ([]byte, []int) { 1281 return file_apollo_trace_proto_rawDescGZIP(), []int{12} 1282 } 1283 1284 func (x *TracesAndStats) GetTrace() []*Trace { 1285 if x != nil { 1286 return x.Trace 1287 } 1288 return nil 1289 } 1290 1291 func (x *TracesAndStats) GetStatsWithContext() []*ContextualizedStats { 1292 if x != nil { 1293 return x.StatsWithContext 1294 } 1295 return nil 1296 } 1297 1298 func (x *TracesAndStats) GetReferencedFieldsByType() map[string]*ReferencedFieldsForType { 1299 if x != nil { 1300 return x.ReferencedFieldsByType 1301 } 1302 return nil 1303 } 1304 1305 func (x *TracesAndStats) GetInternalTracesContributingToStats() []*Trace { 1306 if x != nil { 1307 return x.InternalTracesContributingToStats 1308 } 1309 return nil 1310 } 1311 1312 type Trace_CachePolicy struct { 1313 state protoimpl.MessageState 1314 sizeCache protoimpl.SizeCache 1315 unknownFields protoimpl.UnknownFields 1316 1317 Scope Trace_CachePolicy_Scope `protobuf:"varint,1,opt,name=scope,proto3,enum=Trace_CachePolicy_Scope" json:"scope,omitempty"` 1318 MaxAgeNs int64 `protobuf:"varint,2,opt,name=max_age_ns,json=maxAgeNs,proto3" json:"max_age_ns,omitempty"` // use 0 for absent, -1 for 0 1319 } 1320 1321 func (x *Trace_CachePolicy) Reset() { 1322 *x = Trace_CachePolicy{} 1323 if protoimpl.UnsafeEnabled { 1324 mi := &file_apollo_trace_proto_msgTypes[13] 1325 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1326 ms.StoreMessageInfo(mi) 1327 } 1328 } 1329 1330 func (x *Trace_CachePolicy) String() string { 1331 return protoimpl.X.MessageStringOf(x) 1332 } 1333 1334 func (*Trace_CachePolicy) ProtoMessage() {} 1335 1336 func (x *Trace_CachePolicy) ProtoReflect() protoreflect.Message { 1337 mi := &file_apollo_trace_proto_msgTypes[13] 1338 if protoimpl.UnsafeEnabled && x != nil { 1339 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1340 if ms.LoadMessageInfo() == nil { 1341 ms.StoreMessageInfo(mi) 1342 } 1343 return ms 1344 } 1345 return mi.MessageOf(x) 1346 } 1347 1348 // Deprecated: Use Trace_CachePolicy.ProtoReflect.Descriptor instead. 1349 func (*Trace_CachePolicy) Descriptor() ([]byte, []int) { 1350 return file_apollo_trace_proto_rawDescGZIP(), []int{0, 0} 1351 } 1352 1353 func (x *Trace_CachePolicy) GetScope() Trace_CachePolicy_Scope { 1354 if x != nil { 1355 return x.Scope 1356 } 1357 return Trace_CachePolicy_UNKNOWN 1358 } 1359 1360 func (x *Trace_CachePolicy) GetMaxAgeNs() int64 { 1361 if x != nil { 1362 return x.MaxAgeNs 1363 } 1364 return 0 1365 } 1366 1367 type Trace_Details struct { 1368 state protoimpl.MessageState 1369 sizeCache protoimpl.SizeCache 1370 unknownFields protoimpl.UnknownFields 1371 1372 // The variables associated with this query (unless the reporting agent is 1373 // configured to keep them all private). Values are JSON: ie, strings are 1374 // enclosed in double quotes, etc. The value of a private variable is 1375 // the empty string. 1376 VariablesJson map[string]string `protobuf:"bytes,4,rep,name=variables_json,json=variablesJson,proto3" json:"variables_json,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 1377 // This is deprecated and only used for legacy applications 1378 // don't include this in traces inside a FullTracesReport; the operation 1379 // name for these traces comes from the key of the traces_per_query map. 1380 OperationName string `protobuf:"bytes,3,opt,name=operation_name,json=operationName,proto3" json:"operation_name,omitempty"` 1381 } 1382 1383 func (x *Trace_Details) Reset() { 1384 *x = Trace_Details{} 1385 if protoimpl.UnsafeEnabled { 1386 mi := &file_apollo_trace_proto_msgTypes[14] 1387 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1388 ms.StoreMessageInfo(mi) 1389 } 1390 } 1391 1392 func (x *Trace_Details) String() string { 1393 return protoimpl.X.MessageStringOf(x) 1394 } 1395 1396 func (*Trace_Details) ProtoMessage() {} 1397 1398 func (x *Trace_Details) ProtoReflect() protoreflect.Message { 1399 mi := &file_apollo_trace_proto_msgTypes[14] 1400 if protoimpl.UnsafeEnabled && x != nil { 1401 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1402 if ms.LoadMessageInfo() == nil { 1403 ms.StoreMessageInfo(mi) 1404 } 1405 return ms 1406 } 1407 return mi.MessageOf(x) 1408 } 1409 1410 // Deprecated: Use Trace_Details.ProtoReflect.Descriptor instead. 1411 func (*Trace_Details) Descriptor() ([]byte, []int) { 1412 return file_apollo_trace_proto_rawDescGZIP(), []int{0, 1} 1413 } 1414 1415 func (x *Trace_Details) GetVariablesJson() map[string]string { 1416 if x != nil { 1417 return x.VariablesJson 1418 } 1419 return nil 1420 } 1421 1422 func (x *Trace_Details) GetOperationName() string { 1423 if x != nil { 1424 return x.OperationName 1425 } 1426 return "" 1427 } 1428 1429 type Trace_Error struct { 1430 state protoimpl.MessageState 1431 sizeCache protoimpl.SizeCache 1432 unknownFields protoimpl.UnknownFields 1433 1434 Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` // required 1435 Location []*Trace_Location `protobuf:"bytes,2,rep,name=location,proto3" json:"location,omitempty"` 1436 TimeNs uint64 `protobuf:"varint,3,opt,name=time_ns,json=timeNs,proto3" json:"time_ns,omitempty"` 1437 Json string `protobuf:"bytes,4,opt,name=json,proto3" json:"json,omitempty"` 1438 } 1439 1440 func (x *Trace_Error) Reset() { 1441 *x = Trace_Error{} 1442 if protoimpl.UnsafeEnabled { 1443 mi := &file_apollo_trace_proto_msgTypes[15] 1444 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1445 ms.StoreMessageInfo(mi) 1446 } 1447 } 1448 1449 func (x *Trace_Error) String() string { 1450 return protoimpl.X.MessageStringOf(x) 1451 } 1452 1453 func (*Trace_Error) ProtoMessage() {} 1454 1455 func (x *Trace_Error) ProtoReflect() protoreflect.Message { 1456 mi := &file_apollo_trace_proto_msgTypes[15] 1457 if protoimpl.UnsafeEnabled && x != nil { 1458 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1459 if ms.LoadMessageInfo() == nil { 1460 ms.StoreMessageInfo(mi) 1461 } 1462 return ms 1463 } 1464 return mi.MessageOf(x) 1465 } 1466 1467 // Deprecated: Use Trace_Error.ProtoReflect.Descriptor instead. 1468 func (*Trace_Error) Descriptor() ([]byte, []int) { 1469 return file_apollo_trace_proto_rawDescGZIP(), []int{0, 2} 1470 } 1471 1472 func (x *Trace_Error) GetMessage() string { 1473 if x != nil { 1474 return x.Message 1475 } 1476 return "" 1477 } 1478 1479 func (x *Trace_Error) GetLocation() []*Trace_Location { 1480 if x != nil { 1481 return x.Location 1482 } 1483 return nil 1484 } 1485 1486 func (x *Trace_Error) GetTimeNs() uint64 { 1487 if x != nil { 1488 return x.TimeNs 1489 } 1490 return 0 1491 } 1492 1493 func (x *Trace_Error) GetJson() string { 1494 if x != nil { 1495 return x.Json 1496 } 1497 return "" 1498 } 1499 1500 type Trace_HTTP struct { 1501 state protoimpl.MessageState 1502 sizeCache protoimpl.SizeCache 1503 unknownFields protoimpl.UnknownFields 1504 1505 Method Trace_HTTP_Method `protobuf:"varint,1,opt,name=method,proto3,enum=Trace_HTTP_Method" json:"method,omitempty"` 1506 Host string `protobuf:"bytes,2,opt,name=host,proto3" json:"host,omitempty"` 1507 Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` 1508 // Should exclude manual blacklist ("Auth" by default) 1509 RequestHeaders map[string]*Trace_HTTP_Values `protobuf:"bytes,4,rep,name=request_headers,json=requestHeaders,proto3" json:"request_headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 1510 ResponseHeaders map[string]*Trace_HTTP_Values `protobuf:"bytes,5,rep,name=response_headers,json=responseHeaders,proto3" json:"response_headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 1511 StatusCode uint32 `protobuf:"varint,6,opt,name=status_code,json=statusCode,proto3" json:"status_code,omitempty"` 1512 Secure bool `protobuf:"varint,8,opt,name=secure,proto3" json:"secure,omitempty"` // TLS was used 1513 Protocol string `protobuf:"bytes,9,opt,name=protocol,proto3" json:"protocol,omitempty"` // by convention "HTTP/1.0", "HTTP/1.1", "HTTP/2" or "h2" 1514 } 1515 1516 func (x *Trace_HTTP) Reset() { 1517 *x = Trace_HTTP{} 1518 if protoimpl.UnsafeEnabled { 1519 mi := &file_apollo_trace_proto_msgTypes[16] 1520 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1521 ms.StoreMessageInfo(mi) 1522 } 1523 } 1524 1525 func (x *Trace_HTTP) String() string { 1526 return protoimpl.X.MessageStringOf(x) 1527 } 1528 1529 func (*Trace_HTTP) ProtoMessage() {} 1530 1531 func (x *Trace_HTTP) ProtoReflect() protoreflect.Message { 1532 mi := &file_apollo_trace_proto_msgTypes[16] 1533 if protoimpl.UnsafeEnabled && x != nil { 1534 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1535 if ms.LoadMessageInfo() == nil { 1536 ms.StoreMessageInfo(mi) 1537 } 1538 return ms 1539 } 1540 return mi.MessageOf(x) 1541 } 1542 1543 // Deprecated: Use Trace_HTTP.ProtoReflect.Descriptor instead. 1544 func (*Trace_HTTP) Descriptor() ([]byte, []int) { 1545 return file_apollo_trace_proto_rawDescGZIP(), []int{0, 3} 1546 } 1547 1548 func (x *Trace_HTTP) GetMethod() Trace_HTTP_Method { 1549 if x != nil { 1550 return x.Method 1551 } 1552 return Trace_HTTP_UNKNOWN 1553 } 1554 1555 func (x *Trace_HTTP) GetHost() string { 1556 if x != nil { 1557 return x.Host 1558 } 1559 return "" 1560 } 1561 1562 func (x *Trace_HTTP) GetPath() string { 1563 if x != nil { 1564 return x.Path 1565 } 1566 return "" 1567 } 1568 1569 func (x *Trace_HTTP) GetRequestHeaders() map[string]*Trace_HTTP_Values { 1570 if x != nil { 1571 return x.RequestHeaders 1572 } 1573 return nil 1574 } 1575 1576 func (x *Trace_HTTP) GetResponseHeaders() map[string]*Trace_HTTP_Values { 1577 if x != nil { 1578 return x.ResponseHeaders 1579 } 1580 return nil 1581 } 1582 1583 func (x *Trace_HTTP) GetStatusCode() uint32 { 1584 if x != nil { 1585 return x.StatusCode 1586 } 1587 return 0 1588 } 1589 1590 func (x *Trace_HTTP) GetSecure() bool { 1591 if x != nil { 1592 return x.Secure 1593 } 1594 return false 1595 } 1596 1597 func (x *Trace_HTTP) GetProtocol() string { 1598 if x != nil { 1599 return x.Protocol 1600 } 1601 return "" 1602 } 1603 1604 type Trace_Location struct { 1605 state protoimpl.MessageState 1606 sizeCache protoimpl.SizeCache 1607 unknownFields protoimpl.UnknownFields 1608 1609 Line uint32 `protobuf:"varint,1,opt,name=line,proto3" json:"line,omitempty"` 1610 Column uint32 `protobuf:"varint,2,opt,name=column,proto3" json:"column,omitempty"` 1611 } 1612 1613 func (x *Trace_Location) Reset() { 1614 *x = Trace_Location{} 1615 if protoimpl.UnsafeEnabled { 1616 mi := &file_apollo_trace_proto_msgTypes[17] 1617 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1618 ms.StoreMessageInfo(mi) 1619 } 1620 } 1621 1622 func (x *Trace_Location) String() string { 1623 return protoimpl.X.MessageStringOf(x) 1624 } 1625 1626 func (*Trace_Location) ProtoMessage() {} 1627 1628 func (x *Trace_Location) ProtoReflect() protoreflect.Message { 1629 mi := &file_apollo_trace_proto_msgTypes[17] 1630 if protoimpl.UnsafeEnabled && x != nil { 1631 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1632 if ms.LoadMessageInfo() == nil { 1633 ms.StoreMessageInfo(mi) 1634 } 1635 return ms 1636 } 1637 return mi.MessageOf(x) 1638 } 1639 1640 // Deprecated: Use Trace_Location.ProtoReflect.Descriptor instead. 1641 func (*Trace_Location) Descriptor() ([]byte, []int) { 1642 return file_apollo_trace_proto_rawDescGZIP(), []int{0, 4} 1643 } 1644 1645 func (x *Trace_Location) GetLine() uint32 { 1646 if x != nil { 1647 return x.Line 1648 } 1649 return 0 1650 } 1651 1652 func (x *Trace_Location) GetColumn() uint32 { 1653 if x != nil { 1654 return x.Column 1655 } 1656 return 0 1657 } 1658 1659 // We store information on each resolver execution as a Node on a tree. 1660 // The structure of the tree corresponds to the structure of the GraphQL 1661 // response; it does not indicate the order in which resolvers were 1662 // invoked. Note that nodes representing indexes (and the root node) 1663 // don't contain all Node fields (eg types and times). 1664 type Trace_Node struct { 1665 state protoimpl.MessageState 1666 sizeCache protoimpl.SizeCache 1667 unknownFields protoimpl.UnknownFields 1668 1669 // The name of the field (for Nodes representing a resolver call) or the 1670 // index in a list (for intermediate Nodes representing elements of a list). 1671 // field_name is the name of the field as it appears in the GraphQL 1672 // response: ie, it may be an alias. (In that case, the original_field_name 1673 // field holds the actual field name from the schema.) In any context where 1674 // we're building up a path, we use the response_name rather than the 1675 // original_field_name. 1676 // 1677 // Types that are assignable to Id: 1678 // *Trace_Node_ResponseName 1679 // *Trace_Node_Index 1680 Id isTrace_Node_Id `protobuf_oneof:"id"` 1681 OriginalFieldName string `protobuf:"bytes,14,opt,name=original_field_name,json=originalFieldName,proto3" json:"original_field_name,omitempty"` 1682 // The field's return type; e.g. "String!" for User.email:String! 1683 Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` 1684 // The field's parent type; e.g. "User" for User.email:String! 1685 ParentType string `protobuf:"bytes,13,opt,name=parent_type,json=parentType,proto3" json:"parent_type,omitempty"` 1686 CachePolicy *Trace_CachePolicy `protobuf:"bytes,5,opt,name=cache_policy,json=cachePolicy,proto3" json:"cache_policy,omitempty"` 1687 // relative to the trace's start_time, in ns 1688 StartTime uint64 `protobuf:"varint,8,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` 1689 // relative to the trace's start_time, in ns 1690 EndTime uint64 `protobuf:"varint,9,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` 1691 Error []*Trace_Error `protobuf:"bytes,11,rep,name=error,proto3" json:"error,omitempty"` 1692 Child []*Trace_Node `protobuf:"bytes,12,rep,name=child,proto3" json:"child,omitempty"` 1693 } 1694 1695 func (x *Trace_Node) Reset() { 1696 *x = Trace_Node{} 1697 if protoimpl.UnsafeEnabled { 1698 mi := &file_apollo_trace_proto_msgTypes[18] 1699 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1700 ms.StoreMessageInfo(mi) 1701 } 1702 } 1703 1704 func (x *Trace_Node) String() string { 1705 return protoimpl.X.MessageStringOf(x) 1706 } 1707 1708 func (*Trace_Node) ProtoMessage() {} 1709 1710 func (x *Trace_Node) ProtoReflect() protoreflect.Message { 1711 mi := &file_apollo_trace_proto_msgTypes[18] 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 Trace_Node.ProtoReflect.Descriptor instead. 1723 func (*Trace_Node) Descriptor() ([]byte, []int) { 1724 return file_apollo_trace_proto_rawDescGZIP(), []int{0, 5} 1725 } 1726 1727 func (m *Trace_Node) GetId() isTrace_Node_Id { 1728 if m != nil { 1729 return m.Id 1730 } 1731 return nil 1732 } 1733 1734 func (x *Trace_Node) GetResponseName() string { 1735 if x, ok := x.GetId().(*Trace_Node_ResponseName); ok { 1736 return x.ResponseName 1737 } 1738 return "" 1739 } 1740 1741 func (x *Trace_Node) GetIndex() uint32 { 1742 if x, ok := x.GetId().(*Trace_Node_Index); ok { 1743 return x.Index 1744 } 1745 return 0 1746 } 1747 1748 func (x *Trace_Node) GetOriginalFieldName() string { 1749 if x != nil { 1750 return x.OriginalFieldName 1751 } 1752 return "" 1753 } 1754 1755 func (x *Trace_Node) GetType() string { 1756 if x != nil { 1757 return x.Type 1758 } 1759 return "" 1760 } 1761 1762 func (x *Trace_Node) GetParentType() string { 1763 if x != nil { 1764 return x.ParentType 1765 } 1766 return "" 1767 } 1768 1769 func (x *Trace_Node) GetCachePolicy() *Trace_CachePolicy { 1770 if x != nil { 1771 return x.CachePolicy 1772 } 1773 return nil 1774 } 1775 1776 func (x *Trace_Node) GetStartTime() uint64 { 1777 if x != nil { 1778 return x.StartTime 1779 } 1780 return 0 1781 } 1782 1783 func (x *Trace_Node) GetEndTime() uint64 { 1784 if x != nil { 1785 return x.EndTime 1786 } 1787 return 0 1788 } 1789 1790 func (x *Trace_Node) GetError() []*Trace_Error { 1791 if x != nil { 1792 return x.Error 1793 } 1794 return nil 1795 } 1796 1797 func (x *Trace_Node) GetChild() []*Trace_Node { 1798 if x != nil { 1799 return x.Child 1800 } 1801 return nil 1802 } 1803 1804 type isTrace_Node_Id interface { 1805 isTrace_Node_Id() 1806 } 1807 1808 type Trace_Node_ResponseName struct { 1809 ResponseName string `protobuf:"bytes,1,opt,name=response_name,json=responseName,proto3,oneof"` 1810 } 1811 1812 type Trace_Node_Index struct { 1813 Index uint32 `protobuf:"varint,2,opt,name=index,proto3,oneof"` 1814 } 1815 1816 func (*Trace_Node_ResponseName) isTrace_Node_Id() {} 1817 1818 func (*Trace_Node_Index) isTrace_Node_Id() {} 1819 1820 // represents a node in the query plan, under which there is a trace tree for that service fetch. 1821 // In particular, each fetch node represents a call to an implementing service, and calls to implementing 1822 // services may not be unique. See https://github.com/apollographql/apollo-server/blob/main/packages/apollo-gateway/src/QueryPlan.ts 1823 // for more information and details. 1824 type Trace_QueryPlanNode struct { 1825 state protoimpl.MessageState 1826 sizeCache protoimpl.SizeCache 1827 unknownFields protoimpl.UnknownFields 1828 1829 // Types that are assignable to Node: 1830 // *Trace_QueryPlanNode_Sequence 1831 // *Trace_QueryPlanNode_Parallel 1832 // *Trace_QueryPlanNode_Fetch 1833 // *Trace_QueryPlanNode_Flatten 1834 Node isTrace_QueryPlanNode_Node `protobuf_oneof:"node"` 1835 } 1836 1837 func (x *Trace_QueryPlanNode) Reset() { 1838 *x = Trace_QueryPlanNode{} 1839 if protoimpl.UnsafeEnabled { 1840 mi := &file_apollo_trace_proto_msgTypes[19] 1841 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1842 ms.StoreMessageInfo(mi) 1843 } 1844 } 1845 1846 func (x *Trace_QueryPlanNode) String() string { 1847 return protoimpl.X.MessageStringOf(x) 1848 } 1849 1850 func (*Trace_QueryPlanNode) ProtoMessage() {} 1851 1852 func (x *Trace_QueryPlanNode) ProtoReflect() protoreflect.Message { 1853 mi := &file_apollo_trace_proto_msgTypes[19] 1854 if protoimpl.UnsafeEnabled && x != nil { 1855 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1856 if ms.LoadMessageInfo() == nil { 1857 ms.StoreMessageInfo(mi) 1858 } 1859 return ms 1860 } 1861 return mi.MessageOf(x) 1862 } 1863 1864 // Deprecated: Use Trace_QueryPlanNode.ProtoReflect.Descriptor instead. 1865 func (*Trace_QueryPlanNode) Descriptor() ([]byte, []int) { 1866 return file_apollo_trace_proto_rawDescGZIP(), []int{0, 6} 1867 } 1868 1869 func (m *Trace_QueryPlanNode) GetNode() isTrace_QueryPlanNode_Node { 1870 if m != nil { 1871 return m.Node 1872 } 1873 return nil 1874 } 1875 1876 func (x *Trace_QueryPlanNode) GetSequence() *Trace_QueryPlanNode_SequenceNode { 1877 if x, ok := x.GetNode().(*Trace_QueryPlanNode_Sequence); ok { 1878 return x.Sequence 1879 } 1880 return nil 1881 } 1882 1883 func (x *Trace_QueryPlanNode) GetParallel() *Trace_QueryPlanNode_ParallelNode { 1884 if x, ok := x.GetNode().(*Trace_QueryPlanNode_Parallel); ok { 1885 return x.Parallel 1886 } 1887 return nil 1888 } 1889 1890 func (x *Trace_QueryPlanNode) GetFetch() *Trace_QueryPlanNode_FetchNode { 1891 if x, ok := x.GetNode().(*Trace_QueryPlanNode_Fetch); ok { 1892 return x.Fetch 1893 } 1894 return nil 1895 } 1896 1897 func (x *Trace_QueryPlanNode) GetFlatten() *Trace_QueryPlanNode_FlattenNode { 1898 if x, ok := x.GetNode().(*Trace_QueryPlanNode_Flatten); ok { 1899 return x.Flatten 1900 } 1901 return nil 1902 } 1903 1904 type isTrace_QueryPlanNode_Node interface { 1905 isTrace_QueryPlanNode_Node() 1906 } 1907 1908 type Trace_QueryPlanNode_Sequence struct { 1909 Sequence *Trace_QueryPlanNode_SequenceNode `protobuf:"bytes,1,opt,name=sequence,proto3,oneof"` 1910 } 1911 1912 type Trace_QueryPlanNode_Parallel struct { 1913 Parallel *Trace_QueryPlanNode_ParallelNode `protobuf:"bytes,2,opt,name=parallel,proto3,oneof"` 1914 } 1915 1916 type Trace_QueryPlanNode_Fetch struct { 1917 Fetch *Trace_QueryPlanNode_FetchNode `protobuf:"bytes,3,opt,name=fetch,proto3,oneof"` 1918 } 1919 1920 type Trace_QueryPlanNode_Flatten struct { 1921 Flatten *Trace_QueryPlanNode_FlattenNode `protobuf:"bytes,4,opt,name=flatten,proto3,oneof"` 1922 } 1923 1924 func (*Trace_QueryPlanNode_Sequence) isTrace_QueryPlanNode_Node() {} 1925 1926 func (*Trace_QueryPlanNode_Parallel) isTrace_QueryPlanNode_Node() {} 1927 1928 func (*Trace_QueryPlanNode_Fetch) isTrace_QueryPlanNode_Node() {} 1929 1930 func (*Trace_QueryPlanNode_Flatten) isTrace_QueryPlanNode_Node() {} 1931 1932 type Trace_HTTP_Values struct { 1933 state protoimpl.MessageState 1934 sizeCache protoimpl.SizeCache 1935 unknownFields protoimpl.UnknownFields 1936 1937 Value []string `protobuf:"bytes,1,rep,name=value,proto3" json:"value,omitempty"` 1938 } 1939 1940 func (x *Trace_HTTP_Values) Reset() { 1941 *x = Trace_HTTP_Values{} 1942 if protoimpl.UnsafeEnabled { 1943 mi := &file_apollo_trace_proto_msgTypes[21] 1944 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1945 ms.StoreMessageInfo(mi) 1946 } 1947 } 1948 1949 func (x *Trace_HTTP_Values) String() string { 1950 return protoimpl.X.MessageStringOf(x) 1951 } 1952 1953 func (*Trace_HTTP_Values) ProtoMessage() {} 1954 1955 func (x *Trace_HTTP_Values) ProtoReflect() protoreflect.Message { 1956 mi := &file_apollo_trace_proto_msgTypes[21] 1957 if protoimpl.UnsafeEnabled && x != nil { 1958 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1959 if ms.LoadMessageInfo() == nil { 1960 ms.StoreMessageInfo(mi) 1961 } 1962 return ms 1963 } 1964 return mi.MessageOf(x) 1965 } 1966 1967 // Deprecated: Use Trace_HTTP_Values.ProtoReflect.Descriptor instead. 1968 func (*Trace_HTTP_Values) Descriptor() ([]byte, []int) { 1969 return file_apollo_trace_proto_rawDescGZIP(), []int{0, 3, 0} 1970 } 1971 1972 func (x *Trace_HTTP_Values) GetValue() []string { 1973 if x != nil { 1974 return x.Value 1975 } 1976 return nil 1977 } 1978 1979 // This represents a set of nodes to be executed sequentially by the Gateway executor 1980 type Trace_QueryPlanNode_SequenceNode struct { 1981 state protoimpl.MessageState 1982 sizeCache protoimpl.SizeCache 1983 unknownFields protoimpl.UnknownFields 1984 1985 Nodes []*Trace_QueryPlanNode `protobuf:"bytes,1,rep,name=nodes,proto3" json:"nodes,omitempty"` 1986 } 1987 1988 func (x *Trace_QueryPlanNode_SequenceNode) Reset() { 1989 *x = Trace_QueryPlanNode_SequenceNode{} 1990 if protoimpl.UnsafeEnabled { 1991 mi := &file_apollo_trace_proto_msgTypes[24] 1992 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1993 ms.StoreMessageInfo(mi) 1994 } 1995 } 1996 1997 func (x *Trace_QueryPlanNode_SequenceNode) String() string { 1998 return protoimpl.X.MessageStringOf(x) 1999 } 2000 2001 func (*Trace_QueryPlanNode_SequenceNode) ProtoMessage() {} 2002 2003 func (x *Trace_QueryPlanNode_SequenceNode) ProtoReflect() protoreflect.Message { 2004 mi := &file_apollo_trace_proto_msgTypes[24] 2005 if protoimpl.UnsafeEnabled && x != nil { 2006 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2007 if ms.LoadMessageInfo() == nil { 2008 ms.StoreMessageInfo(mi) 2009 } 2010 return ms 2011 } 2012 return mi.MessageOf(x) 2013 } 2014 2015 // Deprecated: Use Trace_QueryPlanNode_SequenceNode.ProtoReflect.Descriptor instead. 2016 func (*Trace_QueryPlanNode_SequenceNode) Descriptor() ([]byte, []int) { 2017 return file_apollo_trace_proto_rawDescGZIP(), []int{0, 6, 0} 2018 } 2019 2020 func (x *Trace_QueryPlanNode_SequenceNode) GetNodes() []*Trace_QueryPlanNode { 2021 if x != nil { 2022 return x.Nodes 2023 } 2024 return nil 2025 } 2026 2027 // This represents a set of nodes to be executed in parallel by the Gateway executor 2028 type Trace_QueryPlanNode_ParallelNode struct { 2029 state protoimpl.MessageState 2030 sizeCache protoimpl.SizeCache 2031 unknownFields protoimpl.UnknownFields 2032 2033 Nodes []*Trace_QueryPlanNode `protobuf:"bytes,1,rep,name=nodes,proto3" json:"nodes,omitempty"` 2034 } 2035 2036 func (x *Trace_QueryPlanNode_ParallelNode) Reset() { 2037 *x = Trace_QueryPlanNode_ParallelNode{} 2038 if protoimpl.UnsafeEnabled { 2039 mi := &file_apollo_trace_proto_msgTypes[25] 2040 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2041 ms.StoreMessageInfo(mi) 2042 } 2043 } 2044 2045 func (x *Trace_QueryPlanNode_ParallelNode) String() string { 2046 return protoimpl.X.MessageStringOf(x) 2047 } 2048 2049 func (*Trace_QueryPlanNode_ParallelNode) ProtoMessage() {} 2050 2051 func (x *Trace_QueryPlanNode_ParallelNode) ProtoReflect() protoreflect.Message { 2052 mi := &file_apollo_trace_proto_msgTypes[25] 2053 if protoimpl.UnsafeEnabled && x != nil { 2054 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2055 if ms.LoadMessageInfo() == nil { 2056 ms.StoreMessageInfo(mi) 2057 } 2058 return ms 2059 } 2060 return mi.MessageOf(x) 2061 } 2062 2063 // Deprecated: Use Trace_QueryPlanNode_ParallelNode.ProtoReflect.Descriptor instead. 2064 func (*Trace_QueryPlanNode_ParallelNode) Descriptor() ([]byte, []int) { 2065 return file_apollo_trace_proto_rawDescGZIP(), []int{0, 6, 1} 2066 } 2067 2068 func (x *Trace_QueryPlanNode_ParallelNode) GetNodes() []*Trace_QueryPlanNode { 2069 if x != nil { 2070 return x.Nodes 2071 } 2072 return nil 2073 } 2074 2075 // This represents a node to send an operation to an implementing service 2076 type Trace_QueryPlanNode_FetchNode struct { 2077 state protoimpl.MessageState 2078 sizeCache protoimpl.SizeCache 2079 unknownFields protoimpl.UnknownFields 2080 2081 // XXX When we want to include more details about the sub-operation that was 2082 // executed against this service, we should include that here in each fetch node. 2083 // This might include an operation signature, requires directive, reference resolutions, etc. 2084 ServiceName string `protobuf:"bytes,1,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"` 2085 TraceParsingFailed bool `protobuf:"varint,2,opt,name=trace_parsing_failed,json=traceParsingFailed,proto3" json:"trace_parsing_failed,omitempty"` 2086 // This Trace only contains start_time, end_time, duration_ns, and root; 2087 // all timings were calculated **on the federated service**, and clock skew 2088 // will be handled by the ingress server. 2089 Trace *Trace `protobuf:"bytes,3,opt,name=trace,proto3" json:"trace,omitempty"` 2090 // relative to the outer trace's start_time, in ns, measured in the gateway. 2091 SentTimeOffset uint64 `protobuf:"varint,4,opt,name=sent_time_offset,json=sentTimeOffset,proto3" json:"sent_time_offset,omitempty"` 2092 // Wallclock times measured in the gateway for when this operation was 2093 // sent and received. 2094 SentTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=sent_time,json=sentTime,proto3" json:"sent_time,omitempty"` 2095 ReceivedTime *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=received_time,json=receivedTime,proto3" json:"received_time,omitempty"` 2096 } 2097 2098 func (x *Trace_QueryPlanNode_FetchNode) Reset() { 2099 *x = Trace_QueryPlanNode_FetchNode{} 2100 if protoimpl.UnsafeEnabled { 2101 mi := &file_apollo_trace_proto_msgTypes[26] 2102 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2103 ms.StoreMessageInfo(mi) 2104 } 2105 } 2106 2107 func (x *Trace_QueryPlanNode_FetchNode) String() string { 2108 return protoimpl.X.MessageStringOf(x) 2109 } 2110 2111 func (*Trace_QueryPlanNode_FetchNode) ProtoMessage() {} 2112 2113 func (x *Trace_QueryPlanNode_FetchNode) ProtoReflect() protoreflect.Message { 2114 mi := &file_apollo_trace_proto_msgTypes[26] 2115 if protoimpl.UnsafeEnabled && x != nil { 2116 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2117 if ms.LoadMessageInfo() == nil { 2118 ms.StoreMessageInfo(mi) 2119 } 2120 return ms 2121 } 2122 return mi.MessageOf(x) 2123 } 2124 2125 // Deprecated: Use Trace_QueryPlanNode_FetchNode.ProtoReflect.Descriptor instead. 2126 func (*Trace_QueryPlanNode_FetchNode) Descriptor() ([]byte, []int) { 2127 return file_apollo_trace_proto_rawDescGZIP(), []int{0, 6, 2} 2128 } 2129 2130 func (x *Trace_QueryPlanNode_FetchNode) GetServiceName() string { 2131 if x != nil { 2132 return x.ServiceName 2133 } 2134 return "" 2135 } 2136 2137 func (x *Trace_QueryPlanNode_FetchNode) GetTraceParsingFailed() bool { 2138 if x != nil { 2139 return x.TraceParsingFailed 2140 } 2141 return false 2142 } 2143 2144 func (x *Trace_QueryPlanNode_FetchNode) GetTrace() *Trace { 2145 if x != nil { 2146 return x.Trace 2147 } 2148 return nil 2149 } 2150 2151 func (x *Trace_QueryPlanNode_FetchNode) GetSentTimeOffset() uint64 { 2152 if x != nil { 2153 return x.SentTimeOffset 2154 } 2155 return 0 2156 } 2157 2158 func (x *Trace_QueryPlanNode_FetchNode) GetSentTime() *timestamppb.Timestamp { 2159 if x != nil { 2160 return x.SentTime 2161 } 2162 return nil 2163 } 2164 2165 func (x *Trace_QueryPlanNode_FetchNode) GetReceivedTime() *timestamppb.Timestamp { 2166 if x != nil { 2167 return x.ReceivedTime 2168 } 2169 return nil 2170 } 2171 2172 // This node represents a way to reach into the response path and attach related entities. 2173 // XXX Flatten is really not the right name and this node may be renamed in the query planner. 2174 type Trace_QueryPlanNode_FlattenNode struct { 2175 state protoimpl.MessageState 2176 sizeCache protoimpl.SizeCache 2177 unknownFields protoimpl.UnknownFields 2178 2179 ResponsePath []*Trace_QueryPlanNode_ResponsePathElement `protobuf:"bytes,1,rep,name=response_path,json=responsePath,proto3" json:"response_path,omitempty"` 2180 Node *Trace_QueryPlanNode `protobuf:"bytes,2,opt,name=node,proto3" json:"node,omitempty"` 2181 } 2182 2183 func (x *Trace_QueryPlanNode_FlattenNode) Reset() { 2184 *x = Trace_QueryPlanNode_FlattenNode{} 2185 if protoimpl.UnsafeEnabled { 2186 mi := &file_apollo_trace_proto_msgTypes[27] 2187 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2188 ms.StoreMessageInfo(mi) 2189 } 2190 } 2191 2192 func (x *Trace_QueryPlanNode_FlattenNode) String() string { 2193 return protoimpl.X.MessageStringOf(x) 2194 } 2195 2196 func (*Trace_QueryPlanNode_FlattenNode) ProtoMessage() {} 2197 2198 func (x *Trace_QueryPlanNode_FlattenNode) ProtoReflect() protoreflect.Message { 2199 mi := &file_apollo_trace_proto_msgTypes[27] 2200 if protoimpl.UnsafeEnabled && x != nil { 2201 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2202 if ms.LoadMessageInfo() == nil { 2203 ms.StoreMessageInfo(mi) 2204 } 2205 return ms 2206 } 2207 return mi.MessageOf(x) 2208 } 2209 2210 // Deprecated: Use Trace_QueryPlanNode_FlattenNode.ProtoReflect.Descriptor instead. 2211 func (*Trace_QueryPlanNode_FlattenNode) Descriptor() ([]byte, []int) { 2212 return file_apollo_trace_proto_rawDescGZIP(), []int{0, 6, 3} 2213 } 2214 2215 func (x *Trace_QueryPlanNode_FlattenNode) GetResponsePath() []*Trace_QueryPlanNode_ResponsePathElement { 2216 if x != nil { 2217 return x.ResponsePath 2218 } 2219 return nil 2220 } 2221 2222 func (x *Trace_QueryPlanNode_FlattenNode) GetNode() *Trace_QueryPlanNode { 2223 if x != nil { 2224 return x.Node 2225 } 2226 return nil 2227 } 2228 2229 type Trace_QueryPlanNode_ResponsePathElement struct { 2230 state protoimpl.MessageState 2231 sizeCache protoimpl.SizeCache 2232 unknownFields protoimpl.UnknownFields 2233 2234 // Types that are assignable to Id: 2235 // *Trace_QueryPlanNode_ResponsePathElement_FieldName 2236 // *Trace_QueryPlanNode_ResponsePathElement_Index 2237 Id isTrace_QueryPlanNode_ResponsePathElement_Id `protobuf_oneof:"id"` 2238 } 2239 2240 func (x *Trace_QueryPlanNode_ResponsePathElement) Reset() { 2241 *x = Trace_QueryPlanNode_ResponsePathElement{} 2242 if protoimpl.UnsafeEnabled { 2243 mi := &file_apollo_trace_proto_msgTypes[28] 2244 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2245 ms.StoreMessageInfo(mi) 2246 } 2247 } 2248 2249 func (x *Trace_QueryPlanNode_ResponsePathElement) String() string { 2250 return protoimpl.X.MessageStringOf(x) 2251 } 2252 2253 func (*Trace_QueryPlanNode_ResponsePathElement) ProtoMessage() {} 2254 2255 func (x *Trace_QueryPlanNode_ResponsePathElement) ProtoReflect() protoreflect.Message { 2256 mi := &file_apollo_trace_proto_msgTypes[28] 2257 if protoimpl.UnsafeEnabled && x != nil { 2258 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2259 if ms.LoadMessageInfo() == nil { 2260 ms.StoreMessageInfo(mi) 2261 } 2262 return ms 2263 } 2264 return mi.MessageOf(x) 2265 } 2266 2267 // Deprecated: Use Trace_QueryPlanNode_ResponsePathElement.ProtoReflect.Descriptor instead. 2268 func (*Trace_QueryPlanNode_ResponsePathElement) Descriptor() ([]byte, []int) { 2269 return file_apollo_trace_proto_rawDescGZIP(), []int{0, 6, 4} 2270 } 2271 2272 func (m *Trace_QueryPlanNode_ResponsePathElement) GetId() isTrace_QueryPlanNode_ResponsePathElement_Id { 2273 if m != nil { 2274 return m.Id 2275 } 2276 return nil 2277 } 2278 2279 func (x *Trace_QueryPlanNode_ResponsePathElement) GetFieldName() string { 2280 if x, ok := x.GetId().(*Trace_QueryPlanNode_ResponsePathElement_FieldName); ok { 2281 return x.FieldName 2282 } 2283 return "" 2284 } 2285 2286 func (x *Trace_QueryPlanNode_ResponsePathElement) GetIndex() uint32 { 2287 if x, ok := x.GetId().(*Trace_QueryPlanNode_ResponsePathElement_Index); ok { 2288 return x.Index 2289 } 2290 return 0 2291 } 2292 2293 type isTrace_QueryPlanNode_ResponsePathElement_Id interface { 2294 isTrace_QueryPlanNode_ResponsePathElement_Id() 2295 } 2296 2297 type Trace_QueryPlanNode_ResponsePathElement_FieldName struct { 2298 FieldName string `protobuf:"bytes,1,opt,name=field_name,json=fieldName,proto3,oneof"` 2299 } 2300 2301 type Trace_QueryPlanNode_ResponsePathElement_Index struct { 2302 Index uint32 `protobuf:"varint,2,opt,name=index,proto3,oneof"` 2303 } 2304 2305 func (*Trace_QueryPlanNode_ResponsePathElement_FieldName) isTrace_QueryPlanNode_ResponsePathElement_Id() { 2306 } 2307 2308 func (*Trace_QueryPlanNode_ResponsePathElement_Index) isTrace_QueryPlanNode_ResponsePathElement_Id() { 2309 } 2310 2311 var File_apollo_trace_proto protoreflect.FileDescriptor 2312 2313 var file_apollo_trace_proto_rawDesc = []byte{ 2314 0x0a, 0x12, 0x61, 0x70, 0x6f, 0x6c, 0x6c, 0x6f, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x70, 2315 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 2316 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 2317 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb6, 0x1a, 0x0a, 0x05, 0x54, 0x72, 0x61, 0x63, 0x65, 0x12, 2318 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 2319 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 2320 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 2321 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 2322 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 2323 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 2324 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 2325 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x73, 2326 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 2327 0x4e, 0x73, 0x12, 0x1f, 0x0a, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 2328 0x32, 0x0b, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x72, 2329 0x6f, 0x6f, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 2330 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 2331 0x65, 0x12, 0x38, 0x0a, 0x17, 0x75, 0x6e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x4f, 2332 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x64, 0x79, 0x18, 0x1b, 0x20, 0x01, 2333 0x28, 0x09, 0x52, 0x17, 0x75, 0x6e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x4f, 0x70, 2334 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x38, 0x0a, 0x17, 0x75, 2335 0x6e, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 2336 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x17, 0x75, 0x6e, 2337 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 2338 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 2339 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x44, 2340 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 2341 0x1f, 0x0a, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 2342 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 2343 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 2344 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 2345 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x04, 0x68, 0x74, 0x74, 0x70, 0x18, 2346 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x48, 0x54, 2347 0x54, 0x50, 0x52, 0x04, 0x68, 0x74, 0x74, 0x70, 0x12, 0x35, 0x0a, 0x0c, 0x63, 0x61, 0x63, 0x68, 2348 0x65, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 2349 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x6f, 0x6c, 0x69, 2350 0x63, 0x79, 0x52, 0x0b, 0x63, 0x61, 0x63, 0x68, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 2351 0x33, 0x0a, 0x0a, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x18, 0x1a, 0x20, 2352 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x51, 0x75, 0x65, 0x72, 2353 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x71, 0x75, 0x65, 0x72, 0x79, 2354 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x2f, 0x0a, 0x14, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x71, 0x75, 0x65, 2355 0x72, 0x79, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x68, 0x69, 0x74, 0x18, 0x14, 0x20, 0x01, 2356 0x28, 0x08, 0x52, 0x11, 0x66, 0x75, 0x6c, 0x6c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x61, 0x63, 2357 0x68, 0x65, 0x48, 0x69, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 2358 0x65, 0x64, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x68, 0x69, 0x74, 0x18, 0x15, 0x20, 0x01, 2359 0x28, 0x08, 0x52, 0x11, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x51, 0x75, 0x65, 2360 0x72, 0x79, 0x48, 0x69, 0x74, 0x12, 0x38, 0x0a, 0x18, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 2361 0x65, 0x64, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 2362 0x72, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 2363 0x65, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 2364 0x31, 0x0a, 0x14, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x5f, 0x6f, 0x70, 2365 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x72, 2366 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 2367 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x13, 0x66, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x5f, 2368 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x19, 0x20, 0x01, 0x28, 0x08, 0x52, 2369 0x12, 0x66, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 2370 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x16, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x65, 0x78, 0x65, 2371 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x1f, 0x20, 2372 0x01, 0x28, 0x01, 0x52, 0x14, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 2373 0x69, 0x6f, 0x6e, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x1a, 0x8a, 0x01, 0x0a, 0x0b, 0x43, 0x61, 2374 0x63, 0x68, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x73, 0x63, 0x6f, 2375 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 2376 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53, 0x63, 0x6f, 2377 0x70, 0x65, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x0a, 0x6d, 0x61, 0x78, 2378 0x5f, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6d, 2379 0x61, 0x78, 0x41, 0x67, 0x65, 0x4e, 0x73, 0x22, 0x2d, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x70, 0x65, 2380 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 2381 0x06, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x49, 2382 0x56, 0x41, 0x54, 0x45, 0x10, 0x02, 0x1a, 0xbc, 0x01, 0x0a, 0x07, 0x44, 0x65, 0x74, 0x61, 0x69, 2383 0x6c, 0x73, 0x12, 0x48, 0x0a, 0x0e, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x5f, 2384 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x54, 0x72, 0x61, 2385 0x63, 0x65, 0x2e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 2386 0x62, 0x6c, 0x65, 0x73, 0x4a, 0x73, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x76, 2387 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x4a, 0x73, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 2388 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 2389 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 2390 0x61, 0x6d, 0x65, 0x1a, 0x40, 0x0a, 0x12, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 2391 0x4a, 0x73, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 2392 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 2393 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 2394 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x7b, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 2395 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 2396 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 2397 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x54, 0x72, 0x61, 2398 0x63, 0x65, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 2399 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6e, 0x73, 2400 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x74, 0x69, 0x6d, 0x65, 0x4e, 0x73, 0x12, 0x12, 2401 0x0a, 0x04, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6a, 0x73, 2402 0x6f, 0x6e, 0x1a, 0x8e, 0x05, 0x0a, 0x04, 0x48, 0x54, 0x54, 0x50, 0x12, 0x2a, 0x0a, 0x06, 0x6d, 2403 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x54, 0x72, 2404 0x61, 0x63, 0x65, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 2405 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 2406 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 2407 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 2408 0x48, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 2409 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 2410 0x2e, 0x48, 0x54, 0x54, 0x50, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 2411 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, 2412 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x4b, 0x0a, 0x10, 0x72, 0x65, 0x73, 2413 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 2414 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x48, 0x54, 0x54, 0x50, 2415 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 2416 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 2417 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 2418 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x73, 0x74, 0x61, 2419 0x74, 0x75, 0x73, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x75, 0x72, 2420 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x12, 2421 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 2422 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x1a, 0x1e, 0x0a, 0x06, 0x56, 2423 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 2424 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x55, 0x0a, 0x13, 0x52, 2425 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 2426 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 2427 0x03, 0x6b, 0x65, 0x79, 0x12, 0x28, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 2428 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x48, 0x54, 0x54, 0x50, 2429 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 2430 0x38, 0x01, 0x1a, 0x56, 0x0a, 0x14, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 2431 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 2432 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x28, 0x0a, 0x05, 2433 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x54, 0x72, 2434 0x61, 0x63, 0x65, 0x2e, 0x48, 0x54, 0x54, 0x50, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 2435 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x77, 0x0a, 0x06, 0x4d, 0x65, 2436 0x74, 0x68, 0x6f, 0x64, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 2437 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x01, 0x12, 0x07, 2438 0x0a, 0x03, 0x47, 0x45, 0x54, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x45, 0x41, 0x44, 0x10, 2439 0x03, 0x12, 0x08, 0x0a, 0x04, 0x50, 0x4f, 0x53, 0x54, 0x10, 0x04, 0x12, 0x07, 0x0a, 0x03, 0x50, 2440 0x55, 0x54, 0x10, 0x05, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x06, 2441 0x12, 0x09, 0x0a, 0x05, 0x54, 0x52, 0x41, 0x43, 0x45, 0x10, 0x07, 0x12, 0x0b, 0x0a, 0x07, 0x43, 2442 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x10, 0x08, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x41, 0x54, 0x43, 2443 0x48, 0x10, 0x09, 0x1a, 0x36, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 2444 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x6c, 2445 0x69, 0x6e, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x02, 0x20, 2446 0x01, 0x28, 0x0d, 0x52, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x1a, 0xee, 0x02, 0x0a, 0x04, 2447 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x25, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 2448 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x72, 2449 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x05, 0x69, 2450 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x69, 0x6e, 2451 0x64, 0x65, 0x78, 0x12, 0x2e, 0x0a, 0x13, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x5f, 2452 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 2453 0x52, 0x11, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 2454 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 2455 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 2456 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x61, 2457 0x72, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x35, 0x0a, 0x0c, 0x63, 0x61, 0x63, 0x68, 2458 0x65, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 2459 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65, 0x50, 0x6f, 0x6c, 0x69, 2460 0x63, 0x79, 0x52, 0x0b, 0x63, 0x61, 0x63, 0x68, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 2461 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 2462 0x01, 0x28, 0x04, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 2463 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 2464 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x05, 0x65, 0x72, 0x72, 2465 0x6f, 0x72, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 2466 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x21, 0x0a, 2467 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x54, 2468 0x72, 0x61, 0x63, 0x65, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, 2469 0x42, 0x04, 0x0a, 0x02, 0x69, 0x64, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x1a, 0x8b, 0x07, 0x0a, 2470 0x0d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x3f, 2471 0x0a, 0x08, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 2472 0x32, 0x21, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6c, 2473 0x61, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x2e, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 2474 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x08, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x12, 2475 0x3f, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 2476 0x0b, 0x32, 0x21, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 2477 0x6c, 0x61, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 2478 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x08, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 2479 0x12, 0x36, 0x0a, 0x05, 0x66, 0x65, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 2480 0x1e, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6c, 0x61, 2481 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x48, 2482 0x00, 0x52, 0x05, 0x66, 0x65, 0x74, 0x63, 0x68, 0x12, 0x3c, 0x0a, 0x07, 0x66, 0x6c, 0x61, 0x74, 2483 0x74, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x54, 0x72, 0x61, 0x63, 2484 0x65, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x2e, 2485 0x46, 0x6c, 0x61, 0x74, 0x74, 0x65, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x07, 0x66, 2486 0x6c, 0x61, 0x74, 0x74, 0x65, 0x6e, 0x1a, 0x3a, 0x0a, 0x0c, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 2487 0x63, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 2488 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x51, 0x75, 2489 0x65, 0x72, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x6e, 0x6f, 0x64, 2490 0x65, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x50, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x4e, 0x6f, 2491 0x64, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 2492 0x0b, 0x32, 0x14, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 2493 0x6c, 0x61, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x1a, 0xa2, 2494 0x02, 0x0a, 0x09, 0x46, 0x65, 0x74, 0x63, 0x68, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, 0x0c, 2495 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 2496 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 2497 0x30, 0x0a, 0x14, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x73, 0x69, 0x6e, 0x67, 2498 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x74, 2499 0x72, 0x61, 0x63, 0x65, 0x50, 0x61, 0x72, 0x73, 0x69, 0x6e, 0x67, 0x46, 0x61, 0x69, 0x6c, 0x65, 2500 0x64, 0x12, 0x1c, 0x0a, 0x05, 0x74, 0x72, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 2501 0x32, 0x06, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x05, 0x74, 0x72, 0x61, 0x63, 0x65, 0x12, 2502 0x28, 0x0a, 0x10, 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6f, 0x66, 0x66, 2503 0x73, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x73, 0x65, 0x6e, 0x74, 0x54, 2504 0x69, 0x6d, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x37, 0x0a, 0x09, 0x73, 0x65, 0x6e, 2505 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 2506 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 2507 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x08, 0x73, 0x65, 0x6e, 0x74, 0x54, 0x69, 2508 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x5f, 0x74, 2509 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 2510 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 2511 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x54, 2512 0x69, 0x6d, 0x65, 0x1a, 0x86, 0x01, 0x0a, 0x0b, 0x46, 0x6c, 0x61, 0x74, 0x74, 0x65, 0x6e, 0x4e, 2513 0x6f, 0x64, 0x65, 0x12, 0x4d, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 2514 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x54, 0x72, 0x61, 2515 0x63, 0x65, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6c, 0x61, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 2516 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x61, 0x74, 0x68, 0x45, 0x6c, 0x65, 2517 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x61, 2518 0x74, 0x68, 0x12, 0x28, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 2519 0x32, 0x14, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x6c, 2520 0x61, 0x6e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x1a, 0x54, 0x0a, 0x13, 2521 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x61, 0x74, 0x68, 0x45, 0x6c, 0x65, 0x6d, 2522 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 2523 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 2524 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 2525 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x04, 0x0a, 0x02, 2526 0x69, 0x64, 0x42, 0x06, 0x0a, 0x04, 0x6e, 0x6f, 0x64, 0x65, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 2527 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x09, 0x10, 0x0a, 0x4a, 0x04, 0x08, 0x0c, 2528 0x10, 0x0d, 0x4a, 0x04, 0x08, 0x0d, 0x10, 0x0e, 0x4a, 0x04, 0x08, 0x17, 0x10, 0x18, 0x22, 0x8c, 2529 0x02, 0x0a, 0x0c, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 2530 0x1b, 0x0a, 0x09, 0x67, 0x72, 0x61, 0x70, 0x68, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x0c, 0x20, 0x01, 2531 0x28, 0x09, 0x52, 0x08, 0x67, 0x72, 0x61, 0x70, 0x68, 0x52, 0x65, 0x66, 0x12, 0x1a, 0x0a, 0x08, 2532 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 2533 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x67, 0x65, 0x6e, 2534 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 2535 0x0c, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 2536 0x0f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 2537 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x56, 2538 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 2539 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 2540 0x0e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 2541 0x14, 0x0a, 0x05, 0x75, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 2542 0x75, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x61, 2543 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 2544 0x01, 0x28, 0x09, 0x52, 0x12, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, 2545 0x63, 0x68, 0x65, 0x6d, 0x61, 0x49, 0x64, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0xf9, 0x01, 2546 0x0a, 0x0e, 0x50, 0x61, 0x74, 0x68, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 2547 0x12, 0x39, 0x0a, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x03, 2548 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x74, 2549 0x61, 0x74, 0x73, 0x2e, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x45, 0x6e, 0x74, 0x72, 2550 0x79, 0x52, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x65, 2551 0x72, 0x72, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 2552 0x04, 0x52, 0x0b, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3b, 2553 0x0a, 0x1a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 2554 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 2555 0x28, 0x04, 0x52, 0x17, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, 2556 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x4c, 0x0a, 0x0d, 0x43, 2557 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 2558 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x25, 2559 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 2560 0x50, 0x61, 0x74, 0x68, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 2561 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xdf, 0x05, 0x0a, 0x11, 0x51, 0x75, 2562 0x65, 0x72, 0x79, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 2563 0x23, 0x0a, 0x0d, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 2564 0x18, 0x0d, 0x20, 0x03, 0x28, 0x12, 0x52, 0x0c, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x43, 2565 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 2566 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x72, 0x65, 0x71, 2567 0x75, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x61, 0x63, 2568 0x68, 0x65, 0x5f, 0x68, 0x69, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 2569 0x61, 0x63, 0x68, 0x65, 0x48, 0x69, 0x74, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x70, 0x65, 0x72, 0x73, 2570 0x69, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x68, 0x69, 0x74, 0x73, 2571 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x12, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 2572 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x48, 0x69, 0x74, 0x73, 0x12, 0x34, 0x0a, 0x16, 0x70, 0x65, 2573 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6d, 0x69, 2574 0x73, 0x73, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x14, 0x70, 0x65, 0x72, 0x73, 2575 0x69, 0x73, 0x74, 0x65, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x69, 0x73, 0x73, 0x65, 0x73, 2576 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 2577 0x79, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x12, 0x52, 0x11, 0x63, 2578 0x61, 0x63, 0x68, 0x65, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 2579 0x12, 0x39, 0x0a, 0x10, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x73, 2580 0x74, 0x61, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x50, 0x61, 0x74, 2581 0x68, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x0e, 0x72, 0x6f, 0x6f, 2582 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x3b, 0x0a, 0x1a, 0x72, 2583 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x65, 0x72, 0x72, 2584 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 2585 0x17, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, 0x45, 0x72, 0x72, 2586 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x33, 0x0a, 0x16, 0x70, 0x75, 0x62, 0x6c, 2587 0x69, 0x63, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x74, 0x74, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 2588 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x12, 0x52, 0x13, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 2589 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x74, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x35, 0x0a, 2590 0x17, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x74, 2591 0x74, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x10, 0x20, 0x03, 0x28, 0x12, 0x52, 0x14, 2592 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x74, 0x6c, 0x43, 2593 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3c, 0x0a, 0x1a, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 2594 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 2595 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x52, 0x18, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 2596 0x65, 0x72, 0x65, 0x64, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 2597 0x6e, 0x74, 0x12, 0x3a, 0x0a, 0x19, 0x66, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x5f, 2598 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 2599 0x0c, 0x20, 0x01, 0x28, 0x04, 0x52, 0x17, 0x66, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6e, 2600 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x53, 2601 0x0a, 0x26, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x6f, 2602 0x75, 0x74, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 2603 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x04, 0x52, 0x23, 2604 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x46, 2605 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 2606 0x69, 0x6f, 0x6e, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x06, 0x10, 0x07, 0x4a, 2607 0x04, 0x08, 0x09, 0x10, 0x0a, 0x4a, 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x22, 0x5c, 0x0a, 0x0c, 0x53, 2608 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 2609 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 2610 0x52, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 2611 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 2612 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x73, 2613 0x69, 0x6f, 0x6e, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x22, 0x8e, 0x01, 0x0a, 0x1f, 0x43, 0x6f, 2614 0x6e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x51, 0x75, 0x65, 0x72, 2615 0x79, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x42, 0x0a, 2616 0x13, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x73, 2617 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x51, 0x75, 0x65, 2618 0x72, 0x79, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x11, 2619 0x71, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x53, 0x74, 0x61, 0x74, 2620 0x73, 0x12, 0x27, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 2621 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 2622 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 0xdc, 0x01, 0x0a, 0x17, 0x43, 2623 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x54, 0x79, 0x70, 2624 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 2625 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 2626 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 2627 0x4d, 0x0a, 0x0d, 0x70, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 2628 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 2629 0x75, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 2630 0x2e, 0x50, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x53, 0x74, 0x61, 0x74, 0x45, 0x6e, 0x74, 0x72, 2631 0x79, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x53, 0x74, 0x61, 0x74, 0x1a, 0x49, 2632 0x0a, 0x10, 0x50, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x53, 0x74, 0x61, 0x74, 0x45, 0x6e, 0x74, 2633 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 2634 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 2635 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x53, 0x74, 0x61, 0x74, 0x52, 0x05, 2636 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xbf, 0x02, 0x0a, 0x09, 0x46, 0x69, 2637 0x65, 0x6c, 0x64, 0x53, 0x74, 0x61, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x74, 0x75, 0x72, 2638 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 2639 0x74, 0x75, 0x72, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x72, 0x72, 0x6f, 2640 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 2641 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x18, 0x6f, 2642 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 2643 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x16, 0x6f, 2644 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 2645 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3a, 0x0a, 0x19, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 2646 0x65, 0x64, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 2647 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x17, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, 2648 0x74, 0x65, 0x64, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 2649 0x74, 0x12, 0x3b, 0x0a, 0x1a, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x5f, 0x77, 0x69, 2650 0x74, 0x68, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 2651 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x17, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x57, 2652 0x69, 0x74, 0x68, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 2653 0x0a, 0x0d, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 2654 0x09, 0x20, 0x03, 0x28, 0x12, 0x52, 0x0c, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x43, 0x6f, 2655 0x75, 0x6e, 0x74, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 2656 0x04, 0x08, 0x07, 0x10, 0x08, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x22, 0xa6, 0x01, 0x0a, 0x08, 2657 0x54, 0x79, 0x70, 0x65, 0x53, 0x74, 0x61, 0x74, 0x12, 0x41, 0x0a, 0x0e, 0x70, 0x65, 0x72, 0x5f, 2658 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 2659 0x32, 0x1b, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x53, 0x74, 0x61, 0x74, 0x2e, 0x50, 0x65, 0x72, 0x46, 2660 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x61, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x70, 2661 0x65, 0x72, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x61, 0x74, 0x1a, 0x4b, 0x0a, 0x11, 0x50, 2662 0x65, 0x72, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x61, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 2663 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 2664 0x65, 0x79, 0x12, 0x20, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 2665 0x0b, 0x32, 0x0a, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74, 0x61, 0x74, 0x52, 0x05, 0x76, 2666 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 2667 0x08, 0x02, 0x10, 0x03, 0x22, 0x5d, 0x0a, 0x17, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 2668 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x46, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 2669 0x1f, 0x0a, 0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 2670 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 2671 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 2672 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 2673 0x61, 0x63, 0x65, 0x22, 0xaa, 0x02, 0x0a, 0x06, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x25, 2674 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 2675 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x06, 0x68, 2676 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x45, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x63, 0x65, 0x73, 0x5f, 2677 0x70, 0x65, 0x72, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 2678 0x1b, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x73, 0x50, 2679 0x65, 0x72, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x74, 0x72, 2680 0x61, 0x63, 0x65, 0x73, 0x50, 0x65, 0x72, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x35, 0x0a, 0x08, 2681 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 2682 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 2683 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 2684 0x69, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 2685 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x6f, 0x70, 2686 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x52, 0x0a, 0x13, 2687 0x54, 0x72, 0x61, 0x63, 0x65, 0x73, 0x50, 0x65, 0x72, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x6e, 2688 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 2689 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x25, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 2690 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x73, 0x41, 0x6e, 0x64, 2691 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 2692 0x22, 0x98, 0x02, 0x0a, 0x13, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x61, 0x6c, 0x69, 2693 0x7a, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 2694 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x53, 0x74, 0x61, 0x74, 2695 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 2696 0x74, 0x12, 0x42, 0x0a, 0x13, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x6e, 2697 0x63, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 2698 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x53, 0x74, 0x61, 2699 0x74, 0x73, 0x52, 0x11, 0x71, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 2700 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x49, 0x0a, 0x0d, 0x70, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 2701 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x43, 2702 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x53, 0x74, 0x61, 2703 0x74, 0x73, 0x2e, 0x50, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x53, 0x74, 0x61, 0x74, 0x45, 0x6e, 2704 0x74, 0x72, 0x79, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x53, 0x74, 0x61, 0x74, 2705 0x1a, 0x49, 0x0a, 0x10, 0x50, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x53, 0x74, 0x61, 0x74, 0x45, 2706 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 2707 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 2708 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x53, 0x74, 0x61, 0x74, 2709 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x99, 0x03, 0x0a, 0x0e, 2710 0x54, 0x72, 0x61, 0x63, 0x65, 0x73, 0x41, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x1c, 2711 0x0a, 0x05, 0x74, 0x72, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x06, 0x2e, 2712 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 0x05, 0x74, 0x72, 0x61, 0x63, 0x65, 0x12, 0x42, 0x0a, 0x12, 2713 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 2714 0x78, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 2715 0x78, 0x74, 0x75, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x10, 2716 0x73, 0x74, 0x61, 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 2717 0x12, 0x66, 0x0a, 0x19, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x66, 2718 0x69, 0x65, 0x6c, 0x64, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 2719 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x73, 0x41, 0x6e, 0x64, 0x53, 2720 0x74, 0x61, 0x74, 0x73, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x46, 2721 0x69, 0x65, 0x6c, 0x64, 0x73, 0x42, 0x79, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 2722 0x52, 0x16, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 2723 0x64, 0x73, 0x42, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x58, 0x0a, 0x25, 0x69, 0x6e, 0x74, 0x65, 2724 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 2725 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x74, 0x61, 0x74, 2726 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x65, 0x52, 2727 0x21, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x54, 0x72, 0x61, 0x63, 0x65, 0x73, 0x43, 2728 0x6f, 0x6e, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x53, 0x74, 0x61, 2729 0x74, 0x73, 0x1a, 0x63, 0x0a, 0x1b, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x64, 2730 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x42, 0x79, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x74, 0x72, 2731 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 2732 0x6b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 2733 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x46, 2734 0x69, 0x65, 0x6c, 0x64, 0x73, 0x46, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x76, 0x61, 2735 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x16, 0x5a, 0x14, 0x2e, 0x2f, 0x61, 0x70, 0x6f, 2736 0x6c, 0x6c, 0x6f, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x74, 0x76, 0x31, 0x62, 2737 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 2738 } 2739 2740 var ( 2741 file_apollo_trace_proto_rawDescOnce sync.Once 2742 file_apollo_trace_proto_rawDescData = file_apollo_trace_proto_rawDesc 2743 ) 2744 2745 func file_apollo_trace_proto_rawDescGZIP() []byte { 2746 file_apollo_trace_proto_rawDescOnce.Do(func() { 2747 file_apollo_trace_proto_rawDescData = protoimpl.X.CompressGZIP(file_apollo_trace_proto_rawDescData) 2748 }) 2749 return file_apollo_trace_proto_rawDescData 2750 } 2751 2752 var file_apollo_trace_proto_enumTypes = make([]protoimpl.EnumInfo, 2) 2753 var file_apollo_trace_proto_msgTypes = make([]protoimpl.MessageInfo, 35) 2754 var file_apollo_trace_proto_goTypes = []interface{}{ 2755 (Trace_CachePolicy_Scope)(0), // 0: Trace.CachePolicy.Scope 2756 (Trace_HTTP_Method)(0), // 1: Trace.HTTP.Method 2757 (*Trace)(nil), // 2: Trace 2758 (*ReportHeader)(nil), // 3: ReportHeader 2759 (*PathErrorStats)(nil), // 4: PathErrorStats 2760 (*QueryLatencyStats)(nil), // 5: QueryLatencyStats 2761 (*StatsContext)(nil), // 6: StatsContext 2762 (*ContextualizedQueryLatencyStats)(nil), // 7: ContextualizedQueryLatencyStats 2763 (*ContextualizedTypeStats)(nil), // 8: ContextualizedTypeStats 2764 (*FieldStat)(nil), // 9: FieldStat 2765 (*TypeStat)(nil), // 10: TypeStat 2766 (*ReferencedFieldsForType)(nil), // 11: ReferencedFieldsForType 2767 (*Report)(nil), // 12: Report 2768 (*ContextualizedStats)(nil), // 13: ContextualizedStats 2769 (*TracesAndStats)(nil), // 14: TracesAndStats 2770 (*Trace_CachePolicy)(nil), // 15: Trace.CachePolicy 2771 (*Trace_Details)(nil), // 16: Trace.Details 2772 (*Trace_Error)(nil), // 17: Trace.Error 2773 (*Trace_HTTP)(nil), // 18: Trace.HTTP 2774 (*Trace_Location)(nil), // 19: Trace.Location 2775 (*Trace_Node)(nil), // 20: Trace.Node 2776 (*Trace_QueryPlanNode)(nil), // 21: Trace.QueryPlanNode 2777 nil, // 22: Trace.Details.VariablesJsonEntry 2778 (*Trace_HTTP_Values)(nil), // 23: Trace.HTTP.Values 2779 nil, // 24: Trace.HTTP.RequestHeadersEntry 2780 nil, // 25: Trace.HTTP.ResponseHeadersEntry 2781 (*Trace_QueryPlanNode_SequenceNode)(nil), // 26: Trace.QueryPlanNode.SequenceNode 2782 (*Trace_QueryPlanNode_ParallelNode)(nil), // 27: Trace.QueryPlanNode.ParallelNode 2783 (*Trace_QueryPlanNode_FetchNode)(nil), // 28: Trace.QueryPlanNode.FetchNode 2784 (*Trace_QueryPlanNode_FlattenNode)(nil), // 29: Trace.QueryPlanNode.FlattenNode 2785 (*Trace_QueryPlanNode_ResponsePathElement)(nil), // 30: Trace.QueryPlanNode.ResponsePathElement 2786 nil, // 31: PathErrorStats.ChildrenEntry 2787 nil, // 32: ContextualizedTypeStats.PerTypeStatEntry 2788 nil, // 33: TypeStat.PerFieldStatEntry 2789 nil, // 34: Report.TracesPerQueryEntry 2790 nil, // 35: ContextualizedStats.PerTypeStatEntry 2791 nil, // 36: TracesAndStats.ReferencedFieldsByTypeEntry 2792 (*timestamppb.Timestamp)(nil), // 37: google.protobuf.Timestamp 2793 } 2794 var file_apollo_trace_proto_depIdxs = []int32{ 2795 37, // 0: Trace.start_time:type_name -> google.protobuf.Timestamp 2796 37, // 1: Trace.end_time:type_name -> google.protobuf.Timestamp 2797 20, // 2: Trace.root:type_name -> Trace.Node 2798 16, // 3: Trace.details:type_name -> Trace.Details 2799 18, // 4: Trace.http:type_name -> Trace.HTTP 2800 15, // 5: Trace.cache_policy:type_name -> Trace.CachePolicy 2801 21, // 6: Trace.query_plan:type_name -> Trace.QueryPlanNode 2802 31, // 7: PathErrorStats.children:type_name -> PathErrorStats.ChildrenEntry 2803 4, // 8: QueryLatencyStats.root_error_stats:type_name -> PathErrorStats 2804 5, // 9: ContextualizedQueryLatencyStats.query_latency_stats:type_name -> QueryLatencyStats 2805 6, // 10: ContextualizedQueryLatencyStats.context:type_name -> StatsContext 2806 6, // 11: ContextualizedTypeStats.context:type_name -> StatsContext 2807 32, // 12: ContextualizedTypeStats.per_type_stat:type_name -> ContextualizedTypeStats.PerTypeStatEntry 2808 33, // 13: TypeStat.per_field_stat:type_name -> TypeStat.PerFieldStatEntry 2809 3, // 14: Report.header:type_name -> ReportHeader 2810 34, // 15: Report.traces_per_query:type_name -> Report.TracesPerQueryEntry 2811 37, // 16: Report.end_time:type_name -> google.protobuf.Timestamp 2812 6, // 17: ContextualizedStats.context:type_name -> StatsContext 2813 5, // 18: ContextualizedStats.query_latency_stats:type_name -> QueryLatencyStats 2814 35, // 19: ContextualizedStats.per_type_stat:type_name -> ContextualizedStats.PerTypeStatEntry 2815 2, // 20: TracesAndStats.trace:type_name -> Trace 2816 13, // 21: TracesAndStats.stats_with_context:type_name -> ContextualizedStats 2817 36, // 22: TracesAndStats.referenced_fields_by_type:type_name -> TracesAndStats.ReferencedFieldsByTypeEntry 2818 2, // 23: TracesAndStats.internal_traces_contributing_to_stats:type_name -> Trace 2819 0, // 24: Trace.CachePolicy.scope:type_name -> Trace.CachePolicy.Scope 2820 22, // 25: Trace.Details.variables_json:type_name -> Trace.Details.VariablesJsonEntry 2821 19, // 26: Trace.Error.location:type_name -> Trace.Location 2822 1, // 27: Trace.HTTP.method:type_name -> Trace.HTTP.Method 2823 24, // 28: Trace.HTTP.request_headers:type_name -> Trace.HTTP.RequestHeadersEntry 2824 25, // 29: Trace.HTTP.response_headers:type_name -> Trace.HTTP.ResponseHeadersEntry 2825 15, // 30: Trace.Node.cache_policy:type_name -> Trace.CachePolicy 2826 17, // 31: Trace.Node.error:type_name -> Trace.Error 2827 20, // 32: Trace.Node.child:type_name -> Trace.Node 2828 26, // 33: Trace.QueryPlanNode.sequence:type_name -> Trace.QueryPlanNode.SequenceNode 2829 27, // 34: Trace.QueryPlanNode.parallel:type_name -> Trace.QueryPlanNode.ParallelNode 2830 28, // 35: Trace.QueryPlanNode.fetch:type_name -> Trace.QueryPlanNode.FetchNode 2831 29, // 36: Trace.QueryPlanNode.flatten:type_name -> Trace.QueryPlanNode.FlattenNode 2832 23, // 37: Trace.HTTP.RequestHeadersEntry.value:type_name -> Trace.HTTP.Values 2833 23, // 38: Trace.HTTP.ResponseHeadersEntry.value:type_name -> Trace.HTTP.Values 2834 21, // 39: Trace.QueryPlanNode.SequenceNode.nodes:type_name -> Trace.QueryPlanNode 2835 21, // 40: Trace.QueryPlanNode.ParallelNode.nodes:type_name -> Trace.QueryPlanNode 2836 2, // 41: Trace.QueryPlanNode.FetchNode.trace:type_name -> Trace 2837 37, // 42: Trace.QueryPlanNode.FetchNode.sent_time:type_name -> google.protobuf.Timestamp 2838 37, // 43: Trace.QueryPlanNode.FetchNode.received_time:type_name -> google.protobuf.Timestamp 2839 30, // 44: Trace.QueryPlanNode.FlattenNode.response_path:type_name -> Trace.QueryPlanNode.ResponsePathElement 2840 21, // 45: Trace.QueryPlanNode.FlattenNode.node:type_name -> Trace.QueryPlanNode 2841 4, // 46: PathErrorStats.ChildrenEntry.value:type_name -> PathErrorStats 2842 10, // 47: ContextualizedTypeStats.PerTypeStatEntry.value:type_name -> TypeStat 2843 9, // 48: TypeStat.PerFieldStatEntry.value:type_name -> FieldStat 2844 14, // 49: Report.TracesPerQueryEntry.value:type_name -> TracesAndStats 2845 10, // 50: ContextualizedStats.PerTypeStatEntry.value:type_name -> TypeStat 2846 11, // 51: TracesAndStats.ReferencedFieldsByTypeEntry.value:type_name -> ReferencedFieldsForType 2847 52, // [52:52] is the sub-list for method output_type 2848 52, // [52:52] is the sub-list for method input_type 2849 52, // [52:52] is the sub-list for extension type_name 2850 52, // [52:52] is the sub-list for extension extendee 2851 0, // [0:52] is the sub-list for field type_name 2852 } 2853 2854 func init() { file_apollo_trace_proto_init() } 2855 func file_apollo_trace_proto_init() { 2856 if File_apollo_trace_proto != nil { 2857 return 2858 } 2859 if !protoimpl.UnsafeEnabled { 2860 file_apollo_trace_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { 2861 switch v := v.(*Trace); i { 2862 case 0: 2863 return &v.state 2864 case 1: 2865 return &v.sizeCache 2866 case 2: 2867 return &v.unknownFields 2868 default: 2869 return nil 2870 } 2871 } 2872 file_apollo_trace_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { 2873 switch v := v.(*ReportHeader); i { 2874 case 0: 2875 return &v.state 2876 case 1: 2877 return &v.sizeCache 2878 case 2: 2879 return &v.unknownFields 2880 default: 2881 return nil 2882 } 2883 } 2884 file_apollo_trace_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { 2885 switch v := v.(*PathErrorStats); i { 2886 case 0: 2887 return &v.state 2888 case 1: 2889 return &v.sizeCache 2890 case 2: 2891 return &v.unknownFields 2892 default: 2893 return nil 2894 } 2895 } 2896 file_apollo_trace_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { 2897 switch v := v.(*QueryLatencyStats); i { 2898 case 0: 2899 return &v.state 2900 case 1: 2901 return &v.sizeCache 2902 case 2: 2903 return &v.unknownFields 2904 default: 2905 return nil 2906 } 2907 } 2908 file_apollo_trace_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { 2909 switch v := v.(*StatsContext); i { 2910 case 0: 2911 return &v.state 2912 case 1: 2913 return &v.sizeCache 2914 case 2: 2915 return &v.unknownFields 2916 default: 2917 return nil 2918 } 2919 } 2920 file_apollo_trace_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { 2921 switch v := v.(*ContextualizedQueryLatencyStats); i { 2922 case 0: 2923 return &v.state 2924 case 1: 2925 return &v.sizeCache 2926 case 2: 2927 return &v.unknownFields 2928 default: 2929 return nil 2930 } 2931 } 2932 file_apollo_trace_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { 2933 switch v := v.(*ContextualizedTypeStats); i { 2934 case 0: 2935 return &v.state 2936 case 1: 2937 return &v.sizeCache 2938 case 2: 2939 return &v.unknownFields 2940 default: 2941 return nil 2942 } 2943 } 2944 file_apollo_trace_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { 2945 switch v := v.(*FieldStat); i { 2946 case 0: 2947 return &v.state 2948 case 1: 2949 return &v.sizeCache 2950 case 2: 2951 return &v.unknownFields 2952 default: 2953 return nil 2954 } 2955 } 2956 file_apollo_trace_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { 2957 switch v := v.(*TypeStat); i { 2958 case 0: 2959 return &v.state 2960 case 1: 2961 return &v.sizeCache 2962 case 2: 2963 return &v.unknownFields 2964 default: 2965 return nil 2966 } 2967 } 2968 file_apollo_trace_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { 2969 switch v := v.(*ReferencedFieldsForType); i { 2970 case 0: 2971 return &v.state 2972 case 1: 2973 return &v.sizeCache 2974 case 2: 2975 return &v.unknownFields 2976 default: 2977 return nil 2978 } 2979 } 2980 file_apollo_trace_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { 2981 switch v := v.(*Report); i { 2982 case 0: 2983 return &v.state 2984 case 1: 2985 return &v.sizeCache 2986 case 2: 2987 return &v.unknownFields 2988 default: 2989 return nil 2990 } 2991 } 2992 file_apollo_trace_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { 2993 switch v := v.(*ContextualizedStats); i { 2994 case 0: 2995 return &v.state 2996 case 1: 2997 return &v.sizeCache 2998 case 2: 2999 return &v.unknownFields 3000 default: 3001 return nil 3002 } 3003 } 3004 file_apollo_trace_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { 3005 switch v := v.(*TracesAndStats); i { 3006 case 0: 3007 return &v.state 3008 case 1: 3009 return &v.sizeCache 3010 case 2: 3011 return &v.unknownFields 3012 default: 3013 return nil 3014 } 3015 } 3016 file_apollo_trace_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { 3017 switch v := v.(*Trace_CachePolicy); i { 3018 case 0: 3019 return &v.state 3020 case 1: 3021 return &v.sizeCache 3022 case 2: 3023 return &v.unknownFields 3024 default: 3025 return nil 3026 } 3027 } 3028 file_apollo_trace_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { 3029 switch v := v.(*Trace_Details); i { 3030 case 0: 3031 return &v.state 3032 case 1: 3033 return &v.sizeCache 3034 case 2: 3035 return &v.unknownFields 3036 default: 3037 return nil 3038 } 3039 } 3040 file_apollo_trace_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { 3041 switch v := v.(*Trace_Error); i { 3042 case 0: 3043 return &v.state 3044 case 1: 3045 return &v.sizeCache 3046 case 2: 3047 return &v.unknownFields 3048 default: 3049 return nil 3050 } 3051 } 3052 file_apollo_trace_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { 3053 switch v := v.(*Trace_HTTP); i { 3054 case 0: 3055 return &v.state 3056 case 1: 3057 return &v.sizeCache 3058 case 2: 3059 return &v.unknownFields 3060 default: 3061 return nil 3062 } 3063 } 3064 file_apollo_trace_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { 3065 switch v := v.(*Trace_Location); i { 3066 case 0: 3067 return &v.state 3068 case 1: 3069 return &v.sizeCache 3070 case 2: 3071 return &v.unknownFields 3072 default: 3073 return nil 3074 } 3075 } 3076 file_apollo_trace_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { 3077 switch v := v.(*Trace_Node); i { 3078 case 0: 3079 return &v.state 3080 case 1: 3081 return &v.sizeCache 3082 case 2: 3083 return &v.unknownFields 3084 default: 3085 return nil 3086 } 3087 } 3088 file_apollo_trace_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { 3089 switch v := v.(*Trace_QueryPlanNode); i { 3090 case 0: 3091 return &v.state 3092 case 1: 3093 return &v.sizeCache 3094 case 2: 3095 return &v.unknownFields 3096 default: 3097 return nil 3098 } 3099 } 3100 file_apollo_trace_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { 3101 switch v := v.(*Trace_HTTP_Values); i { 3102 case 0: 3103 return &v.state 3104 case 1: 3105 return &v.sizeCache 3106 case 2: 3107 return &v.unknownFields 3108 default: 3109 return nil 3110 } 3111 } 3112 file_apollo_trace_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { 3113 switch v := v.(*Trace_QueryPlanNode_SequenceNode); i { 3114 case 0: 3115 return &v.state 3116 case 1: 3117 return &v.sizeCache 3118 case 2: 3119 return &v.unknownFields 3120 default: 3121 return nil 3122 } 3123 } 3124 file_apollo_trace_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { 3125 switch v := v.(*Trace_QueryPlanNode_ParallelNode); i { 3126 case 0: 3127 return &v.state 3128 case 1: 3129 return &v.sizeCache 3130 case 2: 3131 return &v.unknownFields 3132 default: 3133 return nil 3134 } 3135 } 3136 file_apollo_trace_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { 3137 switch v := v.(*Trace_QueryPlanNode_FetchNode); i { 3138 case 0: 3139 return &v.state 3140 case 1: 3141 return &v.sizeCache 3142 case 2: 3143 return &v.unknownFields 3144 default: 3145 return nil 3146 } 3147 } 3148 file_apollo_trace_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { 3149 switch v := v.(*Trace_QueryPlanNode_FlattenNode); i { 3150 case 0: 3151 return &v.state 3152 case 1: 3153 return &v.sizeCache 3154 case 2: 3155 return &v.unknownFields 3156 default: 3157 return nil 3158 } 3159 } 3160 file_apollo_trace_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { 3161 switch v := v.(*Trace_QueryPlanNode_ResponsePathElement); i { 3162 case 0: 3163 return &v.state 3164 case 1: 3165 return &v.sizeCache 3166 case 2: 3167 return &v.unknownFields 3168 default: 3169 return nil 3170 } 3171 } 3172 } 3173 file_apollo_trace_proto_msgTypes[18].OneofWrappers = []interface{}{ 3174 (*Trace_Node_ResponseName)(nil), 3175 (*Trace_Node_Index)(nil), 3176 } 3177 file_apollo_trace_proto_msgTypes[19].OneofWrappers = []interface{}{ 3178 (*Trace_QueryPlanNode_Sequence)(nil), 3179 (*Trace_QueryPlanNode_Parallel)(nil), 3180 (*Trace_QueryPlanNode_Fetch)(nil), 3181 (*Trace_QueryPlanNode_Flatten)(nil), 3182 } 3183 file_apollo_trace_proto_msgTypes[28].OneofWrappers = []interface{}{ 3184 (*Trace_QueryPlanNode_ResponsePathElement_FieldName)(nil), 3185 (*Trace_QueryPlanNode_ResponsePathElement_Index)(nil), 3186 } 3187 type x struct{} 3188 out := protoimpl.TypeBuilder{ 3189 File: protoimpl.DescBuilder{ 3190 GoPackagePath: reflect.TypeOf(x{}).PkgPath(), 3191 RawDescriptor: file_apollo_trace_proto_rawDesc, 3192 NumEnums: 2, 3193 NumMessages: 35, 3194 NumExtensions: 0, 3195 NumServices: 0, 3196 }, 3197 GoTypes: file_apollo_trace_proto_goTypes, 3198 DependencyIndexes: file_apollo_trace_proto_depIdxs, 3199 EnumInfos: file_apollo_trace_proto_enumTypes, 3200 MessageInfos: file_apollo_trace_proto_msgTypes, 3201 }.Build() 3202 File_apollo_trace_proto = out.File 3203 file_apollo_trace_proto_rawDesc = nil 3204 file_apollo_trace_proto_goTypes = nil 3205 file_apollo_trace_proto_depIdxs = nil 3206 }