github.com/s7techlab/cckit@v0.10.5/extensions/crosscc/cclocator_setting.pb.gw.go (about) 1 // Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. 2 // source: crosscc/cclocator_setting.proto 3 4 /* 5 Package crosscc is a reverse proxy. 6 7 It translates gRPC into RESTful JSON APIs. 8 */ 9 package crosscc 10 11 import ( 12 "context" 13 "io" 14 "net/http" 15 16 "github.com/golang/protobuf/descriptor" 17 "github.com/golang/protobuf/proto" 18 "github.com/grpc-ecosystem/grpc-gateway/runtime" 19 "github.com/grpc-ecosystem/grpc-gateway/utilities" 20 "google.golang.org/grpc" 21 "google.golang.org/grpc/codes" 22 "google.golang.org/grpc/grpclog" 23 "google.golang.org/grpc/metadata" 24 "google.golang.org/grpc/status" 25 "google.golang.org/protobuf/types/known/emptypb" 26 ) 27 28 // Suppress "imported and not used" errors 29 var _ codes.Code 30 var _ io.Reader 31 var _ status.Status 32 var _ = runtime.String 33 var _ = utilities.NewDoubleArray 34 var _ = descriptor.ForMessage 35 var _ = metadata.Join 36 37 func request_SettingService_ServiceLocatorSet_0(ctx context.Context, marshaler runtime.Marshaler, client SettingServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { 38 var protoReq ServiceLocatorSetRequest 39 var metadata runtime.ServerMetadata 40 41 newReader, berr := utilities.IOReaderFactory(req.Body) 42 if berr != nil { 43 return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) 44 } 45 if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { 46 return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) 47 } 48 49 msg, err := client.ServiceLocatorSet(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) 50 return msg, metadata, err 51 52 } 53 54 func local_request_SettingService_ServiceLocatorSet_0(ctx context.Context, marshaler runtime.Marshaler, server SettingServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { 55 var protoReq ServiceLocatorSetRequest 56 var metadata runtime.ServerMetadata 57 58 newReader, berr := utilities.IOReaderFactory(req.Body) 59 if berr != nil { 60 return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) 61 } 62 if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { 63 return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) 64 } 65 66 msg, err := server.ServiceLocatorSet(ctx, &protoReq) 67 return msg, metadata, err 68 69 } 70 71 func request_SettingService_ServiceLocatorGet_0(ctx context.Context, marshaler runtime.Marshaler, client SettingServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { 72 var protoReq ServiceLocatorId 73 var metadata runtime.ServerMetadata 74 75 var ( 76 val string 77 ok bool 78 err error 79 _ = err 80 ) 81 82 val, ok = pathParams["service"] 83 if !ok { 84 return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "service") 85 } 86 87 protoReq.Service, err = runtime.String(val) 88 89 if err != nil { 90 return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "service", err) 91 } 92 93 msg, err := client.ServiceLocatorGet(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) 94 return msg, metadata, err 95 96 } 97 98 func local_request_SettingService_ServiceLocatorGet_0(ctx context.Context, marshaler runtime.Marshaler, server SettingServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { 99 var protoReq ServiceLocatorId 100 var metadata runtime.ServerMetadata 101 102 var ( 103 val string 104 ok bool 105 err error 106 _ = err 107 ) 108 109 val, ok = pathParams["service"] 110 if !ok { 111 return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "service") 112 } 113 114 protoReq.Service, err = runtime.String(val) 115 116 if err != nil { 117 return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "service", err) 118 } 119 120 msg, err := server.ServiceLocatorGet(ctx, &protoReq) 121 return msg, metadata, err 122 123 } 124 125 func request_SettingService_ListServiceLocators_0(ctx context.Context, marshaler runtime.Marshaler, client SettingServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { 126 var protoReq emptypb.Empty 127 var metadata runtime.ServerMetadata 128 129 msg, err := client.ListServiceLocators(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) 130 return msg, metadata, err 131 132 } 133 134 func local_request_SettingService_ListServiceLocators_0(ctx context.Context, marshaler runtime.Marshaler, server SettingServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { 135 var protoReq emptypb.Empty 136 var metadata runtime.ServerMetadata 137 138 msg, err := server.ListServiceLocators(ctx, &protoReq) 139 return msg, metadata, err 140 141 } 142 143 func request_SettingService_PingService_0(ctx context.Context, marshaler runtime.Marshaler, client SettingServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { 144 var protoReq ServiceLocatorId 145 var metadata runtime.ServerMetadata 146 147 var ( 148 val string 149 ok bool 150 err error 151 _ = err 152 ) 153 154 val, ok = pathParams["service"] 155 if !ok { 156 return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "service") 157 } 158 159 protoReq.Service, err = runtime.String(val) 160 161 if err != nil { 162 return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "service", err) 163 } 164 165 msg, err := client.PingService(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) 166 return msg, metadata, err 167 168 } 169 170 func local_request_SettingService_PingService_0(ctx context.Context, marshaler runtime.Marshaler, server SettingServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { 171 var protoReq ServiceLocatorId 172 var metadata runtime.ServerMetadata 173 174 var ( 175 val string 176 ok bool 177 err error 178 _ = err 179 ) 180 181 val, ok = pathParams["service"] 182 if !ok { 183 return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "service") 184 } 185 186 protoReq.Service, err = runtime.String(val) 187 188 if err != nil { 189 return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "service", err) 190 } 191 192 msg, err := server.PingService(ctx, &protoReq) 193 return msg, metadata, err 194 195 } 196 197 func request_SettingService_PingServices_0(ctx context.Context, marshaler runtime.Marshaler, client SettingServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { 198 var protoReq emptypb.Empty 199 var metadata runtime.ServerMetadata 200 201 msg, err := client.PingServices(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) 202 return msg, metadata, err 203 204 } 205 206 func local_request_SettingService_PingServices_0(ctx context.Context, marshaler runtime.Marshaler, server SettingServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { 207 var protoReq emptypb.Empty 208 var metadata runtime.ServerMetadata 209 210 msg, err := server.PingServices(ctx, &protoReq) 211 return msg, metadata, err 212 213 } 214 215 // RegisterSettingServiceHandlerServer registers the http handlers for service SettingService to "mux". 216 // UnaryRPC :call SettingServiceServer directly. 217 // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. 218 // Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterSettingServiceHandlerFromEndpoint instead. 219 func RegisterSettingServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server SettingServiceServer) error { 220 221 mux.Handle("POST", pattern_SettingService_ServiceLocatorSet_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { 222 ctx, cancel := context.WithCancel(req.Context()) 223 defer cancel() 224 var stream runtime.ServerTransportStream 225 ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) 226 inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) 227 rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) 228 if err != nil { 229 runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) 230 return 231 } 232 resp, md, err := local_request_SettingService_ServiceLocatorSet_0(rctx, inboundMarshaler, server, req, pathParams) 233 md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) 234 ctx = runtime.NewServerMetadataContext(ctx, md) 235 if err != nil { 236 runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) 237 return 238 } 239 240 forward_SettingService_ServiceLocatorSet_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) 241 242 }) 243 244 mux.Handle("GET", pattern_SettingService_ServiceLocatorGet_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { 245 ctx, cancel := context.WithCancel(req.Context()) 246 defer cancel() 247 var stream runtime.ServerTransportStream 248 ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) 249 inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) 250 rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) 251 if err != nil { 252 runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) 253 return 254 } 255 resp, md, err := local_request_SettingService_ServiceLocatorGet_0(rctx, inboundMarshaler, server, req, pathParams) 256 md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) 257 ctx = runtime.NewServerMetadataContext(ctx, md) 258 if err != nil { 259 runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) 260 return 261 } 262 263 forward_SettingService_ServiceLocatorGet_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) 264 265 }) 266 267 mux.Handle("GET", pattern_SettingService_ListServiceLocators_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { 268 ctx, cancel := context.WithCancel(req.Context()) 269 defer cancel() 270 var stream runtime.ServerTransportStream 271 ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) 272 inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) 273 rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) 274 if err != nil { 275 runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) 276 return 277 } 278 resp, md, err := local_request_SettingService_ListServiceLocators_0(rctx, inboundMarshaler, server, req, pathParams) 279 md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) 280 ctx = runtime.NewServerMetadataContext(ctx, md) 281 if err != nil { 282 runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) 283 return 284 } 285 286 forward_SettingService_ListServiceLocators_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) 287 288 }) 289 290 mux.Handle("GET", pattern_SettingService_PingService_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { 291 ctx, cancel := context.WithCancel(req.Context()) 292 defer cancel() 293 var stream runtime.ServerTransportStream 294 ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) 295 inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) 296 rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) 297 if err != nil { 298 runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) 299 return 300 } 301 resp, md, err := local_request_SettingService_PingService_0(rctx, inboundMarshaler, server, req, pathParams) 302 md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) 303 ctx = runtime.NewServerMetadataContext(ctx, md) 304 if err != nil { 305 runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) 306 return 307 } 308 309 forward_SettingService_PingService_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) 310 311 }) 312 313 mux.Handle("GET", pattern_SettingService_PingServices_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { 314 ctx, cancel := context.WithCancel(req.Context()) 315 defer cancel() 316 var stream runtime.ServerTransportStream 317 ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) 318 inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) 319 rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) 320 if err != nil { 321 runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) 322 return 323 } 324 resp, md, err := local_request_SettingService_PingServices_0(rctx, inboundMarshaler, server, req, pathParams) 325 md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) 326 ctx = runtime.NewServerMetadataContext(ctx, md) 327 if err != nil { 328 runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) 329 return 330 } 331 332 forward_SettingService_PingServices_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) 333 334 }) 335 336 return nil 337 } 338 339 // RegisterSettingServiceHandlerFromEndpoint is same as RegisterSettingServiceHandler but 340 // automatically dials to "endpoint" and closes the connection when "ctx" gets done. 341 func RegisterSettingServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { 342 conn, err := grpc.Dial(endpoint, opts...) 343 if err != nil { 344 return err 345 } 346 defer func() { 347 if err != nil { 348 if cerr := conn.Close(); cerr != nil { 349 grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) 350 } 351 return 352 } 353 go func() { 354 <-ctx.Done() 355 if cerr := conn.Close(); cerr != nil { 356 grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) 357 } 358 }() 359 }() 360 361 return RegisterSettingServiceHandler(ctx, mux, conn) 362 } 363 364 // RegisterSettingServiceHandler registers the http handlers for service SettingService to "mux". 365 // The handlers forward requests to the grpc endpoint over "conn". 366 func RegisterSettingServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { 367 return RegisterSettingServiceHandlerClient(ctx, mux, NewSettingServiceClient(conn)) 368 } 369 370 // RegisterSettingServiceHandlerClient registers the http handlers for service SettingService 371 // to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "SettingServiceClient". 372 // Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "SettingServiceClient" 373 // doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in 374 // "SettingServiceClient" to call the correct interceptors. 375 func RegisterSettingServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client SettingServiceClient) error { 376 377 mux.Handle("POST", pattern_SettingService_ServiceLocatorSet_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { 378 ctx, cancel := context.WithCancel(req.Context()) 379 defer cancel() 380 inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) 381 rctx, err := runtime.AnnotateContext(ctx, mux, req) 382 if err != nil { 383 runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) 384 return 385 } 386 resp, md, err := request_SettingService_ServiceLocatorSet_0(rctx, inboundMarshaler, client, req, pathParams) 387 ctx = runtime.NewServerMetadataContext(ctx, md) 388 if err != nil { 389 runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) 390 return 391 } 392 393 forward_SettingService_ServiceLocatorSet_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) 394 395 }) 396 397 mux.Handle("GET", pattern_SettingService_ServiceLocatorGet_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { 398 ctx, cancel := context.WithCancel(req.Context()) 399 defer cancel() 400 inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) 401 rctx, err := runtime.AnnotateContext(ctx, mux, req) 402 if err != nil { 403 runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) 404 return 405 } 406 resp, md, err := request_SettingService_ServiceLocatorGet_0(rctx, inboundMarshaler, client, req, pathParams) 407 ctx = runtime.NewServerMetadataContext(ctx, md) 408 if err != nil { 409 runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) 410 return 411 } 412 413 forward_SettingService_ServiceLocatorGet_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) 414 415 }) 416 417 mux.Handle("GET", pattern_SettingService_ListServiceLocators_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { 418 ctx, cancel := context.WithCancel(req.Context()) 419 defer cancel() 420 inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) 421 rctx, err := runtime.AnnotateContext(ctx, mux, req) 422 if err != nil { 423 runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) 424 return 425 } 426 resp, md, err := request_SettingService_ListServiceLocators_0(rctx, inboundMarshaler, client, req, pathParams) 427 ctx = runtime.NewServerMetadataContext(ctx, md) 428 if err != nil { 429 runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) 430 return 431 } 432 433 forward_SettingService_ListServiceLocators_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) 434 435 }) 436 437 mux.Handle("GET", pattern_SettingService_PingService_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { 438 ctx, cancel := context.WithCancel(req.Context()) 439 defer cancel() 440 inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) 441 rctx, err := runtime.AnnotateContext(ctx, mux, req) 442 if err != nil { 443 runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) 444 return 445 } 446 resp, md, err := request_SettingService_PingService_0(rctx, inboundMarshaler, client, req, pathParams) 447 ctx = runtime.NewServerMetadataContext(ctx, md) 448 if err != nil { 449 runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) 450 return 451 } 452 453 forward_SettingService_PingService_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) 454 455 }) 456 457 mux.Handle("GET", pattern_SettingService_PingServices_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { 458 ctx, cancel := context.WithCancel(req.Context()) 459 defer cancel() 460 inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) 461 rctx, err := runtime.AnnotateContext(ctx, mux, req) 462 if err != nil { 463 runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) 464 return 465 } 466 resp, md, err := request_SettingService_PingServices_0(rctx, inboundMarshaler, client, req, pathParams) 467 ctx = runtime.NewServerMetadataContext(ctx, md) 468 if err != nil { 469 runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) 470 return 471 } 472 473 forward_SettingService_PingServices_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) 474 475 }) 476 477 return nil 478 } 479 480 var ( 481 pattern_SettingService_ServiceLocatorSet_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"croscc", "services"}, "", runtime.AssumeColonVerbOpt(true))) 482 483 pattern_SettingService_ServiceLocatorGet_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"croscc", "service"}, "", runtime.AssumeColonVerbOpt(true))) 484 485 pattern_SettingService_ListServiceLocators_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"croscc", "services"}, "", runtime.AssumeColonVerbOpt(true))) 486 487 pattern_SettingService_PingService_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"croscc", "ping", "service"}, "", runtime.AssumeColonVerbOpt(true))) 488 489 pattern_SettingService_PingServices_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"croscc", "ping"}, "", runtime.AssumeColonVerbOpt(true))) 490 ) 491 492 var ( 493 forward_SettingService_ServiceLocatorSet_0 = runtime.ForwardResponseMessage 494 495 forward_SettingService_ServiceLocatorGet_0 = runtime.ForwardResponseMessage 496 497 forward_SettingService_ListServiceLocators_0 = runtime.ForwardResponseMessage 498 499 forward_SettingService_PingService_0 = runtime.ForwardResponseMessage 500 501 forward_SettingService_PingServices_0 = runtime.ForwardResponseMessage 502 )