// THIS IS A GENERATED FILE. DO NOT EDIT DIRECTLY.
// Generated by //wireless/android/play/playlog/tools:strip_proto_file
// from wireless/android/play/playlog/proto/clientanalytics.proto
// Regenerate by running
//   blaze build //wireless/android/play/playlog/proto:clientanalytics_stripped

// Protos defining the communication protocol between Clearcut client libraries
// and the Clearcut server.
//
// LogRequest is what a client library sends to the server.
// LogResponse is what the server sends back.
//
// The LogRequest.LogSource enum defines the list of datatypes understood by
// Clearcut.
//
// Play Odyssey shares some of these protos.

syntax = "proto2";

package wireless_android_play_playlog;

option java_package = "com.google.wireless.android.play.playlog.proto";
option java_outer_classname = "ClientAnalytics";

// Semi-arbitrary key-value pairs describing the event. Common entries
// will be extracted into strongly typed fields in the GWS log records.
message LogEventKeyValues {
  optional string key = 1;
  optional string value = 2;
}

// Next tag: 25
message LogEvent {
  enum InternalEvent {
    NONE = 0;
    WALL_CLOCK_SET = 1;
    DEVICE_BOOT = 2;
  }
  // Epoch time in milliseconds, according to the wall clock.
  // See http://go/clearcut-timestamps for details on how this value is used.
  // This field is required for Odyssey. Otherwise, events will be silently
  // dropped.
  optional int64 event_time_ms = 1;
  // Time in milliseconds since the device was booted.  (On Android this
  // is the result of SystemClock.elapsedRealtime(), not
  // SystemClock.uptimeMillis() which does not increment when the device is in
  // deep sleep.)
  //
  // See http://go/clearcut-timestamps for details on how this value is used for
  // timestamp corrections.  It is also copied to
  // PlayExtension.client_elapsed_realtime_millis if the routing option
  // "include_client_elapsed_realtime_millis" is set to true.
  optional int64 event_uptime_ms = 17;
  // Client generated sequence position for this event - defines a total order
  // for events from a given device. If event A's sequence position is less than
  // event B's sequence position, then event A happened before event B.
  optional int64 sequence_position = 21;
  // Type of event, could be "CLICK" or "PAGE_VIEW" or "DOWNLOAD_STATUS".
  // There will be a common repository of cross-vertical events that should be
  // used, but any individual app would be free to define their own tags.
  //
  // STRONGLY DISCOURAGED: use event_code instead.
  optional string tag = 2;
  // Type of event. Different kinds of events inside a client app should have
  // different values of 'event_code'. Different client apps may have
  // overlapping sets of 'event_code' values; these values are only meant to
  // make sense within the context of a single client app, as identified by
  // the 'log_source' field of LogRequest.
  //
  // A typical way to use 'event_code' is to define the enum of possible values
  // inside of the custom logging extension proto.
  // TODO(abednego): add an example CL.
  //
  // This enum type should be annotated with a LogEventRoutingConfig proto.
  optional int32 event_code = 11;
  // Identifies a group of events that belong to the same flow or session of
  // user interaction, which is a client-specific concept.
  //
  // These IDs are used in the Clearcut/UMA pipeline for computing latencies
  // between pairs of events, where it is necessary to ensure that both events
  // belong to the same flow.
  //
  // For example, the Google Play team may want to give a unique ID to each
  // purchase session, including all of the events starting from the initial
  // search for an app to the eventual purchase and installation of the app.
  // Another example would be the Search app wanting to tie together search
  // query events and clicks on search results, especially if several instances
  // of the app may be active at the same time.
  optional int32 event_flow_id = 12;
  // Whether this event was initiated by the user at the time of the event or
  // shortly before (vs. a background event like upgrading a database after the
  // app was automatically updated).
  optional bool is_user_initiated = 10;
  // These might contain PII and will not be stored for more than 8 days.
  // If possible, please create a named field in the protos below instead.
  repeated .wireless_android_play_playlog.LogEventKeyValues value = 3;
  // TODO(jsw): Remove. We can't do that as of 2015/08/13 because we still get
  // several thousand QPS from ancient Play Store clients who use this field.
  //
  // Extension for Play Store app logs. Real type is PlayStoreLogEvent. This
  // exists to support legacy clients. Use source_extension instead.
  optional bytes store = 4;
  // WAS optional PlaylogGamesExtension games = 5;

  // First-party app usage tracking. Used only when log_source = APP_USAGE_1P.
  optional .wireless_android_play_playlog.AppUsage1pLogEvent app_usage_1p = 9;
  // A source specific extension (typically a serialized proto). The type of
  // this data is determined by the log_source of the enclosing LogRequest.
  // The proto is derived by calling ParseFromString method in
  // net/proto2/public/message_lite.h.
  optional bytes source_extension = 6;
  // A jspb version of source_extension, using array serialization format.
  // More info on JSPB at go/jspb.
  optional string source_extension_js = 8;
  // A stringified json proto version of source_extension.  The json string is
  // converted back to proto using the json_format utility at
  // net/proto2/util/public/json_format.h, without any flags.
  optional string source_extension_json = 13;
  // A string for identifying a test run.  You may use this string to group log
  // data coming from a test run.  Usually logs from test apps or from normal
  // apps running on test devices will have this field set.
  optional string test_id = 14;
  // User's timezone offset from UTC in seconds. If the user's UTC time
  // is X millis then the on-device clock time would be
  // X + timezone_offset_seconds * 1000.
  // The default value is non-sensical, mainly so that 0 can be distinguished
  // from "not specified" using proto nano (and without changing our build
  // options to use reference types for primitives).
  optional sint64 timezone_offset_seconds = 15 [default = 180000];
  // serialized DeviceExperimentIds; the experiment ids are propagated
  // to GWSLog experiment ids
  optional .wireless_android_play_playlog.ExperimentIds experiment_ids = 16;
  // Serialized proto message of ClientVisualElementsProto as defined in
  // logs/proto/visual_element/client_visual_elements.proto. The client can
  // optionally send a log event with this field set. In this case, clearcut
  // server needs to deserialize the bytes as a ClientVisualElementsProto and
  // sets appropriate fields in the output GWSLogEntryProto.
  //
  // See http://go/NativeVeLogging for more information.
  optional bytes client_ve = 18;
  // Alternative serialized field for the client_ve field defined in 18.
  // Serialize using array serialization format. More info at go/jspb.
  optional string client_ve_js = 24;
  optional .wireless_android_play_playlog.LogEvent.InternalEvent internal_event = 19;
  // Indicates that an interesting thing has occurred. Used to narrow the set
  // of samples to consider in analysis. Test codes are copied to
  // GwsLogEntryProto.TestCode.
  //
  // See google3/ads/base/test_codes/test_codes.proto
  // for Ads' use of test codes.
  repeated int32 test_code = 20;
  // Number of times the device is known to have booted. Taken together,
  // {boot-count, uptime} pairs are a monotonically increasing counter which
  // can be used to order events accross log sources.
  optional int64 boot_count = 22;
  // The current network connectivity info when the event was logged in the
  // client
  optional .wireless_android_play_playlog.NetworkConnectionInfo network_connection_info = 23;
  extensions 1000 to 536870911;
}

// To describe the network connectivity of the client.
// Next tag: 3
message NetworkConnectionInfo {
  // From android/frameworks/base/core/java/android/net/ConnectivityManager.java
  // Note: data will only be recorded for internet connections. This means
  // BLUETOOTH corresponds to when bluetooth was used for reverse tethering
  // (i.e. using a computer's internet connection on the phone) and NOT for
  // general device pairing via bluetooth, such as clockwork.
  enum NetworkType {
    NONE = -1;
    MOBILE = 0;
    WIFI = 1;
    MOBILE_MMS = 2;
    MOBILE_SUPL = 3;
    MOBILE_DUN = 4;
    MOBILE_HIPRI = 5;
    WIMAX = 6;
    BLUETOOTH = 7;
    DUMMY = 8;
    ETHERNET = 9;
    MOBILE_FOTA = 10;
    MOBILE_IMS = 11;
    MOBILE_CBS = 12;
    WIFI_P2P = 13;
    MOBILE_IA = 14;
    MOBILE_EMERGENCY = 15;
    PROXY = 16;
    VPN = 17;
  }
  // From android/frameworks/base/telephony/java/android/telephony/TelephonyManager.java
  enum MobileSubtype {
    UNKNOWN_MOBILE_SUBTYPE = 0;
    GPRS = 1;
    EDGE = 2;
    UMTS = 3;
    CDMA = 4;
    EVDO_0 = 5;
    EVDO_A = 6;
    RTT = 7;
    HSDPA = 8;
    HSUPA = 9;
    HSPA = 10;
    IDEN = 11;
    EVDO_B = 12;
    LTE = 13;
    EHRPD = 14;
    HSPAP = 15;
    GSM = 16;
    // COMBINED has value -1 in NetworkIdentity.java, but is given the value
    // 100 here to save (disk) space. The value -1 takes up the full 10 bytes in
    // a varint for enums, but the value 100 only takes up 1 byte.
    COMBINED = 100;
  }
  // The current network connectivity type when the event was logged in the
  // client
  optional .wireless_android_play_playlog.NetworkConnectionInfo.NetworkType network_type = 1 [default = NONE];
  // The current mobile connectivity subtype when the event was logged in the
  // client
  optional .wireless_android_play_playlog.NetworkConnectionInfo.MobileSubtype mobile_subtype = 2 [default = UNKNOWN_MOBILE_SUBTYPE];
}

// The experiment ids, both in the clear and encrypted.
message ExperimentIds {
  // The client selected experiment ids in the clear (e.g. from Chrome).
  // serialized experiments.heterodyne.DeviceExperimentIds
  optional bytes clear_blob = 1;
  // A jspb version of clear_blob, using array serialization format.
  // More info on JSPB at go/jspb.
  optional string clear_blob_js = 4;
  // encrypted serialized experiments.heterodyne.DeviceExperimentIds
  repeated bytes encrypted_blob = 2;
  // indicates whether the Phenotype committed user matches the upload account
  optional bool users_match = 3;
}

// Attributes specific to Android clients.
//
// Next tag: 23
message AndroidClientInfo {
  // "Gservices" android ID.  Considered PII.  Never logged in archival logs.
  optional int64 android_id = 1;
  // Pseudonymous, random id (sticky) per device.  May only be logged in temp
  // logs if GWSLogEntryProto.UserInfo.UserId is not set.
  optional string logging_id = 2;
  // Device ID referenced by android.provider.Settings.Secure.ANDROID_ID.
  // Considered PII. Never logged in archival logs.
  optional int64 device_id = 18;
  // This comes from android.os.Build.VERSION.SDK_INT.
  optional int32 sdk_version = 3;
  // Textual description of the client platform.  e.g., "Nexus 4".
  // This comes from android.os.Build.MODEL.
  optional string model = 4;
  // The name of the overall product. e.g., "occam".
  // This comes from android.os.Build.Product.
  optional string product = 5;
  // The name of the hardware (from the kernel command line or /proc).
  // This comes from android.os.Build.Hardware.  e.g., "mako".
  optional string hardware = 8;
  // The name of the industrial design.  e.g., "mako".
  // This comes from android.os.Build.Device.
  optional string device = 9;
  // This comes from android.os.Build.ID.  e.g., something like "JRN54F".
  optional string os_build = 6;
  // The client application version. The java int version in the android package
  // converted to string.
  optional string application_build = 7;
  // The mobile country code / mobile network code (MCC/MNC).
  // e.g., 310004 for Verizon USA.
  optional string mcc_mnc = 10;
  // The chosen locale from the client. e.g., "en_US", "ko_KR", "en_GB".
  optional string locale = 11;
  // The chosen country from the client. e.g., "US", "KR", "JP".
  optional string country = 12;
  // The manufacturer of the hardware.
  // This comes from android.os.Build.MANUFACTURER
  optional string manufacturer = 13;
  // The brand the software is customized for, if any.  Often a carrier name.
  // e.g. "google"
  // from http://developer.android.com/reference/android/os/Build.html#BRAND
  optional string brand = 14;
  // The name of the underlying board
  // e.g. "tuna"
  // from http://developer.android.com/reference/android/os/Build.html#BOARD
  optional string board = 15;
  // Radio version as reported by device, if available at reporting time
  // e.g. "I9250XXLJ1"
  // from http://developer.android.com/reference/android/os/Build.html#getRadioVersion()
  optional string radio_version = 16;
  // Device model/build fingerprint.
  // This comes from android.os.Build.FINGERPRINT.
  optional string fingerprint = 17;
  // android.content.pm.PackageInfo.versionCode of com.google.android.gms.
  // e.g., 6031030
  optional int32 gms_core_version_code = 19;
  // Whether the device is a Sidewinder device. See go/sidewinder-summary.
  optional bool is_sidewinder_device = 20;
  // The Chimera module config info describing the module sets on the device
  // when the event is logged in the client.
  // This is a proto of ChimeraConfigInfo residing in
  // google3/logs/proto/wireless/android/play/playlog/chimera_modules.proto.
  optional bytes chimera_config_info = 21;
  // Indicates if the device is passing in the LogRequest.LogSource integer
  // value instead of passing in a string for log_source_name.
  // This field is not set by the client, but by the server after parsing the
  // request.
  optional bool using_log_source_int = 22;
}

// Next tag: 12
message ClientInfo {
  // The type of client that made this request.
  // Next enum tag: 11
  enum ClientType {
    // Client type is unknown.
    UNKNOWN = 0;
    // Client type is Javascript.
    JS = 1;
    // Desktop client type.
    DESKTOP = 2;
    // iOS client type.
    IOS = 3;
    // iOS client type for new iOS Clearcut Client Library (CCTClearcutLoger).
    // See go/clearcut-ios-design for more information.
    // For ease of migration, the client_type field will be set to IOS before
    // sending logs to Sawmill. This separate enum (IOS_V2) is just for
    // Clearcut Server to distinguish between the two libraries.
    IOS_V2 = 10;
    // Android client type.
    ANDROID = 4;
    // This is to be used by third party consumer electronics devices
    // with GooglePlay apps, e.g.: Roku, Smart TVs etc.
    PLAY_CE = 5;
    // Python client type.
    PYTHON = 6;
    // VR client type.
    VR = 7;
    // Pancetta client type. go/pancetta
    PANCETTA = 8;
    // DriveFS client type. go/drive-fs
    DRIVE_FS = 9;
  }
  // The client type for this client. One of the enum values defined above.
  optional .wireless_android_play_playlog.ClientInfo.ClientType client_type = 1;
  // Identical to GWSLogEntryProto.RemoteHost.
  // Set by the Clearcut server when ClientInfo is written to Footprints.
  // Do not set this value in client code; the server will ignore it.
  optional string remote_host = 6;
  // Identical to GWSLogEntryProto.RemoteHost6.
  // Set by the Clearcut server when ClientInfo is written to Footprints.
  // Do not set this value in client code; the server will ignore it.
  optional string remote_host6 = 7;
  // Only one of the following *_client_info fields will exist in any request.
  optional .wireless_android_play_playlog.AndroidClientInfo android_client_info = 2;
}

// First party app usage log event extension.
// Used only when log_source = APP_USAGE_1P.
//
// TODO(jsw): Investigate whether anyone is actually using this, and if not,
// remove it.
//
// Next tag: 4
message AppUsage1pLogEvent {
  // A wireless.android.stats.playlog.activeusers.AppType.Id value. See
  // google3/wireless/android/stats/playlog/activeusers/apptype.proto.
  optional int32 app_type = 1;
  // Package name of the app (on Android).
  optional string android_package_name = 2;
  // Version of the app.
  optional string version = 3;
}

// A BatchedLogRequest represents a batched collection of log requests.
//
// Next tag: 2
message BatchedLogRequest {
  repeated .wireless_android_play_playlog.LogRequest log_request = 1;
}

// A LogRequest represents a batched collection of loggable events, each event
// to be processed and sent to zero or more destinations (e.g. Sawmill log types
// or Footprints) by the Clearcut server.
//
// Next tag: 14
message LogRequest {
  enum LogSource {
    option allow_alias = true;
    UNKNOWN = -1;
    // Log source for Clearcut's batched log request endpoint. This is not a
    // real log source, but is a placeholder for some legacy streamz that have
    // log_source fields.
    BATCHED_LOG_REQUEST = 357;
    STORE = 0;
    // Google Play Store Android App
    WEB_STORE = 65;
    // Google Play Web Store (https://play.google.com/store)
    WORK_STORE = 132;
    // Play for Work on the web client (Worksky)
    WORK_STORE_APP = 261;
    // Play for Work on the Google Play Store Android App
    EDU_STORE = 15;
    // for collecting stats on Play for Education
    MUSIC = 1;
    BOOKS = 2;
    VIDEO = 3;
    // Android Video (go/avi, android-video-oncall@)
    MOVIES = 74;
    MAGAZINES = 4;
    GAMES = 5;
    LB_A = 6;
    // for collecting app usage stats (Lockbox project)
    ANDROID_IDE = 7;
    // Android IDE (deprecated, see ANDROID_STUDIO below)
    LB_P = 8;
    // for collecting phone call events and stats (Lockbox project)
    LB_S = 9;
    // for collecting SMS events and stats (Lockbox project)
    GMS_CORE = 10;
    // Usage of GMS Core itself and its internal stats
    APP_USAGE_1P = 11;
    // First-party app usage tracking.
    ICING = 12;
    // Icing stats (AppDataSearch go/icing)
    HERREVAD = 13;
    // for collecting Nova Network quality data
    GOOGLE_TV = 14;
    // Google TV, not Eureka.
    GMS_CORE_PEOPLE = 16;
    // GMS core people (aka menagerie, zhengfu@, android-contacts@)
    LE = 17;
    // Location Engine statistics
    GOOGLE_ANALYTICS = 18;
    // Google Analytics SDK health monitoring
    LB_D = 19;
    // for collecting device state changes (Lockbox project)
    ANDROID_GSA = 20;
    // Android GSA (Google Search App) stats
    LB_T = 21;
    // for collecting Android RunningTaskInfo (Lockbox project)
    PERSONAL_LOGGER = 22;
    // PixelPerfect activity logger
    PERSONAL_BROWSER_LOGGER = 37;
    // PixelPerfect Chrome extension logger
    GMS_CORE_WALLET_MERCHANT_ERROR = 23;
    // GMS core wallet merchant errors
    LB_C = 24;
    // Android contacts going from Now to HappyHour.log_event_extension_test
    LB_IA = 52;
    // Android installed apps going from Now to HappyHour.
    LB_CB = 237;
    // Android contacts for backup/restore purpose.
    LB_DM = 268;
    // Android device metadata used for contacts backup/restore purpose.
    ANDROID_AUTH = 25;
    // for collecting GMS core android auth data
    ANDROID_CAMERA = 26;
    // Android camera usage statistics
    CW = 27;
    // Clockwork interaction logs
    CW_COUNTERS = 243;
    // Clockwork counters
    GEL = 28;
    // Google experience launcher logs (http://go/signac).
    DNA_PROBER = 29;
    // DNA logger (for internal research), go/dna2014.
    UDR = 30;
    // For collecting Android app usage data.
    GMS_CORE_WALLET = 31;
    // GMS core wallet analytics
    SOCIAL = 32;
    // Traffic from Social clients: gplus-log-quality@
    INSTORE_WALLET = 33;
    // Instore play payments
    NOVA = 34;
    // Nova client logs.
    LB_CA = 35;
    // Android contact account data going from Now to Footprints.
    LATIN_IME = 36;
    // Google Keyboard (http://go/google-keyboard)
    NEWS_WEATHER = 38;
    // News & Weather Android/iOS apps
    HANGOUT = 39;
    // Deprecated source for HangoutLogEntry (rtc-analytics-eng@)
    HANGOUT_LOG_REQUEST = 50;
    // Hangouts data using HangoutLogRequest (rtc-analytics-eng@)
    COPRESENCE = 40;
    // Copresence (http://go/whisper)
    SOCIAL_AFFINITY = 41;
    // Social Affinity logs (go/disco-logging-v2).
    PHOTOS = 42;
    // Google Photos (go/photos).
    GCM = 43;
    // Google Cloud Messaging logs (go/gcm).
    GOKART = 44;
    // GoKart (go/gokart, Drive Android API)
    FINDR = 45;
    // Findr app (go/findr).
    ANDROID_MESSAGING = 46;
    // Android messenger(Bugle) (go/bugledev).
    BUGLE_COUNTERS = 323;
    // Bugle counters (go/bugledev)
    SOCIAL_WEB = 47;
    // Traffic from Social clients: gplus-log-quality@.
    BACKDROP = 48;
    // Backdrop device logs (go/tv-imax).
    TELEMATICS = 49;
    // Telematics app (go/telematics).
    GVC_HARVESTER = 51;
    // GVC Harvester (go/harvesterdesigndoc)
    CAR = 53;
    // Android Automotive (go/gearhead).
    PIXEL_PERFECT = 54;
    // PixelPerfect app client log (go/pixelperfect-analytics)
    DRIVE = 55;
    // Google Drive (go/cakemix, nickread@, cakemix-drive@)
    DOCS = 56;
    // Google Docs (go/cakemix, haluk@, bulach@, tstrauss@)
    SHEETS = 57;
    // Google Sheets (go/cakemix, tgleason@, bulach@, tstrauss@)
    SLIDES = 58;
    // Google Slides (go/cakemix, yugacohler@, bulach@, tstrauss@)
    IME = 59;
    // Google Android IME logs (go/goopy).
    WARP = 60;
    // Warp (go/warp-project)
    NFC_PROGRAMMER = 61;
    // NfcProgrammer (go/aedu-platform-overview)
    NETSTATS = 62;
    // Collection of Network Statistics (go/n-s).
    NEWSSTAND = 63;
    // Google Play Newsstand.
    KIDS_COMMUNICATOR = 64;
    // Kids Communicator (http://goto/kidscommunicator_dd)
    WIFI_ASSISTANT = 66;
    // WiFi Assistant client logs.
    WIFI_ASSISTANT_PRIMES = 326;
    // WiFi Assistant client logs, primes.
    CAST_SENDER_SDK = 67;
    // Cast Sender SDK (go/dongle)
    CRONET_SOCIAL = 68;
    // Social cronet metrics.
    PHENOTYPE = 69;
    // The client side of experiment framework (go/ph, peiling@, phenotype-eng@).
    PHENOTYPE_COUNTERS = 70;
    // The counters for Phenotype (go/ph, peiling@, phenotype-eng@).
    CHROME_INFRA = 71;
    // Chrome Infrastructure events
    JUSTSPEAK = 72;
    // JustSpeak (go/justspeak)
    PERF_PROFILE = 73;
    // Android Wide Profiling (go/android-wide-profiling)
    KATNISS = 75;
    // Android TV search (go/atv-search)
    SOCIAL_APPINVITE = 76;
    // Google Plus Platform App Invite (go/appinvite)
    GMM_COUNTERS = 77;
    // Google Maps Mobile (go/gmm).
    BOND_ONEGOOGLE = 78;
    // Bond OneGoogleBar integration (go/bond-ogb)
    MAPS_API = 79;
    // Android and iOS Maps API (go/mapview & go/meridian)
    CRONET_ANDROID_YT = 196;
    // Cronet UMA logs from Android YT (go/cronet-uma)
    CRONET_ANDROID_GSA = 80;
    // Cronet UMA logs from Android GSA (go/cronet-uma)
    GOOGLE_FIT_WEARABLE = 81;
    // Google Fit Wearable App (go/heart)
    FITNESS_ANDROID = 169;
    // Google Fit Android App (go/heart)
    FITNESS_GMS_CORE = 170;
    // Google Fit GMSCore (go/heart)
    GOOGLE_EXPRESS = 82;
    // Google Express (go/gsx)
    GOOGLE_EXPRESS_DEV = 215;
    // Google Express (go/gsx) For DEV mall server
    GOOGLE_EXPRESS_COURIER_ANDROID_PRIMES = 228;
    // Google Express (go/gsx) Courier App metric logging (go/primes)
    GOOGLE_EXPRESS_ANDROID_PRIMES = 229;
    // Google Express (go/gsx) App metric logging (go/primes)
    GOOGLE_EXPRESS_IOS_PRIMES = 374;
    // Google Express (go/gsx) App metric logging (go/primes-ios)
    GOOGLE_EXPRESS_STOREOMS_ANDROID_PRIMES = 240;
    // Google Express (go/gsx) Store OMS App metric logging (go/primes)
    SENSE = 83;
    // Sense (go/sense)
    ANDROID_BACKUP = 84;
    // Android Backup Service.
    VR = 85;
    // Virtual Reality and Google Cardboard (go/vr-team)
    IME_COUNTERS = 86;
    // The counters for Google Android IME (go/goopy).
    SETUP_WIZARD = 87;
    // Setup Wizard (go/suw)
    EMERGENCY_ASSIST = 88;
    // Barton (go/barton-deprecation)
    TRON = 89;
    // The event logs for Android Framework (go/tron, cwren@, khigaki@, tron-eng@).
    TRON_COUNTERS = 90;
    // The counters for Android Framework (go/tron, cwren@, khigaki@, tron-eng@).
    BATTERY_STATS = 91;
    // For collecting battery performance data from Android clients. (go/androidplatformstats, belland@, clearcut-eng@)
    DISK_STATS = 92;
    // For collecting disk utilization stats from Android clients. (go/androidplatformstats, belland@, clearcut-eng@)
    GRAPHICS_STATS = 107;
    // For collecting rendering performance stats from Android clients. (go/androidplatformstats, belland@, clearcut-eng@)
    PROC_STATS = 93;
    // For collecting memory utilization stats from Android clients. (go/androidplatformstats, belland@, clearcut-eng@)
    DROP_BOX = 131;
    // For collecting DropBox logs from Android clients.
    FINGERPRINT_STATS = 181;
    // For collecting fingerprint stats from Android clients. (go/android-fingerprintstats)
    NOTIFICATION_STATS = 182;
    // For collecting notification stats from Android clients. (go/android-notificationstats)
    SETTINGS_STATS = 390;
    // For collecting settings stats from Android clients. (go/android-settingsstats)
    TAP_AND_PAY_GCORE = 94;
    // Tap and Pay client service layer (go/tp2-eng)
    A11YLOGGER = 95;
    // Accessibility Settings Logger (go/a11ylogger)
    GCM_COUNTERS = 96;
    // Google Cloud Messaging counters (go/gcm).
    PLACES_NO_GLS_CONSENT = 97;
    // Mobile Places API logs without GLS consent (go/ios-places-api).
    TACHYON_LOG_REQUEST = 98;
    // WebRTC Tachyon (go/tachyon)
    TACHYON_COUNTERS = 99;
    // WebRTC Tachyon (go/tachyon)
    DUO_CRONET = 396;
    // Duo (go/tachyon)
    VISION = 100;
    // Vision (go/mobile-vision)
    SOCIAL_USER_LOCATION = 101;
    // Location Sharing (go/location-sharing)
    LAUNCHPAD_TOYS = 102;
    // Launchpad Toys (go/launchpadtoys)
    METALOG_COUNTERS = 103;
    // Counters for metalog (go/clearcut-metalog, iamawong@, clearcut-eng@)
    MOBILESDK_CLIENT = 104;
    // go/greenhouse
    ANDROID_VERIFY_APPS = 105;
    // go/safety-net
    ADSHIELD = 106;
    // go/adshield
    SHERLOG = 108;
    // Sherlog data (go/sherlog)
    LE_ULR_COUNTERS = 109;
    // Counters for ULR (go/gcore-ulr). Location custom events use LE.
    GMM_UE3 = 110;
    // Logs for GMM analytics and sessions (go/gca-analytics)
    CALENDAR = 111;
    // Google Android Calendar
    ENDER = 112;
    // Logs for Ender (go/ender)
    FAMILY_COMPASS = 113;
    // go/familycompass
    TRANSOM = 114;
    // Transom client-side metrics (go/transom)
    TRANSOM_COUNTERS = 115;
    // Counters for transom metrics
    LB_AS = 116;
    // App usage collected by the new UsageStats API (Lockbox project).
    LB_CFG = 117;
    // Device config collected by the new UsageStats API (Lockbox project).
    IOS_GSA = 118;
    // iOS GSA (Google Search App) stats
    TAP_AND_PAY_APP = 119;
    // Tap and Pay android app, aka Android pay app (go/tp2)
    TAP_AND_PAY_APP_COUNTERS = 265;
    // Tap and Pay android app counters
    FLYDROID = 120;
    // Logs for Flydroid (go/flydroid).
    CPANEL_APP = 121;
    // CPanel latency on mobile.
    ANDROID_SNET_GCORE = 122;
    // go/safety-net
    ANDROID_SNET_IDLE = 123;
    // go/safety-net
    ANDROID_SNET_JAR = 124;
    // go/safety-net
    CONTEXT_MANAGER = 125;
    // Logs for Context Manager (go/context-manager)
    CLASSROOM = 126;
    // App usage of the go/classroom app.
    TAILORMADE = 127;
    // Logs for Tailormade app (go/a1-tm)
    KEEP = 128;
    // Logs for Keep (go/keep).
    GMM_BRIIM_COUNTERS = 129;
    // GMM BRIIM counters (go/gmm-briim)
    CHROMECAST_APP_LOG = 130;
    // Logs for chromecast app (go/chromecastapplogs)
    ADWORDS_MOBILE = 133;
    // Logs for AdWords mobile app (go/awm)
    LEANBACK_EVENT = 134;
    // Logs for Android TV Leanback Launcher (go/android-tv)
    ANDROID_GMAIL = 135;
    // Logs for Gmail (go/android-gmail-clearcut, shahrk@, android-mail-team@)
    SAMPLE_SHM = 136;
    // Logs for system health metric and memory metric sample app (go/primes)
    GPLUS_ANDROID_PRIMES = 140;
    // Logs for system health metric for Gplus (go/primes)
    GPLUS_ANDROID_SYSTEM_HEALTH = 140;
    GMAIL_ANDROID_PRIMES = 150;
    // Logs for system health metric for GMail (go/primes)
    GMAIL_ANDROID_SYSTEM_HEALTH = 150;
    CALENDAR_ANDROID_PRIMES = 151;
    // Logs for system health metric for Calendar Android (go/primes)
    CALENDAR_ANDROID_SYSTEM_HEALTH = 151;
    DOCS_ANDROID_PRIMES = 152;
    // Logs for system health metric for Docs (go/primes)
    DOCS_ANDROID_SYSTEM_HEALTH = 152;
    YT_MAIN_APP_ANDROID_PRIMES = 154;
    // Logs for system health metric for the YouTube main app (go/primes)
    YT_KIDS_ANDROID_PRIMES = 155;
    // Logs for system health metric for the YouTube kids app (go/primes)
    YT_GAMING_ANDROID_PRIMES = 156;
    // Logs for system health metric for the YouTube gaming app (go/primes)
    YT_MUSIC_ANDROID_PRIMES = 157;
    // Logs for system health metric for the YouTube music app (go/primes)
    YT_LITE_ANDROID_PRIMES = 158;
    // Logs for system health metric for the YouTube lite app (go/primes)
    YT_CREATOR_ANDROID_PRIMES = 171;
    // Logs for system health metric for the YouTube Creator Studio app (go/primes)
    JAM_ANDROID_PRIMES = 159;
    // Logs for system health metric for Jam (go/jam, go/primes)
    JAM_KIOSK_ANDROID_PRIMES = 160;
    // Logs for system health metric for Jam Kiosk (go/jam, go/primes)
    PHOTOS_ANDROID_PRIMES = 165;
    // Logs for system health metric for Photos (go/primes)
    DRIVE_ANDROID_PRIMES = 166;
    // Logs for system health metric for Drive (go/primes)
    SHEETS_ANDROID_PRIMES = 167;
    // Logs for system health metric for Sheets (go/primes)
    SLIDES_ANDROID_PRIMES = 168;
    // Logs for system health metric for Slides (go/primes)
    SNAPSEED_ANDROID_PRIMES = 178;
    // Logs for system health metric for Snapseed (go/primes, go/snapseed).
    HANGOUTS_ANDROID_PRIMES = 179;
    // Logs for system health metric for Shem (go/primes, go/rtc-shem).
    INBOX_ANDROID_PRIMES = 180;
    // Logs for system health metric for Inbox (go/primes, go/bt-speed)
    INBOX_IOS_PRIMES = 262;
    // Logs for ios system health metric for Inbox (go/primes-ios, go/bt-speed)
    SDP_IOS_PRIMES = 287;
    // Logs for ios system health metric for sdp (go/primes-ios, go/bt-speed)
    GMSCORE_ANDROID_PRIMES = 193;
    // Logs for system health metric for GmsCore (go/primes)
    PLAY_MUSIC_ANDROID_WEAR_PRIMES = 200;
    // Logs for system health metric for Play Music for Android Wear (music-android-wear@, go/wear-play-music, go/primes)
    PLAY_MUSIC_ANDROID_WEAR_STANDALONE_PRIMES = 419;
    // Logs for system health metric for Play Music for Android Wear Standalone (music-android-wear@, go/music-wear-standalone-prd, go/primes)
    GEARHEAD_ANDROID_PRIMES = 201;
    // Logs for system health metric for the Android Auto (GearHead) app (go/primes, go/gearhead)
    INSTORE_CONSUMER_PRIMES = 207;
    // Logs for system health metric for Hands Free (go/primes, go/instore-wallet)
    SAMPLE_IOS_PRIMES = 202;
    // Logs for ios system health metric and memory metric sample app (go/primes-ios)
    CPANEL_ANDROID_PRIMES = 213;
    // Logs for android system health metric (go/cpanel-mobile)
    HUDDLE_ANDROID_PRIMES = 214;
    // Primes for Huddle (go/huddle)
    AWX_ANDROID_PRIMES = 222;
    // Primes for Google AdWords Express android app (go/primes, go/awx-android)
    GHS_ANDROID_PRIMES = 223;
    // Primes for Google Home Services android app (go/primes, go/sab-awx-android)
    ADWORDS_MOBILE_ANDROID_PRIMES = 224;
    // AdWords system health (go/awm, go/primes)
    TAP_AND_PAY_ANDROID_PRIMES = 227;
    // Primes for Tap and Pay android app, aka Android pay app (go/tp2)
    WALLET_APP_ANDROID_PRIMES = 232;
    // Primes for Wallet android app (go/gmoney)
    WALLET_APP_IOS_PRIMES = 233;
    // Primes for Wallet iOS app (go/gmoney)
    ANALYTICS_ANDROID_PRIMES = 235;
    // Logs for system health metric for Analytics Android app (go/primes)
    SPACES_ANDROID_PRIMES = 236;
    // Logs for the Spaces Android App (go/spaces)
    SPACES_IOS_PRIMES = 276;
    // Logs for the Spaces iOS App (go/spaces)
    SOCIETY_ANDROID_PRIMES = 238;
    // Logs for system health metric for Society (go/primes, go/society)
    GMM_BRIIM_PRIMES = 239;
    // Logs for system health metric for GMM BRIIM (go/gmm-briim)
    CW_PRIMES = 242;
    // Clockwork go/primes logs
    FAMILYLINK_ANDROID_PRIMES = 244;
    // Logs for system health metric for FamilyLink (go/primes)
    FAMILYLINK_IOS_PRIMES = 291;
    // Logs for ios system health metric for FamilyLink (go/primes-ios, go/familylink-ios-app)
    WH_PRIMES = 248;
    // Primes for Westinghouse (go/westinghouse, go/primes)
    NOVA_ANDROID_PRIMES = 249;
    // Nova client app system health metrics (go/primes)
    PHOTOS_DRAPER_ANDROID_PRIMES = 253;
    // Logs for system health metric for Photos Draper (go/primes, go/photos-draper)
    GMM_PRIMES = 254;
    // Logs for system health metric for aGMM (go/gmm)
    TRANSLATE_ANDROID_PRIMES = 255;
    // Logs for system health metric for Translate on Android (go/primes)
    TRANSLATE_IOS_PRIMES = 256;
    // Logs for system health metric for Translate on iOS (go/primes)
    FREIGHTER_ANDROID_PRIMES = 259;
    // Log for system health metric for Freighter (go/freighter)
    FLYDROID_ANDROID_PRIMES = 259;
    CONSUMERIQ_PRIMES = 260;
    // Log for system health metric for Consumer IQ (go/primes)
    GMB_ANDROID_PRIMES = 263;
    // Primes for Google My Business android app (go/gmb-android, go/primes).
    CLOUDDPC_PRIMES = 304;
    // Primes for CloudDpc (go/clouddpc)
    CLOUDDPC_ARC_PRIMES = 305;
    // Primes for CloudDpc for ARC (go/clouddpc)
    ICORE = 137;
    // iOS logging (go/ios-logging)
    PANCETTA_MOBILE_HOST = 138;
    // Logs for Pancetta mobile hosts (go/pancetta)
    PANCETTA_MOBILE_HOST_COUNTERS = 139;
    // Counters for Pancetta mobile hosts (go/pancetta)
    CROSSDEVICENOTIFICATION = 141;
    // Logs for cross device notification service (go/hotpocket)
    CROSSDEVICENOTIFICATION_DEV = 142;
    // Dev logs for cross device notification service (go/hotpocket)
    MAPS_API_COUNTERS = 143;
    // Android and iOS Maps API (go/mapview & go/meridian)
    GPU = 144;
    //Logs for Geo Photo Uploader (go/gpu-site)
    ON_THE_GO = 145;
    // Logs for OnTheGo (go/onthego)
    ON_THE_GO_COUNTERS = 146;
    // Counters for OnTheGo (go/onthego)
    ON_THE_GO_ANDROID_PRIMES = 330;
    // OnTheGo (go/onthego) Android app metric logging (go/primes)
    ON_THE_GO_IOS_PRIMES = 368;
    // OnTheGo (go/onthego) iOS app metric logging (go/primes)
    GMS_CORE_PEOPLE_AUTOCOMPLETE = 147;
    // Logs for Gcore People Autocomplete (go/yenta)
    FLYDROID_COUNTERS = 148;
    // Logs for Flydroid (go/flydroid).
    FIREBALL = 149;
    // Logs for Fireball (go/fireballdev)
    FIREBALL_COUNTERS = 257;
    // Fireball counters (go/fireballdev)
    CRONET_FIREBALL = 303;
    // Fireball cronet (go/fireballdev)
    FIREBALL_PRIMES = 266;
    // Logs for system health for Fireball (go/fireball-systemhealth-plan)
    FIREBALL_IOS_PRIMES = 313;
    // Logs for system health for Fireball iOS (go/fireball-systemhealth-plan)
    GOOGLE_HANDWRITING_INPUT_ANDROID_PRIMES = 314;
    // Primes for Google Handwriting Input (go/hwrime)
    PYROCLASM = 153;
    // Logs for Pyroclasm (go/pyroclasm)
    ANDROID_GSA_COUNTERS = 161;
    // Logs for AGSA counters.
    JAM_IMPRESSIONS = 162;
    // Impressions logs for Jam (go/jam).
    JAM_KIOSK_IMPRESSIONS = 163;
    // Impressions logs for Jam Kiosk (go/jam).
    PAYMENTS_OCR = 164;
    // Logs for payments ocr (go/cc-ocr-metrics).
    UNICORN_FAMILY_MANAGEMENT = 172;
    // Logs for Family management (and onboarding) go/familymanagement
    AUDITOR = 173;
    // Logs for Accesssibility Auditor (go/a11y-checker)
    NQLOOKUP = 174;
    // Logs for NQLookup (go/nqlookup, contact herrevad@google.com)
    ANDROID_GSA_HIGH_PRIORITY_EVENTS = 175;
    // Logs for high priority events in AGSA (go/click-tracking-agsa).
    ANDROID_DIALER = 176;
    // Logs for Android Dialer (go/android-dialer)
    CLEARCUT_DEMO = 177;
    // Logs for Clearcut's demo application
    APPMANAGER = 183;
    // Logs for Firebase App Manager (go/appmanager)
    SMARTLOCK_COUNTERS = 184;
    // Counters for Smart Lock (go/smartlock)
    EXPEDITIONS_GUIDE = 185;
    // Guide-aggregated logs for go/expeditions .
    FUSE = 186;
    // Logs for Fuse (go/fuse).
    PIXEL_PERFECT_CLIENT_STATE_LOGGER = 187;
    // Logs for PixelPerfect client app (go/pxp-client)
    PLATFORM_STATS_COUNTERS = 188;
    // Counters for platform stats.(go/androidplatformstats, clearcut-eng@)
    DRIVE_VIEWER = 189;
    // Google Drive Viewer Android and iOS apps (go/picoprojector)
    PDF_VIEWER = 190;
    // Google PDF Viewer Android app (go/picoprojector)
    BIGTOP = 191;
    // Logs for Bigtop (externally known as Inbox, go/bigtop).
    VOICE = 192;
    // Logs for Google Voice (go/googlevoice).
    MYFIBER = 194;
    // Logs for My Fiber mobile applications (go/myfibernative)
    RECORDED_PAGES = 195;
    // Logs for RecordedPages (go/recorded-pages)
    MOB_DOG = 197;
    // Logs for MobDog (go/mobdog)
    WALLET_APP = 198;
    // Logs for the Wallet app (go/gmoney)
    GBOARD = 199;
    // Logs for GBoard (go/gboard)
    CRONET_GMM = 203;
    // Cronet UMA logs from GMM (go/cronet-uma)
    TRUSTED_FACE = 204;
    // Logs for Trusted Face (go/smartlock)
    MATCHSTICK = 205;
    // Logs for Matchstick library (go/matchstick)
    MATCHSTICK_COUNTERS = 372;
    // Logs for Matchstick counters (go/matchstick)
    APP_CATALOG = 206;
    // Logs for AppCatalog aka "Get My Google Apps" (go/growth)
    BLUETOOTH = 208;
    // Logs for Bluetooth (go/fluoride)
    WIFI = 209;
    // Logs for WiFi (go/connectivity-site)
    TELECOM = 210;
    // Logs for Telcom (go/connectivity-site)
    TELEPHONY = 211;
    // Logs for Telephony (go/connectivity-site)
    IDENTITY_FRONTEND = 212;
    // Logs for the Identity frontend (go/ifus-readme)
    SESAME = 216;
    // Logs for Sesame (go/sesame-logging)
    GOOGLE_KEYBOARD_CONTENT = 217;
    // Google Keyboard's Latin IME content logs (go/google-keyboard)
    MADDEN = 218;
    // Logs for Madden (go/madden)
    INK = 219;
    // Logs for Ink (go/ink)
    ANDROID_CONTACTS = 220;
    // Logs for Android Contacts (go/android-contacts)
    GOOGLE_KEYBOARD_COUNTERS = 221;
    // Google Keyboard histogram counters (go/google-keyboard)
    CLEARCUT_PROBER = 225;
    // Clearcut prober (go/clearcut-prober)
    PLAY_CONSOLE_APP = 226;
    // Logs for the Google Play Developer Console app
    PLAY_CONSOLE_APP_PRIMES = 264;
    // Log for system health metrics for the Google Play Developer Console app
    SPECTRUM = 230;
    // Spectrum (go/spectrum-site)
    SPECTRUM_COUNTERS = 231;
    // Spectrum (go/spectrum-site)
    SPECTRUM_ANDROID_PRIMES = 267;
    // Spectrum (go/spectrum-site)
    IOS_SPOTLIGHT_SEARCH_LIBRARY = 234;
    // Logs for the iOS Spotlight Search Library (go/tempeh-dd)
    BOQ_WEB = 241;
    // Logs for client-side analytics of Boq Web (go/boq-web)
    ORCHESTRATION_CLIENT = 245;
    // Orchestration client logs for prod environment (go/megalogs-design)
    ORCHESTRATION_CLIENT_DEV = 246;
    // Orchestration client logs for dev environment (go/megalogs-design)
    GOOGLE_NOW_LAUNCHER = 247;
    // Logs for Google Now Launcher (go/gnl-logging)
    SCOOBY_SPAM_REPORT_LOG = 250;
    // Logs of spam reports by scooby clients. (go/scooby)
    IOS_GROWTH = 251;
    // go/growthkit-metrics
    APPS_NOTIFY = 252;
    // Drive web push notifications (go/apps-notify)
    SMARTKEY_APP = 269;
    // Smart Key App for project Bolt (go/smartlock)
    CLINICAL_STUDIES = 270;
    // Lifescience Clinical Studies logs (go/apollox)
    FITNESS_ANDROID_PRIMES = 271;
    // System health metric for Google Fit Android App (go/heart, go/primes)
    IMPROV_APPS = 272;
    // Deprecated in favor of IMPROV_POSTIT and IMPROV_SHARPIE.
    FAMILYLINK = 273;
    // Family Link (go/familylink-dd)
    FAMILYLINK_COUNTERS = 274;
    // Family Link counters (go/familylink-dd)
    SOCIETY = 275;
    // NBU Society app (go/society)
    DIALER_ANDROID_PRIMES = 277;
    // Android Dialer Primes (go/dialer)
    YOUTUBE_DIRECTOR_APP = 278;
    // YouTube Director App (go/youtube-director)
    TACHYON_ANDROID_PRIMES = 279;
    // Android Tachyon Client
    DRIVE_FS = 280;
    // DriveFS (go/drive-fs)
    YT_MAIN = 281;
    // Logs for YT's main application
    WING_MARKETPLACE_ANDROID_PRIMES = 282;
    // Primes for Wing Marketplace Android app (go/wing-marketplace-android, go/primes)
    DYNAMITE = 283;
    // Logs for Dynamite Web app (go/dynamite)
    CORP_ANDROID_FOOD = 284;
    // Logs for the internal Android Food app (g3doc/java/com/google/corp/bizapps/rews/food/android)
    ANDROID_MESSAGING_PRIMES = 285;
    // Primes for Android Messenger (go/bugledev, go/primes)
    GPLUS_IOS_PRIMES = 286;
    // Primes for Google+ iOS app (go/gplus-ios, go/primes)
    CHROMECAST_ANDROID_APP_PRIMES = 288;
    // Primes for Chromecast Android app (go/cast-apps)
    CAST_IOS_PRIMES = 344;
    // Primes for Cast iOS app (go/cast-apps)
    APPSTREAMING = 289;
    // Logs for AppStreaming Client Framework Side (go/piccard)
    GMB_ANDROID = 290;
    // Logs for GMB Android app (go/gmb-android).
    VOICE_IOS_PRIMES = 292;
    // Primes for iOS Google Voice (go/googlevoice).
    VOICE_ANDROID_PRIMES = 293;
    // Primes for Android Google Voice (go/googlevoice).
    PAISA = 294;
    // NBU Paisa app (go/paisa)
    NAZDEEK_USER_ANDROID_PRIMES = 315;
    // Primes for Nazdeek User (go/nazdeek).
    NAZDEEK_CAB_ANDROID_PRIMES = 316;
    // Primes for Nazdeek Cab (go/nazdeek).
    NAZDEEK_CAFE_ANDROID_PRIMES = 317;
    // Primes for Nazdeek Cafe (go/nazdeek).
    GMB_IOS = 295;
    // Logs for GMB iOS App (go/gmb-ios).
    GMB_IOS_PRIMES = 325;
    // Primes for GMB iOS App (go/gmb-ios).
    SCOOBY_EVENTS = 296;
    // Call logs events by scooby clients. (go/scooby)
    SNAPSEED_IOS_PRIMES = 297;
    // Primes for Snapseed IOS (go/Snapseed)
    YOUTUBE_DIRECTOR_IOS_PRIMES = 298;
    // YouTube Director App (go/youtube-director)
    WALLPAPER_PICKER = 299;
    // Event logs for Android wallpaper picker (go/magic-wallpapers)
    CHIME = 300;
    // Chime (go/chime)
    BEACON_GCORE = 301;
    // Logs for debugging beacon module (go/beacons)
    ANDROID_STUDIO = 302;
    // Android Studio (go/android-studio)
    DOCS_OFFLINE = 306;
    // Logs for Docs Offline on Desktop  (go/jetpax)
    FREIGHTER = 307;
    // Logs for Freighter (http://go/freighter)
    DOCS_IOS_PRIMES = 308;
    // Logs for the Google Docs iOS application
    SLIDES_IOS_PRIMES = 309;
    // Logs for the Google Docs iOS application
    SHEETS_IOS_PRIMES = 310;
    // Logs for the Google Docs iOS application
    IPCONNECTIVITY = 311;
    // Logs for Networking (go/connectivity-site)
    CURATOR = 312;
    // Logs for curator app (go/curator)
    CURATOR_ANDROID_PRIMES = 318;
    // Logs for system health metric for Curator (go/primes, go/curator)
    FITNESS_ANDROID_WEAR_PRIMES = 319;
    // System health metric for Google Fit Wear App (go/heart, go/primes)
    ANDROID_MIGRATE = 320;
    // Logs for Android Device Migration (go/android-migration).
    PAISA_USER_ANDROID_PRIMES = 321;
    // PRIMES logs for Paisa User App (go/paisa-user, go/primes).
    PAISA_MERCHANT_ANDROID_PRIMES = 322;
    // PRIMES logs for Paisa Merchant App (go/paisa-merchant, go/primes).
    CLIENT_LOGGING_PROD = 327;
    // go/client-logging-wg
    CLIENT_LOGGING_DEMO = 327;
    // alias for CLIENT_LOGGING_PROD, for the clients in the wild.
    LIVE_CHANNELS_ANDROID_PRIMES = 328;
    // PRIMES logs for Live Channels App (go/live-channels, go/primes).
    PAISA_USER_IOS_PRIMES = 329;
    // PRIMES logs for Paisa User iOS App (go/paisa-user, go/primes, go/paisa-ios).
    VESPA_IOS_PRIMES = 331;
    // PRIMES logs for Vespa iOS App (go/vespa)
    PLAY_GAMES_PRIMES = 332;
    // PRIMES logs for Play Games (go/gg-eng)
    GMSCORE_API_COUNTERS = 333;
    // GmsCore API counters (gmscore-framework@)
    EARTH = 334;
    // Logs for Google Earth (go/earthdev)
    EARTH_COUNTERS = 405;
    // The counters for Google Earth (go/earthdev, earth-dev@).
    CALENDAR_CLIENT = 335;
    // Logs for Calendar client events
    SV_ANDROID_PRIMES = 336;
    // Primes for Street View android app (go/svapp, go/primes).
    PHOTOS_IOS_PRIMES = 337;
    // Logs for Photos iOS App (go/photosios, go/primes)
    GARAGE_ANDROID_PRIMES = 338;
    // Logs for Garage Android App (go/garage, go/primes)
    GARAGE_IOS_PRIMES = 339;
    // Logs for Garage iOS App (go/garage, go/primes)
    SOCIAL_GOOD_DONATION_WIDGET = 340;
    // Logs for Social Good donation widget (go/onetoday)
    SANDCLOCK = 341;
    // Logs for SandClock app (go/sandclock).
    IMAGERY_VIEWER = 342;
    // Logs for Imagery Viewer (go/imagery-viewer)
    ADWORDS_EXPRESS_ANDROID_PRIMES = 343;
    // PRIMES logs for Adwords Express Android app.
    IMPROV_POSTIT = 345;
    // Logs for Improv Postit (go/improvlogging)
    IMPROV_SHARPIE = 346;
    // Logs for Improv Sharpie (go/improvlogging)
    DRAPER_IOS_PRIMES = 347;
    // Logs for Draper iOS App (go/draper-ios, go/primes)
    SMARTCAM = 348;
    // SmartCam app event (go/smartcam)
    DASHER_USERHUB = 349;
    // Client side logs for Dasher Userhub (go/userhub-on-boq).
    ANDROID_CONTACTS_PRIMES = 350;
    // PRIMES Logs for Android Contacts (go/android-contacts)
    ZAGAT_BURGUNDY_IOS_PRIMES = 351;
    // Logs for Zagat Burgundy iOS App (go/zagat-ios)
    ZAGAT_BURGUNDY_ANDROID_PRIMES = 352;
    // Logs for Zagat Burgundy Android App (go/zagat-android)
    CALENDAR_IOS_PRIMES = 353;
    // Logs for system health metric for Calendar iOS (go/primes-ios)
    SV_IOS_PRIMES = 354;
    // Primes for Street View android app (go/svapp, go/primes).
    SMART_SETUP = 355;
    // Logs for smart setup (go/smart-setup).
    BOOND_ANDROID_PRIMES = 356;
    // Logs for boond mobile app (go/village-mobile)
    KONG_ANDROID_PRIMES = 358;
    // PRIMES logs for Kong Android app (go/kong).
    CLASSROOM_IOS_PRIMES = 359;
    // Primes for Classroom iOS app (go/classroom-ios, go/primes).
    WESTINGHOUSE_COUNTERS = 360;
    // Counters for Westinghouse (go/westinghouse)
    WALLET_SDK_GCORE = 361;
    // Primes for GMSCore Wallet SDK (go/api-g3doc).
    ANDROID_IME_ANDROID_PRIMES = 362;
    // Primes for Android IME app (go/android-ime, go/primes).
    MEETINGS_ANDROID_PRIMES = 363;
    // Primes for Google Meet Android (go/thor-android).
    MEETINGS_IOS_PRIMES = 364;
    // Primes for Google Meet iOS (go/thor-ios).
    WEB_CONTACTS = 365;
    // Logs for Web Contacts (go/webcontacts-logging).
    ADS_INTEGRITY_OPS = 366;
    // Logs for Ads Integrity Ops Tools (go/hidoc).
    TOPAZ = 367;
    // Logs for Topaz (go/topaz).
    CLASSROOM_ANDROID_PRIMES = 369;
    // Primes for Classroom Android app (go/classroom-android, go/primes).
    THUNDERBIRD = 370;
    // Logs for Thunderbird (go/thunderbird).
    PULPFICTION = 371;
    // Logs for Pulpfiction Toys (go/pulpfiction).
    ONEGOOGLE = 373;
    // Logs for OneGoogle UI event (go/ogs-clearcut).
    TRANSLATE = 375;
    // Logs for Google Translate (go/translate).
    LIFESCIENCE_FRONTENDS = 376;
    // Logs for Lifescience Frontends (go/csp-eng).
    WALLPAPER_PICKER_COUNTERS = 377;
    // Counters/histograms for Android wallpaper picker (go/magic-wallpapers)
    MAGICTETHER_COUNTERS = 378;
    // Counters for Magic Tether (go/magic-tether).
    SOCIETY_COUNTERS = 379;
    // NBU Society app (go/society).
    UNICOMM_P = 380;
    // Logs for phone calls metadata (Unicorn project; see go/unicomm-sms-calls-dd)
    UNICOMM_S = 381;
    // Logs for SMS metadata (Unicorn project; see go/unicomm-sms-calls-dd)
    HALLWAY = 382;
    // Logs for Who's Down (go/hallway).
    SPACES = 383;
    // Logs for Spaces (go/spaces).
    TOOLKIT_QUICKSTART = 384;
    // Logs for Toolkit (go/toolkit).
    CHAUFFEUR_ANDROID_PRIMES = 385;
    // Primes for Chauffeur CarApp for Android (go/chauffeur)
    CHAUFFEUR_IOS_PRIMES = 386;
    // Primes for Chauffeur CarApp for iOS (go/chauffeur)
    FIDO = 387;
    // Logs for FIDO client events (go/fido-logging).
    MOBDOG_ANDROID_PRIMES = 388;
    // Logs for system health metric for MobDog Android (go/primes)
    MOBDOG_IOS_PRIMES = 389;
    // Logs for system health metric for MobDog iOS (go/primes)
    AWX_IOS_PRIMES = 391;
    // Primes for Google AdWords Express ios app (go/primes-ios, go/awx-ios-design-doc)
    GHS_IOS_PRIMES = 392;
    // Primes for Google Home Services ios app (go/primes-ios, go/has-ios-design)
    BOOKS_IOS_PRIMES = 393;
    // Primes for Play Books for iOS (go/ios-play-books)
    LINKS = 394;
    // Logs for Links (go/links).
    KATNIP_IOS_PRIMES = 395;
    // Primes for YouTube Creator Studio iOS (go/katnip)
    BOOKS_ANDROID_PRIMES = 397;
    // Primes for Android Play Books (go/android-books)
    DYNAMITE_ANDROID_PRIMES = 398;
    // Primes for Dynamite Android app (go/dynamite)
    DYNAMITE_IOS_PRIMES = 399;
    // Primes for Dynamite iOS app (go/dynamite)
    SIDELOADED_MUSIC = 400;
    // Sideloaded music on Android devices (go/sideloaded-assistant-sketch)
    CORP_ANDROID_DORY = 401;
    // Logs for the internal Dory app (go/dory)
    CORP_ANDROID_JETSET = 402;
    // Logs for the internal Jetset app (go/jetset)
    VR_SDK_IOS_PRIMES = 403;
    // Logs for the cardboard ios sdk app (https://developers.google.com/vr/ios/)
    VR_SDK_ANDROID_PRIMES = 404;
    // Logs for the cardboard android sdk app (https://developers.google.com/vr/android/)
    PHOTOS_SCANNER = 406;
    // Photos Scanner project (go/photos-draper)
    BG_IN_OGB = 407;
    // Logs for Botguard in OGB (go/botguard-in-ogb-dd)
    BLOGGER = 408;
    // Logs for Blogger Boq UX (go/blogger-boq)
    CORP_IOS_FOOD = 409;
    // Logs for the internal iOS Food app (go/food-ios)
    BEACON_GCORE_TEST = 410;
    // Logs for 909010 devices (go/909010)
    LINKS_IOS_PRIMES = 411;
    // Logs for the Links iOS app (go/links)
    CHAUFFEUR = 412;
    // Clearcut logs for Chauffeur (go/chauffeur)
    SNAPSEED = 413;
    // Logs for Snapseed (go/snapseed).
    EARTH_ANDROID_PRIMES = 414;
    // Logs for system health metric for Google Earth Android app (go/earthdev, go/primes)
    CORP_ANDROID_AIUTO = 415;
    // Logs for the internal Fixit app (go/aiuto).
    GFTV_MOBILE_PRIMES = 416;
    // Logs for Google Fiber TV Mobile App (go/gfiber-mobile)
    GMAIL_IOS = 417;
    // Logs for Gmail iOS (go/superduperpudu).
    TOPAZ_ANDROID_PRIMES = 418;
    // Primes for Topaz Android (go/topaz)
    SOCIAL_COUNTERS = 420;
    // Counters for social clients: gplus-log-quality@
    CORP_ANDROID_MOMA = 421;
    // Logs for the internal Moma app (go/moma-mobile)
    MEETINGS_LOG_REQUEST = 422;
    // Logs for Google Meet Android and iOS (go/thor-android and go/thor-ios)
    GDEAL = 423;
    // Logs for the gDeal app (https://g3doc.corp.google.com/java/com/google/corp/xanadu/g3doc/index.md?cl=head)
    GOOGLETTS = 424;
    // Logs for the Text-to-Speech Android app (go/tts)
    SEARCHLITE_ANDROID_PRIMES = 425;
    // Logs for Android GoogleLite app (go/googlelite)
    NEARBY_AUTH = 426;
    // Logs for Nearby Auth (go/nearby-auth)
    CORP_ANDROID_ASSISTANT = 427;
    // Logs for the internal Assistant app (go/assistant-app).
    DMAGENT_ANDROID_PRIMES = 428;
    // Primes for Device Policy android app (go/devices-site)
    CORP_ANDROID_GBUS = 429;
    // Logs for the internal GBus app (go/gbus).
    YOUTUBE_UNPLUGGED_IOS_PRIMES = 430;
    // YouTube Unplugged iOS (go/yt-unplugged)
    LEANBACK_LAUNCHER_PRIMES = 431;
    // Primes for Leanback Launcher on Android TV (go/atv-eng)
    DROIDGUARD = 432;
    // Next enum tag: 433
  }
  // Different types schedulers for log upload.
  enum SchedulerType {
    UNKNOWN_SCHEDULER = 0;
    ASAP = 1;
    // As soon as possible used when log store is full.
    DEFAULT_PERIODIC = 2;
    QOS_FAST_ONEOFF = 3;
    QOS_DEFAULT_PERIODIC = 4;
    QOS_UNMETERED_PERIODIC = 5;
  }
  // "Now", in milliseconds, according to the same clock as the one used to set
  // the 'event_time_ms' values in the LogEvent protos above.
  optional int64 request_time_ms = 4;
  // Current time since boot in milliseconds, including time spent in sleep,
  // according to the same clock as the one used to set
  // the 'event_uptime_ms' values in the LogEvent protos above.
  optional int64 request_uptime_ms = 8;
  optional .wireless_android_play_playlog.ClientInfo client_info = 1;
  optional .wireless_android_play_playlog.LogRequest.LogSource log_source = 2 [default = UNKNOWN];
  // If log_source is not present and log_source_name is present, the value of
  // log_source_name is parsed as a LogSource value and set to log_source.
  optional string log_source_name = 6;
  // cookie from pseudonymous id service at the time the event was posted
  optional string zwieback_cookie = 7;
  repeated .wireless_android_play_playlog.LogEvent log_event = 3;
  // Can be used instead of 'log_event' in order to save battery in cases where
  // LogEvent protos are already serialized, and deserializing is undesirable.
  // If used, this is a collection of byte streams each produced using a
  // CodedOutputStream.
  repeated bytes serialized_log_events = 5;
  // Quality of Service tier for log upload.
  optional .wireless_android_play_playlog.QosTierConfiguration.QosTier qos_tier = 9 [default = DEFAULT];
  // The type of log upload scheduler.
  optional .wireless_android_play_playlog.LogRequest.SchedulerType scheduler = 10;
  // Device status.
  optional .wireless_android_play_playlog.DeviceStatus device_status = 11;
  // A timestamp taken from a source external to the device. For example, a GPS
  // timestamp. This can be more accurate than the device wall clock, but is not
  // guaranteed to be. That will depend on the source, and on the device
  // hardware and software that obtains the timestamp.
  optional .wireless_android_play_playlog.ExternalTimestamp external_timestamp = 12;
  // Advisory to fork all log events in this request to debug storage and
  // console. This field may be set only by end user action.
  optional .wireless_android_play_playlog.CollectForDebug collect_for_debug = 13;
  extensions 1000 to 536870911;
}

// DeviceStatus captures device status including network connection status,
// battery status, and etc.
// Next tag: 5
message DeviceStatus {
  // Status of automatic date and time setting.
  enum AutomaticTime {
    // Device is using an older version of GmsCore (before U), or there was a
    // problem getting the setting.
    UNKNOWN = 0;
    // Automatic date and time was not enabled.
    AUTO_TIME_OFF = 1;
    // Automatic date and time was enabled.
    AUTO_TIME_ON = 2;
  }
  // Whether device network connection is unmetered.
  optional bool is_unmetered = 1;
  // Whether device is under charge. See link
  // http://developer.android.com/training/monitoring-device-state/battery-monitoring.html
  // This boolean returns true when status equals to
  // BatteryManager.BATTERY_STATUS_CHARGING || BatteryManager.BATTERY_STATUS_FULL
  optional bool is_charging = 2;
  // Whether automatic date and time is enabled on the device. See link
  // http://developer.android.com/reference/android/provider/Settings.Global.html#AUTO_TIME
  // Note, this does not guarantee correct device clock if NTP clock sync has
  // not occurred.
  optional .wireless_android_play_playlog.DeviceStatus.AutomaticTime auto_time_status = 3;
  // Is true if the device contains an account that has the @google.com domain.
  optional bool is_googler_device = 4;
}

// ExternalTimestamp captures a timestamp obtained by an external source. This
// can be GPS or clock sync over the network. The timestamp is typically old, so
// the device uptime when the timestamp was obtained is also included. The
// source of this timestamp must guarantee that the timestamp is not older than
// the most recent device boot.
// Next tag: 4
message ExternalTimestamp {
  // A timestamp given by an external source.
  optional int64 time_ms = 1;
  // The device uptime when the timestamp was recorded.
  optional int64 uptime_ms = 2;
  // The name of the source that provided the timestamp.
  optional string source = 3;
}

// CollectForDebug indicates that log events in the containing LogRequest may be
// forked to alternate short term storage for debug analysis.
message CollectForDebug {
  // Cut-off time for diverting log events to debug storage and console. This is
  // a client time from the same clock used to set event_time_ms. When adjusted
  // to server time, this defines the latest time at which logs will be forked
  // to a debug store and console. Expected values are a few days in the future
  // to any time in the past (that is, collection has stopped).
  optional int64 collect_until_ms = 1;
}

// QosTierConfiguration configures what Quality of Service tier should be
// applied to a given log source.
//
// Next tag: 3
message QosTierConfiguration {
  // Quality of Service tiers for Clearcut log upload.
  enum QosTier {
    // Use GcmNetworkManager to schedule logs upload every hour.
    DEFAULT = 0;
    // Log will be uploaded when the device is on an unmetered network.
    // Note that devices that rarely or never connect to unmetered networks
    // will end up losing many or all of these messages.
    UNMETERED_ONLY = 1;
    // Similar to the previous one, but if an upload opportunity does not arise
    // near to the end of the day, Clearcut will upload the data as soon as
    // the device is online (even if on a metered network).
    UNMETERED_OR_DAILY = 2;
    // Log will be uploaded as soon as the device is using the radio.
    // If not, log will be uploaded at the next DEFAULT-tier upload time.
    FAST_IF_RADIO_AWAKE = 3;
    // This is for server to override client QosTier setting.
    // If a certain log source's QosTier is set to NEVER, then Clearcut will
    // drop log events of that log source immediately and won't save them in
    // log store.
    NEVER = 4;
  }
  optional string log_source_name = 1;
  optional .wireless_android_play_playlog.QosTierConfiguration.QosTier qos_tier = 2;
}

// Next tag: 3
message QosTiersOverride {
  // Quality of Service tiers enforced by server for overriding client
  // qos_tier setting in event logging.
  // This usually happens when server is burdened with fast qos tiers.
  repeated .wireless_android_play_playlog.QosTierConfiguration qos_tier_configuration = 1;
  // The fingerprint of the qos_tier_configuration field.
  optional int64 qos_tier_fingerprint = 2;
}

// Next tag: 2
message LogSourceBatchingBlacklist {
  repeated string log_source_name = 1;
}

// Next tag: 5
message LogResponse {
  // Client should wait for next_request_wait_millis before sending the next
  // log request.
  optional int64 next_request_wait_millis = 1 [default = -1];
  // Quality of Service tiers enforced by server for overriding client
  // qos_tier setting in event logging.
  optional .wireless_android_play_playlog.QosTiersOverride qos_tier = 3;
  // Enforced by server for telling Clearcut uploader not to group log events
  // from certain log sources. If it is not set, client will try to group log
  // events together with the same upload context without considering log
  // sources restrictions. Upload context includes following info.
  // 1. PlayLoggerContext.isAnonymous
  // 2. PlayLoggerContext.uploadAccountName
  // 3. PlayLoggerContext.zwiebackCookie
  // 4. PlayLoggerContext.qosTier
  optional .wireless_android_play_playlog.LogSourceBatchingBlacklist log_source_batching_blacklist = 4;
}


