// Generated by the protocol buffer compiler.  DO NOT EDIT!

#define INTERNAL_SUPPRESS_PROTOBUF_FIELD_DEPRECATION
#include "csd.pb.h"

#include <algorithm>

#include <google/protobuf/stubs/once.h>
#include <google/protobuf/io/coded_stream.h>
#include <google/protobuf/wire_format_lite_inl.h>
// @@protoc_insertion_point(includes)

namespace safe_browsing {

void protobuf_ShutdownFile_csd_2eproto() {
  delete ClientPhishingRequest::default_instance_;
  delete ClientPhishingRequest_Feature::default_instance_;
  delete ClientPhishingResponse::default_instance_;
  delete ClientMalwareRequest::default_instance_;
  delete ClientMalwareRequest_Feature::default_instance_;
  delete ClientMalwareResponse::default_instance_;
  delete ClientDownloadRequest::default_instance_;
  delete ClientDownloadRequest_Digests::default_instance_;
  delete ClientDownloadRequest_Resource::default_instance_;
  delete ClientDownloadRequest_CertificateChain::default_instance_;
  delete ClientDownloadRequest_CertificateChain_Element::default_instance_;
  delete ClientDownloadRequest_SignatureInfo::default_instance_;
  delete ClientDownloadResponse::default_instance_;
  delete ClientDownloadResponse_MoreInfo::default_instance_;
  delete ClientDownloadReport::default_instance_;
  delete ClientDownloadReport_UserInformation::default_instance_;
  delete ClientUploadResponse::default_instance_;
}

void protobuf_AddDesc_csd_2eproto() {
  static bool already_here = false;
  if (already_here) return;
  already_here = true;
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  ClientPhishingRequest::default_instance_ = new ClientPhishingRequest();
  ClientPhishingRequest_Feature::default_instance_ = new ClientPhishingRequest_Feature();
  ClientPhishingResponse::default_instance_ = new ClientPhishingResponse();
  ClientMalwareRequest::default_instance_ = new ClientMalwareRequest();
  ClientMalwareRequest_Feature::default_instance_ = new ClientMalwareRequest_Feature();
  ClientMalwareResponse::default_instance_ = new ClientMalwareResponse();
  ClientDownloadRequest::default_instance_ = new ClientDownloadRequest();
  ClientDownloadRequest_Digests::default_instance_ = new ClientDownloadRequest_Digests();
  ClientDownloadRequest_Resource::default_instance_ = new ClientDownloadRequest_Resource();
  ClientDownloadRequest_CertificateChain::default_instance_ = new ClientDownloadRequest_CertificateChain();
  ClientDownloadRequest_CertificateChain_Element::default_instance_ = new ClientDownloadRequest_CertificateChain_Element();
  ClientDownloadRequest_SignatureInfo::default_instance_ = new ClientDownloadRequest_SignatureInfo();
  ClientDownloadResponse::default_instance_ = new ClientDownloadResponse();
  ClientDownloadResponse_MoreInfo::default_instance_ = new ClientDownloadResponse_MoreInfo();
  ClientDownloadReport::default_instance_ = new ClientDownloadReport();
  ClientDownloadReport_UserInformation::default_instance_ = new ClientDownloadReport_UserInformation();
  ClientUploadResponse::default_instance_ = new ClientUploadResponse();
  ClientPhishingRequest::default_instance_->InitAsDefaultInstance();
  ClientPhishingRequest_Feature::default_instance_->InitAsDefaultInstance();
  ClientPhishingResponse::default_instance_->InitAsDefaultInstance();
  ClientMalwareRequest::default_instance_->InitAsDefaultInstance();
  ClientMalwareRequest_Feature::default_instance_->InitAsDefaultInstance();
  ClientMalwareResponse::default_instance_->InitAsDefaultInstance();
  ClientDownloadRequest::default_instance_->InitAsDefaultInstance();
  ClientDownloadRequest_Digests::default_instance_->InitAsDefaultInstance();
  ClientDownloadRequest_Resource::default_instance_->InitAsDefaultInstance();
  ClientDownloadRequest_CertificateChain::default_instance_->InitAsDefaultInstance();
  ClientDownloadRequest_CertificateChain_Element::default_instance_->InitAsDefaultInstance();
  ClientDownloadRequest_SignatureInfo::default_instance_->InitAsDefaultInstance();
  ClientDownloadResponse::default_instance_->InitAsDefaultInstance();
  ClientDownloadResponse_MoreInfo::default_instance_->InitAsDefaultInstance();
  ClientDownloadReport::default_instance_->InitAsDefaultInstance();
  ClientDownloadReport_UserInformation::default_instance_->InitAsDefaultInstance();
  ClientUploadResponse::default_instance_->InitAsDefaultInstance();
  ::google::protobuf::internal::OnShutdown(&protobuf_ShutdownFile_csd_2eproto);
}

// Force AddDescriptors() to be called at static initialization time.
struct StaticDescriptorInitializer_csd_2eproto {
  StaticDescriptorInitializer_csd_2eproto() {
    protobuf_AddDesc_csd_2eproto();
  }
} static_descriptor_initializer_csd_2eproto_;


// ===================================================================

#ifndef _MSC_VER
const int ClientPhishingRequest_Feature::kNameFieldNumber;
const int ClientPhishingRequest_Feature::kValueFieldNumber;
#endif  // !_MSC_VER

ClientPhishingRequest_Feature::ClientPhishingRequest_Feature()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void ClientPhishingRequest_Feature::InitAsDefaultInstance() {
}

ClientPhishingRequest_Feature::ClientPhishingRequest_Feature(const ClientPhishingRequest_Feature& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void ClientPhishingRequest_Feature::SharedCtor() {
  _cached_size_ = 0;
  name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  value_ = 0;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

ClientPhishingRequest_Feature::~ClientPhishingRequest_Feature() {
  SharedDtor();
}

void ClientPhishingRequest_Feature::SharedDtor() {
  if (name_ != &::google::protobuf::internal::kEmptyString) {
    delete name_;
  }
  if (this != default_instance_) {
  }
}

void ClientPhishingRequest_Feature::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ClientPhishingRequest_Feature& ClientPhishingRequest_Feature::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_csd_2eproto();  return *default_instance_;
}

ClientPhishingRequest_Feature* ClientPhishingRequest_Feature::default_instance_ = NULL;

ClientPhishingRequest_Feature* ClientPhishingRequest_Feature::New() const {
  return new ClientPhishingRequest_Feature;
}

void ClientPhishingRequest_Feature::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_name()) {
      if (name_ != &::google::protobuf::internal::kEmptyString) {
        name_->clear();
      }
    }
    value_ = 0;
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool ClientPhishingRequest_Feature::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // required string name = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_name()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(17)) goto parse_value;
        break;
      }
      
      // required double value = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED64) {
         parse_value:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &value_)));
          set_has_value();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }
      
      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void ClientPhishingRequest_Feature::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // required string name = 1;
  if (has_name()) {
    ::google::protobuf::internal::WireFormatLite::WriteString(
      1, this->name(), output);
  }
  
  // required double value = 2;
  if (has_value()) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(2, this->value(), output);
  }
  
}

int ClientPhishingRequest_Feature::ByteSize() const {
  int total_size = 0;
  
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // required string name = 1;
    if (has_name()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->name());
    }
    
    // required double value = 2;
    if (has_value()) {
      total_size += 1 + 8;
    }
    
  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void ClientPhishingRequest_Feature::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const ClientPhishingRequest_Feature*>(&from));
}

void ClientPhishingRequest_Feature::MergeFrom(const ClientPhishingRequest_Feature& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_name()) {
      set_name(from.name());
    }
    if (from.has_value()) {
      set_value(from.value());
    }
  }
}

void ClientPhishingRequest_Feature::CopyFrom(const ClientPhishingRequest_Feature& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ClientPhishingRequest_Feature::IsInitialized() const {
  if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false;
  
  return true;
}

void ClientPhishingRequest_Feature::Swap(ClientPhishingRequest_Feature* other) {
  if (other != this) {
    std::swap(name_, other->name_);
    std::swap(value_, other->value_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string ClientPhishingRequest_Feature::GetTypeName() const {
  return "safe_browsing.ClientPhishingRequest.Feature";
}


// -------------------------------------------------------------------

#ifndef _MSC_VER
const int ClientPhishingRequest::kUrlFieldNumber;
const int ClientPhishingRequest::kOBSOLETEHashPrefixFieldNumber;
const int ClientPhishingRequest::kClientScoreFieldNumber;
const int ClientPhishingRequest::kIsPhishingFieldNumber;
const int ClientPhishingRequest::kFeatureMapFieldNumber;
const int ClientPhishingRequest::kModelVersionFieldNumber;
const int ClientPhishingRequest::kNonModelFeatureMapFieldNumber;
const int ClientPhishingRequest::kOBSOLETEReferrerUrlFieldNumber;
#endif  // !_MSC_VER

ClientPhishingRequest::ClientPhishingRequest()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void ClientPhishingRequest::InitAsDefaultInstance() {
}

ClientPhishingRequest::ClientPhishingRequest(const ClientPhishingRequest& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void ClientPhishingRequest::SharedCtor() {
  _cached_size_ = 0;
  url_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  obsolete_hash_prefix_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  client_score_ = 0;
  is_phishing_ = false;
  model_version_ = 0;
  obsolete_referrer_url_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

ClientPhishingRequest::~ClientPhishingRequest() {
  SharedDtor();
}

void ClientPhishingRequest::SharedDtor() {
  if (url_ != &::google::protobuf::internal::kEmptyString) {
    delete url_;
  }
  if (obsolete_hash_prefix_ != &::google::protobuf::internal::kEmptyString) {
    delete obsolete_hash_prefix_;
  }
  if (obsolete_referrer_url_ != &::google::protobuf::internal::kEmptyString) {
    delete obsolete_referrer_url_;
  }
  if (this != default_instance_) {
  }
}

void ClientPhishingRequest::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ClientPhishingRequest& ClientPhishingRequest::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_csd_2eproto();  return *default_instance_;
}

ClientPhishingRequest* ClientPhishingRequest::default_instance_ = NULL;

ClientPhishingRequest* ClientPhishingRequest::New() const {
  return new ClientPhishingRequest;
}

void ClientPhishingRequest::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_url()) {
      if (url_ != &::google::protobuf::internal::kEmptyString) {
        url_->clear();
      }
    }
    if (has_obsolete_hash_prefix()) {
      if (obsolete_hash_prefix_ != &::google::protobuf::internal::kEmptyString) {
        obsolete_hash_prefix_->clear();
      }
    }
    client_score_ = 0;
    is_phishing_ = false;
    model_version_ = 0;
    if (has_obsolete_referrer_url()) {
      if (obsolete_referrer_url_ != &::google::protobuf::internal::kEmptyString) {
        obsolete_referrer_url_->clear();
      }
    }
  }
  feature_map_.Clear();
  non_model_feature_map_.Clear();
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool ClientPhishingRequest::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional string url = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_url()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(21)) goto parse_client_score;
        break;
      }
      
      // required float client_score = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
         parse_client_score:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
                 input, &client_score_)));
          set_has_client_score();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(32)) goto parse_is_phishing;
        break;
      }
      
      // optional bool is_phishing = 4;
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_is_phishing:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &is_phishing_)));
          set_has_is_phishing();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(42)) goto parse_feature_map;
        break;
      }
      
      // repeated .safe_browsing.ClientPhishingRequest.Feature feature_map = 5;
      case 5: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_feature_map:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                input, add_feature_map()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(42)) goto parse_feature_map;
        if (input->ExpectTag(48)) goto parse_model_version;
        break;
      }
      
      // optional int32 model_version = 6;
      case 6: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_model_version:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
                 input, &model_version_)));
          set_has_model_version();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(66)) goto parse_non_model_feature_map;
        break;
      }
      
      // repeated .safe_browsing.ClientPhishingRequest.Feature non_model_feature_map = 8;
      case 8: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_non_model_feature_map:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                input, add_non_model_feature_map()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(66)) goto parse_non_model_feature_map;
        if (input->ExpectTag(74)) goto parse_OBSOLETE_referrer_url;
        break;
      }
      
      // optional string OBSOLETE_referrer_url = 9;
      case 9: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_OBSOLETE_referrer_url:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_obsolete_referrer_url()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(82)) goto parse_OBSOLETE_hash_prefix;
        break;
      }
      
      // optional bytes OBSOLETE_hash_prefix = 10;
      case 10: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_OBSOLETE_hash_prefix:
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_obsolete_hash_prefix()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }
      
      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void ClientPhishingRequest::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional string url = 1;
  if (has_url()) {
    ::google::protobuf::internal::WireFormatLite::WriteString(
      1, this->url(), output);
  }
  
  // required float client_score = 2;
  if (has_client_score()) {
    ::google::protobuf::internal::WireFormatLite::WriteFloat(2, this->client_score(), output);
  }
  
  // optional bool is_phishing = 4;
  if (has_is_phishing()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(4, this->is_phishing(), output);
  }
  
  // repeated .safe_browsing.ClientPhishingRequest.Feature feature_map = 5;
  for (int i = 0; i < this->feature_map_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      5, this->feature_map(i), output);
  }
  
  // optional int32 model_version = 6;
  if (has_model_version()) {
    ::google::protobuf::internal::WireFormatLite::WriteInt32(6, this->model_version(), output);
  }
  
  // repeated .safe_browsing.ClientPhishingRequest.Feature non_model_feature_map = 8;
  for (int i = 0; i < this->non_model_feature_map_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      8, this->non_model_feature_map(i), output);
  }
  
  // optional string OBSOLETE_referrer_url = 9;
  if (has_obsolete_referrer_url()) {
    ::google::protobuf::internal::WireFormatLite::WriteString(
      9, this->obsolete_referrer_url(), output);
  }
  
  // optional bytes OBSOLETE_hash_prefix = 10;
  if (has_obsolete_hash_prefix()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytes(
      10, this->obsolete_hash_prefix(), output);
  }
  
}

int ClientPhishingRequest::ByteSize() const {
  int total_size = 0;
  
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional string url = 1;
    if (has_url()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->url());
    }
    
    // optional bytes OBSOLETE_hash_prefix = 10;
    if (has_obsolete_hash_prefix()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->obsolete_hash_prefix());
    }
    
    // required float client_score = 2;
    if (has_client_score()) {
      total_size += 1 + 4;
    }
    
    // optional bool is_phishing = 4;
    if (has_is_phishing()) {
      total_size += 1 + 1;
    }
    
    // optional int32 model_version = 6;
    if (has_model_version()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::Int32Size(
          this->model_version());
    }
    
    // optional string OBSOLETE_referrer_url = 9;
    if (has_obsolete_referrer_url()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->obsolete_referrer_url());
    }
    
  }
  // repeated .safe_browsing.ClientPhishingRequest.Feature feature_map = 5;
  total_size += 1 * this->feature_map_size();
  for (int i = 0; i < this->feature_map_size(); i++) {
    total_size +=
      ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
        this->feature_map(i));
  }
  
  // repeated .safe_browsing.ClientPhishingRequest.Feature non_model_feature_map = 8;
  total_size += 1 * this->non_model_feature_map_size();
  for (int i = 0; i < this->non_model_feature_map_size(); i++) {
    total_size +=
      ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
        this->non_model_feature_map(i));
  }
  
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void ClientPhishingRequest::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const ClientPhishingRequest*>(&from));
}

void ClientPhishingRequest::MergeFrom(const ClientPhishingRequest& from) {
  GOOGLE_CHECK_NE(&from, this);
  feature_map_.MergeFrom(from.feature_map_);
  non_model_feature_map_.MergeFrom(from.non_model_feature_map_);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_url()) {
      set_url(from.url());
    }
    if (from.has_obsolete_hash_prefix()) {
      set_obsolete_hash_prefix(from.obsolete_hash_prefix());
    }
    if (from.has_client_score()) {
      set_client_score(from.client_score());
    }
    if (from.has_is_phishing()) {
      set_is_phishing(from.is_phishing());
    }
    if (from.has_model_version()) {
      set_model_version(from.model_version());
    }
    if (from.has_obsolete_referrer_url()) {
      set_obsolete_referrer_url(from.obsolete_referrer_url());
    }
  }
}

void ClientPhishingRequest::CopyFrom(const ClientPhishingRequest& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ClientPhishingRequest::IsInitialized() const {
  if ((_has_bits_[0] & 0x00000004) != 0x00000004) return false;
  
  for (int i = 0; i < feature_map_size(); i++) {
    if (!this->feature_map(i).IsInitialized()) return false;
  }
  for (int i = 0; i < non_model_feature_map_size(); i++) {
    if (!this->non_model_feature_map(i).IsInitialized()) return false;
  }
  return true;
}

void ClientPhishingRequest::Swap(ClientPhishingRequest* other) {
  if (other != this) {
    std::swap(url_, other->url_);
    std::swap(obsolete_hash_prefix_, other->obsolete_hash_prefix_);
    std::swap(client_score_, other->client_score_);
    std::swap(is_phishing_, other->is_phishing_);
    feature_map_.Swap(&other->feature_map_);
    std::swap(model_version_, other->model_version_);
    non_model_feature_map_.Swap(&other->non_model_feature_map_);
    std::swap(obsolete_referrer_url_, other->obsolete_referrer_url_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string ClientPhishingRequest::GetTypeName() const {
  return "safe_browsing.ClientPhishingRequest";
}


// ===================================================================

#ifndef _MSC_VER
const int ClientPhishingResponse::kPhishyFieldNumber;
const int ClientPhishingResponse::kOBSOLETEWhitelistExpressionFieldNumber;
#endif  // !_MSC_VER

ClientPhishingResponse::ClientPhishingResponse()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void ClientPhishingResponse::InitAsDefaultInstance() {
}

ClientPhishingResponse::ClientPhishingResponse(const ClientPhishingResponse& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void ClientPhishingResponse::SharedCtor() {
  _cached_size_ = 0;
  phishy_ = false;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

ClientPhishingResponse::~ClientPhishingResponse() {
  SharedDtor();
}

void ClientPhishingResponse::SharedDtor() {
  if (this != default_instance_) {
  }
}

void ClientPhishingResponse::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ClientPhishingResponse& ClientPhishingResponse::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_csd_2eproto();  return *default_instance_;
}

ClientPhishingResponse* ClientPhishingResponse::default_instance_ = NULL;

ClientPhishingResponse* ClientPhishingResponse::New() const {
  return new ClientPhishingResponse;
}

void ClientPhishingResponse::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    phishy_ = false;
  }
  obsolete_whitelist_expression_.Clear();
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool ClientPhishingResponse::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // required bool phishy = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &phishy_)));
          set_has_phishy();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_OBSOLETE_whitelist_expression;
        break;
      }
      
      // repeated string OBSOLETE_whitelist_expression = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_OBSOLETE_whitelist_expression:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->add_obsolete_whitelist_expression()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_OBSOLETE_whitelist_expression;
        if (input->ExpectAtEnd()) return true;
        break;
      }
      
      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void ClientPhishingResponse::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // required bool phishy = 1;
  if (has_phishy()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->phishy(), output);
  }
  
  // repeated string OBSOLETE_whitelist_expression = 2;
  for (int i = 0; i < this->obsolete_whitelist_expression_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteString(
      2, this->obsolete_whitelist_expression(i), output);
  }
  
}

int ClientPhishingResponse::ByteSize() const {
  int total_size = 0;
  
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // required bool phishy = 1;
    if (has_phishy()) {
      total_size += 1 + 1;
    }
    
  }
  // repeated string OBSOLETE_whitelist_expression = 2;
  total_size += 1 * this->obsolete_whitelist_expression_size();
  for (int i = 0; i < this->obsolete_whitelist_expression_size(); i++) {
    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
      this->obsolete_whitelist_expression(i));
  }
  
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void ClientPhishingResponse::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const ClientPhishingResponse*>(&from));
}

void ClientPhishingResponse::MergeFrom(const ClientPhishingResponse& from) {
  GOOGLE_CHECK_NE(&from, this);
  obsolete_whitelist_expression_.MergeFrom(from.obsolete_whitelist_expression_);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_phishy()) {
      set_phishy(from.phishy());
    }
  }
}

void ClientPhishingResponse::CopyFrom(const ClientPhishingResponse& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ClientPhishingResponse::IsInitialized() const {
  if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false;
  
  return true;
}

void ClientPhishingResponse::Swap(ClientPhishingResponse* other) {
  if (other != this) {
    std::swap(phishy_, other->phishy_);
    obsolete_whitelist_expression_.Swap(&other->obsolete_whitelist_expression_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string ClientPhishingResponse::GetTypeName() const {
  return "safe_browsing.ClientPhishingResponse";
}


// ===================================================================

#ifndef _MSC_VER
const int ClientMalwareRequest_Feature::kNameFieldNumber;
const int ClientMalwareRequest_Feature::kValueFieldNumber;
const int ClientMalwareRequest_Feature::kMetainfoFieldNumber;
#endif  // !_MSC_VER

ClientMalwareRequest_Feature::ClientMalwareRequest_Feature()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void ClientMalwareRequest_Feature::InitAsDefaultInstance() {
}

ClientMalwareRequest_Feature::ClientMalwareRequest_Feature(const ClientMalwareRequest_Feature& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void ClientMalwareRequest_Feature::SharedCtor() {
  _cached_size_ = 0;
  name_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  value_ = 0;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

ClientMalwareRequest_Feature::~ClientMalwareRequest_Feature() {
  SharedDtor();
}

void ClientMalwareRequest_Feature::SharedDtor() {
  if (name_ != &::google::protobuf::internal::kEmptyString) {
    delete name_;
  }
  if (this != default_instance_) {
  }
}

void ClientMalwareRequest_Feature::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ClientMalwareRequest_Feature& ClientMalwareRequest_Feature::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_csd_2eproto();  return *default_instance_;
}

ClientMalwareRequest_Feature* ClientMalwareRequest_Feature::default_instance_ = NULL;

ClientMalwareRequest_Feature* ClientMalwareRequest_Feature::New() const {
  return new ClientMalwareRequest_Feature;
}

void ClientMalwareRequest_Feature::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_name()) {
      if (name_ != &::google::protobuf::internal::kEmptyString) {
        name_->clear();
      }
    }
    value_ = 0;
  }
  metainfo_.Clear();
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool ClientMalwareRequest_Feature::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // required string name = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_name()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(17)) goto parse_value;
        break;
      }
      
      // required double value = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED64) {
         parse_value:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &value_)));
          set_has_value();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(26)) goto parse_metainfo;
        break;
      }
      
      // repeated string metainfo = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_metainfo:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->add_metainfo()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(26)) goto parse_metainfo;
        if (input->ExpectAtEnd()) return true;
        break;
      }
      
      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void ClientMalwareRequest_Feature::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // required string name = 1;
  if (has_name()) {
    ::google::protobuf::internal::WireFormatLite::WriteString(
      1, this->name(), output);
  }
  
  // required double value = 2;
  if (has_value()) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(2, this->value(), output);
  }
  
  // repeated string metainfo = 3;
  for (int i = 0; i < this->metainfo_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteString(
      3, this->metainfo(i), output);
  }
  
}

int ClientMalwareRequest_Feature::ByteSize() const {
  int total_size = 0;
  
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // required string name = 1;
    if (has_name()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->name());
    }
    
    // required double value = 2;
    if (has_value()) {
      total_size += 1 + 8;
    }
    
  }
  // repeated string metainfo = 3;
  total_size += 1 * this->metainfo_size();
  for (int i = 0; i < this->metainfo_size(); i++) {
    total_size += ::google::protobuf::internal::WireFormatLite::StringSize(
      this->metainfo(i));
  }
  
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void ClientMalwareRequest_Feature::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const ClientMalwareRequest_Feature*>(&from));
}

void ClientMalwareRequest_Feature::MergeFrom(const ClientMalwareRequest_Feature& from) {
  GOOGLE_CHECK_NE(&from, this);
  metainfo_.MergeFrom(from.metainfo_);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_name()) {
      set_name(from.name());
    }
    if (from.has_value()) {
      set_value(from.value());
    }
  }
}

void ClientMalwareRequest_Feature::CopyFrom(const ClientMalwareRequest_Feature& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ClientMalwareRequest_Feature::IsInitialized() const {
  if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false;
  
  return true;
}

void ClientMalwareRequest_Feature::Swap(ClientMalwareRequest_Feature* other) {
  if (other != this) {
    std::swap(name_, other->name_);
    std::swap(value_, other->value_);
    metainfo_.Swap(&other->metainfo_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string ClientMalwareRequest_Feature::GetTypeName() const {
  return "safe_browsing.ClientMalwareRequest.Feature";
}


// -------------------------------------------------------------------

#ifndef _MSC_VER
const int ClientMalwareRequest::kUrlFieldNumber;
const int ClientMalwareRequest::kFeatureMapFieldNumber;
const int ClientMalwareRequest::kReferrerUrlFieldNumber;
#endif  // !_MSC_VER

ClientMalwareRequest::ClientMalwareRequest()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void ClientMalwareRequest::InitAsDefaultInstance() {
}

ClientMalwareRequest::ClientMalwareRequest(const ClientMalwareRequest& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void ClientMalwareRequest::SharedCtor() {
  _cached_size_ = 0;
  url_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  referrer_url_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

ClientMalwareRequest::~ClientMalwareRequest() {
  SharedDtor();
}

void ClientMalwareRequest::SharedDtor() {
  if (url_ != &::google::protobuf::internal::kEmptyString) {
    delete url_;
  }
  if (referrer_url_ != &::google::protobuf::internal::kEmptyString) {
    delete referrer_url_;
  }
  if (this != default_instance_) {
  }
}

void ClientMalwareRequest::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ClientMalwareRequest& ClientMalwareRequest::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_csd_2eproto();  return *default_instance_;
}

ClientMalwareRequest* ClientMalwareRequest::default_instance_ = NULL;

ClientMalwareRequest* ClientMalwareRequest::New() const {
  return new ClientMalwareRequest;
}

void ClientMalwareRequest::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_url()) {
      if (url_ != &::google::protobuf::internal::kEmptyString) {
        url_->clear();
      }
    }
    if (has_referrer_url()) {
      if (referrer_url_ != &::google::protobuf::internal::kEmptyString) {
        referrer_url_->clear();
      }
    }
  }
  feature_map_.Clear();
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool ClientMalwareRequest::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // required string url = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_url()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_feature_map;
        break;
      }
      
      // repeated .safe_browsing.ClientMalwareRequest.Feature feature_map = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_feature_map:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                input, add_feature_map()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_feature_map;
        if (input->ExpectTag(34)) goto parse_referrer_url;
        break;
      }
      
      // optional string referrer_url = 4;
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_referrer_url:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_referrer_url()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }
      
      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void ClientMalwareRequest::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // required string url = 1;
  if (has_url()) {
    ::google::protobuf::internal::WireFormatLite::WriteString(
      1, this->url(), output);
  }
  
  // repeated .safe_browsing.ClientMalwareRequest.Feature feature_map = 2;
  for (int i = 0; i < this->feature_map_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      2, this->feature_map(i), output);
  }
  
  // optional string referrer_url = 4;
  if (has_referrer_url()) {
    ::google::protobuf::internal::WireFormatLite::WriteString(
      4, this->referrer_url(), output);
  }
  
}

int ClientMalwareRequest::ByteSize() const {
  int total_size = 0;
  
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // required string url = 1;
    if (has_url()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->url());
    }
    
    // optional string referrer_url = 4;
    if (has_referrer_url()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->referrer_url());
    }
    
  }
  // repeated .safe_browsing.ClientMalwareRequest.Feature feature_map = 2;
  total_size += 1 * this->feature_map_size();
  for (int i = 0; i < this->feature_map_size(); i++) {
    total_size +=
      ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
        this->feature_map(i));
  }
  
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void ClientMalwareRequest::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const ClientMalwareRequest*>(&from));
}

void ClientMalwareRequest::MergeFrom(const ClientMalwareRequest& from) {
  GOOGLE_CHECK_NE(&from, this);
  feature_map_.MergeFrom(from.feature_map_);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_url()) {
      set_url(from.url());
    }
    if (from.has_referrer_url()) {
      set_referrer_url(from.referrer_url());
    }
  }
}

void ClientMalwareRequest::CopyFrom(const ClientMalwareRequest& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ClientMalwareRequest::IsInitialized() const {
  if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false;
  
  for (int i = 0; i < feature_map_size(); i++) {
    if (!this->feature_map(i).IsInitialized()) return false;
  }
  return true;
}

void ClientMalwareRequest::Swap(ClientMalwareRequest* other) {
  if (other != this) {
    std::swap(url_, other->url_);
    feature_map_.Swap(&other->feature_map_);
    std::swap(referrer_url_, other->referrer_url_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string ClientMalwareRequest::GetTypeName() const {
  return "safe_browsing.ClientMalwareRequest";
}


// ===================================================================

#ifndef _MSC_VER
const int ClientMalwareResponse::kBlacklistFieldNumber;
const int ClientMalwareResponse::kBadIpFieldNumber;
#endif  // !_MSC_VER

ClientMalwareResponse::ClientMalwareResponse()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void ClientMalwareResponse::InitAsDefaultInstance() {
}

ClientMalwareResponse::ClientMalwareResponse(const ClientMalwareResponse& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void ClientMalwareResponse::SharedCtor() {
  _cached_size_ = 0;
  blacklist_ = false;
  bad_ip_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

ClientMalwareResponse::~ClientMalwareResponse() {
  SharedDtor();
}

void ClientMalwareResponse::SharedDtor() {
  if (bad_ip_ != &::google::protobuf::internal::kEmptyString) {
    delete bad_ip_;
  }
  if (this != default_instance_) {
  }
}

void ClientMalwareResponse::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ClientMalwareResponse& ClientMalwareResponse::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_csd_2eproto();  return *default_instance_;
}

ClientMalwareResponse* ClientMalwareResponse::default_instance_ = NULL;

ClientMalwareResponse* ClientMalwareResponse::New() const {
  return new ClientMalwareResponse;
}

void ClientMalwareResponse::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    blacklist_ = false;
    if (has_bad_ip()) {
      if (bad_ip_ != &::google::protobuf::internal::kEmptyString) {
        bad_ip_->clear();
      }
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool ClientMalwareResponse::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // required bool blacklist = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &blacklist_)));
          set_has_blacklist();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_bad_ip;
        break;
      }
      
      // optional string bad_ip = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_bad_ip:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_bad_ip()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }
      
      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void ClientMalwareResponse::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // required bool blacklist = 1;
  if (has_blacklist()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->blacklist(), output);
  }
  
  // optional string bad_ip = 2;
  if (has_bad_ip()) {
    ::google::protobuf::internal::WireFormatLite::WriteString(
      2, this->bad_ip(), output);
  }
  
}

int ClientMalwareResponse::ByteSize() const {
  int total_size = 0;
  
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // required bool blacklist = 1;
    if (has_blacklist()) {
      total_size += 1 + 1;
    }
    
    // optional string bad_ip = 2;
    if (has_bad_ip()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->bad_ip());
    }
    
  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void ClientMalwareResponse::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const ClientMalwareResponse*>(&from));
}

void ClientMalwareResponse::MergeFrom(const ClientMalwareResponse& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_blacklist()) {
      set_blacklist(from.blacklist());
    }
    if (from.has_bad_ip()) {
      set_bad_ip(from.bad_ip());
    }
  }
}

void ClientMalwareResponse::CopyFrom(const ClientMalwareResponse& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ClientMalwareResponse::IsInitialized() const {
  if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false;
  
  return true;
}

void ClientMalwareResponse::Swap(ClientMalwareResponse* other) {
  if (other != this) {
    std::swap(blacklist_, other->blacklist_);
    std::swap(bad_ip_, other->bad_ip_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string ClientMalwareResponse::GetTypeName() const {
  return "safe_browsing.ClientMalwareResponse";
}


// ===================================================================

bool ClientDownloadRequest_ResourceType_IsValid(int value) {
  switch(value) {
    case 0:
    case 1:
    case 2:
    case 3:
      return true;
    default:
      return false;
  }
}

#ifndef _MSC_VER
const ClientDownloadRequest_ResourceType ClientDownloadRequest::DOWNLOAD_URL;
const ClientDownloadRequest_ResourceType ClientDownloadRequest::DOWNLOAD_REDIRECT;
const ClientDownloadRequest_ResourceType ClientDownloadRequest::TAB_URL;
const ClientDownloadRequest_ResourceType ClientDownloadRequest::TAB_REDIRECT;
const ClientDownloadRequest_ResourceType ClientDownloadRequest::ResourceType_MIN;
const ClientDownloadRequest_ResourceType ClientDownloadRequest::ResourceType_MAX;
const int ClientDownloadRequest::ResourceType_ARRAYSIZE;
#endif  // _MSC_VER
bool ClientDownloadRequest_DownloadType_IsValid(int value) {
  switch(value) {
    case 0:
    case 1:
    case 2:
    case 3:
      return true;
    default:
      return false;
  }
}

#ifndef _MSC_VER
const ClientDownloadRequest_DownloadType ClientDownloadRequest::WIN_EXECUTABLE;
const ClientDownloadRequest_DownloadType ClientDownloadRequest::CHROME_EXTENSION;
const ClientDownloadRequest_DownloadType ClientDownloadRequest::ANDROID_APK;
const ClientDownloadRequest_DownloadType ClientDownloadRequest::ZIPPED_EXECUTABLE;
const ClientDownloadRequest_DownloadType ClientDownloadRequest::DownloadType_MIN;
const ClientDownloadRequest_DownloadType ClientDownloadRequest::DownloadType_MAX;
const int ClientDownloadRequest::DownloadType_ARRAYSIZE;
#endif  // _MSC_VER
#ifndef _MSC_VER
const int ClientDownloadRequest_Digests::kSha256FieldNumber;
const int ClientDownloadRequest_Digests::kSha1FieldNumber;
const int ClientDownloadRequest_Digests::kMd5FieldNumber;
#endif  // !_MSC_VER

ClientDownloadRequest_Digests::ClientDownloadRequest_Digests()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void ClientDownloadRequest_Digests::InitAsDefaultInstance() {
}

ClientDownloadRequest_Digests::ClientDownloadRequest_Digests(const ClientDownloadRequest_Digests& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void ClientDownloadRequest_Digests::SharedCtor() {
  _cached_size_ = 0;
  sha256_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  sha1_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  md5_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

ClientDownloadRequest_Digests::~ClientDownloadRequest_Digests() {
  SharedDtor();
}

void ClientDownloadRequest_Digests::SharedDtor() {
  if (sha256_ != &::google::protobuf::internal::kEmptyString) {
    delete sha256_;
  }
  if (sha1_ != &::google::protobuf::internal::kEmptyString) {
    delete sha1_;
  }
  if (md5_ != &::google::protobuf::internal::kEmptyString) {
    delete md5_;
  }
  if (this != default_instance_) {
  }
}

void ClientDownloadRequest_Digests::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ClientDownloadRequest_Digests& ClientDownloadRequest_Digests::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_csd_2eproto();  return *default_instance_;
}

ClientDownloadRequest_Digests* ClientDownloadRequest_Digests::default_instance_ = NULL;

ClientDownloadRequest_Digests* ClientDownloadRequest_Digests::New() const {
  return new ClientDownloadRequest_Digests;
}

void ClientDownloadRequest_Digests::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_sha256()) {
      if (sha256_ != &::google::protobuf::internal::kEmptyString) {
        sha256_->clear();
      }
    }
    if (has_sha1()) {
      if (sha1_ != &::google::protobuf::internal::kEmptyString) {
        sha1_->clear();
      }
    }
    if (has_md5()) {
      if (md5_ != &::google::protobuf::internal::kEmptyString) {
        md5_->clear();
      }
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool ClientDownloadRequest_Digests::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional bytes sha256 = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_sha256()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_sha1;
        break;
      }
      
      // optional bytes sha1 = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_sha1:
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_sha1()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(26)) goto parse_md5;
        break;
      }
      
      // optional bytes md5 = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_md5:
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_md5()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }
      
      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void ClientDownloadRequest_Digests::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional bytes sha256 = 1;
  if (has_sha256()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytes(
      1, this->sha256(), output);
  }
  
  // optional bytes sha1 = 2;
  if (has_sha1()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytes(
      2, this->sha1(), output);
  }
  
  // optional bytes md5 = 3;
  if (has_md5()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytes(
      3, this->md5(), output);
  }
  
}

int ClientDownloadRequest_Digests::ByteSize() const {
  int total_size = 0;
  
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional bytes sha256 = 1;
    if (has_sha256()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->sha256());
    }
    
    // optional bytes sha1 = 2;
    if (has_sha1()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->sha1());
    }
    
    // optional bytes md5 = 3;
    if (has_md5()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->md5());
    }
    
  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void ClientDownloadRequest_Digests::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const ClientDownloadRequest_Digests*>(&from));
}

void ClientDownloadRequest_Digests::MergeFrom(const ClientDownloadRequest_Digests& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_sha256()) {
      set_sha256(from.sha256());
    }
    if (from.has_sha1()) {
      set_sha1(from.sha1());
    }
    if (from.has_md5()) {
      set_md5(from.md5());
    }
  }
}

void ClientDownloadRequest_Digests::CopyFrom(const ClientDownloadRequest_Digests& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ClientDownloadRequest_Digests::IsInitialized() const {
  
  return true;
}

void ClientDownloadRequest_Digests::Swap(ClientDownloadRequest_Digests* other) {
  if (other != this) {
    std::swap(sha256_, other->sha256_);
    std::swap(sha1_, other->sha1_);
    std::swap(md5_, other->md5_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string ClientDownloadRequest_Digests::GetTypeName() const {
  return "safe_browsing.ClientDownloadRequest.Digests";
}


// -------------------------------------------------------------------

#ifndef _MSC_VER
const int ClientDownloadRequest_Resource::kUrlFieldNumber;
const int ClientDownloadRequest_Resource::kTypeFieldNumber;
const int ClientDownloadRequest_Resource::kRemoteIpFieldNumber;
const int ClientDownloadRequest_Resource::kReferrerFieldNumber;
#endif  // !_MSC_VER

ClientDownloadRequest_Resource::ClientDownloadRequest_Resource()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void ClientDownloadRequest_Resource::InitAsDefaultInstance() {
}

ClientDownloadRequest_Resource::ClientDownloadRequest_Resource(const ClientDownloadRequest_Resource& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void ClientDownloadRequest_Resource::SharedCtor() {
  _cached_size_ = 0;
  url_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  type_ = 0;
  remote_ip_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  referrer_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

ClientDownloadRequest_Resource::~ClientDownloadRequest_Resource() {
  SharedDtor();
}

void ClientDownloadRequest_Resource::SharedDtor() {
  if (url_ != &::google::protobuf::internal::kEmptyString) {
    delete url_;
  }
  if (remote_ip_ != &::google::protobuf::internal::kEmptyString) {
    delete remote_ip_;
  }
  if (referrer_ != &::google::protobuf::internal::kEmptyString) {
    delete referrer_;
  }
  if (this != default_instance_) {
  }
}

void ClientDownloadRequest_Resource::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ClientDownloadRequest_Resource& ClientDownloadRequest_Resource::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_csd_2eproto();  return *default_instance_;
}

ClientDownloadRequest_Resource* ClientDownloadRequest_Resource::default_instance_ = NULL;

ClientDownloadRequest_Resource* ClientDownloadRequest_Resource::New() const {
  return new ClientDownloadRequest_Resource;
}

void ClientDownloadRequest_Resource::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_url()) {
      if (url_ != &::google::protobuf::internal::kEmptyString) {
        url_->clear();
      }
    }
    type_ = 0;
    if (has_remote_ip()) {
      if (remote_ip_ != &::google::protobuf::internal::kEmptyString) {
        remote_ip_->clear();
      }
    }
    if (has_referrer()) {
      if (referrer_ != &::google::protobuf::internal::kEmptyString) {
        referrer_->clear();
      }
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool ClientDownloadRequest_Resource::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // required string url = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_url()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_type;
        break;
      }
      
      // required .safe_browsing.ClientDownloadRequest.ResourceType type = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_type:
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::safe_browsing::ClientDownloadRequest_ResourceType_IsValid(value)) {
            set_type(static_cast< ::safe_browsing::ClientDownloadRequest_ResourceType >(value));
          }
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(26)) goto parse_remote_ip;
        break;
      }
      
      // optional bytes remote_ip = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_remote_ip:
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_remote_ip()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(34)) goto parse_referrer;
        break;
      }
      
      // optional string referrer = 4;
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_referrer:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_referrer()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }
      
      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void ClientDownloadRequest_Resource::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // required string url = 1;
  if (has_url()) {
    ::google::protobuf::internal::WireFormatLite::WriteString(
      1, this->url(), output);
  }
  
  // required .safe_browsing.ClientDownloadRequest.ResourceType type = 2;
  if (has_type()) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      2, this->type(), output);
  }
  
  // optional bytes remote_ip = 3;
  if (has_remote_ip()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytes(
      3, this->remote_ip(), output);
  }
  
  // optional string referrer = 4;
  if (has_referrer()) {
    ::google::protobuf::internal::WireFormatLite::WriteString(
      4, this->referrer(), output);
  }
  
}

int ClientDownloadRequest_Resource::ByteSize() const {
  int total_size = 0;
  
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // required string url = 1;
    if (has_url()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->url());
    }
    
    // required .safe_browsing.ClientDownloadRequest.ResourceType type = 2;
    if (has_type()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->type());
    }
    
    // optional bytes remote_ip = 3;
    if (has_remote_ip()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->remote_ip());
    }
    
    // optional string referrer = 4;
    if (has_referrer()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->referrer());
    }
    
  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void ClientDownloadRequest_Resource::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const ClientDownloadRequest_Resource*>(&from));
}

void ClientDownloadRequest_Resource::MergeFrom(const ClientDownloadRequest_Resource& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_url()) {
      set_url(from.url());
    }
    if (from.has_type()) {
      set_type(from.type());
    }
    if (from.has_remote_ip()) {
      set_remote_ip(from.remote_ip());
    }
    if (from.has_referrer()) {
      set_referrer(from.referrer());
    }
  }
}

void ClientDownloadRequest_Resource::CopyFrom(const ClientDownloadRequest_Resource& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ClientDownloadRequest_Resource::IsInitialized() const {
  if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false;
  
  return true;
}

void ClientDownloadRequest_Resource::Swap(ClientDownloadRequest_Resource* other) {
  if (other != this) {
    std::swap(url_, other->url_);
    std::swap(type_, other->type_);
    std::swap(remote_ip_, other->remote_ip_);
    std::swap(referrer_, other->referrer_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string ClientDownloadRequest_Resource::GetTypeName() const {
  return "safe_browsing.ClientDownloadRequest.Resource";
}


// -------------------------------------------------------------------

#ifndef _MSC_VER
const int ClientDownloadRequest_CertificateChain_Element::kCertificateFieldNumber;
#endif  // !_MSC_VER

ClientDownloadRequest_CertificateChain_Element::ClientDownloadRequest_CertificateChain_Element()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void ClientDownloadRequest_CertificateChain_Element::InitAsDefaultInstance() {
}

ClientDownloadRequest_CertificateChain_Element::ClientDownloadRequest_CertificateChain_Element(const ClientDownloadRequest_CertificateChain_Element& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void ClientDownloadRequest_CertificateChain_Element::SharedCtor() {
  _cached_size_ = 0;
  certificate_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

ClientDownloadRequest_CertificateChain_Element::~ClientDownloadRequest_CertificateChain_Element() {
  SharedDtor();
}

void ClientDownloadRequest_CertificateChain_Element::SharedDtor() {
  if (certificate_ != &::google::protobuf::internal::kEmptyString) {
    delete certificate_;
  }
  if (this != default_instance_) {
  }
}

void ClientDownloadRequest_CertificateChain_Element::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ClientDownloadRequest_CertificateChain_Element& ClientDownloadRequest_CertificateChain_Element::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_csd_2eproto();  return *default_instance_;
}

ClientDownloadRequest_CertificateChain_Element* ClientDownloadRequest_CertificateChain_Element::default_instance_ = NULL;

ClientDownloadRequest_CertificateChain_Element* ClientDownloadRequest_CertificateChain_Element::New() const {
  return new ClientDownloadRequest_CertificateChain_Element;
}

void ClientDownloadRequest_CertificateChain_Element::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_certificate()) {
      if (certificate_ != &::google::protobuf::internal::kEmptyString) {
        certificate_->clear();
      }
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool ClientDownloadRequest_CertificateChain_Element::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional bytes certificate = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_certificate()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }
      
      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void ClientDownloadRequest_CertificateChain_Element::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional bytes certificate = 1;
  if (has_certificate()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytes(
      1, this->certificate(), output);
  }
  
}

int ClientDownloadRequest_CertificateChain_Element::ByteSize() const {
  int total_size = 0;
  
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional bytes certificate = 1;
    if (has_certificate()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->certificate());
    }
    
  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void ClientDownloadRequest_CertificateChain_Element::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const ClientDownloadRequest_CertificateChain_Element*>(&from));
}

void ClientDownloadRequest_CertificateChain_Element::MergeFrom(const ClientDownloadRequest_CertificateChain_Element& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_certificate()) {
      set_certificate(from.certificate());
    }
  }
}

void ClientDownloadRequest_CertificateChain_Element::CopyFrom(const ClientDownloadRequest_CertificateChain_Element& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ClientDownloadRequest_CertificateChain_Element::IsInitialized() const {
  
  return true;
}

void ClientDownloadRequest_CertificateChain_Element::Swap(ClientDownloadRequest_CertificateChain_Element* other) {
  if (other != this) {
    std::swap(certificate_, other->certificate_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string ClientDownloadRequest_CertificateChain_Element::GetTypeName() const {
  return "safe_browsing.ClientDownloadRequest.CertificateChain.Element";
}


// -------------------------------------------------------------------

#ifndef _MSC_VER
const int ClientDownloadRequest_CertificateChain::kElementFieldNumber;
#endif  // !_MSC_VER

ClientDownloadRequest_CertificateChain::ClientDownloadRequest_CertificateChain()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void ClientDownloadRequest_CertificateChain::InitAsDefaultInstance() {
}

ClientDownloadRequest_CertificateChain::ClientDownloadRequest_CertificateChain(const ClientDownloadRequest_CertificateChain& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void ClientDownloadRequest_CertificateChain::SharedCtor() {
  _cached_size_ = 0;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

ClientDownloadRequest_CertificateChain::~ClientDownloadRequest_CertificateChain() {
  SharedDtor();
}

void ClientDownloadRequest_CertificateChain::SharedDtor() {
  if (this != default_instance_) {
  }
}

void ClientDownloadRequest_CertificateChain::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ClientDownloadRequest_CertificateChain& ClientDownloadRequest_CertificateChain::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_csd_2eproto();  return *default_instance_;
}

ClientDownloadRequest_CertificateChain* ClientDownloadRequest_CertificateChain::default_instance_ = NULL;

ClientDownloadRequest_CertificateChain* ClientDownloadRequest_CertificateChain::New() const {
  return new ClientDownloadRequest_CertificateChain;
}

void ClientDownloadRequest_CertificateChain::Clear() {
  element_.Clear();
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool ClientDownloadRequest_CertificateChain::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // repeated .safe_browsing.ClientDownloadRequest.CertificateChain.Element element = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_element:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                input, add_element()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(10)) goto parse_element;
        if (input->ExpectAtEnd()) return true;
        break;
      }
      
      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void ClientDownloadRequest_CertificateChain::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // repeated .safe_browsing.ClientDownloadRequest.CertificateChain.Element element = 1;
  for (int i = 0; i < this->element_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->element(i), output);
  }
  
}

int ClientDownloadRequest_CertificateChain::ByteSize() const {
  int total_size = 0;
  
  // repeated .safe_browsing.ClientDownloadRequest.CertificateChain.Element element = 1;
  total_size += 1 * this->element_size();
  for (int i = 0; i < this->element_size(); i++) {
    total_size +=
      ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
        this->element(i));
  }
  
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void ClientDownloadRequest_CertificateChain::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const ClientDownloadRequest_CertificateChain*>(&from));
}

void ClientDownloadRequest_CertificateChain::MergeFrom(const ClientDownloadRequest_CertificateChain& from) {
  GOOGLE_CHECK_NE(&from, this);
  element_.MergeFrom(from.element_);
}

void ClientDownloadRequest_CertificateChain::CopyFrom(const ClientDownloadRequest_CertificateChain& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ClientDownloadRequest_CertificateChain::IsInitialized() const {
  
  return true;
}

void ClientDownloadRequest_CertificateChain::Swap(ClientDownloadRequest_CertificateChain* other) {
  if (other != this) {
    element_.Swap(&other->element_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string ClientDownloadRequest_CertificateChain::GetTypeName() const {
  return "safe_browsing.ClientDownloadRequest.CertificateChain";
}


// -------------------------------------------------------------------

#ifndef _MSC_VER
const int ClientDownloadRequest_SignatureInfo::kCertificateChainFieldNumber;
const int ClientDownloadRequest_SignatureInfo::kTrustedFieldNumber;
#endif  // !_MSC_VER

ClientDownloadRequest_SignatureInfo::ClientDownloadRequest_SignatureInfo()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void ClientDownloadRequest_SignatureInfo::InitAsDefaultInstance() {
}

ClientDownloadRequest_SignatureInfo::ClientDownloadRequest_SignatureInfo(const ClientDownloadRequest_SignatureInfo& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void ClientDownloadRequest_SignatureInfo::SharedCtor() {
  _cached_size_ = 0;
  trusted_ = false;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

ClientDownloadRequest_SignatureInfo::~ClientDownloadRequest_SignatureInfo() {
  SharedDtor();
}

void ClientDownloadRequest_SignatureInfo::SharedDtor() {
  if (this != default_instance_) {
  }
}

void ClientDownloadRequest_SignatureInfo::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ClientDownloadRequest_SignatureInfo& ClientDownloadRequest_SignatureInfo::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_csd_2eproto();  return *default_instance_;
}

ClientDownloadRequest_SignatureInfo* ClientDownloadRequest_SignatureInfo::default_instance_ = NULL;

ClientDownloadRequest_SignatureInfo* ClientDownloadRequest_SignatureInfo::New() const {
  return new ClientDownloadRequest_SignatureInfo;
}

void ClientDownloadRequest_SignatureInfo::Clear() {
  if (_has_bits_[1 / 32] & (0xffu << (1 % 32))) {
    trusted_ = false;
  }
  certificate_chain_.Clear();
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool ClientDownloadRequest_SignatureInfo::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // repeated .safe_browsing.ClientDownloadRequest.CertificateChain certificate_chain = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_certificate_chain:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                input, add_certificate_chain()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(10)) goto parse_certificate_chain;
        if (input->ExpectTag(16)) goto parse_trusted;
        break;
      }
      
      // optional bool trusted = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_trusted:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &trusted_)));
          set_has_trusted();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }
      
      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void ClientDownloadRequest_SignatureInfo::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // repeated .safe_browsing.ClientDownloadRequest.CertificateChain certificate_chain = 1;
  for (int i = 0; i < this->certificate_chain_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      1, this->certificate_chain(i), output);
  }
  
  // optional bool trusted = 2;
  if (has_trusted()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(2, this->trusted(), output);
  }
  
}

int ClientDownloadRequest_SignatureInfo::ByteSize() const {
  int total_size = 0;
  
  if (_has_bits_[1 / 32] & (0xffu << (1 % 32))) {
    // optional bool trusted = 2;
    if (has_trusted()) {
      total_size += 1 + 1;
    }
    
  }
  // repeated .safe_browsing.ClientDownloadRequest.CertificateChain certificate_chain = 1;
  total_size += 1 * this->certificate_chain_size();
  for (int i = 0; i < this->certificate_chain_size(); i++) {
    total_size +=
      ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
        this->certificate_chain(i));
  }
  
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void ClientDownloadRequest_SignatureInfo::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const ClientDownloadRequest_SignatureInfo*>(&from));
}

void ClientDownloadRequest_SignatureInfo::MergeFrom(const ClientDownloadRequest_SignatureInfo& from) {
  GOOGLE_CHECK_NE(&from, this);
  certificate_chain_.MergeFrom(from.certificate_chain_);
  if (from._has_bits_[1 / 32] & (0xffu << (1 % 32))) {
    if (from.has_trusted()) {
      set_trusted(from.trusted());
    }
  }
}

void ClientDownloadRequest_SignatureInfo::CopyFrom(const ClientDownloadRequest_SignatureInfo& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ClientDownloadRequest_SignatureInfo::IsInitialized() const {
  
  return true;
}

void ClientDownloadRequest_SignatureInfo::Swap(ClientDownloadRequest_SignatureInfo* other) {
  if (other != this) {
    certificate_chain_.Swap(&other->certificate_chain_);
    std::swap(trusted_, other->trusted_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string ClientDownloadRequest_SignatureInfo::GetTypeName() const {
  return "safe_browsing.ClientDownloadRequest.SignatureInfo";
}


// -------------------------------------------------------------------

#ifndef _MSC_VER
const int ClientDownloadRequest::kUrlFieldNumber;
const int ClientDownloadRequest::kDigestsFieldNumber;
const int ClientDownloadRequest::kLengthFieldNumber;
const int ClientDownloadRequest::kResourcesFieldNumber;
const int ClientDownloadRequest::kSignatureFieldNumber;
const int ClientDownloadRequest::kUserInitiatedFieldNumber;
const int ClientDownloadRequest::kFileBasenameFieldNumber;
const int ClientDownloadRequest::kDownloadTypeFieldNumber;
const int ClientDownloadRequest::kLocaleFieldNumber;
#endif  // !_MSC_VER

ClientDownloadRequest::ClientDownloadRequest()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void ClientDownloadRequest::InitAsDefaultInstance() {
  digests_ = const_cast< ::safe_browsing::ClientDownloadRequest_Digests*>(&::safe_browsing::ClientDownloadRequest_Digests::default_instance());
  signature_ = const_cast< ::safe_browsing::ClientDownloadRequest_SignatureInfo*>(&::safe_browsing::ClientDownloadRequest_SignatureInfo::default_instance());
}

ClientDownloadRequest::ClientDownloadRequest(const ClientDownloadRequest& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void ClientDownloadRequest::SharedCtor() {
  _cached_size_ = 0;
  url_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  digests_ = NULL;
  length_ = GOOGLE_LONGLONG(0);
  signature_ = NULL;
  user_initiated_ = false;
  file_basename_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  download_type_ = 0;
  locale_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

ClientDownloadRequest::~ClientDownloadRequest() {
  SharedDtor();
}

void ClientDownloadRequest::SharedDtor() {
  if (url_ != &::google::protobuf::internal::kEmptyString) {
    delete url_;
  }
  if (file_basename_ != &::google::protobuf::internal::kEmptyString) {
    delete file_basename_;
  }
  if (locale_ != &::google::protobuf::internal::kEmptyString) {
    delete locale_;
  }
  if (this != default_instance_) {
    delete digests_;
    delete signature_;
  }
}

void ClientDownloadRequest::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ClientDownloadRequest& ClientDownloadRequest::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_csd_2eproto();  return *default_instance_;
}

ClientDownloadRequest* ClientDownloadRequest::default_instance_ = NULL;

ClientDownloadRequest* ClientDownloadRequest::New() const {
  return new ClientDownloadRequest;
}

void ClientDownloadRequest::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_url()) {
      if (url_ != &::google::protobuf::internal::kEmptyString) {
        url_->clear();
      }
    }
    if (has_digests()) {
      if (digests_ != NULL) digests_->::safe_browsing::ClientDownloadRequest_Digests::Clear();
    }
    length_ = GOOGLE_LONGLONG(0);
    if (has_signature()) {
      if (signature_ != NULL) signature_->::safe_browsing::ClientDownloadRequest_SignatureInfo::Clear();
    }
    user_initiated_ = false;
    if (has_file_basename()) {
      if (file_basename_ != &::google::protobuf::internal::kEmptyString) {
        file_basename_->clear();
      }
    }
    download_type_ = 0;
  }
  if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) {
    if (has_locale()) {
      if (locale_ != &::google::protobuf::internal::kEmptyString) {
        locale_->clear();
      }
    }
  }
  resources_.Clear();
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool ClientDownloadRequest::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // required string url = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_url()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_digests;
        break;
      }
      
      // required .safe_browsing.ClientDownloadRequest.Digests digests = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_digests:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_digests()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(24)) goto parse_length;
        break;
      }
      
      // required int64 length = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_length:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
                 input, &length_)));
          set_has_length();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(34)) goto parse_resources;
        break;
      }
      
      // repeated .safe_browsing.ClientDownloadRequest.Resource resources = 4;
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_resources:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                input, add_resources()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(34)) goto parse_resources;
        if (input->ExpectTag(42)) goto parse_signature;
        break;
      }
      
      // optional .safe_browsing.ClientDownloadRequest.SignatureInfo signature = 5;
      case 5: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_signature:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_signature()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(48)) goto parse_user_initiated;
        break;
      }
      
      // optional bool user_initiated = 6;
      case 6: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_user_initiated:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &user_initiated_)));
          set_has_user_initiated();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(74)) goto parse_file_basename;
        break;
      }
      
      // optional string file_basename = 9;
      case 9: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_file_basename:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_file_basename()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(80)) goto parse_download_type;
        break;
      }
      
      // optional .safe_browsing.ClientDownloadRequest.DownloadType download_type = 10 [default = WIN_EXECUTABLE];
      case 10: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_download_type:
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::safe_browsing::ClientDownloadRequest_DownloadType_IsValid(value)) {
            set_download_type(static_cast< ::safe_browsing::ClientDownloadRequest_DownloadType >(value));
          }
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(90)) goto parse_locale;
        break;
      }
      
      // optional string locale = 11;
      case 11: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_locale:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_locale()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }
      
      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void ClientDownloadRequest::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // required string url = 1;
  if (has_url()) {
    ::google::protobuf::internal::WireFormatLite::WriteString(
      1, this->url(), output);
  }
  
  // required .safe_browsing.ClientDownloadRequest.Digests digests = 2;
  if (has_digests()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      2, this->digests(), output);
  }
  
  // required int64 length = 3;
  if (has_length()) {
    ::google::protobuf::internal::WireFormatLite::WriteInt64(3, this->length(), output);
  }
  
  // repeated .safe_browsing.ClientDownloadRequest.Resource resources = 4;
  for (int i = 0; i < this->resources_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      4, this->resources(i), output);
  }
  
  // optional .safe_browsing.ClientDownloadRequest.SignatureInfo signature = 5;
  if (has_signature()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      5, this->signature(), output);
  }
  
  // optional bool user_initiated = 6;
  if (has_user_initiated()) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(6, this->user_initiated(), output);
  }
  
  // optional string file_basename = 9;
  if (has_file_basename()) {
    ::google::protobuf::internal::WireFormatLite::WriteString(
      9, this->file_basename(), output);
  }
  
  // optional .safe_browsing.ClientDownloadRequest.DownloadType download_type = 10 [default = WIN_EXECUTABLE];
  if (has_download_type()) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      10, this->download_type(), output);
  }
  
  // optional string locale = 11;
  if (has_locale()) {
    ::google::protobuf::internal::WireFormatLite::WriteString(
      11, this->locale(), output);
  }
  
}

int ClientDownloadRequest::ByteSize() const {
  int total_size = 0;
  
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // required string url = 1;
    if (has_url()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->url());
    }
    
    // required .safe_browsing.ClientDownloadRequest.Digests digests = 2;
    if (has_digests()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->digests());
    }
    
    // required int64 length = 3;
    if (has_length()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::Int64Size(
          this->length());
    }
    
    // optional .safe_browsing.ClientDownloadRequest.SignatureInfo signature = 5;
    if (has_signature()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->signature());
    }
    
    // optional bool user_initiated = 6;
    if (has_user_initiated()) {
      total_size += 1 + 1;
    }
    
    // optional string file_basename = 9;
    if (has_file_basename()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->file_basename());
    }
    
    // optional .safe_browsing.ClientDownloadRequest.DownloadType download_type = 10 [default = WIN_EXECUTABLE];
    if (has_download_type()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->download_type());
    }
    
  }
  if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) {
    // optional string locale = 11;
    if (has_locale()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->locale());
    }
    
  }
  // repeated .safe_browsing.ClientDownloadRequest.Resource resources = 4;
  total_size += 1 * this->resources_size();
  for (int i = 0; i < this->resources_size(); i++) {
    total_size +=
      ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
        this->resources(i));
  }
  
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void ClientDownloadRequest::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const ClientDownloadRequest*>(&from));
}

void ClientDownloadRequest::MergeFrom(const ClientDownloadRequest& from) {
  GOOGLE_CHECK_NE(&from, this);
  resources_.MergeFrom(from.resources_);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_url()) {
      set_url(from.url());
    }
    if (from.has_digests()) {
      mutable_digests()->::safe_browsing::ClientDownloadRequest_Digests::MergeFrom(from.digests());
    }
    if (from.has_length()) {
      set_length(from.length());
    }
    if (from.has_signature()) {
      mutable_signature()->::safe_browsing::ClientDownloadRequest_SignatureInfo::MergeFrom(from.signature());
    }
    if (from.has_user_initiated()) {
      set_user_initiated(from.user_initiated());
    }
    if (from.has_file_basename()) {
      set_file_basename(from.file_basename());
    }
    if (from.has_download_type()) {
      set_download_type(from.download_type());
    }
  }
  if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) {
    if (from.has_locale()) {
      set_locale(from.locale());
    }
  }
}

void ClientDownloadRequest::CopyFrom(const ClientDownloadRequest& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ClientDownloadRequest::IsInitialized() const {
  if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false;
  
  for (int i = 0; i < resources_size(); i++) {
    if (!this->resources(i).IsInitialized()) return false;
  }
  return true;
}

void ClientDownloadRequest::Swap(ClientDownloadRequest* other) {
  if (other != this) {
    std::swap(url_, other->url_);
    std::swap(digests_, other->digests_);
    std::swap(length_, other->length_);
    resources_.Swap(&other->resources_);
    std::swap(signature_, other->signature_);
    std::swap(user_initiated_, other->user_initiated_);
    std::swap(file_basename_, other->file_basename_);
    std::swap(download_type_, other->download_type_);
    std::swap(locale_, other->locale_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string ClientDownloadRequest::GetTypeName() const {
  return "safe_browsing.ClientDownloadRequest";
}


// ===================================================================

bool ClientDownloadResponse_Verdict_IsValid(int value) {
  switch(value) {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
      return true;
    default:
      return false;
  }
}

#ifndef _MSC_VER
const ClientDownloadResponse_Verdict ClientDownloadResponse::SAFE;
const ClientDownloadResponse_Verdict ClientDownloadResponse::DANGEROUS;
const ClientDownloadResponse_Verdict ClientDownloadResponse::UNCOMMON;
const ClientDownloadResponse_Verdict ClientDownloadResponse::POTENTIALLY_UNWANTED;
const ClientDownloadResponse_Verdict ClientDownloadResponse::DANGEROUS_HOST;
const ClientDownloadResponse_Verdict ClientDownloadResponse::Verdict_MIN;
const ClientDownloadResponse_Verdict ClientDownloadResponse::Verdict_MAX;
const int ClientDownloadResponse::Verdict_ARRAYSIZE;
#endif  // _MSC_VER
#ifndef _MSC_VER
const int ClientDownloadResponse_MoreInfo::kDescriptionFieldNumber;
const int ClientDownloadResponse_MoreInfo::kUrlFieldNumber;
#endif  // !_MSC_VER

ClientDownloadResponse_MoreInfo::ClientDownloadResponse_MoreInfo()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void ClientDownloadResponse_MoreInfo::InitAsDefaultInstance() {
}

ClientDownloadResponse_MoreInfo::ClientDownloadResponse_MoreInfo(const ClientDownloadResponse_MoreInfo& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void ClientDownloadResponse_MoreInfo::SharedCtor() {
  _cached_size_ = 0;
  description_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  url_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

ClientDownloadResponse_MoreInfo::~ClientDownloadResponse_MoreInfo() {
  SharedDtor();
}

void ClientDownloadResponse_MoreInfo::SharedDtor() {
  if (description_ != &::google::protobuf::internal::kEmptyString) {
    delete description_;
  }
  if (url_ != &::google::protobuf::internal::kEmptyString) {
    delete url_;
  }
  if (this != default_instance_) {
  }
}

void ClientDownloadResponse_MoreInfo::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ClientDownloadResponse_MoreInfo& ClientDownloadResponse_MoreInfo::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_csd_2eproto();  return *default_instance_;
}

ClientDownloadResponse_MoreInfo* ClientDownloadResponse_MoreInfo::default_instance_ = NULL;

ClientDownloadResponse_MoreInfo* ClientDownloadResponse_MoreInfo::New() const {
  return new ClientDownloadResponse_MoreInfo;
}

void ClientDownloadResponse_MoreInfo::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_description()) {
      if (description_ != &::google::protobuf::internal::kEmptyString) {
        description_->clear();
      }
    }
    if (has_url()) {
      if (url_ != &::google::protobuf::internal::kEmptyString) {
        url_->clear();
      }
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool ClientDownloadResponse_MoreInfo::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional string description = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_description()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_url;
        break;
      }
      
      // optional string url = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_url:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_url()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }
      
      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void ClientDownloadResponse_MoreInfo::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional string description = 1;
  if (has_description()) {
    ::google::protobuf::internal::WireFormatLite::WriteString(
      1, this->description(), output);
  }
  
  // optional string url = 2;
  if (has_url()) {
    ::google::protobuf::internal::WireFormatLite::WriteString(
      2, this->url(), output);
  }
  
}

int ClientDownloadResponse_MoreInfo::ByteSize() const {
  int total_size = 0;
  
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional string description = 1;
    if (has_description()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->description());
    }
    
    // optional string url = 2;
    if (has_url()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->url());
    }
    
  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void ClientDownloadResponse_MoreInfo::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const ClientDownloadResponse_MoreInfo*>(&from));
}

void ClientDownloadResponse_MoreInfo::MergeFrom(const ClientDownloadResponse_MoreInfo& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_description()) {
      set_description(from.description());
    }
    if (from.has_url()) {
      set_url(from.url());
    }
  }
}

void ClientDownloadResponse_MoreInfo::CopyFrom(const ClientDownloadResponse_MoreInfo& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ClientDownloadResponse_MoreInfo::IsInitialized() const {
  
  return true;
}

void ClientDownloadResponse_MoreInfo::Swap(ClientDownloadResponse_MoreInfo* other) {
  if (other != this) {
    std::swap(description_, other->description_);
    std::swap(url_, other->url_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string ClientDownloadResponse_MoreInfo::GetTypeName() const {
  return "safe_browsing.ClientDownloadResponse.MoreInfo";
}


// -------------------------------------------------------------------

#ifndef _MSC_VER
const int ClientDownloadResponse::kVerdictFieldNumber;
const int ClientDownloadResponse::kMoreInfoFieldNumber;
const int ClientDownloadResponse::kTokenFieldNumber;
#endif  // !_MSC_VER

ClientDownloadResponse::ClientDownloadResponse()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void ClientDownloadResponse::InitAsDefaultInstance() {
  more_info_ = const_cast< ::safe_browsing::ClientDownloadResponse_MoreInfo*>(&::safe_browsing::ClientDownloadResponse_MoreInfo::default_instance());
}

ClientDownloadResponse::ClientDownloadResponse(const ClientDownloadResponse& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void ClientDownloadResponse::SharedCtor() {
  _cached_size_ = 0;
  verdict_ = 0;
  more_info_ = NULL;
  token_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

ClientDownloadResponse::~ClientDownloadResponse() {
  SharedDtor();
}

void ClientDownloadResponse::SharedDtor() {
  if (token_ != &::google::protobuf::internal::kEmptyString) {
    delete token_;
  }
  if (this != default_instance_) {
    delete more_info_;
  }
}

void ClientDownloadResponse::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ClientDownloadResponse& ClientDownloadResponse::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_csd_2eproto();  return *default_instance_;
}

ClientDownloadResponse* ClientDownloadResponse::default_instance_ = NULL;

ClientDownloadResponse* ClientDownloadResponse::New() const {
  return new ClientDownloadResponse;
}

void ClientDownloadResponse::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    verdict_ = 0;
    if (has_more_info()) {
      if (more_info_ != NULL) more_info_->::safe_browsing::ClientDownloadResponse_MoreInfo::Clear();
    }
    if (has_token()) {
      if (token_ != &::google::protobuf::internal::kEmptyString) {
        token_->clear();
      }
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool ClientDownloadResponse::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // required .safe_browsing.ClientDownloadResponse.Verdict verdict = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::safe_browsing::ClientDownloadResponse_Verdict_IsValid(value)) {
            set_verdict(static_cast< ::safe_browsing::ClientDownloadResponse_Verdict >(value));
          }
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_more_info;
        break;
      }
      
      // optional .safe_browsing.ClientDownloadResponse.MoreInfo more_info = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_more_info:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_more_info()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(26)) goto parse_token;
        break;
      }
      
      // optional bytes token = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_token:
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_token()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }
      
      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void ClientDownloadResponse::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // required .safe_browsing.ClientDownloadResponse.Verdict verdict = 1;
  if (has_verdict()) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      1, this->verdict(), output);
  }
  
  // optional .safe_browsing.ClientDownloadResponse.MoreInfo more_info = 2;
  if (has_more_info()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      2, this->more_info(), output);
  }
  
  // optional bytes token = 3;
  if (has_token()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytes(
      3, this->token(), output);
  }
  
}

int ClientDownloadResponse::ByteSize() const {
  int total_size = 0;
  
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // required .safe_browsing.ClientDownloadResponse.Verdict verdict = 1;
    if (has_verdict()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->verdict());
    }
    
    // optional .safe_browsing.ClientDownloadResponse.MoreInfo more_info = 2;
    if (has_more_info()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->more_info());
    }
    
    // optional bytes token = 3;
    if (has_token()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->token());
    }
    
  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void ClientDownloadResponse::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const ClientDownloadResponse*>(&from));
}

void ClientDownloadResponse::MergeFrom(const ClientDownloadResponse& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_verdict()) {
      set_verdict(from.verdict());
    }
    if (from.has_more_info()) {
      mutable_more_info()->::safe_browsing::ClientDownloadResponse_MoreInfo::MergeFrom(from.more_info());
    }
    if (from.has_token()) {
      set_token(from.token());
    }
  }
}

void ClientDownloadResponse::CopyFrom(const ClientDownloadResponse& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ClientDownloadResponse::IsInitialized() const {
  if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false;
  
  return true;
}

void ClientDownloadResponse::Swap(ClientDownloadResponse* other) {
  if (other != this) {
    std::swap(verdict_, other->verdict_);
    std::swap(more_info_, other->more_info_);
    std::swap(token_, other->token_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string ClientDownloadResponse::GetTypeName() const {
  return "safe_browsing.ClientDownloadResponse";
}


// ===================================================================

bool ClientDownloadReport_Reason_IsValid(int value) {
  switch(value) {
    case 0:
    case 1:
    case 2:
      return true;
    default:
      return false;
  }
}

#ifndef _MSC_VER
const ClientDownloadReport_Reason ClientDownloadReport::SHARE;
const ClientDownloadReport_Reason ClientDownloadReport::FALSE_POSITIVE;
const ClientDownloadReport_Reason ClientDownloadReport::APPEAL;
const ClientDownloadReport_Reason ClientDownloadReport::Reason_MIN;
const ClientDownloadReport_Reason ClientDownloadReport::Reason_MAX;
const int ClientDownloadReport::Reason_ARRAYSIZE;
#endif  // _MSC_VER
#ifndef _MSC_VER
const int ClientDownloadReport_UserInformation::kEmailFieldNumber;
#endif  // !_MSC_VER

ClientDownloadReport_UserInformation::ClientDownloadReport_UserInformation()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void ClientDownloadReport_UserInformation::InitAsDefaultInstance() {
}

ClientDownloadReport_UserInformation::ClientDownloadReport_UserInformation(const ClientDownloadReport_UserInformation& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void ClientDownloadReport_UserInformation::SharedCtor() {
  _cached_size_ = 0;
  email_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

ClientDownloadReport_UserInformation::~ClientDownloadReport_UserInformation() {
  SharedDtor();
}

void ClientDownloadReport_UserInformation::SharedDtor() {
  if (email_ != &::google::protobuf::internal::kEmptyString) {
    delete email_;
  }
  if (this != default_instance_) {
  }
}

void ClientDownloadReport_UserInformation::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ClientDownloadReport_UserInformation& ClientDownloadReport_UserInformation::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_csd_2eproto();  return *default_instance_;
}

ClientDownloadReport_UserInformation* ClientDownloadReport_UserInformation::default_instance_ = NULL;

ClientDownloadReport_UserInformation* ClientDownloadReport_UserInformation::New() const {
  return new ClientDownloadReport_UserInformation;
}

void ClientDownloadReport_UserInformation::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_email()) {
      if (email_ != &::google::protobuf::internal::kEmptyString) {
        email_->clear();
      }
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool ClientDownloadReport_UserInformation::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional string email = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_email()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }
      
      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void ClientDownloadReport_UserInformation::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional string email = 1;
  if (has_email()) {
    ::google::protobuf::internal::WireFormatLite::WriteString(
      1, this->email(), output);
  }
  
}

int ClientDownloadReport_UserInformation::ByteSize() const {
  int total_size = 0;
  
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional string email = 1;
    if (has_email()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->email());
    }
    
  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void ClientDownloadReport_UserInformation::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const ClientDownloadReport_UserInformation*>(&from));
}

void ClientDownloadReport_UserInformation::MergeFrom(const ClientDownloadReport_UserInformation& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_email()) {
      set_email(from.email());
    }
  }
}

void ClientDownloadReport_UserInformation::CopyFrom(const ClientDownloadReport_UserInformation& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ClientDownloadReport_UserInformation::IsInitialized() const {
  
  return true;
}

void ClientDownloadReport_UserInformation::Swap(ClientDownloadReport_UserInformation* other) {
  if (other != this) {
    std::swap(email_, other->email_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string ClientDownloadReport_UserInformation::GetTypeName() const {
  return "safe_browsing.ClientDownloadReport.UserInformation";
}


// -------------------------------------------------------------------

#ifndef _MSC_VER
const int ClientDownloadReport::kReasonFieldNumber;
const int ClientDownloadReport::kDownloadRequestFieldNumber;
const int ClientDownloadReport::kUserInformationFieldNumber;
const int ClientDownloadReport::kCommentFieldNumber;
const int ClientDownloadReport::kDownloadResponseFieldNumber;
#endif  // !_MSC_VER

ClientDownloadReport::ClientDownloadReport()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void ClientDownloadReport::InitAsDefaultInstance() {
  download_request_ = const_cast< ::safe_browsing::ClientDownloadRequest*>(&::safe_browsing::ClientDownloadRequest::default_instance());
  user_information_ = const_cast< ::safe_browsing::ClientDownloadReport_UserInformation*>(&::safe_browsing::ClientDownloadReport_UserInformation::default_instance());
  download_response_ = const_cast< ::safe_browsing::ClientDownloadResponse*>(&::safe_browsing::ClientDownloadResponse::default_instance());
}

ClientDownloadReport::ClientDownloadReport(const ClientDownloadReport& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void ClientDownloadReport::SharedCtor() {
  _cached_size_ = 0;
  reason_ = 0;
  download_request_ = NULL;
  user_information_ = NULL;
  comment_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  download_response_ = NULL;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

ClientDownloadReport::~ClientDownloadReport() {
  SharedDtor();
}

void ClientDownloadReport::SharedDtor() {
  if (comment_ != &::google::protobuf::internal::kEmptyString) {
    delete comment_;
  }
  if (this != default_instance_) {
    delete download_request_;
    delete user_information_;
    delete download_response_;
  }
}

void ClientDownloadReport::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ClientDownloadReport& ClientDownloadReport::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_csd_2eproto();  return *default_instance_;
}

ClientDownloadReport* ClientDownloadReport::default_instance_ = NULL;

ClientDownloadReport* ClientDownloadReport::New() const {
  return new ClientDownloadReport;
}

void ClientDownloadReport::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    reason_ = 0;
    if (has_download_request()) {
      if (download_request_ != NULL) download_request_->::safe_browsing::ClientDownloadRequest::Clear();
    }
    if (has_user_information()) {
      if (user_information_ != NULL) user_information_->::safe_browsing::ClientDownloadReport_UserInformation::Clear();
    }
    if (has_comment()) {
      if (comment_ != &::google::protobuf::internal::kEmptyString) {
        comment_->clear();
      }
    }
    if (has_download_response()) {
      if (download_response_ != NULL) download_response_->::safe_browsing::ClientDownloadResponse::Clear();
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool ClientDownloadReport::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .safe_browsing.ClientDownloadReport.Reason reason = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::safe_browsing::ClientDownloadReport_Reason_IsValid(value)) {
            set_reason(static_cast< ::safe_browsing::ClientDownloadReport_Reason >(value));
          }
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_download_request;
        break;
      }
      
      // optional .safe_browsing.ClientDownloadRequest download_request = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_download_request:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_download_request()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(26)) goto parse_user_information;
        break;
      }
      
      // optional .safe_browsing.ClientDownloadReport.UserInformation user_information = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_user_information:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_user_information()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(34)) goto parse_comment;
        break;
      }
      
      // optional bytes comment = 4;
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_comment:
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_comment()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(42)) goto parse_download_response;
        break;
      }
      
      // optional .safe_browsing.ClientDownloadResponse download_response = 5;
      case 5: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_download_response:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
               input, mutable_download_response()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }
      
      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void ClientDownloadReport::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .safe_browsing.ClientDownloadReport.Reason reason = 1;
  if (has_reason()) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      1, this->reason(), output);
  }
  
  // optional .safe_browsing.ClientDownloadRequest download_request = 2;
  if (has_download_request()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      2, this->download_request(), output);
  }
  
  // optional .safe_browsing.ClientDownloadReport.UserInformation user_information = 3;
  if (has_user_information()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      3, this->user_information(), output);
  }
  
  // optional bytes comment = 4;
  if (has_comment()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytes(
      4, this->comment(), output);
  }
  
  // optional .safe_browsing.ClientDownloadResponse download_response = 5;
  if (has_download_response()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessage(
      5, this->download_response(), output);
  }
  
}

int ClientDownloadReport::ByteSize() const {
  int total_size = 0;
  
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .safe_browsing.ClientDownloadReport.Reason reason = 1;
    if (has_reason()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->reason());
    }
    
    // optional .safe_browsing.ClientDownloadRequest download_request = 2;
    if (has_download_request()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->download_request());
    }
    
    // optional .safe_browsing.ClientDownloadReport.UserInformation user_information = 3;
    if (has_user_information()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->user_information());
    }
    
    // optional bytes comment = 4;
    if (has_comment()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->comment());
    }
    
    // optional .safe_browsing.ClientDownloadResponse download_response = 5;
    if (has_download_response()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
          this->download_response());
    }
    
  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void ClientDownloadReport::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const ClientDownloadReport*>(&from));
}

void ClientDownloadReport::MergeFrom(const ClientDownloadReport& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_reason()) {
      set_reason(from.reason());
    }
    if (from.has_download_request()) {
      mutable_download_request()->::safe_browsing::ClientDownloadRequest::MergeFrom(from.download_request());
    }
    if (from.has_user_information()) {
      mutable_user_information()->::safe_browsing::ClientDownloadReport_UserInformation::MergeFrom(from.user_information());
    }
    if (from.has_comment()) {
      set_comment(from.comment());
    }
    if (from.has_download_response()) {
      mutable_download_response()->::safe_browsing::ClientDownloadResponse::MergeFrom(from.download_response());
    }
  }
}

void ClientDownloadReport::CopyFrom(const ClientDownloadReport& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ClientDownloadReport::IsInitialized() const {
  
  if (has_download_request()) {
    if (!this->download_request().IsInitialized()) return false;
  }
  if (has_download_response()) {
    if (!this->download_response().IsInitialized()) return false;
  }
  return true;
}

void ClientDownloadReport::Swap(ClientDownloadReport* other) {
  if (other != this) {
    std::swap(reason_, other->reason_);
    std::swap(download_request_, other->download_request_);
    std::swap(user_information_, other->user_information_);
    std::swap(comment_, other->comment_);
    std::swap(download_response_, other->download_response_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string ClientDownloadReport::GetTypeName() const {
  return "safe_browsing.ClientDownloadReport";
}


// ===================================================================

bool ClientUploadResponse_UploadStatus_IsValid(int value) {
  switch(value) {
    case 0:
    case 1:
      return true;
    default:
      return false;
  }
}

#ifndef _MSC_VER
const ClientUploadResponse_UploadStatus ClientUploadResponse::SUCCESS;
const ClientUploadResponse_UploadStatus ClientUploadResponse::UPLOAD_FAILURE;
const ClientUploadResponse_UploadStatus ClientUploadResponse::UploadStatus_MIN;
const ClientUploadResponse_UploadStatus ClientUploadResponse::UploadStatus_MAX;
const int ClientUploadResponse::UploadStatus_ARRAYSIZE;
#endif  // _MSC_VER
#ifndef _MSC_VER
const int ClientUploadResponse::kStatusFieldNumber;
const int ClientUploadResponse::kPermalinkFieldNumber;
#endif  // !_MSC_VER

ClientUploadResponse::ClientUploadResponse()
  : ::google::protobuf::MessageLite() {
  SharedCtor();
}

void ClientUploadResponse::InitAsDefaultInstance() {
}

ClientUploadResponse::ClientUploadResponse(const ClientUploadResponse& from)
  : ::google::protobuf::MessageLite() {
  SharedCtor();
  MergeFrom(from);
}

void ClientUploadResponse::SharedCtor() {
  _cached_size_ = 0;
  status_ = 0;
  permalink_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

ClientUploadResponse::~ClientUploadResponse() {
  SharedDtor();
}

void ClientUploadResponse::SharedDtor() {
  if (permalink_ != &::google::protobuf::internal::kEmptyString) {
    delete permalink_;
  }
  if (this != default_instance_) {
  }
}

void ClientUploadResponse::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ClientUploadResponse& ClientUploadResponse::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_csd_2eproto();  return *default_instance_;
}

ClientUploadResponse* ClientUploadResponse::default_instance_ = NULL;

ClientUploadResponse* ClientUploadResponse::New() const {
  return new ClientUploadResponse;
}

void ClientUploadResponse::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    status_ = 0;
    if (has_permalink()) {
      if (permalink_ != &::google::protobuf::internal::kEmptyString) {
        permalink_->clear();
      }
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

bool ClientUploadResponse::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .safe_browsing.ClientUploadResponse.UploadStatus status = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          int value;
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::safe_browsing::ClientUploadResponse_UploadStatus_IsValid(value)) {
            set_status(static_cast< ::safe_browsing::ClientUploadResponse_UploadStatus >(value));
          }
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_permalink;
        break;
      }
      
      // optional string permalink = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_permalink:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_permalink()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }
      
      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void ClientUploadResponse::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // optional .safe_browsing.ClientUploadResponse.UploadStatus status = 1;
  if (has_status()) {
    ::google::protobuf::internal::WireFormatLite::WriteEnum(
      1, this->status(), output);
  }
  
  // optional string permalink = 2;
  if (has_permalink()) {
    ::google::protobuf::internal::WireFormatLite::WriteString(
      2, this->permalink(), output);
  }
  
}

int ClientUploadResponse::ByteSize() const {
  int total_size = 0;
  
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // optional .safe_browsing.ClientUploadResponse.UploadStatus status = 1;
    if (has_status()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::EnumSize(this->status());
    }
    
    // optional string permalink = 2;
    if (has_permalink()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->permalink());
    }
    
  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void ClientUploadResponse::CheckTypeAndMergeFrom(
    const ::google::protobuf::MessageLite& from) {
  MergeFrom(*::google::protobuf::down_cast<const ClientUploadResponse*>(&from));
}

void ClientUploadResponse::MergeFrom(const ClientUploadResponse& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_status()) {
      set_status(from.status());
    }
    if (from.has_permalink()) {
      set_permalink(from.permalink());
    }
  }
}

void ClientUploadResponse::CopyFrom(const ClientUploadResponse& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ClientUploadResponse::IsInitialized() const {
  
  return true;
}

void ClientUploadResponse::Swap(ClientUploadResponse* other) {
  if (other != this) {
    std::swap(status_, other->status_);
    std::swap(permalink_, other->permalink_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::std::string ClientUploadResponse::GetTypeName() const {
  return "safe_browsing.ClientUploadResponse";
}


// @@protoc_insertion_point(namespace_scope)

}  // namespace safe_browsing

// @@protoc_insertion_point(global_scope)
