|  | @@ -518,16 +518,13 @@ const char* Type::_InternalParse(const char* begin, const char* end, void* objec
 | 
	
		
			
				|  |  |          ptr = ::google::protobuf::io::ReadSize(ptr, &size);
 | 
	
		
			
				|  |  |          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
 | 
	
		
			
				|  |  |          ctx->extra_parse_data().SetFieldName("google.protobuf.Type.name");
 | 
	
		
			
				|  |  | -        auto str = msg->mutable_name();
 | 
	
		
			
				|  |  | +        object = msg->mutable_name();
 | 
	
		
			
				|  |  |          if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
 | 
	
		
			
				|  |  | -          object = str;
 | 
	
		
			
				|  |  | -          str->clear();
 | 
	
		
			
				|  |  | -          str->reserve(size);
 | 
	
		
			
				|  |  |            parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
 | 
	
		
			
				|  |  | -          goto len_delim_till_end;
 | 
	
		
			
				|  |  | +          goto string_till_end;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
 | 
	
		
			
				|  |  | -        ::google::protobuf::internal::InlineGreedyStringParser(str, ptr, size, ctx);
 | 
	
		
			
				|  |  | +        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
 | 
	
		
			
				|  |  |          ptr += size;
 | 
	
		
			
				|  |  |          break;
 | 
	
		
			
				|  |  |        }
 | 
	
	
		
			
				|  | @@ -540,11 +537,9 @@ const char* Type::_InternalParse(const char* begin, const char* end, void* objec
 | 
	
		
			
				|  |  |            parser_till_end = ::google::protobuf::Field::_InternalParse;
 | 
	
		
			
				|  |  |            object = msg->add_fields();
 | 
	
		
			
				|  |  |            if (size > end - ptr) goto len_delim_till_end;
 | 
	
		
			
				|  |  | -          auto newend = ptr + size;
 | 
	
		
			
				|  |  | -          bool ok = ctx->ParseExactRange({parser_till_end, object},
 | 
	
		
			
				|  |  | -                                         ptr, newend);
 | 
	
		
			
				|  |  | -          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
 | 
	
		
			
				|  |  | -          ptr = newend;
 | 
	
		
			
				|  |  | +          ptr += size;
 | 
	
		
			
				|  |  | +          GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
 | 
	
		
			
				|  |  | +              {parser_till_end, object}, ptr - size, ptr));
 | 
	
		
			
				|  |  |            if (ptr >= end) break;
 | 
	
		
			
				|  |  |          } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 18 && (ptr += 1));
 | 
	
		
			
				|  |  |          break;
 | 
	
	
		
			
				|  | @@ -556,16 +551,13 @@ const char* Type::_InternalParse(const char* begin, const char* end, void* objec
 | 
	
		
			
				|  |  |            ptr = ::google::protobuf::io::ReadSize(ptr, &size);
 | 
	
		
			
				|  |  |            GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
 | 
	
		
			
				|  |  |            ctx->extra_parse_data().SetFieldName("google.protobuf.Type.oneofs");
 | 
	
		
			
				|  |  | -          auto str = msg->add_oneofs();
 | 
	
		
			
				|  |  | +          object = msg->add_oneofs();
 | 
	
		
			
				|  |  |            if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
 | 
	
		
			
				|  |  | -            object = str;
 | 
	
		
			
				|  |  | -            str->clear();
 | 
	
		
			
				|  |  | -            str->reserve(size);
 | 
	
		
			
				|  |  |              parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
 | 
	
		
			
				|  |  | -            goto len_delim_till_end;
 | 
	
		
			
				|  |  | +            goto string_till_end;
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |            GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
 | 
	
		
			
				|  |  | -          ::google::protobuf::internal::InlineGreedyStringParser(str, ptr, size, ctx);
 | 
	
		
			
				|  |  | +          ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
 | 
	
		
			
				|  |  |            ptr += size;
 | 
	
		
			
				|  |  |            if (ptr >= end) break;
 | 
	
		
			
				|  |  |          } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 26 && (ptr += 1));
 | 
	
	
		
			
				|  | @@ -580,11 +572,9 @@ const char* Type::_InternalParse(const char* begin, const char* end, void* objec
 | 
	
		
			
				|  |  |            parser_till_end = ::google::protobuf::Option::_InternalParse;
 | 
	
		
			
				|  |  |            object = msg->add_options();
 | 
	
		
			
				|  |  |            if (size > end - ptr) goto len_delim_till_end;
 | 
	
		
			
				|  |  | -          auto newend = ptr + size;
 | 
	
		
			
				|  |  | -          bool ok = ctx->ParseExactRange({parser_till_end, object},
 | 
	
		
			
				|  |  | -                                         ptr, newend);
 | 
	
		
			
				|  |  | -          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
 | 
	
		
			
				|  |  | -          ptr = newend;
 | 
	
		
			
				|  |  | +          ptr += size;
 | 
	
		
			
				|  |  | +          GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
 | 
	
		
			
				|  |  | +              {parser_till_end, object}, ptr - size, ptr));
 | 
	
		
			
				|  |  |            if (ptr >= end) break;
 | 
	
		
			
				|  |  |          } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 34 && (ptr += 1));
 | 
	
		
			
				|  |  |          break;
 | 
	
	
		
			
				|  | @@ -597,21 +587,17 @@ const char* Type::_InternalParse(const char* begin, const char* end, void* objec
 | 
	
		
			
				|  |  |          parser_till_end = ::google::protobuf::SourceContext::_InternalParse;
 | 
	
		
			
				|  |  |          object = msg->mutable_source_context();
 | 
	
		
			
				|  |  |          if (size > end - ptr) goto len_delim_till_end;
 | 
	
		
			
				|  |  | -        auto newend = ptr + size;
 | 
	
		
			
				|  |  | -        bool ok = ctx->ParseExactRange({parser_till_end, object},
 | 
	
		
			
				|  |  | -                                       ptr, newend);
 | 
	
		
			
				|  |  | -        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
 | 
	
		
			
				|  |  | -        ptr = newend;
 | 
	
		
			
				|  |  | +        ptr += size;
 | 
	
		
			
				|  |  | +        GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
 | 
	
		
			
				|  |  | +            {parser_till_end, object}, ptr - size, ptr));
 | 
	
		
			
				|  |  |          break;
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |        // .google.protobuf.Syntax syntax = 6;
 | 
	
		
			
				|  |  |        case 6: {
 | 
	
		
			
				|  |  |          if (static_cast<::google::protobuf::uint8>(tag) != 48) goto handle_unusual;
 | 
	
		
			
				|  |  | -        ::google::protobuf::uint64 val;
 | 
	
		
			
				|  |  | -        ptr = ::google::protobuf::io::Parse64(ptr, &val);
 | 
	
		
			
				|  |  | +        ::google::protobuf::uint64 val = ::google::protobuf::internal::ReadVarint(&ptr);
 | 
	
		
			
				|  |  | +        msg->set_syntax(static_cast<::google::protobuf::Syntax>(val));
 | 
	
		
			
				|  |  |          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
 | 
	
		
			
				|  |  | -        ::google::protobuf::Syntax value = static_cast<::google::protobuf::Syntax>(val);
 | 
	
		
			
				|  |  | -        msg->set_syntax(value);
 | 
	
		
			
				|  |  |          break;
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |        default: {
 | 
	
	
		
			
				|  | @@ -629,6 +615,10 @@ const char* Type::_InternalParse(const char* begin, const char* end, void* objec
 | 
	
		
			
				|  |  |      }  // switch
 | 
	
		
			
				|  |  |    }  // while
 | 
	
		
			
				|  |  |    return ptr;
 | 
	
		
			
				|  |  | +string_till_end:
 | 
	
		
			
				|  |  | +  static_cast<::std::string*>(object)->clear();
 | 
	
		
			
				|  |  | +  static_cast<::std::string*>(object)->reserve(size);
 | 
	
		
			
				|  |  | +  goto len_delim_till_end;
 | 
	
		
			
				|  |  |  len_delim_till_end:
 | 
	
		
			
				|  |  |    return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
 | 
	
		
			
				|  |  |                                 {parser_till_end, object}, size);
 | 
	
	
		
			
				|  | @@ -1167,31 +1157,24 @@ const char* Field::_InternalParse(const char* begin, const char* end, void* obje
 | 
	
		
			
				|  |  |        // .google.protobuf.Field.Kind kind = 1;
 | 
	
		
			
				|  |  |        case 1: {
 | 
	
		
			
				|  |  |          if (static_cast<::google::protobuf::uint8>(tag) != 8) goto handle_unusual;
 | 
	
		
			
				|  |  | -        ::google::protobuf::uint64 val;
 | 
	
		
			
				|  |  | -        ptr = ::google::protobuf::io::Parse64(ptr, &val);
 | 
	
		
			
				|  |  | +        ::google::protobuf::uint64 val = ::google::protobuf::internal::ReadVarint(&ptr);
 | 
	
		
			
				|  |  | +        msg->set_kind(static_cast<::google::protobuf::Field_Kind>(val));
 | 
	
		
			
				|  |  |          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
 | 
	
		
			
				|  |  | -        ::google::protobuf::Field_Kind value = static_cast<::google::protobuf::Field_Kind>(val);
 | 
	
		
			
				|  |  | -        msg->set_kind(value);
 | 
	
		
			
				|  |  |          break;
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |        // .google.protobuf.Field.Cardinality cardinality = 2;
 | 
	
		
			
				|  |  |        case 2: {
 | 
	
		
			
				|  |  |          if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
 | 
	
		
			
				|  |  | -        ::google::protobuf::uint64 val;
 | 
	
		
			
				|  |  | -        ptr = ::google::protobuf::io::Parse64(ptr, &val);
 | 
	
		
			
				|  |  | +        ::google::protobuf::uint64 val = ::google::protobuf::internal::ReadVarint(&ptr);
 | 
	
		
			
				|  |  | +        msg->set_cardinality(static_cast<::google::protobuf::Field_Cardinality>(val));
 | 
	
		
			
				|  |  |          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
 | 
	
		
			
				|  |  | -        ::google::protobuf::Field_Cardinality value = static_cast<::google::protobuf::Field_Cardinality>(val);
 | 
	
		
			
				|  |  | -        msg->set_cardinality(value);
 | 
	
		
			
				|  |  |          break;
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |        // int32 number = 3;
 | 
	
		
			
				|  |  |        case 3: {
 | 
	
		
			
				|  |  |          if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
 | 
	
		
			
				|  |  | -        ::google::protobuf::uint64 val;
 | 
	
		
			
				|  |  | -        ptr = ::google::protobuf::io::Parse64(ptr, &val);
 | 
	
		
			
				|  |  | +        msg->set_number(::google::protobuf::internal::ReadVarint(&ptr));
 | 
	
		
			
				|  |  |          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
 | 
	
		
			
				|  |  | -        ::google::protobuf::int32 value = val;
 | 
	
		
			
				|  |  | -        msg->set_number(value);
 | 
	
		
			
				|  |  |          break;
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |        // string name = 4;
 | 
	
	
		
			
				|  | @@ -1200,16 +1183,13 @@ const char* Field::_InternalParse(const char* begin, const char* end, void* obje
 | 
	
		
			
				|  |  |          ptr = ::google::protobuf::io::ReadSize(ptr, &size);
 | 
	
		
			
				|  |  |          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
 | 
	
		
			
				|  |  |          ctx->extra_parse_data().SetFieldName("google.protobuf.Field.name");
 | 
	
		
			
				|  |  | -        auto str = msg->mutable_name();
 | 
	
		
			
				|  |  | +        object = msg->mutable_name();
 | 
	
		
			
				|  |  |          if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
 | 
	
		
			
				|  |  | -          object = str;
 | 
	
		
			
				|  |  | -          str->clear();
 | 
	
		
			
				|  |  | -          str->reserve(size);
 | 
	
		
			
				|  |  |            parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
 | 
	
		
			
				|  |  | -          goto len_delim_till_end;
 | 
	
		
			
				|  |  | +          goto string_till_end;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
 | 
	
		
			
				|  |  | -        ::google::protobuf::internal::InlineGreedyStringParser(str, ptr, size, ctx);
 | 
	
		
			
				|  |  | +        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
 | 
	
		
			
				|  |  |          ptr += size;
 | 
	
		
			
				|  |  |          break;
 | 
	
		
			
				|  |  |        }
 | 
	
	
		
			
				|  | @@ -1219,37 +1199,28 @@ const char* Field::_InternalParse(const char* begin, const char* end, void* obje
 | 
	
		
			
				|  |  |          ptr = ::google::protobuf::io::ReadSize(ptr, &size);
 | 
	
		
			
				|  |  |          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
 | 
	
		
			
				|  |  |          ctx->extra_parse_data().SetFieldName("google.protobuf.Field.type_url");
 | 
	
		
			
				|  |  | -        auto str = msg->mutable_type_url();
 | 
	
		
			
				|  |  | +        object = msg->mutable_type_url();
 | 
	
		
			
				|  |  |          if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
 | 
	
		
			
				|  |  | -          object = str;
 | 
	
		
			
				|  |  | -          str->clear();
 | 
	
		
			
				|  |  | -          str->reserve(size);
 | 
	
		
			
				|  |  |            parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
 | 
	
		
			
				|  |  | -          goto len_delim_till_end;
 | 
	
		
			
				|  |  | +          goto string_till_end;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
 | 
	
		
			
				|  |  | -        ::google::protobuf::internal::InlineGreedyStringParser(str, ptr, size, ctx);
 | 
	
		
			
				|  |  | +        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
 | 
	
		
			
				|  |  |          ptr += size;
 | 
	
		
			
				|  |  |          break;
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |        // int32 oneof_index = 7;
 | 
	
		
			
				|  |  |        case 7: {
 | 
	
		
			
				|  |  |          if (static_cast<::google::protobuf::uint8>(tag) != 56) goto handle_unusual;
 | 
	
		
			
				|  |  | -        ::google::protobuf::uint64 val;
 | 
	
		
			
				|  |  | -        ptr = ::google::protobuf::io::Parse64(ptr, &val);
 | 
	
		
			
				|  |  | +        msg->set_oneof_index(::google::protobuf::internal::ReadVarint(&ptr));
 | 
	
		
			
				|  |  |          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
 | 
	
		
			
				|  |  | -        ::google::protobuf::int32 value = val;
 | 
	
		
			
				|  |  | -        msg->set_oneof_index(value);
 | 
	
		
			
				|  |  |          break;
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |        // bool packed = 8;
 | 
	
		
			
				|  |  |        case 8: {
 | 
	
		
			
				|  |  |          if (static_cast<::google::protobuf::uint8>(tag) != 64) goto handle_unusual;
 | 
	
		
			
				|  |  | -        ::google::protobuf::uint64 val;
 | 
	
		
			
				|  |  | -        ptr = ::google::protobuf::io::Parse64(ptr, &val);
 | 
	
		
			
				|  |  | +        msg->set_packed(::google::protobuf::internal::ReadVarint(&ptr));
 | 
	
		
			
				|  |  |          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
 | 
	
		
			
				|  |  | -        bool value = val;
 | 
	
		
			
				|  |  | -        msg->set_packed(value);
 | 
	
		
			
				|  |  |          break;
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |        // repeated .google.protobuf.Option options = 9;
 | 
	
	
		
			
				|  | @@ -1261,11 +1232,9 @@ const char* Field::_InternalParse(const char* begin, const char* end, void* obje
 | 
	
		
			
				|  |  |            parser_till_end = ::google::protobuf::Option::_InternalParse;
 | 
	
		
			
				|  |  |            object = msg->add_options();
 | 
	
		
			
				|  |  |            if (size > end - ptr) goto len_delim_till_end;
 | 
	
		
			
				|  |  | -          auto newend = ptr + size;
 | 
	
		
			
				|  |  | -          bool ok = ctx->ParseExactRange({parser_till_end, object},
 | 
	
		
			
				|  |  | -                                         ptr, newend);
 | 
	
		
			
				|  |  | -          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
 | 
	
		
			
				|  |  | -          ptr = newend;
 | 
	
		
			
				|  |  | +          ptr += size;
 | 
	
		
			
				|  |  | +          GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
 | 
	
		
			
				|  |  | +              {parser_till_end, object}, ptr - size, ptr));
 | 
	
		
			
				|  |  |            if (ptr >= end) break;
 | 
	
		
			
				|  |  |          } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 74 && (ptr += 1));
 | 
	
		
			
				|  |  |          break;
 | 
	
	
		
			
				|  | @@ -1276,16 +1245,13 @@ const char* Field::_InternalParse(const char* begin, const char* end, void* obje
 | 
	
		
			
				|  |  |          ptr = ::google::protobuf::io::ReadSize(ptr, &size);
 | 
	
		
			
				|  |  |          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
 | 
	
		
			
				|  |  |          ctx->extra_parse_data().SetFieldName("google.protobuf.Field.json_name");
 | 
	
		
			
				|  |  | -        auto str = msg->mutable_json_name();
 | 
	
		
			
				|  |  | +        object = msg->mutable_json_name();
 | 
	
		
			
				|  |  |          if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
 | 
	
		
			
				|  |  | -          object = str;
 | 
	
		
			
				|  |  | -          str->clear();
 | 
	
		
			
				|  |  | -          str->reserve(size);
 | 
	
		
			
				|  |  |            parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
 | 
	
		
			
				|  |  | -          goto len_delim_till_end;
 | 
	
		
			
				|  |  | +          goto string_till_end;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
 | 
	
		
			
				|  |  | -        ::google::protobuf::internal::InlineGreedyStringParser(str, ptr, size, ctx);
 | 
	
		
			
				|  |  | +        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
 | 
	
		
			
				|  |  |          ptr += size;
 | 
	
		
			
				|  |  |          break;
 | 
	
		
			
				|  |  |        }
 | 
	
	
		
			
				|  | @@ -1295,16 +1261,13 @@ const char* Field::_InternalParse(const char* begin, const char* end, void* obje
 | 
	
		
			
				|  |  |          ptr = ::google::protobuf::io::ReadSize(ptr, &size);
 | 
	
		
			
				|  |  |          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
 | 
	
		
			
				|  |  |          ctx->extra_parse_data().SetFieldName("google.protobuf.Field.default_value");
 | 
	
		
			
				|  |  | -        auto str = msg->mutable_default_value();
 | 
	
		
			
				|  |  | +        object = msg->mutable_default_value();
 | 
	
		
			
				|  |  |          if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
 | 
	
		
			
				|  |  | -          object = str;
 | 
	
		
			
				|  |  | -          str->clear();
 | 
	
		
			
				|  |  | -          str->reserve(size);
 | 
	
		
			
				|  |  |            parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
 | 
	
		
			
				|  |  | -          goto len_delim_till_end;
 | 
	
		
			
				|  |  | +          goto string_till_end;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
 | 
	
		
			
				|  |  | -        ::google::protobuf::internal::InlineGreedyStringParser(str, ptr, size, ctx);
 | 
	
		
			
				|  |  | +        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
 | 
	
		
			
				|  |  |          ptr += size;
 | 
	
		
			
				|  |  |          break;
 | 
	
		
			
				|  |  |        }
 | 
	
	
		
			
				|  | @@ -1323,6 +1286,10 @@ const char* Field::_InternalParse(const char* begin, const char* end, void* obje
 | 
	
		
			
				|  |  |      }  // switch
 | 
	
		
			
				|  |  |    }  // while
 | 
	
		
			
				|  |  |    return ptr;
 | 
	
		
			
				|  |  | +string_till_end:
 | 
	
		
			
				|  |  | +  static_cast<::std::string*>(object)->clear();
 | 
	
		
			
				|  |  | +  static_cast<::std::string*>(object)->reserve(size);
 | 
	
		
			
				|  |  | +  goto len_delim_till_end;
 | 
	
		
			
				|  |  |  len_delim_till_end:
 | 
	
		
			
				|  |  |    return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
 | 
	
		
			
				|  |  |                                 {parser_till_end, object}, size);
 | 
	
	
		
			
				|  | @@ -2028,16 +1995,13 @@ const char* Enum::_InternalParse(const char* begin, const char* end, void* objec
 | 
	
		
			
				|  |  |          ptr = ::google::protobuf::io::ReadSize(ptr, &size);
 | 
	
		
			
				|  |  |          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
 | 
	
		
			
				|  |  |          ctx->extra_parse_data().SetFieldName("google.protobuf.Enum.name");
 | 
	
		
			
				|  |  | -        auto str = msg->mutable_name();
 | 
	
		
			
				|  |  | +        object = msg->mutable_name();
 | 
	
		
			
				|  |  |          if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
 | 
	
		
			
				|  |  | -          object = str;
 | 
	
		
			
				|  |  | -          str->clear();
 | 
	
		
			
				|  |  | -          str->reserve(size);
 | 
	
		
			
				|  |  |            parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
 | 
	
		
			
				|  |  | -          goto len_delim_till_end;
 | 
	
		
			
				|  |  | +          goto string_till_end;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
 | 
	
		
			
				|  |  | -        ::google::protobuf::internal::InlineGreedyStringParser(str, ptr, size, ctx);
 | 
	
		
			
				|  |  | +        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
 | 
	
		
			
				|  |  |          ptr += size;
 | 
	
		
			
				|  |  |          break;
 | 
	
		
			
				|  |  |        }
 | 
	
	
		
			
				|  | @@ -2050,11 +2014,9 @@ const char* Enum::_InternalParse(const char* begin, const char* end, void* objec
 | 
	
		
			
				|  |  |            parser_till_end = ::google::protobuf::EnumValue::_InternalParse;
 | 
	
		
			
				|  |  |            object = msg->add_enumvalue();
 | 
	
		
			
				|  |  |            if (size > end - ptr) goto len_delim_till_end;
 | 
	
		
			
				|  |  | -          auto newend = ptr + size;
 | 
	
		
			
				|  |  | -          bool ok = ctx->ParseExactRange({parser_till_end, object},
 | 
	
		
			
				|  |  | -                                         ptr, newend);
 | 
	
		
			
				|  |  | -          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
 | 
	
		
			
				|  |  | -          ptr = newend;
 | 
	
		
			
				|  |  | +          ptr += size;
 | 
	
		
			
				|  |  | +          GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
 | 
	
		
			
				|  |  | +              {parser_till_end, object}, ptr - size, ptr));
 | 
	
		
			
				|  |  |            if (ptr >= end) break;
 | 
	
		
			
				|  |  |          } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 18 && (ptr += 1));
 | 
	
		
			
				|  |  |          break;
 | 
	
	
		
			
				|  | @@ -2068,11 +2030,9 @@ const char* Enum::_InternalParse(const char* begin, const char* end, void* objec
 | 
	
		
			
				|  |  |            parser_till_end = ::google::protobuf::Option::_InternalParse;
 | 
	
		
			
				|  |  |            object = msg->add_options();
 | 
	
		
			
				|  |  |            if (size > end - ptr) goto len_delim_till_end;
 | 
	
		
			
				|  |  | -          auto newend = ptr + size;
 | 
	
		
			
				|  |  | -          bool ok = ctx->ParseExactRange({parser_till_end, object},
 | 
	
		
			
				|  |  | -                                         ptr, newend);
 | 
	
		
			
				|  |  | -          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
 | 
	
		
			
				|  |  | -          ptr = newend;
 | 
	
		
			
				|  |  | +          ptr += size;
 | 
	
		
			
				|  |  | +          GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
 | 
	
		
			
				|  |  | +              {parser_till_end, object}, ptr - size, ptr));
 | 
	
		
			
				|  |  |            if (ptr >= end) break;
 | 
	
		
			
				|  |  |          } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 26 && (ptr += 1));
 | 
	
		
			
				|  |  |          break;
 | 
	
	
		
			
				|  | @@ -2085,21 +2045,17 @@ const char* Enum::_InternalParse(const char* begin, const char* end, void* objec
 | 
	
		
			
				|  |  |          parser_till_end = ::google::protobuf::SourceContext::_InternalParse;
 | 
	
		
			
				|  |  |          object = msg->mutable_source_context();
 | 
	
		
			
				|  |  |          if (size > end - ptr) goto len_delim_till_end;
 | 
	
		
			
				|  |  | -        auto newend = ptr + size;
 | 
	
		
			
				|  |  | -        bool ok = ctx->ParseExactRange({parser_till_end, object},
 | 
	
		
			
				|  |  | -                                       ptr, newend);
 | 
	
		
			
				|  |  | -        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
 | 
	
		
			
				|  |  | -        ptr = newend;
 | 
	
		
			
				|  |  | +        ptr += size;
 | 
	
		
			
				|  |  | +        GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
 | 
	
		
			
				|  |  | +            {parser_till_end, object}, ptr - size, ptr));
 | 
	
		
			
				|  |  |          break;
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |        // .google.protobuf.Syntax syntax = 5;
 | 
	
		
			
				|  |  |        case 5: {
 | 
	
		
			
				|  |  |          if (static_cast<::google::protobuf::uint8>(tag) != 40) goto handle_unusual;
 | 
	
		
			
				|  |  | -        ::google::protobuf::uint64 val;
 | 
	
		
			
				|  |  | -        ptr = ::google::protobuf::io::Parse64(ptr, &val);
 | 
	
		
			
				|  |  | +        ::google::protobuf::uint64 val = ::google::protobuf::internal::ReadVarint(&ptr);
 | 
	
		
			
				|  |  | +        msg->set_syntax(static_cast<::google::protobuf::Syntax>(val));
 | 
	
		
			
				|  |  |          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
 | 
	
		
			
				|  |  | -        ::google::protobuf::Syntax value = static_cast<::google::protobuf::Syntax>(val);
 | 
	
		
			
				|  |  | -        msg->set_syntax(value);
 | 
	
		
			
				|  |  |          break;
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |        default: {
 | 
	
	
		
			
				|  | @@ -2117,6 +2073,10 @@ const char* Enum::_InternalParse(const char* begin, const char* end, void* objec
 | 
	
		
			
				|  |  |      }  // switch
 | 
	
		
			
				|  |  |    }  // while
 | 
	
		
			
				|  |  |    return ptr;
 | 
	
		
			
				|  |  | +string_till_end:
 | 
	
		
			
				|  |  | +  static_cast<::std::string*>(object)->clear();
 | 
	
		
			
				|  |  | +  static_cast<::std::string*>(object)->reserve(size);
 | 
	
		
			
				|  |  | +  goto len_delim_till_end;
 | 
	
		
			
				|  |  |  len_delim_till_end:
 | 
	
		
			
				|  |  |    return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
 | 
	
		
			
				|  |  |                                 {parser_till_end, object}, size);
 | 
	
	
		
			
				|  | @@ -2575,27 +2535,21 @@ const char* EnumValue::_InternalParse(const char* begin, const char* end, void*
 | 
	
		
			
				|  |  |          ptr = ::google::protobuf::io::ReadSize(ptr, &size);
 | 
	
		
			
				|  |  |          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
 | 
	
		
			
				|  |  |          ctx->extra_parse_data().SetFieldName("google.protobuf.EnumValue.name");
 | 
	
		
			
				|  |  | -        auto str = msg->mutable_name();
 | 
	
		
			
				|  |  | +        object = msg->mutable_name();
 | 
	
		
			
				|  |  |          if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
 | 
	
		
			
				|  |  | -          object = str;
 | 
	
		
			
				|  |  | -          str->clear();
 | 
	
		
			
				|  |  | -          str->reserve(size);
 | 
	
		
			
				|  |  |            parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
 | 
	
		
			
				|  |  | -          goto len_delim_till_end;
 | 
	
		
			
				|  |  | +          goto string_till_end;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
 | 
	
		
			
				|  |  | -        ::google::protobuf::internal::InlineGreedyStringParser(str, ptr, size, ctx);
 | 
	
		
			
				|  |  | +        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
 | 
	
		
			
				|  |  |          ptr += size;
 | 
	
		
			
				|  |  |          break;
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |        // int32 number = 2;
 | 
	
		
			
				|  |  |        case 2: {
 | 
	
		
			
				|  |  |          if (static_cast<::google::protobuf::uint8>(tag) != 16) goto handle_unusual;
 | 
	
		
			
				|  |  | -        ::google::protobuf::uint64 val;
 | 
	
		
			
				|  |  | -        ptr = ::google::protobuf::io::Parse64(ptr, &val);
 | 
	
		
			
				|  |  | +        msg->set_number(::google::protobuf::internal::ReadVarint(&ptr));
 | 
	
		
			
				|  |  |          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
 | 
	
		
			
				|  |  | -        ::google::protobuf::int32 value = val;
 | 
	
		
			
				|  |  | -        msg->set_number(value);
 | 
	
		
			
				|  |  |          break;
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |        // repeated .google.protobuf.Option options = 3;
 | 
	
	
		
			
				|  | @@ -2607,11 +2561,9 @@ const char* EnumValue::_InternalParse(const char* begin, const char* end, void*
 | 
	
		
			
				|  |  |            parser_till_end = ::google::protobuf::Option::_InternalParse;
 | 
	
		
			
				|  |  |            object = msg->add_options();
 | 
	
		
			
				|  |  |            if (size > end - ptr) goto len_delim_till_end;
 | 
	
		
			
				|  |  | -          auto newend = ptr + size;
 | 
	
		
			
				|  |  | -          bool ok = ctx->ParseExactRange({parser_till_end, object},
 | 
	
		
			
				|  |  | -                                         ptr, newend);
 | 
	
		
			
				|  |  | -          GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
 | 
	
		
			
				|  |  | -          ptr = newend;
 | 
	
		
			
				|  |  | +          ptr += size;
 | 
	
		
			
				|  |  | +          GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
 | 
	
		
			
				|  |  | +              {parser_till_end, object}, ptr - size, ptr));
 | 
	
		
			
				|  |  |            if (ptr >= end) break;
 | 
	
		
			
				|  |  |          } while ((::google::protobuf::io::UnalignedLoad<::google::protobuf::uint64>(ptr) & 255) == 26 && (ptr += 1));
 | 
	
		
			
				|  |  |          break;
 | 
	
	
		
			
				|  | @@ -2631,6 +2583,10 @@ const char* EnumValue::_InternalParse(const char* begin, const char* end, void*
 | 
	
		
			
				|  |  |      }  // switch
 | 
	
		
			
				|  |  |    }  // while
 | 
	
		
			
				|  |  |    return ptr;
 | 
	
		
			
				|  |  | +string_till_end:
 | 
	
		
			
				|  |  | +  static_cast<::std::string*>(object)->clear();
 | 
	
		
			
				|  |  | +  static_cast<::std::string*>(object)->reserve(size);
 | 
	
		
			
				|  |  | +  goto len_delim_till_end;
 | 
	
		
			
				|  |  |  len_delim_till_end:
 | 
	
		
			
				|  |  |    return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
 | 
	
		
			
				|  |  |                                 {parser_till_end, object}, size);
 | 
	
	
		
			
				|  | @@ -3041,16 +2997,13 @@ const char* Option::_InternalParse(const char* begin, const char* end, void* obj
 | 
	
		
			
				|  |  |          ptr = ::google::protobuf::io::ReadSize(ptr, &size);
 | 
	
		
			
				|  |  |          GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
 | 
	
		
			
				|  |  |          ctx->extra_parse_data().SetFieldName("google.protobuf.Option.name");
 | 
	
		
			
				|  |  | -        auto str = msg->mutable_name();
 | 
	
		
			
				|  |  | +        object = msg->mutable_name();
 | 
	
		
			
				|  |  |          if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
 | 
	
		
			
				|  |  | -          object = str;
 | 
	
		
			
				|  |  | -          str->clear();
 | 
	
		
			
				|  |  | -          str->reserve(size);
 | 
	
		
			
				|  |  |            parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
 | 
	
		
			
				|  |  | -          goto len_delim_till_end;
 | 
	
		
			
				|  |  | +          goto string_till_end;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
 | 
	
		
			
				|  |  | -        ::google::protobuf::internal::InlineGreedyStringParser(str, ptr, size, ctx);
 | 
	
		
			
				|  |  | +        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
 | 
	
		
			
				|  |  |          ptr += size;
 | 
	
		
			
				|  |  |          break;
 | 
	
		
			
				|  |  |        }
 | 
	
	
		
			
				|  | @@ -3062,11 +3015,9 @@ const char* Option::_InternalParse(const char* begin, const char* end, void* obj
 | 
	
		
			
				|  |  |          parser_till_end = ::google::protobuf::Any::_InternalParse;
 | 
	
		
			
				|  |  |          object = msg->mutable_value();
 | 
	
		
			
				|  |  |          if (size > end - ptr) goto len_delim_till_end;
 | 
	
		
			
				|  |  | -        auto newend = ptr + size;
 | 
	
		
			
				|  |  | -        bool ok = ctx->ParseExactRange({parser_till_end, object},
 | 
	
		
			
				|  |  | -                                       ptr, newend);
 | 
	
		
			
				|  |  | -        GOOGLE_PROTOBUF_PARSER_ASSERT(ok);
 | 
	
		
			
				|  |  | -        ptr = newend;
 | 
	
		
			
				|  |  | +        ptr += size;
 | 
	
		
			
				|  |  | +        GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
 | 
	
		
			
				|  |  | +            {parser_till_end, object}, ptr - size, ptr));
 | 
	
		
			
				|  |  |          break;
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |        default: {
 | 
	
	
		
			
				|  | @@ -3084,6 +3035,10 @@ const char* Option::_InternalParse(const char* begin, const char* end, void* obj
 | 
	
		
			
				|  |  |      }  // switch
 | 
	
		
			
				|  |  |    }  // while
 | 
	
		
			
				|  |  |    return ptr;
 | 
	
		
			
				|  |  | +string_till_end:
 | 
	
		
			
				|  |  | +  static_cast<::std::string*>(object)->clear();
 | 
	
		
			
				|  |  | +  static_cast<::std::string*>(object)->reserve(size);
 | 
	
		
			
				|  |  | +  goto len_delim_till_end;
 | 
	
		
			
				|  |  |  len_delim_till_end:
 | 
	
		
			
				|  |  |    return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
 | 
	
		
			
				|  |  |                                 {parser_till_end, object}, size);
 |