From 92218224b669754f7e4337d22608a8aadae36ae0 Mon Sep 17 00:00:00 2001 From: Fabian Hernandez Date: Tue, 22 Jan 2019 11:44:56 -0600 Subject: [PATCH] Adding support for default and required swagger annotation fields. (#852) * Adding support for default and required swagger annotation fields:Solves issue #851 * Fixing test for swagger generation * updating swagger definition * removing breaking changes over enums * Adding example for required field as an array --- .../abe/a_bit_of_everything_service_api.go | 6 +- .../abe/examplepb_a_bit_of_everything.go | 5 +- .../proto/examplepb/a_bit_of_everything.pb.go | 406 +++++++++--------- .../proto/examplepb/a_bit_of_everything.proto | 4 +- .../a_bit_of_everything.swagger.json | 21 +- protoc-gen-swagger/genswagger/template.go | 25 +- 6 files changed, 251 insertions(+), 216 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 85e864ca833..1e8956c2aff 100644 --- a/examples/clients/abe/a_bit_of_everything_service_api.go +++ b/examples/clients/abe/a_bit_of_everything_service_api.go @@ -42,7 +42,7 @@ func NewABitOfEverythingServiceApiWithBasePath(basePath string) *ABitOfEverythin * Create a new ABitOfEverything * This API creates a new ABitOfEverything * - * @param floatValue + * @param floatValue Float value field * @param doubleValue * @param int64Value * @param uint64Value @@ -521,10 +521,10 @@ func (a ABitOfEverythingServiceApi) GetMessageWithBody(id string, body Examplepb * * * @param uuid + * @param floatValue Float value field * @param singleNestedName name is nested field. * @param singleNestedAmount * @param singleNestedOk - FALSE: FALSE is false. - TRUE: TRUE is true. - * @param floatValue * @param doubleValue * @param int64Value * @param uint64Value @@ -549,7 +549,7 @@ func (a ABitOfEverythingServiceApi) GetMessageWithBody(id string, body Examplepb * @param repeatedEnumValue repeated enum value. it is comma-separated in query. - ZERO: ZERO means 0 - ONE: ONE means 1 * @return *interface{} */ -func (a ABitOfEverythingServiceApi) GetQuery(uuid string, singleNestedName string, singleNestedAmount int64, singleNestedOk string, floatValue float32, 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) (*interface{}, *APIResponse, error) { var localVarHttpMethod = strings.ToUpper("Get") // create path and map variables diff --git a/examples/clients/abe/examplepb_a_bit_of_everything.go b/examples/clients/abe/examplepb_a_bit_of_everything.go index 9701914d126..91320d0e7c3 100644 --- a/examples/clients/abe/examplepb_a_bit_of_everything.go +++ b/examples/clients/abe/examplepb_a_bit_of_everything.go @@ -23,11 +23,12 @@ type ExamplepbABitOfEverything struct { Nested []ABitOfEverythingNested `json:"nested,omitempty"` + // Float value field FloatValue float32 `json:"float_value,omitempty"` - DoubleValue float64 `json:"double_value,omitempty"` + DoubleValue float64 `json:"double_value"` - Int64Value string `json:"int64_value,omitempty"` + Int64Value string `json:"int64_value"` Uint64Value string `json:"uint64_value,omitempty"` diff --git a/examples/proto/examplepb/a_bit_of_everything.pb.go b/examples/proto/examplepb/a_bit_of_everything.pb.go index bb0eb2d17c9..896288bd685 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_583e142cf4e91dc2, []int{0} + return fileDescriptor_a_bit_of_everything_74470c9779693dcd, []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_583e142cf4e91dc2, []int{0, 0, 0} + return fileDescriptor_a_bit_of_everything_74470c9779693dcd, []int{0, 0, 0} } // Intentionaly complicated message type to cover many features of Protobuf. @@ -129,7 +129,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_583e142cf4e91dc2, []int{0} + return fileDescriptor_a_bit_of_everything_74470c9779693dcd, []int{0} } func (m *ABitOfEverything) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ABitOfEverything.Unmarshal(m, b) @@ -467,7 +467,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_583e142cf4e91dc2, []int{0, 0} + return fileDescriptor_a_bit_of_everything_74470c9779693dcd, []int{0, 0} } func (m *ABitOfEverything_Nested) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ABitOfEverything_Nested.Unmarshal(m, b) @@ -536,7 +536,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_583e142cf4e91dc2, []int{1} + return fileDescriptor_a_bit_of_everything_74470c9779693dcd, []int{1} } func (m *ABitOfEverythingRepeated) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ABitOfEverythingRepeated.Unmarshal(m, b) @@ -679,7 +679,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_583e142cf4e91dc2, []int{2} + return fileDescriptor_a_bit_of_everything_74470c9779693dcd, []int{2} } func (m *Body) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Body.Unmarshal(m, b) @@ -718,7 +718,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_583e142cf4e91dc2, []int{3} + return fileDescriptor_a_bit_of_everything_74470c9779693dcd, []int{3} } func (m *MessageWithBody) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MessageWithBody.Unmarshal(m, b) @@ -765,7 +765,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_583e142cf4e91dc2, []int{4} + return fileDescriptor_a_bit_of_everything_74470c9779693dcd, []int{4} } func (m *UpdateV2Request) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_UpdateV2Request.Unmarshal(m, b) @@ -1529,198 +1529,200 @@ var _AnotherServiceWithNoBindings_serviceDesc = grpc.ServiceDesc{ } func init() { - proto.RegisterFile("examples/proto/examplepb/a_bit_of_everything.proto", fileDescriptor_a_bit_of_everything_583e142cf4e91dc2) -} - -var fileDescriptor_a_bit_of_everything_583e142cf4e91dc2 = []byte{ - // 3012 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x39, 0x5b, 0x6f, 0x1b, 0xc7, - 0xb9, 0x5a, 0x2e, 0x75, 0x1b, 0xdd, 0xa8, 0x91, 0x2f, 0x32, 0xad, 0x44, 0x63, 0xc6, 0x39, 0xd9, - 0x28, 0x26, 0x57, 0xa2, 0x14, 0xc7, 0x66, 0x90, 0xf8, 0x50, 0x17, 0xdb, 0x8a, 0x6d, 0x59, 0x5e, - 0x3b, 0x3e, 0x81, 0x63, 0x47, 0x18, 0x92, 0x43, 0x72, 0x2d, 0xee, 0xce, 0x66, 0x77, 0x56, 0x36, - 0x0f, 0x0f, 0xcf, 0xc9, 0x69, 0x81, 0x16, 0x6d, 0x1e, 0x0a, 0x28, 0xe8, 0x4b, 0x51, 0xf4, 0x17, - 0xf4, 0xb5, 0x4f, 0x79, 0x68, 0xfb, 0xd0, 0xa7, 0xbe, 0xb5, 0x45, 0x80, 0xa2, 0x40, 0x5f, 0xda, - 0x02, 0xfd, 0x05, 0x2d, 0x8a, 0x02, 0x45, 0x31, 0xb3, 0xbb, 0xd4, 0xee, 0x92, 0xb4, 0x4c, 0x3b, - 0xc8, 0x8b, 0xb4, 0x33, 0xf3, 0xdd, 0xbf, 0x6f, 0xbe, 0xcb, 0x10, 0xe4, 0xc9, 0x53, 0x6c, 0x58, - 0x0d, 0xe2, 0xa8, 0x96, 0x4d, 0x19, 0x55, 0xfd, 0xa5, 0x55, 0x52, 0xf1, 0x5e, 0x49, 0x67, 0x7b, - 0xb4, 0xba, 0x47, 0x0e, 0x88, 0xdd, 0x64, 0x75, 0xdd, 0xac, 0xe5, 0x04, 0x0c, 0x5c, 0xac, 0xd9, - 0x56, 0x39, 0x57, 0xc3, 0x8c, 0x3c, 0xc1, 0xcd, 0x5c, 0x40, 0x20, 0xd7, 0x41, 0x4d, 0x2f, 0xd4, - 0x28, 0xad, 0x35, 0x88, 0x8a, 0x2d, 0x5d, 0xc5, 0xa6, 0x49, 0x19, 0x66, 0x3a, 0x35, 0x1d, 0x0f, - 0x3d, 0x8d, 0xfc, 0x53, 0xb1, 0x2a, 0xb9, 0x55, 0xb5, 0xaa, 0x93, 0x46, 0x65, 0xcf, 0xc0, 0xce, - 0xbe, 0x0f, 0x71, 0x36, 0x0e, 0x41, 0x0c, 0x8b, 0x35, 0xfd, 0xc3, 0x57, 0xe3, 0x87, 0x15, 0xd7, - 0x16, 0xf4, 0xfd, 0xf3, 0x37, 0x62, 0x1a, 0x59, 0x98, 0xd5, 0x89, 0xe9, 0x1a, 0xe2, 0x63, 0x8f, - 0x7f, 0x05, 0x72, 0xc4, 0x00, 0x1d, 0xb7, 0xa4, 0x1a, 0xc4, 0x71, 0x70, 0x8d, 0xf8, 0x10, 0xe7, - 0xba, 0x21, 0xf2, 0x31, 0x90, 0xc5, 0xb8, 0x34, 0x4c, 0x37, 0x88, 0xc3, 0xb0, 0x61, 0xf9, 0x00, - 0x17, 0xc4, 0xbf, 0x72, 0xb6, 0x46, 0xcc, 0xac, 0xf3, 0x04, 0xd7, 0x6a, 0xc4, 0x56, 0xa9, 0x25, - 0xec, 0xd1, 0x6d, 0x9b, 0xcc, 0x0f, 0x4f, 0x80, 0x54, 0x71, 0x5d, 0x67, 0xb7, 0xab, 0x5b, 0x1d, - 0xab, 0xc3, 0x47, 0x60, 0xca, 0xd1, 0xcd, 0x5a, 0x83, 0xec, 0x99, 0xc4, 0x61, 0xa4, 0x32, 0x7f, - 0x06, 0x49, 0xca, 0x44, 0xfe, 0x52, 0xee, 0x18, 0x3f, 0xe4, 0xe2, 0x94, 0x72, 0x3b, 0x02, 0x5f, - 0x9b, 0xf4, 0xc8, 0x79, 0x2b, 0x58, 0x07, 0x49, 0xd7, 0xd5, 0x2b, 0xf3, 0x12, 0x92, 0x94, 0xf1, - 0xf5, 0x7b, 0x87, 0xc5, 0x3b, 0x9f, 0x49, 0xd2, 0xf7, 0xa5, 0x1b, 0x1f, 0xe3, 0x6c, 0xb5, 0x98, - 0xbd, 0xba, 0x9c, 0xbd, 0xfc, 0xa8, 0x75, 0xa9, 0x9d, 0x0d, 0x2f, 0xd7, 0x06, 0x59, 0xae, 0xe4, - 0xdb, 0x9a, 0xe0, 0x00, 0x77, 0xc1, 0x88, 0xaf, 0x41, 0x02, 0xc9, 0x2f, 0xa5, 0x81, 0x4f, 0x07, - 0x2e, 0x82, 0x89, 0x6a, 0x83, 0x62, 0xb6, 0x77, 0x80, 0x1b, 0x2e, 0x99, 0x97, 0x91, 0xa4, 0x24, - 0x34, 0x20, 0xb6, 0xee, 0xf3, 0x1d, 0x78, 0x0e, 0x4c, 0x56, 0xa8, 0x5b, 0x6a, 0x10, 0x1f, 0x22, - 0x89, 0x24, 0x45, 0xd2, 0x26, 0xbc, 0x3d, 0x0f, 0x64, 0x11, 0x4c, 0xe8, 0x26, 0xbb, 0xb8, 0xe6, - 0x43, 0x0c, 0x23, 0x49, 0x91, 0x35, 0x20, 0xb6, 0x3a, 0x34, 0xdc, 0x30, 0xc4, 0x08, 0x92, 0x94, - 0xa4, 0x36, 0xe1, 0x86, 0x40, 0x3c, 0x1a, 0xab, 0x79, 0x1f, 0x62, 0x14, 0x49, 0xca, 0xb0, 0xa0, - 0xb1, 0x9a, 0xf7, 0x00, 0x5e, 0x03, 0x53, 0x55, 0xfd, 0x29, 0xa9, 0x74, 0x88, 0x8c, 0x21, 0x49, - 0x19, 0xd1, 0x26, 0xfd, 0xcd, 0x28, 0x50, 0x87, 0xce, 0x38, 0x92, 0x94, 0x51, 0x1f, 0x28, 0xa0, - 0xf4, 0x0a, 0x00, 0x25, 0x4a, 0x1b, 0x3e, 0x04, 0x40, 0x92, 0x32, 0xa6, 0x8d, 0xf3, 0x9d, 0x8e, - 0xb0, 0x0e, 0xb3, 0x75, 0xb3, 0xe6, 0x03, 0x4c, 0x70, 0xaf, 0x6a, 0x13, 0xde, 0x5e, 0x47, 0xd8, - 0x52, 0x93, 0x11, 0xc7, 0x87, 0x78, 0x05, 0x49, 0xca, 0xa4, 0x06, 0xc4, 0x56, 0x44, 0xe1, 0x8e, - 0x18, 0x53, 0x48, 0x52, 0xa6, 0x3c, 0x85, 0x03, 0x29, 0x6e, 0x00, 0xc0, 0xaf, 0x92, 0x0f, 0x30, - 0x8d, 0x24, 0x65, 0x3a, 0x7f, 0xe1, 0x58, 0x77, 0xee, 0xb8, 0x06, 0xb1, 0xf5, 0xf2, 0x96, 0xe9, - 0x1a, 0xda, 0x38, 0xc7, 0xf7, 0x88, 0xed, 0x82, 0x99, 0xce, 0xe5, 0xf4, 0x29, 0xbe, 0x2a, 0x28, - 0x2a, 0x7d, 0x28, 0x06, 0x77, 0x3a, 0xb7, 0x8b, 0x59, 0x5d, 0x50, 0x9b, 0xb2, 0xfc, 0x2f, 0x8f, - 0xa2, 0x03, 0x4e, 0x79, 0x11, 0xb2, 0x17, 0x27, 0xbc, 0x28, 0x08, 0xbf, 0x7f, 0x1c, 0xe1, 0x5b, - 0xde, 0x2d, 0x0f, 0xe8, 0xfb, 0x71, 0xd7, 0x61, 0x37, 0x67, 0x46, 0xd6, 0x1e, 0xd3, 0xd7, 0xc1, - 0xb4, 0x13, 0xf5, 0xdf, 0x0c, 0x92, 0x94, 0x19, 0x6d, 0xca, 0x89, 0x38, 0xb0, 0x03, 0xd6, 0x89, - 0x85, 0x14, 0x92, 0x94, 0x54, 0x00, 0x16, 0x8a, 0x3a, 0x27, 0xec, 0x84, 0x59, 0x24, 0x29, 0xb3, - 0xda, 0x84, 0x13, 0x72, 0x82, 0x0f, 0xd2, 0xa1, 0x03, 0x91, 0xa4, 0x40, 0x0f, 0x24, 0xa0, 0x92, - 0x07, 0x27, 0x6d, 0x62, 0x11, 0xcc, 0x4d, 0x11, 0x89, 0x8b, 0x39, 0x24, 0x2b, 0xe3, 0xda, 0x5c, - 0x70, 0x78, 0x37, 0x14, 0x1f, 0x97, 0xc1, 0x04, 0x35, 0x09, 0xcf, 0xfc, 0x3c, 0xed, 0xce, 0x9f, - 0x10, 0xd9, 0xe6, 0x54, 0xce, 0xcb, 0x74, 0xb9, 0x20, 0xd3, 0xe5, 0xb6, 0xf8, 0xe9, 0xf5, 0x21, - 0x0d, 0x08, 0x60, 0xb1, 0x82, 0xaf, 0x81, 0x49, 0x0f, 0xd5, 0xe3, 0x35, 0x7f, 0x92, 0x47, 0xdf, - 0xf5, 0x21, 0xcd, 0x23, 0xe8, 0x31, 0x81, 0x0f, 0xc1, 0xb8, 0x81, 0x2d, 0x5f, 0x8e, 0x53, 0x22, - 0x13, 0x5c, 0x19, 0x3c, 0x13, 0xdc, 0xc2, 0x96, 0x10, 0x77, 0xcb, 0x64, 0x76, 0x53, 0x1b, 0x33, - 0xfc, 0x25, 0x7c, 0x0a, 0xe6, 0x0c, 0x6c, 0x59, 0x71, 0x7d, 0x4f, 0x0b, 0x3e, 0xd7, 0x5f, 0x88, - 0x8f, 0x15, 0xb1, 0x8f, 0xc7, 0x70, 0xd6, 0x88, 0xef, 0x87, 0x38, 0xfb, 0xb1, 0xe7, 0x71, 0x9e, - 0x7f, 0x39, 0xce, 0x5e, 0xe4, 0x75, 0x73, 0x0e, 0xed, 0xc3, 0x02, 0x98, 0x37, 0xa9, 0xb9, 0x41, - 0xcd, 0x03, 0x62, 0xf2, 0x72, 0x82, 0x1b, 0x3b, 0xd8, 0xf0, 0xd2, 0xdb, 0x7c, 0x5a, 0x24, 0x80, - 0xbe, 0xe7, 0x70, 0x03, 0xcc, 0x74, 0x6a, 0x96, 0x2f, 0xf1, 0x59, 0xe1, 0xf1, 0x74, 0x97, 0xc7, - 0xef, 0x05, 0x70, 0xda, 0x74, 0x07, 0xc5, 0x23, 0xf2, 0x10, 0x74, 0x22, 0x29, 0x7c, 0xd9, 0x16, - 0x90, 0x3c, 0x70, 0x5e, 0x98, 0x0d, 0x08, 0x75, 0x2e, 0x56, 0xfa, 0x97, 0x12, 0x18, 0xf1, 0x8b, - 0x15, 0x04, 0x49, 0x13, 0x1b, 0xc4, 0x2b, 0x56, 0x9a, 0xf8, 0x86, 0xa7, 0xc0, 0x08, 0x36, 0xa8, - 0x6b, 0xb2, 0xf9, 0x84, 0x48, 0x54, 0xfe, 0x0a, 0xde, 0x01, 0x09, 0xba, 0x2f, 0x6a, 0xc2, 0x74, - 0xbe, 0xf8, 0xa2, 0xa5, 0x26, 0xb7, 0x49, 0x88, 0x25, 0x04, 0x4b, 0xd0, 0xfd, 0xcc, 0x22, 0x18, - 0x0b, 0xd6, 0x70, 0x1c, 0x0c, 0x5f, 0x2d, 0xde, 0xbc, 0xbb, 0x95, 0x1a, 0x82, 0x63, 0x20, 0x79, - 0x4f, 0xfb, 0x70, 0x2b, 0x25, 0x15, 0x4e, 0x1f, 0x16, 0x4f, 0xe4, 0x21, 0x4c, 0xb5, 0x50, 0x86, - 0xee, 0x67, 0x0a, 0x28, 0xc3, 0xf7, 0x33, 0xa8, 0x9d, 0xd6, 0xc1, 0x54, 0x24, 0x62, 0x61, 0x0a, - 0xc8, 0xfb, 0xa4, 0xe9, 0x2b, 0xc2, 0x3f, 0xe1, 0x3a, 0x18, 0xf6, 0xcc, 0x96, 0x78, 0x81, 0x74, - 0xea, 0xa1, 0x16, 0x12, 0x97, 0xa4, 0xf4, 0x26, 0x38, 0xd5, 0x3b, 0x68, 0x7b, 0xf0, 0x3c, 0x11, - 0xe6, 0x39, 0x1e, 0xa6, 0xf2, 0xbf, 0x01, 0x95, 0x78, 0x00, 0xf6, 0xa0, 0xb2, 0x13, 0xa6, 0xf2, - 0x32, 0x75, 0xfd, 0x88, 0x7f, 0xe1, 0x9f, 0xd2, 0x61, 0xf1, 0xef, 0x12, 0xa8, 0x2d, 0xcd, 0x15, - 0x51, 0x49, 0x67, 0x88, 0x56, 0xd1, 0x51, 0x27, 0x9a, 0xdf, 0xde, 0x36, 0x59, 0x10, 0xcb, 0x4d, - 0x54, 0xa6, 0x86, 0xd5, 0xd0, 0xcb, 0x3c, 0x6a, 0x90, 0xdf, 0x9f, 0x21, 0xd6, 0xb4, 0x08, 0x62, - 0x14, 0x95, 0xe9, 0x01, 0xb1, 0x91, 0x81, 0xcd, 0x26, 0xaa, 0x12, 0xcc, 0x5c, 0x9b, 0x38, 0x9c, - 0xd6, 0x6e, 0x10, 0xd4, 0xbf, 0x91, 0x44, 0x73, 0xb2, 0x74, 0x1f, 0x9c, 0xbf, 0xaa, 0x9b, 0x15, - 0x44, 0x5d, 0x86, 0x0c, 0x6a, 0x13, 0x84, 0x4b, 0xfc, 0xb3, 0xab, 0x1b, 0xcb, 0xd5, 0x19, 0xb3, - 0x9c, 0x82, 0xaa, 0xd6, 0x74, 0x56, 0x77, 0x4b, 0xb9, 0x32, 0x35, 0x54, 0xae, 0x6e, 0x96, 0x94, - 0xa9, 0xd3, 0x74, 0x18, 0xf1, 0x97, 0xbe, 0xf6, 0xf9, 0x35, 0x98, 0x6f, 0xa1, 0x0c, 0x67, 0xc1, - 0xc3, 0x61, 0xb9, 0x5c, 0x5d, 0xbd, 0xb8, 0x42, 0x56, 0xb2, 0x6b, 0xa5, 0xb5, 0xb5, 0xec, 0xda, - 0xa5, 0xd5, 0x4a, 0x16, 0xaf, 0xbc, 0x7d, 0x39, 0xfb, 0xf6, 0x5a, 0x05, 0x97, 0x2a, 0xd5, 0x77, - 0xc8, 0xa5, 0x95, 0xb5, 0x0c, 0x6a, 0xaf, 0x4f, 0x05, 0x39, 0x58, 0x18, 0x24, 0xf3, 0xaf, 0x31, - 0x30, 0x1f, 0x97, 0x44, 0xf3, 0xef, 0x09, 0xbc, 0x0c, 0xce, 0x88, 0x2a, 0xd7, 0xb9, 0x81, 0xe1, - 0x96, 0x48, 0x42, 0xb2, 0x92, 0xd0, 0x4e, 0x71, 0x80, 0x00, 0xe1, 0xea, 0x51, 0x7b, 0xf4, 0x2e, - 0x48, 0x47, 0x51, 0x23, 0xcd, 0x12, 0xef, 0xd2, 0x24, 0xed, 0x74, 0x18, 0x77, 0x33, 0xd4, 0x38, - 0x75, 0xf1, 0x0d, 0xd7, 0x22, 0x19, 0xc9, 0x8a, 0x1c, 0xe5, 0xbb, 0x7d, 0x54, 0x96, 0xba, 0xf8, - 0x46, 0x1a, 0xac, 0x24, 0x92, 0x95, 0x64, 0x94, 0xef, 0x87, 0xa1, 0x9a, 0xd6, 0x8b, 0x6f, 0xa7, - 0x4c, 0x0e, 0x23, 0x59, 0x19, 0xee, 0xe2, 0x1b, 0x54, 0xcc, 0xf7, 0xc0, 0xd9, 0x98, 0xa9, 0x22, - 0x85, 0x78, 0x04, 0xc9, 0xca, 0x88, 0x36, 0x1f, 0x31, 0x56, 0xb8, 0x26, 0xf7, 0x46, 0x0f, 0xb5, - 0x7d, 0xb2, 0x32, 0xda, 0x03, 0x3d, 0xe0, 0xfe, 0x0e, 0x98, 0x8f, 0xa2, 0x87, 0x1a, 0xb9, 0x31, - 0x24, 0x2b, 0x63, 0xda, 0xc9, 0x30, 0xee, 0x7a, 0xa7, 0xa9, 0xeb, 0x32, 0x57, 0xa4, 0xb4, 0x8d, - 0x8b, 0x52, 0x1e, 0x31, 0x57, 0xb4, 0x9c, 0xc7, 0xcc, 0x15, 0x6e, 0xfe, 0x00, 0x92, 0x95, 0xc9, - 0xa8, 0xb9, 0xd6, 0x8f, 0x1a, 0xc1, 0x9e, 0x6e, 0xea, 0xa8, 0x3b, 0x81, 0x64, 0x65, 0xaa, 0xdb, - 0x4d, 0x81, 0xb6, 0x24, 0xae, 0x6d, 0xa8, 0x30, 0x4c, 0xbe, 0x40, 0x61, 0x88, 0xd8, 0xe6, 0xa8, - 0xeb, 0xba, 0x02, 0x16, 0x62, 0xb6, 0x89, 0x3a, 0x65, 0x0a, 0xc9, 0xca, 0x8c, 0x76, 0x26, 0x62, - 0x9d, 0x48, 0x3f, 0xd6, 0x87, 0x40, 0x27, 0x28, 0xa6, 0x91, 0xac, 0xa4, 0x7a, 0x11, 0xe8, 0x1b, - 0xcc, 0x91, 0xbe, 0x6d, 0x06, 0xc9, 0xca, 0x6c, 0xcc, 0x3b, 0x21, 0x2b, 0xf5, 0x44, 0x0e, 0x75, - 0x86, 0xb2, 0x02, 0xbb, 0x91, 0x7d, 0xce, 0x85, 0xfa, 0x61, 0x91, 0xe4, 0xcb, 0x10, 0xb7, 0x50, - 0xa6, 0x5f, 0x60, 0x65, 0x0a, 0xe8, 0x63, 0x66, 0xbb, 0xe4, 0x02, 0xf2, 0xfe, 0x56, 0x71, 0xc3, - 0xf1, 0x17, 0x8f, 0x2e, 0xc4, 0xd1, 0x42, 0x72, 0x73, 0xbc, 0x95, 0x0b, 0x28, 0x7f, 0x01, 0xad, - 0x3e, 0x42, 0xed, 0x4c, 0x1a, 0x24, 0xd7, 0x69, 0xa5, 0xd9, 0xab, 0xfe, 0x66, 0x1e, 0x82, 0x19, - 0xbf, 0x5d, 0xfe, 0x2f, 0x9d, 0xd5, 0x05, 0xd8, 0x34, 0x48, 0x04, 0x13, 0xa5, 0x96, 0xd0, 0x79, - 0x8a, 0x4a, 0x56, 0x30, 0xc3, 0x7e, 0x7d, 0x78, 0xfd, 0x58, 0xbf, 0x73, 0x22, 0x9a, 0x40, 0xc9, - 0x7c, 0x21, 0x81, 0x99, 0x0f, 0xad, 0x0a, 0x66, 0xe4, 0x7e, 0x5e, 0x23, 0x9f, 0xba, 0xc4, 0x61, - 0x70, 0x03, 0xc8, 0xb8, 0xe4, 0x09, 0x31, 0x91, 0x5f, 0x19, 0xb8, 0xda, 0x68, 0x1c, 0x1b, 0xbe, - 0x0b, 0x26, 0x5c, 0x41, 0x57, 0x3c, 0x3d, 0xf8, 0xa2, 0x75, 0x37, 0x3d, 0x57, 0x75, 0xd2, 0xa8, - 0xdc, 0xc2, 0xce, 0xbe, 0x06, 0x3c, 0x70, 0xfe, 0xbd, 0x84, 0xc0, 0x44, 0x28, 0x36, 0x79, 0x03, - 0xf0, 0x60, 0x4b, 0xbb, 0x9d, 0x1a, 0x82, 0xa3, 0x40, 0xbe, 0xbd, 0xb3, 0x95, 0x92, 0xf2, 0xbf, - 0x5f, 0x00, 0xa7, 0xe3, 0x8c, 0xef, 0x12, 0xfb, 0x40, 0x2f, 0x13, 0xf8, 0x95, 0x0c, 0x46, 0x36, - 0x6c, 0x6e, 0x73, 0x38, 0xb8, 0xf4, 0xe9, 0xc1, 0x51, 0x32, 0x7f, 0x49, 0x7c, 0xeb, 0xb7, 0x7f, - 0xfe, 0x22, 0xf1, 0xc7, 0x44, 0xe6, 0x0f, 0x09, 0xf5, 0x60, 0x25, 0x78, 0xe6, 0xe9, 0xf5, 0xc8, - 0xa3, 0xb6, 0x42, 0xe5, 0xa3, 0xad, 0xb6, 0xc2, 0x15, 0xa1, 0xad, 0xb6, 0x42, 0xd1, 0xd9, 0x56, - 0x1d, 0x62, 0x61, 0x1b, 0x33, 0x6a, 0xab, 0x2d, 0x37, 0x72, 0xd0, 0x0a, 0x45, 0x52, 0x5b, 0x6d, - 0x45, 0x2e, 0x54, 0xb0, 0x0e, 0x9d, 0x1f, 0x85, 0x6b, 0x5b, 0x6d, 0x85, 0x73, 0xdb, 0x7b, 0x0e, - 0xb3, 0x2d, 0x9b, 0x54, 0xf5, 0xa7, 0xea, 0x52, 0xdb, 0x63, 0x12, 0x42, 0x73, 0xe2, 0x74, 0x9c, - 0x38, 0x23, 0x27, 0x86, 0x10, 0x15, 0xb2, 0x5f, 0x4f, 0xdc, 0x56, 0x5b, 0x47, 0xb9, 0xaa, 0xad, - 0xb6, 0x62, 0x33, 0x24, 0xc7, 0xec, 0x39, 0x5c, 0xb6, 0xe1, 0x4f, 0x24, 0x00, 0x3c, 0xc7, 0x8a, - 0x6b, 0xf0, 0xcd, 0x38, 0x77, 0x49, 0xf8, 0xf6, 0x7c, 0x66, 0xf1, 0x18, 0xcf, 0x16, 0xa4, 0x25, - 0xf8, 0x3f, 0x60, 0xe4, 0x26, 0xa5, 0xfb, 0xae, 0x05, 0x67, 0x72, 0x8e, 0x5b, 0xca, 0xe7, 0xb6, - 0x2b, 0xfe, 0xdd, 0x7d, 0x11, 0xce, 0x39, 0xc1, 0x59, 0x81, 0xff, 0x71, 0x6c, 0x4c, 0xf1, 0xfe, - 0xa7, 0x0d, 0xbf, 0x23, 0x81, 0x11, 0xef, 0x2e, 0xbf, 0x88, 0x69, 0xfa, 0x8c, 0xa0, 0x99, 0x15, - 0x21, 0xc5, 0x5b, 0xe9, 0xe7, 0x94, 0x82, 0x9b, 0xe1, 0x17, 0x12, 0x18, 0x0b, 0x92, 0x0a, 0x5c, - 0x3e, 0x56, 0x94, 0x58, 0xfe, 0xe9, 0x2b, 0xc9, 0x63, 0x21, 0x49, 0x25, 0xbd, 0xa4, 0x1e, 0xe4, - 0x9f, 0x2d, 0x09, 0x2e, 0x91, 0x9c, 0x27, 0x0d, 0xcf, 0x45, 0x0f, 0x56, 0xf2, 0x83, 0xa2, 0xc0, - 0x1f, 0x4b, 0x60, 0x7e, 0x17, 0xb3, 0x72, 0x9d, 0x27, 0xdd, 0x4e, 0x92, 0xda, 0x36, 0x45, 0xe0, - 0x7d, 0x7d, 0x2a, 0x5d, 0x14, 0x2a, 0x2d, 0xe7, 0xdf, 0x52, 0x0f, 0xf2, 0xf8, 0x79, 0x05, 0x94, - 0x96, 0xe0, 0x0f, 0x24, 0x30, 0xb2, 0x49, 0x1a, 0x84, 0x91, 0xee, 0x48, 0xeb, 0xc7, 0xeb, 0xe1, - 0x61, 0xf1, 0xad, 0xd2, 0x9b, 0x60, 0x1a, 0x80, 0xa2, 0xa5, 0xdf, 0x20, 0xcd, 0xa2, 0xcb, 0xea, - 0x70, 0x08, 0x9c, 0x06, 0x23, 0xb7, 0xf9, 0x67, 0x1e, 0x4e, 0x81, 0xa4, 0x4d, 0x70, 0x05, 0x0c, - 0x3f, 0xb1, 0x75, 0x46, 0xbc, 0xe0, 0x5b, 0x7a, 0xde, 0xe0, 0xfb, 0x93, 0x04, 0xc6, 0xae, 0x11, - 0x76, 0xc7, 0x25, 0x76, 0xf3, 0xeb, 0x0c, 0xbf, 0xcf, 0xa5, 0xc3, 0xe2, 0xbd, 0xcc, 0x0e, 0x58, - 0xe8, 0x35, 0x3e, 0x74, 0x18, 0x0e, 0x38, 0x36, 0x7c, 0x24, 0x95, 0x86, 0x84, 0x7e, 0x39, 0x78, - 0xe1, 0x38, 0xfd, 0x3e, 0xe5, 0x0c, 0x02, 0x2d, 0x3f, 0x1f, 0x06, 0xa9, 0x6b, 0x84, 0x05, 0xdd, - 0x82, 0xc7, 0xfc, 0xf2, 0xe0, 0x25, 0xd2, 0xc7, 0x4f, 0xbf, 0x38, 0x6a, 0xe6, 0xb3, 0xa4, 0xd0, - 0xe0, 0x1f, 0x32, 0xfc, 0x9b, 0x7c, 0x8c, 0x0e, 0x9d, 0x16, 0xc4, 0x4f, 0xb6, 0xbd, 0x46, 0x99, - 0x76, 0xfc, 0x2c, 0x56, 0x99, 0xfa, 0xce, 0x22, 0x5d, 0x67, 0xee, 0xb3, 0x0e, 0xa3, 0x15, 0xe3, - 0x19, 0xd3, 0x42, 0xef, 0xd3, 0xbe, 0xb8, 0x91, 0x1a, 0xd7, 0xbf, 0x9b, 0xef, 0xc6, 0x3b, 0xea, - 0xd6, 0x7b, 0x2a, 0xd2, 0x97, 0x61, 0x77, 0x09, 0xeb, 0xd3, 0x22, 0xf7, 0x39, 0xee, 0xab, 0xa7, - 0xf3, 0x2c, 0xae, 0x91, 0x12, 0x0b, 0x7f, 0x25, 0x83, 0xe4, 0x56, 0xb9, 0x4e, 0x61, 0xbf, 0x97, - 0x5c, 0xc7, 0x2d, 0xe5, 0xbc, 0x61, 0x25, 0x48, 0x0e, 0xcf, 0x0d, 0x99, 0xf9, 0x6b, 0xe2, 0xb0, - 0xf8, 0xff, 0x09, 0x30, 0x49, 0xca, 0x75, 0x8a, 0x1c, 0xaf, 0xb5, 0x02, 0x63, 0x62, 0x65, 0x5b, - 0x65, 0x38, 0x7b, 0xd7, 0x35, 0x0c, 0x6c, 0x37, 0x0b, 0x68, 0xcb, 0xdf, 0x4a, 0xa7, 0x36, 0x89, - 0x53, 0xb6, 0x75, 0xf1, 0xf3, 0x8b, 0xd8, 0xcd, 0x6c, 0x02, 0x18, 0xbd, 0xb6, 0x42, 0xda, 0x01, - 0x2f, 0xeb, 0x07, 0x57, 0x80, 0xfc, 0xf6, 0xf2, 0x2a, 0xbc, 0x04, 0x2e, 0x6a, 0x84, 0xb9, 0xb6, - 0x49, 0x2a, 0xe8, 0x49, 0x9d, 0x98, 0x88, 0xd5, 0x09, 0xb2, 0x89, 0x43, 0x5d, 0xbb, 0x4c, 0x90, - 0xee, 0x20, 0x46, 0x0c, 0x8b, 0xda, 0xd8, 0xd6, 0x1b, 0x4d, 0xe4, 0x9a, 0xf8, 0x00, 0xeb, 0x0d, - 0x5c, 0x6a, 0x90, 0xdc, 0x07, 0xef, 0x02, 0x79, 0x6d, 0x79, 0x0d, 0xae, 0x81, 0xa5, 0x67, 0x10, - 0xa8, 0x50, 0xe2, 0x20, 0x93, 0x32, 0x44, 0x9e, 0xea, 0x0e, 0xcb, 0xc1, 0x11, 0x90, 0xfc, 0x51, - 0x42, 0x92, 0xc5, 0x25, 0x7b, 0x74, 0x7c, 0x9a, 0xe0, 0x86, 0x51, 0x5b, 0x9e, 0x63, 0x1e, 0x9c, - 0xc9, 0xa4, 0xc2, 0x05, 0x87, 0x9f, 0x15, 0xbc, 0xc7, 0x97, 0x07, 0x10, 0x76, 0x1d, 0xc1, 0x9f, - 0x49, 0x60, 0x72, 0x93, 0x10, 0x4b, 0x3c, 0x78, 0xf3, 0x8d, 0x6f, 0xa6, 0xb3, 0xb9, 0x22, 0x74, - 0xbb, 0x9c, 0x59, 0x3b, 0x36, 0xc5, 0x47, 0x7e, 0x20, 0xcb, 0xf1, 0xb1, 0x44, 0x54, 0xa1, 0x22, - 0x00, 0x3b, 0x74, 0x5d, 0x37, 0x2b, 0xba, 0x59, 0x73, 0xe0, 0x99, 0xae, 0x0c, 0xbe, 0xe9, 0xff, - 0x76, 0xd8, 0x37, 0xb9, 0x0f, 0xc1, 0xfb, 0x60, 0xf4, 0x9e, 0x6e, 0x10, 0xea, 0x32, 0xd8, 0x07, - 0xa8, 0x2f, 0xf2, 0x59, 0x21, 0xfe, 0x49, 0x38, 0x17, 0xb6, 0x27, 0xf3, 0x89, 0xd5, 0x41, 0x6a, - 0xcb, 0xb6, 0xa9, 0xcd, 0xcb, 0xf7, 0x26, 0x61, 0x58, 0x6f, 0x38, 0x03, 0x33, 0x38, 0x2f, 0x18, - 0xbc, 0x0a, 0x17, 0x22, 0x0e, 0xe3, 0x54, 0x9f, 0xe8, 0xac, 0x5e, 0xf1, 0xa9, 0x7e, 0x57, 0x02, - 0xf0, 0x1a, 0x61, 0xf1, 0x19, 0xed, 0xf8, 0x1e, 0x21, 0x86, 0xd1, 0x57, 0x8c, 0x37, 0x84, 0x18, - 0xe7, 0x32, 0x67, 0xc2, 0x62, 0x70, 0x09, 0x4a, 0xb4, 0xd2, 0x54, 0x5b, 0xbc, 0x23, 0x10, 0xb3, - 0x1c, 0xfc, 0xb6, 0x04, 0x66, 0x77, 0xa9, 0xc3, 0x38, 0x45, 0x81, 0x2a, 0x04, 0x79, 0xbe, 0x71, - 0xb0, 0x2f, 0x77, 0x55, 0x70, 0x7f, 0x33, 0x73, 0x3e, 0xcc, 0xdd, 0xa2, 0x0e, 0xe3, 0x12, 0x88, - 0x9f, 0x30, 0x3c, 0x31, 0x82, 0xa0, 0x48, 0xff, 0x5c, 0x3a, 0x2c, 0x7e, 0x29, 0xc1, 0x6a, 0x9f, - 0xe9, 0x0c, 0x55, 0x42, 0x49, 0x22, 0x9b, 0x45, 0x4f, 0xea, 0x7a, 0xb9, 0x8e, 0x9c, 0x3a, 0x75, - 0x1b, 0x15, 0x71, 0xfd, 0x4a, 0x04, 0xb9, 0x0e, 0xa9, 0x20, 0xdd, 0x44, 0x56, 0x03, 0x97, 0x09, - 0xa2, 0x55, 0x71, 0x51, 0x2b, 0xb4, 0xec, 0x1a, 0xc4, 0xf4, 0x7e, 0xd1, 0x45, 0x65, 0x6a, 0xf0, - 0xc5, 0xb9, 0xf4, 0x1d, 0xb0, 0xd8, 0xab, 0x33, 0xe0, 0xd7, 0x28, 0x98, 0x07, 0x07, 0x7d, 0x53, - 0x7c, 0x0c, 0x4e, 0x94, 0xb1, 0x41, 0x1a, 0x1b, 0xd8, 0x21, 0x3e, 0x0d, 0x3e, 0xbc, 0x40, 0x0d, - 0x0c, 0x7b, 0xbf, 0xc3, 0x0c, 0x1a, 0x48, 0x67, 0x84, 0x0d, 0xe7, 0xe0, 0x6c, 0x24, 0x90, 0xf8, - 0x51, 0xfe, 0x13, 0xb0, 0x50, 0x34, 0x29, 0xab, 0x13, 0xdb, 0xe7, 0xc4, 0x9d, 0x17, 0xba, 0x54, - 0xef, 0x47, 0xae, 0xd8, 0xa0, 0x8c, 0x87, 0xd6, 0xbf, 0x1c, 0x3d, 0x2c, 0xfe, 0x74, 0x14, 0xfe, - 0x4e, 0x02, 0x73, 0x45, 0xb4, 0xee, 0x3d, 0xf4, 0x86, 0x52, 0xc0, 0x47, 0xe0, 0x44, 0x4d, 0xdb, - 0xdd, 0xc8, 0x5e, 0xf3, 0x54, 0x47, 0x96, 0x4d, 0x1f, 0x93, 0x32, 0x1b, 0xd4, 0x64, 0xe9, 0x94, - 0x49, 0x4d, 0xf2, 0x9f, 0xbe, 0x6a, 0x1c, 0x7a, 0xe9, 0x13, 0x70, 0x62, 0xfd, 0xee, 0x26, 0x5a, - 0xcd, 0x6e, 0x34, 0xb0, 0xeb, 0x10, 0x74, 0x53, 0x2f, 0x13, 0xd3, 0x21, 0xf0, 0xea, 0x60, 0x94, - 0xd5, 0x52, 0x83, 0x96, 0x54, 0x03, 0x3b, 0x8c, 0xd8, 0xea, 0xcd, 0xed, 0x8d, 0xad, 0x9d, 0xbb, - 0x5b, 0x39, 0xf6, 0x94, 0xe5, 0xe5, 0x95, 0xdc, 0xf2, 0x92, 0x2c, 0x25, 0x92, 0xf9, 0x14, 0xb6, - 0xbc, 0xe7, 0x69, 0x9d, 0x9a, 0xea, 0x63, 0x87, 0x9a, 0xf9, 0x53, 0xe1, 0x9d, 0xa7, 0xd9, 0x2a, - 0xa5, 0x59, 0x43, 0x37, 0x48, 0xa1, 0x0b, 0xb2, 0xd0, 0x07, 0x52, 0xdb, 0xe5, 0x15, 0x63, 0x15, - 0x6e, 0x83, 0x6b, 0xdd, 0x15, 0xc3, 0x75, 0x88, 0x7d, 0x54, 0x2d, 0xea, 0xf8, 0x80, 0x20, 0x8b, - 0xd8, 0x86, 0xee, 0x38, 0x3c, 0x30, 0x19, 0x45, 0xb8, 0x5c, 0x26, 0x8e, 0x13, 0xa9, 0x2e, 0x39, - 0xed, 0x25, 0x6a, 0xd0, 0xa8, 0x76, 0x1d, 0xc8, 0x6b, 0x2b, 0x97, 0x60, 0x11, 0x4c, 0x6d, 0xbf, - 0x61, 0x20, 0x8c, 0x18, 0xc1, 0x16, 0x65, 0x39, 0xb8, 0x0c, 0x72, 0xe9, 0x81, 0x9e, 0xf9, 0x1e, - 0x7c, 0x2f, 0x01, 0x66, 0xc0, 0xf8, 0x3a, 0x76, 0xf4, 0xb2, 0xe8, 0xff, 0x13, 0x63, 0x12, 0x78, - 0x25, 0x32, 0x11, 0xcc, 0x8c, 0x25, 0xd2, 0xe3, 0x1f, 0x65, 0x8b, 0xbb, 0xdb, 0xd9, 0x1b, 0xa4, - 0x89, 0x12, 0xe0, 0x2b, 0xa9, 0x33, 0x21, 0xfc, 0x5a, 0x1a, 0x93, 0x95, 0x64, 0xfe, 0xb5, 0xc0, - 0x87, 0x21, 0x87, 0xab, 0x14, 0xbb, 0xac, 0xae, 0xf2, 0x3f, 0xd4, 0xd6, 0xff, 0x9b, 0x14, 0x16, - 0xfb, 0x03, 0x31, 0xba, 0x4f, 0xcc, 0xf5, 0xff, 0x03, 0x69, 0x6f, 0xe0, 0x80, 0xf0, 0x9a, 0x8d, - 0x4d, 0xe6, 0x20, 0xbe, 0xf0, 0xad, 0x07, 0x16, 0xfc, 0x31, 0x04, 0xce, 0xf9, 0x87, 0x62, 0x15, - 0x9c, 0x6e, 0x80, 0x61, 0x5c, 0x31, 0x74, 0x13, 0x16, 0x22, 0xa8, 0x66, 0x25, 0x02, 0x26, 0x9c, - 0xc1, 0xc1, 0x74, 0x87, 0xf1, 0x4a, 0x74, 0x40, 0x90, 0x6e, 0x56, 0xa9, 0x6d, 0x08, 0x7f, 0x97, - 0x16, 0xc1, 0x54, 0xd8, 0x14, 0x43, 0xf1, 0xd1, 0xa8, 0xf4, 0x66, 0xdf, 0xe1, 0x28, 0x0e, 0x6a, - 0x6f, 0x83, 0xd3, 0xb7, 0x8e, 0xb2, 0x4f, 0xf8, 0x4e, 0x0d, 0x7a, 0x97, 0x1e, 0x8c, 0x77, 0x3c, - 0x57, 0x1a, 0x11, 0xf7, 0x79, 0xf5, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x8e, 0xc2, 0x5e, 0xf3, - 0x48, 0x24, 0x00, 0x00, + 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, } diff --git a/examples/proto/examplepb/a_bit_of_everything.proto b/examples/proto/examplepb/a_bit_of_everything.proto index eba0d7d629c..9533cad3e5e 100644 --- a/examples/proto/examplepb/a_bit_of_everything.proto +++ b/examples/proto/examplepb/a_bit_of_everything.proto @@ -138,7 +138,7 @@ message ABitOfEverything { json_schema: { title: "A bit of everything" description: "Intentionaly complicated message type to cover many features of Protobuf." - required: ["uuid"] + required: ["uuid", "int64_value", "double_value"] } external_docs: { url: "https://github.com/grpc-ecosystem/grpc-gateway"; @@ -168,7 +168,7 @@ message ABitOfEverything { string uuid = 1 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = {pattern: "[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}", min_length: 1}]; repeated Nested nested = 2; - float float_value = 3; + float float_value = 3 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = {description: "Float value field", default: "0.2", required: ['float_value']}]; double double_value = 4; int64 int64_value = 5; uint64 uint64_value = 6; diff --git a/examples/proto/examplepb/a_bit_of_everything.swagger.json b/examples/proto/examplepb/a_bit_of_everything.swagger.json index b4c3e5bb17e..3e246b63c78 100644 --- a/examples/proto/examplepb/a_bit_of_everything.swagger.json +++ b/examples/proto/examplepb/a_bit_of_everything.swagger.json @@ -183,10 +183,12 @@ }, { "name": "float_value", + "description": "Float value field", "in": "query", - "required": false, + "required": true, "type": "number", - "format": "float" + "format": "float", + "default": "0.2" }, { "name": "double_value", @@ -405,10 +407,12 @@ "parameters": [ { "name": "float_value", + "description": "Float value field", "in": "path", "required": true, "type": "number", - "format": "float" + "format": "float", + "default": "0.2" }, { "name": "double_value", @@ -1452,7 +1456,12 @@ }, "float_value": { "type": "number", - "format": "float" + "format": "float", + "default": "0.2", + "description": "Float value field", + "required": [ + "float_value" + ] }, "double_value": { "type": "number", @@ -1570,7 +1579,9 @@ "url": "https://github.com/grpc-ecosystem/grpc-gateway" }, "required": [ - "uuid" + "uuid", + "int64_value", + "double_value" ] }, "examplepbABitOfEverythingRepeated": { diff --git a/protoc-gen-swagger/genswagger/template.go b/protoc-gen-swagger/genswagger/template.go index 5c869e0f31d..e8675963b75 100644 --- a/protoc-gen-swagger/genswagger/template.go +++ b/protoc-gen-swagger/genswagger/template.go @@ -90,7 +90,7 @@ func messageToQueryParameters(message *descriptor.Message, reg *descriptor.Regis return params, nil } -// queryParams converts a field to a list of swagger query parameters recuresively. +// queryParams converts a field to a list of swagger query parameters recursively. func queryParams(message *descriptor.Message, field *descriptor.Field, prefix string, reg *descriptor.Registry, pathParams []descriptor.Parameter) (params []swaggerParameterObject, err error) { // make sure the parameter is not already listed as a path parameter for _, pathParam := range pathParams { @@ -120,14 +120,27 @@ func queryParams(message *descriptor.Message, field *descriptor.Field, prefix st if schema.Title != "" { // merge title because title of parameter object will be ignored desc = strings.TrimSpace(schema.Title + ". " + schema.Description) } + + // verify if the field is required + required := false + for _, fieldName := range schema.Required { + if fieldName == field.GetName() { + required = true + break + } + } + param := swaggerParameterObject{ Name: prefix + field.GetName(), Description: desc, In: "query", + Default: schema.Default, Type: schema.Type, Items: schema.Items, Format: schema.Format, + Required: required, } + if isEnum { enum, err := reg.LookupEnum("", fieldType) if err != nil { @@ -250,6 +263,7 @@ func renderMessagesAsDefinition(messages messageMap, d swaggerDefinitionsObject, schema.MaxLength = protoSchema.MaxLength schema.MinLength = protoSchema.MinLength schema.Pattern = protoSchema.Pattern + schema.Default = protoSchema.Default schema.MaxItems = protoSchema.MaxItems schema.MinItems = protoSchema.MinItems schema.UniqueItems = protoSchema.UniqueItems @@ -589,7 +603,7 @@ func renderServices(services []*descriptor.Service, paths swaggerPathsObject, re parameters := swaggerParametersObject{} for _, parameter := range b.PathParams { - var paramType, paramFormat, desc, collectionFormat string + var paramType, paramFormat, desc, collectionFormat, defaultValue string var enumNames []string var items *swaggerItemsObject var minItems *int @@ -603,6 +617,7 @@ func renderServices(services []*descriptor.Service, paths swaggerPathsObject, re paramType = schema.Type paramFormat = schema.Format desc = schema.Description + defaultValue = schema.Default } else { return fmt.Errorf("only primitive and well-known types are allowed in path parameters") } @@ -620,6 +635,10 @@ func renderServices(services []*descriptor.Service, paths swaggerPathsObject, re if !ok { return fmt.Errorf("unknown field type %v", pt) } + + schema := schemaOfField(parameter.Target, reg, customRefs) + desc = schema.Description + defaultValue = schema.Default } if parameter.IsRepeated() { @@ -646,6 +665,7 @@ func renderServices(services []*descriptor.Service, paths swaggerPathsObject, re Description: desc, In: "path", Required: true, + Default: defaultValue, // Parameters in gRPC-Gateway can only be strings? Type: paramType, Format: paramFormat, @@ -1440,6 +1460,7 @@ func updateSwaggerObjectFromJSONSchema(s *swaggerSchemaObject, j *swagger_option s.MaxLength = j.GetMaxLength() s.MinLength = j.GetMinLength() s.Pattern = j.GetPattern() + s.Default = j.GetDefault() s.MaxItems = j.GetMaxItems() s.MinItems = j.GetMinItems() s.UniqueItems = j.GetUniqueItems()