Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(411)

Unified Diff: third_party/protobuf/patches/02_unknown_fields_in_protobuf_lite.patch

Issue 1322483002: Revert https://codereview.chromium.org/1291903002 (protobuf roll). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/protobuf/patches/02_unknown_fields_in_protobuf_lite.patch
diff --git a/third_party/protobuf/patches/02_unknown_fields_in_protobuf_lite.patch b/third_party/protobuf/patches/02_unknown_fields_in_protobuf_lite.patch
deleted file mode 100644
index 966e564c5f66b1610a31e1e7df66e3169ec94f44..0000000000000000000000000000000000000000
--- a/third_party/protobuf/patches/02_unknown_fields_in_protobuf_lite.patch
+++ /dev/null
@@ -1,3408 +0,0 @@
-diff --git a/third_party/protobuf/BUILD.gn b/third_party/protobuf/BUILD.gn
-index 1c2c85e..aaeae89 100644
---- a/third_party/protobuf/BUILD.gn
-+++ b/third_party/protobuf/BUILD.gn
-@@ -104,6 +104,7 @@ protobuf_lite_sources = [
- "src/google/protobuf/stubs/time.h",
- "src/google/protobuf/stubs/type_traits.h",
- "src/google/protobuf/testing/googletest.h",
-+ "src/google/protobuf/unknown_field_set.cc",
- "src/google/protobuf/unknown_field_set.h",
- "src/google/protobuf/wire_format_lite.cc",
- "src/google/protobuf/wire_format_lite.h",
-@@ -220,7 +221,6 @@ source_set("protobuf_full") {
- "src/google/protobuf/timestamp.pb.h",
- "src/google/protobuf/type.pb.cc",
- "src/google/protobuf/type.pb.h",
-- "src/google/protobuf/unknown_field_set.cc",
- "src/google/protobuf/util/field_comparator.cc",
- "src/google/protobuf/util/field_comparator.h",
- "src/google/protobuf/util/internal/constants.h",
-diff --git a/third_party/protobuf/README.chromium b/third_party/protobuf/README.chromium
-index da9f26f..aa428ad 100644
---- a/third_party/protobuf/README.chromium
-+++ b/third_party/protobuf/README.chromium
-@@ -22,6 +22,12 @@ Steps used to create the current version:
- 01: Miscellaneous build fixes to make the upstream sources compile. At this
- point you should be able to build the protobuf_* and protoc targets (but
- not necessarily anything depending on them).
-+ 02: Add unknown field retention to protobuf_lite. This is a large and complex
-+ patch which will likely require reworking to apply correctly. Changes to
-+ .pb.* files can likely be autogenerated once you apply the rest of the
-+ patch and rebuild protoc; look at step (3) below and the
-+ generate_descriptor_proto.sh script in the protobuf root directory for a
-+ guide. Based on http://crrev.com/62331 and http://crrev.com/173228 .
- (3) Generate descriptor_pb2.py using something like the following steps. Make
- sure you've regenerated your buildfiles and will build protoc from the
- newly-modified sources above.
-diff --git a/third_party/protobuf/protobuf.gyp b/third_party/protobuf/protobuf.gyp
-index e839ad7..9fba350 100644
---- a/third_party/protobuf/protobuf.gyp
-+++ b/third_party/protobuf/protobuf.gyp
-@@ -178,7 +178,6 @@
- 'src/google/protobuf/timestamp.pb.h',
- 'src/google/protobuf/type.pb.cc',
- 'src/google/protobuf/type.pb.h',
-- 'src/google/protobuf/unknown_field_set.cc',
- 'src/google/protobuf/util/field_comparator.cc',
- 'src/google/protobuf/util/field_comparator.h',
- 'src/google/protobuf/util/internal/constants.h',
-diff --git a/third_party/protobuf/protobuf_lite.gypi b/third_party/protobuf/protobuf_lite.gypi
-index 90fe65b..6415ab2 100644
---- a/third_party/protobuf/protobuf_lite.gypi
-+++ b/third_party/protobuf/protobuf_lite.gypi
-@@ -80,6 +80,7 @@
- 'src/google/protobuf/stubs/time.h',
- 'src/google/protobuf/stubs/type_traits.h',
- 'src/google/protobuf/testing/googletest.h',
-+ 'src/google/protobuf/unknown_field_set.cc',
- 'src/google/protobuf/unknown_field_set.h',
- 'src/google/protobuf/wire_format_lite.cc',
- 'src/google/protobuf/wire_format_lite.h',
-diff --git a/third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_enum_field.cc b/third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_enum_field.cc
-index 965327b..8c21ed2 100644
---- a/third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_enum_field.cc
-+++ b/third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_enum_field.cc
-@@ -365,7 +365,7 @@ GenerateMergeFromCodedStreamWithPacking(io::Printer* printer) const {
- " this->mutable_$name$())));\n");
- } else if (UseUnknownFieldSet(descriptor_->file())) {
- printer->Print(variables_,
-- "DO_((::google::protobuf::internal::WireFormat::ReadPackedEnumPreserveUnknowns(\n"
-+ "DO_((::google::protobuf::internal::WireFormatLite::ReadPackedEnumPreserveUnknowns(\n"
- " input,\n"
- " $number$,\n"
- " $type$_IsValid,\n"
-diff --git a/third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_helpers.h b/third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_helpers.h
-index 4bbf830..5029954 100644
---- a/third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_helpers.h
-+++ b/third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_helpers.h
-@@ -166,7 +166,8 @@ inline bool PreserveUnknownFields(const Descriptor* message) {
- // If PreserveUnknownFields() is false, this method will not be
- // used.
- inline bool UseUnknownFieldSet(const FileDescriptor* file) {
-- return file->options().optimize_for() != FileOptions::LITE_RUNTIME;
-+ return file->options().optimize_for() != FileOptions::LITE_RUNTIME ||
-+ file->options().retain_unknown_fields();
- }
-
-
-diff --git a/third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_message.cc b/third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_message.cc
-index b0e3875..4909d0f 100644
---- a/third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_message.cc
-+++ b/third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_message.cc
-@@ -3116,7 +3116,7 @@ GenerateMergeFromCodedStream(io::Printer* printer) {
- if (PreserveUnknownFields(descriptor_)) {
- if (UseUnknownFieldSet(descriptor_->file())) {
- printer->Print(
-- "DO_(::google::protobuf::internal::WireFormat::SkipField(\n"
-+ "DO_(::google::protobuf::internal::WireFormatLite::SkipField(\n"
- " input, tag, mutable_unknown_fields()));\n");
- } else {
- printer->Print(
-@@ -3209,7 +3209,7 @@ GenerateSerializeWithCachedSizes(io::Printer* printer) {
- "classname", classname_);
- GOOGLE_CHECK(UseUnknownFieldSet(descriptor_->file()));
- printer->Print(
-- " ::google::protobuf::internal::WireFormat::SerializeUnknownMessageSetItems(\n"
-+ " ::google::protobuf::internal::WireFormatLite::SerializeUnknownMessageSetItems(\n"
- " unknown_fields(), output);\n");
- printer->Print(
- "}\n");
-@@ -3249,7 +3249,7 @@ GenerateSerializeWithCachedSizesToArray(io::Printer* printer) {
- "classname", classname_);
- GOOGLE_CHECK(UseUnknownFieldSet(descriptor_->file()));
- printer->Print(
-- " target = ::google::protobuf::internal::WireFormat::\n"
-+ " target = ::google::protobuf::internal::WireFormatLite::\n"
- " SerializeUnknownMessageSetItemsToArray(\n"
- " unknown_fields(), target);\n");
- printer->Print(
-@@ -3319,11 +3319,11 @@ GenerateSerializeWithCachedSizesBody(io::Printer* printer, bool to_array) {
- if (to_array) {
- printer->Print(
- "target = "
-- "::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(\n"
-+ "::google::protobuf::internal::WireFormatLite::SerializeUnknownFieldsToArray(\n"
- " unknown_fields(), target);\n");
- } else {
- printer->Print(
-- "::google::protobuf::internal::WireFormat::SerializeUnknownFields(\n"
-+ "::google::protobuf::internal::WireFormatLite::SerializeUnknownFields(\n"
- " unknown_fields(), output);\n");
- }
- printer->Outdent();
-@@ -3386,7 +3386,7 @@ GenerateByteSize(io::Printer* printer) {
- GOOGLE_CHECK(UseUnknownFieldSet(descriptor_->file()));
- printer->Print(
- "if (_internal_metadata_.have_unknown_fields()) {\n"
-- " total_size += ::google::protobuf::internal::WireFormat::\n"
-+ " total_size += ::google::protobuf::internal::WireFormatLite::\n"
- " ComputeUnknownMessageSetItemsSize(unknown_fields());\n"
- "}\n");
- printer->Print(
-@@ -3607,7 +3607,7 @@ GenerateByteSize(io::Printer* printer) {
- printer->Print(
- "if (_internal_metadata_.have_unknown_fields()) {\n"
- " total_size +=\n"
-- " ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(\n"
-+ " ::google::protobuf::internal::WireFormatLite::ComputeUnknownFieldsSize(\n"
- " unknown_fields());\n"
- "}\n");
- } else {
-diff --git a/third_party/protobuf/src/google/protobuf/compiler/plugin.pb.cc b/third_party/protobuf/src/google/protobuf/compiler/plugin.pb.cc
-index e7890fa..29e3590 100644
---- a/third_party/protobuf/src/google/protobuf/compiler/plugin.pb.cc
-+++ b/third_party/protobuf/src/google/protobuf/compiler/plugin.pb.cc
-@@ -320,7 +320,7 @@ bool CodeGeneratorRequest::MergePartialFromCodedStream(
- ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
- goto success;
- }
-- DO_(::google::protobuf::internal::WireFormat::SkipField(
-+ DO_(::google::protobuf::internal::WireFormatLite::SkipField(
- input, tag, mutable_unknown_fields()));
- break;
- }
-@@ -365,7 +365,7 @@ void CodeGeneratorRequest::SerializeWithCachedSizes(
- }
-
- if (_internal_metadata_.have_unknown_fields()) {
-- ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-+ ::google::protobuf::internal::WireFormatLite::SerializeUnknownFields(
- unknown_fields(), output);
- }
- // @@protoc_insertion_point(serialize_end:google.protobuf.compiler.CodeGeneratorRequest)
-@@ -403,7 +403,7 @@ void CodeGeneratorRequest::SerializeWithCachedSizes(
- }
-
- if (_internal_metadata_.have_unknown_fields()) {
-- target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-+ target = ::google::protobuf::internal::WireFormatLite::SerializeUnknownFieldsToArray(
- unknown_fields(), target);
- }
- // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.compiler.CodeGeneratorRequest)
-@@ -437,7 +437,7 @@ int CodeGeneratorRequest::ByteSize() const {
-
- if (_internal_metadata_.have_unknown_fields()) {
- total_size +=
-- ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-+ ::google::protobuf::internal::WireFormatLite::ComputeUnknownFieldsSize(
- unknown_fields());
- }
- GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-@@ -811,7 +811,7 @@ bool CodeGeneratorResponse_File::MergePartialFromCodedStream(
- ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
- goto success;
- }
-- DO_(::google::protobuf::internal::WireFormat::SkipField(
-+ DO_(::google::protobuf::internal::WireFormatLite::SkipField(
- input, tag, mutable_unknown_fields()));
- break;
- }
-@@ -860,7 +860,7 @@ void CodeGeneratorResponse_File::SerializeWithCachedSizes(
- }
-
- if (_internal_metadata_.have_unknown_fields()) {
-- ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-+ ::google::protobuf::internal::WireFormatLite::SerializeUnknownFields(
- unknown_fields(), output);
- }
- // @@protoc_insertion_point(serialize_end:google.protobuf.compiler.CodeGeneratorResponse.File)
-@@ -903,7 +903,7 @@ void CodeGeneratorResponse_File::SerializeWithCachedSizes(
- }
-
- if (_internal_metadata_.have_unknown_fields()) {
-- target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-+ target = ::google::protobuf::internal::WireFormatLite::SerializeUnknownFieldsToArray(
- unknown_fields(), target);
- }
- // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.compiler.CodeGeneratorResponse.File)
-@@ -938,7 +938,7 @@ int CodeGeneratorResponse_File::ByteSize() const {
- }
- if (_internal_metadata_.have_unknown_fields()) {
- total_size +=
-- ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-+ ::google::protobuf::internal::WireFormatLite::ComputeUnknownFieldsSize(
- unknown_fields());
- }
- GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-@@ -1147,7 +1147,7 @@ bool CodeGeneratorResponse::MergePartialFromCodedStream(
- ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
- goto success;
- }
-- DO_(::google::protobuf::internal::WireFormat::SkipField(
-+ DO_(::google::protobuf::internal::WireFormatLite::SkipField(
- input, tag, mutable_unknown_fields()));
- break;
- }
-@@ -1182,7 +1182,7 @@ void CodeGeneratorResponse::SerializeWithCachedSizes(
- }
-
- if (_internal_metadata_.have_unknown_fields()) {
-- ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-+ ::google::protobuf::internal::WireFormatLite::SerializeUnknownFields(
- unknown_fields(), output);
- }
- // @@protoc_insertion_point(serialize_end:google.protobuf.compiler.CodeGeneratorResponse)
-@@ -1210,7 +1210,7 @@ void CodeGeneratorResponse::SerializeWithCachedSizes(
- }
-
- if (_internal_metadata_.have_unknown_fields()) {
-- target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-+ target = ::google::protobuf::internal::WireFormatLite::SerializeUnknownFieldsToArray(
- unknown_fields(), target);
- }
- // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.compiler.CodeGeneratorResponse)
-@@ -1237,7 +1237,7 @@ int CodeGeneratorResponse::ByteSize() const {
-
- if (_internal_metadata_.have_unknown_fields()) {
- total_size +=
-- ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-+ ::google::protobuf::internal::WireFormatLite::ComputeUnknownFieldsSize(
- unknown_fields());
- }
- GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-diff --git a/third_party/protobuf/src/google/protobuf/descriptor.cc b/third_party/protobuf/src/google/protobuf/descriptor.cc
-index 2855c37..36e42a6 100644
---- a/third_party/protobuf/src/google/protobuf/descriptor.cc
-+++ b/third_party/protobuf/src/google/protobuf/descriptor.cc
-@@ -5600,7 +5600,7 @@ bool DescriptorBuilder::OptionInterpreter::InterpretSingleOption(
- io::StringOutputStream outstr(
- parent_unknown_fields->AddLengthDelimited((*iter)->number()));
- io::CodedOutputStream out(&outstr);
-- internal::WireFormat::SerializeUnknownFields(*unknown_fields, &out);
-+ internal::WireFormatLite::SerializeUnknownFields(*unknown_fields, &out);
- GOOGLE_CHECK(!out.HadError())
- << "Unexpected failure while serializing option submessage "
- << debug_msg_name << "\".";
-diff --git a/third_party/protobuf/src/google/protobuf/descriptor.pb.cc b/third_party/protobuf/src/google/protobuf/descriptor.pb.cc
-index 5e7eeaa..f53e604 100644
---- a/third_party/protobuf/src/google/protobuf/descriptor.pb.cc
-+++ b/third_party/protobuf/src/google/protobuf/descriptor.pb.cc
-@@ -311,10 +311,11 @@ void protobuf_AssignDesc_google_2fprotobuf_2fdescriptor_2eproto() {
- GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(MethodDescriptorProto, _internal_metadata_),
- -1);
- FileOptions_descriptor_ = file->message_type(9);
-- static const int FileOptions_offsets_[16] = {
-+ static const int FileOptions_offsets_[17] = {
- GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileOptions, java_package_),
- GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileOptions, java_outer_classname_),
- GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileOptions, java_multiple_files_),
-+ GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileOptions, retain_unknown_fields_),
- GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileOptions, java_generate_equals_and_hash_),
- GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileOptions, java_string_check_utf8_),
- GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(FileOptions, optimize_for_),
-@@ -696,68 +697,69 @@ void protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto() {
- "_type\030\002 \001(\t\022\023\n\013output_type\030\003 \001(\t\022/\n\007opti"
- "ons\030\004 \001(\0132\036.google.protobuf.MethodOption"
- "s\022\037\n\020client_streaming\030\005 \001(\010:\005false\022\037\n\020se"
-- "rver_streaming\030\006 \001(\010:\005false\"\252\005\n\013FileOpti"
-+ "rver_streaming\030\006 \001(\010:\005false\"\320\005\n\013FileOpti"
- "ons\022\024\n\014java_package\030\001 \001(\t\022\034\n\024java_outer_"
- "classname\030\010 \001(\t\022\"\n\023java_multiple_files\030\n"
-- " \001(\010:\005false\022,\n\035java_generate_equals_and_"
-- "hash\030\024 \001(\010:\005false\022%\n\026java_string_check_u"
-- "tf8\030\033 \001(\010:\005false\022F\n\014optimize_for\030\t \001(\0162)"
-- ".google.protobuf.FileOptions.OptimizeMod"
-- "e:\005SPEED\022\022\n\ngo_package\030\013 \001(\t\022\"\n\023cc_gener"
-- "ic_services\030\020 \001(\010:\005false\022$\n\025java_generic"
-- "_services\030\021 \001(\010:\005false\022\"\n\023py_generic_ser"
-- "vices\030\022 \001(\010:\005false\022\031\n\ndeprecated\030\027 \001(\010:\005"
-- "false\022\037\n\020cc_enable_arenas\030\037 \001(\010:\005false\022\031"
-- "\n\021objc_class_prefix\030$ \001(\t\022\030\n\020csharp_name"
-- "space\030% \001(\t\022\'\n\037javanano_use_deprecated_p"
-- "ackage\030& \001(\010\022C\n\024uninterpreted_option\030\347\007 "
-- "\003(\0132$.google.protobuf.UninterpretedOptio"
-- "n\":\n\014OptimizeMode\022\t\n\005SPEED\020\001\022\r\n\tCODE_SIZ"
-- "E\020\002\022\020\n\014LITE_RUNTIME\020\003*\t\010\350\007\020\200\200\200\200\002\"\346\001\n\016Mes"
-- "sageOptions\022&\n\027message_set_wire_format\030\001"
-- " \001(\010:\005false\022.\n\037no_standard_descriptor_ac"
-- "cessor\030\002 \001(\010:\005false\022\031\n\ndeprecated\030\003 \001(\010:"
-- "\005false\022\021\n\tmap_entry\030\007 \001(\010\022C\n\024uninterpret"
-+ " \001(\010:\005false\022$\n\025retain_unknown_fields\030\014 \001"
-+ "(\010:\005false\022,\n\035java_generate_equals_and_ha"
-+ "sh\030\024 \001(\010:\005false\022%\n\026java_string_check_utf"
-+ "8\030\033 \001(\010:\005false\022F\n\014optimize_for\030\t \001(\0162).g"
-+ "oogle.protobuf.FileOptions.OptimizeMode:"
-+ "\005SPEED\022\022\n\ngo_package\030\013 \001(\t\022\"\n\023cc_generic"
-+ "_services\030\020 \001(\010:\005false\022$\n\025java_generic_s"
-+ "ervices\030\021 \001(\010:\005false\022\"\n\023py_generic_servi"
-+ "ces\030\022 \001(\010:\005false\022\031\n\ndeprecated\030\027 \001(\010:\005fa"
-+ "lse\022\037\n\020cc_enable_arenas\030\037 \001(\010:\005false\022\031\n\021"
-+ "objc_class_prefix\030$ \001(\t\022\030\n\020csharp_namesp"
-+ "ace\030% \001(\t\022\'\n\037javanano_use_deprecated_pac"
-+ "kage\030& \001(\010\022C\n\024uninterpreted_option\030\347\007 \003("
-+ "\0132$.google.protobuf.UninterpretedOption\""
-+ ":\n\014OptimizeMode\022\t\n\005SPEED\020\001\022\r\n\tCODE_SIZE\020"
-+ "\002\022\020\n\014LITE_RUNTIME\020\003*\t\010\350\007\020\200\200\200\200\002\"\346\001\n\016Messa"
-+ "geOptions\022&\n\027message_set_wire_format\030\001 \001"
-+ "(\010:\005false\022.\n\037no_standard_descriptor_acce"
-+ "ssor\030\002 \001(\010:\005false\022\031\n\ndeprecated\030\003 \001(\010:\005f"
-+ "alse\022\021\n\tmap_entry\030\007 \001(\010\022C\n\024uninterpreted"
-+ "_option\030\347\007 \003(\0132$.google.protobuf.Uninter"
-+ "pretedOption*\t\010\350\007\020\200\200\200\200\002\"\230\003\n\014FieldOptions"
-+ "\022:\n\005ctype\030\001 \001(\0162#.google.protobuf.FieldO"
-+ "ptions.CType:\006STRING\022\016\n\006packed\030\002 \001(\010\022\?\n\006"
-+ "jstype\030\006 \001(\0162$.google.protobuf.FieldOpti"
-+ "ons.JSType:\tJS_NORMAL\022\023\n\004lazy\030\005 \001(\010:\005fal"
-+ "se\022\031\n\ndeprecated\030\003 \001(\010:\005false\022\023\n\004weak\030\n "
-+ "\001(\010:\005false\022C\n\024uninterpreted_option\030\347\007 \003("
-+ "\0132$.google.protobuf.UninterpretedOption\""
-+ "/\n\005CType\022\n\n\006STRING\020\000\022\010\n\004CORD\020\001\022\020\n\014STRING"
-+ "_PIECE\020\002\"5\n\006JSType\022\r\n\tJS_NORMAL\020\000\022\r\n\tJS_"
-+ "STRING\020\001\022\r\n\tJS_NUMBER\020\002*\t\010\350\007\020\200\200\200\200\002\"\215\001\n\013E"
-+ "numOptions\022\023\n\013allow_alias\030\002 \001(\010\022\031\n\ndepre"
-+ "cated\030\003 \001(\010:\005false\022C\n\024uninterpreted_opti"
-+ "on\030\347\007 \003(\0132$.google.protobuf.Uninterprete"
-+ "dOption*\t\010\350\007\020\200\200\200\200\002\"}\n\020EnumValueOptions\022\031"
-+ "\n\ndeprecated\030\001 \001(\010:\005false\022C\n\024uninterpret"
- "ed_option\030\347\007 \003(\0132$.google.protobuf.Unint"
-- "erpretedOption*\t\010\350\007\020\200\200\200\200\002\"\230\003\n\014FieldOptio"
-- "ns\022:\n\005ctype\030\001 \001(\0162#.google.protobuf.Fiel"
-- "dOptions.CType:\006STRING\022\016\n\006packed\030\002 \001(\010\022\?"
-- "\n\006jstype\030\006 \001(\0162$.google.protobuf.FieldOp"
-- "tions.JSType:\tJS_NORMAL\022\023\n\004lazy\030\005 \001(\010:\005f"
-- "alse\022\031\n\ndeprecated\030\003 \001(\010:\005false\022\023\n\004weak\030"
-- "\n \001(\010:\005false\022C\n\024uninterpreted_option\030\347\007 "
-- "\003(\0132$.google.protobuf.UninterpretedOptio"
-- "n\"/\n\005CType\022\n\n\006STRING\020\000\022\010\n\004CORD\020\001\022\020\n\014STRI"
-- "NG_PIECE\020\002\"5\n\006JSType\022\r\n\tJS_NORMAL\020\000\022\r\n\tJ"
-- "S_STRING\020\001\022\r\n\tJS_NUMBER\020\002*\t\010\350\007\020\200\200\200\200\002\"\215\001\n"
-- "\013EnumOptions\022\023\n\013allow_alias\030\002 \001(\010\022\031\n\ndep"
-- "recated\030\003 \001(\010:\005false\022C\n\024uninterpreted_op"
-- "tion\030\347\007 \003(\0132$.google.protobuf.Uninterpre"
-- "tedOption*\t\010\350\007\020\200\200\200\200\002\"}\n\020EnumValueOptions"
-- "\022\031\n\ndeprecated\030\001 \001(\010:\005false\022C\n\024uninterpr"
-- "eted_option\030\347\007 \003(\0132$.google.protobuf.Uni"
-- "nterpretedOption*\t\010\350\007\020\200\200\200\200\002\"{\n\016ServiceOp"
-- "tions\022\031\n\ndeprecated\030! \001(\010:\005false\022C\n\024unin"
-- "terpreted_option\030\347\007 \003(\0132$.google.protobu"
-- "f.UninterpretedOption*\t\010\350\007\020\200\200\200\200\002\"z\n\rMeth"
-- "odOptions\022\031\n\ndeprecated\030! \001(\010:\005false\022C\n\024"
-- "uninterpreted_option\030\347\007 \003(\0132$.google.pro"
-- "tobuf.UninterpretedOption*\t\010\350\007\020\200\200\200\200\002\"\236\002\n"
-- "\023UninterpretedOption\022;\n\004name\030\002 \003(\0132-.goo"
-- "gle.protobuf.UninterpretedOption.NamePar"
-- "t\022\030\n\020identifier_value\030\003 \001(\t\022\032\n\022positive_"
-- "int_value\030\004 \001(\004\022\032\n\022negative_int_value\030\005 "
-- "\001(\003\022\024\n\014double_value\030\006 \001(\001\022\024\n\014string_valu"
-- "e\030\007 \001(\014\022\027\n\017aggregate_value\030\010 \001(\t\0323\n\010Name"
-- "Part\022\021\n\tname_part\030\001 \002(\t\022\024\n\014is_extension\030"
-- "\002 \002(\010\"\325\001\n\016SourceCodeInfo\022:\n\010location\030\001 \003"
-- "(\0132(.google.protobuf.SourceCodeInfo.Loca"
-- "tion\032\206\001\n\010Location\022\020\n\004path\030\001 \003(\005B\002\020\001\022\020\n\004s"
-- "pan\030\002 \003(\005B\002\020\001\022\030\n\020leading_comments\030\003 \001(\t\022"
-- "\031\n\021trailing_comments\030\004 \001(\t\022!\n\031leading_de"
-- "tached_comments\030\006 \003(\tB[\n\023com.google.prot"
-- "obufB\020DescriptorProtosH\001Z\ndescriptor\242\002\003G"
-- "PB\252\002\032Google.Protobuf.Reflection\260\002\001", 4994);
-+ "erpretedOption*\t\010\350\007\020\200\200\200\200\002\"{\n\016ServiceOpti"
-+ "ons\022\031\n\ndeprecated\030! \001(\010:\005false\022C\n\024uninte"
-+ "rpreted_option\030\347\007 \003(\0132$.google.protobuf."
-+ "UninterpretedOption*\t\010\350\007\020\200\200\200\200\002\"z\n\rMethod"
-+ "Options\022\031\n\ndeprecated\030! \001(\010:\005false\022C\n\024un"
-+ "interpreted_option\030\347\007 \003(\0132$.google.proto"
-+ "buf.UninterpretedOption*\t\010\350\007\020\200\200\200\200\002\"\236\002\n\023U"
-+ "ninterpretedOption\022;\n\004name\030\002 \003(\0132-.googl"
-+ "e.protobuf.UninterpretedOption.NamePart\022"
-+ "\030\n\020identifier_value\030\003 \001(\t\022\032\n\022positive_in"
-+ "t_value\030\004 \001(\004\022\032\n\022negative_int_value\030\005 \001("
-+ "\003\022\024\n\014double_value\030\006 \001(\001\022\024\n\014string_value\030"
-+ "\007 \001(\014\022\027\n\017aggregate_value\030\010 \001(\t\0323\n\010NamePa"
-+ "rt\022\021\n\tname_part\030\001 \002(\t\022\024\n\014is_extension\030\002 "
-+ "\002(\010\"\325\001\n\016SourceCodeInfo\022:\n\010location\030\001 \003(\013"
-+ "2(.google.protobuf.SourceCodeInfo.Locati"
-+ "on\032\206\001\n\010Location\022\020\n\004path\030\001 \003(\005B\002\020\001\022\020\n\004spa"
-+ "n\030\002 \003(\005B\002\020\001\022\030\n\020leading_comments\030\003 \001(\t\022\031\n"
-+ "\021trailing_comments\030\004 \001(\t\022!\n\031leading_deta"
-+ "ched_comments\030\006 \003(\tB[\n\023com.google.protob"
-+ "ufB\020DescriptorProtosH\001Z\ndescriptor\242\002\003GPB"
-+ "\252\002\032Google.Protobuf.Reflection\260\002\001", 5032);
- ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
- "google/protobuf/descriptor.proto", &protobuf_RegisterTypes);
- FileDescriptorSet::default_instance_ = new FileDescriptorSet();
-@@ -928,7 +930,7 @@ bool FileDescriptorSet::MergePartialFromCodedStream(
- ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
- goto success;
- }
-- DO_(::google::protobuf::internal::WireFormat::SkipField(
-+ DO_(::google::protobuf::internal::WireFormatLite::SkipField(
- input, tag, mutable_unknown_fields()));
- break;
- }
-@@ -953,7 +955,7 @@ void FileDescriptorSet::SerializeWithCachedSizes(
- }
-
- if (_internal_metadata_.have_unknown_fields()) {
-- ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-+ ::google::protobuf::internal::WireFormatLite::SerializeUnknownFields(
- unknown_fields(), output);
- }
- // @@protoc_insertion_point(serialize_end:google.protobuf.FileDescriptorSet)
-@@ -970,7 +972,7 @@ void FileDescriptorSet::SerializeWithCachedSizes(
- }
-
- if (_internal_metadata_.have_unknown_fields()) {
-- target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-+ target = ::google::protobuf::internal::WireFormatLite::SerializeUnknownFieldsToArray(
- unknown_fields(), target);
- }
- // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.FileDescriptorSet)
-@@ -990,7 +992,7 @@ int FileDescriptorSet::ByteSize() const {
-
- if (_internal_metadata_.have_unknown_fields()) {
- total_size +=
-- ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-+ ::google::protobuf::internal::WireFormatLite::ComputeUnknownFieldsSize(
- unknown_fields());
- }
- GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-@@ -1426,7 +1428,7 @@ bool FileDescriptorProto::MergePartialFromCodedStream(
- ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
- goto success;
- }
-- DO_(::google::protobuf::internal::WireFormat::SkipField(
-+ DO_(::google::protobuf::internal::WireFormatLite::SkipField(
- input, tag, mutable_unknown_fields()));
- break;
- }
-@@ -1533,7 +1535,7 @@ void FileDescriptorProto::SerializeWithCachedSizes(
- }
-
- if (_internal_metadata_.have_unknown_fields()) {
-- ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-+ ::google::protobuf::internal::WireFormatLite::SerializeUnknownFields(
- unknown_fields(), output);
- }
- // @@protoc_insertion_point(serialize_end:google.protobuf.FileDescriptorProto)
-@@ -1640,7 +1642,7 @@ void FileDescriptorProto::SerializeWithCachedSizes(
- }
-
- if (_internal_metadata_.have_unknown_fields()) {
-- target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-+ target = ::google::protobuf::internal::WireFormatLite::SerializeUnknownFieldsToArray(
- unknown_fields(), target);
- }
- // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.FileDescriptorProto)
-@@ -1750,7 +1752,7 @@ int FileDescriptorProto::ByteSize() const {
-
- if (_internal_metadata_.have_unknown_fields()) {
- total_size +=
-- ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-+ ::google::protobuf::internal::WireFormatLite::ComputeUnknownFieldsSize(
- unknown_fields());
- }
- GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-@@ -2477,7 +2479,7 @@ bool DescriptorProto_ExtensionRange::MergePartialFromCodedStream(
- ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
- goto success;
- }
-- DO_(::google::protobuf::internal::WireFormat::SkipField(
-+ DO_(::google::protobuf::internal::WireFormatLite::SkipField(
- input, tag, mutable_unknown_fields()));
- break;
- }
-@@ -2506,7 +2508,7 @@ void DescriptorProto_ExtensionRange::SerializeWithCachedSizes(
- }
-
- if (_internal_metadata_.have_unknown_fields()) {
-- ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-+ ::google::protobuf::internal::WireFormatLite::SerializeUnknownFields(
- unknown_fields(), output);
- }
- // @@protoc_insertion_point(serialize_end:google.protobuf.DescriptorProto.ExtensionRange)
-@@ -2526,7 +2528,7 @@ void DescriptorProto_ExtensionRange::SerializeWithCachedSizes(
- }
-
- if (_internal_metadata_.have_unknown_fields()) {
-- target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-+ target = ::google::protobuf::internal::WireFormatLite::SerializeUnknownFieldsToArray(
- unknown_fields(), target);
- }
- // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.DescriptorProto.ExtensionRange)
-@@ -2554,7 +2556,7 @@ int DescriptorProto_ExtensionRange::ByteSize() const {
- }
- if (_internal_metadata_.have_unknown_fields()) {
- total_size +=
-- ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-+ ::google::protobuf::internal::WireFormatLite::ComputeUnknownFieldsSize(
- unknown_fields());
- }
- GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-@@ -2760,7 +2762,7 @@ bool DescriptorProto_ReservedRange::MergePartialFromCodedStream(
- ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
- goto success;
- }
-- DO_(::google::protobuf::internal::WireFormat::SkipField(
-+ DO_(::google::protobuf::internal::WireFormatLite::SkipField(
- input, tag, mutable_unknown_fields()));
- break;
- }
-@@ -2789,7 +2791,7 @@ void DescriptorProto_ReservedRange::SerializeWithCachedSizes(
- }
-
- if (_internal_metadata_.have_unknown_fields()) {
-- ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-+ ::google::protobuf::internal::WireFormatLite::SerializeUnknownFields(
- unknown_fields(), output);
- }
- // @@protoc_insertion_point(serialize_end:google.protobuf.DescriptorProto.ReservedRange)
-@@ -2809,7 +2811,7 @@ void DescriptorProto_ReservedRange::SerializeWithCachedSizes(
- }
-
- if (_internal_metadata_.have_unknown_fields()) {
-- target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-+ target = ::google::protobuf::internal::WireFormatLite::SerializeUnknownFieldsToArray(
- unknown_fields(), target);
- }
- // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.DescriptorProto.ReservedRange)
-@@ -2837,7 +2839,7 @@ int DescriptorProto_ReservedRange::ByteSize() const {
- }
- if (_internal_metadata_.have_unknown_fields()) {
- total_size +=
-- ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-+ ::google::protobuf::internal::WireFormatLite::ComputeUnknownFieldsSize(
- unknown_fields());
- }
- GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-@@ -3191,7 +3193,7 @@ bool DescriptorProto::MergePartialFromCodedStream(
- ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
- goto success;
- }
-- DO_(::google::protobuf::internal::WireFormat::SkipField(
-+ DO_(::google::protobuf::internal::WireFormatLite::SkipField(
- input, tag, mutable_unknown_fields()));
- break;
- }
-@@ -3278,7 +3280,7 @@ void DescriptorProto::SerializeWithCachedSizes(
- }
-
- if (_internal_metadata_.have_unknown_fields()) {
-- ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-+ ::google::protobuf::internal::WireFormatLite::SerializeUnknownFields(
- unknown_fields(), output);
- }
- // @@protoc_insertion_point(serialize_end:google.protobuf.DescriptorProto)
-@@ -3365,7 +3367,7 @@ void DescriptorProto::SerializeWithCachedSizes(
- }
-
- if (_internal_metadata_.have_unknown_fields()) {
-- target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-+ target = ::google::protobuf::internal::WireFormatLite::SerializeUnknownFieldsToArray(
- unknown_fields(), target);
- }
- // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.DescriptorProto)
-@@ -3456,7 +3458,7 @@ int DescriptorProto::ByteSize() const {
-
- if (_internal_metadata_.have_unknown_fields()) {
- total_size +=
-- ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-+ ::google::protobuf::internal::WireFormatLite::ComputeUnknownFieldsSize(
- unknown_fields());
- }
- GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-@@ -4380,7 +4382,7 @@ bool FieldDescriptorProto::MergePartialFromCodedStream(
- ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
- goto success;
- }
-- DO_(::google::protobuf::internal::WireFormat::SkipField(
-+ DO_(::google::protobuf::internal::WireFormatLite::SkipField(
- input, tag, mutable_unknown_fields()));
- break;
- }
-@@ -4467,7 +4469,7 @@ void FieldDescriptorProto::SerializeWithCachedSizes(
- }
-
- if (_internal_metadata_.have_unknown_fields()) {
-- ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-+ ::google::protobuf::internal::WireFormatLite::SerializeUnknownFields(
- unknown_fields(), output);
- }
- // @@protoc_insertion_point(serialize_end:google.protobuf.FieldDescriptorProto)
-@@ -4550,7 +4552,7 @@ void FieldDescriptorProto::SerializeWithCachedSizes(
- }
-
- if (_internal_metadata_.have_unknown_fields()) {
-- target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-+ target = ::google::protobuf::internal::WireFormatLite::SerializeUnknownFieldsToArray(
- unknown_fields(), target);
- }
- // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.FieldDescriptorProto)
-@@ -4625,7 +4627,7 @@ int FieldDescriptorProto::ByteSize() const {
-
- if (_internal_metadata_.have_unknown_fields()) {
- total_size +=
-- ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-+ ::google::protobuf::internal::WireFormatLite::ComputeUnknownFieldsSize(
- unknown_fields());
- }
- GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-@@ -5202,7 +5204,7 @@ bool OneofDescriptorProto::MergePartialFromCodedStream(
- ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
- goto success;
- }
-- DO_(::google::protobuf::internal::WireFormat::SkipField(
-+ DO_(::google::protobuf::internal::WireFormatLite::SkipField(
- input, tag, mutable_unknown_fields()));
- break;
- }
-@@ -5231,7 +5233,7 @@ void OneofDescriptorProto::SerializeWithCachedSizes(
- }
-
- if (_internal_metadata_.have_unknown_fields()) {
-- ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-+ ::google::protobuf::internal::WireFormatLite::SerializeUnknownFields(
- unknown_fields(), output);
- }
- // @@protoc_insertion_point(serialize_end:google.protobuf.OneofDescriptorProto)
-@@ -5252,7 +5254,7 @@ void OneofDescriptorProto::SerializeWithCachedSizes(
- }
-
- if (_internal_metadata_.have_unknown_fields()) {
-- target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-+ target = ::google::protobuf::internal::WireFormatLite::SerializeUnknownFieldsToArray(
- unknown_fields(), target);
- }
- // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.OneofDescriptorProto)
-@@ -5271,7 +5273,7 @@ int OneofDescriptorProto::ByteSize() const {
-
- if (_internal_metadata_.have_unknown_fields()) {
- total_size +=
-- ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-+ ::google::protobuf::internal::WireFormatLite::ComputeUnknownFieldsSize(
- unknown_fields());
- }
- GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-@@ -5549,7 +5551,7 @@ bool EnumDescriptorProto::MergePartialFromCodedStream(
- ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
- goto success;
- }
-- DO_(::google::protobuf::internal::WireFormat::SkipField(
-+ DO_(::google::protobuf::internal::WireFormatLite::SkipField(
- input, tag, mutable_unknown_fields()));
- break;
- }
-@@ -5590,7 +5592,7 @@ void EnumDescriptorProto::SerializeWithCachedSizes(
- }
-
- if (_internal_metadata_.have_unknown_fields()) {
-- ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-+ ::google::protobuf::internal::WireFormatLite::SerializeUnknownFields(
- unknown_fields(), output);
- }
- // @@protoc_insertion_point(serialize_end:google.protobuf.EnumDescriptorProto)
-@@ -5625,7 +5627,7 @@ void EnumDescriptorProto::SerializeWithCachedSizes(
- }
-
- if (_internal_metadata_.have_unknown_fields()) {
-- target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-+ target = ::google::protobuf::internal::WireFormatLite::SerializeUnknownFieldsToArray(
- unknown_fields(), target);
- }
- // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.EnumDescriptorProto)
-@@ -5661,7 +5663,7 @@ int EnumDescriptorProto::ByteSize() const {
-
- if (_internal_metadata_.have_unknown_fields()) {
- total_size +=
-- ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-+ ::google::protobuf::internal::WireFormatLite::ComputeUnknownFieldsSize(
- unknown_fields());
- }
- GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-@@ -6021,7 +6023,7 @@ bool EnumValueDescriptorProto::MergePartialFromCodedStream(
- ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
- goto success;
- }
-- DO_(::google::protobuf::internal::WireFormat::SkipField(
-+ DO_(::google::protobuf::internal::WireFormatLite::SkipField(
- input, tag, mutable_unknown_fields()));
- break;
- }
-@@ -6061,7 +6063,7 @@ void EnumValueDescriptorProto::SerializeWithCachedSizes(
- }
-
- if (_internal_metadata_.have_unknown_fields()) {
-- ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-+ ::google::protobuf::internal::WireFormatLite::SerializeUnknownFields(
- unknown_fields(), output);
- }
- // @@protoc_insertion_point(serialize_end:google.protobuf.EnumValueDescriptorProto)
-@@ -6094,7 +6096,7 @@ void EnumValueDescriptorProto::SerializeWithCachedSizes(
- }
-
- if (_internal_metadata_.have_unknown_fields()) {
-- target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-+ target = ::google::protobuf::internal::WireFormatLite::SerializeUnknownFieldsToArray(
- unknown_fields(), target);
- }
- // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.EnumValueDescriptorProto)
-@@ -6129,7 +6131,7 @@ int EnumValueDescriptorProto::ByteSize() const {
- }
- if (_internal_metadata_.have_unknown_fields()) {
- total_size +=
-- ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-+ ::google::protobuf::internal::WireFormatLite::ComputeUnknownFieldsSize(
- unknown_fields());
- }
- GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-@@ -6485,7 +6487,7 @@ bool ServiceDescriptorProto::MergePartialFromCodedStream(
- ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
- goto success;
- }
-- DO_(::google::protobuf::internal::WireFormat::SkipField(
-+ DO_(::google::protobuf::internal::WireFormatLite::SkipField(
- input, tag, mutable_unknown_fields()));
- break;
- }
-@@ -6526,7 +6528,7 @@ void ServiceDescriptorProto::SerializeWithCachedSizes(
- }
-
- if (_internal_metadata_.have_unknown_fields()) {
-- ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-+ ::google::protobuf::internal::WireFormatLite::SerializeUnknownFields(
- unknown_fields(), output);
- }
- // @@protoc_insertion_point(serialize_end:google.protobuf.ServiceDescriptorProto)
-@@ -6561,7 +6563,7 @@ void ServiceDescriptorProto::SerializeWithCachedSizes(
- }
-
- if (_internal_metadata_.have_unknown_fields()) {
-- target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-+ target = ::google::protobuf::internal::WireFormatLite::SerializeUnknownFieldsToArray(
- unknown_fields(), target);
- }
- // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.ServiceDescriptorProto)
-@@ -6597,7 +6599,7 @@ int ServiceDescriptorProto::ByteSize() const {
-
- if (_internal_metadata_.have_unknown_fields()) {
- total_size +=
-- ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-+ ::google::protobuf::internal::WireFormatLite::ComputeUnknownFieldsSize(
- unknown_fields());
- }
- GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-@@ -7032,7 +7034,7 @@ bool MethodDescriptorProto::MergePartialFromCodedStream(
- ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
- goto success;
- }
-- DO_(::google::protobuf::internal::WireFormat::SkipField(
-+ DO_(::google::protobuf::internal::WireFormatLite::SkipField(
- input, tag, mutable_unknown_fields()));
- break;
- }
-@@ -7097,7 +7099,7 @@ void MethodDescriptorProto::SerializeWithCachedSizes(
- }
-
- if (_internal_metadata_.have_unknown_fields()) {
-- ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-+ ::google::protobuf::internal::WireFormatLite::SerializeUnknownFields(
- unknown_fields(), output);
- }
- // @@protoc_insertion_point(serialize_end:google.protobuf.MethodDescriptorProto)
-@@ -7157,7 +7159,7 @@ void MethodDescriptorProto::SerializeWithCachedSizes(
- }
-
- if (_internal_metadata_.have_unknown_fields()) {
-- target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-+ target = ::google::protobuf::internal::WireFormatLite::SerializeUnknownFieldsToArray(
- unknown_fields(), target);
- }
- // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.MethodDescriptorProto)
-@@ -7209,7 +7211,7 @@ int MethodDescriptorProto::ByteSize() const {
- }
- if (_internal_metadata_.have_unknown_fields()) {
- total_size +=
-- ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-+ ::google::protobuf::internal::WireFormatLite::ComputeUnknownFieldsSize(
- unknown_fields());
- }
- GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-@@ -7588,6 +7590,7 @@ const int FileOptions::OptimizeMode_ARRAYSIZE;
- const int FileOptions::kJavaPackageFieldNumber;
- const int FileOptions::kJavaOuterClassnameFieldNumber;
- const int FileOptions::kJavaMultipleFilesFieldNumber;
-+const int FileOptions::kRetainUnknownFieldsFieldNumber;
- const int FileOptions::kJavaGenerateEqualsAndHashFieldNumber;
- const int FileOptions::kJavaStringCheckUtf8FieldNumber;
- const int FileOptions::kOptimizeForFieldNumber;
-@@ -7626,6 +7629,7 @@ void FileOptions::SharedCtor() {
- java_package_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
- java_outer_classname_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
- java_multiple_files_ = false;
-+ retain_unknown_fields_ = false;
- java_generate_equals_and_hash_ = false;
- java_string_check_utf8_ = false;
- optimize_for_ = 1;
-@@ -7692,7 +7696,7 @@ void FileOptions::Clear() {
- } while (0)
-
- if (_has_bits_[0 / 32] & 255u) {
-- ZR_(java_multiple_files_, cc_generic_services_);
-+ ZR_(java_multiple_files_, java_string_check_utf8_);
- if (has_java_package()) {
- java_package_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
- }
-@@ -7704,8 +7708,8 @@ void FileOptions::Clear() {
- go_package_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
- }
- }
-- if (_has_bits_[8 / 32] & 32512u) {
-- ZR_(java_generic_services_, javanano_use_deprecated_package_);
-+ if (_has_bits_[8 / 32] & 65280u) {
-+ ZR_(cc_generic_services_, javanano_use_deprecated_package_);
- if (has_objc_class_prefix()) {
- objc_class_prefix_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
- }
-@@ -7815,6 +7819,21 @@ bool FileOptions::MergePartialFromCodedStream(
- } else {
- goto handle_unusual;
- }
-+ if (input->ExpectTag(96)) goto parse_retain_unknown_fields;
-+ break;
-+ }
-+
-+ // optional bool retain_unknown_fields = 12 [default = false];
-+ case 12: {
-+ if (tag == 96) {
-+ parse_retain_unknown_fields:
-+ DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
-+ bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
-+ input, &retain_unknown_fields_)));
-+ set_has_retain_unknown_fields();
-+ } else {
-+ goto handle_unusual;
-+ }
- if (input->ExpectTag(128)) goto parse_cc_generic_services;
- break;
- }
-@@ -8002,7 +8021,7 @@ bool FileOptions::MergePartialFromCodedStream(
- mutable_unknown_fields()));
- continue;
- }
-- DO_(::google::protobuf::internal::WireFormat::SkipField(
-+ DO_(::google::protobuf::internal::WireFormatLite::SkipField(
- input, tag, mutable_unknown_fields()));
- break;
- }
-@@ -8061,6 +8080,11 @@ void FileOptions::SerializeWithCachedSizes(
- 11, this->go_package(), output);
- }
-
-+ // optional bool retain_unknown_fields = 12 [default = false];
-+ if (has_retain_unknown_fields()) {
-+ ::google::protobuf::internal::WireFormatLite::WriteBool(12, this->retain_unknown_fields(), output);
-+ }
-+
- // optional bool cc_generic_services = 16 [default = false];
- if (has_cc_generic_services()) {
- ::google::protobuf::internal::WireFormatLite::WriteBool(16, this->cc_generic_services(), output);
-@@ -8132,7 +8156,7 @@ void FileOptions::SerializeWithCachedSizes(
- 1000, 536870912, output);
-
- if (_internal_metadata_.have_unknown_fields()) {
-- ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-+ ::google::protobuf::internal::WireFormatLite::SerializeUnknownFields(
- unknown_fields(), output);
- }
- // @@protoc_insertion_point(serialize_end:google.protobuf.FileOptions)
-@@ -8185,6 +8209,11 @@ void FileOptions::SerializeWithCachedSizes(
- 11, this->go_package(), target);
- }
-
-+ // optional bool retain_unknown_fields = 12 [default = false];
-+ if (has_retain_unknown_fields()) {
-+ target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(12, this->retain_unknown_fields(), target);
-+ }
-+
- // optional bool cc_generic_services = 16 [default = false];
- if (has_cc_generic_services()) {
- target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(16, this->cc_generic_services(), target);
-@@ -8259,7 +8288,7 @@ void FileOptions::SerializeWithCachedSizes(
- 1000, 536870912, target);
-
- if (_internal_metadata_.have_unknown_fields()) {
-- target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-+ target = ::google::protobuf::internal::WireFormatLite::SerializeUnknownFieldsToArray(
- unknown_fields(), target);
- }
- // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.FileOptions)
-@@ -8289,6 +8318,11 @@ int FileOptions::ByteSize() const {
- total_size += 1 + 1;
- }
-
-+ // optional bool retain_unknown_fields = 12 [default = false];
-+ if (has_retain_unknown_fields()) {
-+ total_size += 1 + 1;
-+ }
-+
- // optional bool java_generate_equals_and_hash = 20 [default = false];
- if (has_java_generate_equals_and_hash()) {
- total_size += 2 + 1;
-@@ -8312,13 +8346,13 @@ int FileOptions::ByteSize() const {
- this->go_package());
- }
-
-+ }
-+ if (_has_bits_[8 / 32] & 65280u) {
- // optional bool cc_generic_services = 16 [default = false];
- if (has_cc_generic_services()) {
- total_size += 2 + 1;
- }
-
-- }
-- if (_has_bits_[8 / 32] & 32512u) {
- // optional bool java_generic_services = 17 [default = false];
- if (has_java_generic_services()) {
- total_size += 2 + 1;
-@@ -8371,7 +8405,7 @@ int FileOptions::ByteSize() const {
-
- if (_internal_metadata_.have_unknown_fields()) {
- total_size +=
-- ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-+ ::google::protobuf::internal::WireFormatLite::ComputeUnknownFieldsSize(
- unknown_fields());
- }
- GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-@@ -8407,6 +8441,9 @@ void FileOptions::MergeFrom(const FileOptions& from) {
- if (from.has_java_multiple_files()) {
- set_java_multiple_files(from.java_multiple_files());
- }
-+ if (from.has_retain_unknown_fields()) {
-+ set_retain_unknown_fields(from.retain_unknown_fields());
-+ }
- if (from.has_java_generate_equals_and_hash()) {
- set_java_generate_equals_and_hash(from.java_generate_equals_and_hash());
- }
-@@ -8420,11 +8457,11 @@ void FileOptions::MergeFrom(const FileOptions& from) {
- set_has_go_package();
- go_package_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.go_package_);
- }
-+ }
-+ if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) {
- if (from.has_cc_generic_services()) {
- set_cc_generic_services(from.cc_generic_services());
- }
-- }
-- if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) {
- if (from.has_java_generic_services()) {
- set_java_generic_services(from.java_generic_services());
- }
-@@ -8482,6 +8519,7 @@ void FileOptions::InternalSwap(FileOptions* other) {
- java_package_.Swap(&other->java_package_);
- java_outer_classname_.Swap(&other->java_outer_classname_);
- std::swap(java_multiple_files_, other->java_multiple_files_);
-+ std::swap(retain_unknown_fields_, other->retain_unknown_fields_);
- std::swap(java_generate_equals_and_hash_, other->java_generate_equals_and_hash_);
- std::swap(java_string_check_utf8_, other->java_string_check_utf8_);
- std::swap(optimize_for_, other->optimize_for_);
-@@ -8642,15 +8680,39 @@ void FileOptions::clear_java_multiple_files() {
- // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.java_multiple_files)
- }
-
-+// optional bool retain_unknown_fields = 12 [default = false];
-+bool FileOptions::has_retain_unknown_fields() const {
-+ return (_has_bits_[0] & 0x00000008u) != 0;
-+}
-+void FileOptions::set_has_retain_unknown_fields() {
-+ _has_bits_[0] |= 0x00000008u;
-+}
-+void FileOptions::clear_has_retain_unknown_fields() {
-+ _has_bits_[0] &= ~0x00000008u;
-+}
-+void FileOptions::clear_retain_unknown_fields() {
-+ retain_unknown_fields_ = false;
-+ clear_has_retain_unknown_fields();
-+}
-+ bool FileOptions::retain_unknown_fields() const {
-+ // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.retain_unknown_fields)
-+ return retain_unknown_fields_;
-+}
-+ void FileOptions::set_retain_unknown_fields(bool value) {
-+ set_has_retain_unknown_fields();
-+ retain_unknown_fields_ = value;
-+ // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.retain_unknown_fields)
-+}
-+
- // optional bool java_generate_equals_and_hash = 20 [default = false];
- bool FileOptions::has_java_generate_equals_and_hash() const {
-- return (_has_bits_[0] & 0x00000008u) != 0;
-+ return (_has_bits_[0] & 0x00000010u) != 0;
- }
- void FileOptions::set_has_java_generate_equals_and_hash() {
-- _has_bits_[0] |= 0x00000008u;
-+ _has_bits_[0] |= 0x00000010u;
- }
- void FileOptions::clear_has_java_generate_equals_and_hash() {
-- _has_bits_[0] &= ~0x00000008u;
-+ _has_bits_[0] &= ~0x00000010u;
- }
- void FileOptions::clear_java_generate_equals_and_hash() {
- java_generate_equals_and_hash_ = false;
-@@ -8668,13 +8730,13 @@ void FileOptions::clear_java_generate_equals_and_hash() {
-
- // optional bool java_string_check_utf8 = 27 [default = false];
- bool FileOptions::has_java_string_check_utf8() const {
-- return (_has_bits_[0] & 0x00000010u) != 0;
-+ return (_has_bits_[0] & 0x00000020u) != 0;
- }
- void FileOptions::set_has_java_string_check_utf8() {
-- _has_bits_[0] |= 0x00000010u;
-+ _has_bits_[0] |= 0x00000020u;
- }
- void FileOptions::clear_has_java_string_check_utf8() {
-- _has_bits_[0] &= ~0x00000010u;
-+ _has_bits_[0] &= ~0x00000020u;
- }
- void FileOptions::clear_java_string_check_utf8() {
- java_string_check_utf8_ = false;
-@@ -8692,13 +8754,13 @@ void FileOptions::clear_java_string_check_utf8() {
-
- // optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED];
- bool FileOptions::has_optimize_for() const {
-- return (_has_bits_[0] & 0x00000020u) != 0;
-+ return (_has_bits_[0] & 0x00000040u) != 0;
- }
- void FileOptions::set_has_optimize_for() {
-- _has_bits_[0] |= 0x00000020u;
-+ _has_bits_[0] |= 0x00000040u;
- }
- void FileOptions::clear_has_optimize_for() {
-- _has_bits_[0] &= ~0x00000020u;
-+ _has_bits_[0] &= ~0x00000040u;
- }
- void FileOptions::clear_optimize_for() {
- optimize_for_ = 1;
-@@ -8717,13 +8779,13 @@ void FileOptions::clear_optimize_for() {
-
- // optional string go_package = 11;
- bool FileOptions::has_go_package() const {
-- return (_has_bits_[0] & 0x00000040u) != 0;
-+ return (_has_bits_[0] & 0x00000080u) != 0;
- }
- void FileOptions::set_has_go_package() {
-- _has_bits_[0] |= 0x00000040u;
-+ _has_bits_[0] |= 0x00000080u;
- }
- void FileOptions::clear_has_go_package() {
-- _has_bits_[0] &= ~0x00000040u;
-+ _has_bits_[0] &= ~0x00000080u;
- }
- void FileOptions::clear_go_package() {
- go_package_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-@@ -8770,13 +8832,13 @@ void FileOptions::clear_go_package() {
-
- // optional bool cc_generic_services = 16 [default = false];
- bool FileOptions::has_cc_generic_services() const {
-- return (_has_bits_[0] & 0x00000080u) != 0;
-+ return (_has_bits_[0] & 0x00000100u) != 0;
- }
- void FileOptions::set_has_cc_generic_services() {
-- _has_bits_[0] |= 0x00000080u;
-+ _has_bits_[0] |= 0x00000100u;
- }
- void FileOptions::clear_has_cc_generic_services() {
-- _has_bits_[0] &= ~0x00000080u;
-+ _has_bits_[0] &= ~0x00000100u;
- }
- void FileOptions::clear_cc_generic_services() {
- cc_generic_services_ = false;
-@@ -8794,13 +8856,13 @@ void FileOptions::clear_cc_generic_services() {
-
- // optional bool java_generic_services = 17 [default = false];
- bool FileOptions::has_java_generic_services() const {
-- return (_has_bits_[0] & 0x00000100u) != 0;
-+ return (_has_bits_[0] & 0x00000200u) != 0;
- }
- void FileOptions::set_has_java_generic_services() {
-- _has_bits_[0] |= 0x00000100u;
-+ _has_bits_[0] |= 0x00000200u;
- }
- void FileOptions::clear_has_java_generic_services() {
-- _has_bits_[0] &= ~0x00000100u;
-+ _has_bits_[0] &= ~0x00000200u;
- }
- void FileOptions::clear_java_generic_services() {
- java_generic_services_ = false;
-@@ -8818,13 +8880,13 @@ void FileOptions::clear_java_generic_services() {
-
- // optional bool py_generic_services = 18 [default = false];
- bool FileOptions::has_py_generic_services() const {
-- return (_has_bits_[0] & 0x00000200u) != 0;
-+ return (_has_bits_[0] & 0x00000400u) != 0;
- }
- void FileOptions::set_has_py_generic_services() {
-- _has_bits_[0] |= 0x00000200u;
-+ _has_bits_[0] |= 0x00000400u;
- }
- void FileOptions::clear_has_py_generic_services() {
-- _has_bits_[0] &= ~0x00000200u;
-+ _has_bits_[0] &= ~0x00000400u;
- }
- void FileOptions::clear_py_generic_services() {
- py_generic_services_ = false;
-@@ -8842,13 +8904,13 @@ void FileOptions::clear_py_generic_services() {
-
- // optional bool deprecated = 23 [default = false];
- bool FileOptions::has_deprecated() const {
-- return (_has_bits_[0] & 0x00000400u) != 0;
-+ return (_has_bits_[0] & 0x00000800u) != 0;
- }
- void FileOptions::set_has_deprecated() {
-- _has_bits_[0] |= 0x00000400u;
-+ _has_bits_[0] |= 0x00000800u;
- }
- void FileOptions::clear_has_deprecated() {
-- _has_bits_[0] &= ~0x00000400u;
-+ _has_bits_[0] &= ~0x00000800u;
- }
- void FileOptions::clear_deprecated() {
- deprecated_ = false;
-@@ -8866,13 +8928,13 @@ void FileOptions::clear_deprecated() {
-
- // optional bool cc_enable_arenas = 31 [default = false];
- bool FileOptions::has_cc_enable_arenas() const {
-- return (_has_bits_[0] & 0x00000800u) != 0;
-+ return (_has_bits_[0] & 0x00001000u) != 0;
- }
- void FileOptions::set_has_cc_enable_arenas() {
-- _has_bits_[0] |= 0x00000800u;
-+ _has_bits_[0] |= 0x00001000u;
- }
- void FileOptions::clear_has_cc_enable_arenas() {
-- _has_bits_[0] &= ~0x00000800u;
-+ _has_bits_[0] &= ~0x00001000u;
- }
- void FileOptions::clear_cc_enable_arenas() {
- cc_enable_arenas_ = false;
-@@ -8890,13 +8952,13 @@ void FileOptions::clear_cc_enable_arenas() {
-
- // optional string objc_class_prefix = 36;
- bool FileOptions::has_objc_class_prefix() const {
-- return (_has_bits_[0] & 0x00001000u) != 0;
-+ return (_has_bits_[0] & 0x00002000u) != 0;
- }
- void FileOptions::set_has_objc_class_prefix() {
-- _has_bits_[0] |= 0x00001000u;
-+ _has_bits_[0] |= 0x00002000u;
- }
- void FileOptions::clear_has_objc_class_prefix() {
-- _has_bits_[0] &= ~0x00001000u;
-+ _has_bits_[0] &= ~0x00002000u;
- }
- void FileOptions::clear_objc_class_prefix() {
- objc_class_prefix_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-@@ -8943,13 +9005,13 @@ void FileOptions::clear_objc_class_prefix() {
-
- // optional string csharp_namespace = 37;
- bool FileOptions::has_csharp_namespace() const {
-- return (_has_bits_[0] & 0x00002000u) != 0;
-+ return (_has_bits_[0] & 0x00004000u) != 0;
- }
- void FileOptions::set_has_csharp_namespace() {
-- _has_bits_[0] |= 0x00002000u;
-+ _has_bits_[0] |= 0x00004000u;
- }
- void FileOptions::clear_has_csharp_namespace() {
-- _has_bits_[0] &= ~0x00002000u;
-+ _has_bits_[0] &= ~0x00004000u;
- }
- void FileOptions::clear_csharp_namespace() {
- csharp_namespace_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-@@ -8996,13 +9058,13 @@ void FileOptions::clear_csharp_namespace() {
-
- // optional bool javanano_use_deprecated_package = 38;
- bool FileOptions::has_javanano_use_deprecated_package() const {
-- return (_has_bits_[0] & 0x00004000u) != 0;
-+ return (_has_bits_[0] & 0x00008000u) != 0;
- }
- void FileOptions::set_has_javanano_use_deprecated_package() {
-- _has_bits_[0] |= 0x00004000u;
-+ _has_bits_[0] |= 0x00008000u;
- }
- void FileOptions::clear_has_javanano_use_deprecated_package() {
-- _has_bits_[0] &= ~0x00004000u;
-+ _has_bits_[0] &= ~0x00008000u;
- }
- void FileOptions::clear_javanano_use_deprecated_package() {
- javanano_use_deprecated_package_ = false;
-@@ -9241,7 +9303,7 @@ bool MessageOptions::MergePartialFromCodedStream(
- mutable_unknown_fields()));
- continue;
- }
-- DO_(::google::protobuf::internal::WireFormat::SkipField(
-+ DO_(::google::protobuf::internal::WireFormatLite::SkipField(
- input, tag, mutable_unknown_fields()));
- break;
- }
-@@ -9290,7 +9352,7 @@ void MessageOptions::SerializeWithCachedSizes(
- 1000, 536870912, output);
-
- if (_internal_metadata_.have_unknown_fields()) {
-- ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-+ ::google::protobuf::internal::WireFormatLite::SerializeUnknownFields(
- unknown_fields(), output);
- }
- // @@protoc_insertion_point(serialize_end:google.protobuf.MessageOptions)
-@@ -9331,7 +9393,7 @@ void MessageOptions::SerializeWithCachedSizes(
- 1000, 536870912, target);
-
- if (_internal_metadata_.have_unknown_fields()) {
-- target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-+ target = ::google::protobuf::internal::WireFormatLite::SerializeUnknownFieldsToArray(
- unknown_fields(), target);
- }
- // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.MessageOptions)
-@@ -9375,7 +9437,7 @@ int MessageOptions::ByteSize() const {
-
- if (_internal_metadata_.have_unknown_fields()) {
- total_size +=
-- ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-+ ::google::protobuf::internal::WireFormatLite::ComputeUnknownFieldsSize(
- unknown_fields());
- }
- GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-@@ -9877,7 +9939,7 @@ bool FieldOptions::MergePartialFromCodedStream(
- mutable_unknown_fields()));
- continue;
- }
-- DO_(::google::protobuf::internal::WireFormat::SkipField(
-+ DO_(::google::protobuf::internal::WireFormatLite::SkipField(
- input, tag, mutable_unknown_fields()));
- break;
- }
-@@ -9938,7 +10000,7 @@ void FieldOptions::SerializeWithCachedSizes(
- 1000, 536870912, output);
-
- if (_internal_metadata_.have_unknown_fields()) {
-- ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-+ ::google::protobuf::internal::WireFormatLite::SerializeUnknownFields(
- unknown_fields(), output);
- }
- // @@protoc_insertion_point(serialize_end:google.protobuf.FieldOptions)
-@@ -9991,7 +10053,7 @@ void FieldOptions::SerializeWithCachedSizes(
- 1000, 536870912, target);
-
- if (_internal_metadata_.have_unknown_fields()) {
-- target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-+ target = ::google::protobuf::internal::WireFormatLite::SerializeUnknownFieldsToArray(
- unknown_fields(), target);
- }
- // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.FieldOptions)
-@@ -10047,7 +10109,7 @@ int FieldOptions::ByteSize() const {
-
- if (_internal_metadata_.have_unknown_fields()) {
- total_size +=
-- ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-+ ::google::protobuf::internal::WireFormatLite::ComputeUnknownFieldsSize(
- unknown_fields());
- }
- GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-@@ -10480,7 +10542,7 @@ bool EnumOptions::MergePartialFromCodedStream(
- mutable_unknown_fields()));
- continue;
- }
-- DO_(::google::protobuf::internal::WireFormat::SkipField(
-+ DO_(::google::protobuf::internal::WireFormatLite::SkipField(
- input, tag, mutable_unknown_fields()));
- break;
- }
-@@ -10519,7 +10581,7 @@ void EnumOptions::SerializeWithCachedSizes(
- 1000, 536870912, output);
-
- if (_internal_metadata_.have_unknown_fields()) {
-- ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-+ ::google::protobuf::internal::WireFormatLite::SerializeUnknownFields(
- unknown_fields(), output);
- }
- // @@protoc_insertion_point(serialize_end:google.protobuf.EnumOptions)
-@@ -10550,7 +10612,7 @@ void EnumOptions::SerializeWithCachedSizes(
- 1000, 536870912, target);
-
- if (_internal_metadata_.have_unknown_fields()) {
-- target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-+ target = ::google::protobuf::internal::WireFormatLite::SerializeUnknownFieldsToArray(
- unknown_fields(), target);
- }
- // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.EnumOptions)
-@@ -10584,7 +10646,7 @@ int EnumOptions::ByteSize() const {
-
- if (_internal_metadata_.have_unknown_fields()) {
- total_size +=
-- ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-+ ::google::protobuf::internal::WireFormatLite::ComputeUnknownFieldsSize(
- unknown_fields());
- }
- GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-@@ -10874,7 +10936,7 @@ bool EnumValueOptions::MergePartialFromCodedStream(
- mutable_unknown_fields()));
- continue;
- }
-- DO_(::google::protobuf::internal::WireFormat::SkipField(
-+ DO_(::google::protobuf::internal::WireFormatLite::SkipField(
- input, tag, mutable_unknown_fields()));
- break;
- }
-@@ -10908,7 +10970,7 @@ void EnumValueOptions::SerializeWithCachedSizes(
- 1000, 536870912, output);
-
- if (_internal_metadata_.have_unknown_fields()) {
-- ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-+ ::google::protobuf::internal::WireFormatLite::SerializeUnknownFields(
- unknown_fields(), output);
- }
- // @@protoc_insertion_point(serialize_end:google.protobuf.EnumValueOptions)
-@@ -10934,7 +10996,7 @@ void EnumValueOptions::SerializeWithCachedSizes(
- 1000, 536870912, target);
-
- if (_internal_metadata_.have_unknown_fields()) {
-- target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-+ target = ::google::protobuf::internal::WireFormatLite::SerializeUnknownFieldsToArray(
- unknown_fields(), target);
- }
- // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.EnumValueOptions)
-@@ -10961,7 +11023,7 @@ int EnumValueOptions::ByteSize() const {
-
- if (_internal_metadata_.have_unknown_fields()) {
- total_size +=
-- ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-+ ::google::protobuf::internal::WireFormatLite::ComputeUnknownFieldsSize(
- unknown_fields());
- }
- GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-@@ -11223,7 +11285,7 @@ bool ServiceOptions::MergePartialFromCodedStream(
- mutable_unknown_fields()));
- continue;
- }
-- DO_(::google::protobuf::internal::WireFormat::SkipField(
-+ DO_(::google::protobuf::internal::WireFormatLite::SkipField(
- input, tag, mutable_unknown_fields()));
- break;
- }
-@@ -11257,7 +11319,7 @@ void ServiceOptions::SerializeWithCachedSizes(
- 1000, 536870912, output);
-
- if (_internal_metadata_.have_unknown_fields()) {
-- ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-+ ::google::protobuf::internal::WireFormatLite::SerializeUnknownFields(
- unknown_fields(), output);
- }
- // @@protoc_insertion_point(serialize_end:google.protobuf.ServiceOptions)
-@@ -11283,7 +11345,7 @@ void ServiceOptions::SerializeWithCachedSizes(
- 1000, 536870912, target);
-
- if (_internal_metadata_.have_unknown_fields()) {
-- target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-+ target = ::google::protobuf::internal::WireFormatLite::SerializeUnknownFieldsToArray(
- unknown_fields(), target);
- }
- // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.ServiceOptions)
-@@ -11310,7 +11372,7 @@ int ServiceOptions::ByteSize() const {
-
- if (_internal_metadata_.have_unknown_fields()) {
- total_size +=
-- ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-+ ::google::protobuf::internal::WireFormatLite::ComputeUnknownFieldsSize(
- unknown_fields());
- }
- GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-@@ -11572,7 +11634,7 @@ bool MethodOptions::MergePartialFromCodedStream(
- mutable_unknown_fields()));
- continue;
- }
-- DO_(::google::protobuf::internal::WireFormat::SkipField(
-+ DO_(::google::protobuf::internal::WireFormatLite::SkipField(
- input, tag, mutable_unknown_fields()));
- break;
- }
-@@ -11606,7 +11668,7 @@ void MethodOptions::SerializeWithCachedSizes(
- 1000, 536870912, output);
-
- if (_internal_metadata_.have_unknown_fields()) {
-- ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-+ ::google::protobuf::internal::WireFormatLite::SerializeUnknownFields(
- unknown_fields(), output);
- }
- // @@protoc_insertion_point(serialize_end:google.protobuf.MethodOptions)
-@@ -11632,7 +11694,7 @@ void MethodOptions::SerializeWithCachedSizes(
- 1000, 536870912, target);
-
- if (_internal_metadata_.have_unknown_fields()) {
-- target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-+ target = ::google::protobuf::internal::WireFormatLite::SerializeUnknownFieldsToArray(
- unknown_fields(), target);
- }
- // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.MethodOptions)
-@@ -11659,7 +11721,7 @@ int MethodOptions::ByteSize() const {
-
- if (_internal_metadata_.have_unknown_fields()) {
- total_size +=
-- ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-+ ::google::protobuf::internal::WireFormatLite::ComputeUnknownFieldsSize(
- unknown_fields());
- }
- GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-@@ -11922,7 +11984,7 @@ bool UninterpretedOption_NamePart::MergePartialFromCodedStream(
- ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
- goto success;
- }
-- DO_(::google::protobuf::internal::WireFormat::SkipField(
-+ DO_(::google::protobuf::internal::WireFormatLite::SkipField(
- input, tag, mutable_unknown_fields()));
- break;
- }
-@@ -11956,7 +12018,7 @@ void UninterpretedOption_NamePart::SerializeWithCachedSizes(
- }
-
- if (_internal_metadata_.have_unknown_fields()) {
-- ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-+ ::google::protobuf::internal::WireFormatLite::SerializeUnknownFields(
- unknown_fields(), output);
- }
- // @@protoc_insertion_point(serialize_end:google.protobuf.UninterpretedOption.NamePart)
-@@ -11982,7 +12044,7 @@ void UninterpretedOption_NamePart::SerializeWithCachedSizes(
- }
-
- if (_internal_metadata_.have_unknown_fields()) {
-- target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-+ target = ::google::protobuf::internal::WireFormatLite::SerializeUnknownFieldsToArray(
- unknown_fields(), target);
- }
- // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.UninterpretedOption.NamePart)
-@@ -12023,7 +12085,7 @@ int UninterpretedOption_NamePart::ByteSize() const {
- }
- if (_internal_metadata_.have_unknown_fields()) {
- total_size +=
-- ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-+ ::google::protobuf::internal::WireFormatLite::ComputeUnknownFieldsSize(
- unknown_fields());
- }
- GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-@@ -12335,7 +12397,7 @@ bool UninterpretedOption::MergePartialFromCodedStream(
- ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
- goto success;
- }
-- DO_(::google::protobuf::internal::WireFormat::SkipField(
-+ DO_(::google::protobuf::internal::WireFormatLite::SkipField(
- input, tag, mutable_unknown_fields()));
- break;
- }
-@@ -12401,7 +12463,7 @@ void UninterpretedOption::SerializeWithCachedSizes(
- }
-
- if (_internal_metadata_.have_unknown_fields()) {
-- ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-+ ::google::protobuf::internal::WireFormatLite::SerializeUnknownFields(
- unknown_fields(), output);
- }
- // @@protoc_insertion_point(serialize_end:google.protobuf.UninterpretedOption)
-@@ -12462,7 +12524,7 @@ void UninterpretedOption::SerializeWithCachedSizes(
- }
-
- if (_internal_metadata_.have_unknown_fields()) {
-- target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-+ target = ::google::protobuf::internal::WireFormatLite::SerializeUnknownFieldsToArray(
- unknown_fields(), target);
- }
- // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.UninterpretedOption)
-@@ -12524,7 +12586,7 @@ int UninterpretedOption::ByteSize() const {
-
- if (_internal_metadata_.have_unknown_fields()) {
- total_size +=
-- ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-+ ::google::protobuf::internal::WireFormatLite::ComputeUnknownFieldsSize(
- unknown_fields());
- }
- GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-@@ -13161,7 +13223,7 @@ bool SourceCodeInfo_Location::MergePartialFromCodedStream(
- ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
- goto success;
- }
-- DO_(::google::protobuf::internal::WireFormat::SkipField(
-+ DO_(::google::protobuf::internal::WireFormatLite::SkipField(
- input, tag, mutable_unknown_fields()));
- break;
- }
-@@ -13230,7 +13292,7 @@ void SourceCodeInfo_Location::SerializeWithCachedSizes(
- }
-
- if (_internal_metadata_.have_unknown_fields()) {
-- ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-+ ::google::protobuf::internal::WireFormatLite::SerializeUnknownFields(
- unknown_fields(), output);
- }
- // @@protoc_insertion_point(serialize_end:google.protobuf.SourceCodeInfo.Location)
-@@ -13300,7 +13362,7 @@ void SourceCodeInfo_Location::SerializeWithCachedSizes(
- }
-
- if (_internal_metadata_.have_unknown_fields()) {
-- target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-+ target = ::google::protobuf::internal::WireFormatLite::SerializeUnknownFieldsToArray(
- unknown_fields(), target);
- }
- // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.SourceCodeInfo.Location)
-@@ -13369,7 +13431,7 @@ int SourceCodeInfo_Location::ByteSize() const {
-
- if (_internal_metadata_.have_unknown_fields()) {
- total_size +=
-- ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-+ ::google::protobuf::internal::WireFormatLite::ComputeUnknownFieldsSize(
- unknown_fields());
- }
- GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-@@ -13555,7 +13617,7 @@ bool SourceCodeInfo::MergePartialFromCodedStream(
- ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
- goto success;
- }
-- DO_(::google::protobuf::internal::WireFormat::SkipField(
-+ DO_(::google::protobuf::internal::WireFormatLite::SkipField(
- input, tag, mutable_unknown_fields()));
- break;
- }
-@@ -13580,7 +13642,7 @@ void SourceCodeInfo::SerializeWithCachedSizes(
- }
-
- if (_internal_metadata_.have_unknown_fields()) {
-- ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-+ ::google::protobuf::internal::WireFormatLite::SerializeUnknownFields(
- unknown_fields(), output);
- }
- // @@protoc_insertion_point(serialize_end:google.protobuf.SourceCodeInfo)
-@@ -13597,7 +13659,7 @@ void SourceCodeInfo::SerializeWithCachedSizes(
- }
-
- if (_internal_metadata_.have_unknown_fields()) {
-- target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-+ target = ::google::protobuf::internal::WireFormatLite::SerializeUnknownFieldsToArray(
- unknown_fields(), target);
- }
- // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.SourceCodeInfo)
-@@ -13617,7 +13679,7 @@ int SourceCodeInfo::ByteSize() const {
-
- if (_internal_metadata_.have_unknown_fields()) {
- total_size +=
-- ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-+ ::google::protobuf::internal::WireFormatLite::ComputeUnknownFieldsSize(
- unknown_fields());
- }
- GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
-diff --git a/third_party/protobuf/src/google/protobuf/descriptor.pb.h b/third_party/protobuf/src/google/protobuf/descriptor.pb.h
-index 2aa076a..bbf9cbc 100644
---- a/third_party/protobuf/src/google/protobuf/descriptor.pb.h
-+++ b/third_party/protobuf/src/google/protobuf/descriptor.pb.h
-@@ -1908,6 +1908,13 @@ class LIBPROTOBUF_EXPORT FileOptions : public ::google::protobuf::Message {
- bool java_multiple_files() const;
- void set_java_multiple_files(bool value);
-
-+ // optional bool retain_unknown_fields = 12 [default = false];
-+ bool has_retain_unknown_fields() const;
-+ void clear_retain_unknown_fields();
-+ static const int kRetainUnknownFieldsFieldNumber = 12;
-+ bool retain_unknown_fields() const;
-+ void set_retain_unknown_fields(bool value);
-+
- // optional bool java_generate_equals_and_hash = 20 [default = false];
- bool has_java_generate_equals_and_hash() const;
- void clear_java_generate_equals_and_hash();
-@@ -2028,6 +2035,8 @@ class LIBPROTOBUF_EXPORT FileOptions : public ::google::protobuf::Message {
- inline void clear_has_java_outer_classname();
- inline void set_has_java_multiple_files();
- inline void clear_has_java_multiple_files();
-+ inline void set_has_retain_unknown_fields();
-+ inline void clear_has_retain_unknown_fields();
- inline void set_has_java_generate_equals_and_hash();
- inline void clear_has_java_generate_equals_and_hash();
- inline void set_has_java_string_check_utf8();
-@@ -2061,11 +2070,12 @@ class LIBPROTOBUF_EXPORT FileOptions : public ::google::protobuf::Message {
- ::google::protobuf::internal::ArenaStringPtr java_package_;
- ::google::protobuf::internal::ArenaStringPtr java_outer_classname_;
- bool java_multiple_files_;
-+ bool retain_unknown_fields_;
- bool java_generate_equals_and_hash_;
- bool java_string_check_utf8_;
-- bool cc_generic_services_;
- int optimize_for_;
- ::google::protobuf::internal::ArenaStringPtr go_package_;
-+ bool cc_generic_services_;
- bool java_generic_services_;
- bool py_generic_services_;
- bool deprecated_;
-@@ -5550,15 +5560,39 @@ inline void FileOptions::set_java_multiple_files(bool value) {
- // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.java_multiple_files)
- }
-
-+// optional bool retain_unknown_fields = 12 [default = false];
-+inline bool FileOptions::has_retain_unknown_fields() const {
-+ return (_has_bits_[0] & 0x00000008u) != 0;
-+}
-+inline void FileOptions::set_has_retain_unknown_fields() {
-+ _has_bits_[0] |= 0x00000008u;
-+}
-+inline void FileOptions::clear_has_retain_unknown_fields() {
-+ _has_bits_[0] &= ~0x00000008u;
-+}
-+inline void FileOptions::clear_retain_unknown_fields() {
-+ retain_unknown_fields_ = false;
-+ clear_has_retain_unknown_fields();
-+}
-+inline bool FileOptions::retain_unknown_fields() const {
-+ // @@protoc_insertion_point(field_get:google.protobuf.FileOptions.retain_unknown_fields)
-+ return retain_unknown_fields_;
-+}
-+inline void FileOptions::set_retain_unknown_fields(bool value) {
-+ set_has_retain_unknown_fields();
-+ retain_unknown_fields_ = value;
-+ // @@protoc_insertion_point(field_set:google.protobuf.FileOptions.retain_unknown_fields)
-+}
-+
- // optional bool java_generate_equals_and_hash = 20 [default = false];
- inline bool FileOptions::has_java_generate_equals_and_hash() const {
-- return (_has_bits_[0] & 0x00000008u) != 0;
-+ return (_has_bits_[0] & 0x00000010u) != 0;
- }
- inline void FileOptions::set_has_java_generate_equals_and_hash() {
-- _has_bits_[0] |= 0x00000008u;
-+ _has_bits_[0] |= 0x00000010u;
- }
- inline void FileOptions::clear_has_java_generate_equals_and_hash() {
-- _has_bits_[0] &= ~0x00000008u;
-+ _has_bits_[0] &= ~0x00000010u;
- }
- inline void FileOptions::clear_java_generate_equals_and_hash() {
- java_generate_equals_and_hash_ = false;
-@@ -5576,13 +5610,13 @@ inline void FileOptions::set_java_generate_equals_and_hash(bool value) {
-
- // optional bool java_string_check_utf8 = 27 [default = false];
- inline bool FileOptions::has_java_string_check_utf8() const {
-- return (_has_bits_[0] & 0x00000010u) != 0;
-+ return (_has_bits_[0] & 0x00000020u) != 0;
- }
- inline void FileOptions::set_has_java_string_check_utf8() {
-- _has_bits_[0] |= 0x00000010u;
-+ _has_bits_[0] |= 0x00000020u;
- }
- inline void FileOptions::clear_has_java_string_check_utf8() {
-- _has_bits_[0] &= ~0x00000010u;
-+ _has_bits_[0] &= ~0x00000020u;
- }
- inline void FileOptions::clear_java_string_check_utf8() {
- java_string_check_utf8_ = false;
-@@ -5600,13 +5634,13 @@ inline void FileOptions::set_java_string_check_utf8(bool value) {
-
- // optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED];
- inline bool FileOptions::has_optimize_for() const {
-- return (_has_bits_[0] & 0x00000020u) != 0;
-+ return (_has_bits_[0] & 0x00000040u) != 0;
- }
- inline void FileOptions::set_has_optimize_for() {
-- _has_bits_[0] |= 0x00000020u;
-+ _has_bits_[0] |= 0x00000040u;
- }
- inline void FileOptions::clear_has_optimize_for() {
-- _has_bits_[0] &= ~0x00000020u;
-+ _has_bits_[0] &= ~0x00000040u;
- }
- inline void FileOptions::clear_optimize_for() {
- optimize_for_ = 1;
-@@ -5625,13 +5659,13 @@ inline void FileOptions::set_optimize_for(::google::protobuf::FileOptions_Optimi
-
- // optional string go_package = 11;
- inline bool FileOptions::has_go_package() const {
-- return (_has_bits_[0] & 0x00000040u) != 0;
-+ return (_has_bits_[0] & 0x00000080u) != 0;
- }
- inline void FileOptions::set_has_go_package() {
-- _has_bits_[0] |= 0x00000040u;
-+ _has_bits_[0] |= 0x00000080u;
- }
- inline void FileOptions::clear_has_go_package() {
-- _has_bits_[0] &= ~0x00000040u;
-+ _has_bits_[0] &= ~0x00000080u;
- }
- inline void FileOptions::clear_go_package() {
- go_package_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-@@ -5678,13 +5712,13 @@ inline void FileOptions::set_allocated_go_package(::std::string* go_package) {
-
- // optional bool cc_generic_services = 16 [default = false];
- inline bool FileOptions::has_cc_generic_services() const {
-- return (_has_bits_[0] & 0x00000080u) != 0;
-+ return (_has_bits_[0] & 0x00000100u) != 0;
- }
- inline void FileOptions::set_has_cc_generic_services() {
-- _has_bits_[0] |= 0x00000080u;
-+ _has_bits_[0] |= 0x00000100u;
- }
- inline void FileOptions::clear_has_cc_generic_services() {
-- _has_bits_[0] &= ~0x00000080u;
-+ _has_bits_[0] &= ~0x00000100u;
- }
- inline void FileOptions::clear_cc_generic_services() {
- cc_generic_services_ = false;
-@@ -5702,13 +5736,13 @@ inline void FileOptions::set_cc_generic_services(bool value) {
-
- // optional bool java_generic_services = 17 [default = false];
- inline bool FileOptions::has_java_generic_services() const {
-- return (_has_bits_[0] & 0x00000100u) != 0;
-+ return (_has_bits_[0] & 0x00000200u) != 0;
- }
- inline void FileOptions::set_has_java_generic_services() {
-- _has_bits_[0] |= 0x00000100u;
-+ _has_bits_[0] |= 0x00000200u;
- }
- inline void FileOptions::clear_has_java_generic_services() {
-- _has_bits_[0] &= ~0x00000100u;
-+ _has_bits_[0] &= ~0x00000200u;
- }
- inline void FileOptions::clear_java_generic_services() {
- java_generic_services_ = false;
-@@ -5726,13 +5760,13 @@ inline void FileOptions::set_java_generic_services(bool value) {
-
- // optional bool py_generic_services = 18 [default = false];
- inline bool FileOptions::has_py_generic_services() const {
-- return (_has_bits_[0] & 0x00000200u) != 0;
-+ return (_has_bits_[0] & 0x00000400u) != 0;
- }
- inline void FileOptions::set_has_py_generic_services() {
-- _has_bits_[0] |= 0x00000200u;
-+ _has_bits_[0] |= 0x00000400u;
- }
- inline void FileOptions::clear_has_py_generic_services() {
-- _has_bits_[0] &= ~0x00000200u;
-+ _has_bits_[0] &= ~0x00000400u;
- }
- inline void FileOptions::clear_py_generic_services() {
- py_generic_services_ = false;
-@@ -5750,13 +5784,13 @@ inline void FileOptions::set_py_generic_services(bool value) {
-
- // optional bool deprecated = 23 [default = false];
- inline bool FileOptions::has_deprecated() const {
-- return (_has_bits_[0] & 0x00000400u) != 0;
-+ return (_has_bits_[0] & 0x00000800u) != 0;
- }
- inline void FileOptions::set_has_deprecated() {
-- _has_bits_[0] |= 0x00000400u;
-+ _has_bits_[0] |= 0x00000800u;
- }
- inline void FileOptions::clear_has_deprecated() {
-- _has_bits_[0] &= ~0x00000400u;
-+ _has_bits_[0] &= ~0x00000800u;
- }
- inline void FileOptions::clear_deprecated() {
- deprecated_ = false;
-@@ -5774,13 +5808,13 @@ inline void FileOptions::set_deprecated(bool value) {
-
- // optional bool cc_enable_arenas = 31 [default = false];
- inline bool FileOptions::has_cc_enable_arenas() const {
-- return (_has_bits_[0] & 0x00000800u) != 0;
-+ return (_has_bits_[0] & 0x00001000u) != 0;
- }
- inline void FileOptions::set_has_cc_enable_arenas() {
-- _has_bits_[0] |= 0x00000800u;
-+ _has_bits_[0] |= 0x00001000u;
- }
- inline void FileOptions::clear_has_cc_enable_arenas() {
-- _has_bits_[0] &= ~0x00000800u;
-+ _has_bits_[0] &= ~0x00001000u;
- }
- inline void FileOptions::clear_cc_enable_arenas() {
- cc_enable_arenas_ = false;
-@@ -5798,13 +5832,13 @@ inline void FileOptions::set_cc_enable_arenas(bool value) {
-
- // optional string objc_class_prefix = 36;
- inline bool FileOptions::has_objc_class_prefix() const {
-- return (_has_bits_[0] & 0x00001000u) != 0;
-+ return (_has_bits_[0] & 0x00002000u) != 0;
- }
- inline void FileOptions::set_has_objc_class_prefix() {
-- _has_bits_[0] |= 0x00001000u;
-+ _has_bits_[0] |= 0x00002000u;
- }
- inline void FileOptions::clear_has_objc_class_prefix() {
-- _has_bits_[0] &= ~0x00001000u;
-+ _has_bits_[0] &= ~0x00002000u;
- }
- inline void FileOptions::clear_objc_class_prefix() {
- objc_class_prefix_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-@@ -5851,13 +5885,13 @@ inline void FileOptions::set_allocated_objc_class_prefix(::std::string* objc_cla
-
- // optional string csharp_namespace = 37;
- inline bool FileOptions::has_csharp_namespace() const {
-- return (_has_bits_[0] & 0x00002000u) != 0;
-+ return (_has_bits_[0] & 0x00004000u) != 0;
- }
- inline void FileOptions::set_has_csharp_namespace() {
-- _has_bits_[0] |= 0x00002000u;
-+ _has_bits_[0] |= 0x00004000u;
- }
- inline void FileOptions::clear_has_csharp_namespace() {
-- _has_bits_[0] &= ~0x00002000u;
-+ _has_bits_[0] &= ~0x00004000u;
- }
- inline void FileOptions::clear_csharp_namespace() {
- csharp_namespace_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
-@@ -5904,13 +5938,13 @@ inline void FileOptions::set_allocated_csharp_namespace(::std::string* csharp_na
-
- // optional bool javanano_use_deprecated_package = 38;
- inline bool FileOptions::has_javanano_use_deprecated_package() const {
-- return (_has_bits_[0] & 0x00004000u) != 0;
-+ return (_has_bits_[0] & 0x00008000u) != 0;
- }
- inline void FileOptions::set_has_javanano_use_deprecated_package() {
-- _has_bits_[0] |= 0x00004000u;
-+ _has_bits_[0] |= 0x00008000u;
- }
- inline void FileOptions::clear_has_javanano_use_deprecated_package() {
-- _has_bits_[0] &= ~0x00004000u;
-+ _has_bits_[0] &= ~0x00008000u;
- }
- inline void FileOptions::clear_javanano_use_deprecated_package() {
- javanano_use_deprecated_package_ = false;
-diff --git a/third_party/protobuf/src/google/protobuf/descriptor.proto b/third_party/protobuf/src/google/protobuf/descriptor.proto
-index 9d3dd8f..4e38337 100644
---- a/third_party/protobuf/src/google/protobuf/descriptor.proto
-+++ b/third_party/protobuf/src/google/protobuf/descriptor.proto
-@@ -299,6 +299,12 @@ message FileOptions {
- // top-level extensions defined in the file.
- optional bool java_multiple_files = 10 [default=false];
-
-+ // If set true, then code generators will store unknown fields so that
-+ // reserializing a message will retain them. This is the default behaviour
-+ // unless LITE_RUNTIME is specified. Therefore, this option only makes sense
-+ // when LITE_RUNTIME is in use.
-+ optional bool retain_unknown_fields = 12 [default=false];
-+
- // If set true, then the Java code generator will generate equals() and
- // hashCode() methods for all messages defined in the .proto file.
- // - In the full runtime, this is purely a speed optimization, as the
-diff --git a/third_party/protobuf/src/google/protobuf/extension_set.cc b/third_party/protobuf/src/google/protobuf/extension_set.cc
-index 649ae18..c315eca 100644
---- a/third_party/protobuf/src/google/protobuf/extension_set.cc
-+++ b/third_party/protobuf/src/google/protobuf/extension_set.cc
-@@ -38,6 +38,7 @@
- #include <google/protobuf/extension_set.h>
- #include <google/protobuf/message_lite.h>
- #include <google/protobuf/io/coded_stream.h>
-+#include <google/protobuf/io/zero_copy_stream_impl_lite.h>
- #include <google/protobuf/wire_format_lite_inl.h>
- #include <google/protobuf/repeated_field.h>
- #include <google/protobuf/stubs/map_util.h>
-@@ -1318,7 +1319,14 @@ bool ExtensionSet::ParseFieldWithExtensionInfo(
-
- bool ExtensionSet::ParseField(uint32 tag, io::CodedInputStream* input,
- const MessageLite* containing_type) {
-- FieldSkipper skipper;
-+ return ParseField(tag, input, containing_type,
-+ static_cast<UnknownFieldSet*>(NULL));
-+}
-+
-+bool ExtensionSet::ParseField(uint32 tag, io::CodedInputStream* input,
-+ const MessageLite* containing_type,
-+ UnknownFieldSet* unknown_fields) {
-+ FieldSkipper skipper(unknown_fields);
- GeneratedExtensionFinder finder(containing_type);
- return ParseField(tag, input, &finder, &skipper);
- }
-@@ -1332,14 +1340,137 @@ bool ExtensionSet::ParseField(uint32 tag, io::CodedInputStream* input,
- }
-
- // Defined in extension_set_heavy.cc.
--// bool ExtensionSet::ParseField(uint32 tag, io::CodedInputStream* input,
--// const MessageLite* containing_type,
--// UnknownFieldSet* unknown_fields)
-+// bool ExtensionSet::ParseFieldHeavy(uint32 tag, io::CodedInputStream* input,
-+// const Message* containing_type,
-+// UnknownFieldSet* unknown_fields)
-+
-+bool ExtensionSet::ParseMessageSet(io::CodedInputStream* input,
-+ ExtensionFinder* extension_finder,
-+ FieldSkipper* field_skipper) {
-+ while (true) {
-+ const uint32 tag = input->ReadTag();
-+ switch (tag) {
-+ case 0:
-+ return true;
-+ case WireFormatLite::kMessageSetItemStartTag:
-+ if (!ParseMessageSetItem(input, extension_finder, field_skipper)) {
-+ return false;
-+ }
-+ break;
-+ default:
-+ if (!ParseField(tag, input, extension_finder, field_skipper)) {
-+ return false;
-+ }
-+ break;
-+ }
-+ }
-+}
-+
-+bool ExtensionSet::ParseMessageSet(io::CodedInputStream* input,
-+ const MessageLite* containing_type) {
-+ return ParseMessageSet(input, containing_type,
-+ static_cast<UnknownFieldSet*>(NULL));
-+}
-+
-+bool ExtensionSet::ParseMessageSet(io::CodedInputStream* input,
-+ const MessageLite* containing_type,
-+ UnknownFieldSet* unknown_fields) {
-+ FieldSkipper skipper(unknown_fields);
-+ GeneratedExtensionFinder finder(containing_type);
-+ return ParseMessageSet(input, &finder, &skipper);
-+}
-
- // Defined in extension_set_heavy.cc.
--// bool ExtensionSet::ParseMessageSet(io::CodedInputStream* input,
--// const MessageLite* containing_type,
--// UnknownFieldSet* unknown_fields);
-+// bool ExtensionSet::ParseMessageSetHeavy(io::CodedInputStream* input,
-+// const Message* containing_type,
-+// UnknownFieldSet* unknown_fields);
-+
-+bool ExtensionSet::ParseFieldMaybeLazily(
-+ int wire_type, int field_number, io::CodedInputStream* input,
-+ ExtensionFinder* extension_finder,
-+ FieldSkipper* field_skipper) {
-+ return ParseField(WireFormatLite::MakeTag(
-+ field_number, static_cast<WireFormatLite::WireType>(wire_type)),
-+ input, extension_finder, field_skipper);
-+}
-+
-+bool ExtensionSet::ParseMessageSetItem(io::CodedInputStream* input,
-+ ExtensionFinder* extension_finder,
-+ FieldSkipper* field_skipper) {
-+ // TODO(kenton): It would be nice to share code between this and
-+ // WireFormatLite::ParseAndMergeMessageSetItem(), but I think the
-+ // differences would be hard to factor out.
-+
-+ // This method parses a group which should contain two fields:
-+ // required int32 type_id = 2;
-+ // required data message = 3;
-+
-+ uint32 last_type_id = 0;
-+
-+ // If we see message data before the type_id, we'll append it to this so
-+ // we can parse it later.
-+ string message_data;
-+
-+ while (true) {
-+ const uint32 tag = input->ReadTag();
-+ if (tag == 0) return false;
-+
-+ switch (tag) {
-+ case WireFormatLite::kMessageSetTypeIdTag: {
-+ uint32 type_id;
-+ if (!input->ReadVarint32(&type_id)) return false;
-+ last_type_id = type_id;
-+
-+ if (!message_data.empty()) {
-+ // We saw some message data before the type_id. Have to parse it
-+ // now.
-+ io::CodedInputStream sub_input(
-+ reinterpret_cast<const uint8*>(message_data.data()),
-+ message_data.size());
-+ if (!ParseFieldMaybeLazily(WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
-+ last_type_id, &sub_input,
-+ extension_finder, field_skipper)) {
-+ return false;
-+ }
-+ message_data.clear();
-+ }
-+
-+ break;
-+ }
-+
-+ case WireFormatLite::kMessageSetMessageTag: {
-+ if (last_type_id == 0) {
-+ // We haven't seen a type_id yet. Append this data to message_data.
-+ string temp;
-+ uint32 length;
-+ if (!input->ReadVarint32(&length)) return false;
-+ if (!input->ReadString(&temp, length)) return false;
-+ io::StringOutputStream output_stream(&message_data);
-+ io::CodedOutputStream coded_output(&output_stream);
-+ coded_output.WriteVarint32(length);
-+ coded_output.WriteString(temp);
-+ } else {
-+ // Already saw type_id, so we can parse this directly.
-+ if (!ParseFieldMaybeLazily(WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
-+ last_type_id, input,
-+ extension_finder, field_skipper)) {
-+ return false;
-+ }
-+ }
-+
-+ break;
-+ }
-+
-+ case WireFormatLite::kMessageSetItemEndTag: {
-+ return true;
-+ }
-+
-+ default: {
-+ if (!field_skipper->SkipField(input, tag)) return false;
-+ }
-+ }
-+ }
-+}
-
- void ExtensionSet::SerializeWithCachedSizes(
- int start_field_number, int end_field_number,
-diff --git a/third_party/protobuf/src/google/protobuf/extension_set.h b/third_party/protobuf/src/google/protobuf/extension_set.h
-index c371e01..25acee7 100644
---- a/third_party/protobuf/src/google/protobuf/extension_set.h
-+++ b/third_party/protobuf/src/google/protobuf/extension_set.h
-@@ -138,9 +138,6 @@ class LIBPROTOBUF_EXPORT GeneratedExtensionFinder : public ExtensionFinder {
- const MessageLite* containing_type_;
- };
-
--// A FieldSkipper used for parsing MessageSet.
--class MessageSetFieldSkipper;
--
- // Note: extension_set_heavy.cc defines DescriptorPoolExtensionFinder for
- // finding extensions from a DescriptorPool.
-
-@@ -366,25 +363,31 @@ class LIBPROTOBUF_EXPORT ExtensionSet {
- bool ParseField(uint32 tag, io::CodedInputStream* input,
- const MessageLite* containing_type);
- bool ParseField(uint32 tag, io::CodedInputStream* input,
-- const Message* containing_type,
-+ const MessageLite* containing_type,
- UnknownFieldSet* unknown_fields);
- bool ParseField(uint32 tag, io::CodedInputStream* input,
- const MessageLite* containing_type,
- io::CodedOutputStream* unknown_fields);
-+ bool ParseFieldHeavy(uint32 tag, io::CodedInputStream* input,
-+ const Message* containing_type,
-+ UnknownFieldSet* unknown_fields);
-
- // Parse an entire message in MessageSet format. Such messages have no
- // fields, only extensions.
- bool ParseMessageSet(io::CodedInputStream* input,
- ExtensionFinder* extension_finder,
-- MessageSetFieldSkipper* field_skipper);
-+ FieldSkipper* field_skipper);
-
- // Specific versions for lite or full messages (constructs the appropriate
- // FieldSkipper automatically).
- bool ParseMessageSet(io::CodedInputStream* input,
- const MessageLite* containing_type);
- bool ParseMessageSet(io::CodedInputStream* input,
-- const Message* containing_type,
-+ const MessageLite* containing_type,
- UnknownFieldSet* unknown_fields);
-+ bool ParseMessageSetHeavy(io::CodedInputStream* input,
-+ const Message* containing_type,
-+ UnknownFieldSet* unknown_fields);
-
- // Write all extension fields with field numbers in the range
- // [start_field_number, end_field_number)
-@@ -571,7 +574,7 @@ class LIBPROTOBUF_EXPORT ExtensionSet {
- bool ParseFieldMaybeLazily(int wire_type, int field_number,
- io::CodedInputStream* input,
- ExtensionFinder* extension_finder,
-- MessageSetFieldSkipper* field_skipper);
-+ FieldSkipper* field_skipper);
-
- // Gets the extension with the given number, creating it if it does not
- // already exist. Returns true if the extension did not already exist.
-@@ -582,7 +585,7 @@ class LIBPROTOBUF_EXPORT ExtensionSet {
- // tag has been read.
- bool ParseMessageSetItem(io::CodedInputStream* input,
- ExtensionFinder* extension_finder,
-- MessageSetFieldSkipper* field_skipper);
-+ FieldSkipper* field_skipper);
-
- // Hack: RepeatedPtrFieldBase declares ExtensionSet as a friend. This
- // friendship should automatically extend to ExtensionSet::Extension, but
-diff --git a/third_party/protobuf/src/google/protobuf/extension_set_heavy.cc b/third_party/protobuf/src/google/protobuf/extension_set_heavy.cc
-index 330bd82..58f742b 100644
---- a/third_party/protobuf/src/google/protobuf/extension_set_heavy.cc
-+++ b/third_party/protobuf/src/google/protobuf/extension_set_heavy.cc
-@@ -48,30 +48,6 @@ namespace google {
- namespace protobuf {
- namespace internal {
-
--// A FieldSkipper used to store unknown MessageSet fields into UnknownFieldSet.
--class MessageSetFieldSkipper
-- : public UnknownFieldSetFieldSkipper {
-- public:
-- explicit MessageSetFieldSkipper(UnknownFieldSet* unknown_fields)
-- : UnknownFieldSetFieldSkipper(unknown_fields) {}
-- virtual ~MessageSetFieldSkipper() {}
--
-- virtual bool SkipMessageSetField(io::CodedInputStream* input,
-- int field_number);
--};
--bool MessageSetFieldSkipper::SkipMessageSetField(
-- io::CodedInputStream* input, int field_number) {
-- uint32 length;
-- if (!input->ReadVarint32(&length)) return false;
-- if (unknown_fields_ == NULL) {
-- return input->Skip(length);
-- } else {
-- return input->ReadString(
-- unknown_fields_->AddLengthDelimited(field_number), length);
-- }
--}
--
--
- // Implementation of ExtensionFinder which finds extensions in a given
- // DescriptorPool, using the given MessageFactory to construct sub-objects.
- // This class is implemented in extension_set_heavy.cc.
-@@ -274,10 +250,10 @@ bool DescriptorPoolExtensionFinder::Find(int number, ExtensionInfo* output) {
- }
- }
-
--bool ExtensionSet::ParseField(uint32 tag, io::CodedInputStream* input,
-- const Message* containing_type,
-- UnknownFieldSet* unknown_fields) {
-- UnknownFieldSetFieldSkipper skipper(unknown_fields);
-+bool ExtensionSet::ParseFieldHeavy(uint32 tag, io::CodedInputStream* input,
-+ const Message* containing_type,
-+ UnknownFieldSet* unknown_fields) {
-+ FieldSkipper skipper(unknown_fields);
- if (input->GetExtensionPool() == NULL) {
- GeneratedExtensionFinder finder(containing_type);
- return ParseField(tag, input, &finder, &skipper);
-@@ -289,10 +265,10 @@ bool ExtensionSet::ParseField(uint32 tag, io::CodedInputStream* input,
- }
- }
-
--bool ExtensionSet::ParseMessageSet(io::CodedInputStream* input,
-- const Message* containing_type,
-- UnknownFieldSet* unknown_fields) {
-- MessageSetFieldSkipper skipper(unknown_fields);
-+bool ExtensionSet::ParseMessageSetHeavy(io::CodedInputStream* input,
-+ const Message* containing_type,
-+ UnknownFieldSet* unknown_fields) {
-+ FieldSkipper skipper(unknown_fields);
- if (input->GetExtensionPool() == NULL) {
- GeneratedExtensionFinder finder(containing_type);
- return ParseMessageSet(input, &finder, &skipper);
-@@ -541,122 +517,6 @@ uint8* ExtensionSet::Extension::SerializeMessageSetItemWithCachedSizesToArray(
- }
-
-
--bool ExtensionSet::ParseFieldMaybeLazily(
-- int wire_type, int field_number, io::CodedInputStream* input,
-- ExtensionFinder* extension_finder,
-- MessageSetFieldSkipper* field_skipper) {
-- return ParseField(WireFormatLite::MakeTag(
-- field_number, static_cast<WireFormatLite::WireType>(wire_type)),
-- input, extension_finder, field_skipper);
--}
--
--bool ExtensionSet::ParseMessageSet(io::CodedInputStream* input,
-- ExtensionFinder* extension_finder,
-- MessageSetFieldSkipper* field_skipper) {
-- while (true) {
-- const uint32 tag = input->ReadTag();
-- switch (tag) {
-- case 0:
-- return true;
-- case WireFormatLite::kMessageSetItemStartTag:
-- if (!ParseMessageSetItem(input, extension_finder, field_skipper)) {
-- return false;
-- }
-- break;
-- default:
-- if (!ParseField(tag, input, extension_finder, field_skipper)) {
-- return false;
-- }
-- break;
-- }
-- }
--}
--
--bool ExtensionSet::ParseMessageSet(io::CodedInputStream* input,
-- const MessageLite* containing_type) {
-- MessageSetFieldSkipper skipper(NULL);
-- GeneratedExtensionFinder finder(containing_type);
-- return ParseMessageSet(input, &finder, &skipper);
--}
--
--bool ExtensionSet::ParseMessageSetItem(io::CodedInputStream* input,
-- ExtensionFinder* extension_finder,
-- MessageSetFieldSkipper* field_skipper) {
-- // TODO(kenton): It would be nice to share code between this and
-- // WireFormatLite::ParseAndMergeMessageSetItem(), but I think the
-- // differences would be hard to factor out.
--
-- // This method parses a group which should contain two fields:
-- // required int32 type_id = 2;
-- // required data message = 3;
--
-- uint32 last_type_id = 0;
--
-- // If we see message data before the type_id, we'll append it to this so
-- // we can parse it later.
-- string message_data;
--
-- while (true) {
-- const uint32 tag = input->ReadTag();
-- if (tag == 0) return false;
--
-- switch (tag) {
-- case WireFormatLite::kMessageSetTypeIdTag: {
-- uint32 type_id;
-- if (!input->ReadVarint32(&type_id)) return false;
-- last_type_id = type_id;
--
-- if (!message_data.empty()) {
-- // We saw some message data before the type_id. Have to parse it
-- // now.
-- io::CodedInputStream sub_input(
-- reinterpret_cast<const uint8*>(message_data.data()),
-- message_data.size());
-- if (!ParseFieldMaybeLazily(WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
-- last_type_id, &sub_input,
-- extension_finder, field_skipper)) {
-- return false;
-- }
-- message_data.clear();
-- }
--
-- break;
-- }
--
-- case WireFormatLite::kMessageSetMessageTag: {
-- if (last_type_id == 0) {
-- // We haven't seen a type_id yet. Append this data to message_data.
-- string temp;
-- uint32 length;
-- if (!input->ReadVarint32(&length)) return false;
-- if (!input->ReadString(&temp, length)) return false;
-- io::StringOutputStream output_stream(&message_data);
-- io::CodedOutputStream coded_output(&output_stream);
-- coded_output.WriteVarint32(length);
-- coded_output.WriteString(temp);
-- } else {
-- // Already saw type_id, so we can parse this directly.
-- if (!ParseFieldMaybeLazily(WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
-- last_type_id, input,
-- extension_finder, field_skipper)) {
-- return false;
-- }
-- }
--
-- break;
-- }
--
-- case WireFormatLite::kMessageSetItemEndTag: {
-- return true;
-- }
--
-- default: {
-- if (!field_skipper->SkipField(input, tag)) return false;
-- }
-- }
-- }
--}
--
- void ExtensionSet::Extension::SerializeMessageSetItemWithCachedSizes(
- int number,
- io::CodedOutputStream* output) const {
-diff --git a/third_party/protobuf/src/google/protobuf/generated_message_reflection.cc b/third_party/protobuf/src/google/protobuf/generated_message_reflection.cc
-index 412c48a..0b01e73 100644
---- a/third_party/protobuf/src/google/protobuf/generated_message_reflection.cc
-+++ b/third_party/protobuf/src/google/protobuf/generated_message_reflection.cc
-@@ -57,18 +57,6 @@ bool IsMapFieldInApi(const FieldDescriptor* field) {
- }
- } // anonymous namespace
-
--int StringSpaceUsedExcludingSelf(const string& str) {
-- const void* start = &str;
-- const void* end = &str + 1;
--
-- if (start <= str.data() && str.data() < end) {
-- // The string's data is stored inside the string object itself.
-- return 0;
-- } else {
-- return str.capacity();
-- }
--}
--
- bool ParseNamedEnum(const EnumDescriptor* descriptor,
- const string& name,
- int* value) {
-diff --git a/third_party/protobuf/src/google/protobuf/generated_message_util.cc b/third_party/protobuf/src/google/protobuf/generated_message_util.cc
-index 53cae8b..e8fb398 100644
---- a/third_party/protobuf/src/google/protobuf/generated_message_util.cc
-+++ b/third_party/protobuf/src/google/protobuf/generated_message_util.cc
-@@ -60,6 +60,17 @@ void InitEmptyString() {
- OnShutdown(&DeleteEmptyString);
- }
-
-+int StringSpaceUsedExcludingSelf(const string& str) {
-+ const void* start = &str;
-+ const void* end = &str + 1;
-+
-+ if (start <= str.data() && str.data() < end) {
-+ // The string's data is stored inside the string object itself.
-+ return 0;
-+ } else {
-+ return str.capacity();
-+ }
-+}
-
- } // namespace internal
- } // namespace protobuf
-diff --git a/third_party/protobuf/src/google/protobuf/unknown_field_set.cc b/third_party/protobuf/src/google/protobuf/unknown_field_set.cc
-index 93f0f20..7e04a0e 100644
---- a/third_party/protobuf/src/google/protobuf/unknown_field_set.cc
-+++ b/third_party/protobuf/src/google/protobuf/unknown_field_set.cc
-@@ -35,10 +35,12 @@
- #include <google/protobuf/unknown_field_set.h>
-
- #include <google/protobuf/stubs/common.h>
-+#include <google/protobuf/stubs/once.h>
- #include <google/protobuf/io/coded_stream.h>
- #include <google/protobuf/io/zero_copy_stream.h>
--#include <google/protobuf/io/zero_copy_stream_impl.h>
--#include <google/protobuf/wire_format.h>
-+#include <google/protobuf/io/zero_copy_stream_impl_lite.h>
-+#include <google/protobuf/generated_message_util.h>
-+#include <google/protobuf/wire_format_lite.h>
- #include <google/protobuf/stubs/stl_util.h>
-
- namespace google {
-@@ -254,7 +256,7 @@ void UnknownFieldSet::DeleteByNumber(int number) {
-
- bool UnknownFieldSet::MergeFromCodedStream(io::CodedInputStream* input) {
- UnknownFieldSet other;
-- if (internal::WireFormat::SkipMessage(input, &other) &&
-+ if (internal::WireFormatLite::SkipMessage(input, &other) &&
- input->ConsumedEntireMessage()) {
- MergeFromAndDestroy(&other);
- return true;
-diff --git a/third_party/protobuf/src/google/protobuf/util/internal/protostream_objectsource.cc b/third_party/protobuf/src/google/protobuf/util/internal/protostream_objectsource.cc
-index 53a0e47..8e0897d 100644
---- a/third_party/protobuf/src/google/protobuf/util/internal/protostream_objectsource.cc
-+++ b/third_party/protobuf/src/google/protobuf/util/internal/protostream_objectsource.cc
-@@ -162,7 +162,7 @@ Status ProtoStreamObjectSource::WriteMessage(const google::protobuf::Type& type,
- if (field == NULL) {
- // If we didn't find a field, skip this unknown tag.
- // TODO(wpoon): Check return boolean value.
-- WireFormat::SkipField(stream_, tag, NULL);
-+ WireFormatLite::SkipField(stream_, tag);
- tag = stream_->ReadTag();
- continue;
- }
-@@ -239,7 +239,7 @@ Status ProtoStreamObjectSource::RenderMapEntry(
- for (uint32 tag = stream_->ReadTag(); tag != 0; tag = stream_->ReadTag()) {
- const google::protobuf::Field* field = FindAndVerifyField(*type, tag);
- if (field == NULL) {
-- WireFormat::SkipField(stream_, tag, NULL);
-+ WireFormatLite::SkipField(stream_, tag);
- continue;
- }
- // Map field numbers are key = 1 and value = 2
-@@ -506,7 +506,7 @@ Status ProtoStreamObjectSource::RenderStructValue(
- tag = os->stream_->ReadTag()) {
- field = os->FindAndVerifyField(type, tag);
- if (field == NULL) {
-- WireFormat::SkipField(os->stream_, tag, NULL);
-+ WireFormatLite::SkipField(os->stream_, tag);
- continue;
- }
- RETURN_IF_ERROR(os->RenderField(field, field_name, ow));
-@@ -530,7 +530,7 @@ Status ProtoStreamObjectSource::RenderStructListValue(
- while (tag != 0) {
- const google::protobuf::Field* field = os->FindAndVerifyField(type, tag);
- if (field == NULL) {
-- WireFormat::SkipField(os->stream_, tag, NULL);
-+ WireFormatLite::SkipField(os->stream_, tag);
- tag = os->stream_->ReadTag();
- continue;
- }
-@@ -552,7 +552,7 @@ Status ProtoStreamObjectSource::RenderAny(const ProtoStreamObjectSource* os,
- for (tag = os->stream_->ReadTag(); tag != 0; tag = os->stream_->ReadTag()) {
- const google::protobuf::Field* field = os->FindAndVerifyField(type, tag);
- if (field == NULL) {
-- WireFormat::SkipField(os->stream_, tag, NULL);
-+ WireFormatLite::SkipField(os->stream_, tag);
- continue;
- }
- // 'type_url' has field number of 1 and 'value' has field number 2
-@@ -982,7 +982,7 @@ std::pair<int64, int32> ProtoStreamObjectSource::ReadSecondsAndNanos(
- for (tag = stream_->ReadTag(); tag != 0; tag = stream_->ReadTag()) {
- const google::protobuf::Field* field = FindAndVerifyField(type, tag);
- if (field == NULL) {
-- WireFormat::SkipField(stream_, tag, NULL);
-+ WireFormatLite::SkipField(stream_, tag);
- continue;
- }
- // 'seconds' has field number of 1 and 'nanos' has field number 2
-diff --git a/third_party/protobuf/src/google/protobuf/wire_format.cc b/third_party/protobuf/src/google/protobuf/wire_format.cc
-index c5db963..7021f8e 100644
---- a/third_party/protobuf/src/google/protobuf/wire_format.cc
-+++ b/third_party/protobuf/src/google/protobuf/wire_format.cc
-@@ -54,329 +54,6 @@ namespace google {
- namespace protobuf {
- namespace internal {
-
--// ===================================================================
--
--bool UnknownFieldSetFieldSkipper::SkipField(
-- io::CodedInputStream* input, uint32 tag) {
-- return WireFormat::SkipField(input, tag, unknown_fields_);
--}
--
--bool UnknownFieldSetFieldSkipper::SkipMessage(io::CodedInputStream* input) {
-- return WireFormat::SkipMessage(input, unknown_fields_);
--}
--
--void UnknownFieldSetFieldSkipper::SkipUnknownEnum(
-- int field_number, int value) {
-- unknown_fields_->AddVarint(field_number, value);
--}
--
--bool WireFormat::SkipField(io::CodedInputStream* input, uint32 tag,
-- UnknownFieldSet* unknown_fields) {
-- int number = WireFormatLite::GetTagFieldNumber(tag);
--
-- switch (WireFormatLite::GetTagWireType(tag)) {
-- case WireFormatLite::WIRETYPE_VARINT: {
-- uint64 value;
-- if (!input->ReadVarint64(&value)) return false;
-- if (unknown_fields != NULL) unknown_fields->AddVarint(number, value);
-- return true;
-- }
-- case WireFormatLite::WIRETYPE_FIXED64: {
-- uint64 value;
-- if (!input->ReadLittleEndian64(&value)) return false;
-- if (unknown_fields != NULL) unknown_fields->AddFixed64(number, value);
-- return true;
-- }
-- case WireFormatLite::WIRETYPE_LENGTH_DELIMITED: {
-- uint32 length;
-- if (!input->ReadVarint32(&length)) return false;
-- if (unknown_fields == NULL) {
-- if (!input->Skip(length)) return false;
-- } else {
-- if (!input->ReadString(unknown_fields->AddLengthDelimited(number),
-- length)) {
-- return false;
-- }
-- }
-- return true;
-- }
-- case WireFormatLite::WIRETYPE_START_GROUP: {
-- if (!input->IncrementRecursionDepth()) return false;
-- if (!SkipMessage(input, (unknown_fields == NULL) ?
-- NULL : unknown_fields->AddGroup(number))) {
-- return false;
-- }
-- input->DecrementRecursionDepth();
-- // Check that the ending tag matched the starting tag.
-- if (!input->LastTagWas(WireFormatLite::MakeTag(
-- WireFormatLite::GetTagFieldNumber(tag),
-- WireFormatLite::WIRETYPE_END_GROUP))) {
-- return false;
-- }
-- return true;
-- }
-- case WireFormatLite::WIRETYPE_END_GROUP: {
-- return false;
-- }
-- case WireFormatLite::WIRETYPE_FIXED32: {
-- uint32 value;
-- if (!input->ReadLittleEndian32(&value)) return false;
-- if (unknown_fields != NULL) unknown_fields->AddFixed32(number, value);
-- return true;
-- }
-- default: {
-- return false;
-- }
-- }
--}
--
--bool WireFormat::SkipMessage(io::CodedInputStream* input,
-- UnknownFieldSet* unknown_fields) {
-- while (true) {
-- uint32 tag = input->ReadTag();
-- if (tag == 0) {
-- // End of input. This is a valid place to end, so return true.
-- return true;
-- }
--
-- WireFormatLite::WireType wire_type = WireFormatLite::GetTagWireType(tag);
--
-- if (wire_type == WireFormatLite::WIRETYPE_END_GROUP) {
-- // Must be the end of the message.
-- return true;
-- }
--
-- if (!SkipField(input, tag, unknown_fields)) return false;
-- }
--}
--
--bool WireFormat::ReadPackedEnumPreserveUnknowns(io::CodedInputStream* input,
-- uint32 field_number,
-- bool (*is_valid)(int),
-- UnknownFieldSet* unknown_fields,
-- RepeatedField<int>* values) {
-- uint32 length;
-- if (!input->ReadVarint32(&length)) return false;
-- io::CodedInputStream::Limit limit = input->PushLimit(length);
-- while (input->BytesUntilLimit() > 0) {
-- int value;
-- if (!google::protobuf::internal::WireFormatLite::ReadPrimitive<
-- int, WireFormatLite::TYPE_ENUM>(input, &value)) {
-- return false;
-- }
-- if (is_valid == NULL || is_valid(value)) {
-- values->Add(value);
-- } else {
-- unknown_fields->AddVarint(field_number, value);
-- }
-- }
-- input->PopLimit(limit);
-- return true;
--}
--
--
--void WireFormat::SerializeUnknownFields(const UnknownFieldSet& unknown_fields,
-- io::CodedOutputStream* output) {
-- for (int i = 0; i < unknown_fields.field_count(); i++) {
-- const UnknownField& field = unknown_fields.field(i);
-- switch (field.type()) {
-- case UnknownField::TYPE_VARINT:
-- output->WriteVarint32(WireFormatLite::MakeTag(field.number(),
-- WireFormatLite::WIRETYPE_VARINT));
-- output->WriteVarint64(field.varint());
-- break;
-- case UnknownField::TYPE_FIXED32:
-- output->WriteVarint32(WireFormatLite::MakeTag(field.number(),
-- WireFormatLite::WIRETYPE_FIXED32));
-- output->WriteLittleEndian32(field.fixed32());
-- break;
-- case UnknownField::TYPE_FIXED64:
-- output->WriteVarint32(WireFormatLite::MakeTag(field.number(),
-- WireFormatLite::WIRETYPE_FIXED64));
-- output->WriteLittleEndian64(field.fixed64());
-- break;
-- case UnknownField::TYPE_LENGTH_DELIMITED:
-- output->WriteVarint32(WireFormatLite::MakeTag(field.number(),
-- WireFormatLite::WIRETYPE_LENGTH_DELIMITED));
-- output->WriteVarint32(field.length_delimited().size());
-- output->WriteRawMaybeAliased(field.length_delimited().data(),
-- field.length_delimited().size());
-- break;
-- case UnknownField::TYPE_GROUP:
-- output->WriteVarint32(WireFormatLite::MakeTag(field.number(),
-- WireFormatLite::WIRETYPE_START_GROUP));
-- SerializeUnknownFields(field.group(), output);
-- output->WriteVarint32(WireFormatLite::MakeTag(field.number(),
-- WireFormatLite::WIRETYPE_END_GROUP));
-- break;
-- }
-- }
--}
--
--uint8* WireFormat::SerializeUnknownFieldsToArray(
-- const UnknownFieldSet& unknown_fields,
-- uint8* target) {
-- for (int i = 0; i < unknown_fields.field_count(); i++) {
-- const UnknownField& field = unknown_fields.field(i);
--
-- switch (field.type()) {
-- case UnknownField::TYPE_VARINT:
-- target = WireFormatLite::WriteInt64ToArray(
-- field.number(), field.varint(), target);
-- break;
-- case UnknownField::TYPE_FIXED32:
-- target = WireFormatLite::WriteFixed32ToArray(
-- field.number(), field.fixed32(), target);
-- break;
-- case UnknownField::TYPE_FIXED64:
-- target = WireFormatLite::WriteFixed64ToArray(
-- field.number(), field.fixed64(), target);
-- break;
-- case UnknownField::TYPE_LENGTH_DELIMITED:
-- target = WireFormatLite::WriteBytesToArray(
-- field.number(), field.length_delimited(), target);
-- break;
-- case UnknownField::TYPE_GROUP:
-- target = WireFormatLite::WriteTagToArray(
-- field.number(), WireFormatLite::WIRETYPE_START_GROUP, target);
-- target = SerializeUnknownFieldsToArray(field.group(), target);
-- target = WireFormatLite::WriteTagToArray(
-- field.number(), WireFormatLite::WIRETYPE_END_GROUP, target);
-- break;
-- }
-- }
-- return target;
--}
--
--void WireFormat::SerializeUnknownMessageSetItems(
-- const UnknownFieldSet& unknown_fields,
-- io::CodedOutputStream* output) {
-- for (int i = 0; i < unknown_fields.field_count(); i++) {
-- const UnknownField& field = unknown_fields.field(i);
-- // The only unknown fields that are allowed to exist in a MessageSet are
-- // messages, which are length-delimited.
-- if (field.type() == UnknownField::TYPE_LENGTH_DELIMITED) {
-- // Start group.
-- output->WriteVarint32(WireFormatLite::kMessageSetItemStartTag);
--
-- // Write type ID.
-- output->WriteVarint32(WireFormatLite::kMessageSetTypeIdTag);
-- output->WriteVarint32(field.number());
--
-- // Write message.
-- output->WriteVarint32(WireFormatLite::kMessageSetMessageTag);
-- field.SerializeLengthDelimitedNoTag(output);
--
-- // End group.
-- output->WriteVarint32(WireFormatLite::kMessageSetItemEndTag);
-- }
-- }
--}
--
--uint8* WireFormat::SerializeUnknownMessageSetItemsToArray(
-- const UnknownFieldSet& unknown_fields,
-- uint8* target) {
-- for (int i = 0; i < unknown_fields.field_count(); i++) {
-- const UnknownField& field = unknown_fields.field(i);
--
-- // The only unknown fields that are allowed to exist in a MessageSet are
-- // messages, which are length-delimited.
-- if (field.type() == UnknownField::TYPE_LENGTH_DELIMITED) {
-- // Start group.
-- target = io::CodedOutputStream::WriteTagToArray(
-- WireFormatLite::kMessageSetItemStartTag, target);
--
-- // Write type ID.
-- target = io::CodedOutputStream::WriteTagToArray(
-- WireFormatLite::kMessageSetTypeIdTag, target);
-- target = io::CodedOutputStream::WriteVarint32ToArray(
-- field.number(), target);
--
-- // Write message.
-- target = io::CodedOutputStream::WriteTagToArray(
-- WireFormatLite::kMessageSetMessageTag, target);
-- target = field.SerializeLengthDelimitedNoTagToArray(target);
--
-- // End group.
-- target = io::CodedOutputStream::WriteTagToArray(
-- WireFormatLite::kMessageSetItemEndTag, target);
-- }
-- }
--
-- return target;
--}
--
--int WireFormat::ComputeUnknownFieldsSize(
-- const UnknownFieldSet& unknown_fields) {
-- int size = 0;
-- for (int i = 0; i < unknown_fields.field_count(); i++) {
-- const UnknownField& field = unknown_fields.field(i);
--
-- switch (field.type()) {
-- case UnknownField::TYPE_VARINT:
-- size += io::CodedOutputStream::VarintSize32(
-- WireFormatLite::MakeTag(field.number(),
-- WireFormatLite::WIRETYPE_VARINT));
-- size += io::CodedOutputStream::VarintSize64(field.varint());
-- break;
-- case UnknownField::TYPE_FIXED32:
-- size += io::CodedOutputStream::VarintSize32(
-- WireFormatLite::MakeTag(field.number(),
-- WireFormatLite::WIRETYPE_FIXED32));
-- size += sizeof(int32);
-- break;
-- case UnknownField::TYPE_FIXED64:
-- size += io::CodedOutputStream::VarintSize32(
-- WireFormatLite::MakeTag(field.number(),
-- WireFormatLite::WIRETYPE_FIXED64));
-- size += sizeof(int64);
-- break;
-- case UnknownField::TYPE_LENGTH_DELIMITED:
-- size += io::CodedOutputStream::VarintSize32(
-- WireFormatLite::MakeTag(field.number(),
-- WireFormatLite::WIRETYPE_LENGTH_DELIMITED));
-- size += io::CodedOutputStream::VarintSize32(
-- field.length_delimited().size());
-- size += field.length_delimited().size();
-- break;
-- case UnknownField::TYPE_GROUP:
-- size += io::CodedOutputStream::VarintSize32(
-- WireFormatLite::MakeTag(field.number(),
-- WireFormatLite::WIRETYPE_START_GROUP));
-- size += ComputeUnknownFieldsSize(field.group());
-- size += io::CodedOutputStream::VarintSize32(
-- WireFormatLite::MakeTag(field.number(),
-- WireFormatLite::WIRETYPE_END_GROUP));
-- break;
-- }
-- }
--
-- return size;
--}
--
--int WireFormat::ComputeUnknownMessageSetItemsSize(
-- const UnknownFieldSet& unknown_fields) {
-- int size = 0;
-- for (int i = 0; i < unknown_fields.field_count(); i++) {
-- const UnknownField& field = unknown_fields.field(i);
--
-- // The only unknown fields that are allowed to exist in a MessageSet are
-- // messages, which are length-delimited.
-- if (field.type() == UnknownField::TYPE_LENGTH_DELIMITED) {
-- size += WireFormatLite::kMessageSetItemTagsSize;
-- size += io::CodedOutputStream::VarintSize32(field.number());
--
-- int field_size = field.GetLengthDelimitedSize();
-- size += io::CodedOutputStream::VarintSize32(field_size);
-- size += field_size;
-- }
-- }
--
-- return size;
--}
--
--// ===================================================================
--
- bool WireFormat::ParseAndMergePartial(io::CodedInputStream* input,
- Message* message) {
- const Descriptor* descriptor = message->GetDescriptor();
-@@ -485,8 +162,8 @@ bool WireFormat::ParseAndMergeField(
- }
-
- if (value_format == UNKNOWN) {
-- return SkipField(input, tag,
-- message_reflection->MutableUnknownFields(message));
-+ return WireFormatLite::SkipField(
-+ input, tag, message_reflection->MutableUnknownFields(message));
- } else if (value_format == PACKED_FORMAT) {
- uint32 length;
- if (!input->ReadVarint32(&length)) return false;
-@@ -763,7 +440,7 @@ bool WireFormat::ParseAndMergeMessageSetItem(
- }
-
- default: {
-- if (!SkipField(input, tag, NULL)) return false;
-+ if (!WireFormatLite::SkipField(input, tag)) return false;
- }
- }
- }
-@@ -785,10 +462,10 @@ void WireFormat::SerializeWithCachedSizes(
- }
-
- if (descriptor->options().message_set_wire_format()) {
-- SerializeUnknownMessageSetItems(
-+ WireFormatLite::SerializeUnknownMessageSetItems(
- message_reflection->GetUnknownFields(message), output);
- } else {
-- SerializeUnknownFields(
-+ WireFormatLite::SerializeUnknownFields(
- message_reflection->GetUnknownFields(message), output);
- }
-
-@@ -956,10 +633,10 @@ int WireFormat::ByteSize(const Message& message) {
- }
-
- if (descriptor->options().message_set_wire_format()) {
-- our_size += ComputeUnknownMessageSetItemsSize(
-+ our_size += WireFormatLite::ComputeUnknownMessageSetItemsSize(
- message_reflection->GetUnknownFields(message));
- } else {
-- our_size += ComputeUnknownFieldsSize(
-+ our_size += WireFormatLite::ComputeUnknownFieldsSize(
- message_reflection->GetUnknownFields(message));
- }
-
-diff --git a/third_party/protobuf/src/google/protobuf/wire_format.h b/third_party/protobuf/src/google/protobuf/wire_format.h
-index 84270fe..860db13 100644
---- a/third_party/protobuf/src/google/protobuf/wire_format.h
-+++ b/third_party/protobuf/src/google/protobuf/wire_format.h
-@@ -57,7 +57,6 @@ namespace protobuf {
- class CodedInputStream; // coded_stream.h
- class CodedOutputStream; // coded_stream.h
- }
-- class UnknownFieldSet; // unknown_field_set.h
- }
-
- namespace protobuf {
-@@ -124,62 +123,6 @@ class LIBPROTOBUF_EXPORT WireFormat {
- // WireFormat::SerializeWithCachedSizes() on the same object.
- static int ByteSize(const Message& message);
-
-- // -----------------------------------------------------------------
-- // Helpers for dealing with unknown fields
--
-- // Skips a field value of the given WireType. The input should start
-- // positioned immediately after the tag. If unknown_fields is non-NULL,
-- // the contents of the field will be added to it.
-- static bool SkipField(io::CodedInputStream* input, uint32 tag,
-- UnknownFieldSet* unknown_fields);
--
-- // Reads and ignores a message from the input. If unknown_fields is non-NULL,
-- // the contents will be added to it.
-- static bool SkipMessage(io::CodedInputStream* input,
-- UnknownFieldSet* unknown_fields);
--
-- // Read a packed enum field. If the is_valid function is not NULL, values for
-- // which is_valid(value) returns false are appended to unknown_fields_stream.
-- static bool ReadPackedEnumPreserveUnknowns(io::CodedInputStream* input,
-- uint32 field_number,
-- bool (*is_valid)(int),
-- UnknownFieldSet* unknown_fields,
-- RepeatedField<int>* values);
--
-- // Write the contents of an UnknownFieldSet to the output.
-- static void SerializeUnknownFields(const UnknownFieldSet& unknown_fields,
-- io::CodedOutputStream* output);
-- // Same as above, except writing directly to the provided buffer.
-- // Requires that the buffer have sufficient capacity for
-- // ComputeUnknownFieldsSize(unknown_fields).
-- //
-- // Returns a pointer past the last written byte.
-- static uint8* SerializeUnknownFieldsToArray(
-- const UnknownFieldSet& unknown_fields,
-- uint8* target);
--
-- // Same thing except for messages that have the message_set_wire_format
-- // option.
-- static void SerializeUnknownMessageSetItems(
-- const UnknownFieldSet& unknown_fields,
-- io::CodedOutputStream* output);
-- // Same as above, except writing directly to the provided buffer.
-- // Requires that the buffer have sufficient capacity for
-- // ComputeUnknownMessageSetItemsSize(unknown_fields).
-- //
-- // Returns a pointer past the last written byte.
-- static uint8* SerializeUnknownMessageSetItemsToArray(
-- const UnknownFieldSet& unknown_fields,
-- uint8* target);
--
-- // Compute the size of the UnknownFieldSet on the wire.
-- static int ComputeUnknownFieldsSize(const UnknownFieldSet& unknown_fields);
--
-- // Same thing except for messages that have the message_set_wire_format
-- // option.
-- static int ComputeUnknownMessageSetItemsSize(
-- const UnknownFieldSet& unknown_fields);
--
-
- // Helper functions for encoding and decoding tags. (Inlined below and in
- // _inl.h)
-@@ -270,22 +213,6 @@ class LIBPROTOBUF_EXPORT WireFormat {
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(WireFormat);
- };
-
--// Subclass of FieldSkipper which saves skipped fields to an UnknownFieldSet.
--class LIBPROTOBUF_EXPORT UnknownFieldSetFieldSkipper : public FieldSkipper {
-- public:
-- UnknownFieldSetFieldSkipper(UnknownFieldSet* unknown_fields)
-- : unknown_fields_(unknown_fields) {}
-- virtual ~UnknownFieldSetFieldSkipper() {}
--
-- // implements FieldSkipper -----------------------------------------
-- virtual bool SkipField(io::CodedInputStream* input, uint32 tag);
-- virtual bool SkipMessage(io::CodedInputStream* input);
-- virtual void SkipUnknownEnum(int field_number, int value);
--
-- protected:
-- UnknownFieldSet* unknown_fields_;
--};
--
- // inline methods ====================================================
-
- inline WireFormatLite::WireType WireFormat::WireTypeForField(
-diff --git a/third_party/protobuf/src/google/protobuf/wire_format_lite.cc b/third_party/protobuf/src/google/protobuf/wire_format_lite.cc
-index 2ce4920..58160c1f 100644
---- a/third_party/protobuf/src/google/protobuf/wire_format_lite.cc
-+++ b/third_party/protobuf/src/google/protobuf/wire_format_lite.cc
-@@ -55,6 +55,24 @@ const int WireFormatLite::kMessageSetMessageTag;
-
- #endif
-
-+// ===================================================================
-+
-+bool FieldSkipper::SkipField(
-+ io::CodedInputStream* input, uint32 tag) {
-+ return WireFormatLite::SkipField(input, tag, unknown_fields_);
-+}
-+
-+bool FieldSkipper::SkipMessage(io::CodedInputStream* input) {
-+ return WireFormatLite::SkipMessage(input, unknown_fields_);
-+}
-+
-+void FieldSkipper::SkipUnknownEnum(
-+ int field_number, int value) {
-+ unknown_fields_->AddVarint(field_number, value);
-+}
-+
-+// ===================================================================
-+
- // IBM xlC requires prefixing constants with WireFormatLite::
- const int WireFormatLite::kMessageSetItemTagsSize =
- io::CodedOutputStream::StaticVarintSize32<
-@@ -113,28 +131,46 @@ WireFormatLite::kWireTypeForFieldType[MAX_FIELD_TYPE + 1] = {
- WireFormatLite::WIRETYPE_VARINT, // TYPE_SINT64
- };
-
--bool WireFormatLite::SkipField(
-- io::CodedInputStream* input, uint32 tag) {
-+bool WireFormatLite::SkipField(io::CodedInputStream* input, uint32 tag) {
-+ return SkipField(input, tag, static_cast<UnknownFieldSet*>(NULL));
-+}
-+
-+bool WireFormatLite::SkipField(io::CodedInputStream* input, uint32 tag,
-+ UnknownFieldSet* unknown_fields) {
-+ int number = WireFormatLite::GetTagFieldNumber(tag);
-+
- switch (WireFormatLite::GetTagWireType(tag)) {
- case WireFormatLite::WIRETYPE_VARINT: {
- uint64 value;
- if (!input->ReadVarint64(&value)) return false;
-+ if (unknown_fields != NULL) unknown_fields->AddVarint(number, value);
- return true;
- }
- case WireFormatLite::WIRETYPE_FIXED64: {
- uint64 value;
- if (!input->ReadLittleEndian64(&value)) return false;
-+ if (unknown_fields != NULL) unknown_fields->AddFixed64(number, value);
- return true;
- }
- case WireFormatLite::WIRETYPE_LENGTH_DELIMITED: {
- uint32 length;
- if (!input->ReadVarint32(&length)) return false;
-- if (!input->Skip(length)) return false;
-+ if (unknown_fields == NULL) {
-+ if (!input->Skip(length)) return false;
-+ } else {
-+ if (!input->ReadString(unknown_fields->AddLengthDelimited(number),
-+ length)) {
-+ return false;
-+ }
-+ }
- return true;
- }
- case WireFormatLite::WIRETYPE_START_GROUP: {
- if (!input->IncrementRecursionDepth()) return false;
-- if (!SkipMessage(input)) return false;
-+ if (!SkipMessage(input, (unknown_fields == NULL) ?
-+ NULL : unknown_fields->AddGroup(number))) {
-+ return false;
-+ }
- input->DecrementRecursionDepth();
- // Check that the ending tag matched the starting tag.
- if (!input->LastTagWas(WireFormatLite::MakeTag(
-@@ -150,6 +186,7 @@ bool WireFormatLite::SkipField(
- case WireFormatLite::WIRETYPE_FIXED32: {
- uint32 value;
- if (!input->ReadLittleEndian32(&value)) return false;
-+ if (unknown_fields != NULL) unknown_fields->AddFixed32(number, value);
- return true;
- }
- default: {
-@@ -215,7 +252,8 @@ bool WireFormatLite::SkipField(
- }
- }
-
--bool WireFormatLite::SkipMessage(io::CodedInputStream* input) {
-+bool WireFormatLite::SkipMessage(io::CodedInputStream* input,
-+ UnknownFieldSet* unknown_fields) {
- while (true) {
- uint32 tag = input->ReadTag();
- if (tag == 0) {
-@@ -230,7 +268,7 @@ bool WireFormatLite::SkipMessage(io::CodedInputStream* input) {
- return true;
- }
-
-- if (!SkipField(input, tag)) return false;
-+ if (!SkipField(input, tag, unknown_fields)) return false;
- }
- }
-
-@@ -255,18 +293,231 @@ bool WireFormatLite::SkipMessage(io::CodedInputStream* input,
- }
- }
-
--bool FieldSkipper::SkipField(
-- io::CodedInputStream* input, uint32 tag) {
-- return WireFormatLite::SkipField(input, tag);
-+bool WireFormatLite::ReadPackedEnumPreserveUnknowns(
-+ io::CodedInputStream* input,
-+ uint32 field_number,
-+ bool (*is_valid)(int),
-+ UnknownFieldSet* unknown_fields,
-+ RepeatedField<int>* values) {
-+ uint32 length;
-+ if (!input->ReadVarint32(&length)) return false;
-+ io::CodedInputStream::Limit limit = input->PushLimit(length);
-+ while (input->BytesUntilLimit() > 0) {
-+ int value;
-+ if (!google::protobuf::internal::WireFormatLite::ReadPrimitive<
-+ int, WireFormatLite::TYPE_ENUM>(input, &value)) {
-+ return false;
-+ }
-+ if (is_valid == NULL || is_valid(value)) {
-+ values->Add(value);
-+ } else {
-+ unknown_fields->AddVarint(field_number, value);
-+ }
-+ }
-+ input->PopLimit(limit);
-+ return true;
- }
-
--bool FieldSkipper::SkipMessage(io::CodedInputStream* input) {
-- return WireFormatLite::SkipMessage(input);
-+
-+void WireFormatLite::SerializeUnknownFields(
-+ const UnknownFieldSet& unknown_fields,
-+ io::CodedOutputStream* output) {
-+ for (int i = 0; i < unknown_fields.field_count(); i++) {
-+ const UnknownField& field = unknown_fields.field(i);
-+ switch (field.type()) {
-+ case UnknownField::TYPE_VARINT:
-+ output->WriteVarint32(WireFormatLite::MakeTag(field.number(),
-+ WireFormatLite::WIRETYPE_VARINT));
-+ output->WriteVarint64(field.varint());
-+ break;
-+ case UnknownField::TYPE_FIXED32:
-+ output->WriteVarint32(WireFormatLite::MakeTag(field.number(),
-+ WireFormatLite::WIRETYPE_FIXED32));
-+ output->WriteLittleEndian32(field.fixed32());
-+ break;
-+ case UnknownField::TYPE_FIXED64:
-+ output->WriteVarint32(WireFormatLite::MakeTag(field.number(),
-+ WireFormatLite::WIRETYPE_FIXED64));
-+ output->WriteLittleEndian64(field.fixed64());
-+ break;
-+ case UnknownField::TYPE_LENGTH_DELIMITED:
-+ output->WriteVarint32(WireFormatLite::MakeTag(field.number(),
-+ WireFormatLite::WIRETYPE_LENGTH_DELIMITED));
-+ output->WriteVarint32(field.length_delimited().size());
-+ output->WriteRawMaybeAliased(field.length_delimited().data(),
-+ field.length_delimited().size());
-+ break;
-+ case UnknownField::TYPE_GROUP:
-+ output->WriteVarint32(WireFormatLite::MakeTag(field.number(),
-+ WireFormatLite::WIRETYPE_START_GROUP));
-+ SerializeUnknownFields(field.group(), output);
-+ output->WriteVarint32(WireFormatLite::MakeTag(field.number(),
-+ WireFormatLite::WIRETYPE_END_GROUP));
-+ break;
-+ }
-+ }
- }
-
--void FieldSkipper::SkipUnknownEnum(
-- int /* field_number */, int /* value */) {
-- // Nothing.
-+uint8* WireFormatLite::SerializeUnknownFieldsToArray(
-+ const UnknownFieldSet& unknown_fields,
-+ uint8* target) {
-+ for (int i = 0; i < unknown_fields.field_count(); i++) {
-+ const UnknownField& field = unknown_fields.field(i);
-+
-+ switch (field.type()) {
-+ case UnknownField::TYPE_VARINT:
-+ target = WireFormatLite::WriteInt64ToArray(
-+ field.number(), field.varint(), target);
-+ break;
-+ case UnknownField::TYPE_FIXED32:
-+ target = WireFormatLite::WriteFixed32ToArray(
-+ field.number(), field.fixed32(), target);
-+ break;
-+ case UnknownField::TYPE_FIXED64:
-+ target = WireFormatLite::WriteFixed64ToArray(
-+ field.number(), field.fixed64(), target);
-+ break;
-+ case UnknownField::TYPE_LENGTH_DELIMITED:
-+ target = WireFormatLite::WriteBytesToArray(
-+ field.number(), field.length_delimited(), target);
-+ break;
-+ case UnknownField::TYPE_GROUP:
-+ target = WireFormatLite::WriteTagToArray(
-+ field.number(), WireFormatLite::WIRETYPE_START_GROUP, target);
-+ target = SerializeUnknownFieldsToArray(field.group(), target);
-+ target = WireFormatLite::WriteTagToArray(
-+ field.number(), WireFormatLite::WIRETYPE_END_GROUP, target);
-+ break;
-+ }
-+ }
-+ return target;
-+}
-+
-+void WireFormatLite::SerializeUnknownMessageSetItems(
-+ const UnknownFieldSet& unknown_fields,
-+ io::CodedOutputStream* output) {
-+ for (int i = 0; i < unknown_fields.field_count(); i++) {
-+ const UnknownField& field = unknown_fields.field(i);
-+ // The only unknown fields that are allowed to exist in a MessageSet are
-+ // messages, which are length-delimited.
-+ if (field.type() == UnknownField::TYPE_LENGTH_DELIMITED) {
-+ // Start group.
-+ output->WriteVarint32(WireFormatLite::kMessageSetItemStartTag);
-+
-+ // Write type ID.
-+ output->WriteVarint32(WireFormatLite::kMessageSetTypeIdTag);
-+ output->WriteVarint32(field.number());
-+
-+ // Write message.
-+ output->WriteVarint32(WireFormatLite::kMessageSetMessageTag);
-+ field.SerializeLengthDelimitedNoTag(output);
-+
-+ // End group.
-+ output->WriteVarint32(WireFormatLite::kMessageSetItemEndTag);
-+ }
-+ }
-+}
-+
-+uint8* WireFormatLite::SerializeUnknownMessageSetItemsToArray(
-+ const UnknownFieldSet& unknown_fields,
-+ uint8* target) {
-+ for (int i = 0; i < unknown_fields.field_count(); i++) {
-+ const UnknownField& field = unknown_fields.field(i);
-+
-+ // The only unknown fields that are allowed to exist in a MessageSet are
-+ // messages, which are length-delimited.
-+ if (field.type() == UnknownField::TYPE_LENGTH_DELIMITED) {
-+ // Start group.
-+ target = io::CodedOutputStream::WriteTagToArray(
-+ WireFormatLite::kMessageSetItemStartTag, target);
-+
-+ // Write type ID.
-+ target = io::CodedOutputStream::WriteTagToArray(
-+ WireFormatLite::kMessageSetTypeIdTag, target);
-+ target = io::CodedOutputStream::WriteVarint32ToArray(
-+ field.number(), target);
-+
-+ // Write message.
-+ target = io::CodedOutputStream::WriteTagToArray(
-+ WireFormatLite::kMessageSetMessageTag, target);
-+ target = field.SerializeLengthDelimitedNoTagToArray(target);
-+
-+ // End group.
-+ target = io::CodedOutputStream::WriteTagToArray(
-+ WireFormatLite::kMessageSetItemEndTag, target);
-+ }
-+ }
-+
-+ return target;
-+}
-+
-+int WireFormatLite::ComputeUnknownFieldsSize(
-+ const UnknownFieldSet& unknown_fields) {
-+ int size = 0;
-+ for (int i = 0; i < unknown_fields.field_count(); i++) {
-+ const UnknownField& field = unknown_fields.field(i);
-+
-+ switch (field.type()) {
-+ case UnknownField::TYPE_VARINT:
-+ size += io::CodedOutputStream::VarintSize32(
-+ WireFormatLite::MakeTag(field.number(),
-+ WireFormatLite::WIRETYPE_VARINT));
-+ size += io::CodedOutputStream::VarintSize64(field.varint());
-+ break;
-+ case UnknownField::TYPE_FIXED32:
-+ size += io::CodedOutputStream::VarintSize32(
-+ WireFormatLite::MakeTag(field.number(),
-+ WireFormatLite::WIRETYPE_FIXED32));
-+ size += sizeof(int32);
-+ break;
-+ case UnknownField::TYPE_FIXED64:
-+ size += io::CodedOutputStream::VarintSize32(
-+ WireFormatLite::MakeTag(field.number(),
-+ WireFormatLite::WIRETYPE_FIXED64));
-+ size += sizeof(int64);
-+ break;
-+ case UnknownField::TYPE_LENGTH_DELIMITED:
-+ size += io::CodedOutputStream::VarintSize32(
-+ WireFormatLite::MakeTag(field.number(),
-+ WireFormatLite::WIRETYPE_LENGTH_DELIMITED));
-+ size += io::CodedOutputStream::VarintSize32(
-+ field.length_delimited().size());
-+ size += field.length_delimited().size();
-+ break;
-+ case UnknownField::TYPE_GROUP:
-+ size += io::CodedOutputStream::VarintSize32(
-+ WireFormatLite::MakeTag(field.number(),
-+ WireFormatLite::WIRETYPE_START_GROUP));
-+ size += ComputeUnknownFieldsSize(field.group());
-+ size += io::CodedOutputStream::VarintSize32(
-+ WireFormatLite::MakeTag(field.number(),
-+ WireFormatLite::WIRETYPE_END_GROUP));
-+ break;
-+ }
-+ }
-+
-+ return size;
-+}
-+
-+int WireFormatLite::ComputeUnknownMessageSetItemsSize(
-+ const UnknownFieldSet& unknown_fields) {
-+ int size = 0;
-+ for (int i = 0; i < unknown_fields.field_count(); i++) {
-+ const UnknownField& field = unknown_fields.field(i);
-+
-+ // The only unknown fields that are allowed to exist in a MessageSet are
-+ // messages, which are length-delimited.
-+ if (field.type() == UnknownField::TYPE_LENGTH_DELIMITED) {
-+ size += WireFormatLite::kMessageSetItemTagsSize;
-+ size += io::CodedOutputStream::VarintSize32(field.number());
-+
-+ int field_size = field.GetLengthDelimitedSize();
-+ size += io::CodedOutputStream::VarintSize32(field_size);
-+ size += field_size;
-+ }
-+ }
-+
-+ return size;
- }
-
- bool CodedOutputStreamFieldSkipper::SkipField(
-diff --git a/third_party/protobuf/src/google/protobuf/wire_format_lite.h b/third_party/protobuf/src/google/protobuf/wire_format_lite.h
-index ac83abd..9f922fd 100644
---- a/third_party/protobuf/src/google/protobuf/wire_format_lite.h
-+++ b/third_party/protobuf/src/google/protobuf/wire_format_lite.h
-@@ -44,11 +44,13 @@
- #include <google/protobuf/stubs/common.h>
- #include <google/protobuf/message_lite.h>
- #include <google/protobuf/io/coded_stream.h> // for CodedOutputStream::Varint32Size
-+#include <google/protobuf/unknown_field_set.h>
-
- namespace google {
-
- namespace protobuf {
- template <typename T> class RepeatedField; // repeated_field.h
-+ class UnknownFieldSet; // unknown_field_set.h
- }
-
- namespace protobuf {
-@@ -157,21 +159,33 @@ class LIBPROTOBUF_EXPORT WireFormatLite {
- // and end tags.
- static inline int TagSize(int field_number, WireFormatLite::FieldType type);
-
-+ // -----------------------------------------------------------------
-+ // Helpers for dealing with unknown fields
-+
- // Skips a field value with the given tag. The input should start
- // positioned immediately after the tag. Skipped values are simply discarded,
-- // not recorded anywhere. See WireFormat::SkipField() for a version that
-- // records to an UnknownFieldSet.
-+ // not recorded anywhere.
- static bool SkipField(io::CodedInputStream* input, uint32 tag);
-
- // Skips a field value with the given tag. The input should start
-+ // positioned immediately after the tag. If unknown_fields is non-NULL,
-+ // the contents of the field will be added to it.
-+ static bool SkipField(io::CodedInputStream* input, uint32 tag,
-+ UnknownFieldSet* unknown_fields);
-+
-+ // Skips a field value with the given tag. The input should start
- // positioned immediately after the tag. Skipped values are recorded to a
- // CodedOutputStream.
- static bool SkipField(io::CodedInputStream* input, uint32 tag,
- io::CodedOutputStream* output);
-
-- // Reads and ignores a message from the input. Skipped values are simply
-- // discarded, not recorded anywhere. See WireFormat::SkipMessage() for a
-- // version that records to an UnknownFieldSet.
-+ // Reads and ignores a message from the input. If unknown_fields is non-NULL,
-+ // the contents will be added to it.
-+ static bool SkipMessage(io::CodedInputStream* input,
-+ UnknownFieldSet* unknown_fields);
-+
-+ // Reads and ignores a message from the input. Skipped values may be stored
-+ // in the UnknownFieldSet if it exists.
- static bool SkipMessage(io::CodedInputStream* input);
-
- // Reads and ignores a message from the input. Skipped values are recorded
-@@ -233,6 +247,48 @@ class LIBPROTOBUF_EXPORT WireFormatLite {
- static uint64 ZigZagEncode64(int64 n);
- static int64 ZigZagDecode64(uint64 n);
-
-+ // Read a packed enum field. If the is_valid function is not NULL, values for
-+ // which is_valid(value) returns false are appended to unknown_fields_stream.
-+ static bool ReadPackedEnumPreserveUnknowns(io::CodedInputStream* input,
-+ uint32 field_number,
-+ bool (*is_valid)(int),
-+ UnknownFieldSet* unknown_fields,
-+ RepeatedField<int>* values);
-+
-+ // Write the contents of an UnknownFieldSet to the output.
-+ static void SerializeUnknownFields(const UnknownFieldSet& unknown_fields,
-+ io::CodedOutputStream* output);
-+ // Same as above, except writing directly to the provided buffer.
-+ // Requires that the buffer have sufficient capacity for
-+ // ComputeUnknownFieldsSize(unknown_fields).
-+ //
-+ // Returns a pointer past the last written byte.
-+ static uint8* SerializeUnknownFieldsToArray(
-+ const UnknownFieldSet& unknown_fields,
-+ uint8* target);
-+
-+ // Same thing except for messages that have the message_set_wire_format
-+ // option.
-+ static void SerializeUnknownMessageSetItems(
-+ const UnknownFieldSet& unknown_fields,
-+ io::CodedOutputStream* output);
-+ // Same as above, except writing directly to the provided buffer.
-+ // Requires that the buffer have sufficient capacity for
-+ // ComputeUnknownMessageSetItemsSize(unknown_fields).
-+ //
-+ // Returns a pointer past the last written byte.
-+ static uint8* SerializeUnknownMessageSetItemsToArray(
-+ const UnknownFieldSet& unknown_fields,
-+ uint8* target);
-+
-+ // Compute the size of the UnknownFieldSet on the wire.
-+ static int ComputeUnknownFieldsSize(const UnknownFieldSet& unknown_fields);
-+
-+ // Same thing except for messages that have the message_set_wire_format
-+ // option.
-+ static int ComputeUnknownMessageSetItemsSize(
-+ const UnknownFieldSet& unknown_fields);
-+
- // =================================================================
- // Methods for reading/writing individual field. The implementations
- // of these methods are defined in wire_format_lite_inl.h; you must #include
-@@ -546,26 +602,26 @@ class LIBPROTOBUF_EXPORT WireFormatLite {
- GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(WireFormatLite);
- };
-
--// A class which deals with unknown values. The default implementation just
--// discards them. WireFormat defines a subclass which writes to an
--// UnknownFieldSet. This class is used by ExtensionSet::ParseField(), since
--// ExtensionSet is part of the lite library but UnknownFieldSet is not.
-+// A class which deals with unknown values by saving them to an UnknownFieldSet.
- class LIBPROTOBUF_EXPORT FieldSkipper {
- public:
-- FieldSkipper() {}
-- virtual ~FieldSkipper() {}
-+ FieldSkipper(UnknownFieldSet* unknown_fields)
-+ : unknown_fields_(unknown_fields) {}
-
- // Skip a field whose tag has already been consumed.
-- virtual bool SkipField(io::CodedInputStream* input, uint32 tag);
-+ bool SkipField(io::CodedInputStream* input, uint32 tag);
-
- // Skip an entire message or group, up to an end-group tag (which is consumed)
- // or end-of-stream.
-- virtual bool SkipMessage(io::CodedInputStream* input);
-+ bool SkipMessage(io::CodedInputStream* input);
-
- // Deal with an already-parsed unrecognized enum value. The default
- // implementation does nothing, but the UnknownFieldSet-based implementation
- // saves it as an unknown varint.
-- virtual void SkipUnknownEnum(int field_number, int value);
-+ void SkipUnknownEnum(int field_number, int value);
-+
-+ private:
-+ UnknownFieldSet* unknown_fields_;
- };
-
- // Subclass of FieldSkipper which saves skipped fields to a CodedOutputStream.
-@@ -573,7 +629,7 @@ class LIBPROTOBUF_EXPORT FieldSkipper {
- class LIBPROTOBUF_EXPORT CodedOutputStreamFieldSkipper : public FieldSkipper {
- public:
- explicit CodedOutputStreamFieldSkipper(io::CodedOutputStream* unknown_fields)
-- : unknown_fields_(unknown_fields) {}
-+ : FieldSkipper(nullptr), unknown_fields_(unknown_fields) {}
- virtual ~CodedOutputStreamFieldSkipper() {}
-
- // implements FieldSkipper -----------------------------------------
« no previous file with comments | « third_party/protobuf/patches/01_build_fixes.patch ('k') | third_party/protobuf/patches/03_componentize_protobuf_lite.patch » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698