From 7516cd108dd4ac1d79b3349dc7d810ecc9471566 Mon Sep 17 00:00:00 2001 From: fahernandez Date: Mon, 11 Feb 2019 14:50:35 -0600 Subject: [PATCH 1/9] 863 adding swagger annotation support for enum, repeated enum, nested object, repeated nested object and repeated primitive fields --- .../abe/a_bit_of_everything_service_api.go | 30 +- .../abe/examplepb_a_bit_of_everything.go | 15 + examples/clients/echo/api_client.go | 2 +- examples/clients/echo/api_response.go | 2 +- examples/clients/echo/configuration.go | 2 +- examples/clients/echo/echo_service_api.go | 2 +- examples/clients/echo/examplepb_embedded.go | 2 +- .../clients/echo/examplepb_simple_message.go | 2 +- .../proto/examplepb/a_bit_of_everything.pb.go | 473 ++++++++++-------- .../examplepb/a_bit_of_everything.pb.gw.go | 63 ++- .../proto/examplepb/a_bit_of_everything.proto | 17 +- .../a_bit_of_everything.swagger.json | 153 +++++- .../proto/examplepb/echo_service.swagger.json | 2 +- examples/proto/examplepb/stream.swagger.json | 34 ++ protoc-gen-swagger/genswagger/template.go | 37 +- 15 files changed, 602 insertions(+), 234 deletions(-) diff --git a/examples/clients/abe/a_bit_of_everything_service_api.go b/examples/clients/abe/a_bit_of_everything_service_api.go index 1e8956c2aff..21971cc14fc 100644 --- a/examples/clients/abe/a_bit_of_everything_service_api.go +++ b/examples/clients/abe/a_bit_of_everything_service_api.go @@ -60,13 +60,17 @@ func NewABitOfEverythingServiceApiWithBasePath(basePath string) *ABitOfEverythin * @param enumValue * @param pathEnumValue * @param nestedPathEnumValue + * @param repeatedEnumValue repeated enum value. it is comma-separated in query + * @param repeatedEnumValueAnnotation Repeated numeric enum description. + * @param enumValueAnnotation Numeric enum description. + * @param repeatedStringAnnotation Repeated string description. * @return *ExamplepbABitOfEverything */ -func (a ABitOfEverythingServiceApi) Create(floatValue float32, doubleValue float64, int64Value string, uint64Value string, int32Value int32, fixed64Value string, fixed32Value int64, boolValue bool, stringValue string, uint32Value int64, sfixed32Value int32, sfixed64Value string, sint32Value int32, sint64Value string, nonConventionalNameValue string, enumValue string, pathEnumValue string, nestedPathEnumValue string) (*ExamplepbABitOfEverything, *APIResponse, error) { +func (a ABitOfEverythingServiceApi) Create(floatValue float32, doubleValue float64, int64Value string, uint64Value string, int32Value int32, fixed64Value string, fixed32Value int64, boolValue bool, stringValue string, uint32Value int64, sfixed32Value int32, sfixed64Value string, sint32Value int32, sint64Value string, nonConventionalNameValue string, enumValue string, pathEnumValue string, nestedPathEnumValue string, repeatedEnumValue []string, repeatedEnumValueAnnotation []string, enumValueAnnotation string, repeatedStringAnnotation []string) (*ExamplepbABitOfEverything, *APIResponse, error) { var localVarHttpMethod = strings.ToUpper("Post") // create path and map variables - localVarPath := a.Configuration.BasePath + "/v1/example/a_bit_of_everything/{float_value}/{double_value}/{int64_value}/separator/{uint64_value}/{int32_value}/{fixed64_value}/{fixed32_value}/{bool_value}/{string_value}/{uint32_value}/{sfixed32_value}/{sfixed64_value}/{sint32_value}/{sint64_value}/{nonConventionalNameValue}/{enum_value}/{path_enum_value}/{nested_path_enum_value}" + localVarPath := a.Configuration.BasePath + "/v1/example/a_bit_of_everything/{float_value}/{double_value}/{int64_value}/separator/{uint64_value}/{int32_value}/{fixed64_value}/{fixed32_value}/{bool_value}/{string_value}/{uint32_value}/{sfixed32_value}/{sfixed64_value}/{sint32_value}/{sint64_value}/{nonConventionalNameValue}/{enum_value}/{path_enum_value}/{nested_path_enum_value}/{repeated_enum_value}/{repeated_enum_value_annotation}/{enum_value_annotation}/{repeated_string_annotation}" localVarPath = strings.Replace(localVarPath, "{"+"float_value"+"}", fmt.Sprintf("%v", floatValue), -1) localVarPath = strings.Replace(localVarPath, "{"+"double_value"+"}", fmt.Sprintf("%v", doubleValue), -1) localVarPath = strings.Replace(localVarPath, "{"+"int64_value"+"}", fmt.Sprintf("%v", int64Value), -1) @@ -85,6 +89,10 @@ func (a ABitOfEverythingServiceApi) Create(floatValue float32, doubleValue float localVarPath = strings.Replace(localVarPath, "{"+"enum_value"+"}", fmt.Sprintf("%v", enumValue), -1) localVarPath = strings.Replace(localVarPath, "{"+"path_enum_value"+"}", fmt.Sprintf("%v", pathEnumValue), -1) localVarPath = strings.Replace(localVarPath, "{"+"nested_path_enum_value"+"}", fmt.Sprintf("%v", nestedPathEnumValue), -1) + localVarPath = strings.Replace(localVarPath, "{"+"repeated_enum_value"+"}", fmt.Sprintf("%v", repeatedEnumValue), -1) + localVarPath = strings.Replace(localVarPath, "{"+"repeated_enum_value_annotation"+"}", fmt.Sprintf("%v", repeatedEnumValueAnnotation), -1) + localVarPath = strings.Replace(localVarPath, "{"+"enum_value_annotation"+"}", fmt.Sprintf("%v", enumValueAnnotation), -1) + localVarPath = strings.Replace(localVarPath, "{"+"repeated_string_annotation"+"}", fmt.Sprintf("%v", repeatedStringAnnotation), -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := url.Values{} @@ -547,9 +555,15 @@ func (a ABitOfEverythingServiceApi) GetMessageWithBody(id string, body Examplepb * @param nonConventionalNameValue * @param timestampValue * @param repeatedEnumValue repeated enum value. it is comma-separated in query. - ZERO: ZERO means 0 - ONE: ONE means 1 + * @param repeatedEnumValueAnnotation Repeated numeric enum title. Repeated numeric enum description. - ZERO: ZERO means 0 - ONE: ONE means 1 + * @param enumValueAnnotation Numeric enum title. Numeric enum description. - ZERO: ZERO means 0 - ONE: ONE means 1 + * @param repeatedStringAnnotation Repeated string title. Repeated string description. + * @param nestedAnnotationName name is nested field. + * @param nestedAnnotationAmount + * @param nestedAnnotationOk - FALSE: FALSE is false. - TRUE: TRUE is true. * @return *interface{} */ -func (a ABitOfEverythingServiceApi) GetQuery(uuid string, floatValue float32, singleNestedName string, singleNestedAmount int64, singleNestedOk string, doubleValue float64, int64Value string, uint64Value string, int32Value int32, fixed64Value string, fixed32Value int64, boolValue bool, stringValue string, bytesValue string, uint32Value int64, enumValue string, pathEnumValue string, nestedPathEnumValue string, sfixed32Value int32, sfixed64Value string, sint32Value int32, sint64Value string, repeatedStringValue []string, oneofString string, nonConventionalNameValue string, timestampValue time.Time, repeatedEnumValue []string) (*interface{}, *APIResponse, error) { +func (a ABitOfEverythingServiceApi) GetQuery(uuid string, floatValue float32, singleNestedName string, singleNestedAmount int64, singleNestedOk string, doubleValue float64, int64Value string, uint64Value string, int32Value int32, fixed64Value string, fixed32Value int64, boolValue bool, stringValue string, bytesValue string, uint32Value int64, enumValue string, pathEnumValue string, nestedPathEnumValue string, sfixed32Value int32, sfixed64Value string, sint32Value int32, sint64Value string, repeatedStringValue []string, oneofString string, nonConventionalNameValue string, timestampValue time.Time, repeatedEnumValue []string, repeatedEnumValueAnnotation []string, enumValueAnnotation string, repeatedStringAnnotation []string, nestedAnnotationName string, nestedAnnotationAmount int64, nestedAnnotationOk string) (*interface{}, *APIResponse, error) { var localVarHttpMethod = strings.ToUpper("Get") // create path and map variables @@ -596,6 +610,16 @@ func (a ABitOfEverythingServiceApi) GetQuery(uuid string, floatValue float32, si var repeatedEnumValueCollectionFormat = "csv" localVarQueryParams.Add("repeated_enum_value", a.Configuration.APIClient.ParameterToString(repeatedEnumValue, repeatedEnumValueCollectionFormat)) + var repeatedEnumValueAnnotationCollectionFormat = "csv" + localVarQueryParams.Add("repeated_enum_value_annotation", a.Configuration.APIClient.ParameterToString(repeatedEnumValueAnnotation, repeatedEnumValueAnnotationCollectionFormat)) + + localVarQueryParams.Add("enum_value_annotation", a.Configuration.APIClient.ParameterToString(enumValueAnnotation, "")) + var repeatedStringAnnotationCollectionFormat = "csv" + localVarQueryParams.Add("repeated_string_annotation", a.Configuration.APIClient.ParameterToString(repeatedStringAnnotation, repeatedStringAnnotationCollectionFormat)) + + localVarQueryParams.Add("nested_annotation.name", a.Configuration.APIClient.ParameterToString(nestedAnnotationName, "")) + localVarQueryParams.Add("nested_annotation.amount", a.Configuration.APIClient.ParameterToString(nestedAnnotationAmount, "")) + localVarQueryParams.Add("nested_annotation.ok", a.Configuration.APIClient.ParameterToString(nestedAnnotationOk, "")) // to determine the Content-Type header localVarHttpContentTypes := []string{ "application/json", "application/x-foo-mime", } diff --git a/examples/clients/abe/examplepb_a_bit_of_everything.go b/examples/clients/abe/examplepb_a_bit_of_everything.go index 91320d0e7c3..74ec2f41000 100644 --- a/examples/clients/abe/examplepb_a_bit_of_everything.go +++ b/examples/clients/abe/examplepb_a_bit_of_everything.go @@ -77,4 +77,19 @@ type ExamplepbABitOfEverything struct { TimestampValue time.Time `json:"timestamp_value,omitempty"` RepeatedEnumValue []ExamplepbNumericEnum `json:"repeated_enum_value,omitempty"` + + // Repeated numeric enum description. + RepeatedEnumValueAnnotation []ExamplepbNumericEnum `json:"repeated_enum_value_annotation,omitempty"` + + // Numeric enum description. + EnumValueAnnotation ExamplepbNumericEnum `json:"enum_value_annotation,omitempty"` + + // Repeated string description. + RepeatedStringAnnotation []string `json:"repeated_string_annotation,omitempty"` + + // Repeated nested object description. + RepeatedNestedAnnotation []ABitOfEverythingNested `json:"repeated_nested_annotation,omitempty"` + + // Nested object description. + NestedAnnotation ABitOfEverythingNested `json:"nested_annotation,omitempty"` } diff --git a/examples/clients/echo/api_client.go b/examples/clients/echo/api_client.go index 7a517148026..d54e3e68565 100644 --- a/examples/clients/echo/api_client.go +++ b/examples/clients/echo/api_client.go @@ -1,5 +1,5 @@ /* - * Echo Service + * examples/proto/examplepb/echo_service.proto * * Echo Service API consists of a single service which returns a message. * diff --git a/examples/clients/echo/api_response.go b/examples/clients/echo/api_response.go index 8b0d07c4a13..a4f0ab08001 100644 --- a/examples/clients/echo/api_response.go +++ b/examples/clients/echo/api_response.go @@ -1,5 +1,5 @@ /* - * Echo Service + * examples/proto/examplepb/echo_service.proto * * Echo Service API consists of a single service which returns a message. * diff --git a/examples/clients/echo/configuration.go b/examples/clients/echo/configuration.go index 9a75a30aeec..6441b8dc698 100644 --- a/examples/clients/echo/configuration.go +++ b/examples/clients/echo/configuration.go @@ -1,5 +1,5 @@ /* - * Echo Service + * examples/proto/examplepb/echo_service.proto * * Echo Service API consists of a single service which returns a message. * diff --git a/examples/clients/echo/echo_service_api.go b/examples/clients/echo/echo_service_api.go index 6ae7cf85a32..7625bc9eec8 100644 --- a/examples/clients/echo/echo_service_api.go +++ b/examples/clients/echo/echo_service_api.go @@ -1,5 +1,5 @@ /* - * Echo Service + * examples/proto/examplepb/echo_service.proto * * Echo Service API consists of a single service which returns a message. * diff --git a/examples/clients/echo/examplepb_embedded.go b/examples/clients/echo/examplepb_embedded.go index 4b5fe265ac9..ad76336c25b 100644 --- a/examples/clients/echo/examplepb_embedded.go +++ b/examples/clients/echo/examplepb_embedded.go @@ -1,5 +1,5 @@ /* - * Echo Service + * examples/proto/examplepb/echo_service.proto * * Echo Service API consists of a single service which returns a message. * diff --git a/examples/clients/echo/examplepb_simple_message.go b/examples/clients/echo/examplepb_simple_message.go index 366a6876665..2b9b366e57e 100644 --- a/examples/clients/echo/examplepb_simple_message.go +++ b/examples/clients/echo/examplepb_simple_message.go @@ -1,5 +1,5 @@ /* - * Echo Service + * examples/proto/examplepb/echo_service.proto * * Echo Service API consists of a single service which returns a message. * diff --git a/examples/proto/examplepb/a_bit_of_everything.pb.go b/examples/proto/examplepb/a_bit_of_everything.pb.go index 896288bd685..9f5eed795a3 100644 --- a/examples/proto/examplepb/a_bit_of_everything.pb.go +++ b/examples/proto/examplepb/a_bit_of_everything.pb.go @@ -55,7 +55,7 @@ func (x NumericEnum) String() string { return proto.EnumName(NumericEnum_name, int32(x)) } func (NumericEnum) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_a_bit_of_everything_74470c9779693dcd, []int{0} + return fileDescriptor_a_bit_of_everything_ba3a130ee49bb615, []int{0} } // DeepEnum is one or zero. @@ -81,7 +81,7 @@ func (x ABitOfEverything_Nested_DeepEnum) String() string { return proto.EnumName(ABitOfEverything_Nested_DeepEnum_name, int32(x)) } func (ABitOfEverything_Nested_DeepEnum) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_a_bit_of_everything_74470c9779693dcd, []int{0, 0, 0} + return fileDescriptor_a_bit_of_everything_ba3a130ee49bb615, []int{0, 0, 0} } // Intentionaly complicated message type to cover many features of Protobuf. @@ -119,17 +119,27 @@ type ABitOfEverything struct { NonConventionalNameValue string `protobuf:"bytes,26,opt,name=nonConventionalNameValue,proto3" json:"nonConventionalNameValue,omitempty"` TimestampValue *timestamp.Timestamp `protobuf:"bytes,27,opt,name=timestamp_value,json=timestampValue,proto3" json:"timestamp_value,omitempty"` // repeated enum value. it is comma-separated in query - RepeatedEnumValue []NumericEnum `protobuf:"varint,28,rep,packed,name=repeated_enum_value,json=repeatedEnumValue,proto3,enum=grpc.gateway.examples.examplepb.NumericEnum" json:"repeated_enum_value,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + RepeatedEnumValue []NumericEnum `protobuf:"varint,28,rep,packed,name=repeated_enum_value,json=repeatedEnumValue,proto3,enum=grpc.gateway.examples.examplepb.NumericEnum" json:"repeated_enum_value,omitempty"` + // repeated numeric enum comment (This comment is overridden by the field annotation) + RepeatedEnumValueAnnotation []NumericEnum `protobuf:"varint,32,rep,packed,name=repeated_enum_value_annotation,json=repeatedEnumValueAnnotation,proto3,enum=grpc.gateway.examples.examplepb.NumericEnum" json:"repeated_enum_value_annotation,omitempty"` + // numeric enum comment (This comment is overridden by the field annotation) + EnumValueAnnotation NumericEnum `protobuf:"varint,33,opt,name=enum_value_annotation,json=enumValueAnnotation,proto3,enum=grpc.gateway.examples.examplepb.NumericEnum" json:"enum_value_annotation,omitempty"` + // repeated string comment (This comment is overridden by the field annotation) + RepeatedStringAnnotation []string `protobuf:"bytes,34,rep,name=repeated_string_annotation,json=repeatedStringAnnotation,proto3" json:"repeated_string_annotation,omitempty"` + // repeated nested object comment (This comment is overridden by the field annotation) + RepeatedNestedAnnotation []*ABitOfEverything_Nested `protobuf:"bytes,35,rep,name=repeated_nested_annotation,json=repeatedNestedAnnotation,proto3" json:"repeated_nested_annotation,omitempty"` + // nested object comments (This comment is overridden by the field annotation) + NestedAnnotation *ABitOfEverything_Nested `protobuf:"bytes,36,opt,name=nested_annotation,json=nestedAnnotation,proto3" json:"nested_annotation,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *ABitOfEverything) Reset() { *m = ABitOfEverything{} } func (m *ABitOfEverything) String() string { return proto.CompactTextString(m) } func (*ABitOfEverything) ProtoMessage() {} func (*ABitOfEverything) Descriptor() ([]byte, []int) { - return fileDescriptor_a_bit_of_everything_74470c9779693dcd, []int{0} + return fileDescriptor_a_bit_of_everything_ba3a130ee49bb615, []int{0} } func (m *ABitOfEverything) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ABitOfEverything.Unmarshal(m, b) @@ -382,6 +392,41 @@ func (m *ABitOfEverything) GetRepeatedEnumValue() []NumericEnum { return nil } +func (m *ABitOfEverything) GetRepeatedEnumValueAnnotation() []NumericEnum { + if m != nil { + return m.RepeatedEnumValueAnnotation + } + return nil +} + +func (m *ABitOfEverything) GetEnumValueAnnotation() NumericEnum { + if m != nil { + return m.EnumValueAnnotation + } + return NumericEnum_ZERO +} + +func (m *ABitOfEverything) GetRepeatedStringAnnotation() []string { + if m != nil { + return m.RepeatedStringAnnotation + } + return nil +} + +func (m *ABitOfEverything) GetRepeatedNestedAnnotation() []*ABitOfEverything_Nested { + if m != nil { + return m.RepeatedNestedAnnotation + } + return nil +} + +func (m *ABitOfEverything) GetNestedAnnotation() *ABitOfEverything_Nested { + if m != nil { + return m.NestedAnnotation + } + return nil +} + // XXX_OneofFuncs is for the internal use of the proto package. func (*ABitOfEverything) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { return _ABitOfEverything_OneofMarshaler, _ABitOfEverything_OneofUnmarshaler, _ABitOfEverything_OneofSizer, []interface{}{ @@ -467,7 +512,7 @@ func (m *ABitOfEverything_Nested) Reset() { *m = ABitOfEverything_Nested func (m *ABitOfEverything_Nested) String() string { return proto.CompactTextString(m) } func (*ABitOfEverything_Nested) ProtoMessage() {} func (*ABitOfEverything_Nested) Descriptor() ([]byte, []int) { - return fileDescriptor_a_bit_of_everything_74470c9779693dcd, []int{0, 0} + return fileDescriptor_a_bit_of_everything_ba3a130ee49bb615, []int{0, 0} } func (m *ABitOfEverything_Nested) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ABitOfEverything_Nested.Unmarshal(m, b) @@ -536,7 +581,7 @@ func (m *ABitOfEverythingRepeated) Reset() { *m = ABitOfEverythingRepeat func (m *ABitOfEverythingRepeated) String() string { return proto.CompactTextString(m) } func (*ABitOfEverythingRepeated) ProtoMessage() {} func (*ABitOfEverythingRepeated) Descriptor() ([]byte, []int) { - return fileDescriptor_a_bit_of_everything_74470c9779693dcd, []int{1} + return fileDescriptor_a_bit_of_everything_ba3a130ee49bb615, []int{1} } func (m *ABitOfEverythingRepeated) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ABitOfEverythingRepeated.Unmarshal(m, b) @@ -679,7 +724,7 @@ func (m *Body) Reset() { *m = Body{} } func (m *Body) String() string { return proto.CompactTextString(m) } func (*Body) ProtoMessage() {} func (*Body) Descriptor() ([]byte, []int) { - return fileDescriptor_a_bit_of_everything_74470c9779693dcd, []int{2} + return fileDescriptor_a_bit_of_everything_ba3a130ee49bb615, []int{2} } func (m *Body) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Body.Unmarshal(m, b) @@ -718,7 +763,7 @@ func (m *MessageWithBody) Reset() { *m = MessageWithBody{} } func (m *MessageWithBody) String() string { return proto.CompactTextString(m) } func (*MessageWithBody) ProtoMessage() {} func (*MessageWithBody) Descriptor() ([]byte, []int) { - return fileDescriptor_a_bit_of_everything_74470c9779693dcd, []int{3} + return fileDescriptor_a_bit_of_everything_ba3a130ee49bb615, []int{3} } func (m *MessageWithBody) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MessageWithBody.Unmarshal(m, b) @@ -765,7 +810,7 @@ func (m *UpdateV2Request) Reset() { *m = UpdateV2Request{} } func (m *UpdateV2Request) String() string { return proto.CompactTextString(m) } func (*UpdateV2Request) ProtoMessage() {} func (*UpdateV2Request) Descriptor() ([]byte, []int) { - return fileDescriptor_a_bit_of_everything_74470c9779693dcd, []int{4} + return fileDescriptor_a_bit_of_everything_ba3a130ee49bb615, []int{4} } func (m *UpdateV2Request) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UpdateV2Request.Unmarshal(m, b) @@ -1529,200 +1574,212 @@ var _AnotherServiceWithNoBindings_serviceDesc = grpc.ServiceDesc{ } func init() { - proto.RegisterFile("examples/proto/examplepb/a_bit_of_everything.proto", fileDescriptor_a_bit_of_everything_74470c9779693dcd) -} - -var fileDescriptor_a_bit_of_everything_74470c9779693dcd = []byte{ - // 3044 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x39, 0xcb, 0x6f, 0x1b, 0xc7, - 0xdd, 0x5a, 0xae, 0x9e, 0xa3, 0x17, 0x35, 0xf2, 0x43, 0xa6, 0x95, 0x68, 0xcc, 0x38, 0xc9, 0x5a, - 0x31, 0xb9, 0xd2, 0x4a, 0x71, 0x6c, 0x06, 0x89, 0x3f, 0xea, 0x61, 0x5b, 0xb1, 0x2d, 0xcb, 0x6b, - 0xc7, 0x5f, 0xe0, 0xd8, 0x11, 0x86, 0xe4, 0x50, 0x5c, 0x8b, 0xbb, 0xb3, 0xd9, 0x9d, 0x95, 0xcd, - 0x4f, 0x1f, 0xbf, 0x2f, 0x7d, 0xa0, 0x45, 0x9b, 0x43, 0x01, 0x05, 0x3d, 0xb4, 0x28, 0xfa, 0x17, - 0xf4, 0xda, 0x53, 0x0e, 0x6d, 0x0f, 0x3d, 0xf5, 0xe6, 0x16, 0x01, 0x8a, 0x02, 0xb9, 0xb4, 0x05, - 0xfa, 0x17, 0x14, 0xe8, 0xa5, 0x28, 0x66, 0x76, 0x97, 0xda, 0x5d, 0x92, 0x96, 0x69, 0x07, 0xb9, - 0x48, 0x3b, 0x33, 0xbf, 0xd7, 0xfc, 0xde, 0xbf, 0x21, 0xd0, 0xc8, 0x13, 0x6c, 0xda, 0x75, 0xe2, - 0xaa, 0xb6, 0x43, 0x19, 0x55, 0x83, 0xa5, 0x5d, 0x52, 0xf1, 0x76, 0xc9, 0x60, 0xdb, 0xb4, 0xba, - 0x4d, 0xf6, 0x88, 0xd3, 0x60, 0x35, 0xc3, 0xda, 0xc9, 0x0b, 0x18, 0x38, 0xb7, 0xe3, 0xd8, 0xe5, - 0xfc, 0x0e, 0x66, 0xe4, 0x31, 0x6e, 0xe4, 0x43, 0x02, 0xf9, 0x16, 0x6a, 0x66, 0x76, 0x87, 0xd2, - 0x9d, 0x3a, 0x51, 0xb1, 0x6d, 0xa8, 0xd8, 0xb2, 0x28, 0xc3, 0xcc, 0xa0, 0x96, 0xeb, 0xa3, 0x67, - 0x50, 0x70, 0x2a, 0x56, 0x25, 0xaf, 0xaa, 0x56, 0x0d, 0x52, 0xaf, 0x6c, 0x9b, 0xd8, 0xdd, 0x0d, - 0x20, 0x4e, 0x27, 0x21, 0x88, 0x69, 0xb3, 0x46, 0x70, 0xf8, 0x6a, 0xf2, 0xb0, 0xe2, 0x39, 0x82, - 0x7e, 0x70, 0xfe, 0x66, 0xe2, 0x46, 0x36, 0x66, 0x35, 0x62, 0x79, 0xa6, 0xf8, 0xd8, 0xe6, 0x5f, - 0xa1, 0x1c, 0x09, 0x40, 0xd7, 0x2b, 0xa9, 0x26, 0x71, 0x5d, 0xbc, 0x43, 0x02, 0x88, 0x33, 0xed, - 0x10, 0x5a, 0x02, 0x64, 0x2e, 0x29, 0x0d, 0x33, 0x4c, 0xe2, 0x32, 0x6c, 0xda, 0x01, 0xc0, 0x79, - 0xf1, 0xaf, 0x9c, 0xdb, 0x21, 0x56, 0xce, 0x7d, 0x8c, 0x77, 0x76, 0x88, 0xa3, 0x52, 0x5b, 0xe8, - 0xa3, 0x5d, 0x37, 0xd9, 0xaf, 0x8f, 0x81, 0x74, 0x71, 0xc5, 0x60, 0xb7, 0xaa, 0xeb, 0x2d, 0xad, - 0xc3, 0x87, 0x60, 0xdc, 0x35, 0xac, 0x9d, 0x3a, 0xd9, 0xb6, 0x88, 0xcb, 0x48, 0x65, 0xe6, 0x14, - 0x92, 0x94, 0x51, 0xed, 0x62, 0xfe, 0x08, 0x3b, 0xe4, 0x93, 0x94, 0xf2, 0x9b, 0x02, 0x5f, 0x1f, - 0xf3, 0xc9, 0xf9, 0x2b, 0x58, 0x03, 0xfd, 0x9e, 0x67, 0x54, 0x66, 0x24, 0x24, 0x29, 0x23, 0x2b, - 0x77, 0x0f, 0x8a, 0xb7, 0x3f, 0x93, 0xa4, 0x1f, 0x4b, 0xd7, 0x3f, 0xc6, 0xb9, 0x6a, 0x31, 0x77, - 0x65, 0x21, 0x77, 0xe9, 0xe1, 0xfe, 0xc5, 0x66, 0x2e, 0xba, 0x5c, 0xee, 0x65, 0xb9, 0xa8, 0x35, - 0x75, 0xc1, 0x01, 0x6e, 0x81, 0xc1, 0xe0, 0x06, 0x29, 0x24, 0xbf, 0xd4, 0x0d, 0x02, 0x3a, 0xf0, - 0x03, 0x30, 0x5a, 0xad, 0x53, 0xcc, 0xb6, 0xf7, 0x70, 0xdd, 0x23, 0x33, 0x32, 0x92, 0x94, 0xd4, - 0xca, 0xb9, 0x83, 0xe2, 0x1b, 0xda, 0xd4, 0x15, 0xbe, 0x8f, 0xc4, 0x3e, 0x12, 0x1e, 0x56, 0x90, - 0x17, 0xf2, 0xda, 0x53, 0x29, 0x8a, 0xa0, 0x03, 0xb1, 0xb8, 0xc7, 0xbf, 0xe1, 0x19, 0x30, 0x56, - 0xa1, 0x5e, 0xa9, 0x4e, 0x02, 0x62, 0xfd, 0x48, 0x52, 0x24, 0x7d, 0xd4, 0xdf, 0xf3, 0x41, 0xe6, - 0xc0, 0xa8, 0x61, 0xb1, 0x0b, 0xcb, 0x01, 0xc4, 0x00, 0x92, 0x14, 0x59, 0x07, 0x62, 0xab, 0x45, - 0xc3, 0x8b, 0x42, 0x0c, 0x22, 0x49, 0xe9, 0xd7, 0x47, 0xbd, 0x08, 0x88, 0x4f, 0x63, 0x49, 0x0b, - 0x20, 0x86, 0x90, 0xa4, 0x0c, 0x08, 0x1a, 0x4b, 0x9a, 0x0f, 0xf0, 0x1a, 0x18, 0xaf, 0x1a, 0x4f, - 0x48, 0xa5, 0x45, 0x64, 0x18, 0x49, 0xca, 0xa0, 0x3e, 0x16, 0x6c, 0xc6, 0x81, 0x5a, 0x74, 0x46, - 0x90, 0xa4, 0x0c, 0x05, 0x40, 0x21, 0xa5, 0x57, 0x00, 0x28, 0x51, 0x5a, 0x0f, 0x20, 0x00, 0x92, - 0x94, 0x61, 0x7d, 0x84, 0xef, 0xb4, 0x84, 0x75, 0x99, 0x63, 0x58, 0x3b, 0x01, 0xc0, 0x28, 0x77, - 0x00, 0x7d, 0xd4, 0xdf, 0x6b, 0x09, 0x5b, 0x6a, 0x30, 0xe2, 0x06, 0x10, 0xaf, 0x20, 0x49, 0x19, - 0xd3, 0x81, 0xd8, 0x8a, 0x5d, 0xb8, 0x25, 0xc6, 0x38, 0x92, 0x94, 0x71, 0xff, 0xc2, 0xa1, 0x14, - 0xd7, 0x01, 0xe0, 0x51, 0x17, 0x00, 0x4c, 0x20, 0x49, 0x99, 0xd0, 0xce, 0x1f, 0x69, 0xf9, 0x4d, - 0xcf, 0x24, 0x8e, 0x51, 0x5e, 0xb7, 0x3c, 0x53, 0x1f, 0xe1, 0xf8, 0x3e, 0xb1, 0x2d, 0x30, 0xd9, - 0x8a, 0xe3, 0x80, 0xe2, 0xab, 0x82, 0xa2, 0xd2, 0x85, 0x62, 0x18, 0xfe, 0xf9, 0x2d, 0xcc, 0x6a, - 0x82, 0xda, 0xb8, 0x1d, 0x7c, 0xf9, 0x14, 0x5d, 0x70, 0xc2, 0x77, 0xa6, 0xed, 0x24, 0xe1, 0x39, - 0x41, 0xf8, 0xfd, 0xa3, 0x08, 0xdf, 0xf4, 0x13, 0x42, 0x48, 0x3f, 0x70, 0xd1, 0x16, 0xbb, 0x69, - 0x2b, 0xb6, 0xf6, 0x99, 0xbe, 0x0e, 0x26, 0xdc, 0xb8, 0xfd, 0x26, 0x91, 0xa4, 0x4c, 0xea, 0xe3, - 0x6e, 0xcc, 0x80, 0x2d, 0xb0, 0x96, 0x2f, 0xa4, 0x91, 0xa4, 0xa4, 0x43, 0xb0, 0x88, 0xd7, 0xb9, - 0x51, 0x23, 0x4c, 0x21, 0x49, 0x99, 0xd2, 0x47, 0xdd, 0x88, 0x11, 0x02, 0x90, 0x16, 0x1d, 0x88, - 0x24, 0x05, 0xfa, 0x20, 0x21, 0x15, 0x0d, 0x1c, 0x77, 0x88, 0x4d, 0x30, 0x57, 0x45, 0xcc, 0x2f, - 0xa6, 0x91, 0xac, 0x8c, 0xe8, 0xd3, 0xe1, 0xe1, 0x9d, 0x88, 0x7f, 0x5c, 0x02, 0xa3, 0xd4, 0x22, - 0xbc, 0x48, 0xf0, 0x0c, 0x3d, 0x73, 0x4c, 0x24, 0xa6, 0x13, 0x79, 0x3f, 0x29, 0xe6, 0xc3, 0xa4, - 0x98, 0x5f, 0xe7, 0xa7, 0xd7, 0xfa, 0x74, 0x20, 0x80, 0xc5, 0x0a, 0xbe, 0x06, 0xc6, 0x7c, 0x54, - 0x9f, 0xd7, 0xcc, 0x71, 0xee, 0x7d, 0xd7, 0xfa, 0x74, 0x9f, 0xa0, 0xcf, 0x04, 0x3e, 0x00, 0x23, - 0x26, 0xb6, 0x03, 0x39, 0x4e, 0x88, 0xa4, 0x71, 0xb9, 0xf7, 0xa4, 0x71, 0x13, 0xdb, 0x42, 0xdc, - 0x75, 0x8b, 0x39, 0x0d, 0x7d, 0xd8, 0x0c, 0x96, 0xf0, 0x09, 0x98, 0x36, 0xb1, 0x6d, 0x27, 0xef, - 0x7b, 0x52, 0xf0, 0xb9, 0xf6, 0x42, 0x7c, 0xec, 0x98, 0x7e, 0x7c, 0x86, 0x53, 0x66, 0x72, 0x3f, - 0xc2, 0x39, 0xf0, 0x3d, 0x9f, 0xf3, 0xcc, 0xcb, 0x71, 0xf6, 0x3d, 0xaf, 0x9d, 0x73, 0x64, 0x1f, - 0x16, 0xc0, 0x8c, 0x45, 0xad, 0x55, 0x6a, 0xed, 0x11, 0x8b, 0x57, 0x1e, 0x5c, 0xdf, 0xc4, 0xa6, - 0x9f, 0xde, 0x66, 0x32, 0x22, 0x01, 0x74, 0x3d, 0x87, 0xab, 0x60, 0xb2, 0x55, 0xde, 0x02, 0x89, - 0x4f, 0x0b, 0x8b, 0x67, 0xda, 0x2c, 0x7e, 0x37, 0x84, 0xd3, 0x27, 0x5a, 0x28, 0x3e, 0x91, 0x07, - 0xa0, 0xe5, 0x49, 0xd1, 0x60, 0x9b, 0x45, 0x72, 0xcf, 0x79, 0x61, 0x2a, 0x24, 0xd4, 0x0a, 0xac, - 0xcc, 0xef, 0x24, 0x30, 0x18, 0xd4, 0x35, 0x08, 0xfa, 0x2d, 0x6c, 0x12, 0xbf, 0xae, 0xe9, 0xe2, - 0x1b, 0x9e, 0x00, 0x83, 0xd8, 0xa4, 0x9e, 0xc5, 0x66, 0x52, 0x22, 0x51, 0x05, 0x2b, 0x78, 0x1b, - 0xa4, 0xe8, 0xae, 0x28, 0x1f, 0x13, 0x5a, 0xf1, 0x45, 0xab, 0x52, 0x7e, 0x8d, 0x10, 0x5b, 0x08, - 0x96, 0xa2, 0xbb, 0xd9, 0x39, 0x30, 0x1c, 0xae, 0xe1, 0x08, 0x18, 0xb8, 0x52, 0xbc, 0x71, 0x67, - 0x3d, 0xdd, 0x07, 0x87, 0x41, 0xff, 0x5d, 0xfd, 0xc3, 0xf5, 0xb4, 0x54, 0x38, 0x79, 0x50, 0x3c, - 0xa6, 0x41, 0x98, 0xde, 0x47, 0x59, 0xba, 0x9b, 0x2d, 0xa0, 0x2c, 0xdf, 0xcf, 0xa2, 0x66, 0xc6, - 0x00, 0xe3, 0x31, 0x8f, 0x85, 0x69, 0x20, 0xef, 0x92, 0x46, 0x70, 0x11, 0xfe, 0x09, 0x57, 0xc0, - 0x80, 0xaf, 0xb6, 0xd4, 0x0b, 0xa4, 0x53, 0x1f, 0xb5, 0x90, 0xba, 0x28, 0x65, 0xd6, 0xc0, 0x89, - 0xce, 0x4e, 0xdb, 0x81, 0xe7, 0xb1, 0x28, 0xcf, 0x91, 0x28, 0x95, 0xff, 0x0b, 0xa9, 0x24, 0x1d, - 0xb0, 0x03, 0x95, 0xcd, 0x28, 0x95, 0x97, 0x69, 0x01, 0x0e, 0xf9, 0x17, 0x7e, 0x96, 0x3a, 0x28, - 0xfe, 0x34, 0x05, 0xbe, 0x2f, 0xcd, 0x4f, 0x17, 0x51, 0xc9, 0x60, 0x88, 0x56, 0xd1, 0x61, 0xd7, - 0xaa, 0x6d, 0x6c, 0x58, 0x2c, 0x74, 0xe6, 0x06, 0x2a, 0x53, 0xd3, 0xae, 0x1b, 0x65, 0xee, 0x36, - 0x28, 0xe8, 0xe5, 0x10, 0x6b, 0xd8, 0x04, 0x31, 0x8a, 0xca, 0x74, 0x8f, 0x38, 0xc8, 0xc4, 0x56, - 0x03, 0x55, 0x09, 0x66, 0x9e, 0x43, 0x5c, 0x4e, 0x6b, 0x2b, 0xf4, 0xea, 0xa7, 0x92, 0x68, 0x64, - 0x9e, 0x4a, 0xd1, 0x36, 0xe0, 0xa9, 0x14, 0xeb, 0x1b, 0xe6, 0xef, 0x81, 0xb3, 0x57, 0x0c, 0xab, - 0x82, 0xa8, 0xc7, 0x90, 0x49, 0x1d, 0x82, 0x70, 0x89, 0x7f, 0xb6, 0xb5, 0x75, 0xf9, 0x1a, 0x63, - 0xb6, 0x5b, 0x50, 0xd5, 0x1d, 0x83, 0xd5, 0xbc, 0x52, 0xbe, 0x4c, 0x4d, 0x95, 0x2b, 0x23, 0x47, - 0xca, 0xd4, 0x6d, 0xb8, 0x8c, 0x04, 0xcb, 0x40, 0x37, 0xda, 0x32, 0xd4, 0xf6, 0x51, 0x96, 0xf3, - 0xe7, 0xce, 0xb2, 0x50, 0xae, 0x2e, 0x5d, 0x58, 0x24, 0x8b, 0xb9, 0xe5, 0xd2, 0xf2, 0x72, 0x6e, - 0xf9, 0xe2, 0x52, 0x25, 0x87, 0x17, 0xdf, 0xbe, 0x94, 0x7b, 0x7b, 0xb9, 0x82, 0x4b, 0x95, 0xea, - 0x3b, 0xe4, 0xe2, 0xe2, 0x72, 0x16, 0x35, 0x57, 0xc6, 0xc3, 0x0c, 0x2d, 0x84, 0xcb, 0xfe, 0x7b, - 0x18, 0xcc, 0x24, 0x25, 0xd1, 0x83, 0x28, 0x82, 0x97, 0xc0, 0x29, 0x51, 0x03, 0x5b, 0xf1, 0x19, - 0xed, 0xad, 0x24, 0x24, 0x2b, 0x29, 0xfd, 0x04, 0x07, 0x08, 0x11, 0xae, 0x1c, 0x36, 0x4f, 0xef, - 0x82, 0x4c, 0x1c, 0x35, 0xd6, 0x4a, 0xf1, 0x76, 0x4f, 0xd2, 0x4f, 0x46, 0x71, 0xd7, 0x22, 0x6d, - 0x55, 0x1b, 0xdf, 0x68, 0xa5, 0x92, 0x91, 0xac, 0xc8, 0x71, 0xbe, 0x1b, 0x87, 0x45, 0xab, 0x8d, - 0x6f, 0xac, 0xfd, 0xea, 0x47, 0xb2, 0xd2, 0x1f, 0xe7, 0xfb, 0x61, 0xa4, 0xe2, 0x75, 0xe2, 0xdb, - 0x2a, 0xa2, 0x03, 0x48, 0x56, 0x06, 0xda, 0xf8, 0x86, 0xf5, 0xf4, 0x3d, 0x70, 0x3a, 0xa1, 0xaa, - 0x58, 0x99, 0x1e, 0x44, 0xb2, 0x32, 0xa8, 0xcf, 0xc4, 0x94, 0x15, 0xad, 0xd8, 0x9d, 0xd1, 0x23, - 0x4d, 0xa1, 0xac, 0x0c, 0x75, 0x40, 0x0f, 0xb9, 0xbf, 0x03, 0x66, 0xe2, 0xe8, 0x91, 0x36, 0x6f, - 0x18, 0xc9, 0xca, 0xb0, 0x7e, 0x3c, 0x8a, 0xbb, 0xd2, 0x6a, 0xf9, 0xda, 0xd4, 0x15, 0x2b, 0x7c, - 0x23, 0xa2, 0xd0, 0xc7, 0xd4, 0x15, 0x2f, 0xf6, 0x09, 0x75, 0x45, 0x5b, 0x43, 0x80, 0x64, 0x65, - 0x2c, 0xae, 0xae, 0x95, 0xc3, 0x36, 0xb1, 0xa3, 0x99, 0x5a, 0xd7, 0x1d, 0x45, 0xb2, 0x32, 0xde, - 0x6e, 0xa6, 0xf0, 0xb6, 0x24, 0x79, 0xdb, 0x48, 0xd9, 0x18, 0x7b, 0x81, 0xb2, 0x11, 0xd3, 0xcd, - 0x61, 0x4f, 0x76, 0x19, 0xcc, 0x26, 0x74, 0x13, 0x37, 0xca, 0x38, 0x92, 0x95, 0x49, 0xfd, 0x54, - 0x4c, 0x3b, 0xb1, 0x6e, 0xad, 0x0b, 0x81, 0x96, 0x53, 0x4c, 0x20, 0x59, 0x49, 0x77, 0x22, 0xd0, - 0xd5, 0x99, 0x63, 0x5d, 0xdd, 0x24, 0x92, 0x95, 0xa9, 0x84, 0x75, 0x22, 0x5a, 0xea, 0x88, 0x1c, - 0xe9, 0x1b, 0x65, 0x05, 0xb6, 0x23, 0x07, 0x9c, 0x0b, 0xb5, 0x83, 0x22, 0xd1, 0xca, 0x10, 0xef, - 0xa3, 0x6c, 0x37, 0xc7, 0xca, 0x16, 0xd0, 0xc7, 0xcc, 0xf1, 0xc8, 0x79, 0xe4, 0xff, 0xad, 0xe2, - 0xba, 0x1b, 0x2c, 0x1e, 0x9e, 0x4f, 0xa2, 0x45, 0xe4, 0xe6, 0x78, 0x8b, 0xe7, 0x91, 0x76, 0x1e, - 0x2d, 0x3d, 0x44, 0xcd, 0x6c, 0x06, 0xf4, 0xaf, 0xd0, 0x4a, 0xa3, 0x53, 0x75, 0xce, 0x3e, 0x00, - 0x93, 0x41, 0x33, 0xfd, 0xdf, 0x06, 0xab, 0x09, 0xb0, 0x09, 0x90, 0x0a, 0x47, 0x53, 0x3d, 0x65, - 0xf0, 0x14, 0xd5, 0x5f, 0xc1, 0x0c, 0x07, 0xd5, 0xe3, 0xf5, 0x23, 0xed, 0xce, 0x89, 0xe8, 0x02, - 0x25, 0xfb, 0x85, 0x04, 0x26, 0x3f, 0xb4, 0x2b, 0x98, 0x91, 0x7b, 0x9a, 0x4e, 0x3e, 0xf5, 0x88, - 0xcb, 0xe0, 0x2a, 0x90, 0x71, 0xc9, 0x17, 0x62, 0x54, 0x5b, 0xec, 0xb9, 0x16, 0xe9, 0x1c, 0x1b, - 0xbe, 0x0b, 0x46, 0x3d, 0x41, 0x57, 0xbc, 0x61, 0x04, 0xa2, 0xb5, 0xb7, 0x44, 0x57, 0xf8, 0x10, - 0x7a, 0x13, 0xbb, 0xbb, 0x3a, 0xf0, 0xc1, 0xf9, 0xf7, 0x3c, 0x02, 0xa3, 0x11, 0xdf, 0xe4, 0xed, - 0xc1, 0xfd, 0x75, 0xfd, 0x56, 0xba, 0x0f, 0x0e, 0x01, 0xf9, 0xd6, 0xe6, 0x7a, 0x5a, 0xd2, 0xfe, - 0x3c, 0x0b, 0x4e, 0x26, 0x19, 0xdf, 0x21, 0xce, 0x9e, 0x51, 0x26, 0xf0, 0x2b, 0x19, 0x0c, 0xae, - 0x3a, 0x5c, 0xe7, 0xb0, 0x77, 0xe9, 0x33, 0xbd, 0xa3, 0x64, 0xff, 0x9e, 0xfa, 0xee, 0x1f, 0xff, - 0xf6, 0x45, 0xea, 0xeb, 0x54, 0xf6, 0x2f, 0x29, 0x75, 0x6f, 0x31, 0x7c, 0x2f, 0xea, 0xf4, 0x5a, - 0xa4, 0xee, 0x47, 0xca, 0x47, 0x53, 0xdd, 0x8f, 0x56, 0x84, 0xa6, 0xba, 0x1f, 0xf1, 0xce, 0xa6, - 0xea, 0x12, 0x1b, 0x3b, 0x98, 0x51, 0x47, 0xdd, 0xf7, 0x62, 0x07, 0xfb, 0x11, 0x4f, 0x6a, 0xaa, - 0xfb, 0xb1, 0x80, 0x0a, 0xd7, 0x91, 0xf3, 0x43, 0x77, 0x6d, 0xaa, 0xfb, 0xd1, 0xdc, 0xf6, 0x9e, - 0xcb, 0x1c, 0xdb, 0x21, 0x55, 0xe3, 0x89, 0x3a, 0xdf, 0xf4, 0x99, 0x44, 0xd0, 0xdc, 0x24, 0x1d, - 0x37, 0xc9, 0xc8, 0x4d, 0x20, 0xc4, 0x85, 0xec, 0xd6, 0x31, 0x37, 0xd5, 0xfd, 0xc3, 0x5c, 0xd5, - 0x54, 0xf7, 0x13, 0x13, 0x26, 0xc7, 0xec, 0x38, 0x7a, 0x36, 0xe1, 0x2f, 0x25, 0x00, 0x7c, 0xc3, - 0x8a, 0x30, 0xf8, 0x76, 0x8c, 0x3b, 0x2f, 0x6c, 0x7b, 0x36, 0x3b, 0x77, 0x84, 0x65, 0x0b, 0xd2, - 0x3c, 0xfc, 0x5f, 0x30, 0x78, 0x83, 0xd2, 0x5d, 0xcf, 0x86, 0x93, 0x79, 0xd7, 0x2b, 0x69, 0xf9, - 0x8d, 0x4a, 0x10, 0xbb, 0x2f, 0xc2, 0x39, 0x2f, 0x38, 0x2b, 0xf0, 0x8d, 0x23, 0x7d, 0x8a, 0xf7, - 0x3f, 0x4d, 0xf8, 0x03, 0x09, 0x0c, 0xfa, 0xb1, 0xfc, 0x22, 0xaa, 0xe9, 0x32, 0xa0, 0x66, 0x17, - 0x85, 0x14, 0x6f, 0x65, 0x9e, 0x53, 0x0a, 0xae, 0x86, 0xdf, 0x4a, 0x60, 0x38, 0x4c, 0x2a, 0x70, - 0xe1, 0x48, 0x51, 0x12, 0xf9, 0xa7, 0xab, 0x24, 0x8f, 0x84, 0x24, 0x95, 0xcc, 0xbc, 0xba, 0xa7, - 0x3d, 0x5b, 0x12, 0x5c, 0x22, 0x79, 0x5f, 0x1a, 0x9e, 0x8b, 0xee, 0x2f, 0x6a, 0xbd, 0xa2, 0xc0, - 0x5f, 0x48, 0x60, 0x66, 0x0b, 0xb3, 0x72, 0x8d, 0x27, 0xdd, 0x56, 0x92, 0xda, 0xb0, 0x84, 0xe3, - 0x7d, 0x73, 0x57, 0xba, 0x20, 0xae, 0xb4, 0xa0, 0xbd, 0xa5, 0xee, 0x69, 0xf8, 0x79, 0x05, 0x94, - 0xe6, 0xe1, 0x4f, 0x24, 0x30, 0xb8, 0x46, 0xea, 0x84, 0x91, 0x76, 0x4f, 0xeb, 0xc6, 0xeb, 0xc1, - 0x41, 0xf1, 0xad, 0xd2, 0x39, 0x30, 0x01, 0x40, 0xd1, 0x36, 0xae, 0x93, 0x46, 0xd1, 0x63, 0x35, - 0xd8, 0x07, 0x4e, 0x82, 0xc1, 0x5b, 0xfc, 0x53, 0x83, 0xe3, 0xa0, 0xdf, 0x21, 0xb8, 0x02, 0x06, - 0x1e, 0x3b, 0x06, 0x23, 0xbe, 0xf3, 0xcd, 0x3f, 0xaf, 0xf3, 0xfd, 0x55, 0x02, 0xc3, 0x57, 0x09, - 0xbb, 0xed, 0x11, 0xa7, 0xf1, 0x4d, 0xba, 0xdf, 0xe7, 0xd2, 0x41, 0xf1, 0x6e, 0x76, 0x13, 0xcc, - 0x76, 0x1a, 0x1f, 0x5a, 0x0c, 0x7b, 0x1c, 0x1b, 0x3e, 0x92, 0x4a, 0x7d, 0xe2, 0x7e, 0x79, 0x78, - 0xfe, 0xa8, 0xfb, 0x7d, 0xca, 0x19, 0x84, 0xb7, 0xfc, 0x7c, 0x00, 0xa4, 0xaf, 0x12, 0x16, 0x76, - 0x0b, 0x3e, 0xf3, 0x4b, 0xbd, 0x97, 0xc8, 0x00, 0x3f, 0xf3, 0xe2, 0xa8, 0xd9, 0xcf, 0xfa, 0xc5, - 0x0d, 0xfe, 0x25, 0xc3, 0x7f, 0xca, 0x47, 0xdc, 0xa1, 0xd5, 0x82, 0x04, 0xc9, 0xb6, 0xd3, 0x28, - 0xd3, 0x4c, 0x9e, 0x25, 0x2a, 0x53, 0xd7, 0x59, 0xa4, 0xed, 0xcc, 0x7b, 0xd6, 0x61, 0xbc, 0x62, - 0x3c, 0x63, 0x5a, 0xe8, 0x7c, 0xda, 0x15, 0x37, 0x56, 0xe3, 0xba, 0x77, 0xf3, 0xed, 0x78, 0x87, - 0xdd, 0x7a, 0xc7, 0x8b, 0x74, 0x65, 0xd8, 0x5e, 0xc2, 0xba, 0xb4, 0xc8, 0x5d, 0x8e, 0xbb, 0xde, - 0xd3, 0x7d, 0x16, 0xd7, 0x58, 0x89, 0x85, 0xbf, 0x97, 0x41, 0xff, 0x7a, 0xb9, 0x46, 0x61, 0xb7, - 0x77, 0x5e, 0xd7, 0x2b, 0xe5, 0xfd, 0x61, 0x25, 0x4c, 0x0e, 0xcf, 0x0d, 0x99, 0xfd, 0x47, 0xea, - 0xa0, 0xf8, 0x9d, 0x14, 0x18, 0x23, 0xe5, 0x1a, 0x45, 0xae, 0xdf, 0x5a, 0x81, 0x61, 0xb1, 0x72, - 0xec, 0x32, 0x9c, 0xba, 0xe3, 0x99, 0x26, 0x76, 0x1a, 0x05, 0xb4, 0x1e, 0x6c, 0x65, 0xd2, 0x6b, - 0xc4, 0x2d, 0x3b, 0x86, 0xf8, 0x1d, 0x47, 0xec, 0x66, 0xd7, 0x00, 0x8c, 0x87, 0xad, 0x90, 0xb6, - 0xc7, 0x60, 0xfd, 0xe0, 0x32, 0x90, 0xdf, 0x5e, 0x58, 0x82, 0x17, 0xc1, 0x05, 0x9d, 0x30, 0xcf, - 0xb1, 0x48, 0x05, 0x3d, 0xae, 0x11, 0x0b, 0xb1, 0x1a, 0x41, 0x0e, 0x71, 0xa9, 0xe7, 0x94, 0x09, - 0x32, 0x5c, 0xc4, 0x88, 0x69, 0x53, 0x07, 0x3b, 0x46, 0xbd, 0x81, 0x3c, 0x0b, 0xef, 0x61, 0xa3, - 0x8e, 0x4b, 0x75, 0x92, 0xff, 0xe0, 0x5d, 0x20, 0x2f, 0x2f, 0x2c, 0xc3, 0x65, 0x30, 0xff, 0x0c, - 0x02, 0x15, 0x4a, 0x5c, 0x64, 0x51, 0x86, 0xc8, 0x13, 0xc3, 0x65, 0x79, 0x38, 0x08, 0xfa, 0x7f, - 0x9e, 0x92, 0x64, 0x11, 0x64, 0x0f, 0x8f, 0x4e, 0x13, 0x5c, 0x31, 0xea, 0xbe, 0x6f, 0x98, 0xfb, - 0xa7, 0xb2, 0xe9, 0x68, 0xc1, 0xe1, 0x67, 0x05, 0xff, 0x69, 0xe6, 0x3e, 0x84, 0x6d, 0x47, 0xf0, - 0xd7, 0x12, 0x18, 0x5b, 0x23, 0xc4, 0x16, 0xcf, 0xe1, 0x7c, 0xe3, 0xdb, 0xe9, 0x6c, 0x2e, 0x8b, - 0xbb, 0x5d, 0xca, 0x2e, 0x1f, 0x99, 0xe2, 0x63, 0xbf, 0xb4, 0xe5, 0xf9, 0x58, 0x22, 0xaa, 0x50, - 0x11, 0x80, 0x4d, 0xba, 0x62, 0x58, 0x15, 0xc3, 0xda, 0x71, 0xe1, 0xa9, 0xb6, 0x0c, 0xbe, 0x16, - 0xfc, 0x08, 0xd9, 0x35, 0xb9, 0xf7, 0xc1, 0x7b, 0x60, 0xe8, 0xae, 0x61, 0x12, 0xea, 0x31, 0xd8, - 0x05, 0xa8, 0x2b, 0xf2, 0x69, 0x21, 0xfe, 0x71, 0x38, 0x1d, 0xd5, 0x27, 0x0b, 0x88, 0xd5, 0x40, - 0x7a, 0xdd, 0x71, 0xa8, 0xc3, 0xcb, 0xf7, 0x1a, 0x61, 0xd8, 0xa8, 0xbb, 0x3d, 0x33, 0x38, 0x2b, - 0x18, 0xbc, 0x0a, 0x67, 0x63, 0x06, 0xe3, 0x54, 0x1f, 0x1b, 0xac, 0x56, 0x09, 0xa8, 0xfe, 0x50, - 0x02, 0xf0, 0x2a, 0x61, 0xc9, 0x19, 0xed, 0xe8, 0x1e, 0x21, 0x81, 0xd1, 0x55, 0x8c, 0x37, 0x85, - 0x18, 0x67, 0xb2, 0xa7, 0xa2, 0x62, 0x70, 0x09, 0x4a, 0xb4, 0xd2, 0x50, 0xf7, 0x79, 0x47, 0x20, - 0x66, 0x39, 0xf8, 0x3d, 0x09, 0x4c, 0x6d, 0x51, 0x97, 0x71, 0x8a, 0x02, 0x55, 0x08, 0xf2, 0x7c, - 0xe3, 0x60, 0x57, 0xee, 0xaa, 0xe0, 0x7e, 0x2e, 0x7b, 0x36, 0xca, 0xdd, 0xa6, 0x2e, 0xe3, 0x12, - 0x88, 0x1f, 0x38, 0x7c, 0x31, 0x42, 0xa7, 0xc8, 0xfc, 0x46, 0x3a, 0x28, 0x7e, 0x29, 0xc1, 0x6a, - 0x97, 0xe9, 0x0c, 0x55, 0x22, 0x49, 0x22, 0x97, 0x43, 0x8f, 0x6b, 0x46, 0xb9, 0x86, 0xdc, 0x1a, - 0xf5, 0xea, 0x15, 0x11, 0x7e, 0x25, 0x82, 0x3c, 0x97, 0x54, 0x90, 0x61, 0x21, 0xbb, 0x8e, 0xcb, - 0x04, 0xd1, 0xaa, 0x08, 0xd4, 0x0a, 0x2d, 0x7b, 0x26, 0xb1, 0xfc, 0x9f, 0x86, 0x51, 0x99, 0x9a, - 0x7c, 0x71, 0x26, 0x73, 0x1b, 0xcc, 0x75, 0xea, 0x0c, 0x78, 0x18, 0x85, 0xf3, 0x60, 0xaf, 0x6f, - 0x8a, 0x8f, 0xc0, 0xb1, 0x32, 0x36, 0x49, 0x7d, 0x15, 0xbb, 0x24, 0xa0, 0xc1, 0x87, 0x17, 0xa8, - 0x83, 0x01, 0xff, 0x57, 0x9a, 0x5e, 0x1d, 0xe9, 0x94, 0xd0, 0xe1, 0x34, 0x9c, 0x8a, 0x39, 0x12, - 0x3f, 0xd2, 0x3e, 0x01, 0xb3, 0x45, 0x8b, 0xb2, 0x1a, 0x71, 0x02, 0x4e, 0xdc, 0x78, 0x91, 0xa0, - 0x7a, 0x3f, 0x16, 0x62, 0xbd, 0x32, 0xee, 0x5b, 0xf9, 0x72, 0xe8, 0xa0, 0xf8, 0xab, 0x21, 0xf8, - 0x27, 0x09, 0x4c, 0x17, 0xd1, 0x8a, 0xff, 0x0a, 0x1c, 0x49, 0x01, 0x1f, 0x81, 0x63, 0x3b, 0xfa, - 0xd6, 0x6a, 0xee, 0xaa, 0x7f, 0x75, 0x64, 0x3b, 0xf4, 0x11, 0x29, 0xb3, 0x5e, 0x55, 0x96, 0x49, - 0x5b, 0xd4, 0x22, 0xff, 0x15, 0x5c, 0x8d, 0x43, 0xcf, 0x7f, 0x02, 0x8e, 0xad, 0xdc, 0x59, 0x43, - 0x4b, 0xb9, 0xd5, 0x3a, 0xf6, 0x5c, 0x82, 0x6e, 0x18, 0x65, 0x62, 0xb9, 0x04, 0x5e, 0xe9, 0x8d, - 0xb2, 0x5a, 0xaa, 0xd3, 0x92, 0x6a, 0x62, 0x97, 0x11, 0x47, 0xbd, 0xb1, 0xb1, 0xba, 0xbe, 0x79, - 0x67, 0x3d, 0xcf, 0x9e, 0x30, 0x4d, 0x5e, 0xcc, 0x2f, 0xcc, 0xcb, 0x52, 0xaa, 0x5f, 0x4b, 0x63, - 0xdb, 0x7f, 0xbb, 0x36, 0xa8, 0xa5, 0x3e, 0x72, 0xa9, 0xa5, 0x9d, 0x88, 0xee, 0x3c, 0xc9, 0x55, - 0x29, 0xcd, 0x99, 0x86, 0x49, 0x0a, 0x6d, 0x90, 0x85, 0x2e, 0x90, 0xfa, 0x16, 0xaf, 0x18, 0x4b, - 0x70, 0x03, 0x5c, 0x6d, 0xaf, 0x18, 0x9e, 0x4b, 0x9c, 0xc3, 0x6a, 0x51, 0xc3, 0x7b, 0x04, 0xd9, - 0xc4, 0x31, 0x0d, 0xd7, 0xe5, 0x8e, 0xc9, 0x28, 0xc2, 0xe5, 0x32, 0x71, 0xdd, 0x58, 0x75, 0xc9, - 0xeb, 0x2f, 0x51, 0x83, 0x86, 0xf4, 0x6b, 0x40, 0x5e, 0x5e, 0xbc, 0x08, 0x8b, 0x60, 0x7c, 0xe3, - 0x4d, 0x13, 0x61, 0xc4, 0x08, 0xb6, 0x29, 0xcb, 0xc3, 0x05, 0x90, 0xcf, 0xf4, 0xf4, 0xcc, 0x77, - 0xff, 0x47, 0x29, 0x30, 0x09, 0x46, 0x56, 0xb0, 0x6b, 0x94, 0x45, 0xff, 0x9f, 0x1a, 0x96, 0xc0, - 0x2b, 0xb1, 0x89, 0x60, 0x72, 0x38, 0x95, 0x19, 0xf9, 0x28, 0x57, 0xdc, 0xda, 0xc8, 0x5d, 0x27, - 0x0d, 0x94, 0x02, 0x5f, 0x49, 0xad, 0x09, 0xe1, 0x0f, 0xd2, 0xb0, 0xac, 0xf4, 0x6b, 0xaf, 0x85, - 0x36, 0x8c, 0x18, 0x5c, 0xa5, 0xd8, 0x63, 0x35, 0x95, 0xff, 0xa1, 0x8e, 0xf1, 0x3f, 0xa4, 0x30, - 0xd7, 0x1d, 0x88, 0xd1, 0x5d, 0x62, 0xad, 0xfc, 0x3f, 0xc8, 0xf8, 0x03, 0x07, 0x84, 0x57, 0x1d, - 0x6c, 0x31, 0x17, 0xf1, 0x45, 0xa0, 0x3d, 0x30, 0x1b, 0x8c, 0x21, 0x70, 0x3a, 0x38, 0x14, 0xab, - 0xf0, 0x74, 0x15, 0x0c, 0xe0, 0x8a, 0x69, 0x58, 0xb0, 0x10, 0x43, 0xb5, 0x2a, 0x31, 0x30, 0x61, - 0x0c, 0x0e, 0x66, 0xb8, 0x8c, 0x57, 0xa2, 0x3d, 0x82, 0x0c, 0xab, 0x4a, 0x1d, 0x53, 0xd8, 0xbb, - 0x34, 0x07, 0xc6, 0xa3, 0xaa, 0xe8, 0x4b, 0x8e, 0x46, 0xa5, 0x73, 0x5d, 0x87, 0xa3, 0x24, 0xa8, - 0xb3, 0x01, 0x4e, 0xde, 0x3c, 0xcc, 0x3e, 0xd1, 0x98, 0xea, 0x35, 0x96, 0xee, 0x8f, 0xb4, 0x2c, - 0x57, 0x1a, 0x14, 0xf1, 0xbc, 0xf4, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xec, 0x8b, 0x0d, 0x32, - 0x91, 0x24, 0x00, 0x00, + proto.RegisterFile("examples/proto/examplepb/a_bit_of_everything.proto", fileDescriptor_a_bit_of_everything_ba3a130ee49bb615) +} + +var fileDescriptor_a_bit_of_everything_ba3a130ee49bb615 = []byte{ + // 3247 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x5a, 0xdb, 0x73, 0xdb, 0xc6, + 0xd5, 0x17, 0x08, 0xea, 0xb6, 0xba, 0x51, 0x2b, 0x5f, 0x24, 0x5a, 0xb6, 0xd6, 0xb4, 0x93, 0xc0, + 0x8c, 0x49, 0x48, 0x90, 0xec, 0xc8, 0xcc, 0x24, 0xfe, 0x48, 0x5d, 0x6c, 0xc5, 0xb6, 0x2c, 0xc3, + 0x8e, 0xbf, 0x8c, 0x63, 0x47, 0x03, 0x92, 0x4b, 0x11, 0x16, 0x81, 0x45, 0x80, 0x85, 0x6c, 0x7e, + 0xfc, 0xf8, 0x7d, 0xe9, 0x65, 0xd2, 0x69, 0xf3, 0xd0, 0x19, 0xa5, 0x7d, 0xe8, 0x65, 0xfa, 0x17, + 0xf4, 0xb5, 0xd3, 0x87, 0xcc, 0xf4, 0x36, 0x93, 0xe9, 0x4c, 0xfb, 0x54, 0xb7, 0xd3, 0x7f, 0xa0, + 0x7d, 0xe8, 0x5f, 0xd0, 0x99, 0xbe, 0x74, 0x3a, 0x58, 0x00, 0x24, 0x00, 0x92, 0x96, 0x69, 0x67, + 0xf2, 0x22, 0x63, 0x77, 0xcf, 0x39, 0xbf, 0xb3, 0x67, 0xcf, 0x9e, 0xcb, 0xd2, 0x40, 0xc2, 0x4f, + 0x15, 0xcd, 0xa8, 0x61, 0x4b, 0x34, 0x4c, 0x42, 0x89, 0xe8, 0x0d, 0x8d, 0xa2, 0xa8, 0xec, 0x16, + 0x55, 0xba, 0x4b, 0x2a, 0xbb, 0xf8, 0x00, 0x9b, 0x75, 0x5a, 0x55, 0xf5, 0xbd, 0x2c, 0xa3, 0x81, + 0x0b, 0x7b, 0xa6, 0x51, 0xca, 0xee, 0x29, 0x14, 0x3f, 0x51, 0xea, 0x59, 0x5f, 0x40, 0xb6, 0xc5, + 0x9a, 0x9c, 0xdf, 0x23, 0x64, 0xaf, 0x86, 0x45, 0xc5, 0x50, 0x45, 0x45, 0xd7, 0x09, 0x55, 0xa8, + 0x4a, 0x74, 0xcb, 0x65, 0x4f, 0x22, 0x6f, 0x95, 0x8d, 0x8a, 0x76, 0x45, 0xac, 0xa8, 0xb8, 0x56, + 0xde, 0xd5, 0x14, 0x6b, 0xdf, 0xa3, 0x38, 0x15, 0xa5, 0xc0, 0x9a, 0x41, 0xeb, 0xde, 0xe2, 0x99, + 0xe8, 0x62, 0xd9, 0x36, 0x99, 0x7c, 0x6f, 0xfd, 0x8d, 0xc8, 0x8e, 0x0c, 0x85, 0x56, 0xb1, 0x6e, + 0x6b, 0xec, 0x63, 0xd7, 0xf9, 0xf2, 0xf5, 0x88, 0x10, 0x5a, 0x76, 0x51, 0xd4, 0xb0, 0x65, 0x29, + 0x7b, 0xd8, 0xa3, 0x38, 0xdb, 0x49, 0x21, 0x45, 0x48, 0x16, 0xa2, 0xda, 0x50, 0x55, 0xc3, 0x16, + 0x55, 0x34, 0xc3, 0x23, 0xb8, 0xc8, 0xfe, 0x29, 0x65, 0xf6, 0xb0, 0x9e, 0xb1, 0x9e, 0x28, 0x7b, + 0x7b, 0xd8, 0x14, 0x89, 0xc1, 0xec, 0xd1, 0x69, 0x9b, 0xd4, 0xa7, 0xa7, 0x40, 0x22, 0x5f, 0x50, + 0xe9, 0xed, 0xca, 0x46, 0xcb, 0xea, 0xf0, 0x11, 0x98, 0xb0, 0x54, 0x7d, 0xaf, 0x86, 0x77, 0x75, + 0x6c, 0x51, 0x5c, 0x9e, 0x9d, 0x43, 0x9c, 0x30, 0x26, 0xad, 0x66, 0x8f, 0x38, 0x87, 0x6c, 0x54, + 0x52, 0x76, 0x9b, 0xf1, 0xcb, 0xe3, 0xae, 0x38, 0x77, 0x04, 0xab, 0x20, 0x6e, 0xdb, 0x6a, 0x79, + 0x96, 0x43, 0x9c, 0x30, 0x5a, 0xb8, 0x77, 0x98, 0xbf, 0xf3, 0x09, 0xc7, 0x7d, 0x8f, 0xbb, 0xf1, + 0xa1, 0x92, 0xa9, 0xe4, 0x33, 0x9b, 0x8b, 0x99, 0x2b, 0x8f, 0x1a, 0xab, 0xcd, 0x4c, 0x70, 0xb8, + 0xd2, 0xcf, 0x70, 0x49, 0x6a, 0xca, 0x0c, 0x01, 0xee, 0x80, 0x21, 0x6f, 0x07, 0x31, 0xc4, 0xbf, + 0xd2, 0x0e, 0x3c, 0x39, 0xf0, 0x3d, 0x30, 0x56, 0xa9, 0x11, 0x85, 0xee, 0x1e, 0x28, 0x35, 0x1b, + 0xcf, 0xf2, 0x88, 0x13, 0x62, 0x85, 0x0b, 0x87, 0xf9, 0xd7, 0xa5, 0xe9, 0x4d, 0x67, 0x1e, 0xb1, + 0x79, 0xc4, 0x3c, 0x2c, 0xc7, 0x2f, 0x66, 0xa5, 0x67, 0x5c, 0x90, 0x41, 0x06, 0x6c, 0x70, 0xdf, + 0xf9, 0x86, 0x67, 0xc1, 0x78, 0x99, 0xd8, 0xc5, 0x1a, 0xf6, 0x84, 0xc5, 0x11, 0x27, 0x70, 0xf2, + 0x98, 0x3b, 0xe7, 0x92, 0x2c, 0x80, 0x31, 0x55, 0xa7, 0x97, 0x57, 0x3c, 0x8a, 0x41, 0xc4, 0x09, + 0xbc, 0x0c, 0xd8, 0x54, 0x4b, 0x86, 0x1d, 0xa4, 0x18, 0x42, 0x9c, 0x10, 0x97, 0xc7, 0xec, 0x00, + 0x89, 0x2b, 0x63, 0x59, 0xf2, 0x28, 0x86, 0x11, 0x27, 0x0c, 0x32, 0x19, 0xcb, 0x92, 0x4b, 0x70, + 0x0e, 0x4c, 0x54, 0xd4, 0xa7, 0xb8, 0xdc, 0x12, 0x32, 0x82, 0x38, 0x61, 0x48, 0x1e, 0xf7, 0x26, + 0xc3, 0x44, 0x2d, 0x39, 0xa3, 0x88, 0x13, 0x86, 0x3d, 0x22, 0x5f, 0xd2, 0x69, 0x00, 0x8a, 0x84, + 0xd4, 0x3c, 0x0a, 0x80, 0x38, 0x61, 0x44, 0x1e, 0x75, 0x66, 0x5a, 0xca, 0x5a, 0xd4, 0x54, 0xf5, + 0x3d, 0x8f, 0x60, 0xcc, 0x71, 0x00, 0x79, 0xcc, 0x9d, 0x6b, 0x29, 0x5b, 0xac, 0x53, 0x6c, 0x79, + 0x14, 0xa7, 0x11, 0x27, 0x8c, 0xcb, 0x80, 0x4d, 0x85, 0x36, 0xdc, 0x52, 0x63, 0x02, 0x71, 0xc2, + 0x84, 0xbb, 0x61, 0x5f, 0x8b, 0x1b, 0x00, 0x38, 0xb7, 0xce, 0x23, 0x98, 0x44, 0x9c, 0x30, 0x29, + 0x5d, 0x3c, 0xf2, 0xe4, 0xb7, 0x6d, 0x0d, 0x9b, 0x6a, 0x69, 0x43, 0xb7, 0x35, 0x79, 0xd4, 0xe1, + 0x77, 0x85, 0xed, 0x80, 0xa9, 0xd6, 0x3d, 0xf6, 0x24, 0x9e, 0x61, 0x12, 0x85, 0x1e, 0x12, 0xfd, + 0xeb, 0x9f, 0xdd, 0x51, 0x68, 0x95, 0x49, 0x9b, 0x30, 0xbc, 0x2f, 0x57, 0xa2, 0x05, 0x4e, 0xb8, + 0xce, 0xb4, 0x1b, 0x15, 0xbc, 0xc0, 0x04, 0xbf, 0x7b, 0x94, 0xe0, 0x5b, 0x6e, 0x40, 0xf0, 0xe5, + 0x7b, 0x2e, 0xda, 0x82, 0x9b, 0xd1, 0x43, 0x63, 0x17, 0xf4, 0x35, 0x30, 0x69, 0x85, 0xcf, 0x6f, + 0x0a, 0x71, 0xc2, 0x94, 0x3c, 0x61, 0x85, 0x0e, 0xb0, 0x45, 0xd6, 0xf2, 0x85, 0x04, 0xe2, 0x84, + 0x84, 0x4f, 0x16, 0xf0, 0x3a, 0x2b, 0x78, 0x08, 0xd3, 0x88, 0x13, 0xa6, 0xe5, 0x31, 0x2b, 0x70, + 0x08, 0x1e, 0x49, 0x4b, 0x0e, 0x44, 0x9c, 0x00, 0x5d, 0x12, 0x5f, 0x8a, 0x04, 0x8e, 0x9b, 0xd8, + 0xc0, 0x8a, 0x63, 0x8a, 0x90, 0x5f, 0xcc, 0x20, 0x5e, 0x18, 0x95, 0x67, 0xfc, 0xc5, 0xbb, 0x01, + 0xff, 0xb8, 0x02, 0xc6, 0x88, 0x8e, 0x9d, 0x24, 0xe1, 0x44, 0xe8, 0xd9, 0x63, 0x2c, 0x30, 0x9d, + 0xc8, 0xba, 0x41, 0x31, 0xeb, 0x07, 0xc5, 0xec, 0x86, 0xb3, 0x7a, 0x7d, 0x40, 0x06, 0x8c, 0x98, + 0x8d, 0xe0, 0x39, 0x30, 0xee, 0xb2, 0xba, 0x58, 0xb3, 0xc7, 0x1d, 0xef, 0xbb, 0x3e, 0x20, 0xbb, + 0x02, 0x5d, 0x10, 0xf8, 0x10, 0x8c, 0x6a, 0x8a, 0xe1, 0xe9, 0x71, 0x82, 0x05, 0x8d, 0xab, 0xfd, + 0x07, 0x8d, 0x5b, 0x8a, 0xc1, 0xd4, 0xdd, 0xd0, 0xa9, 0x59, 0x97, 0x47, 0x34, 0x6f, 0x08, 0x9f, + 0x82, 0x19, 0x4d, 0x31, 0x8c, 0xe8, 0x7e, 0x4f, 0x32, 0x9c, 0xeb, 0x2f, 0x85, 0x63, 0x84, 0xec, + 0xe3, 0x02, 0x4e, 0x6b, 0xd1, 0xf9, 0x00, 0xb2, 0xe7, 0x7b, 0x2e, 0xf2, 0xec, 0xab, 0x21, 0xbb, + 0x9e, 0xd7, 0x89, 0x1c, 0x98, 0x87, 0x39, 0x30, 0xab, 0x13, 0x7d, 0x8d, 0xe8, 0x07, 0x58, 0x77, + 0x32, 0x8f, 0x52, 0xdb, 0x56, 0x34, 0x37, 0xbc, 0xcd, 0x26, 0x59, 0x00, 0xe8, 0xb9, 0x0e, 0xd7, + 0xc0, 0x54, 0x2b, 0xbd, 0x79, 0x1a, 0x9f, 0x62, 0x27, 0x9e, 0xec, 0x38, 0xf1, 0x7b, 0x3e, 0x9d, + 0x3c, 0xd9, 0x62, 0x71, 0x85, 0x3c, 0x04, 0x2d, 0x4f, 0x0a, 0x5e, 0xb6, 0x79, 0xc4, 0xf7, 0x1d, + 0x17, 0xa6, 0x7d, 0x41, 0xed, 0x8b, 0xf5, 0x4b, 0x0e, 0x9c, 0xe9, 0x22, 0x7e, 0xb7, 0x9d, 0x6a, + 0x67, 0x51, 0xff, 0x48, 0x85, 0xf5, 0xc3, 0x7c, 0x3e, 0x7d, 0x4a, 0xf6, 0x04, 0x23, 0xdd, 0x5d, + 0x42, 0x0e, 0x00, 0xa2, 0x2a, 0xad, 0x61, 0x29, 0xd5, 0x7d, 0xb1, 0x8c, 0xad, 0x92, 0xa9, 0xb2, + 0x7c, 0x9f, 0x95, 0x4f, 0x75, 0xe8, 0x9b, 0x6f, 0xa9, 0x05, 0x7f, 0xc0, 0x81, 0xe3, 0xdd, 0x15, + 0x3e, 0xdb, 0x7f, 0xc8, 0x2c, 0x48, 0x87, 0x79, 0x31, 0x0d, 0xb7, 0x3b, 0xf5, 0x9c, 0xdb, 0xee, + 0xa9, 0xde, 0x0c, 0xee, 0xa2, 0xd6, 0x01, 0x48, 0x46, 0xa3, 0x42, 0x40, 0xb5, 0x94, 0x13, 0x1a, + 0x0a, 0xab, 0x87, 0xf9, 0x4b, 0xe9, 0xe3, 0x2d, 0x03, 0xb8, 0x64, 0x1e, 0xde, 0x7c, 0x74, 0x3a, + 0x04, 0x39, 0x1b, 0x0e, 0x2a, 0x01, 0xdc, 0x5f, 0x71, 0x01, 0x60, 0xef, 0x92, 0x04, 0x80, 0xcf, + 0xbd, 0x5a, 0x01, 0x51, 0xd8, 0x3c, 0xcc, 0xaf, 0xa5, 0xdb, 0xba, 0xb9, 0x00, 0x88, 0x14, 0x1f, + 0xe3, 0x12, 0xf5, 0x34, 0x3f, 0xd7, 0x63, 0xb5, 0xfb, 0x06, 0x5c, 0xb9, 0x81, 0x0d, 0xfc, 0x84, + 0x03, 0xd3, 0x9d, 0x7a, 0x9f, 0x7f, 0xb5, 0xd2, 0xad, 0xb0, 0x72, 0x98, 0x5f, 0x4a, 0xcf, 0x6c, + 0x77, 0x51, 0x37, 0xb9, 0xdd, 0x5b, 0xcb, 0x84, 0x1e, 0xd1, 0x2e, 0xf9, 0x5b, 0x0e, 0x0c, 0x79, + 0xf5, 0x1f, 0x04, 0x71, 0x5d, 0xd1, 0xb0, 0x5b, 0xff, 0xc9, 0xec, 0x1b, 0x9e, 0x00, 0x43, 0x8a, + 0x46, 0x6c, 0x9d, 0xce, 0xc6, 0x58, 0x42, 0xf7, 0x46, 0xf0, 0x0e, 0x88, 0x91, 0x7d, 0x56, 0x66, + 0x4d, 0x4a, 0xf9, 0x97, 0xdd, 0x44, 0x76, 0x1d, 0x63, 0x83, 0x5d, 0xe0, 0x18, 0xd9, 0x4f, 0x2d, + 0x80, 0x11, 0x7f, 0x0c, 0x47, 0xc1, 0xe0, 0x66, 0xfe, 0xe6, 0xdd, 0x8d, 0xc4, 0x00, 0x1c, 0x01, + 0xf1, 0x7b, 0xf2, 0xfb, 0x1b, 0x09, 0x2e, 0x77, 0xf2, 0x30, 0x7f, 0x4c, 0x82, 0x30, 0xd1, 0x40, + 0x29, 0xb2, 0x9f, 0xca, 0xa1, 0x94, 0x33, 0x9f, 0x42, 0xcd, 0xa4, 0x0a, 0x26, 0x42, 0x91, 0x1d, + 0x26, 0x00, 0xbf, 0x8f, 0xeb, 0xde, 0x46, 0x9c, 0x4f, 0x58, 0x00, 0x83, 0x6e, 0x78, 0x89, 0xbd, + 0x44, 0xd9, 0xe1, 0xb2, 0xe6, 0x62, 0xab, 0x5c, 0x72, 0x1d, 0x9c, 0xe8, 0x1e, 0xdc, 0xbb, 0x60, + 0x1e, 0x0b, 0x62, 0x8e, 0x06, 0xa5, 0xfc, 0x9f, 0x2f, 0x25, 0x1a, 0xa8, 0xbb, 0x48, 0xd9, 0x0e, + 0x4a, 0x79, 0x95, 0x52, 0xb9, 0x8d, 0x9f, 0xfb, 0x51, 0xec, 0x30, 0xff, 0xc3, 0x18, 0xf8, 0x36, + 0x97, 0x9e, 0xc9, 0xa3, 0xa2, 0x4a, 0x11, 0xa9, 0xa0, 0x76, 0x77, 0x27, 0x6d, 0x6d, 0xe9, 0xd4, + 0x0f, 0xfa, 0x75, 0x54, 0x22, 0x9a, 0x51, 0x53, 0x4b, 0xec, 0x02, 0x78, 0x3d, 0x0f, 0xa2, 0x75, + 0x03, 0x23, 0x4a, 0x50, 0x89, 0x1c, 0x60, 0x13, 0x69, 0x8a, 0x5e, 0x47, 0x15, 0xac, 0x50, 0xdb, + 0xc4, 0x96, 0x23, 0x6b, 0xc7, 0x8f, 0xfe, 0xcf, 0x38, 0x56, 0xf0, 0x3f, 0xe3, 0x82, 0xe5, 0xf2, + 0x33, 0x2e, 0x54, 0x5f, 0xa7, 0xef, 0x83, 0xf3, 0x9b, 0xaa, 0x5e, 0x46, 0xc4, 0xa6, 0x48, 0x23, + 0x26, 0x46, 0x4a, 0xd1, 0xf9, 0xec, 0x68, 0x7f, 0xb2, 0x55, 0x4a, 0x0d, 0x2b, 0x27, 0x8a, 0x7b, + 0x2a, 0xad, 0xda, 0xc5, 0x6c, 0x89, 0x68, 0xa2, 0x63, 0x8c, 0x0c, 0x2e, 0x11, 0xab, 0x6e, 0x51, + 0xec, 0x0d, 0x3d, 0xdb, 0x48, 0x2b, 0x50, 0x6a, 0xa0, 0x94, 0x83, 0xef, 0x38, 0xcb, 0x62, 0xa9, + 0xb2, 0x7c, 0x79, 0x09, 0x2f, 0x65, 0x56, 0x8a, 0x2b, 0x2b, 0x99, 0x95, 0xd5, 0xe5, 0x72, 0x46, + 0x59, 0xba, 0x74, 0x25, 0x73, 0x69, 0xa5, 0xac, 0x14, 0xcb, 0x95, 0xb7, 0xf0, 0xea, 0xd2, 0x4a, + 0x0a, 0x35, 0x0b, 0x13, 0x7e, 0x25, 0xc3, 0x94, 0x4b, 0xfd, 0x7b, 0x04, 0xcc, 0x46, 0x35, 0xf1, + 0xe3, 0x01, 0xbc, 0x02, 0xe6, 0x58, 0xad, 0xd8, 0x8a, 0x4f, 0xc1, 0x1e, 0x84, 0x43, 0xbc, 0x10, + 0x93, 0x4f, 0x38, 0x04, 0x3e, 0xc3, 0x66, 0xbb, 0xc9, 0x78, 0x1b, 0x24, 0xc3, 0xac, 0xa1, 0x96, + 0xc3, 0x69, 0x8b, 0x38, 0xf9, 0x64, 0x90, 0x77, 0x3d, 0xd0, 0x7e, 0x74, 0xe0, 0x06, 0x2b, 0x3a, + 0x1e, 0xf1, 0x02, 0x1f, 0xc6, 0xdd, 0x6a, 0x17, 0x77, 0x1d, 0xb8, 0xa1, 0x36, 0x25, 0x8e, 0x78, + 0x21, 0x1e, 0xc6, 0x7d, 0x3f, 0x50, 0x19, 0x76, 0xc3, 0x6d, 0x15, 0x9b, 0x83, 0x88, 0x17, 0x06, + 0x3b, 0x70, 0xfd, 0xba, 0xf3, 0x1d, 0x70, 0x2a, 0x62, 0xaa, 0x50, 0x39, 0x3b, 0x84, 0x78, 0x61, + 0x48, 0x9e, 0x0d, 0x19, 0x2b, 0x58, 0xd9, 0x76, 0x67, 0x0f, 0x34, 0x4f, 0xbc, 0x30, 0xdc, 0x85, + 0xdd, 0x47, 0x7f, 0x0b, 0xcc, 0x86, 0xd9, 0x03, 0xed, 0xd0, 0x08, 0xe2, 0x85, 0x11, 0xf9, 0x78, + 0x90, 0xb7, 0xd0, 0x6a, 0x8d, 0x3a, 0xcc, 0x15, 0x2a, 0x10, 0x47, 0x59, 0x41, 0x1c, 0x32, 0x57, + 0xb8, 0x28, 0x8e, 0x98, 0x2b, 0xd8, 0x42, 0x01, 0xc4, 0x0b, 0xe3, 0x61, 0x73, 0x15, 0xda, 0xed, + 0x54, 0xd7, 0x63, 0x6a, 0x6d, 0x77, 0x0c, 0xf1, 0xc2, 0x44, 0xe7, 0x31, 0xf9, 0xbb, 0xc5, 0xd1, + 0xdd, 0x06, 0xca, 0xab, 0xf1, 0x97, 0x28, 0xaf, 0x42, 0xb6, 0x69, 0x97, 0x58, 0x57, 0xc1, 0x7c, + 0xc4, 0x36, 0xe1, 0x43, 0x99, 0x40, 0xbc, 0x30, 0x25, 0xcf, 0x85, 0xac, 0x13, 0xea, 0x6a, 0x7a, + 0x08, 0x68, 0x39, 0xc5, 0x24, 0xe2, 0x85, 0x44, 0x37, 0x01, 0x3d, 0x9d, 0x39, 0xd4, 0xfd, 0x4c, + 0x21, 0x5e, 0x98, 0x8e, 0x9c, 0x4e, 0xc0, 0x4a, 0x5d, 0x99, 0x03, 0xfd, 0x15, 0x2f, 0xc0, 0x4e, + 0x66, 0x0f, 0x39, 0x57, 0x3d, 0xcc, 0x63, 0xa9, 0x04, 0x95, 0x06, 0x4a, 0xf5, 0x72, 0xac, 0x54, + 0x0e, 0x7d, 0x48, 0x4d, 0x1b, 0x5f, 0x44, 0xee, 0xdf, 0x8a, 0x52, 0xb3, 0xbc, 0xc1, 0xa3, 0x8b, + 0x51, 0xb6, 0x80, 0xde, 0x0e, 0xdf, 0xd2, 0x45, 0x24, 0x5d, 0x44, 0xcb, 0x8f, 0x50, 0x33, 0x95, + 0x04, 0xf1, 0x02, 0x29, 0xd7, 0xbb, 0x65, 0xe7, 0xd4, 0x43, 0x30, 0xe5, 0x35, 0x9d, 0xff, 0xad, + 0xd2, 0x2a, 0x23, 0x9b, 0x04, 0x31, 0xff, 0x09, 0x47, 0x8e, 0xa9, 0x4e, 0x88, 0x8a, 0x97, 0x15, + 0xaa, 0x78, 0xd9, 0xe3, 0xb5, 0x23, 0xcf, 0xdd, 0x11, 0x22, 0x33, 0x96, 0xd4, 0xe7, 0x1c, 0x98, + 0x7a, 0xdf, 0x28, 0x2b, 0x14, 0xdf, 0x97, 0x64, 0xfc, 0xb1, 0x8d, 0x2d, 0x0a, 0xd7, 0x00, 0xaf, + 0x14, 0x5d, 0x25, 0xc6, 0xa4, 0xa5, 0xbe, 0x73, 0x91, 0xec, 0x70, 0xc3, 0xb7, 0xc1, 0x98, 0xcd, + 0xe4, 0xb2, 0xb7, 0x3e, 0x4f, 0xb5, 0xce, 0xd6, 0x61, 0x53, 0xc5, 0xb5, 0xf2, 0x2d, 0xc5, 0xda, + 0x97, 0x81, 0x4b, 0xee, 0x7c, 0xa7, 0x11, 0x18, 0x0b, 0xf8, 0xa6, 0x53, 0x1e, 0x3c, 0xd8, 0x90, + 0x6f, 0x27, 0x06, 0xe0, 0x30, 0xe0, 0x6f, 0x6f, 0x6f, 0x24, 0x38, 0xe9, 0xcb, 0xd3, 0xe0, 0x64, + 0x14, 0xf8, 0x2e, 0x36, 0x0f, 0xd4, 0x12, 0x86, 0xbf, 0x8b, 0x83, 0xa1, 0x35, 0xd3, 0xb1, 0x39, + 0xec, 0x5f, 0xfb, 0x64, 0xff, 0x2c, 0xa9, 0x3f, 0xf1, 0xdf, 0xfc, 0xf3, 0xdf, 0x3f, 0x8f, 0xfd, + 0x81, 0x4f, 0xfd, 0x9e, 0x17, 0x0f, 0x96, 0xfc, 0x77, 0xd5, 0x6e, 0xaf, 0xaa, 0x62, 0x23, 0x90, + 0x3e, 0x9a, 0x62, 0x23, 0x98, 0x11, 0x9a, 0x62, 0x23, 0xe0, 0x9d, 0x4d, 0xd1, 0xc2, 0x86, 0x62, + 0x2a, 0x94, 0x98, 0x62, 0xc3, 0x0e, 0x2d, 0x34, 0x02, 0x9e, 0xd4, 0x14, 0x1b, 0xa1, 0x0b, 0xe5, + 0x8f, 0x03, 0xeb, 0x6d, 0x77, 0x6d, 0x8a, 0x8d, 0x60, 0x6c, 0x7b, 0xc7, 0xa2, 0xa6, 0x61, 0xe2, + 0x8a, 0xfa, 0x54, 0x4c, 0x37, 0x5d, 0x90, 0x00, 0x9b, 0x15, 0x95, 0x63, 0x45, 0x81, 0xac, 0x08, + 0x43, 0x58, 0xc9, 0x5e, 0x9d, 0x65, 0x53, 0x6c, 0xb4, 0x63, 0x55, 0x53, 0x6c, 0x44, 0x5e, 0x62, + 0x1c, 0xce, 0xae, 0x4f, 0x34, 0x4d, 0xb1, 0xd1, 0x25, 0xd8, 0x75, 0x9f, 0x0d, 0x54, 0xe1, 0x21, + 0xb8, 0xf0, 0x7c, 0xef, 0x5e, 0xa7, 0x09, 0x7f, 0xc6, 0x01, 0xe0, 0x3a, 0x11, 0xbb, 0x72, 0x5f, + 0x8f, 0x23, 0xa5, 0x99, 0x1f, 0x9d, 0x4f, 0x2d, 0x1c, 0xe1, 0x45, 0x39, 0x2e, 0x0d, 0xff, 0x17, + 0x0c, 0xdd, 0x24, 0x64, 0xdf, 0x36, 0xe0, 0x54, 0xd6, 0xb2, 0x8b, 0x52, 0x76, 0xab, 0xec, 0xc5, + 0x89, 0x97, 0x41, 0xce, 0x32, 0x64, 0x01, 0xbe, 0x7e, 0xa4, 0xff, 0x3a, 0xb5, 0x56, 0x13, 0x7e, + 0xca, 0x81, 0x21, 0x37, 0x6e, 0xbc, 0x8c, 0x69, 0x7a, 0x3c, 0x1a, 0xa5, 0x96, 0x98, 0x16, 0x6f, + 0x26, 0x5f, 0x50, 0x0b, 0xc7, 0x0c, 0xbf, 0xe1, 0xc0, 0x88, 0x1f, 0xc0, 0xe0, 0xe2, 0x91, 0xaa, + 0x44, 0x62, 0x5d, 0x4f, 0x4d, 0x1e, 0x33, 0x4d, 0xca, 0xc9, 0xb4, 0x78, 0x20, 0x3d, 0x5f, 0x13, + 0xa5, 0x88, 0xb3, 0xae, 0x36, 0x4e, 0xdc, 0x7b, 0xb0, 0x24, 0xf5, 0xcb, 0x02, 0x7f, 0xca, 0x81, + 0xd9, 0x1d, 0x85, 0x96, 0xaa, 0x4e, 0x80, 0x6f, 0x05, 0xc4, 0x2d, 0x9d, 0x39, 0xde, 0x57, 0xb7, + 0xa5, 0xcb, 0x6c, 0x4b, 0x8b, 0xd2, 0x9b, 0xe2, 0x81, 0xa4, 0xbc, 0xa8, 0x82, 0x5c, 0x1a, 0x7e, + 0x9f, 0x03, 0x43, 0xeb, 0xb8, 0x86, 0x29, 0xee, 0xf4, 0xb4, 0x5e, 0x58, 0x0f, 0x0f, 0xf3, 0x6f, + 0x16, 0x2f, 0x80, 0x49, 0x00, 0xf2, 0x86, 0x7a, 0x03, 0xd7, 0xf3, 0x36, 0xad, 0xc2, 0x01, 0x70, + 0x12, 0x0c, 0xdd, 0x76, 0x3e, 0x25, 0x38, 0x01, 0xe2, 0x26, 0x56, 0xca, 0x60, 0xf0, 0x89, 0xa9, + 0x52, 0xec, 0x3a, 0x5f, 0xfa, 0x45, 0x9d, 0xef, 0x6f, 0x1c, 0x18, 0xb9, 0x86, 0xe9, 0x1d, 0x1b, + 0x9b, 0xf5, 0xaf, 0xd2, 0xfd, 0x3e, 0xe3, 0x0e, 0xf3, 0xf7, 0x52, 0xdb, 0x60, 0xbe, 0x5b, 0xab, + 0xd2, 0x02, 0xec, 0xb3, 0x45, 0xf9, 0x80, 0x2b, 0x0e, 0xb0, 0xfd, 0x65, 0xe1, 0xc5, 0xa3, 0xf6, + 0xf7, 0xb1, 0x03, 0xe0, 0xef, 0xf2, 0xb3, 0x41, 0x90, 0xb8, 0x86, 0xa9, 0x5f, 0x99, 0xb8, 0xe0, + 0x57, 0xfa, 0x4f, 0xc7, 0x1e, 0x7f, 0xf2, 0xe5, 0x59, 0x53, 0x9f, 0xc4, 0xd9, 0x0e, 0xfe, 0xc5, + 0xc3, 0x7f, 0x1e, 0x95, 0xe0, 0x5a, 0xe5, 0x8e, 0x17, 0xd8, 0xbb, 0xb5, 0x4d, 0xcd, 0xe8, 0x5a, + 0x24, 0x0b, 0xf6, 0xec, 0x7b, 0x3a, 0xd6, 0xec, 0xe7, 0x2d, 0x86, 0xb3, 0xd3, 0x73, 0x3a, 0x93, + 0xee, 0xab, 0x3d, 0x79, 0x43, 0xf9, 0xb4, 0x77, 0xe7, 0xd0, 0xc9, 0xd7, 0xee, 0x0c, 0xba, 0x6e, + 0xa4, 0x27, 0x60, 0x67, 0xba, 0xec, 0x51, 0x8e, 0xf7, 0x58, 0xee, 0xb9, 0x4f, 0xeb, 0x79, 0xa8, + 0xa1, 0x74, 0x0e, 0xbf, 0xe4, 0x41, 0x7c, 0xa3, 0x54, 0x25, 0xb0, 0xd7, 0x6f, 0x2f, 0x96, 0x5d, + 0xcc, 0xba, 0x8d, 0x91, 0x1f, 0x1c, 0x5e, 0x98, 0x32, 0xf5, 0x8f, 0xd8, 0x61, 0xfe, 0x1b, 0x31, + 0x30, 0x8e, 0x4b, 0x55, 0x82, 0x2c, 0xb7, 0x8c, 0x03, 0x23, 0x6c, 0x64, 0x1a, 0x25, 0x38, 0x7d, + 0xd7, 0xd6, 0x34, 0xc5, 0xac, 0xe7, 0xd0, 0x86, 0x37, 0x95, 0x4c, 0xac, 0xb7, 0x9f, 0xbc, 0xd8, + 0x6c, 0x6a, 0x1d, 0xc0, 0xf0, 0xb5, 0x65, 0xda, 0xf6, 0x79, 0x59, 0xdf, 0xbb, 0x0a, 0xf8, 0x4b, + 0x8b, 0xcb, 0x70, 0x15, 0x5c, 0x96, 0x31, 0xb5, 0x4d, 0x1d, 0x97, 0xd1, 0x93, 0x2a, 0xd6, 0x11, + 0xad, 0x62, 0x64, 0x62, 0x8b, 0xd8, 0x66, 0x09, 0x23, 0xd5, 0x42, 0x14, 0x6b, 0x06, 0x31, 0x15, + 0x53, 0xad, 0xd5, 0x91, 0xad, 0x2b, 0x07, 0x8a, 0x5a, 0x53, 0x8a, 0x35, 0x9c, 0x7d, 0xef, 0x6d, + 0xc0, 0xaf, 0x2c, 0xae, 0xc0, 0x15, 0x90, 0x7e, 0x8e, 0x80, 0x32, 0xc1, 0x16, 0xd2, 0x09, 0x45, + 0xf8, 0xa9, 0x6a, 0xd1, 0x2c, 0x1c, 0x02, 0xf1, 0x1f, 0xc7, 0x38, 0xb7, 0x8a, 0x7c, 0x74, 0x74, + 0x98, 0x70, 0x0c, 0x23, 0x36, 0xdc, 0x83, 0x79, 0x30, 0x97, 0x4a, 0x04, 0x13, 0x8e, 0xb3, 0x96, + 0x73, 0x9f, 0x81, 0x1e, 0x40, 0xd8, 0xb1, 0x04, 0x7f, 0xc1, 0x81, 0xf1, 0x75, 0x8c, 0x0d, 0xf6, + 0x13, 0x95, 0x33, 0xf1, 0xf5, 0x54, 0x36, 0x57, 0xd9, 0xde, 0xae, 0xa4, 0x56, 0x8e, 0x0c, 0xf1, + 0xa1, 0x5f, 0xbf, 0xb3, 0x4e, 0x0b, 0xc4, 0xb2, 0x50, 0x1e, 0x80, 0x6d, 0x52, 0x50, 0xf5, 0xb2, + 0xaa, 0xef, 0x59, 0x70, 0xae, 0x23, 0x82, 0xaf, 0x7b, 0xff, 0x31, 0xa0, 0x67, 0x70, 0x1f, 0x80, + 0xf7, 0xc1, 0xf0, 0x3d, 0x55, 0xc3, 0xc4, 0xa6, 0xb0, 0x07, 0x51, 0x4f, 0xe6, 0x53, 0x4c, 0xfd, + 0xe3, 0x70, 0x26, 0x68, 0x4f, 0xea, 0x09, 0xab, 0x82, 0xc4, 0x86, 0x69, 0x12, 0xd3, 0x49, 0xdf, + 0xeb, 0x98, 0x2a, 0x6a, 0xcd, 0xea, 0x1b, 0xe0, 0x3c, 0x03, 0x38, 0x03, 0xe7, 0x43, 0x07, 0xe6, + 0x48, 0x7d, 0xa2, 0xd2, 0x6a, 0xd9, 0x93, 0xfa, 0x1d, 0x0e, 0xc0, 0x6b, 0x98, 0x46, 0xfb, 0xc1, + 0xa3, 0x6b, 0x84, 0x08, 0x47, 0x4f, 0x35, 0xde, 0x60, 0x6a, 0x9c, 0x4d, 0xcd, 0x05, 0xd5, 0x70, + 0x34, 0x28, 0x92, 0x72, 0x5d, 0x6c, 0x38, 0x15, 0x01, 0xeb, 0x1b, 0xe1, 0xb7, 0x38, 0x30, 0xbd, + 0x43, 0x2c, 0xea, 0x48, 0x64, 0xac, 0x4c, 0x91, 0x17, 0x6b, 0x3d, 0x7b, 0xa2, 0x8b, 0x0c, 0xfd, + 0x42, 0xea, 0x7c, 0x10, 0xdd, 0x20, 0x16, 0x75, 0x34, 0x60, 0x3f, 0x3a, 0xba, 0x6a, 0xf8, 0x4e, + 0x91, 0xfc, 0x35, 0x77, 0x98, 0xff, 0x82, 0x83, 0x95, 0x1e, 0x9d, 0x60, 0xf0, 0x5d, 0x1c, 0x65, + 0x32, 0xe8, 0x49, 0x55, 0x2d, 0x55, 0x91, 0x55, 0x25, 0x76, 0xad, 0xcc, 0xae, 0x5f, 0x11, 0x23, + 0xdb, 0xc2, 0x65, 0xa4, 0xea, 0xc8, 0xa8, 0x29, 0x25, 0x8c, 0x48, 0x85, 0x5d, 0xd4, 0x32, 0x29, + 0xd9, 0x1a, 0xd6, 0xdd, 0x5e, 0x00, 0x95, 0x88, 0xe6, 0x0c, 0xce, 0x26, 0xef, 0x80, 0x85, 0x6e, + 0x95, 0x81, 0x73, 0x8d, 0xfc, 0xde, 0xb3, 0xdf, 0xf7, 0xcb, 0xc7, 0xe0, 0x58, 0x49, 0xd1, 0x70, + 0x6d, 0x4d, 0xb1, 0xb0, 0x27, 0xc3, 0x69, 0x94, 0xa0, 0x0c, 0x06, 0xdd, 0x5f, 0x4e, 0xfb, 0x75, + 0xa4, 0x39, 0x66, 0xc3, 0x19, 0x38, 0x1d, 0x72, 0x24, 0x67, 0x49, 0xfa, 0x08, 0xcc, 0xe7, 0x75, + 0x42, 0xab, 0xd8, 0xf4, 0x90, 0x9c, 0xc3, 0x0b, 0x5c, 0xaa, 0x77, 0x43, 0x57, 0xac, 0x5f, 0xe0, + 0x81, 0xc2, 0x17, 0xc3, 0x87, 0xf9, 0x9f, 0x0f, 0xc3, 0xbf, 0x70, 0x60, 0x26, 0x8f, 0x0a, 0xee, + 0x8b, 0x73, 0x20, 0x04, 0x7c, 0x00, 0x8e, 0xed, 0xc9, 0x3b, 0x6b, 0x99, 0x6b, 0xee, 0xd6, 0x91, + 0x61, 0x92, 0xc7, 0xb8, 0x44, 0xfb, 0x35, 0x59, 0x32, 0xa1, 0x13, 0x1d, 0xff, 0x97, 0xb7, 0x35, + 0x87, 0x3a, 0xfd, 0x11, 0x38, 0x56, 0xb8, 0xbb, 0x8e, 0x96, 0x33, 0x6b, 0x35, 0xc5, 0xb6, 0x30, + 0xba, 0xa9, 0x96, 0xb0, 0x6e, 0x61, 0xb8, 0xd9, 0x9f, 0x64, 0xb1, 0x58, 0x23, 0x45, 0x51, 0x53, + 0x2c, 0x8a, 0x4d, 0xf1, 0xe6, 0xd6, 0xda, 0xc6, 0xf6, 0xdd, 0x8d, 0x2c, 0x7d, 0x4a, 0x25, 0x7e, + 0x29, 0xbb, 0x98, 0xe6, 0xb9, 0x58, 0x5c, 0x4a, 0x28, 0x86, 0xfb, 0x4e, 0xae, 0x12, 0x5d, 0x7c, + 0x6c, 0x11, 0x5d, 0x3a, 0x11, 0x9c, 0x79, 0x9a, 0xa9, 0x10, 0x92, 0xd1, 0x54, 0x0d, 0xe7, 0x3a, + 0x28, 0x73, 0x3d, 0x28, 0xe5, 0x1d, 0x27, 0x63, 0x2c, 0xc3, 0x2d, 0x70, 0xad, 0x33, 0x63, 0xd8, + 0x16, 0x36, 0xdb, 0xd9, 0xa2, 0xaa, 0x1c, 0x60, 0x64, 0x60, 0x53, 0x53, 0x2d, 0xcb, 0x71, 0x4c, + 0x4a, 0x90, 0x52, 0x2a, 0x61, 0xcb, 0x0a, 0x65, 0x97, 0xac, 0xfc, 0x0a, 0x39, 0x68, 0x58, 0xbe, + 0x0e, 0xf8, 0x95, 0xa5, 0x55, 0x98, 0x07, 0x13, 0x5b, 0x6f, 0x68, 0x48, 0x41, 0x14, 0x2b, 0x06, + 0xa1, 0x59, 0xb8, 0x08, 0xb2, 0xc9, 0xbe, 0x9e, 0x14, 0x1f, 0x7c, 0x37, 0x06, 0xa6, 0xc0, 0x68, + 0x41, 0xb1, 0xd4, 0x12, 0xab, 0xff, 0x63, 0x23, 0x1c, 0x38, 0x1d, 0xea, 0x08, 0xa6, 0x46, 0x62, + 0xc9, 0xd1, 0x0f, 0x32, 0xf9, 0x9d, 0xad, 0xcc, 0x0d, 0x5c, 0x47, 0x31, 0xf0, 0x57, 0xae, 0xd5, + 0x21, 0xfc, 0x91, 0x1b, 0xe1, 0x85, 0xb8, 0x74, 0xce, 0x3f, 0xc3, 0xc0, 0x81, 0x8b, 0x44, 0xb1, + 0x69, 0x55, 0x74, 0xfe, 0x10, 0x53, 0xfd, 0x1f, 0x9c, 0x5b, 0xe8, 0x4d, 0x44, 0xc9, 0x3e, 0xd6, + 0x0b, 0xff, 0x0f, 0x92, 0x6e, 0xc3, 0x01, 0xe1, 0x35, 0x53, 0xd1, 0xa9, 0x85, 0x9c, 0x81, 0x67, + 0x3d, 0x30, 0xef, 0xb5, 0x21, 0x70, 0xc6, 0x5b, 0x64, 0x23, 0x7f, 0x75, 0x0d, 0x0c, 0x2a, 0x65, + 0x4d, 0xd5, 0x61, 0x2e, 0xc4, 0xaa, 0x97, 0x43, 0x64, 0xec, 0x30, 0x1c, 0x32, 0xd5, 0xa2, 0x4e, + 0x26, 0x3a, 0xc0, 0x48, 0xd5, 0x2b, 0xc4, 0xd4, 0xd8, 0x79, 0x17, 0x17, 0xc0, 0x44, 0xd0, 0x14, + 0x03, 0xd1, 0xd6, 0xa8, 0x78, 0xa1, 0x67, 0x73, 0x14, 0x25, 0x35, 0xb7, 0xc0, 0xc9, 0x5b, 0xed, + 0xe8, 0x13, 0xbc, 0x53, 0xfd, 0xde, 0xa5, 0x07, 0xa3, 0xad, 0x93, 0x2b, 0x0e, 0xb1, 0xfb, 0xbc, + 0xfc, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x7d, 0x13, 0x85, 0x60, 0x25, 0x28, 0x00, 0x00, } diff --git a/examples/proto/examplepb/a_bit_of_everything.pb.gw.go b/examples/proto/examplepb/a_bit_of_everything.pb.gw.go index 2d9070eef8d..b7e7c012e57 100644 --- a/examples/proto/examplepb/a_bit_of_everything.pb.gw.go +++ b/examples/proto/examplepb/a_bit_of_everything.pb.gw.go @@ -33,7 +33,7 @@ var _ = runtime.String var _ = utilities.NewDoubleArray var ( - filter_ABitOfEverythingService_Create_0 = &utilities.DoubleArray{Encoding: map[string]int{"float_value": 0, "double_value": 1, "int64_value": 2, "uint64_value": 3, "int32_value": 4, "fixed64_value": 5, "fixed32_value": 6, "bool_value": 7, "string_value": 8, "uint32_value": 9, "sfixed32_value": 10, "sfixed64_value": 11, "sint32_value": 12, "sint64_value": 13, "nonConventionalNameValue": 14, "enum_value": 15, "path_enum_value": 16, "nested_path_enum_value": 17}, Base: []int{1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19}} + filter_ABitOfEverythingService_Create_0 = &utilities.DoubleArray{Encoding: map[string]int{"float_value": 0, "double_value": 1, "int64_value": 2, "uint64_value": 3, "int32_value": 4, "fixed64_value": 5, "fixed32_value": 6, "bool_value": 7, "string_value": 8, "uint32_value": 9, "sfixed32_value": 10, "sfixed64_value": 11, "sint32_value": 12, "sint64_value": 13, "nonConventionalNameValue": 14, "enum_value": 15, "path_enum_value": 16, "nested_path_enum_value": 17, "repeated_enum_value": 18, "repeated_enum_value_annotation": 19, "enum_value_annotation": 20, "repeated_string_annotation": 21}, Base: []int{1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}} ) func request_ABitOfEverythingService_Create_0(ctx context.Context, marshaler runtime.Marshaler, client ABitOfEverythingServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -43,6 +43,7 @@ func request_ABitOfEverythingService_Create_0(ctx context.Context, marshaler run var ( val string e int32 + es []int32 ok bool err error _ = err @@ -252,6 +253,64 @@ func request_ABitOfEverythingService_Create_0(ctx context.Context, marshaler run protoReq.NestedPathEnumValue = pathenum.MessagePathEnum_NestedPathEnum(e) + val, ok = pathParams["repeated_enum_value"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "repeated_enum_value") + } + + es, err = runtime.EnumSlice(val, ",", NumericEnum_value) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "repeated_enum_value", err) + } + + s := make([]NumericEnum, len(es)) + for i, v := range es { + s[i] = NumericEnum(v) + } + protoReq.RepeatedEnumValue = s + + val, ok = pathParams["repeated_enum_value_annotation"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "repeated_enum_value_annotation") + } + + es, err = runtime.EnumSlice(val, ",", NumericEnum_value) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "repeated_enum_value_annotation", err) + } + + s := make([]NumericEnum, len(es)) + for i, v := range es { + s[i] = NumericEnum(v) + } + protoReq.RepeatedEnumValueAnnotation = s + + val, ok = pathParams["enum_value_annotation"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "enum_value_annotation") + } + + e, err = runtime.Enum(val, NumericEnum_value) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "enum_value_annotation", err) + } + + protoReq.EnumValueAnnotation = NumericEnum(e) + + val, ok = pathParams["repeated_string_annotation"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "repeated_string_annotation") + } + + protoReq.RepeatedStringAnnotation, err = runtime.StringSlice(val, ",") + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "repeated_string_annotation", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_ABitOfEverythingService_Create_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -1329,7 +1388,7 @@ func RegisterABitOfEverythingServiceHandlerClient(ctx context.Context, mux *runt } var ( - pattern_ABitOfEverythingService_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 2, 6, 1, 0, 4, 1, 5, 7, 1, 0, 4, 1, 5, 8, 1, 0, 4, 1, 5, 9, 1, 0, 4, 1, 5, 10, 1, 0, 4, 1, 5, 11, 2, 12, 1, 0, 4, 2, 5, 13, 1, 0, 4, 1, 5, 14, 1, 0, 4, 1, 5, 15, 1, 0, 4, 1, 5, 16, 1, 0, 4, 1, 5, 17, 1, 0, 4, 1, 5, 18, 1, 0, 4, 1, 5, 19, 1, 0, 4, 1, 5, 20, 1, 0, 4, 1, 5, 21, 1, 0, 4, 1, 5, 22}, []string{"v1", "example", "a_bit_of_everything", "float_value", "double_value", "int64_value", "separator", "uint64_value", "int32_value", "fixed64_value", "fixed32_value", "bool_value", "strprefix", "string_value", "uint32_value", "sfixed32_value", "sfixed64_value", "sint32_value", "sint64_value", "nonConventionalNameValue", "enum_value", "path_enum_value", "nested_path_enum_value"}, "")) + pattern_ABitOfEverythingService_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 2, 6, 1, 0, 4, 1, 5, 7, 1, 0, 4, 1, 5, 8, 1, 0, 4, 1, 5, 9, 1, 0, 4, 1, 5, 10, 1, 0, 4, 1, 5, 11, 2, 12, 1, 0, 4, 2, 5, 13, 1, 0, 4, 1, 5, 14, 1, 0, 4, 1, 5, 15, 1, 0, 4, 1, 5, 16, 1, 0, 4, 1, 5, 17, 1, 0, 4, 1, 5, 18, 1, 0, 4, 1, 5, 19, 1, 0, 4, 1, 5, 20, 1, 0, 4, 1, 5, 21, 1, 0, 4, 1, 5, 22, 1, 0, 4, 1, 5, 23, 1, 0, 4, 1, 5, 24, 1, 0, 4, 1, 5, 25, 1, 0, 4, 1, 5, 26}, []string{"v1", "example", "a_bit_of_everything", "float_value", "double_value", "int64_value", "separator", "uint64_value", "int32_value", "fixed64_value", "fixed32_value", "bool_value", "strprefix", "string_value", "uint32_value", "sfixed32_value", "sfixed64_value", "sint32_value", "sint64_value", "nonConventionalNameValue", "enum_value", "path_enum_value", "nested_path_enum_value", "repeated_enum_value", "repeated_enum_value_annotation", "enum_value_annotation", "repeated_string_annotation"}, "")) pattern_ABitOfEverythingService_CreateBody_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "example", "a_bit_of_everything"}, "")) diff --git a/examples/proto/examplepb/a_bit_of_everything.proto b/examples/proto/examplepb/a_bit_of_everything.proto index 9533cad3e5e..82af8e0414f 100644 --- a/examples/proto/examplepb/a_bit_of_everything.proto +++ b/examples/proto/examplepb/a_bit_of_everything.proto @@ -202,6 +202,21 @@ message ABitOfEverything { // repeated enum value. it is comma-separated in query repeated NumericEnum repeated_enum_value = 28; + + // repeated numeric enum comment (This comment is overridden by the field annotation) + repeated NumericEnum repeated_enum_value_annotation = 32 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = {title: "Repeated numeric enum title", description: "Repeated numeric enum description."}]; + + // numeric enum comment (This comment is overridden by the field annotation) + NumericEnum enum_value_annotation = 33 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = {title: "Numeric enum title", description: "Numeric enum description."}]; + + // repeated string comment (This comment is overridden by the field annotation) + repeated string repeated_string_annotation = 34 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = {title: "Repeated string title", description: "Repeated string description."}]; + + // repeated nested object comment (This comment is overridden by the field annotation) + repeated Nested repeated_nested_annotation = 35 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = {title: "Repeated nested object title", description: "Repeated nested object description."}]; + + // nested object comments (This comment is overridden by the field annotation) + Nested nested_annotation = 36 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = {title: "Nested object title", description: "Nested object description."}]; } // ABitOfEverythingRepeated is used to validate repeated path parameter functionality @@ -270,7 +285,7 @@ service ABitOfEverythingService { // This API creates a new ABitOfEverything rpc Create(ABitOfEverything) returns (ABitOfEverything) { option (google.api.http) = { - post: "/v1/example/a_bit_of_everything/{float_value}/{double_value}/{int64_value}/separator/{uint64_value}/{int32_value}/{fixed64_value}/{fixed32_value}/{bool_value}/{string_value=strprefix/*}/{uint32_value}/{sfixed32_value}/{sfixed64_value}/{sint32_value}/{sint64_value}/{nonConventionalNameValue}/{enum_value}/{path_enum_value}/{nested_path_enum_value}" + post: "/v1/example/a_bit_of_everything/{float_value}/{double_value}/{int64_value}/separator/{uint64_value}/{int32_value}/{fixed64_value}/{fixed32_value}/{bool_value}/{string_value=strprefix/*}/{uint32_value}/{sfixed32_value}/{sfixed64_value}/{sint32_value}/{sint64_value}/{nonConventionalNameValue}/{enum_value}/{path_enum_value}/{nested_path_enum_value}/{repeated_enum_value}/{repeated_enum_value_annotation}/{enum_value_annotation}/{repeated_string_annotation}" }; } rpc CreateBody(ABitOfEverything) returns (ABitOfEverything) { diff --git a/examples/proto/examplepb/a_bit_of_everything.swagger.json b/examples/proto/examplepb/a_bit_of_everything.swagger.json index 3e246b63c78..48a97db32a9 100644 --- a/examples/proto/examplepb/a_bit_of_everything.swagger.json +++ b/examples/proto/examplepb/a_bit_of_everything.swagger.json @@ -362,6 +362,68 @@ "ONE" ] } + }, + { + "name": "repeated_enum_value_annotation", + "description": "Repeated numeric enum title. Repeated numeric enum description.\n\n - ZERO: ZERO means 0\n - ONE: ONE means 1", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string", + "enum": [ + "ZERO", + "ONE" + ] + } + }, + { + "name": "enum_value_annotation", + "description": "Numeric enum title. Numeric enum description.\n\n - ZERO: ZERO means 0\n - ONE: ONE means 1", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "ZERO", + "ONE" + ], + "default": "ZERO" + }, + { + "name": "repeated_string_annotation", + "description": "Repeated string title. Repeated string description.", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + } + }, + { + "name": "nested_annotation.name", + "description": "name is nested field.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "nested_annotation.amount", + "in": "query", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "nested_annotation.ok", + "description": " - FALSE: FALSE is false.\n - TRUE: TRUE is true.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "FALSE", + "TRUE" + ], + "default": "FALSE" } ], "tags": [ @@ -375,7 +437,7 @@ } } }, - "/v1/example/a_bit_of_everything/{float_value}/{double_value}/{int64_value}/separator/{uint64_value}/{int32_value}/{fixed64_value}/{fixed32_value}/{bool_value}/{string_value}/{uint32_value}/{sfixed32_value}/{sfixed64_value}/{sint32_value}/{sint64_value}/{nonConventionalNameValue}/{enum_value}/{path_enum_value}/{nested_path_enum_value}": { + "/v1/example/a_bit_of_everything/{float_value}/{double_value}/{int64_value}/separator/{uint64_value}/{int32_value}/{fixed64_value}/{fixed32_value}/{bool_value}/{string_value}/{uint32_value}/{sfixed32_value}/{sfixed64_value}/{sint32_value}/{sint64_value}/{nonConventionalNameValue}/{enum_value}/{path_enum_value}/{nested_path_enum_value}/{repeated_enum_value}/{repeated_enum_value_annotation}/{enum_value_annotation}/{repeated_string_annotation}": { "post": { "summary": "Create a new ABitOfEverything", "description": "This API creates a new ABitOfEverything", @@ -539,6 +601,61 @@ "GHI", "JKL" ] + }, + { + "name": "repeated_enum_value", + "description": "repeated enum value. it is comma-separated in query", + "in": "path", + "required": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "ZERO", + "ONE" + ] + }, + "collectionFormat": "csv", + "minItems": 1 + }, + { + "name": "repeated_enum_value_annotation", + "description": "Repeated numeric enum description.", + "in": "path", + "required": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "ZERO", + "ONE" + ] + }, + "collectionFormat": "csv", + "minItems": 1 + }, + { + "name": "enum_value_annotation", + "description": "Numeric enum description.", + "in": "path", + "required": true, + "type": "string", + "enum": [ + "ZERO", + "ONE" + ] + }, + { + "name": "repeated_string_annotation", + "description": "Repeated string description.", + "in": "path", + "required": true, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "csv", + "minItems": 1 } ], "tags": [ @@ -1570,6 +1687,40 @@ "$ref": "#/definitions/examplepbNumericEnum" }, "title": "repeated enum value. it is comma-separated in query" + }, + "repeated_enum_value_annotation": { + "type": "array", + "items": { + "$ref": "#/definitions/examplepbNumericEnum" + }, + "description": "Repeated numeric enum description.", + "title": "Repeated numeric enum title" + }, + "enum_value_annotation": { + "$ref": "#/definitions/examplepbNumericEnum", + "description": "Numeric enum description.", + "title": "Numeric enum title" + }, + "repeated_string_annotation": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Repeated string description.", + "title": "Repeated string title" + }, + "repeated_nested_annotation": { + "type": "array", + "items": { + "$ref": "#/definitions/ABitOfEverythingNested" + }, + "description": "Repeated nested object description.", + "title": "Repeated nested object title" + }, + "nested_annotation": { + "$ref": "#/definitions/ABitOfEverythingNested", + "description": "Nested object description.", + "title": "Nested object title" } }, "description": "Intentionaly complicated message type to cover many features of Protobuf.", diff --git a/examples/proto/examplepb/echo_service.swagger.json b/examples/proto/examplepb/echo_service.swagger.json index f1687bccf64..bc9feb32160 100644 --- a/examples/proto/examplepb/echo_service.swagger.json +++ b/examples/proto/examplepb/echo_service.swagger.json @@ -1,7 +1,7 @@ { "swagger": "2.0", "info": { - "title": "Echo Service", + "title": "examples/proto/examplepb/echo_service.proto", "description": "Echo Service API consists of a single service which returns\na message.", "version": "version not set" }, diff --git a/examples/proto/examplepb/stream.swagger.json b/examples/proto/examplepb/stream.swagger.json index 7739b3ea13d..581ae1fd2f1 100644 --- a/examples/proto/examplepb/stream.swagger.json +++ b/examples/proto/examplepb/stream.swagger.json @@ -260,6 +260,40 @@ "$ref": "#/definitions/examplepbNumericEnum" }, "title": "repeated enum value. it is comma-separated in query" + }, + "repeated_enum_value_annotation": { + "type": "array", + "items": { + "$ref": "#/definitions/examplepbNumericEnum" + }, + "description": "Repeated numeric enum description.", + "title": "Repeated numeric enum title" + }, + "enum_value_annotation": { + "$ref": "#/definitions/examplepbNumericEnum", + "description": "Numeric enum description.", + "title": "Numeric enum title" + }, + "repeated_string_annotation": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Repeated string description.", + "title": "Repeated string title" + }, + "repeated_nested_annotation": { + "type": "array", + "items": { + "$ref": "#/definitions/ABitOfEverythingNested" + }, + "description": "Repeated nested object description.", + "title": "Repeated nested object title" + }, + "nested_annotation": { + "$ref": "#/definitions/ABitOfEverythingNested", + "description": "Nested object description.", + "title": "Nested object title" } }, "description": "Intentionaly complicated message type to cover many features of Protobuf.", diff --git a/protoc-gen-swagger/genswagger/template.go b/protoc-gen-swagger/genswagger/template.go index fcc98b1f51f..e1c9eca76a0 100644 --- a/protoc-gen-swagger/genswagger/template.go +++ b/protoc-gen-swagger/genswagger/template.go @@ -408,31 +408,35 @@ func schemaOfField(f *descriptor.Field, reg *descriptor.Registry, refs refMap) s } } + ret := swaggerSchemaObject{} + switch aggregate { case array: - return swaggerSchemaObject{ + ret = swaggerSchemaObject{ schemaCore: schemaCore{ Type: "array", Items: (*swaggerItemsObject)(&core), }, } case object: - return swaggerSchemaObject{ + ret = swaggerSchemaObject{ schemaCore: schemaCore{ Type: "object", }, AdditionalProperties: &swaggerSchemaObject{Properties: props, schemaCore: core}, } default: - ret := swaggerSchemaObject{ + ret = swaggerSchemaObject{ schemaCore: core, Properties: props, } - if j, err := extractJSONSchemaFromFieldDescriptor(fd); err == nil { - updateSwaggerObjectFromJSONSchema(&ret, j) - } - return ret } + + if j, err := extractJSONSchemaFromFieldDescriptor(fd); err == nil { + updateSwaggerObjectFromJSONSchema(&ret, j) + } + + return ret } // primitiveSchema returns a pair of "Type" and "Format" in JSON Schema for @@ -680,6 +684,9 @@ func renderServices(services []*descriptor.Service, paths swaggerPathsObject, re return err } enumNames = listEnumNames(enum) + schema := schemaOfField(parameter.Target, reg, customRefs) + desc = schema.Description + defaultValue = schema.Default default: var ok bool paramType, paramFormat, ok = primitiveSchema(pt) @@ -1214,26 +1221,32 @@ func updateSwaggerDataFromComments(swaggerObject interface{}, comment string) er paragraphs := strings.Split(comment, "\n\n") - // If there is a summary (or summary-equivalent), use the first + // If there is a summary (or summary-equivalent) and its empty, use the first // paragraph as summary, and the rest as description. if summaryValue.CanSet() { summary := strings.TrimSpace(paragraphs[0]) description := strings.TrimSpace(strings.Join(paragraphs[1:], "\n\n")) if !usingTitle || (len(summary) > 0 && summary[len(summary)-1] != '.') { - summaryValue.Set(reflect.ValueOf(summary)) + // overrides the schema value only if it's empty + if summaryValue.Len() == 0 { + summaryValue.Set(reflect.ValueOf(summary)) + } if len(description) > 0 { if !descriptionValue.CanSet() { return fmt.Errorf("Encountered object type with a summary, but no description") } - descriptionValue.Set(reflect.ValueOf(description)) + // overrides the schema value only if it's empty + if descriptionValue.Len() == 0 { + descriptionValue.Set(reflect.ValueOf(description)) + } } return nil } } // There was no summary field on the swaggerObject. Try to apply the - // whole comment into description. - if descriptionValue.CanSet() { + // whole comment into description if the swagger object description is empty. + if descriptionValue.CanSet() && descriptionValue.Len() == 0 { descriptionValue.Set(reflect.ValueOf(strings.Join(paragraphs, "\n\n"))) return nil } From 57fee0814c4d72c80478df351b85c30440f6ad6e Mon Sep 17 00:00:00 2001 From: fahernandez Date: Mon, 11 Feb 2019 16:02:37 -0600 Subject: [PATCH 2/9] 863 fixing swagger generation --- .../abe/a_bit_of_everything_service_api.go | 14 +- .../abe/examplepb_a_bit_of_everything.go | 2 +- .../proto/examplepb/a_bit_of_everything.pb.go | 439 +++++++++--------- .../examplepb/a_bit_of_everything.pb.gw.go | 21 +- .../proto/examplepb/a_bit_of_everything.proto | 4 +- .../a_bit_of_everything.swagger.json | 22 +- examples/proto/examplepb/stream.swagger.json | 2 +- 7 files changed, 235 insertions(+), 269 deletions(-) diff --git a/examples/clients/abe/a_bit_of_everything_service_api.go b/examples/clients/abe/a_bit_of_everything_service_api.go index 21971cc14fc..de167d3cd16 100644 --- a/examples/clients/abe/a_bit_of_everything_service_api.go +++ b/examples/clients/abe/a_bit_of_everything_service_api.go @@ -61,16 +61,15 @@ func NewABitOfEverythingServiceApiWithBasePath(basePath string) *ABitOfEverythin * @param pathEnumValue * @param nestedPathEnumValue * @param repeatedEnumValue repeated enum value. it is comma-separated in query - * @param repeatedEnumValueAnnotation Repeated numeric enum description. * @param enumValueAnnotation Numeric enum description. * @param repeatedStringAnnotation Repeated string description. * @return *ExamplepbABitOfEverything */ -func (a ABitOfEverythingServiceApi) Create(floatValue float32, doubleValue float64, int64Value string, uint64Value string, int32Value int32, fixed64Value string, fixed32Value int64, boolValue bool, stringValue string, uint32Value int64, sfixed32Value int32, sfixed64Value string, sint32Value int32, sint64Value string, nonConventionalNameValue string, enumValue string, pathEnumValue string, nestedPathEnumValue string, repeatedEnumValue []string, repeatedEnumValueAnnotation []string, enumValueAnnotation string, repeatedStringAnnotation []string) (*ExamplepbABitOfEverything, *APIResponse, error) { +func (a ABitOfEverythingServiceApi) Create(floatValue float32, doubleValue float64, int64Value string, uint64Value string, int32Value int32, fixed64Value string, fixed32Value int64, boolValue bool, stringValue string, uint32Value int64, sfixed32Value int32, sfixed64Value string, sint32Value int32, sint64Value string, nonConventionalNameValue string, enumValue string, pathEnumValue string, nestedPathEnumValue string, repeatedEnumValue []string, enumValueAnnotation string, repeatedStringAnnotation []string) (*ExamplepbABitOfEverything, *APIResponse, error) { var localVarHttpMethod = strings.ToUpper("Post") // create path and map variables - localVarPath := a.Configuration.BasePath + "/v1/example/a_bit_of_everything/{float_value}/{double_value}/{int64_value}/separator/{uint64_value}/{int32_value}/{fixed64_value}/{fixed32_value}/{bool_value}/{string_value}/{uint32_value}/{sfixed32_value}/{sfixed64_value}/{sint32_value}/{sint64_value}/{nonConventionalNameValue}/{enum_value}/{path_enum_value}/{nested_path_enum_value}/{repeated_enum_value}/{repeated_enum_value_annotation}/{enum_value_annotation}/{repeated_string_annotation}" + localVarPath := a.Configuration.BasePath + "/v1/example/a_bit_of_everything/{float_value}/{double_value}/{int64_value}/separator/{uint64_value}/{int32_value}/{fixed64_value}/{fixed32_value}/{bool_value}/{string_value}/{uint32_value}/{sfixed32_value}/{sfixed64_value}/{sint32_value}/{sint64_value}/{nonConventionalNameValue}/{enum_value}/{path_enum_value}/{nested_path_enum_value}/{repeated_enum_value}/{enum_value_annotation}/{repeated_string_annotation}" localVarPath = strings.Replace(localVarPath, "{"+"float_value"+"}", fmt.Sprintf("%v", floatValue), -1) localVarPath = strings.Replace(localVarPath, "{"+"double_value"+"}", fmt.Sprintf("%v", doubleValue), -1) localVarPath = strings.Replace(localVarPath, "{"+"int64_value"+"}", fmt.Sprintf("%v", int64Value), -1) @@ -90,7 +89,6 @@ func (a ABitOfEverythingServiceApi) Create(floatValue float32, doubleValue float localVarPath = strings.Replace(localVarPath, "{"+"path_enum_value"+"}", fmt.Sprintf("%v", pathEnumValue), -1) localVarPath = strings.Replace(localVarPath, "{"+"nested_path_enum_value"+"}", fmt.Sprintf("%v", nestedPathEnumValue), -1) localVarPath = strings.Replace(localVarPath, "{"+"repeated_enum_value"+"}", fmt.Sprintf("%v", repeatedEnumValue), -1) - localVarPath = strings.Replace(localVarPath, "{"+"repeated_enum_value_annotation"+"}", fmt.Sprintf("%v", repeatedEnumValueAnnotation), -1) localVarPath = strings.Replace(localVarPath, "{"+"enum_value_annotation"+"}", fmt.Sprintf("%v", enumValueAnnotation), -1) localVarPath = strings.Replace(localVarPath, "{"+"repeated_string_annotation"+"}", fmt.Sprintf("%v", repeatedStringAnnotation), -1) @@ -555,7 +553,7 @@ func (a ABitOfEverythingServiceApi) GetMessageWithBody(id string, body Examplepb * @param nonConventionalNameValue * @param timestampValue * @param repeatedEnumValue repeated enum value. it is comma-separated in query. - ZERO: ZERO means 0 - ONE: ONE means 1 - * @param repeatedEnumValueAnnotation Repeated numeric enum title. Repeated numeric enum description. - ZERO: ZERO means 0 - ONE: ONE means 1 + * @param repeatedEnumAnnotation Repeated numeric enum title. Repeated numeric enum description. - ZERO: ZERO means 0 - ONE: ONE means 1 * @param enumValueAnnotation Numeric enum title. Numeric enum description. - ZERO: ZERO means 0 - ONE: ONE means 1 * @param repeatedStringAnnotation Repeated string title. Repeated string description. * @param nestedAnnotationName name is nested field. @@ -563,7 +561,7 @@ func (a ABitOfEverythingServiceApi) GetMessageWithBody(id string, body Examplepb * @param nestedAnnotationOk - FALSE: FALSE is false. - TRUE: TRUE is true. * @return *interface{} */ -func (a ABitOfEverythingServiceApi) GetQuery(uuid string, floatValue float32, singleNestedName string, singleNestedAmount int64, singleNestedOk string, doubleValue float64, int64Value string, uint64Value string, int32Value int32, fixed64Value string, fixed32Value int64, boolValue bool, stringValue string, bytesValue string, uint32Value int64, enumValue string, pathEnumValue string, nestedPathEnumValue string, sfixed32Value int32, sfixed64Value string, sint32Value int32, sint64Value string, repeatedStringValue []string, oneofString string, nonConventionalNameValue string, timestampValue time.Time, repeatedEnumValue []string, repeatedEnumValueAnnotation []string, enumValueAnnotation string, repeatedStringAnnotation []string, nestedAnnotationName string, nestedAnnotationAmount int64, nestedAnnotationOk string) (*interface{}, *APIResponse, error) { +func (a ABitOfEverythingServiceApi) GetQuery(uuid string, floatValue float32, singleNestedName string, singleNestedAmount int64, singleNestedOk string, doubleValue float64, int64Value string, uint64Value string, int32Value int32, fixed64Value string, fixed32Value int64, boolValue bool, stringValue string, bytesValue string, uint32Value int64, enumValue string, pathEnumValue string, nestedPathEnumValue string, sfixed32Value int32, sfixed64Value string, sint32Value int32, sint64Value string, repeatedStringValue []string, oneofString string, nonConventionalNameValue string, timestampValue time.Time, repeatedEnumValue []string, repeatedEnumAnnotation []string, enumValueAnnotation string, repeatedStringAnnotation []string, nestedAnnotationName string, nestedAnnotationAmount int64, nestedAnnotationOk string) (*interface{}, *APIResponse, error) { var localVarHttpMethod = strings.ToUpper("Get") // create path and map variables @@ -610,8 +608,8 @@ func (a ABitOfEverythingServiceApi) GetQuery(uuid string, floatValue float32, si var repeatedEnumValueCollectionFormat = "csv" localVarQueryParams.Add("repeated_enum_value", a.Configuration.APIClient.ParameterToString(repeatedEnumValue, repeatedEnumValueCollectionFormat)) - var repeatedEnumValueAnnotationCollectionFormat = "csv" - localVarQueryParams.Add("repeated_enum_value_annotation", a.Configuration.APIClient.ParameterToString(repeatedEnumValueAnnotation, repeatedEnumValueAnnotationCollectionFormat)) + var repeatedEnumAnnotationCollectionFormat = "csv" + localVarQueryParams.Add("repeated_enum_annotation", a.Configuration.APIClient.ParameterToString(repeatedEnumAnnotation, repeatedEnumAnnotationCollectionFormat)) localVarQueryParams.Add("enum_value_annotation", a.Configuration.APIClient.ParameterToString(enumValueAnnotation, "")) var repeatedStringAnnotationCollectionFormat = "csv" diff --git a/examples/clients/abe/examplepb_a_bit_of_everything.go b/examples/clients/abe/examplepb_a_bit_of_everything.go index 74ec2f41000..2190507a464 100644 --- a/examples/clients/abe/examplepb_a_bit_of_everything.go +++ b/examples/clients/abe/examplepb_a_bit_of_everything.go @@ -79,7 +79,7 @@ type ExamplepbABitOfEverything struct { RepeatedEnumValue []ExamplepbNumericEnum `json:"repeated_enum_value,omitempty"` // Repeated numeric enum description. - RepeatedEnumValueAnnotation []ExamplepbNumericEnum `json:"repeated_enum_value_annotation,omitempty"` + RepeatedEnumAnnotation []ExamplepbNumericEnum `json:"repeated_enum_annotation,omitempty"` // Numeric enum description. EnumValueAnnotation ExamplepbNumericEnum `json:"enum_value_annotation,omitempty"` diff --git a/examples/proto/examplepb/a_bit_of_everything.pb.go b/examples/proto/examplepb/a_bit_of_everything.pb.go index 9f5eed795a3..2e0ace34871 100644 --- a/examples/proto/examplepb/a_bit_of_everything.pb.go +++ b/examples/proto/examplepb/a_bit_of_everything.pb.go @@ -55,7 +55,7 @@ func (x NumericEnum) String() string { return proto.EnumName(NumericEnum_name, int32(x)) } func (NumericEnum) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_a_bit_of_everything_ba3a130ee49bb615, []int{0} + return fileDescriptor_a_bit_of_everything_68327cc2832b2df4, []int{0} } // DeepEnum is one or zero. @@ -81,7 +81,7 @@ func (x ABitOfEverything_Nested_DeepEnum) String() string { return proto.EnumName(ABitOfEverything_Nested_DeepEnum_name, int32(x)) } func (ABitOfEverything_Nested_DeepEnum) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_a_bit_of_everything_ba3a130ee49bb615, []int{0, 0, 0} + return fileDescriptor_a_bit_of_everything_68327cc2832b2df4, []int{0, 0, 0} } // Intentionaly complicated message type to cover many features of Protobuf. @@ -121,7 +121,7 @@ type ABitOfEverything struct { // repeated enum value. it is comma-separated in query RepeatedEnumValue []NumericEnum `protobuf:"varint,28,rep,packed,name=repeated_enum_value,json=repeatedEnumValue,proto3,enum=grpc.gateway.examples.examplepb.NumericEnum" json:"repeated_enum_value,omitempty"` // repeated numeric enum comment (This comment is overridden by the field annotation) - RepeatedEnumValueAnnotation []NumericEnum `protobuf:"varint,32,rep,packed,name=repeated_enum_value_annotation,json=repeatedEnumValueAnnotation,proto3,enum=grpc.gateway.examples.examplepb.NumericEnum" json:"repeated_enum_value_annotation,omitempty"` + RepeatedEnumAnnotation []NumericEnum `protobuf:"varint,32,rep,packed,name=repeated_enum_annotation,json=repeatedEnumAnnotation,proto3,enum=grpc.gateway.examples.examplepb.NumericEnum" json:"repeated_enum_annotation,omitempty"` // numeric enum comment (This comment is overridden by the field annotation) EnumValueAnnotation NumericEnum `protobuf:"varint,33,opt,name=enum_value_annotation,json=enumValueAnnotation,proto3,enum=grpc.gateway.examples.examplepb.NumericEnum" json:"enum_value_annotation,omitempty"` // repeated string comment (This comment is overridden by the field annotation) @@ -139,7 +139,7 @@ func (m *ABitOfEverything) Reset() { *m = ABitOfEverything{} } func (m *ABitOfEverything) String() string { return proto.CompactTextString(m) } func (*ABitOfEverything) ProtoMessage() {} func (*ABitOfEverything) Descriptor() ([]byte, []int) { - return fileDescriptor_a_bit_of_everything_ba3a130ee49bb615, []int{0} + return fileDescriptor_a_bit_of_everything_68327cc2832b2df4, []int{0} } func (m *ABitOfEverything) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ABitOfEverything.Unmarshal(m, b) @@ -392,9 +392,9 @@ func (m *ABitOfEverything) GetRepeatedEnumValue() []NumericEnum { return nil } -func (m *ABitOfEverything) GetRepeatedEnumValueAnnotation() []NumericEnum { +func (m *ABitOfEverything) GetRepeatedEnumAnnotation() []NumericEnum { if m != nil { - return m.RepeatedEnumValueAnnotation + return m.RepeatedEnumAnnotation } return nil } @@ -512,7 +512,7 @@ func (m *ABitOfEverything_Nested) Reset() { *m = ABitOfEverything_Nested func (m *ABitOfEverything_Nested) String() string { return proto.CompactTextString(m) } func (*ABitOfEverything_Nested) ProtoMessage() {} func (*ABitOfEverything_Nested) Descriptor() ([]byte, []int) { - return fileDescriptor_a_bit_of_everything_ba3a130ee49bb615, []int{0, 0} + return fileDescriptor_a_bit_of_everything_68327cc2832b2df4, []int{0, 0} } func (m *ABitOfEverything_Nested) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ABitOfEverything_Nested.Unmarshal(m, b) @@ -581,7 +581,7 @@ func (m *ABitOfEverythingRepeated) Reset() { *m = ABitOfEverythingRepeat func (m *ABitOfEverythingRepeated) String() string { return proto.CompactTextString(m) } func (*ABitOfEverythingRepeated) ProtoMessage() {} func (*ABitOfEverythingRepeated) Descriptor() ([]byte, []int) { - return fileDescriptor_a_bit_of_everything_ba3a130ee49bb615, []int{1} + return fileDescriptor_a_bit_of_everything_68327cc2832b2df4, []int{1} } func (m *ABitOfEverythingRepeated) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ABitOfEverythingRepeated.Unmarshal(m, b) @@ -724,7 +724,7 @@ func (m *Body) Reset() { *m = Body{} } func (m *Body) String() string { return proto.CompactTextString(m) } func (*Body) ProtoMessage() {} func (*Body) Descriptor() ([]byte, []int) { - return fileDescriptor_a_bit_of_everything_ba3a130ee49bb615, []int{2} + return fileDescriptor_a_bit_of_everything_68327cc2832b2df4, []int{2} } func (m *Body) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Body.Unmarshal(m, b) @@ -763,7 +763,7 @@ func (m *MessageWithBody) Reset() { *m = MessageWithBody{} } func (m *MessageWithBody) String() string { return proto.CompactTextString(m) } func (*MessageWithBody) ProtoMessage() {} func (*MessageWithBody) Descriptor() ([]byte, []int) { - return fileDescriptor_a_bit_of_everything_ba3a130ee49bb615, []int{3} + return fileDescriptor_a_bit_of_everything_68327cc2832b2df4, []int{3} } func (m *MessageWithBody) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MessageWithBody.Unmarshal(m, b) @@ -810,7 +810,7 @@ func (m *UpdateV2Request) Reset() { *m = UpdateV2Request{} } func (m *UpdateV2Request) String() string { return proto.CompactTextString(m) } func (*UpdateV2Request) ProtoMessage() {} func (*UpdateV2Request) Descriptor() ([]byte, []int) { - return fileDescriptor_a_bit_of_everything_ba3a130ee49bb615, []int{4} + return fileDescriptor_a_bit_of_everything_68327cc2832b2df4, []int{4} } func (m *UpdateV2Request) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UpdateV2Request.Unmarshal(m, b) @@ -1574,212 +1574,213 @@ var _AnotherServiceWithNoBindings_serviceDesc = grpc.ServiceDesc{ } func init() { - proto.RegisterFile("examples/proto/examplepb/a_bit_of_everything.proto", fileDescriptor_a_bit_of_everything_ba3a130ee49bb615) -} - -var fileDescriptor_a_bit_of_everything_ba3a130ee49bb615 = []byte{ - // 3247 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x5a, 0xdb, 0x73, 0xdb, 0xc6, - 0xd5, 0x17, 0x08, 0xea, 0xb6, 0xba, 0x51, 0x2b, 0x5f, 0x24, 0x5a, 0xb6, 0xd6, 0xb4, 0x93, 0xc0, - 0x8c, 0x49, 0x48, 0x90, 0xec, 0xc8, 0xcc, 0x24, 0xfe, 0x48, 0x5d, 0x6c, 0xc5, 0xb6, 0x2c, 0xc3, - 0x8e, 0xbf, 0x8c, 0x63, 0x47, 0x03, 0x92, 0x4b, 0x11, 0x16, 0x81, 0x45, 0x80, 0x85, 0x6c, 0x7e, - 0xfc, 0xf8, 0x7d, 0xe9, 0x65, 0xd2, 0x69, 0xf3, 0xd0, 0x19, 0xa5, 0x7d, 0xe8, 0x65, 0xfa, 0x17, - 0xf4, 0xb5, 0xd3, 0x87, 0xcc, 0xf4, 0x36, 0x93, 0xe9, 0x4c, 0xfb, 0x54, 0xb7, 0xd3, 0x7f, 0xa0, - 0x7d, 0xe8, 0x5f, 0xd0, 0x99, 0xbe, 0x74, 0x3a, 0x58, 0x00, 0x24, 0x00, 0x92, 0x96, 0x69, 0x67, - 0xf2, 0x22, 0x63, 0x77, 0xcf, 0x39, 0xbf, 0xb3, 0x67, 0xcf, 0x9e, 0xcb, 0xd2, 0x40, 0xc2, 0x4f, - 0x15, 0xcd, 0xa8, 0x61, 0x4b, 0x34, 0x4c, 0x42, 0x89, 0xe8, 0x0d, 0x8d, 0xa2, 0xa8, 0xec, 0x16, - 0x55, 0xba, 0x4b, 0x2a, 0xbb, 0xf8, 0x00, 0x9b, 0x75, 0x5a, 0x55, 0xf5, 0xbd, 0x2c, 0xa3, 0x81, - 0x0b, 0x7b, 0xa6, 0x51, 0xca, 0xee, 0x29, 0x14, 0x3f, 0x51, 0xea, 0x59, 0x5f, 0x40, 0xb6, 0xc5, - 0x9a, 0x9c, 0xdf, 0x23, 0x64, 0xaf, 0x86, 0x45, 0xc5, 0x50, 0x45, 0x45, 0xd7, 0x09, 0x55, 0xa8, - 0x4a, 0x74, 0xcb, 0x65, 0x4f, 0x22, 0x6f, 0x95, 0x8d, 0x8a, 0x76, 0x45, 0xac, 0xa8, 0xb8, 0x56, - 0xde, 0xd5, 0x14, 0x6b, 0xdf, 0xa3, 0x38, 0x15, 0xa5, 0xc0, 0x9a, 0x41, 0xeb, 0xde, 0xe2, 0x99, - 0xe8, 0x62, 0xd9, 0x36, 0x99, 0x7c, 0x6f, 0xfd, 0x8d, 0xc8, 0x8e, 0x0c, 0x85, 0x56, 0xb1, 0x6e, - 0x6b, 0xec, 0x63, 0xd7, 0xf9, 0xf2, 0xf5, 0x88, 0x10, 0x5a, 0x76, 0x51, 0xd4, 0xb0, 0x65, 0x29, - 0x7b, 0xd8, 0xa3, 0x38, 0xdb, 0x49, 0x21, 0x45, 0x48, 0x16, 0xa2, 0xda, 0x50, 0x55, 0xc3, 0x16, - 0x55, 0x34, 0xc3, 0x23, 0xb8, 0xc8, 0xfe, 0x29, 0x65, 0xf6, 0xb0, 0x9e, 0xb1, 0x9e, 0x28, 0x7b, - 0x7b, 0xd8, 0x14, 0x89, 0xc1, 0xec, 0xd1, 0x69, 0x9b, 0xd4, 0xa7, 0xa7, 0x40, 0x22, 0x5f, 0x50, - 0xe9, 0xed, 0xca, 0x46, 0xcb, 0xea, 0xf0, 0x11, 0x98, 0xb0, 0x54, 0x7d, 0xaf, 0x86, 0x77, 0x75, - 0x6c, 0x51, 0x5c, 0x9e, 0x9d, 0x43, 0x9c, 0x30, 0x26, 0xad, 0x66, 0x8f, 0x38, 0x87, 0x6c, 0x54, - 0x52, 0x76, 0x9b, 0xf1, 0xcb, 0xe3, 0xae, 0x38, 0x77, 0x04, 0xab, 0x20, 0x6e, 0xdb, 0x6a, 0x79, - 0x96, 0x43, 0x9c, 0x30, 0x5a, 0xb8, 0x77, 0x98, 0xbf, 0xf3, 0x09, 0xc7, 0x7d, 0x8f, 0xbb, 0xf1, - 0xa1, 0x92, 0xa9, 0xe4, 0x33, 0x9b, 0x8b, 0x99, 0x2b, 0x8f, 0x1a, 0xab, 0xcd, 0x4c, 0x70, 0xb8, - 0xd2, 0xcf, 0x70, 0x49, 0x6a, 0xca, 0x0c, 0x01, 0xee, 0x80, 0x21, 0x6f, 0x07, 0x31, 0xc4, 0xbf, - 0xd2, 0x0e, 0x3c, 0x39, 0xf0, 0x3d, 0x30, 0x56, 0xa9, 0x11, 0x85, 0xee, 0x1e, 0x28, 0x35, 0x1b, - 0xcf, 0xf2, 0x88, 0x13, 0x62, 0x85, 0x0b, 0x87, 0xf9, 0xd7, 0xa5, 0xe9, 0x4d, 0x67, 0x1e, 0xb1, - 0x79, 0xc4, 0x3c, 0x2c, 0xc7, 0x2f, 0x66, 0xa5, 0x67, 0x5c, 0x90, 0x41, 0x06, 0x6c, 0x70, 0xdf, - 0xf9, 0x86, 0x67, 0xc1, 0x78, 0x99, 0xd8, 0xc5, 0x1a, 0xf6, 0x84, 0xc5, 0x11, 0x27, 0x70, 0xf2, - 0x98, 0x3b, 0xe7, 0x92, 0x2c, 0x80, 0x31, 0x55, 0xa7, 0x97, 0x57, 0x3c, 0x8a, 0x41, 0xc4, 0x09, - 0xbc, 0x0c, 0xd8, 0x54, 0x4b, 0x86, 0x1d, 0xa4, 0x18, 0x42, 0x9c, 0x10, 0x97, 0xc7, 0xec, 0x00, - 0x89, 0x2b, 0x63, 0x59, 0xf2, 0x28, 0x86, 0x11, 0x27, 0x0c, 0x32, 0x19, 0xcb, 0x92, 0x4b, 0x70, - 0x0e, 0x4c, 0x54, 0xd4, 0xa7, 0xb8, 0xdc, 0x12, 0x32, 0x82, 0x38, 0x61, 0x48, 0x1e, 0xf7, 0x26, - 0xc3, 0x44, 0x2d, 0x39, 0xa3, 0x88, 0x13, 0x86, 0x3d, 0x22, 0x5f, 0xd2, 0x69, 0x00, 0x8a, 0x84, - 0xd4, 0x3c, 0x0a, 0x80, 0x38, 0x61, 0x44, 0x1e, 0x75, 0x66, 0x5a, 0xca, 0x5a, 0xd4, 0x54, 0xf5, - 0x3d, 0x8f, 0x60, 0xcc, 0x71, 0x00, 0x79, 0xcc, 0x9d, 0x6b, 0x29, 0x5b, 0xac, 0x53, 0x6c, 0x79, - 0x14, 0xa7, 0x11, 0x27, 0x8c, 0xcb, 0x80, 0x4d, 0x85, 0x36, 0xdc, 0x52, 0x63, 0x02, 0x71, 0xc2, - 0x84, 0xbb, 0x61, 0x5f, 0x8b, 0x1b, 0x00, 0x38, 0xb7, 0xce, 0x23, 0x98, 0x44, 0x9c, 0x30, 0x29, - 0x5d, 0x3c, 0xf2, 0xe4, 0xb7, 0x6d, 0x0d, 0x9b, 0x6a, 0x69, 0x43, 0xb7, 0x35, 0x79, 0xd4, 0xe1, - 0x77, 0x85, 0xed, 0x80, 0xa9, 0xd6, 0x3d, 0xf6, 0x24, 0x9e, 0x61, 0x12, 0x85, 0x1e, 0x12, 0xfd, - 0xeb, 0x9f, 0xdd, 0x51, 0x68, 0x95, 0x49, 0x9b, 0x30, 0xbc, 0x2f, 0x57, 0xa2, 0x05, 0x4e, 0xb8, - 0xce, 0xb4, 0x1b, 0x15, 0xbc, 0xc0, 0x04, 0xbf, 0x7b, 0x94, 0xe0, 0x5b, 0x6e, 0x40, 0xf0, 0xe5, - 0x7b, 0x2e, 0xda, 0x82, 0x9b, 0xd1, 0x43, 0x63, 0x17, 0xf4, 0x35, 0x30, 0x69, 0x85, 0xcf, 0x6f, - 0x0a, 0x71, 0xc2, 0x94, 0x3c, 0x61, 0x85, 0x0e, 0xb0, 0x45, 0xd6, 0xf2, 0x85, 0x04, 0xe2, 0x84, - 0x84, 0x4f, 0x16, 0xf0, 0x3a, 0x2b, 0x78, 0x08, 0xd3, 0x88, 0x13, 0xa6, 0xe5, 0x31, 0x2b, 0x70, - 0x08, 0x1e, 0x49, 0x4b, 0x0e, 0x44, 0x9c, 0x00, 0x5d, 0x12, 0x5f, 0x8a, 0x04, 0x8e, 0x9b, 0xd8, - 0xc0, 0x8a, 0x63, 0x8a, 0x90, 0x5f, 0xcc, 0x20, 0x5e, 0x18, 0x95, 0x67, 0xfc, 0xc5, 0xbb, 0x01, - 0xff, 0xb8, 0x02, 0xc6, 0x88, 0x8e, 0x9d, 0x24, 0xe1, 0x44, 0xe8, 0xd9, 0x63, 0x2c, 0x30, 0x9d, - 0xc8, 0xba, 0x41, 0x31, 0xeb, 0x07, 0xc5, 0xec, 0x86, 0xb3, 0x7a, 0x7d, 0x40, 0x06, 0x8c, 0x98, - 0x8d, 0xe0, 0x39, 0x30, 0xee, 0xb2, 0xba, 0x58, 0xb3, 0xc7, 0x1d, 0xef, 0xbb, 0x3e, 0x20, 0xbb, - 0x02, 0x5d, 0x10, 0xf8, 0x10, 0x8c, 0x6a, 0x8a, 0xe1, 0xe9, 0x71, 0x82, 0x05, 0x8d, 0xab, 0xfd, - 0x07, 0x8d, 0x5b, 0x8a, 0xc1, 0xd4, 0xdd, 0xd0, 0xa9, 0x59, 0x97, 0x47, 0x34, 0x6f, 0x08, 0x9f, - 0x82, 0x19, 0x4d, 0x31, 0x8c, 0xe8, 0x7e, 0x4f, 0x32, 0x9c, 0xeb, 0x2f, 0x85, 0x63, 0x84, 0xec, - 0xe3, 0x02, 0x4e, 0x6b, 0xd1, 0xf9, 0x00, 0xb2, 0xe7, 0x7b, 0x2e, 0xf2, 0xec, 0xab, 0x21, 0xbb, - 0x9e, 0xd7, 0x89, 0x1c, 0x98, 0x87, 0x39, 0x30, 0xab, 0x13, 0x7d, 0x8d, 0xe8, 0x07, 0x58, 0x77, - 0x32, 0x8f, 0x52, 0xdb, 0x56, 0x34, 0x37, 0xbc, 0xcd, 0x26, 0x59, 0x00, 0xe8, 0xb9, 0x0e, 0xd7, - 0xc0, 0x54, 0x2b, 0xbd, 0x79, 0x1a, 0x9f, 0x62, 0x27, 0x9e, 0xec, 0x38, 0xf1, 0x7b, 0x3e, 0x9d, - 0x3c, 0xd9, 0x62, 0x71, 0x85, 0x3c, 0x04, 0x2d, 0x4f, 0x0a, 0x5e, 0xb6, 0x79, 0xc4, 0xf7, 0x1d, - 0x17, 0xa6, 0x7d, 0x41, 0xed, 0x8b, 0xf5, 0x4b, 0x0e, 0x9c, 0xe9, 0x22, 0x7e, 0xb7, 0x9d, 0x6a, - 0x67, 0x51, 0xff, 0x48, 0x85, 0xf5, 0xc3, 0x7c, 0x3e, 0x7d, 0x4a, 0xf6, 0x04, 0x23, 0xdd, 0x5d, - 0x42, 0x0e, 0x00, 0xa2, 0x2a, 0xad, 0x61, 0x29, 0xd5, 0x7d, 0xb1, 0x8c, 0xad, 0x92, 0xa9, 0xb2, - 0x7c, 0x9f, 0x95, 0x4f, 0x75, 0xe8, 0x9b, 0x6f, 0xa9, 0x05, 0x7f, 0xc0, 0x81, 0xe3, 0xdd, 0x15, - 0x3e, 0xdb, 0x7f, 0xc8, 0x2c, 0x48, 0x87, 0x79, 0x31, 0x0d, 0xb7, 0x3b, 0xf5, 0x9c, 0xdb, 0xee, - 0xa9, 0xde, 0x0c, 0xee, 0xa2, 0xd6, 0x01, 0x48, 0x46, 0xa3, 0x42, 0x40, 0xb5, 0x94, 0x13, 0x1a, - 0x0a, 0xab, 0x87, 0xf9, 0x4b, 0xe9, 0xe3, 0x2d, 0x03, 0xb8, 0x64, 0x1e, 0xde, 0x7c, 0x74, 0x3a, - 0x04, 0x39, 0x1b, 0x0e, 0x2a, 0x01, 0xdc, 0x5f, 0x71, 0x01, 0x60, 0xef, 0x92, 0x04, 0x80, 0xcf, - 0xbd, 0x5a, 0x01, 0x51, 0xd8, 0x3c, 0xcc, 0xaf, 0xa5, 0xdb, 0xba, 0xb9, 0x00, 0x88, 0x14, 0x1f, - 0xe3, 0x12, 0xf5, 0x34, 0x3f, 0xd7, 0x63, 0xb5, 0xfb, 0x06, 0x5c, 0xb9, 0x81, 0x0d, 0xfc, 0x84, - 0x03, 0xd3, 0x9d, 0x7a, 0x9f, 0x7f, 0xb5, 0xd2, 0xad, 0xb0, 0x72, 0x98, 0x5f, 0x4a, 0xcf, 0x6c, - 0x77, 0x51, 0x37, 0xb9, 0xdd, 0x5b, 0xcb, 0x84, 0x1e, 0xd1, 0x2e, 0xf9, 0x5b, 0x0e, 0x0c, 0x79, - 0xf5, 0x1f, 0x04, 0x71, 0x5d, 0xd1, 0xb0, 0x5b, 0xff, 0xc9, 0xec, 0x1b, 0x9e, 0x00, 0x43, 0x8a, - 0x46, 0x6c, 0x9d, 0xce, 0xc6, 0x58, 0x42, 0xf7, 0x46, 0xf0, 0x0e, 0x88, 0x91, 0x7d, 0x56, 0x66, - 0x4d, 0x4a, 0xf9, 0x97, 0xdd, 0x44, 0x76, 0x1d, 0x63, 0x83, 0x5d, 0xe0, 0x18, 0xd9, 0x4f, 0x2d, - 0x80, 0x11, 0x7f, 0x0c, 0x47, 0xc1, 0xe0, 0x66, 0xfe, 0xe6, 0xdd, 0x8d, 0xc4, 0x00, 0x1c, 0x01, - 0xf1, 0x7b, 0xf2, 0xfb, 0x1b, 0x09, 0x2e, 0x77, 0xf2, 0x30, 0x7f, 0x4c, 0x82, 0x30, 0xd1, 0x40, - 0x29, 0xb2, 0x9f, 0xca, 0xa1, 0x94, 0x33, 0x9f, 0x42, 0xcd, 0xa4, 0x0a, 0x26, 0x42, 0x91, 0x1d, - 0x26, 0x00, 0xbf, 0x8f, 0xeb, 0xde, 0x46, 0x9c, 0x4f, 0x58, 0x00, 0x83, 0x6e, 0x78, 0x89, 0xbd, - 0x44, 0xd9, 0xe1, 0xb2, 0xe6, 0x62, 0xab, 0x5c, 0x72, 0x1d, 0x9c, 0xe8, 0x1e, 0xdc, 0xbb, 0x60, - 0x1e, 0x0b, 0x62, 0x8e, 0x06, 0xa5, 0xfc, 0x9f, 0x2f, 0x25, 0x1a, 0xa8, 0xbb, 0x48, 0xd9, 0x0e, - 0x4a, 0x79, 0x95, 0x52, 0xb9, 0x8d, 0x9f, 0xfb, 0x51, 0xec, 0x30, 0xff, 0xc3, 0x18, 0xf8, 0x36, - 0x97, 0x9e, 0xc9, 0xa3, 0xa2, 0x4a, 0x11, 0xa9, 0xa0, 0x76, 0x77, 0x27, 0x6d, 0x6d, 0xe9, 0xd4, - 0x0f, 0xfa, 0x75, 0x54, 0x22, 0x9a, 0x51, 0x53, 0x4b, 0xec, 0x02, 0x78, 0x3d, 0x0f, 0xa2, 0x75, - 0x03, 0x23, 0x4a, 0x50, 0x89, 0x1c, 0x60, 0x13, 0x69, 0x8a, 0x5e, 0x47, 0x15, 0xac, 0x50, 0xdb, - 0xc4, 0x96, 0x23, 0x6b, 0xc7, 0x8f, 0xfe, 0xcf, 0x38, 0x56, 0xf0, 0x3f, 0xe3, 0x82, 0xe5, 0xf2, - 0x33, 0x2e, 0x54, 0x5f, 0xa7, 0xef, 0x83, 0xf3, 0x9b, 0xaa, 0x5e, 0x46, 0xc4, 0xa6, 0x48, 0x23, - 0x26, 0x46, 0x4a, 0xd1, 0xf9, 0xec, 0x68, 0x7f, 0xb2, 0x55, 0x4a, 0x0d, 0x2b, 0x27, 0x8a, 0x7b, - 0x2a, 0xad, 0xda, 0xc5, 0x6c, 0x89, 0x68, 0xa2, 0x63, 0x8c, 0x0c, 0x2e, 0x11, 0xab, 0x6e, 0x51, - 0xec, 0x0d, 0x3d, 0xdb, 0x48, 0x2b, 0x50, 0x6a, 0xa0, 0x94, 0x83, 0xef, 0x38, 0xcb, 0x62, 0xa9, - 0xb2, 0x7c, 0x79, 0x09, 0x2f, 0x65, 0x56, 0x8a, 0x2b, 0x2b, 0x99, 0x95, 0xd5, 0xe5, 0x72, 0x46, - 0x59, 0xba, 0x74, 0x25, 0x73, 0x69, 0xa5, 0xac, 0x14, 0xcb, 0x95, 0xb7, 0xf0, 0xea, 0xd2, 0x4a, - 0x0a, 0x35, 0x0b, 0x13, 0x7e, 0x25, 0xc3, 0x94, 0x4b, 0xfd, 0x7b, 0x04, 0xcc, 0x46, 0x35, 0xf1, - 0xe3, 0x01, 0xbc, 0x02, 0xe6, 0x58, 0xad, 0xd8, 0x8a, 0x4f, 0xc1, 0x1e, 0x84, 0x43, 0xbc, 0x10, - 0x93, 0x4f, 0x38, 0x04, 0x3e, 0xc3, 0x66, 0xbb, 0xc9, 0x78, 0x1b, 0x24, 0xc3, 0xac, 0xa1, 0x96, - 0xc3, 0x69, 0x8b, 0x38, 0xf9, 0x64, 0x90, 0x77, 0x3d, 0xd0, 0x7e, 0x74, 0xe0, 0x06, 0x2b, 0x3a, - 0x1e, 0xf1, 0x02, 0x1f, 0xc6, 0xdd, 0x6a, 0x17, 0x77, 0x1d, 0xb8, 0xa1, 0x36, 0x25, 0x8e, 0x78, - 0x21, 0x1e, 0xc6, 0x7d, 0x3f, 0x50, 0x19, 0x76, 0xc3, 0x6d, 0x15, 0x9b, 0x83, 0x88, 0x17, 0x06, - 0x3b, 0x70, 0xfd, 0xba, 0xf3, 0x1d, 0x70, 0x2a, 0x62, 0xaa, 0x50, 0x39, 0x3b, 0x84, 0x78, 0x61, - 0x48, 0x9e, 0x0d, 0x19, 0x2b, 0x58, 0xd9, 0x76, 0x67, 0x0f, 0x34, 0x4f, 0xbc, 0x30, 0xdc, 0x85, - 0xdd, 0x47, 0x7f, 0x0b, 0xcc, 0x86, 0xd9, 0x03, 0xed, 0xd0, 0x08, 0xe2, 0x85, 0x11, 0xf9, 0x78, - 0x90, 0xb7, 0xd0, 0x6a, 0x8d, 0x3a, 0xcc, 0x15, 0x2a, 0x10, 0x47, 0x59, 0x41, 0x1c, 0x32, 0x57, - 0xb8, 0x28, 0x8e, 0x98, 0x2b, 0xd8, 0x42, 0x01, 0xc4, 0x0b, 0xe3, 0x61, 0x73, 0x15, 0xda, 0xed, - 0x54, 0xd7, 0x63, 0x6a, 0x6d, 0x77, 0x0c, 0xf1, 0xc2, 0x44, 0xe7, 0x31, 0xf9, 0xbb, 0xc5, 0xd1, - 0xdd, 0x06, 0xca, 0xab, 0xf1, 0x97, 0x28, 0xaf, 0x42, 0xb6, 0x69, 0x97, 0x58, 0x57, 0xc1, 0x7c, - 0xc4, 0x36, 0xe1, 0x43, 0x99, 0x40, 0xbc, 0x30, 0x25, 0xcf, 0x85, 0xac, 0x13, 0xea, 0x6a, 0x7a, - 0x08, 0x68, 0x39, 0xc5, 0x24, 0xe2, 0x85, 0x44, 0x37, 0x01, 0x3d, 0x9d, 0x39, 0xd4, 0xfd, 0x4c, - 0x21, 0x5e, 0x98, 0x8e, 0x9c, 0x4e, 0xc0, 0x4a, 0x5d, 0x99, 0x03, 0xfd, 0x15, 0x2f, 0xc0, 0x4e, - 0x66, 0x0f, 0x39, 0x57, 0x3d, 0xcc, 0x63, 0xa9, 0x04, 0x95, 0x06, 0x4a, 0xf5, 0x72, 0xac, 0x54, - 0x0e, 0x7d, 0x48, 0x4d, 0x1b, 0x5f, 0x44, 0xee, 0xdf, 0x8a, 0x52, 0xb3, 0xbc, 0xc1, 0xa3, 0x8b, - 0x51, 0xb6, 0x80, 0xde, 0x0e, 0xdf, 0xd2, 0x45, 0x24, 0x5d, 0x44, 0xcb, 0x8f, 0x50, 0x33, 0x95, - 0x04, 0xf1, 0x02, 0x29, 0xd7, 0xbb, 0x65, 0xe7, 0xd4, 0x43, 0x30, 0xe5, 0x35, 0x9d, 0xff, 0xad, - 0xd2, 0x2a, 0x23, 0x9b, 0x04, 0x31, 0xff, 0x09, 0x47, 0x8e, 0xa9, 0x4e, 0x88, 0x8a, 0x97, 0x15, - 0xaa, 0x78, 0xd9, 0xe3, 0xb5, 0x23, 0xcf, 0xdd, 0x11, 0x22, 0x33, 0x96, 0xd4, 0xe7, 0x1c, 0x98, - 0x7a, 0xdf, 0x28, 0x2b, 0x14, 0xdf, 0x97, 0x64, 0xfc, 0xb1, 0x8d, 0x2d, 0x0a, 0xd7, 0x00, 0xaf, - 0x14, 0x5d, 0x25, 0xc6, 0xa4, 0xa5, 0xbe, 0x73, 0x91, 0xec, 0x70, 0xc3, 0xb7, 0xc1, 0x98, 0xcd, - 0xe4, 0xb2, 0xb7, 0x3e, 0x4f, 0xb5, 0xce, 0xd6, 0x61, 0x53, 0xc5, 0xb5, 0xf2, 0x2d, 0xc5, 0xda, - 0x97, 0x81, 0x4b, 0xee, 0x7c, 0xa7, 0x11, 0x18, 0x0b, 0xf8, 0xa6, 0x53, 0x1e, 0x3c, 0xd8, 0x90, - 0x6f, 0x27, 0x06, 0xe0, 0x30, 0xe0, 0x6f, 0x6f, 0x6f, 0x24, 0x38, 0xe9, 0xcb, 0xd3, 0xe0, 0x64, - 0x14, 0xf8, 0x2e, 0x36, 0x0f, 0xd4, 0x12, 0x86, 0xbf, 0x8b, 0x83, 0xa1, 0x35, 0xd3, 0xb1, 0x39, - 0xec, 0x5f, 0xfb, 0x64, 0xff, 0x2c, 0xa9, 0x3f, 0xf1, 0xdf, 0xfc, 0xf3, 0xdf, 0x3f, 0x8f, 0xfd, - 0x81, 0x4f, 0xfd, 0x9e, 0x17, 0x0f, 0x96, 0xfc, 0x77, 0xd5, 0x6e, 0xaf, 0xaa, 0x62, 0x23, 0x90, - 0x3e, 0x9a, 0x62, 0x23, 0x98, 0x11, 0x9a, 0x62, 0x23, 0xe0, 0x9d, 0x4d, 0xd1, 0xc2, 0x86, 0x62, - 0x2a, 0x94, 0x98, 0x62, 0xc3, 0x0e, 0x2d, 0x34, 0x02, 0x9e, 0xd4, 0x14, 0x1b, 0xa1, 0x0b, 0xe5, - 0x8f, 0x03, 0xeb, 0x6d, 0x77, 0x6d, 0x8a, 0x8d, 0x60, 0x6c, 0x7b, 0xc7, 0xa2, 0xa6, 0x61, 0xe2, - 0x8a, 0xfa, 0x54, 0x4c, 0x37, 0x5d, 0x90, 0x00, 0x9b, 0x15, 0x95, 0x63, 0x45, 0x81, 0xac, 0x08, - 0x43, 0x58, 0xc9, 0x5e, 0x9d, 0x65, 0x53, 0x6c, 0xb4, 0x63, 0x55, 0x53, 0x6c, 0x44, 0x5e, 0x62, - 0x1c, 0xce, 0xae, 0x4f, 0x34, 0x4d, 0xb1, 0xd1, 0x25, 0xd8, 0x75, 0x9f, 0x0d, 0x54, 0xe1, 0x21, - 0xb8, 0xf0, 0x7c, 0xef, 0x5e, 0xa7, 0x09, 0x7f, 0xc6, 0x01, 0xe0, 0x3a, 0x11, 0xbb, 0x72, 0x5f, - 0x8f, 0x23, 0xa5, 0x99, 0x1f, 0x9d, 0x4f, 0x2d, 0x1c, 0xe1, 0x45, 0x39, 0x2e, 0x0d, 0xff, 0x17, - 0x0c, 0xdd, 0x24, 0x64, 0xdf, 0x36, 0xe0, 0x54, 0xd6, 0xb2, 0x8b, 0x52, 0x76, 0xab, 0xec, 0xc5, - 0x89, 0x97, 0x41, 0xce, 0x32, 0x64, 0x01, 0xbe, 0x7e, 0xa4, 0xff, 0x3a, 0xb5, 0x56, 0x13, 0x7e, - 0xca, 0x81, 0x21, 0x37, 0x6e, 0xbc, 0x8c, 0x69, 0x7a, 0x3c, 0x1a, 0xa5, 0x96, 0x98, 0x16, 0x6f, - 0x26, 0x5f, 0x50, 0x0b, 0xc7, 0x0c, 0xbf, 0xe1, 0xc0, 0x88, 0x1f, 0xc0, 0xe0, 0xe2, 0x91, 0xaa, - 0x44, 0x62, 0x5d, 0x4f, 0x4d, 0x1e, 0x33, 0x4d, 0xca, 0xc9, 0xb4, 0x78, 0x20, 0x3d, 0x5f, 0x13, - 0xa5, 0x88, 0xb3, 0xae, 0x36, 0x4e, 0xdc, 0x7b, 0xb0, 0x24, 0xf5, 0xcb, 0x02, 0x7f, 0xca, 0x81, - 0xd9, 0x1d, 0x85, 0x96, 0xaa, 0x4e, 0x80, 0x6f, 0x05, 0xc4, 0x2d, 0x9d, 0x39, 0xde, 0x57, 0xb7, - 0xa5, 0xcb, 0x6c, 0x4b, 0x8b, 0xd2, 0x9b, 0xe2, 0x81, 0xa4, 0xbc, 0xa8, 0x82, 0x5c, 0x1a, 0x7e, - 0x9f, 0x03, 0x43, 0xeb, 0xb8, 0x86, 0x29, 0xee, 0xf4, 0xb4, 0x5e, 0x58, 0x0f, 0x0f, 0xf3, 0x6f, - 0x16, 0x2f, 0x80, 0x49, 0x00, 0xf2, 0x86, 0x7a, 0x03, 0xd7, 0xf3, 0x36, 0xad, 0xc2, 0x01, 0x70, - 0x12, 0x0c, 0xdd, 0x76, 0x3e, 0x25, 0x38, 0x01, 0xe2, 0x26, 0x56, 0xca, 0x60, 0xf0, 0x89, 0xa9, - 0x52, 0xec, 0x3a, 0x5f, 0xfa, 0x45, 0x9d, 0xef, 0x6f, 0x1c, 0x18, 0xb9, 0x86, 0xe9, 0x1d, 0x1b, - 0x9b, 0xf5, 0xaf, 0xd2, 0xfd, 0x3e, 0xe3, 0x0e, 0xf3, 0xf7, 0x52, 0xdb, 0x60, 0xbe, 0x5b, 0xab, - 0xd2, 0x02, 0xec, 0xb3, 0x45, 0xf9, 0x80, 0x2b, 0x0e, 0xb0, 0xfd, 0x65, 0xe1, 0xc5, 0xa3, 0xf6, - 0xf7, 0xb1, 0x03, 0xe0, 0xef, 0xf2, 0xb3, 0x41, 0x90, 0xb8, 0x86, 0xa9, 0x5f, 0x99, 0xb8, 0xe0, - 0x57, 0xfa, 0x4f, 0xc7, 0x1e, 0x7f, 0xf2, 0xe5, 0x59, 0x53, 0x9f, 0xc4, 0xd9, 0x0e, 0xfe, 0xc5, - 0xc3, 0x7f, 0x1e, 0x95, 0xe0, 0x5a, 0xe5, 0x8e, 0x17, 0xd8, 0xbb, 0xb5, 0x4d, 0xcd, 0xe8, 0x5a, - 0x24, 0x0b, 0xf6, 0xec, 0x7b, 0x3a, 0xd6, 0xec, 0xe7, 0x2d, 0x86, 0xb3, 0xd3, 0x73, 0x3a, 0x93, - 0xee, 0xab, 0x3d, 0x79, 0x43, 0xf9, 0xb4, 0x77, 0xe7, 0xd0, 0xc9, 0xd7, 0xee, 0x0c, 0xba, 0x6e, - 0xa4, 0x27, 0x60, 0x67, 0xba, 0xec, 0x51, 0x8e, 0xf7, 0x58, 0xee, 0xb9, 0x4f, 0xeb, 0x79, 0xa8, - 0xa1, 0x74, 0x0e, 0xbf, 0xe4, 0x41, 0x7c, 0xa3, 0x54, 0x25, 0xb0, 0xd7, 0x6f, 0x2f, 0x96, 0x5d, - 0xcc, 0xba, 0x8d, 0x91, 0x1f, 0x1c, 0x5e, 0x98, 0x32, 0xf5, 0x8f, 0xd8, 0x61, 0xfe, 0x1b, 0x31, - 0x30, 0x8e, 0x4b, 0x55, 0x82, 0x2c, 0xb7, 0x8c, 0x03, 0x23, 0x6c, 0x64, 0x1a, 0x25, 0x38, 0x7d, - 0xd7, 0xd6, 0x34, 0xc5, 0xac, 0xe7, 0xd0, 0x86, 0x37, 0x95, 0x4c, 0xac, 0xb7, 0x9f, 0xbc, 0xd8, - 0x6c, 0x6a, 0x1d, 0xc0, 0xf0, 0xb5, 0x65, 0xda, 0xf6, 0x79, 0x59, 0xdf, 0xbb, 0x0a, 0xf8, 0x4b, - 0x8b, 0xcb, 0x70, 0x15, 0x5c, 0x96, 0x31, 0xb5, 0x4d, 0x1d, 0x97, 0xd1, 0x93, 0x2a, 0xd6, 0x11, - 0xad, 0x62, 0x64, 0x62, 0x8b, 0xd8, 0x66, 0x09, 0x23, 0xd5, 0x42, 0x14, 0x6b, 0x06, 0x31, 0x15, - 0x53, 0xad, 0xd5, 0x91, 0xad, 0x2b, 0x07, 0x8a, 0x5a, 0x53, 0x8a, 0x35, 0x9c, 0x7d, 0xef, 0x6d, - 0xc0, 0xaf, 0x2c, 0xae, 0xc0, 0x15, 0x90, 0x7e, 0x8e, 0x80, 0x32, 0xc1, 0x16, 0xd2, 0x09, 0x45, - 0xf8, 0xa9, 0x6a, 0xd1, 0x2c, 0x1c, 0x02, 0xf1, 0x1f, 0xc7, 0x38, 0xb7, 0x8a, 0x7c, 0x74, 0x74, - 0x98, 0x70, 0x0c, 0x23, 0x36, 0xdc, 0x83, 0x79, 0x30, 0x97, 0x4a, 0x04, 0x13, 0x8e, 0xb3, 0x96, - 0x73, 0x9f, 0x81, 0x1e, 0x40, 0xd8, 0xb1, 0x04, 0x7f, 0xc1, 0x81, 0xf1, 0x75, 0x8c, 0x0d, 0xf6, - 0x13, 0x95, 0x33, 0xf1, 0xf5, 0x54, 0x36, 0x57, 0xd9, 0xde, 0xae, 0xa4, 0x56, 0x8e, 0x0c, 0xf1, - 0xa1, 0x5f, 0xbf, 0xb3, 0x4e, 0x0b, 0xc4, 0xb2, 0x50, 0x1e, 0x80, 0x6d, 0x52, 0x50, 0xf5, 0xb2, - 0xaa, 0xef, 0x59, 0x70, 0xae, 0x23, 0x82, 0xaf, 0x7b, 0xff, 0x31, 0xa0, 0x67, 0x70, 0x1f, 0x80, - 0xf7, 0xc1, 0xf0, 0x3d, 0x55, 0xc3, 0xc4, 0xa6, 0xb0, 0x07, 0x51, 0x4f, 0xe6, 0x53, 0x4c, 0xfd, - 0xe3, 0x70, 0x26, 0x68, 0x4f, 0xea, 0x09, 0xab, 0x82, 0xc4, 0x86, 0x69, 0x12, 0xd3, 0x49, 0xdf, - 0xeb, 0x98, 0x2a, 0x6a, 0xcd, 0xea, 0x1b, 0xe0, 0x3c, 0x03, 0x38, 0x03, 0xe7, 0x43, 0x07, 0xe6, - 0x48, 0x7d, 0xa2, 0xd2, 0x6a, 0xd9, 0x93, 0xfa, 0x1d, 0x0e, 0xc0, 0x6b, 0x98, 0x46, 0xfb, 0xc1, - 0xa3, 0x6b, 0x84, 0x08, 0x47, 0x4f, 0x35, 0xde, 0x60, 0x6a, 0x9c, 0x4d, 0xcd, 0x05, 0xd5, 0x70, - 0x34, 0x28, 0x92, 0x72, 0x5d, 0x6c, 0x38, 0x15, 0x01, 0xeb, 0x1b, 0xe1, 0xb7, 0x38, 0x30, 0xbd, - 0x43, 0x2c, 0xea, 0x48, 0x64, 0xac, 0x4c, 0x91, 0x17, 0x6b, 0x3d, 0x7b, 0xa2, 0x8b, 0x0c, 0xfd, - 0x42, 0xea, 0x7c, 0x10, 0xdd, 0x20, 0x16, 0x75, 0x34, 0x60, 0x3f, 0x3a, 0xba, 0x6a, 0xf8, 0x4e, - 0x91, 0xfc, 0x35, 0x77, 0x98, 0xff, 0x82, 0x83, 0x95, 0x1e, 0x9d, 0x60, 0xf0, 0x5d, 0x1c, 0x65, - 0x32, 0xe8, 0x49, 0x55, 0x2d, 0x55, 0x91, 0x55, 0x25, 0x76, 0xad, 0xcc, 0xae, 0x5f, 0x11, 0x23, - 0xdb, 0xc2, 0x65, 0xa4, 0xea, 0xc8, 0xa8, 0x29, 0x25, 0x8c, 0x48, 0x85, 0x5d, 0xd4, 0x32, 0x29, - 0xd9, 0x1a, 0xd6, 0xdd, 0x5e, 0x00, 0x95, 0x88, 0xe6, 0x0c, 0xce, 0x26, 0xef, 0x80, 0x85, 0x6e, - 0x95, 0x81, 0x73, 0x8d, 0xfc, 0xde, 0xb3, 0xdf, 0xf7, 0xcb, 0xc7, 0xe0, 0x58, 0x49, 0xd1, 0x70, - 0x6d, 0x4d, 0xb1, 0xb0, 0x27, 0xc3, 0x69, 0x94, 0xa0, 0x0c, 0x06, 0xdd, 0x5f, 0x4e, 0xfb, 0x75, - 0xa4, 0x39, 0x66, 0xc3, 0x19, 0x38, 0x1d, 0x72, 0x24, 0x67, 0x49, 0xfa, 0x08, 0xcc, 0xe7, 0x75, - 0x42, 0xab, 0xd8, 0xf4, 0x90, 0x9c, 0xc3, 0x0b, 0x5c, 0xaa, 0x77, 0x43, 0x57, 0xac, 0x5f, 0xe0, - 0x81, 0xc2, 0x17, 0xc3, 0x87, 0xf9, 0x9f, 0x0f, 0xc3, 0xbf, 0x70, 0x60, 0x26, 0x8f, 0x0a, 0xee, - 0x8b, 0x73, 0x20, 0x04, 0x7c, 0x00, 0x8e, 0xed, 0xc9, 0x3b, 0x6b, 0x99, 0x6b, 0xee, 0xd6, 0x91, - 0x61, 0x92, 0xc7, 0xb8, 0x44, 0xfb, 0x35, 0x59, 0x32, 0xa1, 0x13, 0x1d, 0xff, 0x97, 0xb7, 0x35, - 0x87, 0x3a, 0xfd, 0x11, 0x38, 0x56, 0xb8, 0xbb, 0x8e, 0x96, 0x33, 0x6b, 0x35, 0xc5, 0xb6, 0x30, - 0xba, 0xa9, 0x96, 0xb0, 0x6e, 0x61, 0xb8, 0xd9, 0x9f, 0x64, 0xb1, 0x58, 0x23, 0x45, 0x51, 0x53, - 0x2c, 0x8a, 0x4d, 0xf1, 0xe6, 0xd6, 0xda, 0xc6, 0xf6, 0xdd, 0x8d, 0x2c, 0x7d, 0x4a, 0x25, 0x7e, - 0x29, 0xbb, 0x98, 0xe6, 0xb9, 0x58, 0x5c, 0x4a, 0x28, 0x86, 0xfb, 0x4e, 0xae, 0x12, 0x5d, 0x7c, - 0x6c, 0x11, 0x5d, 0x3a, 0x11, 0x9c, 0x79, 0x9a, 0xa9, 0x10, 0x92, 0xd1, 0x54, 0x0d, 0xe7, 0x3a, - 0x28, 0x73, 0x3d, 0x28, 0xe5, 0x1d, 0x27, 0x63, 0x2c, 0xc3, 0x2d, 0x70, 0xad, 0x33, 0x63, 0xd8, - 0x16, 0x36, 0xdb, 0xd9, 0xa2, 0xaa, 0x1c, 0x60, 0x64, 0x60, 0x53, 0x53, 0x2d, 0xcb, 0x71, 0x4c, - 0x4a, 0x90, 0x52, 0x2a, 0x61, 0xcb, 0x0a, 0x65, 0x97, 0xac, 0xfc, 0x0a, 0x39, 0x68, 0x58, 0xbe, - 0x0e, 0xf8, 0x95, 0xa5, 0x55, 0x98, 0x07, 0x13, 0x5b, 0x6f, 0x68, 0x48, 0x41, 0x14, 0x2b, 0x06, - 0xa1, 0x59, 0xb8, 0x08, 0xb2, 0xc9, 0xbe, 0x9e, 0x14, 0x1f, 0x7c, 0x37, 0x06, 0xa6, 0xc0, 0x68, - 0x41, 0xb1, 0xd4, 0x12, 0xab, 0xff, 0x63, 0x23, 0x1c, 0x38, 0x1d, 0xea, 0x08, 0xa6, 0x46, 0x62, - 0xc9, 0xd1, 0x0f, 0x32, 0xf9, 0x9d, 0xad, 0xcc, 0x0d, 0x5c, 0x47, 0x31, 0xf0, 0x57, 0xae, 0xd5, - 0x21, 0xfc, 0x91, 0x1b, 0xe1, 0x85, 0xb8, 0x74, 0xce, 0x3f, 0xc3, 0xc0, 0x81, 0x8b, 0x44, 0xb1, - 0x69, 0x55, 0x74, 0xfe, 0x10, 0x53, 0xfd, 0x1f, 0x9c, 0x5b, 0xe8, 0x4d, 0x44, 0xc9, 0x3e, 0xd6, - 0x0b, 0xff, 0x0f, 0x92, 0x6e, 0xc3, 0x01, 0xe1, 0x35, 0x53, 0xd1, 0xa9, 0x85, 0x9c, 0x81, 0x67, - 0x3d, 0x30, 0xef, 0xb5, 0x21, 0x70, 0xc6, 0x5b, 0x64, 0x23, 0x7f, 0x75, 0x0d, 0x0c, 0x2a, 0x65, - 0x4d, 0xd5, 0x61, 0x2e, 0xc4, 0xaa, 0x97, 0x43, 0x64, 0xec, 0x30, 0x1c, 0x32, 0xd5, 0xa2, 0x4e, - 0x26, 0x3a, 0xc0, 0x48, 0xd5, 0x2b, 0xc4, 0xd4, 0xd8, 0x79, 0x17, 0x17, 0xc0, 0x44, 0xd0, 0x14, - 0x03, 0xd1, 0xd6, 0xa8, 0x78, 0xa1, 0x67, 0x73, 0x14, 0x25, 0x35, 0xb7, 0xc0, 0xc9, 0x5b, 0xed, - 0xe8, 0x13, 0xbc, 0x53, 0xfd, 0xde, 0xa5, 0x07, 0xa3, 0xad, 0x93, 0x2b, 0x0e, 0xb1, 0xfb, 0xbc, - 0xfc, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x7d, 0x13, 0x85, 0x60, 0x25, 0x28, 0x00, 0x00, + proto.RegisterFile("examples/proto/examplepb/a_bit_of_everything.proto", fileDescriptor_a_bit_of_everything_68327cc2832b2df4) +} + +var fileDescriptor_a_bit_of_everything_68327cc2832b2df4 = []byte{ + // 3251 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x59, 0xcb, 0x6f, 0x1b, 0x47, + 0x9a, 0x57, 0xb3, 0xa9, 0x57, 0xe9, 0x45, 0x95, 0x6c, 0x99, 0xa2, 0xe5, 0xa8, 0x4c, 0x3b, 0x49, + 0x9b, 0x31, 0xd9, 0x52, 0x4b, 0x76, 0x64, 0x06, 0x89, 0x97, 0xd4, 0xc3, 0x56, 0x6c, 0xcb, 0x72, + 0xdb, 0xf1, 0x06, 0x8e, 0x1d, 0xa1, 0x49, 0x16, 0xc5, 0xb6, 0xd8, 0x5d, 0x9d, 0xee, 0x6a, 0xd9, + 0x5c, 0x2e, 0x77, 0xb3, 0x0f, 0xec, 0x62, 0x37, 0x87, 0x05, 0x94, 0xdd, 0xc3, 0x3e, 0xb0, 0xc0, + 0x02, 0x8b, 0x05, 0x16, 0xc8, 0x61, 0x2e, 0x73, 0x0a, 0x30, 0x8f, 0xc3, 0x9c, 0xe6, 0xe6, 0x19, + 0xcc, 0x3f, 0x30, 0x73, 0x98, 0xbf, 0x60, 0x80, 0xc1, 0x00, 0x83, 0x41, 0x57, 0x77, 0x93, 0xdd, + 0x4d, 0xd2, 0x32, 0xed, 0x20, 0x17, 0xa9, 0xab, 0xea, 0xfb, 0xbe, 0xdf, 0x57, 0x5f, 0x7d, 0xf5, + 0x3d, 0x8a, 0x40, 0xc2, 0xcf, 0x15, 0xcd, 0xa8, 0x63, 0x4b, 0x34, 0x4c, 0x42, 0x89, 0xe8, 0x0d, + 0x8d, 0x92, 0xa8, 0xec, 0x97, 0x54, 0xba, 0x4f, 0xaa, 0xfb, 0xf8, 0x08, 0x9b, 0x0d, 0x5a, 0x53, + 0xf5, 0x83, 0x1c, 0xa3, 0x81, 0x4b, 0x07, 0xa6, 0x51, 0xce, 0x1d, 0x28, 0x14, 0x3f, 0x53, 0x1a, + 0x39, 0x5f, 0x40, 0xae, 0xcd, 0x9a, 0x5a, 0x3c, 0x20, 0xe4, 0xa0, 0x8e, 0x45, 0xc5, 0x50, 0x45, + 0x45, 0xd7, 0x09, 0x55, 0xa8, 0x4a, 0x74, 0xcb, 0x65, 0x4f, 0x21, 0x6f, 0x95, 0x8d, 0x4a, 0x76, + 0x55, 0xac, 0xaa, 0xb8, 0x5e, 0xd9, 0xd7, 0x14, 0xeb, 0xd0, 0xa3, 0x38, 0x1b, 0xa5, 0xc0, 0x9a, + 0x41, 0x1b, 0xde, 0xe2, 0x5b, 0xd1, 0xc5, 0x8a, 0x6d, 0x32, 0xf9, 0xde, 0xfa, 0xbb, 0x91, 0x1d, + 0x19, 0x0a, 0xad, 0x61, 0xdd, 0xd6, 0xd8, 0xc7, 0xbe, 0xf3, 0xe5, 0xeb, 0x11, 0x21, 0xb4, 0xec, + 0x92, 0xa8, 0x61, 0xcb, 0x52, 0x0e, 0xb0, 0x47, 0x71, 0xbe, 0x9b, 0x42, 0x8a, 0x90, 0x2c, 0x45, + 0xb5, 0xa1, 0xaa, 0x86, 0x2d, 0xaa, 0x68, 0x86, 0x47, 0x70, 0x99, 0xfd, 0x2b, 0x67, 0x0f, 0xb0, + 0x9e, 0xb5, 0x9e, 0x29, 0x07, 0x07, 0xd8, 0x14, 0x89, 0xc1, 0xec, 0xd1, 0x6d, 0x9b, 0xf4, 0x1f, + 0x52, 0x20, 0x51, 0x28, 0xaa, 0xf4, 0x6e, 0x75, 0xab, 0x6d, 0x75, 0xf8, 0x04, 0x4c, 0x59, 0xaa, + 0x7e, 0x50, 0xc7, 0xfb, 0x3a, 0xb6, 0x28, 0xae, 0x24, 0x17, 0x10, 0x27, 0x4c, 0x48, 0xeb, 0xb9, + 0x13, 0xce, 0x21, 0x17, 0x95, 0x94, 0xdb, 0x65, 0xfc, 0xf2, 0xa4, 0x2b, 0xce, 0x1d, 0xc1, 0x1a, + 0x88, 0xdb, 0xb6, 0x5a, 0x49, 0x72, 0x88, 0x13, 0xc6, 0x8b, 0x0f, 0x8e, 0x0b, 0xf7, 0xbe, 0xe4, + 0xb8, 0x7f, 0xe6, 0x6e, 0x7d, 0xa6, 0x64, 0xab, 0x85, 0xec, 0xf6, 0x72, 0xf6, 0xda, 0x93, 0xe6, + 0x7a, 0x2b, 0x1b, 0x1c, 0xae, 0x0d, 0x32, 0x5c, 0x91, 0x5a, 0x32, 0x43, 0x80, 0x7b, 0x60, 0xc4, + 0xdb, 0x41, 0x0c, 0xf1, 0x6f, 0xb4, 0x03, 0x4f, 0x0e, 0xfc, 0x18, 0x4c, 0x54, 0xeb, 0x44, 0xa1, + 0xfb, 0x47, 0x4a, 0xdd, 0xc6, 0x49, 0x1e, 0x71, 0x42, 0xac, 0x78, 0xe9, 0xb8, 0xf0, 0x8e, 0x34, + 0xbb, 0xed, 0xcc, 0x23, 0x36, 0x8f, 0x98, 0x87, 0xe5, 0xf9, 0xe5, 0x9c, 0xf4, 0x82, 0x0b, 0x32, + 0xc8, 0x80, 0x0d, 0x1e, 0x3a, 0xdf, 0xf0, 0x3c, 0x98, 0xac, 0x10, 0xbb, 0x54, 0xc7, 0x9e, 0xb0, + 0x38, 0xe2, 0x04, 0x4e, 0x9e, 0x70, 0xe7, 0x5c, 0x92, 0x25, 0x30, 0xa1, 0xea, 0xf4, 0xea, 0x9a, + 0x47, 0x31, 0x8c, 0x38, 0x81, 0x97, 0x01, 0x9b, 0x6a, 0xcb, 0xb0, 0x83, 0x14, 0x23, 0x88, 0x13, + 0xe2, 0xf2, 0x84, 0x1d, 0x20, 0x71, 0x65, 0xac, 0x4a, 0x1e, 0xc5, 0x28, 0xe2, 0x84, 0x61, 0x26, + 0x63, 0x55, 0x72, 0x09, 0x2e, 0x80, 0xa9, 0xaa, 0xfa, 0x1c, 0x57, 0xda, 0x42, 0xc6, 0x10, 0x27, + 0x8c, 0xc8, 0x93, 0xde, 0x64, 0x98, 0xa8, 0x2d, 0x67, 0x1c, 0x71, 0xc2, 0xa8, 0x47, 0xe4, 0x4b, + 0x3a, 0x07, 0x40, 0x89, 0x90, 0xba, 0x47, 0x01, 0x10, 0x27, 0x8c, 0xc9, 0xe3, 0xce, 0x4c, 0x5b, + 0x59, 0x8b, 0x9a, 0xaa, 0x7e, 0xe0, 0x11, 0x4c, 0x38, 0x0e, 0x20, 0x4f, 0xb8, 0x73, 0x6d, 0x65, + 0x4b, 0x0d, 0x8a, 0x2d, 0x8f, 0xe2, 0x1c, 0xe2, 0x84, 0x49, 0x19, 0xb0, 0xa9, 0xd0, 0x86, 0xdb, + 0x6a, 0x4c, 0x21, 0x4e, 0x98, 0x72, 0x37, 0xec, 0x6b, 0x71, 0x0b, 0x00, 0xe7, 0xd6, 0x79, 0x04, + 0xd3, 0x88, 0x13, 0xa6, 0xa5, 0xcb, 0x27, 0x9e, 0xfc, 0xae, 0xad, 0x61, 0x53, 0x2d, 0x6f, 0xe9, + 0xb6, 0x26, 0x8f, 0x3b, 0xfc, 0xae, 0xb0, 0x3d, 0x30, 0xd3, 0xbe, 0xc7, 0x9e, 0xc4, 0xb7, 0x98, + 0x44, 0xa1, 0x8f, 0x44, 0xff, 0xfa, 0xe7, 0xf6, 0x14, 0x5a, 0x63, 0xd2, 0xa6, 0x0c, 0xef, 0xcb, + 0x95, 0x68, 0x81, 0x79, 0xd7, 0x99, 0xf6, 0xa3, 0x82, 0x97, 0x98, 0xe0, 0x8f, 0x4e, 0x12, 0x7c, + 0xc7, 0x0d, 0x08, 0xbe, 0x7c, 0xcf, 0x45, 0xdb, 0x70, 0x73, 0x7a, 0x68, 0xec, 0x82, 0xbe, 0x0d, + 0xa6, 0xad, 0xf0, 0xf9, 0xcd, 0x20, 0x4e, 0x98, 0x91, 0xa7, 0xac, 0xd0, 0x01, 0xb6, 0xc9, 0xda, + 0xbe, 0x90, 0x40, 0x9c, 0x90, 0xf0, 0xc9, 0x02, 0x5e, 0x67, 0x05, 0x0f, 0x61, 0x16, 0x71, 0xc2, + 0xac, 0x3c, 0x61, 0x05, 0x0e, 0xc1, 0x23, 0x69, 0xcb, 0x81, 0x88, 0x13, 0xa0, 0x4b, 0xe2, 0x4b, + 0x91, 0xc0, 0x69, 0x13, 0x1b, 0x58, 0x71, 0x4c, 0x11, 0xf2, 0x8b, 0x39, 0xc4, 0x0b, 0xe3, 0xf2, + 0x9c, 0xbf, 0x78, 0x3f, 0xe0, 0x1f, 0xd7, 0xc0, 0x04, 0xd1, 0xb1, 0x93, 0x24, 0x9c, 0x08, 0x9d, + 0x3c, 0xc5, 0x02, 0xd3, 0x7c, 0xce, 0x0d, 0x8a, 0x39, 0x3f, 0x28, 0xe6, 0xb6, 0x9c, 0xd5, 0x9b, + 0x43, 0x32, 0x60, 0xc4, 0x6c, 0x04, 0x2f, 0x80, 0x49, 0x97, 0xd5, 0xc5, 0x4a, 0x9e, 0x76, 0xbc, + 0xef, 0xe6, 0x90, 0xec, 0x0a, 0x74, 0x41, 0xe0, 0x63, 0x30, 0xae, 0x29, 0x86, 0xa7, 0xc7, 0x3c, + 0x0b, 0x1a, 0xd7, 0x07, 0x0f, 0x1a, 0x77, 0x14, 0x83, 0xa9, 0xbb, 0xa5, 0x53, 0xb3, 0x21, 0x8f, + 0x69, 0xde, 0x10, 0x3e, 0x07, 0x73, 0x9a, 0x62, 0x18, 0xd1, 0xfd, 0x9e, 0x61, 0x38, 0x37, 0x5f, + 0x0b, 0xc7, 0x08, 0xd9, 0xc7, 0x05, 0x9c, 0xd5, 0xa2, 0xf3, 0x01, 0x64, 0xcf, 0xf7, 0x5c, 0xe4, + 0xe4, 0x9b, 0x21, 0xbb, 0x9e, 0xd7, 0x8d, 0x1c, 0x98, 0x87, 0x79, 0x90, 0xd4, 0x89, 0xbe, 0x41, + 0xf4, 0x23, 0xac, 0x3b, 0x99, 0x47, 0xa9, 0xef, 0x2a, 0x9a, 0x1b, 0xde, 0x92, 0x29, 0x16, 0x00, + 0xfa, 0xae, 0xc3, 0x0d, 0x30, 0xd3, 0x4e, 0x6f, 0x9e, 0xc6, 0x67, 0xd9, 0x89, 0xa7, 0xba, 0x4e, + 0xfc, 0x81, 0x4f, 0x27, 0x4f, 0xb7, 0x59, 0x5c, 0x21, 0x8f, 0x41, 0xdb, 0x93, 0x82, 0x97, 0x6d, + 0x11, 0xf1, 0x03, 0xc7, 0x85, 0x59, 0x5f, 0x50, 0xe7, 0x62, 0x7d, 0xc3, 0x81, 0x64, 0x58, 0x7c, + 0x27, 0xc9, 0x26, 0xd1, 0xe0, 0x18, 0xc5, 0xcd, 0xe3, 0x42, 0x21, 0x73, 0x56, 0xf6, 0x44, 0x22, + 0xdd, 0x5d, 0x42, 0x8e, 0x68, 0x44, 0x55, 0x5a, 0xc7, 0x52, 0xba, 0xf7, 0x62, 0x05, 0x5b, 0x65, + 0x53, 0x65, 0x99, 0x3e, 0x27, 0xcf, 0x07, 0x35, 0x2d, 0xb4, 0x35, 0x82, 0xff, 0xca, 0x81, 0xd3, + 0x1d, 0x23, 0x04, 0x75, 0x3d, 0x3f, 0x78, 0x9c, 0x2c, 0x4a, 0xc7, 0x05, 0x31, 0x03, 0x77, 0xbb, + 0x55, 0x5c, 0xd8, 0xed, 0xab, 0xd9, 0x5c, 0x3b, 0xb6, 0x06, 0xd4, 0x3a, 0x02, 0xa9, 0x68, 0x28, + 0x08, 0xa8, 0x96, 0x76, 0xe2, 0x41, 0x71, 0xfd, 0xb8, 0x70, 0x25, 0x73, 0xba, 0xbd, 0x77, 0x97, + 0xcc, 0xc3, 0x5b, 0x8c, 0x4e, 0x87, 0x20, 0x93, 0xe1, 0x48, 0x12, 0xc0, 0xfd, 0x11, 0x17, 0x00, + 0xf6, 0x6e, 0x46, 0x00, 0xf8, 0xc2, 0x9b, 0x55, 0x0d, 0xc5, 0xed, 0xe3, 0xc2, 0x46, 0xa6, 0xa3, + 0x9b, 0x0b, 0x80, 0x48, 0xe9, 0x29, 0x2e, 0x53, 0x4f, 0xf3, 0x0b, 0x7d, 0x56, 0x7b, 0x6f, 0xc0, + 0x95, 0x1b, 0xd8, 0xc0, 0x7f, 0x72, 0x60, 0xb6, 0x5b, 0xef, 0x8b, 0x6f, 0x56, 0xaf, 0x15, 0xd7, + 0x8e, 0x0b, 0x2b, 0x99, 0xb9, 0xdd, 0x1e, 0xea, 0xa6, 0x76, 0xfb, 0x6b, 0x99, 0xd0, 0x23, 0xda, + 0xa5, 0x7e, 0xca, 0x81, 0x11, 0xaf, 0xe8, 0x83, 0x20, 0xae, 0x2b, 0x1a, 0x76, 0x8b, 0x3e, 0x99, + 0x7d, 0xc3, 0x79, 0x30, 0xa2, 0x68, 0xc4, 0xd6, 0x69, 0x32, 0xc6, 0xb2, 0xb8, 0x37, 0x82, 0xf7, + 0x40, 0x8c, 0x1c, 0xb2, 0xda, 0x6a, 0x5a, 0x2a, 0xbc, 0xee, 0x26, 0x72, 0x9b, 0x18, 0x1b, 0xec, + 0xd6, 0xc6, 0xc8, 0x61, 0x7a, 0x09, 0x8c, 0xf9, 0x63, 0x38, 0x0e, 0x86, 0xb7, 0x0b, 0xb7, 0xef, + 0x6f, 0x25, 0x86, 0xe0, 0x18, 0x88, 0x3f, 0x90, 0x3f, 0xd9, 0x4a, 0x70, 0xf9, 0x33, 0xc7, 0x85, + 0x53, 0x12, 0x84, 0x89, 0x26, 0x4a, 0x93, 0xc3, 0x74, 0x1e, 0xa5, 0x9d, 0xf9, 0x34, 0x6a, 0xa5, + 0x54, 0x30, 0x15, 0x0a, 0xe7, 0x30, 0x01, 0xf8, 0x43, 0xdc, 0xf0, 0x36, 0xe2, 0x7c, 0xc2, 0x22, + 0x18, 0x76, 0x63, 0x4a, 0xec, 0x35, 0x6a, 0x0d, 0x97, 0x35, 0x1f, 0x5b, 0xe7, 0x52, 0x9b, 0x60, + 0xbe, 0x77, 0x44, 0xef, 0x81, 0x79, 0x2a, 0x88, 0x39, 0x1e, 0x94, 0xf2, 0x57, 0xbe, 0x94, 0x68, + 0x74, 0xee, 0x21, 0x65, 0x37, 0x28, 0xe5, 0x4d, 0xea, 0xe3, 0x0e, 0x7e, 0xfe, 0xdf, 0x63, 0xc7, + 0x85, 0x7f, 0x8b, 0x81, 0xbf, 0xe7, 0x32, 0x73, 0x05, 0x54, 0x52, 0x29, 0x22, 0x55, 0xd4, 0x69, + 0xe9, 0xa4, 0x9d, 0x1d, 0x9d, 0xfa, 0x91, 0xbe, 0x81, 0xca, 0x44, 0x33, 0xea, 0x6a, 0x99, 0x5d, + 0x00, 0xaf, 0xd1, 0x41, 0xb4, 0x61, 0x60, 0x44, 0x09, 0x2a, 0x93, 0x23, 0x6c, 0x22, 0x4d, 0xd1, + 0x1b, 0xa8, 0x8a, 0x15, 0x6a, 0x9b, 0xd8, 0x72, 0x64, 0xed, 0xf9, 0x21, 0xff, 0x05, 0xc7, 0xaa, + 0xfc, 0x17, 0x5c, 0xb0, 0x46, 0x7e, 0xc1, 0x85, 0x8a, 0xea, 0xcc, 0x43, 0x70, 0x71, 0x5b, 0xd5, + 0x2b, 0x88, 0xd8, 0x14, 0x69, 0xc4, 0xc4, 0x48, 0x29, 0x39, 0x9f, 0x5d, 0x3d, 0x4f, 0xae, 0x46, + 0xa9, 0x61, 0xe5, 0x45, 0xf1, 0x40, 0xa5, 0x35, 0xbb, 0x94, 0x2b, 0x13, 0x4d, 0x74, 0x8c, 0x91, + 0xc5, 0x65, 0x62, 0x35, 0x2c, 0x8a, 0xbd, 0xa1, 0x67, 0x1b, 0x69, 0x0d, 0x4a, 0x4d, 0x94, 0x76, + 0xf0, 0x1d, 0x67, 0x59, 0x2e, 0x57, 0x57, 0xaf, 0xae, 0xe0, 0x95, 0xec, 0x5a, 0x69, 0x6d, 0x2d, + 0xbb, 0xb6, 0xbe, 0x5a, 0xc9, 0x2a, 0x2b, 0x57, 0xae, 0x65, 0xaf, 0xac, 0x55, 0x94, 0x52, 0xa5, + 0xfa, 0x3e, 0x5e, 0x5f, 0x59, 0x4b, 0xa3, 0x56, 0x71, 0xca, 0x2f, 0x5f, 0x98, 0x72, 0xe9, 0x3f, + 0x8e, 0x81, 0x64, 0x54, 0x13, 0x3f, 0x1e, 0xc0, 0x6b, 0x60, 0x81, 0x15, 0x88, 0xed, 0xf8, 0x14, + 0x6c, 0x3c, 0x38, 0xc4, 0x0b, 0x31, 0x79, 0xde, 0x21, 0xf0, 0x19, 0xb6, 0x3b, 0x9d, 0xc5, 0x07, + 0x20, 0x15, 0x66, 0x0d, 0xf5, 0x19, 0x4e, 0x2f, 0xc4, 0xc9, 0x67, 0x82, 0xbc, 0x9b, 0x81, 0x9e, + 0xa3, 0x0b, 0x37, 0x58, 0xc6, 0xf1, 0x88, 0x17, 0xf8, 0x30, 0xee, 0x4e, 0xa7, 0xa2, 0xeb, 0xc2, + 0x0d, 0xf5, 0x26, 0x71, 0xc4, 0x0b, 0xf1, 0x30, 0xee, 0x27, 0x81, 0x72, 0xb0, 0x17, 0x6e, 0xbb, + 0xc2, 0x1c, 0x46, 0xbc, 0x30, 0xdc, 0x85, 0xeb, 0x17, 0x9b, 0x1f, 0x82, 0xb3, 0x11, 0x53, 0x85, + 0x6a, 0xd8, 0x11, 0xc4, 0x0b, 0x23, 0x72, 0x32, 0x64, 0xac, 0x60, 0x39, 0xdb, 0x9b, 0x3d, 0xd0, + 0x31, 0xf1, 0xc2, 0x68, 0x0f, 0x76, 0x1f, 0xfd, 0x7d, 0x90, 0x0c, 0xb3, 0x07, 0x7a, 0xa0, 0x31, + 0xc4, 0x0b, 0x63, 0xf2, 0xe9, 0x20, 0x6f, 0xb1, 0xdd, 0x0f, 0x75, 0x99, 0x2b, 0x54, 0x15, 0x8e, + 0xb3, 0x2a, 0x38, 0x64, 0xae, 0x70, 0x25, 0x1c, 0x31, 0x57, 0xb0, 0x6f, 0x02, 0x88, 0x17, 0x26, + 0xc3, 0xe6, 0x2a, 0x76, 0x7a, 0xa8, 0x9e, 0xc7, 0xd4, 0xde, 0xee, 0x04, 0xe2, 0x85, 0xa9, 0xee, + 0x63, 0xf2, 0x77, 0x8b, 0xa3, 0xbb, 0x0d, 0xd4, 0x54, 0x93, 0xaf, 0x51, 0x53, 0x85, 0x6c, 0xd3, + 0xa9, 0xab, 0xae, 0x83, 0xc5, 0x88, 0x6d, 0xc2, 0x87, 0x32, 0x85, 0x78, 0x61, 0x46, 0x5e, 0x08, + 0x59, 0x27, 0xd4, 0xca, 0xf4, 0x11, 0xd0, 0x76, 0x8a, 0x69, 0xc4, 0x0b, 0x89, 0x5e, 0x02, 0xfa, + 0x3a, 0x73, 0xa8, 0xe5, 0x99, 0x41, 0xbc, 0x30, 0x1b, 0x39, 0x9d, 0x80, 0x95, 0x7a, 0x32, 0x07, + 0x9a, 0x2a, 0x5e, 0x80, 0xdd, 0xcc, 0x1e, 0x72, 0xbe, 0x76, 0x5c, 0xc0, 0x52, 0x19, 0x2a, 0x4d, + 0x94, 0xee, 0xe7, 0x58, 0xe9, 0x3c, 0xfa, 0x8c, 0x9a, 0x36, 0xbe, 0x8c, 0xdc, 0xbf, 0x55, 0xa5, + 0x6e, 0x79, 0x83, 0x27, 0x97, 0xa3, 0x6c, 0x01, 0xbd, 0x1d, 0xbe, 0x95, 0xcb, 0x48, 0xba, 0x8c, + 0x56, 0x9f, 0xa0, 0x56, 0x3a, 0x05, 0xe2, 0x45, 0x52, 0x69, 0xf4, 0xca, 0xce, 0xe9, 0xc7, 0x60, + 0xc6, 0xeb, 0x34, 0xff, 0x5c, 0xa5, 0x35, 0x46, 0x36, 0x0d, 0x62, 0xfe, 0xbb, 0x8d, 0x1c, 0x53, + 0x9d, 0x10, 0x15, 0xaf, 0x28, 0x54, 0xf1, 0xb2, 0xc7, 0xdb, 0x27, 0x9e, 0xbb, 0x23, 0x44, 0x66, + 0x2c, 0xe9, 0xaf, 0x39, 0x30, 0xf3, 0x89, 0x51, 0x51, 0x28, 0x7e, 0x28, 0xc9, 0xf8, 0x0b, 0x1b, + 0x5b, 0x14, 0x6e, 0x00, 0x5e, 0x29, 0xb9, 0x4a, 0x4c, 0x48, 0x2b, 0x03, 0xe7, 0x22, 0xd9, 0xe1, + 0x86, 0x1f, 0x80, 0x09, 0x9b, 0xc9, 0x65, 0x0f, 0x7c, 0x9e, 0x6a, 0xdd, 0xfd, 0xc2, 0xb6, 0x8a, + 0xeb, 0x95, 0x3b, 0x8a, 0x75, 0x28, 0x03, 0x97, 0xdc, 0xf9, 0xce, 0x20, 0x30, 0x11, 0xf0, 0x4d, + 0xa7, 0x3c, 0x78, 0xb4, 0x25, 0xdf, 0x4d, 0x0c, 0xc1, 0x51, 0xc0, 0xdf, 0xdd, 0xdd, 0x4a, 0x70, + 0xd2, 0xff, 0x9e, 0x03, 0x67, 0xa2, 0xc0, 0xf7, 0xb1, 0x79, 0xa4, 0x96, 0x31, 0xfc, 0x9f, 0x38, + 0x18, 0xd9, 0x30, 0x1d, 0x9b, 0xc3, 0xc1, 0xb5, 0x4f, 0x0d, 0xce, 0x92, 0xfe, 0x01, 0xff, 0xb7, + 0xbf, 0xf8, 0xcd, 0xd7, 0xb1, 0xff, 0xe7, 0xd3, 0xff, 0xc7, 0x8b, 0x47, 0x2b, 0xfe, 0x63, 0x6a, + 0xaf, 0xa7, 0x54, 0xb1, 0x19, 0x48, 0x1f, 0x2d, 0xb1, 0x19, 0xcc, 0x08, 0x2d, 0xb1, 0x19, 0xf0, + 0xce, 0x96, 0x68, 0x61, 0x43, 0x31, 0x15, 0x4a, 0x4c, 0xb1, 0x69, 0x87, 0x16, 0x9a, 0x01, 0x4f, + 0x6a, 0x89, 0xcd, 0xd0, 0x85, 0xf2, 0xc7, 0x81, 0xf5, 0x8e, 0xbb, 0xb6, 0xc4, 0x66, 0x30, 0xb6, + 0x7d, 0x68, 0x51, 0xd3, 0x30, 0x71, 0x55, 0x7d, 0x2e, 0x66, 0x5a, 0x2e, 0x48, 0x80, 0xcd, 0x8a, + 0xca, 0xb1, 0xa2, 0x40, 0x56, 0x84, 0x21, 0xac, 0x64, 0xbf, 0x76, 0xb2, 0x25, 0x36, 0x3b, 0xb1, + 0xaa, 0x25, 0x36, 0x23, 0xcf, 0x2f, 0x0e, 0x67, 0xcf, 0x77, 0x99, 0x96, 0xd8, 0xec, 0x11, 0xec, + 0x42, 0xd2, 0x02, 0xc5, 0x77, 0x90, 0xba, 0xab, 0x95, 0x69, 0xc1, 0xff, 0xe6, 0x00, 0x70, 0x7d, + 0x84, 0xdd, 0xa8, 0xef, 0xc7, 0x4f, 0x32, 0xcc, 0x4d, 0x2e, 0xa6, 0x97, 0x4e, 0x70, 0x92, 0x3c, + 0x97, 0x81, 0x7f, 0x09, 0x46, 0x6e, 0x13, 0x72, 0x68, 0x1b, 0x70, 0x26, 0x67, 0xd9, 0x25, 0x29, + 0xb7, 0x53, 0xf1, 0xc2, 0xc0, 0xeb, 0x20, 0xe7, 0x18, 0xb2, 0x00, 0xdf, 0x39, 0xd1, 0x3d, 0x9d, + 0x52, 0xaa, 0x05, 0xff, 0x81, 0x03, 0x23, 0x6e, 0x58, 0x78, 0x1d, 0xd3, 0xf4, 0x79, 0x08, 0x4a, + 0xaf, 0x30, 0x2d, 0xde, 0x4b, 0xbd, 0xa2, 0x16, 0x8e, 0x19, 0x7e, 0xc2, 0x81, 0x31, 0x3f, 0x3e, + 0xc1, 0xe5, 0x13, 0x55, 0x89, 0x84, 0xb2, 0xbe, 0x9a, 0x3c, 0x65, 0x9a, 0x54, 0x52, 0x19, 0xf1, + 0x48, 0x7a, 0xb9, 0x26, 0x4a, 0x09, 0xe7, 0x5c, 0x6d, 0x9c, 0xb0, 0xf6, 0x68, 0x45, 0x1a, 0x94, + 0x05, 0xfe, 0x17, 0x07, 0x92, 0x7b, 0x0a, 0x2d, 0xd7, 0x9c, 0xf8, 0xdd, 0x8e, 0x77, 0x3b, 0x3a, + 0x73, 0xbc, 0xef, 0x6e, 0x4b, 0x57, 0xd9, 0x96, 0x96, 0xa5, 0xf7, 0xc4, 0x23, 0x49, 0x79, 0x55, + 0x05, 0xb9, 0x0c, 0xfc, 0x17, 0x0e, 0x8c, 0x6c, 0xe2, 0x3a, 0xa6, 0xb8, 0xdb, 0xd3, 0xfa, 0x61, + 0x3d, 0x3e, 0x2e, 0xbc, 0x57, 0xba, 0x04, 0xa6, 0x01, 0x28, 0x18, 0xea, 0x2d, 0xdc, 0x28, 0xd8, + 0xb4, 0x06, 0x87, 0xc0, 0x19, 0x30, 0x72, 0xd7, 0xf9, 0x94, 0xe0, 0x14, 0x88, 0x9b, 0x58, 0xa9, + 0x80, 0xe1, 0x67, 0xa6, 0x4a, 0xb1, 0xeb, 0x7c, 0x99, 0x57, 0x75, 0xbe, 0x5f, 0x73, 0x60, 0xec, + 0x06, 0xa6, 0xf7, 0x6c, 0x6c, 0x36, 0xbe, 0x4b, 0xf7, 0xfb, 0x8a, 0x3b, 0x2e, 0x3c, 0x48, 0xef, + 0x82, 0xc5, 0x5e, 0x9d, 0x48, 0x1b, 0x70, 0xc0, 0x0e, 0xe4, 0x53, 0xae, 0x34, 0xc4, 0xf6, 0x97, + 0x83, 0x97, 0x4f, 0xda, 0xdf, 0x17, 0x0e, 0x80, 0xbf, 0xcb, 0xaf, 0x86, 0x41, 0xe2, 0x06, 0xa6, + 0x7e, 0xe1, 0xe1, 0x82, 0x5f, 0x1b, 0x3c, 0xdb, 0x7a, 0xfc, 0xa9, 0xd7, 0x67, 0x4d, 0x7f, 0x19, + 0x67, 0x3b, 0xf8, 0x3d, 0x0f, 0x7f, 0x77, 0x52, 0xfe, 0x6a, 0x57, 0x33, 0x5e, 0xdc, 0xee, 0xd5, + 0x15, 0xb5, 0xa2, 0x6b, 0x91, 0x24, 0xd7, 0xb7, 0xad, 0xe9, 0x5a, 0xb3, 0x5f, 0xb6, 0x18, 0x4e, + 0x3e, 0x2f, 0x69, 0x3c, 0x7a, 0xaf, 0xf6, 0xe5, 0x0d, 0xa5, 0xcb, 0xfe, 0x8d, 0x41, 0x37, 0x5f, + 0xa7, 0xf0, 0xef, 0xb9, 0x91, 0xbe, 0x80, 0xdd, 0xd9, 0xb0, 0x4f, 0xb5, 0xdd, 0x67, 0xb9, 0xef, + 0x3e, 0xad, 0x97, 0xa1, 0x86, 0xb2, 0x35, 0xfc, 0x19, 0x0f, 0xe2, 0x5b, 0xe5, 0x1a, 0x81, 0xfd, + 0x7e, 0x4f, 0xb1, 0xec, 0x52, 0xce, 0xed, 0x7b, 0xfc, 0xe0, 0xf0, 0xca, 0x94, 0xe9, 0xdf, 0xc6, + 0x8e, 0x0b, 0x7f, 0x13, 0x03, 0x93, 0xb8, 0x5c, 0x23, 0xc8, 0x72, 0xab, 0x34, 0x30, 0xc6, 0x46, + 0xa6, 0x51, 0x86, 0xb3, 0xf7, 0x6d, 0x4d, 0x53, 0xcc, 0x46, 0x1e, 0x6d, 0x79, 0x53, 0xa9, 0xc4, + 0x66, 0xe7, 0x45, 0x8b, 0xcd, 0xa6, 0x37, 0x01, 0x0c, 0x5f, 0x5b, 0xa6, 0xed, 0x80, 0x97, 0xf5, + 0xe3, 0xeb, 0x80, 0xbf, 0xb2, 0xbc, 0x0a, 0xd7, 0xc1, 0x55, 0x19, 0x53, 0xdb, 0xd4, 0x71, 0x05, + 0x3d, 0xab, 0x61, 0x1d, 0xd1, 0x1a, 0x46, 0x26, 0xb6, 0x88, 0x6d, 0x96, 0x31, 0x52, 0x2d, 0x44, + 0xb1, 0x66, 0x10, 0x53, 0x31, 0xd5, 0x7a, 0x03, 0xd9, 0xba, 0x72, 0xa4, 0xa8, 0x75, 0xa5, 0x54, + 0xc7, 0xb9, 0x8f, 0x3f, 0x00, 0xfc, 0xda, 0xf2, 0x1a, 0x5c, 0x03, 0x99, 0x97, 0x08, 0xa8, 0x10, + 0x6c, 0x21, 0x9d, 0x50, 0x84, 0x9f, 0xab, 0x16, 0xcd, 0xc1, 0x11, 0x10, 0xff, 0x8f, 0x18, 0xe7, + 0x16, 0x89, 0x4f, 0x4e, 0x0e, 0x13, 0x8e, 0x61, 0xc4, 0xa6, 0x7b, 0x30, 0x8f, 0x16, 0xd2, 0x89, + 0x60, 0xc2, 0x71, 0xd6, 0xf2, 0xee, 0x2b, 0xcf, 0x23, 0x08, 0xbb, 0x96, 0xe0, 0x0f, 0x39, 0x30, + 0xb9, 0x89, 0xb1, 0xc1, 0x7e, 0x76, 0x72, 0x26, 0xbe, 0x9f, 0xca, 0xe6, 0x3a, 0xdb, 0xdb, 0xb5, + 0xf4, 0xda, 0x89, 0x21, 0x3e, 0xf4, 0x8b, 0x76, 0xce, 0xe9, 0x70, 0x58, 0x16, 0x2a, 0x00, 0xb0, + 0x4b, 0x8a, 0xaa, 0x5e, 0x51, 0xf5, 0x03, 0x0b, 0x2e, 0x74, 0x45, 0xf0, 0x4d, 0xef, 0xc7, 0xfe, + 0xbe, 0xc1, 0x7d, 0x08, 0x3e, 0x04, 0xa3, 0x0f, 0x54, 0x0d, 0x13, 0x9b, 0xc2, 0x3e, 0x44, 0x7d, + 0x99, 0xcf, 0x32, 0xf5, 0x4f, 0xc3, 0xb9, 0xa0, 0x3d, 0xa9, 0x27, 0xac, 0x06, 0x12, 0x5b, 0xa6, + 0x49, 0x4c, 0x27, 0x7d, 0x6f, 0x62, 0xaa, 0xa8, 0x75, 0x6b, 0x60, 0x80, 0x8b, 0x0c, 0xe0, 0x2d, + 0xb8, 0x18, 0x3a, 0x30, 0x47, 0xea, 0x33, 0x95, 0xd6, 0x2a, 0x9e, 0xd4, 0x7f, 0xe4, 0x00, 0xbc, + 0x81, 0x69, 0xb4, 0xdd, 0x3b, 0xb9, 0x46, 0x88, 0x70, 0xf4, 0x55, 0xe3, 0x5d, 0xa6, 0xc6, 0xf9, + 0xf4, 0x42, 0x50, 0x0d, 0x47, 0x83, 0x12, 0xa9, 0x34, 0xc4, 0xa6, 0x53, 0x11, 0xb0, 0xb6, 0x10, + 0xfe, 0x1d, 0x07, 0x66, 0xf7, 0x88, 0x45, 0x1d, 0x89, 0x8c, 0x95, 0x29, 0xf2, 0x6a, 0x9d, 0x65, + 0x5f, 0x74, 0x91, 0xa1, 0x5f, 0x4a, 0x5f, 0x0c, 0xa2, 0x1b, 0xc4, 0xa2, 0x8e, 0x06, 0xec, 0x87, + 0x44, 0x57, 0x0d, 0xdf, 0x29, 0x52, 0x3f, 0xe6, 0x8e, 0x0b, 0xdf, 0x72, 0xb0, 0xda, 0xa7, 0xd1, + 0x0b, 0x3e, 0x7b, 0xa3, 0x6c, 0x16, 0x3d, 0xab, 0xa9, 0xe5, 0x1a, 0xb2, 0x6a, 0xc4, 0xae, 0x57, + 0xd8, 0xf5, 0x2b, 0x61, 0x64, 0x5b, 0xb8, 0x82, 0x54, 0x1d, 0x19, 0x75, 0xa5, 0x8c, 0x11, 0xa9, + 0xb2, 0x8b, 0x5a, 0x21, 0x65, 0x5b, 0xc3, 0xba, 0xdb, 0x0b, 0xa0, 0x32, 0xd1, 0x9c, 0xc1, 0xf9, + 0xd4, 0x3d, 0xb0, 0xd4, 0xab, 0x32, 0x70, 0xae, 0x91, 0xdf, 0x5a, 0x0e, 0xfa, 0x3c, 0xf9, 0x14, + 0x9c, 0x2a, 0x2b, 0x1a, 0xae, 0x6f, 0x28, 0x16, 0xf6, 0x64, 0x38, 0x7d, 0x10, 0x94, 0xc1, 0xb0, + 0xfb, 0x6b, 0xe8, 0xa0, 0x8e, 0xb4, 0xc0, 0x6c, 0x38, 0x07, 0x67, 0x43, 0x8e, 0xe4, 0x2c, 0x49, + 0x9f, 0x83, 0xc5, 0x82, 0x4e, 0x68, 0x0d, 0x9b, 0x1e, 0x92, 0x73, 0x78, 0x81, 0x4b, 0xf5, 0x51, + 0xe8, 0x8a, 0x0d, 0x0a, 0x3c, 0x54, 0xfc, 0x76, 0xf4, 0xb8, 0xf0, 0xcd, 0x28, 0xfc, 0x25, 0x07, + 0xe6, 0x0a, 0xa8, 0xe8, 0x3e, 0x28, 0x07, 0x42, 0xc0, 0xa7, 0xe0, 0xd4, 0x81, 0xbc, 0xb7, 0x91, + 0xbd, 0xe1, 0x6e, 0x1d, 0x19, 0x26, 0x79, 0x8a, 0xcb, 0x74, 0x50, 0x93, 0xa5, 0x12, 0x3a, 0xd1, + 0xf1, 0x9f, 0x79, 0x5b, 0x73, 0xa8, 0x33, 0x9f, 0x83, 0x53, 0xc5, 0xfb, 0x9b, 0x68, 0x35, 0xbb, + 0x51, 0x57, 0x6c, 0x0b, 0xa3, 0xdb, 0x6a, 0x19, 0xeb, 0x16, 0x86, 0xdb, 0x83, 0x49, 0x16, 0x4b, + 0x75, 0x52, 0x12, 0x35, 0xc5, 0xa2, 0xd8, 0x14, 0x6f, 0xef, 0x6c, 0x6c, 0xed, 0xde, 0xdf, 0xca, + 0xd1, 0xe7, 0x54, 0xe2, 0x57, 0x72, 0xcb, 0x19, 0x9e, 0x8b, 0xc5, 0xa5, 0x84, 0x62, 0xb8, 0xcf, + 0xe0, 0x2a, 0xd1, 0xc5, 0xa7, 0x16, 0xd1, 0xa5, 0xf9, 0xe0, 0xcc, 0xf3, 0x6c, 0x95, 0x90, 0xac, + 0xa6, 0x6a, 0x38, 0xdf, 0x45, 0x99, 0xef, 0x43, 0x29, 0xef, 0x39, 0x19, 0x63, 0x15, 0xee, 0x80, + 0x1b, 0xdd, 0x19, 0xc3, 0xb6, 0xb0, 0xd9, 0xc9, 0x16, 0x35, 0xe5, 0x08, 0x23, 0x03, 0x9b, 0x9a, + 0x6a, 0x59, 0x8e, 0x63, 0x52, 0x82, 0x94, 0x72, 0x19, 0x5b, 0x56, 0x28, 0xbb, 0xe4, 0xe4, 0x37, + 0xc8, 0x41, 0xa3, 0xf2, 0x4d, 0xc0, 0xaf, 0xad, 0xac, 0xc3, 0x02, 0x98, 0xda, 0x79, 0x57, 0x43, + 0x0a, 0xa2, 0x58, 0x31, 0x08, 0xcd, 0xc1, 0x65, 0x90, 0x4b, 0x0d, 0xf4, 0x62, 0xf8, 0xe8, 0x9f, + 0x62, 0x60, 0x06, 0x8c, 0x17, 0x15, 0x4b, 0x2d, 0xb3, 0xfa, 0x3f, 0x36, 0xc6, 0x81, 0x73, 0xa1, + 0x8e, 0x60, 0x66, 0x2c, 0x96, 0x1a, 0xff, 0x34, 0x5b, 0xd8, 0xdb, 0xc9, 0xde, 0xc2, 0x0d, 0x14, + 0x03, 0xbf, 0xe2, 0xda, 0x1d, 0xc2, 0xcf, 0xb9, 0x31, 0x5e, 0x88, 0x4b, 0x17, 0xfc, 0x33, 0x0c, + 0x1c, 0xb8, 0x48, 0x14, 0x9b, 0xd6, 0x44, 0xe7, 0x0f, 0x31, 0xd5, 0xbf, 0xc0, 0xf9, 0xa5, 0xfe, + 0x44, 0x94, 0x1c, 0x62, 0xbd, 0xf8, 0xd7, 0x20, 0xe5, 0x36, 0x1c, 0x10, 0xde, 0x30, 0x15, 0x9d, + 0x5a, 0xc8, 0x19, 0x78, 0xd6, 0x03, 0x8b, 0x5e, 0x1b, 0x02, 0xe7, 0xbc, 0x45, 0x36, 0xf2, 0x57, + 0x37, 0xc0, 0xb0, 0x52, 0xd1, 0x54, 0x1d, 0xe6, 0x43, 0xac, 0x7a, 0x25, 0x44, 0xc6, 0x0e, 0xc3, + 0x21, 0x53, 0x2d, 0xea, 0x64, 0xa2, 0x23, 0x8c, 0x54, 0xbd, 0x4a, 0x4c, 0x8d, 0x9d, 0x77, 0x69, + 0x09, 0x4c, 0x05, 0x4d, 0x31, 0x14, 0x6d, 0x8d, 0x4a, 0x97, 0xfa, 0x36, 0x47, 0x51, 0x52, 0x73, + 0x07, 0x9c, 0xb9, 0xd3, 0x89, 0x3e, 0xc1, 0x3b, 0x35, 0xe8, 0x5d, 0x7a, 0x34, 0xde, 0x3e, 0xb9, + 0xd2, 0x08, 0xbb, 0xcf, 0xab, 0x7f, 0x0a, 0x00, 0x00, 0xff, 0xff, 0x54, 0x0b, 0x85, 0xbe, 0xf9, + 0x27, 0x00, 0x00, } diff --git a/examples/proto/examplepb/a_bit_of_everything.pb.gw.go b/examples/proto/examplepb/a_bit_of_everything.pb.gw.go index b7e7c012e57..e9e8855f877 100644 --- a/examples/proto/examplepb/a_bit_of_everything.pb.gw.go +++ b/examples/proto/examplepb/a_bit_of_everything.pb.gw.go @@ -33,7 +33,7 @@ var _ = runtime.String var _ = utilities.NewDoubleArray var ( - filter_ABitOfEverythingService_Create_0 = &utilities.DoubleArray{Encoding: map[string]int{"float_value": 0, "double_value": 1, "int64_value": 2, "uint64_value": 3, "int32_value": 4, "fixed64_value": 5, "fixed32_value": 6, "bool_value": 7, "string_value": 8, "uint32_value": 9, "sfixed32_value": 10, "sfixed64_value": 11, "sint32_value": 12, "sint64_value": 13, "nonConventionalNameValue": 14, "enum_value": 15, "path_enum_value": 16, "nested_path_enum_value": 17, "repeated_enum_value": 18, "repeated_enum_value_annotation": 19, "enum_value_annotation": 20, "repeated_string_annotation": 21}, Base: []int{1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}} + filter_ABitOfEverythingService_Create_0 = &utilities.DoubleArray{Encoding: map[string]int{"float_value": 0, "double_value": 1, "int64_value": 2, "uint64_value": 3, "int32_value": 4, "fixed64_value": 5, "fixed32_value": 6, "bool_value": 7, "string_value": 8, "uint32_value": 9, "sfixed32_value": 10, "sfixed64_value": 11, "sint32_value": 12, "sint64_value": 13, "nonConventionalNameValue": 14, "enum_value": 15, "path_enum_value": 16, "nested_path_enum_value": 17, "repeated_enum_value": 18, "enum_value_annotation": 19, "repeated_string_annotation": 20}, Base: []int{1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22}} ) func request_ABitOfEverythingService_Create_0(ctx context.Context, marshaler runtime.Marshaler, client ABitOfEverythingServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -270,23 +270,6 @@ func request_ABitOfEverythingService_Create_0(ctx context.Context, marshaler run } protoReq.RepeatedEnumValue = s - val, ok = pathParams["repeated_enum_value_annotation"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "repeated_enum_value_annotation") - } - - es, err = runtime.EnumSlice(val, ",", NumericEnum_value) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "repeated_enum_value_annotation", err) - } - - s := make([]NumericEnum, len(es)) - for i, v := range es { - s[i] = NumericEnum(v) - } - protoReq.RepeatedEnumValueAnnotation = s - val, ok = pathParams["enum_value_annotation"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "enum_value_annotation") @@ -1388,7 +1371,7 @@ func RegisterABitOfEverythingServiceHandlerClient(ctx context.Context, mux *runt } var ( - pattern_ABitOfEverythingService_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 2, 6, 1, 0, 4, 1, 5, 7, 1, 0, 4, 1, 5, 8, 1, 0, 4, 1, 5, 9, 1, 0, 4, 1, 5, 10, 1, 0, 4, 1, 5, 11, 2, 12, 1, 0, 4, 2, 5, 13, 1, 0, 4, 1, 5, 14, 1, 0, 4, 1, 5, 15, 1, 0, 4, 1, 5, 16, 1, 0, 4, 1, 5, 17, 1, 0, 4, 1, 5, 18, 1, 0, 4, 1, 5, 19, 1, 0, 4, 1, 5, 20, 1, 0, 4, 1, 5, 21, 1, 0, 4, 1, 5, 22, 1, 0, 4, 1, 5, 23, 1, 0, 4, 1, 5, 24, 1, 0, 4, 1, 5, 25, 1, 0, 4, 1, 5, 26}, []string{"v1", "example", "a_bit_of_everything", "float_value", "double_value", "int64_value", "separator", "uint64_value", "int32_value", "fixed64_value", "fixed32_value", "bool_value", "strprefix", "string_value", "uint32_value", "sfixed32_value", "sfixed64_value", "sint32_value", "sint64_value", "nonConventionalNameValue", "enum_value", "path_enum_value", "nested_path_enum_value", "repeated_enum_value", "repeated_enum_value_annotation", "enum_value_annotation", "repeated_string_annotation"}, "")) + pattern_ABitOfEverythingService_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 2, 6, 1, 0, 4, 1, 5, 7, 1, 0, 4, 1, 5, 8, 1, 0, 4, 1, 5, 9, 1, 0, 4, 1, 5, 10, 1, 0, 4, 1, 5, 11, 2, 12, 1, 0, 4, 2, 5, 13, 1, 0, 4, 1, 5, 14, 1, 0, 4, 1, 5, 15, 1, 0, 4, 1, 5, 16, 1, 0, 4, 1, 5, 17, 1, 0, 4, 1, 5, 18, 1, 0, 4, 1, 5, 19, 1, 0, 4, 1, 5, 20, 1, 0, 4, 1, 5, 21, 1, 0, 4, 1, 5, 22, 1, 0, 4, 1, 5, 23, 1, 0, 4, 1, 5, 24, 1, 0, 4, 1, 5, 25}, []string{"v1", "example", "a_bit_of_everything", "float_value", "double_value", "int64_value", "separator", "uint64_value", "int32_value", "fixed64_value", "fixed32_value", "bool_value", "strprefix", "string_value", "uint32_value", "sfixed32_value", "sfixed64_value", "sint32_value", "sint64_value", "nonConventionalNameValue", "enum_value", "path_enum_value", "nested_path_enum_value", "repeated_enum_value", "enum_value_annotation", "repeated_string_annotation"}, "")) pattern_ABitOfEverythingService_CreateBody_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "example", "a_bit_of_everything"}, "")) diff --git a/examples/proto/examplepb/a_bit_of_everything.proto b/examples/proto/examplepb/a_bit_of_everything.proto index 82af8e0414f..1fd471575a5 100644 --- a/examples/proto/examplepb/a_bit_of_everything.proto +++ b/examples/proto/examplepb/a_bit_of_everything.proto @@ -204,7 +204,7 @@ message ABitOfEverything { repeated NumericEnum repeated_enum_value = 28; // repeated numeric enum comment (This comment is overridden by the field annotation) - repeated NumericEnum repeated_enum_value_annotation = 32 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = {title: "Repeated numeric enum title", description: "Repeated numeric enum description."}]; + repeated NumericEnum repeated_enum_annotation = 32 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = {title: "Repeated numeric enum title", description: "Repeated numeric enum description."}]; // numeric enum comment (This comment is overridden by the field annotation) NumericEnum enum_value_annotation = 33 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = {title: "Numeric enum title", description: "Numeric enum description."}]; @@ -285,7 +285,7 @@ service ABitOfEverythingService { // This API creates a new ABitOfEverything rpc Create(ABitOfEverything) returns (ABitOfEverything) { option (google.api.http) = { - post: "/v1/example/a_bit_of_everything/{float_value}/{double_value}/{int64_value}/separator/{uint64_value}/{int32_value}/{fixed64_value}/{fixed32_value}/{bool_value}/{string_value=strprefix/*}/{uint32_value}/{sfixed32_value}/{sfixed64_value}/{sint32_value}/{sint64_value}/{nonConventionalNameValue}/{enum_value}/{path_enum_value}/{nested_path_enum_value}/{repeated_enum_value}/{repeated_enum_value_annotation}/{enum_value_annotation}/{repeated_string_annotation}" + post: "/v1/example/a_bit_of_everything/{float_value}/{double_value}/{int64_value}/separator/{uint64_value}/{int32_value}/{fixed64_value}/{fixed32_value}/{bool_value}/{string_value=strprefix/*}/{uint32_value}/{sfixed32_value}/{sfixed64_value}/{sint32_value}/{sint64_value}/{nonConventionalNameValue}/{enum_value}/{path_enum_value}/{nested_path_enum_value}/{repeated_enum_value}/{enum_value_annotation}/{repeated_string_annotation}" }; } rpc CreateBody(ABitOfEverything) returns (ABitOfEverything) { diff --git a/examples/proto/examplepb/a_bit_of_everything.swagger.json b/examples/proto/examplepb/a_bit_of_everything.swagger.json index 48a97db32a9..af0b88fd77c 100644 --- a/examples/proto/examplepb/a_bit_of_everything.swagger.json +++ b/examples/proto/examplepb/a_bit_of_everything.swagger.json @@ -364,7 +364,7 @@ } }, { - "name": "repeated_enum_value_annotation", + "name": "repeated_enum_annotation", "description": "Repeated numeric enum title. Repeated numeric enum description.\n\n - ZERO: ZERO means 0\n - ONE: ONE means 1", "in": "query", "required": false, @@ -437,7 +437,7 @@ } } }, - "/v1/example/a_bit_of_everything/{float_value}/{double_value}/{int64_value}/separator/{uint64_value}/{int32_value}/{fixed64_value}/{fixed32_value}/{bool_value}/{string_value}/{uint32_value}/{sfixed32_value}/{sfixed64_value}/{sint32_value}/{sint64_value}/{nonConventionalNameValue}/{enum_value}/{path_enum_value}/{nested_path_enum_value}/{repeated_enum_value}/{repeated_enum_value_annotation}/{enum_value_annotation}/{repeated_string_annotation}": { + "/v1/example/a_bit_of_everything/{float_value}/{double_value}/{int64_value}/separator/{uint64_value}/{int32_value}/{fixed64_value}/{fixed32_value}/{bool_value}/{string_value}/{uint32_value}/{sfixed32_value}/{sfixed64_value}/{sint32_value}/{sint64_value}/{nonConventionalNameValue}/{enum_value}/{path_enum_value}/{nested_path_enum_value}/{repeated_enum_value}/{enum_value_annotation}/{repeated_string_annotation}": { "post": { "summary": "Create a new ABitOfEverything", "description": "This API creates a new ABitOfEverything", @@ -618,22 +618,6 @@ "collectionFormat": "csv", "minItems": 1 }, - { - "name": "repeated_enum_value_annotation", - "description": "Repeated numeric enum description.", - "in": "path", - "required": true, - "type": "array", - "items": { - "type": "string", - "enum": [ - "ZERO", - "ONE" - ] - }, - "collectionFormat": "csv", - "minItems": 1 - }, { "name": "enum_value_annotation", "description": "Numeric enum description.", @@ -1688,7 +1672,7 @@ }, "title": "repeated enum value. it is comma-separated in query" }, - "repeated_enum_value_annotation": { + "repeated_enum_annotation": { "type": "array", "items": { "$ref": "#/definitions/examplepbNumericEnum" diff --git a/examples/proto/examplepb/stream.swagger.json b/examples/proto/examplepb/stream.swagger.json index 581ae1fd2f1..4418cbb5ce3 100644 --- a/examples/proto/examplepb/stream.swagger.json +++ b/examples/proto/examplepb/stream.swagger.json @@ -261,7 +261,7 @@ }, "title": "repeated enum value. it is comma-separated in query" }, - "repeated_enum_value_annotation": { + "repeated_enum_annotation": { "type": "array", "items": { "$ref": "#/definitions/examplepbNumericEnum" From 9c1703371cc9428debaa86b8602b436537d4792f Mon Sep 17 00:00:00 2001 From: fahernandez Date: Mon, 11 Feb 2019 17:47:00 -0600 Subject: [PATCH 3/9] 863 fixing swagger generation test --- .../abe/a_bit_of_everything_service_api.go | 8 +- examples/clients/echo/api_client.go | 2 +- examples/clients/echo/api_response.go | 2 +- examples/clients/echo/configuration.go | 2 +- examples/clients/echo/echo_service_api.go | 2 +- examples/clients/echo/examplepb_embedded.go | 2 +- .../clients/echo/examplepb_simple_message.go | 2 +- examples/integration/client_test.go | 2 + examples/integration/integration_test.go | 49 +- .../proto/examplepb/a_bit_of_everything.pb.go | 433 +++++++++--------- .../examplepb/a_bit_of_everything.pb.gw.go | 33 +- .../proto/examplepb/a_bit_of_everything.proto | 2 +- .../a_bit_of_everything.swagger.json | 30 +- protoc-gen-swagger/genswagger/template.go | 2 +- runtime/marshal_jsonpb_test.go | 10 + 15 files changed, 289 insertions(+), 292 deletions(-) diff --git a/examples/clients/abe/a_bit_of_everything_service_api.go b/examples/clients/abe/a_bit_of_everything_service_api.go index de167d3cd16..5cbf25f0071 100644 --- a/examples/clients/abe/a_bit_of_everything_service_api.go +++ b/examples/clients/abe/a_bit_of_everything_service_api.go @@ -60,16 +60,14 @@ func NewABitOfEverythingServiceApiWithBasePath(basePath string) *ABitOfEverythin * @param enumValue * @param pathEnumValue * @param nestedPathEnumValue - * @param repeatedEnumValue repeated enum value. it is comma-separated in query * @param enumValueAnnotation Numeric enum description. - * @param repeatedStringAnnotation Repeated string description. * @return *ExamplepbABitOfEverything */ -func (a ABitOfEverythingServiceApi) Create(floatValue float32, doubleValue float64, int64Value string, uint64Value string, int32Value int32, fixed64Value string, fixed32Value int64, boolValue bool, stringValue string, uint32Value int64, sfixed32Value int32, sfixed64Value string, sint32Value int32, sint64Value string, nonConventionalNameValue string, enumValue string, pathEnumValue string, nestedPathEnumValue string, repeatedEnumValue []string, enumValueAnnotation string, repeatedStringAnnotation []string) (*ExamplepbABitOfEverything, *APIResponse, error) { +func (a ABitOfEverythingServiceApi) Create(floatValue float32, doubleValue float64, int64Value string, uint64Value string, int32Value int32, fixed64Value string, fixed32Value int64, boolValue bool, stringValue string, uint32Value int64, sfixed32Value int32, sfixed64Value string, sint32Value int32, sint64Value string, nonConventionalNameValue string, enumValue string, pathEnumValue string, nestedPathEnumValue string, enumValueAnnotation string) (*ExamplepbABitOfEverything, *APIResponse, error) { var localVarHttpMethod = strings.ToUpper("Post") // create path and map variables - localVarPath := a.Configuration.BasePath + "/v1/example/a_bit_of_everything/{float_value}/{double_value}/{int64_value}/separator/{uint64_value}/{int32_value}/{fixed64_value}/{fixed32_value}/{bool_value}/{string_value}/{uint32_value}/{sfixed32_value}/{sfixed64_value}/{sint32_value}/{sint64_value}/{nonConventionalNameValue}/{enum_value}/{path_enum_value}/{nested_path_enum_value}/{repeated_enum_value}/{enum_value_annotation}/{repeated_string_annotation}" + localVarPath := a.Configuration.BasePath + "/v1/example/a_bit_of_everything/{float_value}/{double_value}/{int64_value}/separator/{uint64_value}/{int32_value}/{fixed64_value}/{fixed32_value}/{bool_value}/{string_value}/{uint32_value}/{sfixed32_value}/{sfixed64_value}/{sint32_value}/{sint64_value}/{nonConventionalNameValue}/{enum_value}/{path_enum_value}/{nested_path_enum_value}/{enum_value_annotation}" localVarPath = strings.Replace(localVarPath, "{"+"float_value"+"}", fmt.Sprintf("%v", floatValue), -1) localVarPath = strings.Replace(localVarPath, "{"+"double_value"+"}", fmt.Sprintf("%v", doubleValue), -1) localVarPath = strings.Replace(localVarPath, "{"+"int64_value"+"}", fmt.Sprintf("%v", int64Value), -1) @@ -88,9 +86,7 @@ func (a ABitOfEverythingServiceApi) Create(floatValue float32, doubleValue float localVarPath = strings.Replace(localVarPath, "{"+"enum_value"+"}", fmt.Sprintf("%v", enumValue), -1) localVarPath = strings.Replace(localVarPath, "{"+"path_enum_value"+"}", fmt.Sprintf("%v", pathEnumValue), -1) localVarPath = strings.Replace(localVarPath, "{"+"nested_path_enum_value"+"}", fmt.Sprintf("%v", nestedPathEnumValue), -1) - localVarPath = strings.Replace(localVarPath, "{"+"repeated_enum_value"+"}", fmt.Sprintf("%v", repeatedEnumValue), -1) localVarPath = strings.Replace(localVarPath, "{"+"enum_value_annotation"+"}", fmt.Sprintf("%v", enumValueAnnotation), -1) - localVarPath = strings.Replace(localVarPath, "{"+"repeated_string_annotation"+"}", fmt.Sprintf("%v", repeatedStringAnnotation), -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := url.Values{} diff --git a/examples/clients/echo/api_client.go b/examples/clients/echo/api_client.go index d54e3e68565..7a517148026 100644 --- a/examples/clients/echo/api_client.go +++ b/examples/clients/echo/api_client.go @@ -1,5 +1,5 @@ /* - * examples/proto/examplepb/echo_service.proto + * Echo Service * * Echo Service API consists of a single service which returns a message. * diff --git a/examples/clients/echo/api_response.go b/examples/clients/echo/api_response.go index a4f0ab08001..8b0d07c4a13 100644 --- a/examples/clients/echo/api_response.go +++ b/examples/clients/echo/api_response.go @@ -1,5 +1,5 @@ /* - * examples/proto/examplepb/echo_service.proto + * Echo Service * * Echo Service API consists of a single service which returns a message. * diff --git a/examples/clients/echo/configuration.go b/examples/clients/echo/configuration.go index 6441b8dc698..9a75a30aeec 100644 --- a/examples/clients/echo/configuration.go +++ b/examples/clients/echo/configuration.go @@ -1,5 +1,5 @@ /* - * examples/proto/examplepb/echo_service.proto + * Echo Service * * Echo Service API consists of a single service which returns a message. * diff --git a/examples/clients/echo/echo_service_api.go b/examples/clients/echo/echo_service_api.go index 7625bc9eec8..6ae7cf85a32 100644 --- a/examples/clients/echo/echo_service_api.go +++ b/examples/clients/echo/echo_service_api.go @@ -1,5 +1,5 @@ /* - * examples/proto/examplepb/echo_service.proto + * Echo Service * * Echo Service API consists of a single service which returns a message. * diff --git a/examples/clients/echo/examplepb_embedded.go b/examples/clients/echo/examplepb_embedded.go index ad76336c25b..4b5fe265ac9 100644 --- a/examples/clients/echo/examplepb_embedded.go +++ b/examples/clients/echo/examplepb_embedded.go @@ -1,5 +1,5 @@ /* - * examples/proto/examplepb/echo_service.proto + * Echo Service * * Echo Service API consists of a single service which returns a message. * diff --git a/examples/clients/echo/examplepb_simple_message.go b/examples/clients/echo/examplepb_simple_message.go index 2b9b366e57e..366a6876665 100644 --- a/examples/clients/echo/examplepb_simple_message.go +++ b/examples/clients/echo/examplepb_simple_message.go @@ -1,5 +1,5 @@ /* - * examples/proto/examplepb/echo_service.proto + * Echo Service * * Echo Service API consists of a single service which returns a message. * diff --git a/examples/integration/client_test.go b/examples/integration/client_test.go index bbcfed59cb2..90431625380 100644 --- a/examples/integration/client_test.go +++ b/examples/integration/client_test.go @@ -76,6 +76,7 @@ func testABEClientCreate(t *testing.T, cl *abe.ABitOfEverythingServiceApi) { EnumValue: abe.ExamplepbNumericEnum{}, PathEnumValue: abe.PathenumPathEnum{}, NestedPathEnumValue: abe.MessagePathEnumNestedPathEnum{}, + EnumValueAnnotation: abe.ExamplepbNumericEnum{}, } resp, _, err := cl.Create( want.FloatValue, @@ -96,6 +97,7 @@ func testABEClientCreate(t *testing.T, cl *abe.ABitOfEverythingServiceApi) { want.EnumValue.String(), want.PathEnumValue.String(), want.NestedPathEnumValue.String(), + want.EnumValueAnnotation.String(), ) if err != nil { t.Errorf("cl.Create(%#v) failed with %v; want success", want, err) diff --git a/examples/integration/integration_test.go b/examples/integration/integration_test.go index b0e8926a82c..fd1a3655a9a 100644 --- a/examples/integration/integration_test.go +++ b/examples/integration/integration_test.go @@ -291,8 +291,9 @@ func testABECreate(t *testing.T, port int) { EnumValue: gw.NumericEnum_ZERO, PathEnumValue: pathenum.PathEnum_DEF, NestedPathEnumValue: pathenum.MessagePathEnum_JKL, + EnumValueAnnotation: gw.NumericEnum_ONE, } - url := fmt.Sprintf("http://localhost:%d/v1/example/a_bit_of_everything/%f/%f/%d/separator/%d/%d/%d/%d/%v/%s/%d/%d/%d/%d/%d/%s/%s/%s/%s", port, want.FloatValue, want.DoubleValue, want.Int64Value, want.Uint64Value, want.Int32Value, want.Fixed64Value, want.Fixed32Value, want.BoolValue, want.StringValue, want.Uint32Value, want.Sfixed32Value, want.Sfixed64Value, want.Sint32Value, want.Sint64Value, want.NonConventionalNameValue, want.EnumValue, want.PathEnumValue, want.NestedPathEnumValue) + url := fmt.Sprintf("http://localhost:%d/v1/example/a_bit_of_everything/%f/%f/%d/separator/%d/%d/%d/%d/%v/%s/%d/%d/%d/%d/%d/%s/%s/%s/%s/%s", port, want.FloatValue, want.DoubleValue, want.Int64Value, want.Uint64Value, want.Int32Value, want.Fixed64Value, want.Fixed32Value, want.BoolValue, want.StringValue, want.Uint32Value, want.Sfixed32Value, want.Sfixed64Value, want.Sint32Value, want.Sint64Value, want.NonConventionalNameValue, want.EnumValue, want.PathEnumValue, want.NestedPathEnumValue, want.EnumValueAnnotation) resp, err := http.Post(url, "application/json", strings.NewReader("{}")) if err != nil { @@ -372,6 +373,29 @@ func testABECreateBody(t *testing.T, port int) { "a": {Name: "x", Amount: 1}, "b": {Name: "y", Amount: 2}, }, + RepeatedEnumAnnotation: []gw.NumericEnum{ + gw.NumericEnum_ONE, + gw.NumericEnum_ZERO, + }, + EnumValueAnnotation: gw.NumericEnum_ONE, + RepeatedStringAnnotation: []string{ + "a", + "b", + }, + RepeatedNestedAnnotation: []*gw.ABitOfEverything_Nested{ + { + Name: "hoge", + Amount: 10, + }, + { + Name: "fuga", + Amount: 20, + }, + }, + NestedAnnotation: &gw.ABitOfEverything_Nested{ + Name: "hoge", + Amount: 10, + }, } url := fmt.Sprintf("http://localhost:%d/v1/example/a_bit_of_everything", port) var m jsonpb.Marshaler @@ -453,6 +477,29 @@ func testABEBulkCreate(t *testing.T, port int) { Amount: 20, }, }, + RepeatedEnumAnnotation: []gw.NumericEnum{ + gw.NumericEnum_ONE, + gw.NumericEnum_ZERO, + }, + EnumValueAnnotation: gw.NumericEnum_ONE, + RepeatedStringAnnotation: []string{ + "a", + "b", + }, + RepeatedNestedAnnotation: []*gw.ABitOfEverything_Nested{ + { + Name: "hoge", + Amount: 10, + }, + { + Name: "fuga", + Amount: 20, + }, + }, + NestedAnnotation: &gw.ABitOfEverything_Nested{ + Name: "hoge", + Amount: 10, + }, } var m jsonpb.Marshaler if err := m.Marshal(w, &want); err != nil { diff --git a/examples/proto/examplepb/a_bit_of_everything.pb.go b/examples/proto/examplepb/a_bit_of_everything.pb.go index 2e0ace34871..4aee105fdf8 100644 --- a/examples/proto/examplepb/a_bit_of_everything.pb.go +++ b/examples/proto/examplepb/a_bit_of_everything.pb.go @@ -55,7 +55,7 @@ func (x NumericEnum) String() string { return proto.EnumName(NumericEnum_name, int32(x)) } func (NumericEnum) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_a_bit_of_everything_68327cc2832b2df4, []int{0} + return fileDescriptor_a_bit_of_everything_13e92efa8be5f8b3, []int{0} } // DeepEnum is one or zero. @@ -81,7 +81,7 @@ func (x ABitOfEverything_Nested_DeepEnum) String() string { return proto.EnumName(ABitOfEverything_Nested_DeepEnum_name, int32(x)) } func (ABitOfEverything_Nested_DeepEnum) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_a_bit_of_everything_68327cc2832b2df4, []int{0, 0, 0} + return fileDescriptor_a_bit_of_everything_13e92efa8be5f8b3, []int{0, 0, 0} } // Intentionaly complicated message type to cover many features of Protobuf. @@ -139,7 +139,7 @@ func (m *ABitOfEverything) Reset() { *m = ABitOfEverything{} } func (m *ABitOfEverything) String() string { return proto.CompactTextString(m) } func (*ABitOfEverything) ProtoMessage() {} func (*ABitOfEverything) Descriptor() ([]byte, []int) { - return fileDescriptor_a_bit_of_everything_68327cc2832b2df4, []int{0} + return fileDescriptor_a_bit_of_everything_13e92efa8be5f8b3, []int{0} } func (m *ABitOfEverything) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ABitOfEverything.Unmarshal(m, b) @@ -512,7 +512,7 @@ func (m *ABitOfEverything_Nested) Reset() { *m = ABitOfEverything_Nested func (m *ABitOfEverything_Nested) String() string { return proto.CompactTextString(m) } func (*ABitOfEverything_Nested) ProtoMessage() {} func (*ABitOfEverything_Nested) Descriptor() ([]byte, []int) { - return fileDescriptor_a_bit_of_everything_68327cc2832b2df4, []int{0, 0} + return fileDescriptor_a_bit_of_everything_13e92efa8be5f8b3, []int{0, 0} } func (m *ABitOfEverything_Nested) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ABitOfEverything_Nested.Unmarshal(m, b) @@ -581,7 +581,7 @@ func (m *ABitOfEverythingRepeated) Reset() { *m = ABitOfEverythingRepeat func (m *ABitOfEverythingRepeated) String() string { return proto.CompactTextString(m) } func (*ABitOfEverythingRepeated) ProtoMessage() {} func (*ABitOfEverythingRepeated) Descriptor() ([]byte, []int) { - return fileDescriptor_a_bit_of_everything_68327cc2832b2df4, []int{1} + return fileDescriptor_a_bit_of_everything_13e92efa8be5f8b3, []int{1} } func (m *ABitOfEverythingRepeated) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ABitOfEverythingRepeated.Unmarshal(m, b) @@ -724,7 +724,7 @@ func (m *Body) Reset() { *m = Body{} } func (m *Body) String() string { return proto.CompactTextString(m) } func (*Body) ProtoMessage() {} func (*Body) Descriptor() ([]byte, []int) { - return fileDescriptor_a_bit_of_everything_68327cc2832b2df4, []int{2} + return fileDescriptor_a_bit_of_everything_13e92efa8be5f8b3, []int{2} } func (m *Body) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Body.Unmarshal(m, b) @@ -763,7 +763,7 @@ func (m *MessageWithBody) Reset() { *m = MessageWithBody{} } func (m *MessageWithBody) String() string { return proto.CompactTextString(m) } func (*MessageWithBody) ProtoMessage() {} func (*MessageWithBody) Descriptor() ([]byte, []int) { - return fileDescriptor_a_bit_of_everything_68327cc2832b2df4, []int{3} + return fileDescriptor_a_bit_of_everything_13e92efa8be5f8b3, []int{3} } func (m *MessageWithBody) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MessageWithBody.Unmarshal(m, b) @@ -810,7 +810,7 @@ func (m *UpdateV2Request) Reset() { *m = UpdateV2Request{} } func (m *UpdateV2Request) String() string { return proto.CompactTextString(m) } func (*UpdateV2Request) ProtoMessage() {} func (*UpdateV2Request) Descriptor() ([]byte, []int) { - return fileDescriptor_a_bit_of_everything_68327cc2832b2df4, []int{4} + return fileDescriptor_a_bit_of_everything_13e92efa8be5f8b3, []int{4} } func (m *UpdateV2Request) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UpdateV2Request.Unmarshal(m, b) @@ -1574,213 +1574,212 @@ var _AnotherServiceWithNoBindings_serviceDesc = grpc.ServiceDesc{ } func init() { - proto.RegisterFile("examples/proto/examplepb/a_bit_of_everything.proto", fileDescriptor_a_bit_of_everything_68327cc2832b2df4) -} - -var fileDescriptor_a_bit_of_everything_68327cc2832b2df4 = []byte{ - // 3251 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x59, 0xcb, 0x6f, 0x1b, 0x47, - 0x9a, 0x57, 0xb3, 0xa9, 0x57, 0xe9, 0x45, 0x95, 0x6c, 0x99, 0xa2, 0xe5, 0xa8, 0x4c, 0x3b, 0x49, - 0x9b, 0x31, 0xd9, 0x52, 0x4b, 0x76, 0x64, 0x06, 0x89, 0x97, 0xd4, 0xc3, 0x56, 0x6c, 0xcb, 0x72, - 0xdb, 0xf1, 0x06, 0x8e, 0x1d, 0xa1, 0x49, 0x16, 0xc5, 0xb6, 0xd8, 0x5d, 0x9d, 0xee, 0x6a, 0xd9, - 0x5c, 0x2e, 0x77, 0xb3, 0x0f, 0xec, 0x62, 0x37, 0x87, 0x05, 0x94, 0xdd, 0xc3, 0x3e, 0xb0, 0xc0, - 0x02, 0x8b, 0x05, 0x16, 0xc8, 0x61, 0x2e, 0x73, 0x0a, 0x30, 0x8f, 0xc3, 0x9c, 0xe6, 0xe6, 0x19, - 0xcc, 0x3f, 0x30, 0x73, 0x98, 0xbf, 0x60, 0x80, 0xc1, 0x00, 0x83, 0x41, 0x57, 0x77, 0x93, 0xdd, - 0x4d, 0xd2, 0x32, 0xed, 0x20, 0x17, 0xa9, 0xab, 0xea, 0xfb, 0xbe, 0xdf, 0x57, 0x5f, 0x7d, 0xf5, - 0x3d, 0x8a, 0x40, 0xc2, 0xcf, 0x15, 0xcd, 0xa8, 0x63, 0x4b, 0x34, 0x4c, 0x42, 0x89, 0xe8, 0x0d, - 0x8d, 0x92, 0xa8, 0xec, 0x97, 0x54, 0xba, 0x4f, 0xaa, 0xfb, 0xf8, 0x08, 0x9b, 0x0d, 0x5a, 0x53, - 0xf5, 0x83, 0x1c, 0xa3, 0x81, 0x4b, 0x07, 0xa6, 0x51, 0xce, 0x1d, 0x28, 0x14, 0x3f, 0x53, 0x1a, - 0x39, 0x5f, 0x40, 0xae, 0xcd, 0x9a, 0x5a, 0x3c, 0x20, 0xe4, 0xa0, 0x8e, 0x45, 0xc5, 0x50, 0x45, - 0x45, 0xd7, 0x09, 0x55, 0xa8, 0x4a, 0x74, 0xcb, 0x65, 0x4f, 0x21, 0x6f, 0x95, 0x8d, 0x4a, 0x76, - 0x55, 0xac, 0xaa, 0xb8, 0x5e, 0xd9, 0xd7, 0x14, 0xeb, 0xd0, 0xa3, 0x38, 0x1b, 0xa5, 0xc0, 0x9a, - 0x41, 0x1b, 0xde, 0xe2, 0x5b, 0xd1, 0xc5, 0x8a, 0x6d, 0x32, 0xf9, 0xde, 0xfa, 0xbb, 0x91, 0x1d, - 0x19, 0x0a, 0xad, 0x61, 0xdd, 0xd6, 0xd8, 0xc7, 0xbe, 0xf3, 0xe5, 0xeb, 0x11, 0x21, 0xb4, 0xec, - 0x92, 0xa8, 0x61, 0xcb, 0x52, 0x0e, 0xb0, 0x47, 0x71, 0xbe, 0x9b, 0x42, 0x8a, 0x90, 0x2c, 0x45, - 0xb5, 0xa1, 0xaa, 0x86, 0x2d, 0xaa, 0x68, 0x86, 0x47, 0x70, 0x99, 0xfd, 0x2b, 0x67, 0x0f, 0xb0, - 0x9e, 0xb5, 0x9e, 0x29, 0x07, 0x07, 0xd8, 0x14, 0x89, 0xc1, 0xec, 0xd1, 0x6d, 0x9b, 0xf4, 0x1f, - 0x52, 0x20, 0x51, 0x28, 0xaa, 0xf4, 0x6e, 0x75, 0xab, 0x6d, 0x75, 0xf8, 0x04, 0x4c, 0x59, 0xaa, - 0x7e, 0x50, 0xc7, 0xfb, 0x3a, 0xb6, 0x28, 0xae, 0x24, 0x17, 0x10, 0x27, 0x4c, 0x48, 0xeb, 0xb9, - 0x13, 0xce, 0x21, 0x17, 0x95, 0x94, 0xdb, 0x65, 0xfc, 0xf2, 0xa4, 0x2b, 0xce, 0x1d, 0xc1, 0x1a, - 0x88, 0xdb, 0xb6, 0x5a, 0x49, 0x72, 0x88, 0x13, 0xc6, 0x8b, 0x0f, 0x8e, 0x0b, 0xf7, 0xbe, 0xe4, - 0xb8, 0x7f, 0xe6, 0x6e, 0x7d, 0xa6, 0x64, 0xab, 0x85, 0xec, 0xf6, 0x72, 0xf6, 0xda, 0x93, 0xe6, - 0x7a, 0x2b, 0x1b, 0x1c, 0xae, 0x0d, 0x32, 0x5c, 0x91, 0x5a, 0x32, 0x43, 0x80, 0x7b, 0x60, 0xc4, - 0xdb, 0x41, 0x0c, 0xf1, 0x6f, 0xb4, 0x03, 0x4f, 0x0e, 0xfc, 0x18, 0x4c, 0x54, 0xeb, 0x44, 0xa1, - 0xfb, 0x47, 0x4a, 0xdd, 0xc6, 0x49, 0x1e, 0x71, 0x42, 0xac, 0x78, 0xe9, 0xb8, 0xf0, 0x8e, 0x34, - 0xbb, 0xed, 0xcc, 0x23, 0x36, 0x8f, 0x98, 0x87, 0xe5, 0xf9, 0xe5, 0x9c, 0xf4, 0x82, 0x0b, 0x32, - 0xc8, 0x80, 0x0d, 0x1e, 0x3a, 0xdf, 0xf0, 0x3c, 0x98, 0xac, 0x10, 0xbb, 0x54, 0xc7, 0x9e, 0xb0, - 0x38, 0xe2, 0x04, 0x4e, 0x9e, 0x70, 0xe7, 0x5c, 0x92, 0x25, 0x30, 0xa1, 0xea, 0xf4, 0xea, 0x9a, - 0x47, 0x31, 0x8c, 0x38, 0x81, 0x97, 0x01, 0x9b, 0x6a, 0xcb, 0xb0, 0x83, 0x14, 0x23, 0x88, 0x13, - 0xe2, 0xf2, 0x84, 0x1d, 0x20, 0x71, 0x65, 0xac, 0x4a, 0x1e, 0xc5, 0x28, 0xe2, 0x84, 0x61, 0x26, - 0x63, 0x55, 0x72, 0x09, 0x2e, 0x80, 0xa9, 0xaa, 0xfa, 0x1c, 0x57, 0xda, 0x42, 0xc6, 0x10, 0x27, - 0x8c, 0xc8, 0x93, 0xde, 0x64, 0x98, 0xa8, 0x2d, 0x67, 0x1c, 0x71, 0xc2, 0xa8, 0x47, 0xe4, 0x4b, - 0x3a, 0x07, 0x40, 0x89, 0x90, 0xba, 0x47, 0x01, 0x10, 0x27, 0x8c, 0xc9, 0xe3, 0xce, 0x4c, 0x5b, - 0x59, 0x8b, 0x9a, 0xaa, 0x7e, 0xe0, 0x11, 0x4c, 0x38, 0x0e, 0x20, 0x4f, 0xb8, 0x73, 0x6d, 0x65, - 0x4b, 0x0d, 0x8a, 0x2d, 0x8f, 0xe2, 0x1c, 0xe2, 0x84, 0x49, 0x19, 0xb0, 0xa9, 0xd0, 0x86, 0xdb, - 0x6a, 0x4c, 0x21, 0x4e, 0x98, 0x72, 0x37, 0xec, 0x6b, 0x71, 0x0b, 0x00, 0xe7, 0xd6, 0x79, 0x04, - 0xd3, 0x88, 0x13, 0xa6, 0xa5, 0xcb, 0x27, 0x9e, 0xfc, 0xae, 0xad, 0x61, 0x53, 0x2d, 0x6f, 0xe9, - 0xb6, 0x26, 0x8f, 0x3b, 0xfc, 0xae, 0xb0, 0x3d, 0x30, 0xd3, 0xbe, 0xc7, 0x9e, 0xc4, 0xb7, 0x98, - 0x44, 0xa1, 0x8f, 0x44, 0xff, 0xfa, 0xe7, 0xf6, 0x14, 0x5a, 0x63, 0xd2, 0xa6, 0x0c, 0xef, 0xcb, - 0x95, 0x68, 0x81, 0x79, 0xd7, 0x99, 0xf6, 0xa3, 0x82, 0x97, 0x98, 0xe0, 0x8f, 0x4e, 0x12, 0x7c, - 0xc7, 0x0d, 0x08, 0xbe, 0x7c, 0xcf, 0x45, 0xdb, 0x70, 0x73, 0x7a, 0x68, 0xec, 0x82, 0xbe, 0x0d, - 0xa6, 0xad, 0xf0, 0xf9, 0xcd, 0x20, 0x4e, 0x98, 0x91, 0xa7, 0xac, 0xd0, 0x01, 0xb6, 0xc9, 0xda, - 0xbe, 0x90, 0x40, 0x9c, 0x90, 0xf0, 0xc9, 0x02, 0x5e, 0x67, 0x05, 0x0f, 0x61, 0x16, 0x71, 0xc2, - 0xac, 0x3c, 0x61, 0x05, 0x0e, 0xc1, 0x23, 0x69, 0xcb, 0x81, 0x88, 0x13, 0xa0, 0x4b, 0xe2, 0x4b, - 0x91, 0xc0, 0x69, 0x13, 0x1b, 0x58, 0x71, 0x4c, 0x11, 0xf2, 0x8b, 0x39, 0xc4, 0x0b, 0xe3, 0xf2, - 0x9c, 0xbf, 0x78, 0x3f, 0xe0, 0x1f, 0xd7, 0xc0, 0x04, 0xd1, 0xb1, 0x93, 0x24, 0x9c, 0x08, 0x9d, - 0x3c, 0xc5, 0x02, 0xd3, 0x7c, 0xce, 0x0d, 0x8a, 0x39, 0x3f, 0x28, 0xe6, 0xb6, 0x9c, 0xd5, 0x9b, - 0x43, 0x32, 0x60, 0xc4, 0x6c, 0x04, 0x2f, 0x80, 0x49, 0x97, 0xd5, 0xc5, 0x4a, 0x9e, 0x76, 0xbc, - 0xef, 0xe6, 0x90, 0xec, 0x0a, 0x74, 0x41, 0xe0, 0x63, 0x30, 0xae, 0x29, 0x86, 0xa7, 0xc7, 0x3c, - 0x0b, 0x1a, 0xd7, 0x07, 0x0f, 0x1a, 0x77, 0x14, 0x83, 0xa9, 0xbb, 0xa5, 0x53, 0xb3, 0x21, 0x8f, - 0x69, 0xde, 0x10, 0x3e, 0x07, 0x73, 0x9a, 0x62, 0x18, 0xd1, 0xfd, 0x9e, 0x61, 0x38, 0x37, 0x5f, - 0x0b, 0xc7, 0x08, 0xd9, 0xc7, 0x05, 0x9c, 0xd5, 0xa2, 0xf3, 0x01, 0x64, 0xcf, 0xf7, 0x5c, 0xe4, - 0xe4, 0x9b, 0x21, 0xbb, 0x9e, 0xd7, 0x8d, 0x1c, 0x98, 0x87, 0x79, 0x90, 0xd4, 0x89, 0xbe, 0x41, - 0xf4, 0x23, 0xac, 0x3b, 0x99, 0x47, 0xa9, 0xef, 0x2a, 0x9a, 0x1b, 0xde, 0x92, 0x29, 0x16, 0x00, - 0xfa, 0xae, 0xc3, 0x0d, 0x30, 0xd3, 0x4e, 0x6f, 0x9e, 0xc6, 0x67, 0xd9, 0x89, 0xa7, 0xba, 0x4e, - 0xfc, 0x81, 0x4f, 0x27, 0x4f, 0xb7, 0x59, 0x5c, 0x21, 0x8f, 0x41, 0xdb, 0x93, 0x82, 0x97, 0x6d, - 0x11, 0xf1, 0x03, 0xc7, 0x85, 0x59, 0x5f, 0x50, 0xe7, 0x62, 0x7d, 0xc3, 0x81, 0x64, 0x58, 0x7c, - 0x27, 0xc9, 0x26, 0xd1, 0xe0, 0x18, 0xc5, 0xcd, 0xe3, 0x42, 0x21, 0x73, 0x56, 0xf6, 0x44, 0x22, - 0xdd, 0x5d, 0x42, 0x8e, 0x68, 0x44, 0x55, 0x5a, 0xc7, 0x52, 0xba, 0xf7, 0x62, 0x05, 0x5b, 0x65, - 0x53, 0x65, 0x99, 0x3e, 0x27, 0xcf, 0x07, 0x35, 0x2d, 0xb4, 0x35, 0x82, 0xff, 0xca, 0x81, 0xd3, - 0x1d, 0x23, 0x04, 0x75, 0x3d, 0x3f, 0x78, 0x9c, 0x2c, 0x4a, 0xc7, 0x05, 0x31, 0x03, 0x77, 0xbb, - 0x55, 0x5c, 0xd8, 0xed, 0xab, 0xd9, 0x5c, 0x3b, 0xb6, 0x06, 0xd4, 0x3a, 0x02, 0xa9, 0x68, 0x28, - 0x08, 0xa8, 0x96, 0x76, 0xe2, 0x41, 0x71, 0xfd, 0xb8, 0x70, 0x25, 0x73, 0xba, 0xbd, 0x77, 0x97, - 0xcc, 0xc3, 0x5b, 0x8c, 0x4e, 0x87, 0x20, 0x93, 0xe1, 0x48, 0x12, 0xc0, 0xfd, 0x11, 0x17, 0x00, - 0xf6, 0x6e, 0x46, 0x00, 0xf8, 0xc2, 0x9b, 0x55, 0x0d, 0xc5, 0xed, 0xe3, 0xc2, 0x46, 0xa6, 0xa3, - 0x9b, 0x0b, 0x80, 0x48, 0xe9, 0x29, 0x2e, 0x53, 0x4f, 0xf3, 0x0b, 0x7d, 0x56, 0x7b, 0x6f, 0xc0, - 0x95, 0x1b, 0xd8, 0xc0, 0x7f, 0x72, 0x60, 0xb6, 0x5b, 0xef, 0x8b, 0x6f, 0x56, 0xaf, 0x15, 0xd7, - 0x8e, 0x0b, 0x2b, 0x99, 0xb9, 0xdd, 0x1e, 0xea, 0xa6, 0x76, 0xfb, 0x6b, 0x99, 0xd0, 0x23, 0xda, - 0xa5, 0x7e, 0xca, 0x81, 0x11, 0xaf, 0xe8, 0x83, 0x20, 0xae, 0x2b, 0x1a, 0x76, 0x8b, 0x3e, 0x99, - 0x7d, 0xc3, 0x79, 0x30, 0xa2, 0x68, 0xc4, 0xd6, 0x69, 0x32, 0xc6, 0xb2, 0xb8, 0x37, 0x82, 0xf7, - 0x40, 0x8c, 0x1c, 0xb2, 0xda, 0x6a, 0x5a, 0x2a, 0xbc, 0xee, 0x26, 0x72, 0x9b, 0x18, 0x1b, 0xec, - 0xd6, 0xc6, 0xc8, 0x61, 0x7a, 0x09, 0x8c, 0xf9, 0x63, 0x38, 0x0e, 0x86, 0xb7, 0x0b, 0xb7, 0xef, - 0x6f, 0x25, 0x86, 0xe0, 0x18, 0x88, 0x3f, 0x90, 0x3f, 0xd9, 0x4a, 0x70, 0xf9, 0x33, 0xc7, 0x85, - 0x53, 0x12, 0x84, 0x89, 0x26, 0x4a, 0x93, 0xc3, 0x74, 0x1e, 0xa5, 0x9d, 0xf9, 0x34, 0x6a, 0xa5, - 0x54, 0x30, 0x15, 0x0a, 0xe7, 0x30, 0x01, 0xf8, 0x43, 0xdc, 0xf0, 0x36, 0xe2, 0x7c, 0xc2, 0x22, - 0x18, 0x76, 0x63, 0x4a, 0xec, 0x35, 0x6a, 0x0d, 0x97, 0x35, 0x1f, 0x5b, 0xe7, 0x52, 0x9b, 0x60, - 0xbe, 0x77, 0x44, 0xef, 0x81, 0x79, 0x2a, 0x88, 0x39, 0x1e, 0x94, 0xf2, 0x57, 0xbe, 0x94, 0x68, - 0x74, 0xee, 0x21, 0x65, 0x37, 0x28, 0xe5, 0x4d, 0xea, 0xe3, 0x0e, 0x7e, 0xfe, 0xdf, 0x63, 0xc7, - 0x85, 0x7f, 0x8b, 0x81, 0xbf, 0xe7, 0x32, 0x73, 0x05, 0x54, 0x52, 0x29, 0x22, 0x55, 0xd4, 0x69, - 0xe9, 0xa4, 0x9d, 0x1d, 0x9d, 0xfa, 0x91, 0xbe, 0x81, 0xca, 0x44, 0x33, 0xea, 0x6a, 0x99, 0x5d, - 0x00, 0xaf, 0xd1, 0x41, 0xb4, 0x61, 0x60, 0x44, 0x09, 0x2a, 0x93, 0x23, 0x6c, 0x22, 0x4d, 0xd1, - 0x1b, 0xa8, 0x8a, 0x15, 0x6a, 0x9b, 0xd8, 0x72, 0x64, 0xed, 0xf9, 0x21, 0xff, 0x05, 0xc7, 0xaa, - 0xfc, 0x17, 0x5c, 0xb0, 0x46, 0x7e, 0xc1, 0x85, 0x8a, 0xea, 0xcc, 0x43, 0x70, 0x71, 0x5b, 0xd5, - 0x2b, 0x88, 0xd8, 0x14, 0x69, 0xc4, 0xc4, 0x48, 0x29, 0x39, 0x9f, 0x5d, 0x3d, 0x4f, 0xae, 0x46, - 0xa9, 0x61, 0xe5, 0x45, 0xf1, 0x40, 0xa5, 0x35, 0xbb, 0x94, 0x2b, 0x13, 0x4d, 0x74, 0x8c, 0x91, - 0xc5, 0x65, 0x62, 0x35, 0x2c, 0x8a, 0xbd, 0xa1, 0x67, 0x1b, 0x69, 0x0d, 0x4a, 0x4d, 0x94, 0x76, - 0xf0, 0x1d, 0x67, 0x59, 0x2e, 0x57, 0x57, 0xaf, 0xae, 0xe0, 0x95, 0xec, 0x5a, 0x69, 0x6d, 0x2d, - 0xbb, 0xb6, 0xbe, 0x5a, 0xc9, 0x2a, 0x2b, 0x57, 0xae, 0x65, 0xaf, 0xac, 0x55, 0x94, 0x52, 0xa5, - 0xfa, 0x3e, 0x5e, 0x5f, 0x59, 0x4b, 0xa3, 0x56, 0x71, 0xca, 0x2f, 0x5f, 0x98, 0x72, 0xe9, 0x3f, - 0x8e, 0x81, 0x64, 0x54, 0x13, 0x3f, 0x1e, 0xc0, 0x6b, 0x60, 0x81, 0x15, 0x88, 0xed, 0xf8, 0x14, - 0x6c, 0x3c, 0x38, 0xc4, 0x0b, 0x31, 0x79, 0xde, 0x21, 0xf0, 0x19, 0xb6, 0x3b, 0x9d, 0xc5, 0x07, - 0x20, 0x15, 0x66, 0x0d, 0xf5, 0x19, 0x4e, 0x2f, 0xc4, 0xc9, 0x67, 0x82, 0xbc, 0x9b, 0x81, 0x9e, - 0xa3, 0x0b, 0x37, 0x58, 0xc6, 0xf1, 0x88, 0x17, 0xf8, 0x30, 0xee, 0x4e, 0xa7, 0xa2, 0xeb, 0xc2, - 0x0d, 0xf5, 0x26, 0x71, 0xc4, 0x0b, 0xf1, 0x30, 0xee, 0x27, 0x81, 0x72, 0xb0, 0x17, 0x6e, 0xbb, - 0xc2, 0x1c, 0x46, 0xbc, 0x30, 0xdc, 0x85, 0xeb, 0x17, 0x9b, 0x1f, 0x82, 0xb3, 0x11, 0x53, 0x85, - 0x6a, 0xd8, 0x11, 0xc4, 0x0b, 0x23, 0x72, 0x32, 0x64, 0xac, 0x60, 0x39, 0xdb, 0x9b, 0x3d, 0xd0, - 0x31, 0xf1, 0xc2, 0x68, 0x0f, 0x76, 0x1f, 0xfd, 0x7d, 0x90, 0x0c, 0xb3, 0x07, 0x7a, 0xa0, 0x31, - 0xc4, 0x0b, 0x63, 0xf2, 0xe9, 0x20, 0x6f, 0xb1, 0xdd, 0x0f, 0x75, 0x99, 0x2b, 0x54, 0x15, 0x8e, - 0xb3, 0x2a, 0x38, 0x64, 0xae, 0x70, 0x25, 0x1c, 0x31, 0x57, 0xb0, 0x6f, 0x02, 0x88, 0x17, 0x26, - 0xc3, 0xe6, 0x2a, 0x76, 0x7a, 0xa8, 0x9e, 0xc7, 0xd4, 0xde, 0xee, 0x04, 0xe2, 0x85, 0xa9, 0xee, - 0x63, 0xf2, 0x77, 0x8b, 0xa3, 0xbb, 0x0d, 0xd4, 0x54, 0x93, 0xaf, 0x51, 0x53, 0x85, 0x6c, 0xd3, - 0xa9, 0xab, 0xae, 0x83, 0xc5, 0x88, 0x6d, 0xc2, 0x87, 0x32, 0x85, 0x78, 0x61, 0x46, 0x5e, 0x08, - 0x59, 0x27, 0xd4, 0xca, 0xf4, 0x11, 0xd0, 0x76, 0x8a, 0x69, 0xc4, 0x0b, 0x89, 0x5e, 0x02, 0xfa, - 0x3a, 0x73, 0xa8, 0xe5, 0x99, 0x41, 0xbc, 0x30, 0x1b, 0x39, 0x9d, 0x80, 0x95, 0x7a, 0x32, 0x07, - 0x9a, 0x2a, 0x5e, 0x80, 0xdd, 0xcc, 0x1e, 0x72, 0xbe, 0x76, 0x5c, 0xc0, 0x52, 0x19, 0x2a, 0x4d, - 0x94, 0xee, 0xe7, 0x58, 0xe9, 0x3c, 0xfa, 0x8c, 0x9a, 0x36, 0xbe, 0x8c, 0xdc, 0xbf, 0x55, 0xa5, - 0x6e, 0x79, 0x83, 0x27, 0x97, 0xa3, 0x6c, 0x01, 0xbd, 0x1d, 0xbe, 0x95, 0xcb, 0x48, 0xba, 0x8c, - 0x56, 0x9f, 0xa0, 0x56, 0x3a, 0x05, 0xe2, 0x45, 0x52, 0x69, 0xf4, 0xca, 0xce, 0xe9, 0xc7, 0x60, - 0xc6, 0xeb, 0x34, 0xff, 0x5c, 0xa5, 0x35, 0x46, 0x36, 0x0d, 0x62, 0xfe, 0xbb, 0x8d, 0x1c, 0x53, - 0x9d, 0x10, 0x15, 0xaf, 0x28, 0x54, 0xf1, 0xb2, 0xc7, 0xdb, 0x27, 0x9e, 0xbb, 0x23, 0x44, 0x66, - 0x2c, 0xe9, 0xaf, 0x39, 0x30, 0xf3, 0x89, 0x51, 0x51, 0x28, 0x7e, 0x28, 0xc9, 0xf8, 0x0b, 0x1b, - 0x5b, 0x14, 0x6e, 0x00, 0x5e, 0x29, 0xb9, 0x4a, 0x4c, 0x48, 0x2b, 0x03, 0xe7, 0x22, 0xd9, 0xe1, - 0x86, 0x1f, 0x80, 0x09, 0x9b, 0xc9, 0x65, 0x0f, 0x7c, 0x9e, 0x6a, 0xdd, 0xfd, 0xc2, 0xb6, 0x8a, - 0xeb, 0x95, 0x3b, 0x8a, 0x75, 0x28, 0x03, 0x97, 0xdc, 0xf9, 0xce, 0x20, 0x30, 0x11, 0xf0, 0x4d, - 0xa7, 0x3c, 0x78, 0xb4, 0x25, 0xdf, 0x4d, 0x0c, 0xc1, 0x51, 0xc0, 0xdf, 0xdd, 0xdd, 0x4a, 0x70, - 0xd2, 0xff, 0x9e, 0x03, 0x67, 0xa2, 0xc0, 0xf7, 0xb1, 0x79, 0xa4, 0x96, 0x31, 0xfc, 0x9f, 0x38, - 0x18, 0xd9, 0x30, 0x1d, 0x9b, 0xc3, 0xc1, 0xb5, 0x4f, 0x0d, 0xce, 0x92, 0xfe, 0x01, 0xff, 0xb7, - 0xbf, 0xf8, 0xcd, 0xd7, 0xb1, 0xff, 0xe7, 0xd3, 0xff, 0xc7, 0x8b, 0x47, 0x2b, 0xfe, 0x63, 0x6a, - 0xaf, 0xa7, 0x54, 0xb1, 0x19, 0x48, 0x1f, 0x2d, 0xb1, 0x19, 0xcc, 0x08, 0x2d, 0xb1, 0x19, 0xf0, - 0xce, 0x96, 0x68, 0x61, 0x43, 0x31, 0x15, 0x4a, 0x4c, 0xb1, 0x69, 0x87, 0x16, 0x9a, 0x01, 0x4f, - 0x6a, 0x89, 0xcd, 0xd0, 0x85, 0xf2, 0xc7, 0x81, 0xf5, 0x8e, 0xbb, 0xb6, 0xc4, 0x66, 0x30, 0xb6, - 0x7d, 0x68, 0x51, 0xd3, 0x30, 0x71, 0x55, 0x7d, 0x2e, 0x66, 0x5a, 0x2e, 0x48, 0x80, 0xcd, 0x8a, - 0xca, 0xb1, 0xa2, 0x40, 0x56, 0x84, 0x21, 0xac, 0x64, 0xbf, 0x76, 0xb2, 0x25, 0x36, 0x3b, 0xb1, - 0xaa, 0x25, 0x36, 0x23, 0xcf, 0x2f, 0x0e, 0x67, 0xcf, 0x77, 0x99, 0x96, 0xd8, 0xec, 0x11, 0xec, - 0x42, 0xd2, 0x02, 0xc5, 0x77, 0x90, 0xba, 0xab, 0x95, 0x69, 0xc1, 0xff, 0xe6, 0x00, 0x70, 0x7d, - 0x84, 0xdd, 0xa8, 0xef, 0xc7, 0x4f, 0x32, 0xcc, 0x4d, 0x2e, 0xa6, 0x97, 0x4e, 0x70, 0x92, 0x3c, - 0x97, 0x81, 0x7f, 0x09, 0x46, 0x6e, 0x13, 0x72, 0x68, 0x1b, 0x70, 0x26, 0x67, 0xd9, 0x25, 0x29, - 0xb7, 0x53, 0xf1, 0xc2, 0xc0, 0xeb, 0x20, 0xe7, 0x18, 0xb2, 0x00, 0xdf, 0x39, 0xd1, 0x3d, 0x9d, - 0x52, 0xaa, 0x05, 0xff, 0x81, 0x03, 0x23, 0x6e, 0x58, 0x78, 0x1d, 0xd3, 0xf4, 0x79, 0x08, 0x4a, - 0xaf, 0x30, 0x2d, 0xde, 0x4b, 0xbd, 0xa2, 0x16, 0x8e, 0x19, 0x7e, 0xc2, 0x81, 0x31, 0x3f, 0x3e, - 0xc1, 0xe5, 0x13, 0x55, 0x89, 0x84, 0xb2, 0xbe, 0x9a, 0x3c, 0x65, 0x9a, 0x54, 0x52, 0x19, 0xf1, - 0x48, 0x7a, 0xb9, 0x26, 0x4a, 0x09, 0xe7, 0x5c, 0x6d, 0x9c, 0xb0, 0xf6, 0x68, 0x45, 0x1a, 0x94, - 0x05, 0xfe, 0x17, 0x07, 0x92, 0x7b, 0x0a, 0x2d, 0xd7, 0x9c, 0xf8, 0xdd, 0x8e, 0x77, 0x3b, 0x3a, - 0x73, 0xbc, 0xef, 0x6e, 0x4b, 0x57, 0xd9, 0x96, 0x96, 0xa5, 0xf7, 0xc4, 0x23, 0x49, 0x79, 0x55, - 0x05, 0xb9, 0x0c, 0xfc, 0x17, 0x0e, 0x8c, 0x6c, 0xe2, 0x3a, 0xa6, 0xb8, 0xdb, 0xd3, 0xfa, 0x61, - 0x3d, 0x3e, 0x2e, 0xbc, 0x57, 0xba, 0x04, 0xa6, 0x01, 0x28, 0x18, 0xea, 0x2d, 0xdc, 0x28, 0xd8, - 0xb4, 0x06, 0x87, 0xc0, 0x19, 0x30, 0x72, 0xd7, 0xf9, 0x94, 0xe0, 0x14, 0x88, 0x9b, 0x58, 0xa9, - 0x80, 0xe1, 0x67, 0xa6, 0x4a, 0xb1, 0xeb, 0x7c, 0x99, 0x57, 0x75, 0xbe, 0x5f, 0x73, 0x60, 0xec, - 0x06, 0xa6, 0xf7, 0x6c, 0x6c, 0x36, 0xbe, 0x4b, 0xf7, 0xfb, 0x8a, 0x3b, 0x2e, 0x3c, 0x48, 0xef, - 0x82, 0xc5, 0x5e, 0x9d, 0x48, 0x1b, 0x70, 0xc0, 0x0e, 0xe4, 0x53, 0xae, 0x34, 0xc4, 0xf6, 0x97, - 0x83, 0x97, 0x4f, 0xda, 0xdf, 0x17, 0x0e, 0x80, 0xbf, 0xcb, 0xaf, 0x86, 0x41, 0xe2, 0x06, 0xa6, - 0x7e, 0xe1, 0xe1, 0x82, 0x5f, 0x1b, 0x3c, 0xdb, 0x7a, 0xfc, 0xa9, 0xd7, 0x67, 0x4d, 0x7f, 0x19, - 0x67, 0x3b, 0xf8, 0x3d, 0x0f, 0x7f, 0x77, 0x52, 0xfe, 0x6a, 0x57, 0x33, 0x5e, 0xdc, 0xee, 0xd5, - 0x15, 0xb5, 0xa2, 0x6b, 0x91, 0x24, 0xd7, 0xb7, 0xad, 0xe9, 0x5a, 0xb3, 0x5f, 0xb6, 0x18, 0x4e, - 0x3e, 0x2f, 0x69, 0x3c, 0x7a, 0xaf, 0xf6, 0xe5, 0x0d, 0xa5, 0xcb, 0xfe, 0x8d, 0x41, 0x37, 0x5f, - 0xa7, 0xf0, 0xef, 0xb9, 0x91, 0xbe, 0x80, 0xdd, 0xd9, 0xb0, 0x4f, 0xb5, 0xdd, 0x67, 0xb9, 0xef, - 0x3e, 0xad, 0x97, 0xa1, 0x86, 0xb2, 0x35, 0xfc, 0x19, 0x0f, 0xe2, 0x5b, 0xe5, 0x1a, 0x81, 0xfd, - 0x7e, 0x4f, 0xb1, 0xec, 0x52, 0xce, 0xed, 0x7b, 0xfc, 0xe0, 0xf0, 0xca, 0x94, 0xe9, 0xdf, 0xc6, - 0x8e, 0x0b, 0x7f, 0x13, 0x03, 0x93, 0xb8, 0x5c, 0x23, 0xc8, 0x72, 0xab, 0x34, 0x30, 0xc6, 0x46, - 0xa6, 0x51, 0x86, 0xb3, 0xf7, 0x6d, 0x4d, 0x53, 0xcc, 0x46, 0x1e, 0x6d, 0x79, 0x53, 0xa9, 0xc4, - 0x66, 0xe7, 0x45, 0x8b, 0xcd, 0xa6, 0x37, 0x01, 0x0c, 0x5f, 0x5b, 0xa6, 0xed, 0x80, 0x97, 0xf5, - 0xe3, 0xeb, 0x80, 0xbf, 0xb2, 0xbc, 0x0a, 0xd7, 0xc1, 0x55, 0x19, 0x53, 0xdb, 0xd4, 0x71, 0x05, - 0x3d, 0xab, 0x61, 0x1d, 0xd1, 0x1a, 0x46, 0x26, 0xb6, 0x88, 0x6d, 0x96, 0x31, 0x52, 0x2d, 0x44, - 0xb1, 0x66, 0x10, 0x53, 0x31, 0xd5, 0x7a, 0x03, 0xd9, 0xba, 0x72, 0xa4, 0xa8, 0x75, 0xa5, 0x54, - 0xc7, 0xb9, 0x8f, 0x3f, 0x00, 0xfc, 0xda, 0xf2, 0x1a, 0x5c, 0x03, 0x99, 0x97, 0x08, 0xa8, 0x10, - 0x6c, 0x21, 0x9d, 0x50, 0x84, 0x9f, 0xab, 0x16, 0xcd, 0xc1, 0x11, 0x10, 0xff, 0x8f, 0x18, 0xe7, - 0x16, 0x89, 0x4f, 0x4e, 0x0e, 0x13, 0x8e, 0x61, 0xc4, 0xa6, 0x7b, 0x30, 0x8f, 0x16, 0xd2, 0x89, - 0x60, 0xc2, 0x71, 0xd6, 0xf2, 0xee, 0x2b, 0xcf, 0x23, 0x08, 0xbb, 0x96, 0xe0, 0x0f, 0x39, 0x30, - 0xb9, 0x89, 0xb1, 0xc1, 0x7e, 0x76, 0x72, 0x26, 0xbe, 0x9f, 0xca, 0xe6, 0x3a, 0xdb, 0xdb, 0xb5, - 0xf4, 0xda, 0x89, 0x21, 0x3e, 0xf4, 0x8b, 0x76, 0xce, 0xe9, 0x70, 0x58, 0x16, 0x2a, 0x00, 0xb0, - 0x4b, 0x8a, 0xaa, 0x5e, 0x51, 0xf5, 0x03, 0x0b, 0x2e, 0x74, 0x45, 0xf0, 0x4d, 0xef, 0xc7, 0xfe, - 0xbe, 0xc1, 0x7d, 0x08, 0x3e, 0x04, 0xa3, 0x0f, 0x54, 0x0d, 0x13, 0x9b, 0xc2, 0x3e, 0x44, 0x7d, - 0x99, 0xcf, 0x32, 0xf5, 0x4f, 0xc3, 0xb9, 0xa0, 0x3d, 0xa9, 0x27, 0xac, 0x06, 0x12, 0x5b, 0xa6, - 0x49, 0x4c, 0x27, 0x7d, 0x6f, 0x62, 0xaa, 0xa8, 0x75, 0x6b, 0x60, 0x80, 0x8b, 0x0c, 0xe0, 0x2d, - 0xb8, 0x18, 0x3a, 0x30, 0x47, 0xea, 0x33, 0x95, 0xd6, 0x2a, 0x9e, 0xd4, 0x7f, 0xe4, 0x00, 0xbc, - 0x81, 0x69, 0xb4, 0xdd, 0x3b, 0xb9, 0x46, 0x88, 0x70, 0xf4, 0x55, 0xe3, 0x5d, 0xa6, 0xc6, 0xf9, - 0xf4, 0x42, 0x50, 0x0d, 0x47, 0x83, 0x12, 0xa9, 0x34, 0xc4, 0xa6, 0x53, 0x11, 0xb0, 0xb6, 0x10, - 0xfe, 0x1d, 0x07, 0x66, 0xf7, 0x88, 0x45, 0x1d, 0x89, 0x8c, 0x95, 0x29, 0xf2, 0x6a, 0x9d, 0x65, - 0x5f, 0x74, 0x91, 0xa1, 0x5f, 0x4a, 0x5f, 0x0c, 0xa2, 0x1b, 0xc4, 0xa2, 0x8e, 0x06, 0xec, 0x87, - 0x44, 0x57, 0x0d, 0xdf, 0x29, 0x52, 0x3f, 0xe6, 0x8e, 0x0b, 0xdf, 0x72, 0xb0, 0xda, 0xa7, 0xd1, - 0x0b, 0x3e, 0x7b, 0xa3, 0x6c, 0x16, 0x3d, 0xab, 0xa9, 0xe5, 0x1a, 0xb2, 0x6a, 0xc4, 0xae, 0x57, - 0xd8, 0xf5, 0x2b, 0x61, 0x64, 0x5b, 0xb8, 0x82, 0x54, 0x1d, 0x19, 0x75, 0xa5, 0x8c, 0x11, 0xa9, - 0xb2, 0x8b, 0x5a, 0x21, 0x65, 0x5b, 0xc3, 0xba, 0xdb, 0x0b, 0xa0, 0x32, 0xd1, 0x9c, 0xc1, 0xf9, - 0xd4, 0x3d, 0xb0, 0xd4, 0xab, 0x32, 0x70, 0xae, 0x91, 0xdf, 0x5a, 0x0e, 0xfa, 0x3c, 0xf9, 0x14, - 0x9c, 0x2a, 0x2b, 0x1a, 0xae, 0x6f, 0x28, 0x16, 0xf6, 0x64, 0x38, 0x7d, 0x10, 0x94, 0xc1, 0xb0, - 0xfb, 0x6b, 0xe8, 0xa0, 0x8e, 0xb4, 0xc0, 0x6c, 0x38, 0x07, 0x67, 0x43, 0x8e, 0xe4, 0x2c, 0x49, - 0x9f, 0x83, 0xc5, 0x82, 0x4e, 0x68, 0x0d, 0x9b, 0x1e, 0x92, 0x73, 0x78, 0x81, 0x4b, 0xf5, 0x51, - 0xe8, 0x8a, 0x0d, 0x0a, 0x3c, 0x54, 0xfc, 0x76, 0xf4, 0xb8, 0xf0, 0xcd, 0x28, 0xfc, 0x25, 0x07, - 0xe6, 0x0a, 0xa8, 0xe8, 0x3e, 0x28, 0x07, 0x42, 0xc0, 0xa7, 0xe0, 0xd4, 0x81, 0xbc, 0xb7, 0x91, - 0xbd, 0xe1, 0x6e, 0x1d, 0x19, 0x26, 0x79, 0x8a, 0xcb, 0x74, 0x50, 0x93, 0xa5, 0x12, 0x3a, 0xd1, - 0xf1, 0x9f, 0x79, 0x5b, 0x73, 0xa8, 0x33, 0x9f, 0x83, 0x53, 0xc5, 0xfb, 0x9b, 0x68, 0x35, 0xbb, - 0x51, 0x57, 0x6c, 0x0b, 0xa3, 0xdb, 0x6a, 0x19, 0xeb, 0x16, 0x86, 0xdb, 0x83, 0x49, 0x16, 0x4b, - 0x75, 0x52, 0x12, 0x35, 0xc5, 0xa2, 0xd8, 0x14, 0x6f, 0xef, 0x6c, 0x6c, 0xed, 0xde, 0xdf, 0xca, - 0xd1, 0xe7, 0x54, 0xe2, 0x57, 0x72, 0xcb, 0x19, 0x9e, 0x8b, 0xc5, 0xa5, 0x84, 0x62, 0xb8, 0xcf, - 0xe0, 0x2a, 0xd1, 0xc5, 0xa7, 0x16, 0xd1, 0xa5, 0xf9, 0xe0, 0xcc, 0xf3, 0x6c, 0x95, 0x90, 0xac, - 0xa6, 0x6a, 0x38, 0xdf, 0x45, 0x99, 0xef, 0x43, 0x29, 0xef, 0x39, 0x19, 0x63, 0x15, 0xee, 0x80, - 0x1b, 0xdd, 0x19, 0xc3, 0xb6, 0xb0, 0xd9, 0xc9, 0x16, 0x35, 0xe5, 0x08, 0x23, 0x03, 0x9b, 0x9a, - 0x6a, 0x59, 0x8e, 0x63, 0x52, 0x82, 0x94, 0x72, 0x19, 0x5b, 0x56, 0x28, 0xbb, 0xe4, 0xe4, 0x37, - 0xc8, 0x41, 0xa3, 0xf2, 0x4d, 0xc0, 0xaf, 0xad, 0xac, 0xc3, 0x02, 0x98, 0xda, 0x79, 0x57, 0x43, - 0x0a, 0xa2, 0x58, 0x31, 0x08, 0xcd, 0xc1, 0x65, 0x90, 0x4b, 0x0d, 0xf4, 0x62, 0xf8, 0xe8, 0x9f, - 0x62, 0x60, 0x06, 0x8c, 0x17, 0x15, 0x4b, 0x2d, 0xb3, 0xfa, 0x3f, 0x36, 0xc6, 0x81, 0x73, 0xa1, - 0x8e, 0x60, 0x66, 0x2c, 0x96, 0x1a, 0xff, 0x34, 0x5b, 0xd8, 0xdb, 0xc9, 0xde, 0xc2, 0x0d, 0x14, - 0x03, 0xbf, 0xe2, 0xda, 0x1d, 0xc2, 0xcf, 0xb9, 0x31, 0x5e, 0x88, 0x4b, 0x17, 0xfc, 0x33, 0x0c, - 0x1c, 0xb8, 0x48, 0x14, 0x9b, 0xd6, 0x44, 0xe7, 0x0f, 0x31, 0xd5, 0xbf, 0xc0, 0xf9, 0xa5, 0xfe, - 0x44, 0x94, 0x1c, 0x62, 0xbd, 0xf8, 0xd7, 0x20, 0xe5, 0x36, 0x1c, 0x10, 0xde, 0x30, 0x15, 0x9d, - 0x5a, 0xc8, 0x19, 0x78, 0xd6, 0x03, 0x8b, 0x5e, 0x1b, 0x02, 0xe7, 0xbc, 0x45, 0x36, 0xf2, 0x57, - 0x37, 0xc0, 0xb0, 0x52, 0xd1, 0x54, 0x1d, 0xe6, 0x43, 0xac, 0x7a, 0x25, 0x44, 0xc6, 0x0e, 0xc3, - 0x21, 0x53, 0x2d, 0xea, 0x64, 0xa2, 0x23, 0x8c, 0x54, 0xbd, 0x4a, 0x4c, 0x8d, 0x9d, 0x77, 0x69, - 0x09, 0x4c, 0x05, 0x4d, 0x31, 0x14, 0x6d, 0x8d, 0x4a, 0x97, 0xfa, 0x36, 0x47, 0x51, 0x52, 0x73, - 0x07, 0x9c, 0xb9, 0xd3, 0x89, 0x3e, 0xc1, 0x3b, 0x35, 0xe8, 0x5d, 0x7a, 0x34, 0xde, 0x3e, 0xb9, - 0xd2, 0x08, 0xbb, 0xcf, 0xab, 0x7f, 0x0a, 0x00, 0x00, 0xff, 0xff, 0x54, 0x0b, 0x85, 0xbe, 0xf9, - 0x27, 0x00, 0x00, + proto.RegisterFile("examples/proto/examplepb/a_bit_of_everything.proto", fileDescriptor_a_bit_of_everything_13e92efa8be5f8b3) +} + +var fileDescriptor_a_bit_of_everything_13e92efa8be5f8b3 = []byte{ + // 3233 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x39, 0x5b, 0x6f, 0x1b, 0xc7, + 0xb9, 0x5a, 0xae, 0xae, 0xa3, 0x1b, 0x35, 0xb2, 0x65, 0x8a, 0x56, 0xa2, 0x31, 0xed, 0x24, 0x6b, + 0xc6, 0xe4, 0x4a, 0x2b, 0xd9, 0x91, 0x19, 0x24, 0x3e, 0xa4, 0x2e, 0xb6, 0x62, 0x5b, 0x96, 0xd7, + 0x8e, 0x4f, 0xe0, 0xd8, 0x11, 0x96, 0xe4, 0x50, 0x5c, 0x8b, 0xbb, 0xb3, 0xd9, 0x9d, 0x95, 0xcd, + 0xa3, 0xc3, 0x73, 0xd2, 0x0b, 0x5a, 0xb4, 0x79, 0x28, 0xc0, 0xb4, 0x0f, 0xbd, 0xa0, 0xbf, 0x20, + 0xaf, 0x7d, 0x0a, 0xd0, 0xcb, 0x43, 0x9f, 0xfa, 0xe6, 0x16, 0xfd, 0x03, 0xed, 0x43, 0x9f, 0x0a, + 0x14, 0x05, 0x02, 0x14, 0x45, 0x8b, 0x62, 0x67, 0x77, 0xc9, 0xdd, 0x25, 0x69, 0x99, 0x76, 0x90, + 0x17, 0x69, 0x67, 0xe6, 0xbb, 0x7f, 0xdf, 0x7c, 0x97, 0x21, 0x90, 0xf0, 0x13, 0x45, 0x33, 0x6a, + 0xd8, 0x12, 0x0d, 0x93, 0x50, 0x22, 0x7a, 0x4b, 0xa3, 0x28, 0x2a, 0x7b, 0x45, 0x95, 0xee, 0x91, + 0xca, 0x1e, 0x3e, 0xc4, 0x66, 0x9d, 0x56, 0x55, 0x7d, 0x3f, 0xcb, 0x60, 0xe0, 0xe2, 0xbe, 0x69, + 0x94, 0xb2, 0xfb, 0x0a, 0xc5, 0x8f, 0x95, 0x7a, 0xd6, 0x27, 0x90, 0x6d, 0xa1, 0x26, 0x17, 0xf6, + 0x09, 0xd9, 0xaf, 0x61, 0x51, 0x31, 0x54, 0x51, 0xd1, 0x75, 0x42, 0x15, 0xaa, 0x12, 0xdd, 0x72, + 0xd1, 0x93, 0xc8, 0x3b, 0x65, 0xab, 0xa2, 0x5d, 0x11, 0x2b, 0x2a, 0xae, 0x95, 0xf7, 0x34, 0xc5, + 0x3a, 0xf0, 0x20, 0x4e, 0x47, 0x21, 0xb0, 0x66, 0xd0, 0xba, 0x77, 0xf8, 0x6a, 0xf4, 0xb0, 0x6c, + 0x9b, 0x8c, 0xbe, 0x77, 0xfe, 0x46, 0x44, 0x23, 0x43, 0xa1, 0x55, 0xac, 0xdb, 0x1a, 0xfb, 0xd8, + 0x73, 0xbe, 0x7c, 0x39, 0x22, 0x80, 0x96, 0x5d, 0x14, 0x35, 0x6c, 0x59, 0xca, 0x3e, 0xf6, 0x20, + 0xce, 0x74, 0x42, 0x48, 0x11, 0x90, 0xc5, 0xa8, 0x34, 0x54, 0xd5, 0xb0, 0x45, 0x15, 0xcd, 0xf0, + 0x00, 0x2e, 0xb0, 0x7f, 0xa5, 0xcc, 0x3e, 0xd6, 0x33, 0xd6, 0x63, 0x65, 0x7f, 0x1f, 0x9b, 0x22, + 0x31, 0x98, 0x3d, 0x3a, 0x6d, 0x93, 0xfa, 0x67, 0x12, 0xc4, 0xf3, 0x05, 0x95, 0xde, 0xaa, 0x6c, + 0xb6, 0xac, 0x0e, 0x1f, 0x82, 0x49, 0x4b, 0xd5, 0xf7, 0x6b, 0x78, 0x4f, 0xc7, 0x16, 0xc5, 0xe5, + 0xc4, 0x3c, 0xe2, 0x84, 0x71, 0x69, 0x2d, 0x7b, 0x8c, 0x1f, 0xb2, 0x51, 0x4a, 0xd9, 0x1d, 0x86, + 0x2f, 0x4f, 0xb8, 0xe4, 0xdc, 0x15, 0xac, 0x82, 0x41, 0xdb, 0x56, 0xcb, 0x09, 0x0e, 0x71, 0xc2, + 0x58, 0xe1, 0x6e, 0x33, 0x7f, 0xfb, 0x13, 0x8e, 0xfb, 0x3e, 0x77, 0xfd, 0x43, 0x25, 0x53, 0xc9, + 0x67, 0xb6, 0x96, 0x32, 0x97, 0x1f, 0x1e, 0xad, 0x35, 0x32, 0xc1, 0xe5, 0x6a, 0x3f, 0xcb, 0x65, + 0xa9, 0x21, 0x33, 0x0e, 0x70, 0x17, 0x0c, 0x7b, 0x1a, 0xc4, 0x10, 0xff, 0x52, 0x1a, 0x78, 0x74, + 0xe0, 0x7b, 0x60, 0xbc, 0x52, 0x23, 0x0a, 0xdd, 0x3b, 0x54, 0x6a, 0x36, 0x4e, 0xf0, 0x88, 0x13, + 0x62, 0x85, 0xf3, 0xcd, 0xfc, 0xeb, 0xd2, 0xcc, 0x96, 0xb3, 0x8f, 0xd8, 0x3e, 0x62, 0x11, 0x96, + 0xe3, 0x97, 0xb2, 0xd2, 0x53, 0x2e, 0x88, 0x20, 0x03, 0xb6, 0xb8, 0xe7, 0x7c, 0xc3, 0x33, 0x60, + 0xa2, 0x4c, 0xec, 0x62, 0x0d, 0x7b, 0xc4, 0x06, 0x11, 0x27, 0x70, 0xf2, 0xb8, 0xbb, 0xe7, 0x82, + 0x2c, 0x82, 0x71, 0x55, 0xa7, 0x97, 0x56, 0x3d, 0x88, 0x21, 0xc4, 0x09, 0xbc, 0x0c, 0xd8, 0x56, + 0x8b, 0x86, 0x1d, 0x84, 0x18, 0x46, 0x9c, 0x30, 0x28, 0x8f, 0xdb, 0x01, 0x10, 0x97, 0xc6, 0x8a, + 0xe4, 0x41, 0x8c, 0x20, 0x4e, 0x18, 0x62, 0x34, 0x56, 0x24, 0x17, 0xe0, 0x2c, 0x98, 0xac, 0xa8, + 0x4f, 0x70, 0xb9, 0x45, 0x64, 0x14, 0x71, 0xc2, 0xb0, 0x3c, 0xe1, 0x6d, 0x86, 0x81, 0x5a, 0x74, + 0xc6, 0x10, 0x27, 0x8c, 0x78, 0x40, 0x3e, 0xa5, 0x57, 0x00, 0x28, 0x12, 0x52, 0xf3, 0x20, 0x00, + 0xe2, 0x84, 0x51, 0x79, 0xcc, 0xd9, 0x69, 0x09, 0x6b, 0x51, 0x53, 0xd5, 0xf7, 0x3d, 0x80, 0x71, + 0x27, 0x00, 0xe4, 0x71, 0x77, 0xaf, 0x25, 0x6c, 0xb1, 0x4e, 0xb1, 0xe5, 0x41, 0xbc, 0x82, 0x38, + 0x61, 0x42, 0x06, 0x6c, 0x2b, 0xa4, 0x70, 0x4b, 0x8c, 0x49, 0xc4, 0x09, 0x93, 0xae, 0xc2, 0xbe, + 0x14, 0xd7, 0x01, 0x70, 0x6e, 0x9d, 0x07, 0x30, 0x85, 0x38, 0x61, 0x4a, 0xba, 0x70, 0xac, 0xe7, + 0x77, 0x6c, 0x0d, 0x9b, 0x6a, 0x69, 0x53, 0xb7, 0x35, 0x79, 0xcc, 0xc1, 0x77, 0x89, 0xed, 0x82, + 0xe9, 0xd6, 0x3d, 0xf6, 0x28, 0xbe, 0xca, 0x28, 0x0a, 0x3d, 0x28, 0xfa, 0xd7, 0x3f, 0xbb, 0xab, + 0xd0, 0x2a, 0xa3, 0x36, 0x69, 0x78, 0x5f, 0x2e, 0x45, 0x0b, 0xcc, 0xb9, 0xc1, 0xb4, 0x17, 0x25, + 0xbc, 0xc8, 0x08, 0xbf, 0x7b, 0x1c, 0xe1, 0x9b, 0x6e, 0x42, 0xf0, 0xe9, 0x7b, 0x21, 0xda, 0x62, + 0x37, 0xab, 0x87, 0xd6, 0x2e, 0xd3, 0xd7, 0xc0, 0x94, 0x15, 0xf6, 0xdf, 0x34, 0xe2, 0x84, 0x69, + 0x79, 0xd2, 0x0a, 0x39, 0xb0, 0x05, 0xd6, 0x8a, 0x85, 0x38, 0xe2, 0x84, 0xb8, 0x0f, 0x16, 0x88, + 0x3a, 0x2b, 0xe8, 0x84, 0x19, 0xc4, 0x09, 0x33, 0xf2, 0xb8, 0x15, 0x70, 0x82, 0x07, 0xd2, 0xa2, + 0x03, 0x11, 0x27, 0x40, 0x17, 0xc4, 0xa7, 0x22, 0x81, 0x93, 0x26, 0x36, 0xb0, 0xe2, 0x98, 0x22, + 0x14, 0x17, 0xb3, 0x88, 0x17, 0xc6, 0xe4, 0x59, 0xff, 0xf0, 0x4e, 0x20, 0x3e, 0x2e, 0x83, 0x71, + 0xa2, 0x63, 0xa7, 0x48, 0x38, 0x19, 0x3a, 0x71, 0x82, 0x25, 0xa6, 0xb9, 0xac, 0x9b, 0x14, 0xb3, + 0x7e, 0x52, 0xcc, 0x6e, 0x3a, 0xa7, 0xd7, 0x06, 0x64, 0xc0, 0x80, 0xd9, 0x0a, 0x9e, 0x05, 0x13, + 0x2e, 0xaa, 0xcb, 0x2b, 0x71, 0xd2, 0x89, 0xbe, 0x6b, 0x03, 0xb2, 0x4b, 0xd0, 0x65, 0x02, 0x1f, + 0x80, 0x31, 0x4d, 0x31, 0x3c, 0x39, 0xe6, 0x58, 0xd2, 0xb8, 0xd2, 0x7f, 0xd2, 0xb8, 0xa9, 0x18, + 0x4c, 0xdc, 0x4d, 0x9d, 0x9a, 0x75, 0x79, 0x54, 0xf3, 0x96, 0xf0, 0x09, 0x98, 0xd5, 0x14, 0xc3, + 0x88, 0xea, 0x7b, 0x8a, 0xf1, 0xb9, 0xf6, 0x42, 0x7c, 0x8c, 0x90, 0x7d, 0x5c, 0x86, 0x33, 0x5a, + 0x74, 0x3f, 0xc0, 0xd9, 0x8b, 0x3d, 0x97, 0x73, 0xe2, 0xe5, 0x38, 0xbb, 0x91, 0xd7, 0xc9, 0x39, + 0xb0, 0x0f, 0x73, 0x20, 0xa1, 0x13, 0x7d, 0x9d, 0xe8, 0x87, 0x58, 0x77, 0x2a, 0x8f, 0x52, 0xdb, + 0x51, 0x34, 0x37, 0xbd, 0x25, 0x92, 0x2c, 0x01, 0xf4, 0x3c, 0x87, 0xeb, 0x60, 0xba, 0x55, 0xde, + 0x3c, 0x89, 0x4f, 0x33, 0x8f, 0x27, 0x3b, 0x3c, 0x7e, 0xd7, 0x87, 0x93, 0xa7, 0x5a, 0x28, 0x2e, + 0x91, 0x07, 0xa0, 0x15, 0x49, 0xc1, 0xcb, 0xb6, 0x80, 0xf8, 0xbe, 0xf3, 0xc2, 0x8c, 0x4f, 0xa8, + 0x7d, 0xb1, 0x3e, 0xe7, 0x40, 0x22, 0x4c, 0xbe, 0x5d, 0x64, 0x13, 0xa8, 0x7f, 0x1e, 0x85, 0x8d, + 0x66, 0x3e, 0x9f, 0x3e, 0x2d, 0x7b, 0x24, 0x91, 0xee, 0x1e, 0x21, 0x87, 0x34, 0xa2, 0x2a, 0xad, + 0x61, 0x29, 0xd5, 0xfd, 0xb0, 0x8c, 0xad, 0x92, 0xa9, 0xb2, 0x4a, 0x9f, 0x95, 0xe7, 0x82, 0x92, + 0xe6, 0x5b, 0x12, 0xc1, 0x1f, 0x72, 0xe0, 0x64, 0xdb, 0x08, 0x41, 0x59, 0xcf, 0xf4, 0x9f, 0x27, + 0x0b, 0x52, 0x33, 0x2f, 0xa6, 0xe1, 0x4e, 0xa7, 0x88, 0xf3, 0x3b, 0x3d, 0x25, 0x9b, 0x6d, 0xe5, + 0xd6, 0x80, 0x58, 0x87, 0x20, 0x19, 0x4d, 0x05, 0x01, 0xd1, 0x52, 0x4e, 0x3e, 0x28, 0xac, 0x35, + 0xf3, 0x17, 0xd3, 0x27, 0x5b, 0xba, 0xbb, 0x60, 0x1e, 0xbf, 0x85, 0xe8, 0x76, 0x88, 0x65, 0x22, + 0x9c, 0x49, 0x02, 0x7c, 0x7f, 0xc9, 0x05, 0x18, 0x7b, 0x37, 0x23, 0xc0, 0xf8, 0xec, 0xcb, 0x75, + 0x0d, 0x85, 0xad, 0x66, 0x7e, 0x3d, 0xdd, 0x96, 0xcd, 0x65, 0x80, 0x48, 0xf1, 0x11, 0x2e, 0x51, + 0x4f, 0xf2, 0xb3, 0x3d, 0x4e, 0xbb, 0x2b, 0xe0, 0xd2, 0x0d, 0x28, 0xf0, 0x53, 0x0e, 0xcc, 0x74, + 0xca, 0x7d, 0xee, 0xe5, 0xfa, 0xb5, 0xc2, 0x6a, 0x33, 0xbf, 0x9c, 0x9e, 0xdd, 0xe9, 0x22, 0x6e, + 0x72, 0xa7, 0xb7, 0x94, 0x71, 0x3d, 0x22, 0x5d, 0xf2, 0x37, 0x1c, 0x18, 0xf6, 0x9a, 0x3e, 0x08, + 0x06, 0x75, 0x45, 0xc3, 0x6e, 0xd3, 0x27, 0xb3, 0x6f, 0x38, 0x07, 0x86, 0x15, 0x8d, 0xd8, 0x3a, + 0x4d, 0xc4, 0x58, 0x15, 0xf7, 0x56, 0xf0, 0x36, 0x88, 0x91, 0x03, 0xd6, 0x5b, 0x4d, 0x49, 0xf9, + 0x17, 0x55, 0x22, 0xbb, 0x81, 0xb1, 0xc1, 0x6e, 0x6d, 0x8c, 0x1c, 0xa4, 0x16, 0xc1, 0xa8, 0xbf, + 0x86, 0x63, 0x60, 0x68, 0x2b, 0x7f, 0xe3, 0xce, 0x66, 0x7c, 0x00, 0x8e, 0x82, 0xc1, 0xbb, 0xf2, + 0xfb, 0x9b, 0x71, 0x2e, 0x77, 0xaa, 0x99, 0x3f, 0x21, 0x41, 0x18, 0x3f, 0x42, 0x29, 0x72, 0x90, + 0xca, 0xa1, 0x94, 0xb3, 0x9f, 0x42, 0x8d, 0xa4, 0x0a, 0x26, 0x43, 0xe9, 0x1c, 0xc6, 0x01, 0x7f, + 0x80, 0xeb, 0x9e, 0x22, 0xce, 0x27, 0x2c, 0x80, 0x21, 0x37, 0xa7, 0xc4, 0x5e, 0xa0, 0xd7, 0x70, + 0x51, 0x73, 0xb1, 0x35, 0x2e, 0xb9, 0x01, 0xe6, 0xba, 0x67, 0xf4, 0x2e, 0x3c, 0x4f, 0x04, 0x79, + 0x8e, 0x05, 0xa9, 0xfc, 0x9f, 0x4f, 0x25, 0x9a, 0x9d, 0xbb, 0x50, 0xd9, 0x09, 0x52, 0x79, 0x99, + 0xfe, 0xb8, 0xcd, 0x3f, 0xf7, 0xe3, 0x58, 0x33, 0xff, 0xa3, 0x18, 0xf8, 0x36, 0x97, 0x9e, 0xcd, + 0xa3, 0xa2, 0x4a, 0x11, 0xa9, 0xa0, 0xf6, 0x48, 0x27, 0x6d, 0x6f, 0xeb, 0xd4, 0xcf, 0xf4, 0x75, + 0x54, 0x22, 0x9a, 0x51, 0x53, 0x4b, 0xec, 0x02, 0x78, 0x83, 0x0e, 0xa2, 0x75, 0x03, 0x23, 0x4a, + 0x50, 0x89, 0x1c, 0x62, 0x13, 0x69, 0x8a, 0x5e, 0x47, 0x15, 0xac, 0x50, 0xdb, 0xc4, 0x96, 0x43, + 0x6b, 0xd7, 0x4f, 0xf9, 0x4f, 0x39, 0xd6, 0xe5, 0x3f, 0xe5, 0x82, 0x3d, 0xf2, 0x53, 0x2e, 0xd4, + 0x54, 0xa7, 0xef, 0x81, 0x73, 0x5b, 0xaa, 0x5e, 0x46, 0xc4, 0xa6, 0x48, 0x23, 0x26, 0x46, 0x4a, + 0xd1, 0xf9, 0xec, 0x98, 0x79, 0xb2, 0x55, 0x4a, 0x0d, 0x2b, 0x27, 0x8a, 0xfb, 0x2a, 0xad, 0xda, + 0xc5, 0x6c, 0x89, 0x68, 0xa2, 0x63, 0x8c, 0x0c, 0x2e, 0x11, 0xab, 0x6e, 0x51, 0xec, 0x2d, 0x3d, + 0xdb, 0x48, 0xab, 0x50, 0x3a, 0x42, 0x29, 0x87, 0xbf, 0x13, 0x2c, 0x4b, 0xa5, 0xca, 0xca, 0xa5, + 0x65, 0xbc, 0x9c, 0x59, 0x2d, 0xae, 0xae, 0x66, 0x56, 0xd7, 0x56, 0xca, 0x19, 0x65, 0xf9, 0xe2, + 0xe5, 0xcc, 0xc5, 0xd5, 0xb2, 0x52, 0x2c, 0x57, 0xde, 0xc2, 0x6b, 0xcb, 0xab, 0x29, 0xd4, 0x28, + 0x4c, 0xfa, 0xed, 0x0b, 0x13, 0x2e, 0xf5, 0xef, 0x51, 0x90, 0x88, 0x4a, 0xe2, 0xe7, 0x03, 0x78, + 0x19, 0xcc, 0xb3, 0x06, 0xb1, 0x95, 0x9f, 0x82, 0x83, 0x07, 0x87, 0x78, 0x21, 0x26, 0xcf, 0x39, + 0x00, 0x3e, 0xc2, 0x56, 0x7b, 0xb2, 0x78, 0x1b, 0x24, 0xc3, 0xa8, 0xa1, 0x39, 0xc3, 0x99, 0x85, + 0x38, 0xf9, 0x54, 0x10, 0x77, 0x23, 0x30, 0x73, 0x74, 0xf0, 0x0d, 0xb6, 0x71, 0x3c, 0xe2, 0x05, + 0x3e, 0xcc, 0x77, 0xbb, 0xdd, 0xd1, 0x75, 0xf0, 0x0d, 0xcd, 0x26, 0x83, 0x88, 0x17, 0x06, 0xc3, + 0x7c, 0xdf, 0x0f, 0xb4, 0x83, 0xdd, 0xf8, 0xb6, 0x3a, 0xcc, 0x21, 0xc4, 0x0b, 0x43, 0x1d, 0x7c, + 0xfd, 0x66, 0xf3, 0x1d, 0x70, 0x3a, 0x62, 0xaa, 0x50, 0x0f, 0x3b, 0x8c, 0x78, 0x61, 0x58, 0x4e, + 0x84, 0x8c, 0x15, 0x6c, 0x67, 0xbb, 0xa3, 0x07, 0x26, 0x26, 0x5e, 0x18, 0xe9, 0x82, 0xee, 0x73, + 0x7f, 0x0b, 0x24, 0xc2, 0xe8, 0x81, 0x19, 0x68, 0x14, 0xf1, 0xc2, 0xa8, 0x7c, 0x32, 0x88, 0x5b, + 0x68, 0xcd, 0x43, 0x1d, 0xe6, 0x0a, 0x75, 0x85, 0x63, 0xac, 0x0b, 0x0e, 0x99, 0x2b, 0xdc, 0x09, + 0x47, 0xcc, 0x15, 0x9c, 0x9b, 0x00, 0xe2, 0x85, 0x89, 0xb0, 0xb9, 0x0a, 0xed, 0x19, 0xaa, 0xab, + 0x9b, 0x5a, 0xea, 0x8e, 0x23, 0x5e, 0x98, 0xec, 0x74, 0x93, 0xaf, 0x2d, 0x8e, 0x6a, 0x1b, 0xe8, + 0xa9, 0x26, 0x5e, 0xa0, 0xa7, 0x0a, 0xd9, 0xa6, 0xdd, 0x57, 0x5d, 0x01, 0x0b, 0x11, 0xdb, 0x84, + 0x9d, 0x32, 0x89, 0x78, 0x61, 0x5a, 0x9e, 0x0f, 0x59, 0x27, 0x34, 0xca, 0xf4, 0x20, 0xd0, 0x0a, + 0x8a, 0x29, 0xc4, 0x0b, 0xf1, 0x6e, 0x04, 0x7a, 0x06, 0x73, 0x68, 0xe4, 0x99, 0x46, 0xbc, 0x30, + 0x13, 0xf1, 0x4e, 0xc0, 0x4a, 0x5d, 0x91, 0x03, 0x43, 0x15, 0x2f, 0xc0, 0x4e, 0x64, 0x8f, 0x73, + 0xae, 0xda, 0xcc, 0x63, 0xa9, 0x04, 0x95, 0x23, 0x94, 0xea, 0x15, 0x58, 0xa9, 0x1c, 0xfa, 0x90, + 0x9a, 0x36, 0xbe, 0x80, 0xdc, 0xbf, 0x15, 0xa5, 0x66, 0x79, 0x8b, 0x87, 0x17, 0xa2, 0x68, 0x01, + 0xb9, 0x1d, 0xbc, 0xe5, 0x0b, 0x48, 0xba, 0x80, 0x56, 0x1e, 0xa2, 0x46, 0x2a, 0x09, 0x06, 0x0b, + 0xa4, 0x5c, 0xef, 0x56, 0x9d, 0x53, 0x0f, 0xc0, 0xb4, 0x37, 0x69, 0xfe, 0xb7, 0x4a, 0xab, 0x0c, + 0x6c, 0x0a, 0xc4, 0xfc, 0x77, 0x1b, 0x39, 0xa6, 0x3a, 0x29, 0x6a, 0xb0, 0xac, 0x50, 0xc5, 0xab, + 0x1e, 0xaf, 0x1d, 0xeb, 0x77, 0x87, 0x88, 0xcc, 0x50, 0x52, 0x9f, 0x71, 0x60, 0xfa, 0x7d, 0xa3, + 0xac, 0x50, 0x7c, 0x4f, 0x92, 0xf1, 0xc7, 0x36, 0xb6, 0x28, 0x5c, 0x07, 0xbc, 0x52, 0x74, 0x85, + 0x18, 0x97, 0x96, 0xfb, 0xae, 0x45, 0xb2, 0x83, 0x0d, 0xdf, 0x06, 0xe3, 0x36, 0xa3, 0xcb, 0x1e, + 0xf8, 0x3c, 0xd1, 0x3a, 0xe7, 0x85, 0x2d, 0x15, 0xd7, 0xca, 0x37, 0x15, 0xeb, 0x40, 0x06, 0x2e, + 0xb8, 0xf3, 0x9d, 0x46, 0x60, 0x3c, 0x10, 0x9b, 0x4e, 0x7b, 0x70, 0x7f, 0x53, 0xbe, 0x15, 0x1f, + 0x80, 0x23, 0x80, 0xbf, 0xb5, 0xb3, 0x19, 0xe7, 0xa4, 0xbf, 0x2d, 0x80, 0x53, 0x51, 0xc6, 0x77, + 0xb0, 0x79, 0xa8, 0x96, 0x30, 0xfc, 0x2b, 0x0f, 0x86, 0xd7, 0x4d, 0xc7, 0xe6, 0xb0, 0x7f, 0xe9, + 0x93, 0xfd, 0xa3, 0xa4, 0xfe, 0x15, 0xfb, 0xe6, 0xef, 0xff, 0xfc, 0x59, 0xec, 0xcb, 0x58, 0xea, + 0xef, 0x31, 0xf1, 0x70, 0xd9, 0x7f, 0x4c, 0xed, 0xf6, 0x94, 0x2a, 0x1e, 0x05, 0xca, 0x47, 0x43, + 0x3c, 0x0a, 0x56, 0x84, 0x86, 0x78, 0x14, 0x88, 0xce, 0x86, 0x68, 0x61, 0x43, 0x31, 0x15, 0x4a, + 0x4c, 0xf1, 0xc8, 0x0e, 0x1d, 0x1c, 0x05, 0x22, 0xa9, 0x21, 0x1e, 0x85, 0x2e, 0x94, 0xbf, 0x0e, + 0x9c, 0xb7, 0xc3, 0xb5, 0x21, 0x1e, 0x05, 0x73, 0xdb, 0x3b, 0x16, 0x35, 0x0d, 0x13, 0x57, 0xd4, + 0x27, 0x62, 0xba, 0xe1, 0x32, 0x09, 0xa0, 0x59, 0x51, 0x3a, 0x56, 0x94, 0x91, 0x15, 0x41, 0x08, + 0x0b, 0xd9, 0x6b, 0x9c, 0x6c, 0x88, 0x47, 0xed, 0x5c, 0xd5, 0x10, 0x8f, 0x22, 0xcf, 0x2f, 0x0e, + 0x66, 0xd7, 0x77, 0x99, 0x10, 0x5e, 0xa0, 0xcd, 0x6e, 0xc0, 0x9f, 0x73, 0x00, 0xb8, 0x0e, 0x67, + 0xd7, 0xe3, 0xeb, 0x71, 0x7a, 0x9a, 0xf9, 0xfc, 0x5c, 0x6a, 0xf1, 0x18, 0x8f, 0xe7, 0xb8, 0x34, + 0xfc, 0x5f, 0x30, 0x7c, 0x83, 0x90, 0x03, 0xdb, 0x80, 0xd3, 0x59, 0xcb, 0x2e, 0x4a, 0xd9, 0xed, + 0xb2, 0x77, 0xa7, 0x5f, 0x84, 0x73, 0x96, 0x71, 0x16, 0xe0, 0xeb, 0xc7, 0xc6, 0x9a, 0xd3, 0x17, + 0x35, 0xe0, 0x77, 0x38, 0x30, 0xec, 0xde, 0xf1, 0x17, 0x31, 0x4d, 0x8f, 0x57, 0x9d, 0xd4, 0x32, + 0x93, 0xe2, 0xcd, 0xe4, 0x73, 0x4a, 0xe1, 0x98, 0xe1, 0xd7, 0x1c, 0x18, 0xf5, 0x93, 0x0d, 0x5c, + 0x3a, 0x56, 0x94, 0x48, 0x5e, 0xea, 0x29, 0xc9, 0x23, 0x26, 0x49, 0x39, 0x99, 0x16, 0x0f, 0xa5, + 0x67, 0x4b, 0xa2, 0x14, 0x71, 0xd6, 0x95, 0xc6, 0xc9, 0x51, 0xf7, 0x97, 0xa5, 0x7e, 0x51, 0xe0, + 0xcf, 0x38, 0x90, 0xd8, 0x55, 0x68, 0xa9, 0xea, 0x24, 0xe3, 0x56, 0xf2, 0xda, 0xd6, 0x59, 0xe0, + 0x7d, 0x75, 0x2a, 0x5d, 0x62, 0x2a, 0x2d, 0x49, 0x6f, 0x8a, 0x87, 0x92, 0xf2, 0xbc, 0x02, 0x72, + 0x69, 0xf8, 0x03, 0x0e, 0x0c, 0x6f, 0xe0, 0x1a, 0xa6, 0xb8, 0x33, 0xd2, 0x7a, 0xf1, 0x7a, 0xd0, + 0xcc, 0xbf, 0x59, 0x3c, 0x0f, 0xa6, 0x00, 0xc8, 0x1b, 0xea, 0x75, 0x5c, 0xcf, 0xdb, 0xb4, 0x0a, + 0x07, 0xc0, 0x29, 0x30, 0x7c, 0xcb, 0xf9, 0x94, 0xe0, 0x24, 0x18, 0x34, 0xb1, 0x52, 0x06, 0x43, + 0x8f, 0x4d, 0x95, 0x62, 0x37, 0xf8, 0xd2, 0xcf, 0x1b, 0x7c, 0x7f, 0xe2, 0xc0, 0xe8, 0x55, 0x4c, + 0x6f, 0xdb, 0xd8, 0xac, 0x7f, 0x95, 0xe1, 0xf7, 0x29, 0xd7, 0xcc, 0xdf, 0x4d, 0xed, 0x80, 0x85, + 0x6e, 0x63, 0x45, 0x8b, 0x61, 0x9f, 0xe3, 0xc4, 0x07, 0x5c, 0x71, 0x80, 0xe9, 0x97, 0x85, 0x17, + 0x8e, 0xd3, 0xef, 0x63, 0x87, 0x81, 0xaf, 0xe5, 0xa7, 0x43, 0x20, 0x7e, 0x15, 0x53, 0xbf, 0x8b, + 0x70, 0x99, 0x5f, 0xee, 0xbf, 0x74, 0x7a, 0xf8, 0xc9, 0x17, 0x47, 0x4d, 0x7d, 0x32, 0xc8, 0x34, + 0xf8, 0x07, 0x0f, 0xbf, 0xe4, 0x8f, 0xd1, 0xa1, 0xd5, 0x9a, 0x78, 0x49, 0xb8, 0xdb, 0x88, 0xd3, + 0x88, 0x9e, 0x45, 0x2a, 0x56, 0xcf, 0x19, 0xa5, 0xe3, 0xcc, 0x7e, 0xd6, 0x61, 0xb8, 0x92, 0x3c, + 0x63, 0x8a, 0xe8, 0x7e, 0xda, 0x13, 0x37, 0x54, 0xfb, 0x7a, 0x77, 0xf9, 0x9d, 0x78, 0xed, 0x2e, + 0xbe, 0xab, 0x22, 0x3d, 0x19, 0x76, 0x96, 0xb6, 0x1e, 0xad, 0x73, 0x8f, 0xe3, 0x9e, 0x7a, 0x5a, + 0xcf, 0xe2, 0x1a, 0x2a, 0xbd, 0xf0, 0xb7, 0x3c, 0x18, 0xdc, 0x2c, 0x55, 0x09, 0xec, 0xf5, 0xe3, + 0x88, 0x65, 0x17, 0xb3, 0xee, 0x10, 0xe3, 0x27, 0x87, 0xe7, 0x86, 0x4c, 0xfd, 0x25, 0xd6, 0xcc, + 0x7f, 0x23, 0x06, 0x26, 0x70, 0xa9, 0x4a, 0x90, 0xe5, 0xb6, 0x5c, 0x60, 0x94, 0xad, 0x4c, 0xa3, + 0x04, 0x67, 0xee, 0xd8, 0x9a, 0xa6, 0x98, 0xf5, 0x1c, 0xda, 0xf4, 0xb6, 0x92, 0xf1, 0x8d, 0xf6, + 0xf3, 0x14, 0xdb, 0x4d, 0x6d, 0x00, 0x18, 0xbe, 0xb6, 0x4c, 0xda, 0x3e, 0x2f, 0xeb, 0x7b, 0x57, + 0x00, 0x7f, 0x71, 0x69, 0x05, 0xae, 0x81, 0x4b, 0x32, 0xa6, 0xb6, 0xa9, 0xe3, 0x32, 0x7a, 0x5c, + 0xc5, 0x3a, 0xa2, 0x55, 0x8c, 0x4c, 0x6c, 0x11, 0xdb, 0x2c, 0x61, 0xa4, 0x5a, 0x88, 0x62, 0xcd, + 0x20, 0xa6, 0x62, 0xaa, 0xb5, 0x3a, 0xb2, 0x75, 0xe5, 0x50, 0x51, 0x6b, 0x4a, 0xb1, 0x86, 0xb3, + 0xef, 0xbd, 0x0d, 0xf8, 0xd5, 0xa5, 0x55, 0xb8, 0x0a, 0xd2, 0xcf, 0x20, 0x50, 0x26, 0xd8, 0x42, + 0x3a, 0xa1, 0x08, 0x3f, 0x51, 0x2d, 0x9a, 0x85, 0xc3, 0x60, 0xf0, 0x27, 0x31, 0x8e, 0x67, 0x97, + 0xec, 0xe1, 0xf1, 0x69, 0xc2, 0x31, 0x8c, 0x78, 0xe4, 0x3a, 0xe6, 0xfe, 0x7c, 0x2a, 0x1e, 0x2c, + 0x38, 0xce, 0x59, 0xce, 0x7d, 0xb2, 0xb9, 0x0f, 0x61, 0xc7, 0x11, 0xfc, 0x05, 0x07, 0x26, 0x36, + 0x30, 0x36, 0xd8, 0x6f, 0x48, 0xce, 0xc6, 0xd7, 0xd3, 0xd9, 0x5c, 0x61, 0xba, 0x5d, 0x4e, 0xad, + 0x1e, 0x9b, 0xe2, 0x43, 0x3f, 0x4f, 0x67, 0x9d, 0x71, 0x85, 0x55, 0xa1, 0x3c, 0x00, 0x3b, 0xa4, + 0xa0, 0xea, 0x65, 0x55, 0xdf, 0xb7, 0xe0, 0x7c, 0x47, 0x06, 0xdf, 0xf0, 0x7e, 0xb9, 0xef, 0x99, + 0xdc, 0x07, 0xe0, 0x3d, 0x30, 0x72, 0x57, 0xd5, 0x30, 0xb1, 0x29, 0xec, 0x01, 0xd4, 0x13, 0xf9, + 0x34, 0x13, 0xff, 0x24, 0x9c, 0x0d, 0xda, 0x93, 0x7a, 0xc4, 0xaa, 0x20, 0xbe, 0x69, 0x9a, 0xc4, + 0x74, 0xca, 0xf7, 0x06, 0xa6, 0x8a, 0x5a, 0xb3, 0xfa, 0x66, 0x70, 0x8e, 0x31, 0x78, 0x15, 0x2e, + 0x84, 0x1c, 0xe6, 0x50, 0x7d, 0xac, 0xd2, 0x6a, 0xd9, 0xa3, 0xfa, 0x5d, 0x0e, 0xc0, 0xab, 0x98, + 0x46, 0x67, 0xb7, 0xe3, 0x7b, 0x84, 0x08, 0x46, 0x4f, 0x31, 0xde, 0x60, 0x62, 0x9c, 0x49, 0xcd, + 0x07, 0xc5, 0x70, 0x24, 0x28, 0x92, 0x72, 0x5d, 0x3c, 0x72, 0x3a, 0x02, 0x36, 0xe3, 0xc1, 0x6f, + 0x71, 0x60, 0x66, 0x97, 0x58, 0xd4, 0xa1, 0xc8, 0x50, 0x99, 0x20, 0xcf, 0x37, 0x26, 0xf6, 0xe4, + 0x2e, 0x32, 0xee, 0xe7, 0x53, 0xe7, 0x82, 0xdc, 0x0d, 0x62, 0x51, 0x47, 0x02, 0xf6, 0xab, 0xa0, + 0x2b, 0x86, 0x1f, 0x14, 0xc9, 0x5f, 0x71, 0xcd, 0xfc, 0x17, 0x1c, 0xac, 0xf4, 0x98, 0xda, 0x82, + 0x6f, 0xd8, 0x28, 0x93, 0x41, 0x8f, 0xab, 0x6a, 0xa9, 0x8a, 0xac, 0x2a, 0xb1, 0x6b, 0x65, 0x76, + 0xfd, 0x8a, 0x18, 0xd9, 0x16, 0x2e, 0x23, 0x55, 0x47, 0x46, 0x4d, 0x29, 0x61, 0x44, 0x2a, 0xec, + 0xa2, 0x96, 0x49, 0xc9, 0xd6, 0xb0, 0xee, 0xce, 0x02, 0xa8, 0x44, 0x34, 0x67, 0x71, 0x26, 0x79, + 0x1b, 0x2c, 0x76, 0xeb, 0x0c, 0x9c, 0x6b, 0xe4, 0xcf, 0x89, 0xfd, 0xbe, 0x35, 0x3e, 0x02, 0x27, + 0x4a, 0x8a, 0x86, 0x6b, 0xeb, 0x8a, 0x85, 0x3d, 0x1a, 0xce, 0x50, 0x03, 0x65, 0x30, 0xe4, 0xfe, + 0xb4, 0xd9, 0x6f, 0x20, 0xcd, 0x33, 0x1b, 0xce, 0xc2, 0x99, 0x50, 0x20, 0x39, 0x47, 0xd2, 0x47, + 0x60, 0x21, 0xaf, 0x13, 0x5a, 0xc5, 0xa6, 0xc7, 0xc9, 0x71, 0x5e, 0xe0, 0x52, 0xbd, 0x1b, 0xba, + 0x62, 0xfd, 0x32, 0x1e, 0x28, 0x7c, 0x31, 0xd2, 0xcc, 0x7f, 0x3e, 0x02, 0xff, 0xc0, 0x81, 0xd9, + 0x3c, 0x2a, 0xb8, 0xaf, 0xc3, 0x81, 0x14, 0xf0, 0x01, 0x38, 0xb1, 0x2f, 0xef, 0xae, 0x67, 0xae, + 0xba, 0xaa, 0x23, 0xc3, 0x24, 0x8f, 0x70, 0x89, 0xf6, 0x6b, 0xb2, 0x64, 0x5c, 0x27, 0x3a, 0xfe, + 0x2f, 0x4f, 0x35, 0x07, 0x3a, 0xfd, 0x11, 0x38, 0x51, 0xb8, 0xb3, 0x81, 0x56, 0x32, 0xeb, 0x35, + 0xc5, 0xb6, 0x30, 0xba, 0xa1, 0x96, 0xb0, 0x6e, 0x61, 0xb8, 0xd5, 0x1f, 0x65, 0xb1, 0x58, 0x23, + 0x45, 0x51, 0x53, 0x2c, 0x8a, 0x4d, 0xf1, 0xc6, 0xf6, 0xfa, 0xe6, 0xce, 0x9d, 0xcd, 0x2c, 0x7d, + 0x42, 0x25, 0x7e, 0x39, 0xbb, 0x94, 0xe6, 0xb9, 0xd8, 0xa0, 0x14, 0x57, 0x0c, 0xf7, 0x4d, 0x5b, + 0x25, 0xba, 0xf8, 0xc8, 0x22, 0xba, 0x34, 0x17, 0xdc, 0x79, 0x92, 0xa9, 0x10, 0x92, 0xd1, 0x54, + 0x0d, 0xe7, 0x3a, 0x20, 0x73, 0x3d, 0x20, 0xe5, 0x5d, 0xa7, 0x62, 0xac, 0xc0, 0x6d, 0x70, 0xb5, + 0xb3, 0x62, 0xd8, 0x16, 0x36, 0xdb, 0xd5, 0xa2, 0xaa, 0x1c, 0x62, 0x64, 0x60, 0x53, 0x53, 0x2d, + 0xcb, 0x09, 0x4c, 0x4a, 0x90, 0x52, 0x2a, 0x61, 0xcb, 0x0a, 0x55, 0x97, 0xac, 0xfc, 0x12, 0x35, + 0x68, 0x44, 0xbe, 0x06, 0xf8, 0xd5, 0xe5, 0x35, 0x98, 0x07, 0x93, 0xdb, 0x6f, 0x68, 0x48, 0x41, + 0x14, 0x2b, 0x06, 0xa1, 0x59, 0xb8, 0x04, 0xb2, 0xc9, 0xbe, 0x9e, 0xff, 0xee, 0x7f, 0x2f, 0x06, + 0xa6, 0xc1, 0x58, 0x41, 0xb1, 0xd4, 0x12, 0xeb, 0xff, 0x63, 0xa3, 0x1c, 0x78, 0x25, 0x34, 0x11, + 0x4c, 0x8f, 0xc6, 0x92, 0x63, 0x1f, 0x64, 0xf2, 0xbb, 0xdb, 0x99, 0xeb, 0xb8, 0x8e, 0x62, 0xe0, + 0x8f, 0x5c, 0x6b, 0x42, 0xf8, 0x1d, 0x37, 0xca, 0x0b, 0x83, 0xd2, 0x59, 0xdf, 0x87, 0x01, 0x87, + 0x8b, 0x44, 0xb1, 0x69, 0x55, 0x74, 0xfe, 0x10, 0x53, 0xfd, 0x1f, 0x9c, 0x5b, 0xec, 0x0d, 0x44, + 0xc9, 0x01, 0xd6, 0x0b, 0xff, 0x0f, 0x92, 0xee, 0xc0, 0x01, 0xe1, 0x55, 0x53, 0xd1, 0xa9, 0x85, + 0x9c, 0x85, 0x67, 0x3d, 0xb0, 0xe0, 0x8d, 0x21, 0x70, 0xd6, 0x3b, 0x64, 0x2b, 0xff, 0x74, 0x1d, + 0x0c, 0x29, 0x65, 0x4d, 0xd5, 0x61, 0x2e, 0x84, 0xaa, 0x97, 0x43, 0x60, 0xcc, 0x19, 0x0e, 0x98, + 0x6a, 0x51, 0xa7, 0x12, 0x1d, 0x62, 0xa4, 0xea, 0x15, 0x62, 0x6a, 0xcc, 0xdf, 0xc5, 0x45, 0x30, + 0x19, 0x34, 0xc5, 0x40, 0x74, 0x34, 0x2a, 0x9e, 0xef, 0x39, 0x1c, 0x45, 0x41, 0xcd, 0x6d, 0x70, + 0xea, 0x66, 0x3b, 0xfb, 0x04, 0xef, 0x54, 0xbf, 0x77, 0xe9, 0xfe, 0x58, 0xcb, 0x73, 0xc5, 0x61, + 0x76, 0x9f, 0x57, 0xfe, 0x13, 0x00, 0x00, 0xff, 0xff, 0x35, 0xba, 0x1f, 0xec, 0xc6, 0x27, 0x00, + 0x00, } diff --git a/examples/proto/examplepb/a_bit_of_everything.pb.gw.go b/examples/proto/examplepb/a_bit_of_everything.pb.gw.go index e9e8855f877..49621b876cc 100644 --- a/examples/proto/examplepb/a_bit_of_everything.pb.gw.go +++ b/examples/proto/examplepb/a_bit_of_everything.pb.gw.go @@ -33,7 +33,7 @@ var _ = runtime.String var _ = utilities.NewDoubleArray var ( - filter_ABitOfEverythingService_Create_0 = &utilities.DoubleArray{Encoding: map[string]int{"float_value": 0, "double_value": 1, "int64_value": 2, "uint64_value": 3, "int32_value": 4, "fixed64_value": 5, "fixed32_value": 6, "bool_value": 7, "string_value": 8, "uint32_value": 9, "sfixed32_value": 10, "sfixed64_value": 11, "sint32_value": 12, "sint64_value": 13, "nonConventionalNameValue": 14, "enum_value": 15, "path_enum_value": 16, "nested_path_enum_value": 17, "repeated_enum_value": 18, "enum_value_annotation": 19, "repeated_string_annotation": 20}, Base: []int{1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22}} + filter_ABitOfEverythingService_Create_0 = &utilities.DoubleArray{Encoding: map[string]int{"float_value": 0, "double_value": 1, "int64_value": 2, "uint64_value": 3, "int32_value": 4, "fixed64_value": 5, "fixed32_value": 6, "bool_value": 7, "string_value": 8, "uint32_value": 9, "sfixed32_value": 10, "sfixed64_value": 11, "sint32_value": 12, "sint64_value": 13, "nonConventionalNameValue": 14, "enum_value": 15, "path_enum_value": 16, "nested_path_enum_value": 17, "enum_value_annotation": 18}, Base: []int{1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, Check: []int{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20}} ) func request_ABitOfEverythingService_Create_0(ctx context.Context, marshaler runtime.Marshaler, client ABitOfEverythingServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { @@ -43,7 +43,6 @@ func request_ABitOfEverythingService_Create_0(ctx context.Context, marshaler run var ( val string e int32 - es []int32 ok bool err error _ = err @@ -253,23 +252,6 @@ func request_ABitOfEverythingService_Create_0(ctx context.Context, marshaler run protoReq.NestedPathEnumValue = pathenum.MessagePathEnum_NestedPathEnum(e) - val, ok = pathParams["repeated_enum_value"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "repeated_enum_value") - } - - es, err = runtime.EnumSlice(val, ",", NumericEnum_value) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "repeated_enum_value", err) - } - - s := make([]NumericEnum, len(es)) - for i, v := range es { - s[i] = NumericEnum(v) - } - protoReq.RepeatedEnumValue = s - val, ok = pathParams["enum_value_annotation"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "enum_value_annotation") @@ -283,17 +265,6 @@ func request_ABitOfEverythingService_Create_0(ctx context.Context, marshaler run protoReq.EnumValueAnnotation = NumericEnum(e) - val, ok = pathParams["repeated_string_annotation"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "repeated_string_annotation") - } - - protoReq.RepeatedStringAnnotation, err = runtime.StringSlice(val, ",") - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "repeated_string_annotation", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_ABitOfEverythingService_Create_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -1371,7 +1342,7 @@ func RegisterABitOfEverythingServiceHandlerClient(ctx context.Context, mux *runt } var ( - pattern_ABitOfEverythingService_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 2, 6, 1, 0, 4, 1, 5, 7, 1, 0, 4, 1, 5, 8, 1, 0, 4, 1, 5, 9, 1, 0, 4, 1, 5, 10, 1, 0, 4, 1, 5, 11, 2, 12, 1, 0, 4, 2, 5, 13, 1, 0, 4, 1, 5, 14, 1, 0, 4, 1, 5, 15, 1, 0, 4, 1, 5, 16, 1, 0, 4, 1, 5, 17, 1, 0, 4, 1, 5, 18, 1, 0, 4, 1, 5, 19, 1, 0, 4, 1, 5, 20, 1, 0, 4, 1, 5, 21, 1, 0, 4, 1, 5, 22, 1, 0, 4, 1, 5, 23, 1, 0, 4, 1, 5, 24, 1, 0, 4, 1, 5, 25}, []string{"v1", "example", "a_bit_of_everything", "float_value", "double_value", "int64_value", "separator", "uint64_value", "int32_value", "fixed64_value", "fixed32_value", "bool_value", "strprefix", "string_value", "uint32_value", "sfixed32_value", "sfixed64_value", "sint32_value", "sint64_value", "nonConventionalNameValue", "enum_value", "path_enum_value", "nested_path_enum_value", "repeated_enum_value", "enum_value_annotation", "repeated_string_annotation"}, "")) + pattern_ABitOfEverythingService_Create_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 2, 6, 1, 0, 4, 1, 5, 7, 1, 0, 4, 1, 5, 8, 1, 0, 4, 1, 5, 9, 1, 0, 4, 1, 5, 10, 1, 0, 4, 1, 5, 11, 2, 12, 1, 0, 4, 2, 5, 13, 1, 0, 4, 1, 5, 14, 1, 0, 4, 1, 5, 15, 1, 0, 4, 1, 5, 16, 1, 0, 4, 1, 5, 17, 1, 0, 4, 1, 5, 18, 1, 0, 4, 1, 5, 19, 1, 0, 4, 1, 5, 20, 1, 0, 4, 1, 5, 21, 1, 0, 4, 1, 5, 22, 1, 0, 4, 1, 5, 23}, []string{"v1", "example", "a_bit_of_everything", "float_value", "double_value", "int64_value", "separator", "uint64_value", "int32_value", "fixed64_value", "fixed32_value", "bool_value", "strprefix", "string_value", "uint32_value", "sfixed32_value", "sfixed64_value", "sint32_value", "sint64_value", "nonConventionalNameValue", "enum_value", "path_enum_value", "nested_path_enum_value", "enum_value_annotation"}, "")) pattern_ABitOfEverythingService_CreateBody_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "example", "a_bit_of_everything"}, "")) diff --git a/examples/proto/examplepb/a_bit_of_everything.proto b/examples/proto/examplepb/a_bit_of_everything.proto index 1fd471575a5..9a73797c510 100644 --- a/examples/proto/examplepb/a_bit_of_everything.proto +++ b/examples/proto/examplepb/a_bit_of_everything.proto @@ -285,7 +285,7 @@ service ABitOfEverythingService { // This API creates a new ABitOfEverything rpc Create(ABitOfEverything) returns (ABitOfEverything) { option (google.api.http) = { - post: "/v1/example/a_bit_of_everything/{float_value}/{double_value}/{int64_value}/separator/{uint64_value}/{int32_value}/{fixed64_value}/{fixed32_value}/{bool_value}/{string_value=strprefix/*}/{uint32_value}/{sfixed32_value}/{sfixed64_value}/{sint32_value}/{sint64_value}/{nonConventionalNameValue}/{enum_value}/{path_enum_value}/{nested_path_enum_value}/{repeated_enum_value}/{enum_value_annotation}/{repeated_string_annotation}" + post: "/v1/example/a_bit_of_everything/{float_value}/{double_value}/{int64_value}/separator/{uint64_value}/{int32_value}/{fixed64_value}/{fixed32_value}/{bool_value}/{string_value=strprefix/*}/{uint32_value}/{sfixed32_value}/{sfixed64_value}/{sint32_value}/{sint64_value}/{nonConventionalNameValue}/{enum_value}/{path_enum_value}/{nested_path_enum_value}/{enum_value_annotation}" }; } rpc CreateBody(ABitOfEverything) returns (ABitOfEverything) { diff --git a/examples/proto/examplepb/a_bit_of_everything.swagger.json b/examples/proto/examplepb/a_bit_of_everything.swagger.json index af0b88fd77c..b8639ec204f 100644 --- a/examples/proto/examplepb/a_bit_of_everything.swagger.json +++ b/examples/proto/examplepb/a_bit_of_everything.swagger.json @@ -437,7 +437,7 @@ } } }, - "/v1/example/a_bit_of_everything/{float_value}/{double_value}/{int64_value}/separator/{uint64_value}/{int32_value}/{fixed64_value}/{fixed32_value}/{bool_value}/{string_value}/{uint32_value}/{sfixed32_value}/{sfixed64_value}/{sint32_value}/{sint64_value}/{nonConventionalNameValue}/{enum_value}/{path_enum_value}/{nested_path_enum_value}/{repeated_enum_value}/{enum_value_annotation}/{repeated_string_annotation}": { + "/v1/example/a_bit_of_everything/{float_value}/{double_value}/{int64_value}/separator/{uint64_value}/{int32_value}/{fixed64_value}/{fixed32_value}/{bool_value}/{string_value}/{uint32_value}/{sfixed32_value}/{sfixed64_value}/{sint32_value}/{sint64_value}/{nonConventionalNameValue}/{enum_value}/{path_enum_value}/{nested_path_enum_value}/{enum_value_annotation}": { "post": { "summary": "Create a new ABitOfEverything", "description": "This API creates a new ABitOfEverything", @@ -602,22 +602,6 @@ "JKL" ] }, - { - "name": "repeated_enum_value", - "description": "repeated enum value. it is comma-separated in query", - "in": "path", - "required": true, - "type": "array", - "items": { - "type": "string", - "enum": [ - "ZERO", - "ONE" - ] - }, - "collectionFormat": "csv", - "minItems": 1 - }, { "name": "enum_value_annotation", "description": "Numeric enum description.", @@ -628,18 +612,6 @@ "ZERO", "ONE" ] - }, - { - "name": "repeated_string_annotation", - "description": "Repeated string description.", - "in": "path", - "required": true, - "type": "array", - "items": { - "type": "string" - }, - "collectionFormat": "csv", - "minItems": 1 } ], "tags": [ diff --git a/protoc-gen-swagger/genswagger/template.go b/protoc-gen-swagger/genswagger/template.go index e1c9eca76a0..54b9ce6ba12 100644 --- a/protoc-gen-swagger/genswagger/template.go +++ b/protoc-gen-swagger/genswagger/template.go @@ -1221,7 +1221,7 @@ func updateSwaggerDataFromComments(swaggerObject interface{}, comment string) er paragraphs := strings.Split(comment, "\n\n") - // If there is a summary (or summary-equivalent) and its empty, use the first + // If there is a summary (or summary-equivalent) and it's empty, use the first // paragraph as summary, and the rest as description. if summaryValue.CanSet() { summary := strings.TrimSpace(paragraphs[0]) diff --git a/runtime/marshal_jsonpb_test.go b/runtime/marshal_jsonpb_test.go index cec41bda914..77da0550b6c 100644 --- a/runtime/marshal_jsonpb_test.go +++ b/runtime/marshal_jsonpb_test.go @@ -42,6 +42,11 @@ func TestJSONPbMarshal(t *testing.T) { "a": examplepb.NumericEnum_ONE, "b": examplepb.NumericEnum_ZERO, }, + RepeatedEnumAnnotation: []examplepb.NumericEnum{}, + EnumValueAnnotation: examplepb.NumericEnum_ONE, + RepeatedStringAnnotation: []string{}, + RepeatedNestedAnnotation: []*examplepb.ABitOfEverything_Nested{}, + NestedAnnotation: &examplepb.ABitOfEverything_Nested{}, } for i, spec := range []struct { @@ -258,6 +263,11 @@ func TestJSONPbEncoder(t *testing.T) { "a": examplepb.NumericEnum_ONE, "b": examplepb.NumericEnum_ZERO, }, + RepeatedEnumAnnotation: []examplepb.NumericEnum{}, + EnumValueAnnotation: examplepb.NumericEnum_ONE, + RepeatedStringAnnotation: []string{}, + RepeatedNestedAnnotation: []*examplepb.ABitOfEverything_Nested{}, + NestedAnnotation: &examplepb.ABitOfEverything_Nested{}, } for i, spec := range []struct { From 8dfee105acc3c6b5c64e6284f6956fe2a377e97b Mon Sep 17 00:00:00 2001 From: fahernandez Date: Mon, 11 Feb 2019 17:48:40 -0600 Subject: [PATCH 4/9] 863 removed unused code --- examples/proto/examplepb/echo_service.swagger.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/proto/examplepb/echo_service.swagger.json b/examples/proto/examplepb/echo_service.swagger.json index bc9feb32160..f1687bccf64 100644 --- a/examples/proto/examplepb/echo_service.swagger.json +++ b/examples/proto/examplepb/echo_service.swagger.json @@ -1,7 +1,7 @@ { "swagger": "2.0", "info": { - "title": "examples/proto/examplepb/echo_service.proto", + "title": "Echo Service", "description": "Echo Service API consists of a single service which returns\na message.", "version": "version not set" }, From fbd08066f587c205bfc68a43dbc5c092ab077477 Mon Sep 17 00:00:00 2001 From: fahernandez Date: Mon, 11 Feb 2019 17:54:35 -0600 Subject: [PATCH 5/9] 863 completing proto documentation --- examples/clients/echo/api_client.go | 2 +- examples/clients/echo/api_response.go | 2 +- examples/clients/echo/configuration.go | 2 +- examples/clients/echo/echo_service_api.go | 2 +- examples/clients/echo/examplepb_embedded.go | 2 +- examples/clients/echo/examplepb_simple_message.go | 2 +- examples/proto/examplepb/echo_service.swagger.json | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/examples/clients/echo/api_client.go b/examples/clients/echo/api_client.go index 7a517148026..d54e3e68565 100644 --- a/examples/clients/echo/api_client.go +++ b/examples/clients/echo/api_client.go @@ -1,5 +1,5 @@ /* - * Echo Service + * examples/proto/examplepb/echo_service.proto * * Echo Service API consists of a single service which returns a message. * diff --git a/examples/clients/echo/api_response.go b/examples/clients/echo/api_response.go index 8b0d07c4a13..a4f0ab08001 100644 --- a/examples/clients/echo/api_response.go +++ b/examples/clients/echo/api_response.go @@ -1,5 +1,5 @@ /* - * Echo Service + * examples/proto/examplepb/echo_service.proto * * Echo Service API consists of a single service which returns a message. * diff --git a/examples/clients/echo/configuration.go b/examples/clients/echo/configuration.go index 9a75a30aeec..6441b8dc698 100644 --- a/examples/clients/echo/configuration.go +++ b/examples/clients/echo/configuration.go @@ -1,5 +1,5 @@ /* - * Echo Service + * examples/proto/examplepb/echo_service.proto * * Echo Service API consists of a single service which returns a message. * diff --git a/examples/clients/echo/echo_service_api.go b/examples/clients/echo/echo_service_api.go index 6ae7cf85a32..7625bc9eec8 100644 --- a/examples/clients/echo/echo_service_api.go +++ b/examples/clients/echo/echo_service_api.go @@ -1,5 +1,5 @@ /* - * Echo Service + * examples/proto/examplepb/echo_service.proto * * Echo Service API consists of a single service which returns a message. * diff --git a/examples/clients/echo/examplepb_embedded.go b/examples/clients/echo/examplepb_embedded.go index 4b5fe265ac9..ad76336c25b 100644 --- a/examples/clients/echo/examplepb_embedded.go +++ b/examples/clients/echo/examplepb_embedded.go @@ -1,5 +1,5 @@ /* - * Echo Service + * examples/proto/examplepb/echo_service.proto * * Echo Service API consists of a single service which returns a message. * diff --git a/examples/clients/echo/examplepb_simple_message.go b/examples/clients/echo/examplepb_simple_message.go index 366a6876665..2b9b366e57e 100644 --- a/examples/clients/echo/examplepb_simple_message.go +++ b/examples/clients/echo/examplepb_simple_message.go @@ -1,5 +1,5 @@ /* - * Echo Service + * examples/proto/examplepb/echo_service.proto * * Echo Service API consists of a single service which returns a message. * diff --git a/examples/proto/examplepb/echo_service.swagger.json b/examples/proto/examplepb/echo_service.swagger.json index f1687bccf64..bc9feb32160 100644 --- a/examples/proto/examplepb/echo_service.swagger.json +++ b/examples/proto/examplepb/echo_service.swagger.json @@ -1,7 +1,7 @@ { "swagger": "2.0", "info": { - "title": "Echo Service", + "title": "examples/proto/examplepb/echo_service.proto", "description": "Echo Service API consists of a single service which returns\na message.", "version": "version not set" }, From e420090c656290c6d1c815e6ea2cc3a736782584 Mon Sep 17 00:00:00 2001 From: fahernandez Date: Mon, 11 Feb 2019 18:01:31 -0600 Subject: [PATCH 6/9] 863 fixing node test --- examples/browser/a_bit_of_everything_service.spec.js | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/browser/a_bit_of_everything_service.spec.js b/examples/browser/a_bit_of_everything_service.spec.js index 5d8e792fda9..21512ab78aa 100644 --- a/examples/browser/a_bit_of_everything_service.spec.js +++ b/examples/browser/a_bit_of_everything_service.spec.js @@ -37,6 +37,7 @@ describe('ABitOfEverythingService', function() { enum_value: "ONE", path_enum_value: "DEF", nested_path_enum_value: "JKL", + enum_value_annotation: "ONE", }; beforeEach(function(done) { From 9841c481d47a0edde75cdf91bf49a090067402b6 Mon Sep 17 00:00:00 2001 From: fahernandez Date: Tue, 12 Feb 2019 10:46:17 -0600 Subject: [PATCH 7/9] 863 keeping comment precendece on swagger package definition --- examples/clients/echo/api_client.go | 2 +- examples/clients/echo/api_response.go | 2 +- examples/clients/echo/configuration.go | 2 +- examples/clients/echo/echo_service_api.go | 2 +- examples/clients/echo/examplepb_embedded.go | 2 +- .../clients/echo/examplepb_simple_message.go | 2 +- .../proto/examplepb/echo_service.swagger.json | 2 +- protoc-gen-swagger/genswagger/template.go | 20 ++++++++++--------- 8 files changed, 18 insertions(+), 16 deletions(-) diff --git a/examples/clients/echo/api_client.go b/examples/clients/echo/api_client.go index d54e3e68565..7a517148026 100644 --- a/examples/clients/echo/api_client.go +++ b/examples/clients/echo/api_client.go @@ -1,5 +1,5 @@ /* - * examples/proto/examplepb/echo_service.proto + * Echo Service * * Echo Service API consists of a single service which returns a message. * diff --git a/examples/clients/echo/api_response.go b/examples/clients/echo/api_response.go index a4f0ab08001..8b0d07c4a13 100644 --- a/examples/clients/echo/api_response.go +++ b/examples/clients/echo/api_response.go @@ -1,5 +1,5 @@ /* - * examples/proto/examplepb/echo_service.proto + * Echo Service * * Echo Service API consists of a single service which returns a message. * diff --git a/examples/clients/echo/configuration.go b/examples/clients/echo/configuration.go index 6441b8dc698..9a75a30aeec 100644 --- a/examples/clients/echo/configuration.go +++ b/examples/clients/echo/configuration.go @@ -1,5 +1,5 @@ /* - * examples/proto/examplepb/echo_service.proto + * Echo Service * * Echo Service API consists of a single service which returns a message. * diff --git a/examples/clients/echo/echo_service_api.go b/examples/clients/echo/echo_service_api.go index 7625bc9eec8..6ae7cf85a32 100644 --- a/examples/clients/echo/echo_service_api.go +++ b/examples/clients/echo/echo_service_api.go @@ -1,5 +1,5 @@ /* - * examples/proto/examplepb/echo_service.proto + * Echo Service * * Echo Service API consists of a single service which returns a message. * diff --git a/examples/clients/echo/examplepb_embedded.go b/examples/clients/echo/examplepb_embedded.go index ad76336c25b..4b5fe265ac9 100644 --- a/examples/clients/echo/examplepb_embedded.go +++ b/examples/clients/echo/examplepb_embedded.go @@ -1,5 +1,5 @@ /* - * examples/proto/examplepb/echo_service.proto + * Echo Service * * Echo Service API consists of a single service which returns a message. * diff --git a/examples/clients/echo/examplepb_simple_message.go b/examples/clients/echo/examplepb_simple_message.go index 2b9b366e57e..366a6876665 100644 --- a/examples/clients/echo/examplepb_simple_message.go +++ b/examples/clients/echo/examplepb_simple_message.go @@ -1,5 +1,5 @@ /* - * examples/proto/examplepb/echo_service.proto + * Echo Service * * Echo Service API consists of a single service which returns a message. * diff --git a/examples/proto/examplepb/echo_service.swagger.json b/examples/proto/examplepb/echo_service.swagger.json index bc9feb32160..f1687bccf64 100644 --- a/examples/proto/examplepb/echo_service.swagger.json +++ b/examples/proto/examplepb/echo_service.swagger.json @@ -1,7 +1,7 @@ { "swagger": "2.0", "info": { - "title": "examples/proto/examplepb/echo_service.proto", + "title": "Echo Service", "description": "Echo Service API consists of a single service which returns\na message.", "version": "version not set" }, diff --git a/protoc-gen-swagger/genswagger/template.go b/protoc-gen-swagger/genswagger/template.go index 54b9ce6ba12..e779542736a 100644 --- a/protoc-gen-swagger/genswagger/template.go +++ b/protoc-gen-swagger/genswagger/template.go @@ -103,7 +103,7 @@ func queryParams(message *descriptor.Message, field *descriptor.Field, prefix st fieldType := field.GetTypeName() if message.File != nil { comments := fieldProtoComments(reg, message, field) - if err := updateSwaggerDataFromComments(&schema, comments); err != nil { + if err := updateSwaggerDataFromComments(&schema, comments, "MessageType"); err != nil { return nil, err } } @@ -258,7 +258,7 @@ func renderMessagesAsDefinition(messages messageMap, d swaggerDefinitionsObject, }, } msgComments := protoComments(reg, msg.File, msg.Outers, "MessageType", int32(msg.Index)) - if err := updateSwaggerDataFromComments(&schema, msgComments); err != nil { + if err := updateSwaggerDataFromComments(&schema, msgComments, "MessageType"); err != nil { panic(err) } opts, err := extractSchemaOptionFromMessageDescriptor(msg.DescriptorProto) @@ -302,7 +302,7 @@ func renderMessagesAsDefinition(messages messageMap, d swaggerDefinitionsObject, for _, f := range msg.Fields { fieldValue := schemaOfField(f, reg, customRefs) comments := fieldProtoComments(reg, msg, f) - if err := updateSwaggerDataFromComments(&fieldValue, comments); err != nil { + if err := updateSwaggerDataFromComments(&fieldValue, comments, "MessageType"); err != nil { panic(err) } @@ -507,7 +507,7 @@ func renderEnumerationsAsDefinition(enums enumMap, d swaggerDefinitionsObject, r Default: defaultValue, }, } - if err := updateSwaggerDataFromComments(&enumSchemaObject, enumComments); err != nil { + if err := updateSwaggerDataFromComments(&enumSchemaObject, enumComments, "EnumType"); err != nil { panic(err) } @@ -858,7 +858,7 @@ func renderServices(services []*descriptor.Service, paths swaggerPathsObject, re } methComments := protoComments(reg, svc.File, nil, "Method", int32(svcIdx), methProtoPath, int32(methIdx)) - if err := updateSwaggerDataFromComments(operationObject, methComments); err != nil { + if err := updateSwaggerDataFromComments(operationObject, methComments, "Method"); err != nil { panic(err) } @@ -982,7 +982,7 @@ func applyTemplate(p param) (*swaggerObject, error) { // File itself might have some comments and metadata. packageProtoPath := protoPathIndex(reflect.TypeOf((*pbdescriptor.FileDescriptorProto)(nil)), "Package") packageComments := protoComments(p.reg, p.File, nil, "Package", packageProtoPath) - if err := updateSwaggerDataFromComments(&s, packageComments); err != nil { + if err := updateSwaggerDataFromComments(&s, packageComments, "Package"); err != nil { panic(err) } @@ -1196,7 +1196,7 @@ func applyTemplate(p param) (*swaggerObject, error) { // // If there is no 'Summary', the same behavior will be attempted on 'Title', // but only if the last character is not a period. -func updateSwaggerDataFromComments(swaggerObject interface{}, comment string) error { +func updateSwaggerDataFromComments(swaggerObject interface{}, comment string, typeName string) error { if len(comment) == 0 { return nil } @@ -1228,7 +1228,8 @@ func updateSwaggerDataFromComments(swaggerObject interface{}, comment string) er description := strings.TrimSpace(strings.Join(paragraphs[1:], "\n\n")) if !usingTitle || (len(summary) > 0 && summary[len(summary)-1] != '.') { // overrides the schema value only if it's empty - if summaryValue.Len() == 0 { + // keep the comment precedence when updating the package definition + if summaryValue.Len() == 0 || typeName == "Package" { summaryValue.Set(reflect.ValueOf(summary)) } if len(description) > 0 { @@ -1236,7 +1237,8 @@ func updateSwaggerDataFromComments(swaggerObject interface{}, comment string) er return fmt.Errorf("Encountered object type with a summary, but no description") } // overrides the schema value only if it's empty - if descriptionValue.Len() == 0 { + // keep the comment precedence when updating the package definition + if descriptionValue.Len() == 0 || typeName == "Package" { descriptionValue.Set(reflect.ValueOf(description)) } } From 8964c8e09f394220750b49deb30ee91de40dbc53 Mon Sep 17 00:00:00 2001 From: fahernandez Date: Tue, 12 Feb 2019 11:05:40 -0600 Subject: [PATCH 8/9] 863 fixing code format --- protoc-gen-swagger/genswagger/template.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/protoc-gen-swagger/genswagger/template.go b/protoc-gen-swagger/genswagger/template.go index e779542736a..8f440e729a6 100644 --- a/protoc-gen-swagger/genswagger/template.go +++ b/protoc-gen-swagger/genswagger/template.go @@ -1238,9 +1238,9 @@ func updateSwaggerDataFromComments(swaggerObject interface{}, comment string, ty } // overrides the schema value only if it's empty // keep the comment precedence when updating the package definition - if descriptionValue.Len() == 0 || typeName == "Package" { + if descriptionValue.Len() == 0 || typeName == "Package" { descriptionValue.Set(reflect.ValueOf(description)) - } + } } return nil } From a1d616b85bbc2f97e6b00fbf435466a13d417ddd Mon Sep 17 00:00:00 2001 From: fahernandez Date: Tue, 12 Feb 2019 13:04:38 -0600 Subject: [PATCH 9/9] 863 changing field options override behavior for schema package object --- protoc-gen-swagger/genswagger/template.go | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/protoc-gen-swagger/genswagger/template.go b/protoc-gen-swagger/genswagger/template.go index 8f440e729a6..ccaee513be6 100644 --- a/protoc-gen-swagger/genswagger/template.go +++ b/protoc-gen-swagger/genswagger/template.go @@ -103,7 +103,7 @@ func queryParams(message *descriptor.Message, field *descriptor.Field, prefix st fieldType := field.GetTypeName() if message.File != nil { comments := fieldProtoComments(reg, message, field) - if err := updateSwaggerDataFromComments(&schema, comments, "MessageType"); err != nil { + if err := updateSwaggerDataFromComments(&schema, comments, false); err != nil { return nil, err } } @@ -258,7 +258,7 @@ func renderMessagesAsDefinition(messages messageMap, d swaggerDefinitionsObject, }, } msgComments := protoComments(reg, msg.File, msg.Outers, "MessageType", int32(msg.Index)) - if err := updateSwaggerDataFromComments(&schema, msgComments, "MessageType"); err != nil { + if err := updateSwaggerDataFromComments(&schema, msgComments, false); err != nil { panic(err) } opts, err := extractSchemaOptionFromMessageDescriptor(msg.DescriptorProto) @@ -302,7 +302,7 @@ func renderMessagesAsDefinition(messages messageMap, d swaggerDefinitionsObject, for _, f := range msg.Fields { fieldValue := schemaOfField(f, reg, customRefs) comments := fieldProtoComments(reg, msg, f) - if err := updateSwaggerDataFromComments(&fieldValue, comments, "MessageType"); err != nil { + if err := updateSwaggerDataFromComments(&fieldValue, comments, false); err != nil { panic(err) } @@ -507,7 +507,7 @@ func renderEnumerationsAsDefinition(enums enumMap, d swaggerDefinitionsObject, r Default: defaultValue, }, } - if err := updateSwaggerDataFromComments(&enumSchemaObject, enumComments, "EnumType"); err != nil { + if err := updateSwaggerDataFromComments(&enumSchemaObject, enumComments, false); err != nil { panic(err) } @@ -858,7 +858,7 @@ func renderServices(services []*descriptor.Service, paths swaggerPathsObject, re } methComments := protoComments(reg, svc.File, nil, "Method", int32(svcIdx), methProtoPath, int32(methIdx)) - if err := updateSwaggerDataFromComments(operationObject, methComments, "Method"); err != nil { + if err := updateSwaggerDataFromComments(operationObject, methComments, false); err != nil { panic(err) } @@ -982,7 +982,7 @@ func applyTemplate(p param) (*swaggerObject, error) { // File itself might have some comments and metadata. packageProtoPath := protoPathIndex(reflect.TypeOf((*pbdescriptor.FileDescriptorProto)(nil)), "Package") packageComments := protoComments(p.reg, p.File, nil, "Package", packageProtoPath) - if err := updateSwaggerDataFromComments(&s, packageComments, "Package"); err != nil { + if err := updateSwaggerDataFromComments(&s, packageComments, true); err != nil { panic(err) } @@ -1196,7 +1196,7 @@ func applyTemplate(p param) (*swaggerObject, error) { // // If there is no 'Summary', the same behavior will be attempted on 'Title', // but only if the last character is not a period. -func updateSwaggerDataFromComments(swaggerObject interface{}, comment string, typeName string) error { +func updateSwaggerDataFromComments(swaggerObject interface{}, comment string, isPackageObject bool) error { if len(comment) == 0 { return nil } @@ -1229,7 +1229,7 @@ func updateSwaggerDataFromComments(swaggerObject interface{}, comment string, ty if !usingTitle || (len(summary) > 0 && summary[len(summary)-1] != '.') { // overrides the schema value only if it's empty // keep the comment precedence when updating the package definition - if summaryValue.Len() == 0 || typeName == "Package" { + if summaryValue.Len() == 0 || isPackageObject { summaryValue.Set(reflect.ValueOf(summary)) } if len(description) > 0 { @@ -1238,7 +1238,7 @@ func updateSwaggerDataFromComments(swaggerObject interface{}, comment string, ty } // overrides the schema value only if it's empty // keep the comment precedence when updating the package definition - if descriptionValue.Len() == 0 || typeName == "Package" { + if descriptionValue.Len() == 0 || isPackageObject { descriptionValue.Set(reflect.ValueOf(description)) } } @@ -1248,7 +1248,7 @@ func updateSwaggerDataFromComments(swaggerObject interface{}, comment string, ty // There was no summary field on the swaggerObject. Try to apply the // whole comment into description if the swagger object description is empty. - if descriptionValue.CanSet() && descriptionValue.Len() == 0 { + if descriptionValue.CanSet() && (descriptionValue.Len() == 0 || isPackageObject){ descriptionValue.Set(reflect.ValueOf(strings.Join(paragraphs, "\n\n"))) return nil }