Skip to main content

perfetto_protos/
perfetto.protos.rs

1// This file is @generated by prost-build.
2#[derive(Clone, PartialEq, ::prost::Message)]
3pub struct ObservableEvents {
4    #[prost(message, repeated, tag = "1")]
5    pub instance_state_changes: ::prost::alloc::vec::Vec<
6        observable_events::DataSourceInstanceStateChange,
7    >,
8    #[prost(bool, optional, tag = "2")]
9    pub all_data_sources_started: ::core::option::Option<bool>,
10    #[prost(message, optional, tag = "3")]
11    pub clone_trigger_hit: ::core::option::Option<observable_events::CloneTriggerHit>,
12}
13/// Nested message and enum types in `ObservableEvents`.
14pub mod observable_events {
15    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16    pub struct DataSourceInstanceStateChange {
17        #[prost(string, optional, tag = "1")]
18        pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
19        #[prost(string, optional, tag = "2")]
20        pub data_source_name: ::core::option::Option<::prost::alloc::string::String>,
21        #[prost(enumeration = "DataSourceInstanceState", optional, tag = "3")]
22        pub state: ::core::option::Option<i32>,
23    }
24    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25    pub struct CloneTriggerHit {
26        /// The TracingSessionID of the original tracing session which had a
27        /// CLONE_SNAPSHOT trigger defined. This is necessary just because the
28        /// consumer has no idea of what is the TSID of its own tracing session and
29        /// there is no other good way to plumb it.
30        #[prost(int64, optional, tag = "1")]
31        pub tracing_session_id: ::core::option::Option<i64>,
32        /// The name of the CLONE_SNAPSHOT trigger which was hit.
33        #[prost(string, optional, tag = "2")]
34        pub trigger_name: ::core::option::Option<::prost::alloc::string::String>,
35        /// The name of the producer that sent the CLONE_SNAPSHOT trigger.
36        #[prost(string, optional, tag = "3")]
37        pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
38        /// The uid of the producer that sent the CLONE_SNAPSHOT trigger.
39        #[prost(uint32, optional, tag = "4")]
40        pub producer_uid: ::core::option::Option<u32>,
41        /// The timestamp of the CLONE_SNAPSHOT trigger which was hit.
42        #[prost(uint64, optional, tag = "5")]
43        pub boot_time_ns: ::core::option::Option<u64>,
44        /// The configured delay of the CLONE_SNAPSHOT trigger which was hit. For
45        /// informational purposes only.
46        #[prost(uint64, optional, tag = "6")]
47        pub trigger_delay_ms: ::core::option::Option<u64>,
48    }
49    /// Note: internally these are used as OR flags. Next values: 4, 8, 16, ...
50    #[derive(
51        Clone,
52        Copy,
53        Debug,
54        PartialEq,
55        Eq,
56        Hash,
57        PartialOrd,
58        Ord,
59        ::prost::Enumeration
60    )]
61    #[repr(i32)]
62    pub enum Type {
63        Unspecified = 0,
64        /// State changes of data source instances associated with the consumer's
65        /// session. Note that not all data sources may support these notifications.
66        /// See |will_notify_on_start/stop| in DataSourceDescriptor.
67        DataSourcesInstances = 1,
68        /// State change triggered when all data sources are in the STARTED state.
69        /// For data sources that registered with |will_notify_on_start| this happens
70        /// only after the data source has acked the start. This allows the consumer
71        /// to synchronize with the data sources and to perform actions (e.g. start a
72        /// test binary) only after trace recording is actually started.
73        /// Introduced in Android 11 (R).
74        AllDataSourcesStarted = 2,
75        /// When a tracing session has one or more triggers of type CLONE_SNAPSHOT
76        /// and a matching trigger is hit, the service will send this notification to
77        /// the consumer after |stop_delay_ms|.
78        CloneTriggerHit = 4,
79    }
80    impl Type {
81        /// String value of the enum field names used in the ProtoBuf definition.
82        ///
83        /// The values are not transformed in any way and thus are considered stable
84        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
85        pub fn as_str_name(&self) -> &'static str {
86            match self {
87                Self::Unspecified => "TYPE_UNSPECIFIED",
88                Self::DataSourcesInstances => "TYPE_DATA_SOURCES_INSTANCES",
89                Self::AllDataSourcesStarted => "TYPE_ALL_DATA_SOURCES_STARTED",
90                Self::CloneTriggerHit => "TYPE_CLONE_TRIGGER_HIT",
91            }
92        }
93        /// Creates an enum from field names used in the ProtoBuf definition.
94        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
95            match value {
96                "TYPE_UNSPECIFIED" => Some(Self::Unspecified),
97                "TYPE_DATA_SOURCES_INSTANCES" => Some(Self::DataSourcesInstances),
98                "TYPE_ALL_DATA_SOURCES_STARTED" => Some(Self::AllDataSourcesStarted),
99                "TYPE_CLONE_TRIGGER_HIT" => Some(Self::CloneTriggerHit),
100                _ => None,
101            }
102        }
103    }
104    #[derive(
105        Clone,
106        Copy,
107        Debug,
108        PartialEq,
109        Eq,
110        Hash,
111        PartialOrd,
112        Ord,
113        ::prost::Enumeration
114    )]
115    #[repr(i32)]
116    pub enum DataSourceInstanceState {
117        /// A data source is created in stopped state.
118        Stopped = 1,
119        Started = 2,
120    }
121    impl DataSourceInstanceState {
122        /// String value of the enum field names used in the ProtoBuf definition.
123        ///
124        /// The values are not transformed in any way and thus are considered stable
125        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
126        pub fn as_str_name(&self) -> &'static str {
127            match self {
128                Self::Stopped => "DATA_SOURCE_INSTANCE_STATE_STOPPED",
129                Self::Started => "DATA_SOURCE_INSTANCE_STATE_STARTED",
130            }
131        }
132        /// Creates an enum from field names used in the ProtoBuf definition.
133        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
134            match value {
135                "DATA_SOURCE_INSTANCE_STATE_STOPPED" => Some(Self::Stopped),
136                "DATA_SOURCE_INSTANCE_STATE_STARTED" => Some(Self::Started),
137                _ => None,
138            }
139        }
140    }
141}
142#[derive(Clone, PartialEq, ::prost::Message)]
143pub struct FtraceDescriptor {
144    /// Report the available atrace categories.
145    ///
146    /// Used by Traceur via `perfetto --query`.
147    #[prost(message, repeated, tag = "1")]
148    pub atrace_categories: ::prost::alloc::vec::Vec<ftrace_descriptor::AtraceCategory>,
149}
150/// Nested message and enum types in `FtraceDescriptor`.
151pub mod ftrace_descriptor {
152    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
153    pub struct AtraceCategory {
154        #[prost(string, optional, tag = "1")]
155        pub name: ::core::option::Option<::prost::alloc::string::String>,
156        #[prost(string, optional, tag = "2")]
157        pub description: ::core::option::Option<::prost::alloc::string::String>,
158    }
159}
160/// Description of GPU counters.
161/// This message is sent by a GPU counter producer to specify the counters
162/// available in the hardware.
163#[derive(Clone, PartialEq, ::prost::Message)]
164pub struct GpuCounterDescriptor {
165    #[prost(message, repeated, tag = "1")]
166    pub specs: ::prost::alloc::vec::Vec<gpu_counter_descriptor::GpuCounterSpec>,
167    #[prost(message, repeated, tag = "2")]
168    pub blocks: ::prost::alloc::vec::Vec<gpu_counter_descriptor::GpuCounterBlock>,
169    #[prost(message, repeated, tag = "6")]
170    pub counter_groups: ::prost::alloc::vec::Vec<
171        gpu_counter_descriptor::GpuCounterGroupSpec,
172    >,
173    /// optional.  Minimum sampling period supported by the producer in
174    /// nanoseconds.
175    #[prost(uint64, optional, tag = "3")]
176    pub min_sampling_period_ns: ::core::option::Option<u64>,
177    /// optional.  Maximum sampling period supported by the producer in
178    /// nanoseconds.
179    #[prost(uint64, optional, tag = "4")]
180    pub max_sampling_period_ns: ::core::option::Option<u64>,
181    /// optional.  The producer supports counter sampling by instrumenting the
182    /// command buffer.
183    #[prost(bool, optional, tag = "5")]
184    pub supports_instrumented_sampling: ::core::option::Option<bool>,
185    /// optional.  The producer supports selecting counters by name via
186    /// GpuCounterConfig.counter_names. Not all producers support this; Android
187    /// GPU producers typically do not.
188    #[prost(bool, optional, tag = "7")]
189    pub supports_counter_names: ::core::option::Option<bool>,
190    /// optional.  The producer supports glob patterns in
191    /// GpuCounterConfig.counter_names for matching multiple counters by name.
192    #[prost(bool, optional, tag = "8")]
193    pub supports_counter_name_globs: ::core::option::Option<bool>,
194}
195/// Nested message and enum types in `GpuCounterDescriptor`.
196pub mod gpu_counter_descriptor {
197    #[derive(Clone, PartialEq, ::prost::Message)]
198    pub struct GpuCounterSpec {
199        #[prost(uint32, optional, tag = "1")]
200        pub counter_id: ::core::option::Option<u32>,
201        #[prost(string, optional, tag = "2")]
202        pub name: ::core::option::Option<::prost::alloc::string::String>,
203        #[prost(string, optional, tag = "3")]
204        pub description: ::core::option::Option<::prost::alloc::string::String>,
205        #[prost(enumeration = "MeasureUnit", repeated, packed = "false", tag = "7")]
206        pub numerator_units: ::prost::alloc::vec::Vec<i32>,
207        #[prost(enumeration = "MeasureUnit", repeated, packed = "false", tag = "8")]
208        pub denominator_units: ::prost::alloc::vec::Vec<i32>,
209        #[prost(bool, optional, tag = "9")]
210        pub select_by_default: ::core::option::Option<bool>,
211        #[prost(enumeration = "GpuCounterGroup", repeated, packed = "false", tag = "10")]
212        pub groups: ::prost::alloc::vec::Vec<i32>,
213        #[prost(enumeration = "gpu_counter_spec::ValueDirection", optional, tag = "11")]
214        pub value_direction: ::core::option::Option<i32>,
215        #[prost(oneof = "gpu_counter_spec::PeakValue", tags = "5, 6")]
216        pub peak_value: ::core::option::Option<gpu_counter_spec::PeakValue>,
217    }
218    /// Nested message and enum types in `GpuCounterSpec`.
219    pub mod gpu_counter_spec {
220        /// Direction of the time interval that each emitted sample applies to.
221        /// A GPU counter is sampled at discrete timestamps, but its value really
222        /// represents a measurement over some interval around that timestamp
223        /// (e.g. average GPU utilization over the sampling window). This field
224        /// tells trace processor on which side of the timestamp that interval
225        /// lies, which controls where the value is drawn in the UI.
226        ///
227        /// Example: samples at t=10, 20, 30 with values 5, 7, 0.
228        ///    BACKWARDS_LOOKING: 5 covers (-inf, 10], 7 covers (10, 20], 0 covers
229        ///      (20, 30]; the UI draws 7 between t=10 and t=20.
230        ///    FORWARDS_LOOKING:  5 covers [10, 20), 7 covers [20, 30), 0 covers
231        ///      [30, +inf); the UI draws 5 between t=10 and t=20.
232        #[derive(
233            Clone,
234            Copy,
235            Debug,
236            PartialEq,
237            Eq,
238            Hash,
239            PartialOrd,
240            Ord,
241            ::prost::Enumeration
242        )]
243        #[repr(i32)]
244        pub enum ValueDirection {
245            /// Treated as BACKWARDS_LOOKING (the historical default).
246            Unspecified = 0,
247            /// The value applies to the interval ending at this event's timestamp.
248            /// This is the convention used by AGI and most existing GPU producers,
249            /// where a sample reports what happened during the window leading up
250            /// to the timestamp.
251            BackwardsLooking = 1,
252            /// The value applies to the interval starting at this event's
253            /// timestamp, matching standard Perfetto counters. Producers that emit
254            /// explicit zero samples to denote "no activity from here on" should
255            /// use this so the zero is not back-propagated over earlier non-zero
256            /// samples (<https://github.com/google/perfetto/issues/5683>).
257            ForwardsLooking = 2,
258        }
259        impl ValueDirection {
260            /// String value of the enum field names used in the ProtoBuf definition.
261            ///
262            /// The values are not transformed in any way and thus are considered stable
263            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
264            pub fn as_str_name(&self) -> &'static str {
265                match self {
266                    Self::Unspecified => "VALUE_DIRECTION_UNSPECIFIED",
267                    Self::BackwardsLooking => "VALUE_DIRECTION_BACKWARDS_LOOKING",
268                    Self::ForwardsLooking => "VALUE_DIRECTION_FORWARDS_LOOKING",
269                }
270            }
271            /// Creates an enum from field names used in the ProtoBuf definition.
272            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
273                match value {
274                    "VALUE_DIRECTION_UNSPECIFIED" => Some(Self::Unspecified),
275                    "VALUE_DIRECTION_BACKWARDS_LOOKING" => Some(Self::BackwardsLooking),
276                    "VALUE_DIRECTION_FORWARDS_LOOKING" => Some(Self::ForwardsLooking),
277                    _ => None,
278                }
279            }
280        }
281        #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
282        pub enum PeakValue {
283            #[prost(int64, tag = "5")]
284            IntPeakValue(i64),
285            #[prost(double, tag = "6")]
286            DoublePeakValue(f64),
287        }
288    }
289    /// Allow producer to group counters into block to represent counter islands.
290    /// A capacity may be specified to indicate the number of counters that can be
291    /// enable simultaneously in that block.
292    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
293    pub struct GpuCounterBlock {
294        /// required. Unique ID for the counter group.
295        #[prost(uint32, optional, tag = "1")]
296        pub block_id: ::core::option::Option<u32>,
297        /// optional. Number of counters supported by the block. No limit if unset.
298        #[prost(uint32, optional, tag = "2")]
299        pub block_capacity: ::core::option::Option<u32>,
300        /// optional. Name of block.
301        #[prost(string, optional, tag = "3")]
302        pub name: ::core::option::Option<::prost::alloc::string::String>,
303        /// optional. Description for the block.
304        #[prost(string, optional, tag = "4")]
305        pub description: ::core::option::Option<::prost::alloc::string::String>,
306        /// list of counters that are part of the block.
307        #[prost(uint32, repeated, packed = "false", tag = "5")]
308        pub counter_ids: ::prost::alloc::vec::Vec<u32>,
309    }
310    /// Allow producer to define custom counter groups. Unlike the fixed
311    /// GpuCounterGroup enum (which provides broad categories), these groups
312    /// let the producer define hardware-specific groupings that the UI uses
313    /// to organize counter tracks. Can also be used to provide display names
314    /// and descriptions for the fixed GpuCounterGroup enum values by setting
315    /// group_id to the enum value.
316    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
317    pub struct GpuCounterGroupSpec {
318        /// required. Unique ID for this group within the descriptor.
319        #[prost(uint32, optional, tag = "1")]
320        pub group_id: ::core::option::Option<u32>,
321        /// optional. Display name for the group.
322        #[prost(string, optional, tag = "2")]
323        pub name: ::core::option::Option<::prost::alloc::string::String>,
324        /// optional. Description of the group.
325        #[prost(string, optional, tag = "3")]
326        pub description: ::core::option::Option<::prost::alloc::string::String>,
327        /// Counters that belong directly to this group (by counter_id).
328        #[prost(uint32, repeated, packed = "false", tag = "4")]
329        pub counter_ids: ::prost::alloc::vec::Vec<u32>,
330    }
331    /// Logical groups for a counter.  This is used in the UI to present the
332    /// related counters together.
333    #[derive(
334        Clone,
335        Copy,
336        Debug,
337        PartialEq,
338        Eq,
339        Hash,
340        PartialOrd,
341        Ord,
342        ::prost::Enumeration
343    )]
344    #[repr(i32)]
345    pub enum GpuCounterGroup {
346        Unclassified = 0,
347        System = 1,
348        Vertices = 2,
349        Fragments = 3,
350        Primitives = 4,
351        /// Includes counters relating to caching and bandwidth.
352        Memory = 5,
353        Compute = 6,
354        RayTracing = 7,
355    }
356    impl GpuCounterGroup {
357        /// String value of the enum field names used in the ProtoBuf definition.
358        ///
359        /// The values are not transformed in any way and thus are considered stable
360        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
361        pub fn as_str_name(&self) -> &'static str {
362            match self {
363                Self::Unclassified => "UNCLASSIFIED",
364                Self::System => "SYSTEM",
365                Self::Vertices => "VERTICES",
366                Self::Fragments => "FRAGMENTS",
367                Self::Primitives => "PRIMITIVES",
368                Self::Memory => "MEMORY",
369                Self::Compute => "COMPUTE",
370                Self::RayTracing => "RAY_TRACING",
371            }
372        }
373        /// Creates an enum from field names used in the ProtoBuf definition.
374        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
375            match value {
376                "UNCLASSIFIED" => Some(Self::Unclassified),
377                "SYSTEM" => Some(Self::System),
378                "VERTICES" => Some(Self::Vertices),
379                "FRAGMENTS" => Some(Self::Fragments),
380                "PRIMITIVES" => Some(Self::Primitives),
381                "MEMORY" => Some(Self::Memory),
382                "COMPUTE" => Some(Self::Compute),
383                "RAY_TRACING" => Some(Self::RayTracing),
384                _ => None,
385            }
386        }
387    }
388    /// next id: 41
389    #[derive(
390        Clone,
391        Copy,
392        Debug,
393        PartialEq,
394        Eq,
395        Hash,
396        PartialOrd,
397        Ord,
398        ::prost::Enumeration
399    )]
400    #[repr(i32)]
401    pub enum MeasureUnit {
402        None = 0,
403        Bit = 1,
404        Kilobit = 2,
405        Megabit = 3,
406        Gigabit = 4,
407        Terabit = 5,
408        Petabit = 6,
409        Byte = 7,
410        Kilobyte = 8,
411        Megabyte = 9,
412        Gigabyte = 10,
413        Terabyte = 11,
414        Petabyte = 12,
415        Hertz = 13,
416        Kilohertz = 14,
417        Megahertz = 15,
418        Gigahertz = 16,
419        Terahertz = 17,
420        Petahertz = 18,
421        Nanosecond = 19,
422        Microsecond = 20,
423        Millisecond = 21,
424        Second = 22,
425        Minute = 23,
426        Hour = 24,
427        Vertex = 25,
428        Pixel = 26,
429        Triangle = 27,
430        Primitive = 38,
431        Fragment = 39,
432        Milliwatt = 28,
433        Watt = 29,
434        Kilowatt = 30,
435        Joule = 31,
436        Volt = 32,
437        Ampere = 33,
438        Celsius = 34,
439        Fahrenheit = 35,
440        Kelvin = 36,
441        /// Values should be out of 100.
442        Percent = 37,
443        Instruction = 40,
444    }
445    impl MeasureUnit {
446        /// String value of the enum field names used in the ProtoBuf definition.
447        ///
448        /// The values are not transformed in any way and thus are considered stable
449        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
450        pub fn as_str_name(&self) -> &'static str {
451            match self {
452                Self::None => "NONE",
453                Self::Bit => "BIT",
454                Self::Kilobit => "KILOBIT",
455                Self::Megabit => "MEGABIT",
456                Self::Gigabit => "GIGABIT",
457                Self::Terabit => "TERABIT",
458                Self::Petabit => "PETABIT",
459                Self::Byte => "BYTE",
460                Self::Kilobyte => "KILOBYTE",
461                Self::Megabyte => "MEGABYTE",
462                Self::Gigabyte => "GIGABYTE",
463                Self::Terabyte => "TERABYTE",
464                Self::Petabyte => "PETABYTE",
465                Self::Hertz => "HERTZ",
466                Self::Kilohertz => "KILOHERTZ",
467                Self::Megahertz => "MEGAHERTZ",
468                Self::Gigahertz => "GIGAHERTZ",
469                Self::Terahertz => "TERAHERTZ",
470                Self::Petahertz => "PETAHERTZ",
471                Self::Nanosecond => "NANOSECOND",
472                Self::Microsecond => "MICROSECOND",
473                Self::Millisecond => "MILLISECOND",
474                Self::Second => "SECOND",
475                Self::Minute => "MINUTE",
476                Self::Hour => "HOUR",
477                Self::Vertex => "VERTEX",
478                Self::Pixel => "PIXEL",
479                Self::Triangle => "TRIANGLE",
480                Self::Primitive => "PRIMITIVE",
481                Self::Fragment => "FRAGMENT",
482                Self::Milliwatt => "MILLIWATT",
483                Self::Watt => "WATT",
484                Self::Kilowatt => "KILOWATT",
485                Self::Joule => "JOULE",
486                Self::Volt => "VOLT",
487                Self::Ampere => "AMPERE",
488                Self::Celsius => "CELSIUS",
489                Self::Fahrenheit => "FAHRENHEIT",
490                Self::Kelvin => "KELVIN",
491                Self::Percent => "PERCENT",
492                Self::Instruction => "INSTRUCTION",
493            }
494        }
495        /// Creates an enum from field names used in the ProtoBuf definition.
496        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
497            match value {
498                "NONE" => Some(Self::None),
499                "BIT" => Some(Self::Bit),
500                "KILOBIT" => Some(Self::Kilobit),
501                "MEGABIT" => Some(Self::Megabit),
502                "GIGABIT" => Some(Self::Gigabit),
503                "TERABIT" => Some(Self::Terabit),
504                "PETABIT" => Some(Self::Petabit),
505                "BYTE" => Some(Self::Byte),
506                "KILOBYTE" => Some(Self::Kilobyte),
507                "MEGABYTE" => Some(Self::Megabyte),
508                "GIGABYTE" => Some(Self::Gigabyte),
509                "TERABYTE" => Some(Self::Terabyte),
510                "PETABYTE" => Some(Self::Petabyte),
511                "HERTZ" => Some(Self::Hertz),
512                "KILOHERTZ" => Some(Self::Kilohertz),
513                "MEGAHERTZ" => Some(Self::Megahertz),
514                "GIGAHERTZ" => Some(Self::Gigahertz),
515                "TERAHERTZ" => Some(Self::Terahertz),
516                "PETAHERTZ" => Some(Self::Petahertz),
517                "NANOSECOND" => Some(Self::Nanosecond),
518                "MICROSECOND" => Some(Self::Microsecond),
519                "MILLISECOND" => Some(Self::Millisecond),
520                "SECOND" => Some(Self::Second),
521                "MINUTE" => Some(Self::Minute),
522                "HOUR" => Some(Self::Hour),
523                "VERTEX" => Some(Self::Vertex),
524                "PIXEL" => Some(Self::Pixel),
525                "TRIANGLE" => Some(Self::Triangle),
526                "PRIMITIVE" => Some(Self::Primitive),
527                "FRAGMENT" => Some(Self::Fragment),
528                "MILLIWATT" => Some(Self::Milliwatt),
529                "WATT" => Some(Self::Watt),
530                "KILOWATT" => Some(Self::Kilowatt),
531                "JOULE" => Some(Self::Joule),
532                "VOLT" => Some(Self::Volt),
533                "AMPERE" => Some(Self::Ampere),
534                "CELSIUS" => Some(Self::Celsius),
535                "FAHRENHEIT" => Some(Self::Fahrenheit),
536                "KELVIN" => Some(Self::Kelvin),
537                "PERCENT" => Some(Self::Percent),
538                "INSTRUCTION" => Some(Self::Instruction),
539                _ => None,
540            }
541        }
542    }
543}
544#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
545pub struct TrackEventCategory {
546    #[prost(string, optional, tag = "1")]
547    pub name: ::core::option::Option<::prost::alloc::string::String>,
548    #[prost(string, optional, tag = "2")]
549    pub description: ::core::option::Option<::prost::alloc::string::String>,
550    #[prost(string, repeated, tag = "3")]
551    pub tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
552}
553#[derive(Clone, PartialEq, ::prost::Message)]
554pub struct TrackEventDescriptor {
555    #[prost(message, repeated, tag = "1")]
556    pub available_categories: ::prost::alloc::vec::Vec<TrackEventCategory>,
557}
558#[derive(Clone, PartialEq, ::prost::Message)]
559pub struct VmProgram {
560    #[prost(uint32, optional, tag = "1")]
561    pub version: ::core::option::Option<u32>,
562    #[prost(message, repeated, tag = "2")]
563    pub instructions: ::prost::alloc::vec::Vec<VmInstruction>,
564}
565#[derive(Clone, PartialEq, ::prost::Message)]
566pub struct VmInstruction {
567    #[prost(enumeration = "vm_instruction::AbortLevel", optional, tag = "6")]
568    pub abort_level: ::core::option::Option<i32>,
569    /// Sub-instructions executed if the current instruction succeeds
570    #[prost(message, repeated, tag = "7")]
571    pub nested_instructions: ::prost::alloc::vec::Vec<VmInstruction>,
572    #[prost(oneof = "vm_instruction::Operation", tags = "1, 2, 3, 4, 5")]
573    pub operation: ::core::option::Option<vm_instruction::Operation>,
574}
575/// Nested message and enum types in `VmInstruction`.
576pub mod vm_instruction {
577    #[derive(
578        Clone,
579        Copy,
580        Debug,
581        PartialEq,
582        Eq,
583        Hash,
584        PartialOrd,
585        Ord,
586        ::prost::Enumeration
587    )]
588    #[repr(i32)]
589    pub enum AbortLevel {
590        /// Skip current instruction but execute following ones
591        SkipCurrentInstruction = 1,
592        /// Skip current instruction as well as following ones (default)
593        SkipCurrentInstructionAndBreakOuter = 2,
594        /// Abort whole program
595        Abort = 3,
596    }
597    impl AbortLevel {
598        /// String value of the enum field names used in the ProtoBuf definition.
599        ///
600        /// The values are not transformed in any way and thus are considered stable
601        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
602        pub fn as_str_name(&self) -> &'static str {
603            match self {
604                Self::SkipCurrentInstruction => "SKIP_CURRENT_INSTRUCTION",
605                Self::SkipCurrentInstructionAndBreakOuter => {
606                    "SKIP_CURRENT_INSTRUCTION_AND_BREAK_OUTER"
607                }
608                Self::Abort => "ABORT",
609            }
610        }
611        /// Creates an enum from field names used in the ProtoBuf definition.
612        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
613            match value {
614                "SKIP_CURRENT_INSTRUCTION" => Some(Self::SkipCurrentInstruction),
615                "SKIP_CURRENT_INSTRUCTION_AND_BREAK_OUTER" => {
616                    Some(Self::SkipCurrentInstructionAndBreakOuter)
617                }
618                "ABORT" => Some(Self::Abort),
619                _ => None,
620            }
621        }
622    }
623    #[derive(Clone, PartialEq, ::prost::Oneof)]
624    pub enum Operation {
625        #[prost(message, tag = "1")]
626        Select(super::VmOpSelect),
627        #[prost(message, tag = "2")]
628        RegLoad(super::VmOpRegLoad),
629        #[prost(message, tag = "3")]
630        Merge(super::VmOpMerge),
631        #[prost(message, tag = "4")]
632        Set(super::VmOpSet),
633        #[prost(message, tag = "5")]
634        Del(super::VmOpDel),
635    }
636}
637#[derive(Clone, PartialEq, ::prost::Message)]
638pub struct VmOpSelect {
639    /// Enum SRC|DST|BOTH. Default=SRC.
640    #[prost(enumeration = "VmCursorEnum", optional, tag = "1")]
641    pub cursor: ::core::option::Option<i32>,
642    #[prost(message, repeated, tag = "2")]
643    pub relative_path: ::prost::alloc::vec::Vec<vm_op_select::PathComponent>,
644    /// Creates the submessage if doesn't exist in the DST cursor
645    /// (think of mkdir -p). Only valid when cursor=DST|BOTH.
646    #[prost(bool, optional, tag = "3")]
647    pub create_if_not_exist: ::core::option::Option<bool>,
648}
649/// Nested message and enum types in `VmOpSelect`.
650pub mod vm_op_select {
651    /// A path component is either: (1) a field id to descend into (common case);
652    /// (2) an array index (for repeated fields); (3) a map lookup operation (for
653    /// repeated fields, where we snoop a sub-field as a map key)
654    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
655    pub struct PathComponent {
656        /// Only valid when using field_id. This makes select have foreach
657        /// semantics. This means that the body of nested_instructions is
658        /// executed several times, once per each repeated submessage.
659        #[prost(bool, optional, tag = "5")]
660        pub is_repeated: ::core::option::Option<bool>,
661        /// Only valid when using map_key_field_id. This defines which
662        /// register (R1..R32) should be used to match the key of the dict
663        /// in a map lookup operation.
664        /// In other words:
665        /// foreach msg in repeated message {
666        ///    if msg\[map_key_field_id\] == R\[register_to_match\] {
667        ///       break;  // Lookup succeeded, PathComponent resolves here.
668        ///    }
669        /// }
670        #[prost(uint32, optional, tag = "6")]
671        pub register_to_match: ::core::option::Option<u32>,
672        /// Only valid when using field_id and is_repeated=true. When iterating
673        /// over repeated fields, stores the current iteration index into the
674        /// the register R1..R32 defined below. This can be used to do complex
675        /// operations like "find the entry in the array that has width==100,
676        /// remember its offset in the SRC array and overwrite the matching
677        /// i-th element in the DST array. We will probably never implement
678        /// this but it's here for completeness.
679        #[prost(uint32, optional, tag = "7")]
680        pub store_foreach_index_into_register: ::core::option::Option<u32>,
681        #[prost(oneof = "path_component::Field", tags = "1, 2, 3")]
682        pub field: ::core::option::Option<path_component::Field>,
683    }
684    /// Nested message and enum types in `PathComponent`.
685    pub mod path_component {
686        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
687        pub enum Field {
688            #[prost(uint32, tag = "1")]
689            FieldId(u32),
690            #[prost(uint32, tag = "2")]
691            ArrayIndex(u32),
692            /// The ID of the field in the repeated submessage that we
693            /// use as a key (e.g. LayerState.layer_id). When setting this
694            /// register_to_match must also be set, to tell what's the
695            /// expected value of the key we are looking up.
696            #[prost(uint32, tag = "3")]
697            MapKeyFieldId(u32),
698        }
699    }
700}
701#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
702pub struct VmOpRegLoad {
703    /// SRC(default) | DST.
704    #[prost(enumeration = "VmCursorEnum", optional, tag = "1")]
705    pub cursor: ::core::option::Option<i32>,
706    /// 1=R1, 2=R2... 32=R32
707    #[prost(uint32, optional, tag = "2")]
708    pub dst_register: ::core::option::Option<u32>,
709}
710/// Merges SRC into DST. Both need to point to a message (not a field).
711#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
712pub struct VmOpMerge {
713    /// When true, the merge operation will skip any field that is already
714    /// resolved as a message node in the destination tree.
715    ///
716    /// This is used to support merging of nested messages. Because ProtoVM
717    /// does not know the schema, a standard MERGE cannot distinguish
718    /// between a string and a message on the wire and it would overwrite
719    /// the entire blob, destroying granular updates.
720    ///
721    /// By setting this to true, a program can be implemented to do a
722    /// bottom-up, multi-step merge by traversing into and merging
723    /// the deepest submessages first, then moving up to the parent
724    /// message and merging it with skip_submessages = true.
725    #[prost(bool, optional, tag = "1")]
726    pub skip_submessages: ::core::option::Option<bool>,
727    /// When true, the merge operation will remove the dst field if the src field
728    /// is empty.
729    ///
730    /// This can be used to replicate the removal of a subobject within the
731    /// producer's state. E.g.
732    /// This event on the producer side: mProducerState.mSubobject = nullptr
733    /// can be represented by this patch: { producer_state { subobject {} }}
734    #[prost(bool, optional, tag = "2")]
735    pub del_if_src_empty: ::core::option::Option<bool>,
736}
737/// Copies SRC into DST. If a message, replaces the DST node, discarding any
738/// pre-existing field.
739#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
740pub struct VmOpSet {}
741/// Delete the field or message pointed by DST.
742#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
743pub struct VmOpDel {}
744#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
745#[repr(i32)]
746pub enum VmCursorEnum {
747    VmCursorUnspecified = 0,
748    VmCursorSrc = 1,
749    VmCursorDst = 2,
750    VmCursorBoth = 3,
751}
752impl VmCursorEnum {
753    /// String value of the enum field names used in the ProtoBuf definition.
754    ///
755    /// The values are not transformed in any way and thus are considered stable
756    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
757    pub fn as_str_name(&self) -> &'static str {
758        match self {
759            Self::VmCursorUnspecified => "VM_CURSOR_UNSPECIFIED",
760            Self::VmCursorSrc => "VM_CURSOR_SRC",
761            Self::VmCursorDst => "VM_CURSOR_DST",
762            Self::VmCursorBoth => "VM_CURSOR_BOTH",
763        }
764    }
765    /// Creates an enum from field names used in the ProtoBuf definition.
766    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
767        match value {
768            "VM_CURSOR_UNSPECIFIED" => Some(Self::VmCursorUnspecified),
769            "VM_CURSOR_SRC" => Some(Self::VmCursorSrc),
770            "VM_CURSOR_DST" => Some(Self::VmCursorDst),
771            "VM_CURSOR_BOTH" => Some(Self::VmCursorBoth),
772            _ => None,
773        }
774    }
775}
776/// This message is sent from Producer(s) to the tracing Service when registering
777/// to advertise their capabilities. It describes the structure of tracing
778/// protos that will be produced by the data source and the supported filters.
779#[derive(Clone, PartialEq, ::prost::Message)]
780pub struct DataSourceDescriptor {
781    /// e.g., "linux.ftrace", "chromium.tracing"
782    #[prost(string, optional, tag = "1")]
783    pub name: ::core::option::Option<::prost::alloc::string::String>,
784    /// When non-zero, this is a unique ID within the scope of the Producer for
785    /// this data source (it is NOT globally unique). This is useful to
786    /// differentiate between data sources with matching names when calling
787    /// UpdateDataSource(). This field has been introduced in November 2021
788    /// (v22, Android T) and is not supported on older versions.
789    #[prost(uint64, optional, tag = "7")]
790    pub id: ::core::option::Option<u64>,
791    /// When true the data source is expected to ack the stop request through the
792    /// NotifyDataSourceStopped() IPC. This field has been introduced after
793    /// Android P in Jul 2018 and is not supported on older versions.
794    #[prost(bool, optional, tag = "2")]
795    pub will_notify_on_stop: ::core::option::Option<bool>,
796    /// When true the data source is expected to ack the start request through the
797    /// NotifyDataSourceStarted() IPC. This field has been introduced after
798    /// Android P in March 2019 and is not supported on older versions.
799    #[prost(bool, optional, tag = "3")]
800    pub will_notify_on_start: ::core::option::Option<bool>,
801    /// If true, opt into receiving the ClearIncrementalState() IPC. This should be
802    /// set if the data source writes packets that refer to previous trace
803    /// contents, and knows how to stop referring to the already-emitted data.
804    #[prost(bool, optional, tag = "4")]
805    pub handles_incremental_state_clear: ::core::option::Option<bool>,
806    /// If true, indicates that the data source does nothing upon Flush. This
807    /// allows the service to reduce the flush-related IPC traffic and better deal
808    /// with frozen producers (see go/perfetto-frozen). This is usually the case
809    /// for data sources like 'track_event' that don't have access to the various
810    /// thread task runners to post a flush task and rely purely on server-side
811    /// scraping.
812    /// Introduced in v39 / Android V.
813    #[prost(bool, optional, tag = "9")]
814    pub no_flush: ::core::option::Option<bool>,
815    /// If present, the tracing service executes this program within a ProtoVM to
816    /// process overwritten packets (patches). The service computes a hash of the
817    /// program to detect and disambiguate between different versions; if multiple
818    /// versions (from different producers) are specified for the same data source,
819    /// the service instantiates a dedicated ProtoVM for each.
820    #[prost(message, optional, tag = "10")]
821    pub protovm_program: ::core::option::Option<VmProgram>,
822    /// Optional specification about available GPU counters.
823    #[prost(message, optional, tag = "5")]
824    pub gpu_counter_descriptor: ::core::option::Option<GpuCounterDescriptor>,
825    #[prost(message, optional, tag = "6")]
826    pub track_event_descriptor: ::core::option::Option<TrackEventDescriptor>,
827    #[prost(message, optional, tag = "8")]
828    pub ftrace_descriptor: ::core::option::Option<FtraceDescriptor>,
829}
830/// Reports the state of the tracing service. Used to gather details about the
831/// data sources connected.
832/// See ConsumerPort::QueryServiceState().
833#[derive(Clone, PartialEq, ::prost::Message)]
834pub struct TracingServiceState {
835    /// Lists all the producers connected.
836    #[prost(message, repeated, tag = "1")]
837    pub producers: ::prost::alloc::vec::Vec<tracing_service_state::Producer>,
838    /// Lists the data sources available.
839    #[prost(message, repeated, tag = "2")]
840    pub data_sources: ::prost::alloc::vec::Vec<tracing_service_state::DataSource>,
841    /// Lists the tracing sessions active AND owned by a consumer that has the same
842    /// UID of the caller (or all of them if the caller is root).
843    /// Introduced in v24 / Android T.
844    #[prost(message, repeated, tag = "6")]
845    pub tracing_sessions: ::prost::alloc::vec::Vec<
846        tracing_service_state::TracingSession,
847    >,
848    /// This is always set to true from v24 and beyond. This flag is only used to
849    /// tell the difference between: (1) talking to a recent service which happens
850    /// to have no tracing session active; (2) talking to an older version of the
851    /// service which will never report any tracing session.
852    #[prost(bool, optional, tag = "7")]
853    pub supports_tracing_sessions: ::core::option::Option<bool>,
854    /// Total number of tracing sessions.
855    #[prost(int32, optional, tag = "3")]
856    pub num_sessions: ::core::option::Option<i32>,
857    /// Number of tracing sessions in the started state. Always <= num_sessions.
858    #[prost(int32, optional, tag = "4")]
859    pub num_sessions_started: ::core::option::Option<i32>,
860    /// The version of traced (the same returned by `traced --version`).
861    /// This is a human readable string with and its format varies depending on
862    /// the build system and the repo (standalone vs AOSP).
863    /// This is intended for human debugging only.
864    #[prost(string, optional, tag = "5")]
865    pub tracing_service_version: ::core::option::Option<::prost::alloc::string::String>,
866}
867/// Nested message and enum types in `TracingServiceState`.
868pub mod tracing_service_state {
869    /// Describes a producer process.
870    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
871    pub struct Producer {
872        /// Unique ID of the producer (monotonic counter).
873        #[prost(int32, optional, tag = "1")]
874        pub id: ::core::option::Option<i32>,
875        /// Typically matches the process name.
876        #[prost(string, optional, tag = "2")]
877        pub name: ::core::option::Option<::prost::alloc::string::String>,
878        /// Unix pid of the remote process. Supported only on Linux-based systems.
879        /// Introduced in v24 / Android T.
880        #[prost(int32, optional, tag = "5")]
881        pub pid: ::core::option::Option<i32>,
882        /// Unix uid of the remote process.
883        #[prost(int32, optional, tag = "3")]
884        pub uid: ::core::option::Option<i32>,
885        /// The version of the client library used by the producer.
886        /// This is a human readable string with and its format varies depending on
887        /// the build system and the repo (standalone vs AOSP).
888        /// This is intended for human debugging only.
889        #[prost(string, optional, tag = "4")]
890        pub sdk_version: ::core::option::Option<::prost::alloc::string::String>,
891        /// Returns true if the process appears to be frozen (Android only).
892        /// Introduced in Perfetto V49 / Android 24Q4.
893        #[prost(bool, optional, tag = "6")]
894        pub frozen: ::core::option::Option<bool>,
895        /// Identifies the machine this producer is connected from in multi-machine
896        /// tracing setups (e.g. when going through traced_relay). Unset (or zero)
897        /// means the producer is connected from the local/host machine where the
898        /// tracing service is running.
899        /// Introduced in Perfetto V56 / Android 26Q3.
900        #[prost(uint32, optional, tag = "7")]
901        pub machine_id: ::core::option::Option<u32>,
902        /// Human-readable name of the machine, as advertised by the relay (usually
903        /// the value of PERFETTO_MACHINE_NAME on the remote, falling back to the
904        /// remote's `uname -s`). Only set when machine_id is non-zero.
905        /// Introduced in Perfetto V56 / Android 26Q3.
906        #[prost(string, optional, tag = "8")]
907        pub machine_name: ::core::option::Option<::prost::alloc::string::String>,
908    }
909    /// Describes a data source registered by a producer. Data sources are listed
910    /// regardless of the fact that they are being used or not.
911    #[derive(Clone, PartialEq, ::prost::Message)]
912    pub struct DataSource {
913        /// Descriptor passed by the data source when calling RegisterDataSource().
914        #[prost(message, optional, tag = "1")]
915        pub ds_descriptor: ::core::option::Option<super::DataSourceDescriptor>,
916        /// ID of the producer, as per Producer.id.
917        #[prost(int32, optional, tag = "2")]
918        pub producer_id: ::core::option::Option<i32>,
919    }
920    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
921    pub struct TracingSession {
922        /// The TracingSessionID.
923        #[prost(uint64, optional, tag = "1")]
924        pub id: ::core::option::Option<u64>,
925        /// The Unix uid of the consumer that started the session.
926        /// This is meaningful only if the caller is root. In all other cases only
927        /// tracing sessions that match the caller UID will be displayed.
928        #[prost(int32, optional, tag = "2")]
929        pub consumer_uid: ::core::option::Option<i32>,
930        /// Internal state of the tracing session.
931        /// These strings are FYI only and subjected to change.
932        #[prost(string, optional, tag = "3")]
933        pub state: ::core::option::Option<::prost::alloc::string::String>,
934        /// The unique_session_name as set in the trace config (might be empty).
935        #[prost(string, optional, tag = "4")]
936        pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
937        /// The number and size of each buffer.
938        #[prost(uint32, repeated, packed = "false", tag = "5")]
939        pub buffer_size_kb: ::prost::alloc::vec::Vec<u32>,
940        /// Duration, as specified in the TraceConfig.duration_ms.
941        #[prost(uint32, optional, tag = "6")]
942        pub duration_ms: ::core::option::Option<u32>,
943        /// Number of data sources involved in the session.
944        #[prost(uint32, optional, tag = "7")]
945        pub num_data_sources: ::core::option::Option<u32>,
946        /// Time when the session was started, in the CLOCK_REALTIME domain.
947        /// Available only on Linux-based systems.
948        #[prost(int64, optional, tag = "8")]
949        pub start_realtime_ns: ::core::option::Option<i64>,
950        /// The bugreport_score, as set in TraceConfig.bugreport_score.
951        #[prost(int32, optional, tag = "9")]
952        pub bugreport_score: ::core::option::Option<i32>,
953        /// As per TraceConfig.bugreport_filename.
954        #[prost(string, optional, tag = "10")]
955        pub bugreport_filename: ::core::option::Option<::prost::alloc::string::String>,
956        /// If true, the session is in the STARTED state. If false the session is in
957        /// any other state (see `state` field).
958        #[prost(bool, optional, tag = "11")]
959        pub is_started: ::core::option::Option<bool>,
960    }
961}
962#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
963pub struct TracingServiceCapabilities {
964    /// Whether the service supports QueryCapabilities() at all or not.
965    /// This is only used at the C++ level to distinguish the case of talking to
966    /// an older version of the service that doesn't support QueryCapabilities().
967    /// In that case the IPC layer will just reject the unknown call, and the
968    /// consumer_ipc_client_impl.cc will return an empty message where this field
969    /// is false. In all other cases, this is always set to true.
970    #[prost(bool, optional, tag = "1")]
971    pub has_query_capabilities: ::core::option::Option<bool>,
972    /// The set of known events that can be passed to ConsumerPort.ObserveEvents().
973    #[prost(
974        enumeration = "observable_events::Type",
975        repeated,
976        packed = "false",
977        tag = "2"
978    )]
979    pub observable_events: ::prost::alloc::vec::Vec<i32>,
980    /// Whether the service supports TraceConfig.output_path (for asking traced to
981    /// create the output file instead of passing a file descriptor).
982    #[prost(bool, optional, tag = "3")]
983    pub has_trace_config_output_path: ::core::option::Option<bool>,
984    /// Whether the service supports CloneSession and CLONE_SNAPSHOT triggers.
985    #[prost(bool, optional, tag = "4")]
986    pub has_clone_session: ::core::option::Option<bool>,
987}
988/// Statistics for the internals of the tracing service.
989///
990/// Next id: 19.
991#[derive(Clone, PartialEq, ::prost::Message)]
992pub struct TraceStats {
993    /// Stats for the TraceBuffer(s) of the current trace session.
994    #[prost(message, repeated, tag = "1")]
995    pub buffer_stats: ::prost::alloc::vec::Vec<trace_stats::BufferStats>,
996    /// The thresholds of each the `writer_stats` histogram buckets. This is
997    /// emitted only once as all WriterStats share the same bucket layout.
998    /// This field has the same cardinality of the
999    /// `writer_stats.chunk_payload_histogram_{counts,sum}` - 1.
1000    /// (The -1 is because the last overflow bucket is not reported in the _def).
1001    /// An array of values \[10, 100, 1000\] in the _def array means that there are
1002    /// four buckets (3 + the implicit overflow bucket):
1003    /// \[0\]: x <= 10; \[1\]: 100 < x <= 1000; \[2\]: 1000 < x <= 1000; \[3\]: x > 1000.
1004    #[prost(int64, repeated, packed = "false", tag = "17")]
1005    pub chunk_payload_histogram_def: ::prost::alloc::vec::Vec<i64>,
1006    #[prost(message, repeated, tag = "18")]
1007    pub writer_stats: ::prost::alloc::vec::Vec<trace_stats::WriterStats>,
1008    /// Num. producers connected (whether they are involved in the current tracing
1009    /// session or not).
1010    #[prost(uint32, optional, tag = "2")]
1011    pub producers_connected: ::core::option::Option<u32>,
1012    /// Num. producers ever seen for all trace sessions since startup (it's a good
1013    /// proxy for inferring num. producers crashed / killed).
1014    #[prost(uint64, optional, tag = "3")]
1015    pub producers_seen: ::core::option::Option<u64>,
1016    /// Num. data sources registered for all trace sessions.
1017    #[prost(uint32, optional, tag = "4")]
1018    pub data_sources_registered: ::core::option::Option<u32>,
1019    /// Num. data sources ever seen for all trace sessions since startup.
1020    #[prost(uint64, optional, tag = "5")]
1021    pub data_sources_seen: ::core::option::Option<u64>,
1022    /// Num. concurrently active tracing sessions.
1023    #[prost(uint32, optional, tag = "6")]
1024    pub tracing_sessions: ::core::option::Option<u32>,
1025    /// Num. buffers for all tracing session (not just the current one). This will
1026    /// be >= buffer_stats.size(), because the latter is only about the current
1027    /// session.
1028    #[prost(uint32, optional, tag = "7")]
1029    pub total_buffers: ::core::option::Option<u32>,
1030    /// Num. chunks that were discarded by the service before attempting to commit
1031    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
1032    #[prost(uint64, optional, tag = "8")]
1033    pub chunks_discarded: ::core::option::Option<u64>,
1034    /// Num. patches that were discarded by the service before attempting to apply
1035    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
1036    #[prost(uint64, optional, tag = "9")]
1037    pub patches_discarded: ::core::option::Option<u64>,
1038    /// Packets that failed validation of the TrustedPacket. If this is > 0, there
1039    /// is a bug in the producer.
1040    #[prost(uint64, optional, tag = "10")]
1041    pub invalid_packets: ::core::option::Option<u64>,
1042    #[prost(message, optional, tag = "11")]
1043    pub filter_stats: ::core::option::Option<trace_stats::FilterStats>,
1044    /// Count of Flush() requests (either from the Consumer, or self-induced
1045    /// periodic flushes). The final Flush() is also included in the count.
1046    #[prost(uint64, optional, tag = "12")]
1047    pub flushes_requested: ::core::option::Option<u64>,
1048    /// The count of the Flush() requests that were completed successfully.
1049    /// In a well behaving trace this should always be == `flush_requests`.
1050    #[prost(uint64, optional, tag = "13")]
1051    pub flushes_succeeded: ::core::option::Option<u64>,
1052    /// The count of the Flush() requests that failed (in most timed out).
1053    /// In a well behaving trace this should always be == 0.
1054    #[prost(uint64, optional, tag = "14")]
1055    pub flushes_failed: ::core::option::Option<u64>,
1056    #[prost(enumeration = "trace_stats::FinalFlushOutcome", optional, tag = "15")]
1057    pub final_flush_outcome: ::core::option::Option<i32>,
1058}
1059/// Nested message and enum types in `TraceStats`.
1060pub mod trace_stats {
1061    /// From TraceBuffer::Stats.
1062    ///
1063    /// Next id: 25.
1064    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1065    pub struct BufferStats {
1066        /// Size of the circular buffer in bytes.
1067        #[prost(uint64, optional, tag = "12")]
1068        pub buffer_size: ::core::option::Option<u64>,
1069        /// Num. bytes written into the circular buffer, including chunk headers.
1070        #[prost(uint64, optional, tag = "1")]
1071        pub bytes_written: ::core::option::Option<u64>,
1072        /// Num. bytes overwritten before they have been read (i.e. loss of data).
1073        #[prost(uint64, optional, tag = "13")]
1074        pub bytes_overwritten: ::core::option::Option<u64>,
1075        /// Total size of chunks that were fully read from the circular buffer by the
1076        /// consumer. This may not be equal to |bytes_written| either in the middle
1077        /// of tracing, or if |chunks_overwritten| is non-zero. Note that this is the
1078        /// size of the chunks read from the buffer, including chunk headers, which
1079        /// will be different from the total size of packets returned to the
1080        /// consumer.
1081        ///
1082        /// The current utilization of the trace buffer (mid-tracing) can be obtained
1083        /// by subtracting |bytes_read| and |bytes_overwritten| from |bytes_written|,
1084        /// adding the difference of |padding_bytes_written| and
1085        /// |padding_bytes_cleared|, and comparing this sum to the |buffer_size|.
1086        /// Note that this represents the total size of buffered data in the buffer,
1087        /// yet this data may be spread non-contiguously through the buffer and may
1088        /// be overridden before the utilization reaches 100%.
1089        #[prost(uint64, optional, tag = "14")]
1090        pub bytes_read: ::core::option::Option<u64>,
1091        /// Num. bytes that were allocated as padding between chunks in the circular
1092        /// buffer.
1093        #[prost(uint64, optional, tag = "15")]
1094        pub padding_bytes_written: ::core::option::Option<u64>,
1095        /// Num. of padding bytes that were removed from the circular buffer when
1096        /// they were overwritten.
1097        ///
1098        /// The difference between |padding_bytes_written| and
1099        /// |padding_bytes_cleared| denotes the total size of padding currently
1100        /// present in the buffer.
1101        #[prost(uint64, optional, tag = "16")]
1102        pub padding_bytes_cleared: ::core::option::Option<u64>,
1103        /// Num. chunks (!= packets) written into the buffer.
1104        #[prost(uint64, optional, tag = "2")]
1105        pub chunks_written: ::core::option::Option<u64>,
1106        /// Num. chunks (!= packets) rewritten into the buffer. This means we rewrote
1107        /// the same chunk with additional packets appended to the end.
1108        #[prost(uint64, optional, tag = "10")]
1109        pub chunks_rewritten: ::core::option::Option<u64>,
1110        /// TraceBufferV2 only. Num. chunks that we moved to the write cursor
1111        /// instead of rewriting in place. We do this for scraped chunks that have
1112        /// been fully read: their old position can be so close to the write cursor
1113        /// that the packets we just recovered would be overwritten before any read.
1114        ///
1115        /// Introduced in v59 / Android 26Q3+.
1116        #[prost(uint64, optional, tag = "20")]
1117        pub chunks_relocated: ::core::option::Option<u64>,
1118        /// Num. chunks overwritten before they have been read (i.e. loss of data).
1119        #[prost(uint64, optional, tag = "3")]
1120        pub chunks_overwritten: ::core::option::Option<u64>,
1121        /// Num. chunks discarded (i.e. loss of data). For SMB chunks, this can be
1122        /// > 0 only when a buffer is configured with FillPolicy == DISCARD.
1123        /// TraceBufferV2 also counts SMB v2 batches rejected because their
1124        /// producer has a ProtoVM on this buffer.
1125        #[prost(uint64, optional, tag = "18")]
1126        pub chunks_discarded: ::core::option::Option<u64>,
1127        /// Num. chunks (!= packets) that were fully read from the circular buffer by
1128        /// the consumer. This may not be equal to |chunks_written| either in the
1129        /// middle of tracing, or if |chunks_overwritten| is non-zero.
1130        #[prost(uint64, optional, tag = "17")]
1131        pub chunks_read: ::core::option::Option<u64>,
1132        /// Num. chunks that were committed out of order.
1133        #[prost(uint64, optional, tag = "11")]
1134        pub chunks_committed_out_of_order: ::core::option::Option<u64>,
1135        /// Num. times the ring buffer wrapped around.
1136        #[prost(uint64, optional, tag = "4")]
1137        pub write_wrap_count: ::core::option::Option<u64>,
1138        /// Number of completed TraceBufferV2 compactions.
1139        /// Includes compactions that move no chunks and excludes calls that skip
1140        /// compaction, such as calls on DISCARD or read-only buffers.
1141        ///
1142        /// Compaction moves remaining chunks to the front and clears the unused
1143        /// tail.
1144        /// It keeps the pages that a similar write cycle can reuse, and releases
1145        /// the other whole pages where supported.
1146        /// The next writes start after the remaining chunks, which can reduce how
1147        /// often |write_wrap_count| and |chunks_overwritten| increase.
1148        /// Incomplete chunks can remain until later writes overwrite them.
1149        ///
1150        /// Introduced in v59 / Android 26Q4+.
1151        #[prost(uint64, optional, tag = "23")]
1152        pub compactions: ::core::option::Option<u64>,
1153        /// Number of TraceBufferV2 compactions skipped because live chunks were
1154        /// on both sides of the write cursor.
1155        ///
1156        /// Introduced in v59 / Android 26Q4+.
1157        #[prost(uint64, optional, tag = "24")]
1158        pub compactions_skipped: ::core::option::Option<u64>,
1159        /// Num. out-of-band (OOB) patches that succeeded.
1160        #[prost(uint64, optional, tag = "5")]
1161        pub patches_succeeded: ::core::option::Option<u64>,
1162        /// Num. OOB patches that failed (e.g., the chunk to patch was gone).
1163        #[prost(uint64, optional, tag = "6")]
1164        pub patches_failed: ::core::option::Option<u64>,
1165        /// Num. readaheads (for large multi-chunk packet reads) that ended up in a
1166        /// successful packet read.
1167        #[prost(uint64, optional, tag = "7")]
1168        pub readaheads_succeeded: ::core::option::Option<u64>,
1169        /// Num. readaheads aborted because of missing chunks in the sequence stream.
1170        /// Note that a small number > 0 is totally expected: occasionally, when
1171        /// issuing a read, the very last packet in a sequence might be incomplete
1172        /// (because the producer is still writing it while we read). The read will
1173        /// stop at that point, for that sequence, increasing this counter.
1174        #[prost(uint64, optional, tag = "8")]
1175        pub readaheads_failed: ::core::option::Option<u64>,
1176        /// Num. of violations of the SharedMemoryABI or the shared ring buffer ABI
1177        /// found while writing or reading the buffer. This includes SMB v2 packets
1178        /// that TraceBufferV2 cannot rewrite because they are malformed or nest
1179        /// more than 128 groups. It also includes chunks whose writer ID already
1180        /// uses the other input format.
1181        /// This is an indication of either a bug in the producer(s) or malicious
1182        /// producer(s).
1183        #[prost(uint64, optional, tag = "9")]
1184        pub abi_violations: ::core::option::Option<u64>,
1185        /// Num. of times the service detected packet loss on a trace writer
1186        /// sequence. This is usually caused by exhaustion of available chunks in the
1187        /// writer process's SMB. Note that this relies on the client's TraceWriter
1188        /// indicating this loss to the service -- packets lost for other reasons are
1189        /// not reflected in this stat.
1190        #[prost(uint64, optional, tag = "19")]
1191        pub trace_writer_packet_loss: ::core::option::Option<u64>,
1192        /// TraceBufferV2 only. Num. SMB v2 packets dropped at read time because
1193        /// they contain a nested message larger than 256 MiB, the limit of the
1194        /// four-byte length field. The packet can be valid. Loss is reported on the
1195        /// next packet of the same sequence.
1196        #[prost(uint64, optional, tag = "22")]
1197        pub oversized_packets_dropped: ::core::option::Option<u64>,
1198    }
1199    /// Per TraceWriter stat. Each {producer, trace writer} tuple is publicly
1200    /// visible as a unique sequence ID in the trace.
1201    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1202    pub struct WriterStats {
1203        /// This matches the TracePacket.trusted_packet_sequence_id and is used to
1204        /// correlate the stats with the actual packet types.
1205        #[prost(uint64, optional, tag = "1")]
1206        pub sequence_id: ::core::option::Option<u64>,
1207        /// The buffer index (0..N, as defined in the TraceConfig).
1208        #[prost(uint32, optional, tag = "4")]
1209        pub buffer: ::core::option::Option<u32>,
1210        /// These two arrays have the same cardinality and match the cardinality of
1211        /// chunk_payload_histogram_def + 1 (for the overflow bucket, see below).
1212        /// `sum` contains the SUM(entries) and `counts` contains the COUNT(entries)
1213        /// for each bucket.
1214        #[prost(uint64, repeated, tag = "2")]
1215        pub chunk_payload_histogram_counts: ::prost::alloc::vec::Vec<u64>,
1216        #[prost(int64, repeated, tag = "3")]
1217        pub chunk_payload_histogram_sum: ::prost::alloc::vec::Vec<i64>,
1218    }
1219    /// This is set only when the TraceConfig specifies a TraceFilter.
1220    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1221    pub struct FilterStats {
1222        #[prost(uint64, optional, tag = "1")]
1223        pub input_packets: ::core::option::Option<u64>,
1224        #[prost(uint64, optional, tag = "2")]
1225        pub input_bytes: ::core::option::Option<u64>,
1226        #[prost(uint64, optional, tag = "3")]
1227        pub output_bytes: ::core::option::Option<u64>,
1228        #[prost(uint64, optional, tag = "4")]
1229        pub errors: ::core::option::Option<u64>,
1230        #[prost(uint64, optional, tag = "5")]
1231        pub time_taken_ns: ::core::option::Option<u64>,
1232        /// The number of bytes discarded by the filter (i.e. output - input).
1233        /// The array has one entry for each buffer defined in the config (unless no
1234        /// packets for that buffer were seen and hence filtered).
1235        /// Note: the SUM(bytes_discarded_per_buffer) will be <= but not == the total
1236        /// (output_bytes - input_bytes) because the filter might also discard
1237        /// server-generated synthetic packets, that have no buffer index.
1238        #[prost(uint64, repeated, packed = "false", tag = "20")]
1239        pub bytes_discarded_per_buffer: ::prost::alloc::vec::Vec<u64>,
1240    }
1241    #[derive(
1242        Clone,
1243        Copy,
1244        Debug,
1245        PartialEq,
1246        Eq,
1247        Hash,
1248        PartialOrd,
1249        Ord,
1250        ::prost::Enumeration
1251    )]
1252    #[repr(i32)]
1253    pub enum FinalFlushOutcome {
1254        FinalFlushUnspecified = 0,
1255        FinalFlushSucceeded = 1,
1256        FinalFlushFailed = 2,
1257    }
1258    impl FinalFlushOutcome {
1259        /// String value of the enum field names used in the ProtoBuf definition.
1260        ///
1261        /// The values are not transformed in any way and thus are considered stable
1262        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1263        pub fn as_str_name(&self) -> &'static str {
1264            match self {
1265                Self::FinalFlushUnspecified => "FINAL_FLUSH_UNSPECIFIED",
1266                Self::FinalFlushSucceeded => "FINAL_FLUSH_SUCCEEDED",
1267                Self::FinalFlushFailed => "FINAL_FLUSH_FAILED",
1268            }
1269        }
1270        /// Creates an enum from field names used in the ProtoBuf definition.
1271        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1272            match value {
1273                "FINAL_FLUSH_UNSPECIFIED" => Some(Self::FinalFlushUnspecified),
1274                "FINAL_FLUSH_SUCCEEDED" => Some(Self::FinalFlushSucceeded),
1275                "FINAL_FLUSH_FAILED" => Some(Self::FinalFlushFailed),
1276                _ => None,
1277            }
1278        }
1279    }
1280}
1281/// Builtin clock domains used in Perfetto traces.
1282///
1283/// The default trace time clock is BUILTIN_CLOCK_TRACE_FILE: a synthetic clock
1284/// representing the trace file's own timeline. Each trace file gets its own
1285/// instance (scoped by trace file index).
1286///
1287/// For backwards compatibility, Perfetto proto traces register BOOTTIME as a
1288/// fallback: if the first timestamp conversion uses a clock other than the
1289/// trace file clock and no explicit clock snapshot data exists, the trace time
1290/// is switched to BOOTTIME. This fallback does not fire for modern traces that
1291/// include ClockSnapshots or that only use the trace file clock directly.
1292///
1293/// The `primary_trace_clock` field in ClockSnapshot can definitively override
1294/// the trace time clock regardless of the above.
1295#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1296#[repr(i32)]
1297pub enum BuiltinClock {
1298    Unknown = 0,
1299    /// Corresponds to CLOCK_REALTIME. See clock_gettime(2).
1300    Realtime = 1,
1301    /// Corresponds to CLOCK_REALTIME_COARSE. See clock_gettime(2).
1302    RealtimeCoarse = 2,
1303    /// Corresponds to CLOCK_MONOTONIC. See clock_gettime(2).
1304    Monotonic = 3,
1305    /// Corresponds to CLOCK_MONOTONIC_COARSE. See clock_gettime(2).
1306    MonotonicCoarse = 4,
1307    /// Corresponds to CLOCK_MONOTONIC_RAW. See clock_gettime(2).
1308    MonotonicRaw = 5,
1309    /// Corresponds to CLOCK_BOOTTIME. See clock_gettime(2).
1310    /// For proto traces, this is used as a backwards-compatible fallback trace
1311    /// time clock when no explicit clock snapshots are present.
1312    Boottime = 6,
1313    /// TSC (Time Stamp Counter). Architecture-specific high-resolution counter.
1314    Tsc = 9,
1315    /// Corresponds to the perf event clock (PERF_CLOCK).
1316    Perf = 10,
1317    /// A synthetic clock representing the trace file's own timeline. Each trace
1318    /// file gets its own instance (scoped by trace file index). This is the
1319    /// default trace time clock before any clock snapshot or format-specific
1320    /// override takes effect.
1321    TraceFile = 11,
1322    MaxId = 63,
1323}
1324impl BuiltinClock {
1325    /// String value of the enum field names used in the ProtoBuf definition.
1326    ///
1327    /// The values are not transformed in any way and thus are considered stable
1328    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1329    pub fn as_str_name(&self) -> &'static str {
1330        match self {
1331            Self::Unknown => "BUILTIN_CLOCK_UNKNOWN",
1332            Self::Realtime => "BUILTIN_CLOCK_REALTIME",
1333            Self::RealtimeCoarse => "BUILTIN_CLOCK_REALTIME_COARSE",
1334            Self::Monotonic => "BUILTIN_CLOCK_MONOTONIC",
1335            Self::MonotonicCoarse => "BUILTIN_CLOCK_MONOTONIC_COARSE",
1336            Self::MonotonicRaw => "BUILTIN_CLOCK_MONOTONIC_RAW",
1337            Self::Boottime => "BUILTIN_CLOCK_BOOTTIME",
1338            Self::Tsc => "BUILTIN_CLOCK_TSC",
1339            Self::Perf => "BUILTIN_CLOCK_PERF",
1340            Self::TraceFile => "BUILTIN_CLOCK_TRACE_FILE",
1341            Self::MaxId => "BUILTIN_CLOCK_MAX_ID",
1342        }
1343    }
1344    /// Creates an enum from field names used in the ProtoBuf definition.
1345    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1346        match value {
1347            "BUILTIN_CLOCK_UNKNOWN" => Some(Self::Unknown),
1348            "BUILTIN_CLOCK_REALTIME" => Some(Self::Realtime),
1349            "BUILTIN_CLOCK_REALTIME_COARSE" => Some(Self::RealtimeCoarse),
1350            "BUILTIN_CLOCK_MONOTONIC" => Some(Self::Monotonic),
1351            "BUILTIN_CLOCK_MONOTONIC_COARSE" => Some(Self::MonotonicCoarse),
1352            "BUILTIN_CLOCK_MONOTONIC_RAW" => Some(Self::MonotonicRaw),
1353            "BUILTIN_CLOCK_BOOTTIME" => Some(Self::Boottime),
1354            "BUILTIN_CLOCK_TSC" => Some(Self::Tsc),
1355            "BUILTIN_CLOCK_PERF" => Some(Self::Perf),
1356            "BUILTIN_CLOCK_TRACE_FILE" => Some(Self::TraceFile),
1357            "BUILTIN_CLOCK_MAX_ID" => Some(Self::MaxId),
1358            _ => None,
1359        }
1360    }
1361}
1362/// Semantic types for string fields. This tells the filter what kind of
1363/// data the field contains, so it can apply the right filtering rules.
1364/// See /rfcs/0011-subset-string-filter-rules.md for design details.
1365/// Introduced in: Perfetto v54.
1366#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1367#[repr(i32)]
1368pub enum SemanticType {
1369    Unspecified = 0,
1370    Atrace = 1,
1371    Job = 2,
1372    Wakelock = 3,
1373}
1374impl SemanticType {
1375    /// String value of the enum field names used in the ProtoBuf definition.
1376    ///
1377    /// The values are not transformed in any way and thus are considered stable
1378    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1379    pub fn as_str_name(&self) -> &'static str {
1380        match self {
1381            Self::Unspecified => "SEMANTIC_TYPE_UNSPECIFIED",
1382            Self::Atrace => "SEMANTIC_TYPE_ATRACE",
1383            Self::Job => "SEMANTIC_TYPE_JOB",
1384            Self::Wakelock => "SEMANTIC_TYPE_WAKELOCK",
1385        }
1386    }
1387    /// Creates an enum from field names used in the ProtoBuf definition.
1388    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1389        match value {
1390            "SEMANTIC_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
1391            "SEMANTIC_TYPE_ATRACE" => Some(Self::Atrace),
1392            "SEMANTIC_TYPE_JOB" => Some(Self::Job),
1393            "SEMANTIC_TYPE_WAKELOCK" => Some(Self::Wakelock),
1394            _ => None,
1395        }
1396    }
1397}
1398/// Arbitrary key value pairs which can attached to a trace to provide context
1399/// about any facet of the trace. This can include, what data it contains,
1400/// properties of the host / machine the trace was collected on, and other
1401/// interesting information about a trace.
1402/// /
1403/// Examples include:
1404/// gradle_version = "9.0.10-alpha01"
1405/// java_major_version = 24
1406/// /
1407/// Attributes can be written as a TracePacket or set in
1408/// `TraceConfig.trace_attributes` (e.g. via `perfetto --add-attribute`).
1409/// /
1410/// All keys get prefixed with `trace_attribute.` in the UI and in
1411/// `traceprocessor`. If there are multiple trace attribute packets that use the
1412/// same key, then the latest value wins.
1413/// These key value pairs show up in the `Overview` section in
1414/// Perfetto UI. Additionally, these key, value pairs can also be queried using
1415/// Pefetto SQL by using the following query:
1416/// /
1417/// `SELECT * FROM metadata WHERE name GLOB 'trace_attribute.*';`
1418#[derive(Clone, PartialEq, ::prost::Message)]
1419pub struct TraceAttributes {
1420    #[prost(message, repeated, tag = "1")]
1421    pub attribute: ::prost::alloc::vec::Vec<trace_attributes::Attribute>,
1422}
1423/// Nested message and enum types in `TraceAttributes`.
1424pub mod trace_attributes {
1425    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1426    pub struct Attribute {
1427        /// The key
1428        #[prost(string, optional, tag = "1")]
1429        pub key: ::core::option::Option<::prost::alloc::string::String>,
1430        /// The value
1431        #[prost(oneof = "attribute::Value", tags = "2, 3")]
1432        pub value: ::core::option::Option<attribute::Value>,
1433    }
1434    /// Nested message and enum types in `Attribute`.
1435    pub mod attribute {
1436        /// The value
1437        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
1438        pub enum Value {
1439            #[prost(int64, tag = "2")]
1440            LongValue(i64),
1441            #[prost(string, tag = "3")]
1442            StringValue(::prost::alloc::string::String),
1443        }
1444    }
1445}
1446/// Options for the android.aflags data source.
1447/// This data source captures snapshots of Android aconfig flags.
1448/// See <https://source.android.com/docs/setup/build/feature-flagging/declare-flag>
1449/// for more information on aconfig flags.
1450#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1451pub struct AndroidAflagsConfig {
1452    /// Frequency of polling. If absent or 0, the state will be recorded once,
1453    /// at the start of the trace.
1454    ///
1455    /// It is recommended to either leave this absent or set it to a large
1456    /// value as each invocation of the `aflags` tool can be time consuming
1457    /// (approx. 350ms) and also triggers an expensive flush. This is required to
1458    /// be > 1000ms if set, to avoid excessive CPU usage.
1459    #[prost(uint32, optional, tag = "1")]
1460    pub poll_ms: ::core::option::Option<u32>,
1461}
1462/// Data source that lists game modes and game interventions of games
1463/// on an Android device.
1464#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1465pub struct AndroidGameInterventionListConfig {
1466    /// If not empty, emit info about only the following list of package names
1467    /// (exact match, no regex). Otherwise, emit info about all packages.
1468    #[prost(string, repeated, tag = "1")]
1469    pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1470}
1471/// Custom configuration for the "android.input.inputevent" data source.
1472///
1473/// NOTE: Input traces can only be taken on debuggable (userdebug/eng) builds!
1474///
1475/// Next ID: 6
1476#[derive(Clone, PartialEq, ::prost::Message)]
1477pub struct AndroidInputEventConfig {
1478    /// The tracing mode to use. If unspecified, it will default to
1479    /// TRACE_MODE_USE_RULES.
1480    #[prost(enumeration = "android_input_event_config::TraceMode", optional, tag = "1")]
1481    pub mode: ::core::option::Option<i32>,
1482    /// The list of rules to use to determine the trace level of events.
1483    /// Each event will be traced using the TraceLevel of the first rule that it
1484    /// triggers from this list. The rules are evaluated in the order in which they
1485    /// are specified. If an event does not match any of the rules,
1486    /// TRACE_LEVEL_NONE will be used by default.
1487    #[prost(message, repeated, tag = "2")]
1488    pub rules: ::prost::alloc::vec::Vec<android_input_event_config::TraceRule>,
1489    /// Trace input events processed by the system as they are being dispatched
1490    /// to application windows. All trace rules will apply.
1491    ///    - If this flag is used without enabling trace_dispatcher_window_dispatch,
1492    ///    it will
1493    ///      trace InputDispatcher's inbound events (which does not include events
1494    ///      synthesized within InputDispatcher) that match the rules.
1495    ///    - If used with trace_dispatcher_window_dispatch, all inbound and outbound
1496    ///    events
1497    ///      matching the rules, including all events synthesized within
1498    ///      InputDispatcher, will be traced.
1499    #[prost(bool, optional, tag = "3")]
1500    pub trace_dispatcher_input_events: ::core::option::Option<bool>,
1501    /// Trace details about which windows the system is sending each input event
1502    /// to. All trace rules will apply.
1503    #[prost(bool, optional, tag = "4")]
1504    pub trace_dispatcher_window_dispatch: ::core::option::Option<bool>,
1505    /// Trace evdev events received from the kernel, including device additions and
1506    /// removals.
1507    #[prost(bool, optional, tag = "5")]
1508    pub trace_evdev_events: ::core::option::Option<bool>,
1509}
1510/// Nested message and enum types in `AndroidInputEventConfig`.
1511pub mod android_input_event_config {
1512    /// A rule that specifies the TraceLevel for an event based on matching
1513    /// conditions. All matchers in the rule are optional. To trigger this rule, an
1514    /// event must match all of its specified matchers (i.e. the matchers function
1515    /// like a series of conditions connected by a logical 'AND' operator). A rule
1516    /// with no specified matchers will match all events. Next ID: 6
1517    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1518    pub struct TraceRule {
1519        /// The trace level to be used for events that trigger this rule.
1520        /// If unspecified, TRACE_LEVEL_NONE will be used by default.
1521        #[prost(enumeration = "TraceLevel", optional, tag = "1")]
1522        pub trace_level: ::core::option::Option<i32>,
1523        /// Package matchers
1524        ///
1525        /// Respectively matches if all or any of the target apps for this event are
1526        /// contained in the specified list of package names.
1527        ///
1528        /// Intended usage:
1529        ///    - Use match_all_packages to selectively allow tracing for the listed
1530        ///    packages.
1531        ///    - Use match_any_packages to selectively deny tracing for certain
1532        ///    packages.
1533        ///
1534        /// WARNING: Great care must be taken when designing rules for field tracing!
1535        ///           This is because each event is almost always sent to more than
1536        ///           one app.
1537        ///               For example, when allowing tracing for a package that has a
1538        ///               spy window
1539        ///           over the display (e.g. SystemUI) using match_any_packages,
1540        ///           essentially all input will be recorded on that display. This is
1541        ///           because the events will be sent to the spy as well as the
1542        ///           foreground app, and regardless of what the foreground app is,
1543        ///           the event will end up being traced.
1544        ///               Alternatively, when attempting to block tracing for specific
1545        ///               packages using
1546        ///           match_all_packages, no events will likely be blocked. This is
1547        ///           because the event will also be sent to other apps (such as, but
1548        ///           not limited to, ones with spy windows), so the matcher will not
1549        ///           match unless all other targets are also listed under the
1550        ///           match_all_packages list.
1551        #[prost(string, repeated, tag = "2")]
1552        pub match_all_packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1553        #[prost(string, repeated, tag = "3")]
1554        pub match_any_packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1555        /// Matches if the event is secure, which means that at least one of the
1556        /// targets of this event is using the window flag FLAG_SECURE.
1557        #[prost(bool, optional, tag = "4")]
1558        pub match_secure: ::core::option::Option<bool>,
1559        /// Matches if there was an active IME connection while this event was being
1560        /// processed.
1561        #[prost(bool, optional, tag = "5")]
1562        pub match_ime_connection_active: ::core::option::Option<bool>,
1563    }
1564    /// Trace modes are tracing presets that are included in the system.
1565    #[derive(
1566        Clone,
1567        Copy,
1568        Debug,
1569        PartialEq,
1570        Eq,
1571        Hash,
1572        PartialOrd,
1573        Ord,
1574        ::prost::Enumeration
1575    )]
1576    #[repr(i32)]
1577    pub enum TraceMode {
1578        /// Preset mode for maximal tracing.
1579        /// WARNING: This will bypass all privacy measures on debuggable builds, and
1580        /// will record all
1581        ///           input events processed by the system, regardless of the context
1582        ///           in which they were processed. It should only be used for tracing
1583        ///           on a local device or for tests. It should NEVER be used for
1584        ///           field tracing.
1585        TraceAll = 0,
1586        /// Use the tracing rules defined in this config to specify what events to
1587        /// trace.
1588        UseRules = 1,
1589    }
1590    impl TraceMode {
1591        /// String value of the enum field names used in the ProtoBuf definition.
1592        ///
1593        /// The values are not transformed in any way and thus are considered stable
1594        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1595        pub fn as_str_name(&self) -> &'static str {
1596            match self {
1597                Self::TraceAll => "TRACE_MODE_TRACE_ALL",
1598                Self::UseRules => "TRACE_MODE_USE_RULES",
1599            }
1600        }
1601        /// Creates an enum from field names used in the ProtoBuf definition.
1602        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1603            match value {
1604                "TRACE_MODE_TRACE_ALL" => Some(Self::TraceAll),
1605                "TRACE_MODE_USE_RULES" => Some(Self::UseRules),
1606                _ => None,
1607            }
1608        }
1609    }
1610    /// The level of tracing that should be applied to an event.
1611    #[derive(
1612        Clone,
1613        Copy,
1614        Debug,
1615        PartialEq,
1616        Eq,
1617        Hash,
1618        PartialOrd,
1619        Ord,
1620        ::prost::Enumeration
1621    )]
1622    #[repr(i32)]
1623    pub enum TraceLevel {
1624        /// Do not trace the input event.
1625        None = 0,
1626        /// Trace the event as a redacted event, where certain sensitive fields are
1627        /// omitted from the trace, including the coordinates of pointer events and
1628        /// the key/scan codes of key events.
1629        Redacted = 1,
1630        /// Trace the complete event.
1631        Complete = 2,
1632    }
1633    impl TraceLevel {
1634        /// String value of the enum field names used in the ProtoBuf definition.
1635        ///
1636        /// The values are not transformed in any way and thus are considered stable
1637        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1638        pub fn as_str_name(&self) -> &'static str {
1639            match self {
1640                Self::None => "TRACE_LEVEL_NONE",
1641                Self::Redacted => "TRACE_LEVEL_REDACTED",
1642                Self::Complete => "TRACE_LEVEL_COMPLETE",
1643            }
1644        }
1645        /// Creates an enum from field names used in the ProtoBuf definition.
1646        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1647            match value {
1648                "TRACE_LEVEL_NONE" => Some(Self::None),
1649                "TRACE_LEVEL_REDACTED" => Some(Self::Redacted),
1650                "TRACE_LEVEL_COMPLETE" => Some(Self::Complete),
1651                _ => None,
1652            }
1653        }
1654    }
1655}
1656/// Values from NDK's android/log.h.
1657#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1658#[repr(i32)]
1659pub enum AndroidLogId {
1660    /// MAIN.
1661    LidDefault = 0,
1662    LidRadio = 1,
1663    LidEvents = 2,
1664    LidSystem = 3,
1665    LidCrash = 4,
1666    LidStats = 5,
1667    LidSecurity = 6,
1668    LidKernel = 7,
1669}
1670impl AndroidLogId {
1671    /// String value of the enum field names used in the ProtoBuf definition.
1672    ///
1673    /// The values are not transformed in any way and thus are considered stable
1674    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1675    pub fn as_str_name(&self) -> &'static str {
1676        match self {
1677            Self::LidDefault => "LID_DEFAULT",
1678            Self::LidRadio => "LID_RADIO",
1679            Self::LidEvents => "LID_EVENTS",
1680            Self::LidSystem => "LID_SYSTEM",
1681            Self::LidCrash => "LID_CRASH",
1682            Self::LidStats => "LID_STATS",
1683            Self::LidSecurity => "LID_SECURITY",
1684            Self::LidKernel => "LID_KERNEL",
1685        }
1686    }
1687    /// Creates an enum from field names used in the ProtoBuf definition.
1688    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1689        match value {
1690            "LID_DEFAULT" => Some(Self::LidDefault),
1691            "LID_RADIO" => Some(Self::LidRadio),
1692            "LID_EVENTS" => Some(Self::LidEvents),
1693            "LID_SYSTEM" => Some(Self::LidSystem),
1694            "LID_CRASH" => Some(Self::LidCrash),
1695            "LID_STATS" => Some(Self::LidStats),
1696            "LID_SECURITY" => Some(Self::LidSecurity),
1697            "LID_KERNEL" => Some(Self::LidKernel),
1698            _ => None,
1699        }
1700    }
1701}
1702#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1703#[repr(i32)]
1704pub enum AndroidLogPriority {
1705    PrioUnspecified = 0,
1706    /// _DEFAULT, but should never be seen in logs.
1707    PrioUnused = 1,
1708    PrioVerbose = 2,
1709    PrioDebug = 3,
1710    PrioInfo = 4,
1711    PrioWarn = 5,
1712    PrioError = 6,
1713    PrioFatal = 7,
1714}
1715impl AndroidLogPriority {
1716    /// String value of the enum field names used in the ProtoBuf definition.
1717    ///
1718    /// The values are not transformed in any way and thus are considered stable
1719    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1720    pub fn as_str_name(&self) -> &'static str {
1721        match self {
1722            Self::PrioUnspecified => "PRIO_UNSPECIFIED",
1723            Self::PrioUnused => "PRIO_UNUSED",
1724            Self::PrioVerbose => "PRIO_VERBOSE",
1725            Self::PrioDebug => "PRIO_DEBUG",
1726            Self::PrioInfo => "PRIO_INFO",
1727            Self::PrioWarn => "PRIO_WARN",
1728            Self::PrioError => "PRIO_ERROR",
1729            Self::PrioFatal => "PRIO_FATAL",
1730        }
1731    }
1732    /// Creates an enum from field names used in the ProtoBuf definition.
1733    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1734        match value {
1735            "PRIO_UNSPECIFIED" => Some(Self::PrioUnspecified),
1736            "PRIO_UNUSED" => Some(Self::PrioUnused),
1737            "PRIO_VERBOSE" => Some(Self::PrioVerbose),
1738            "PRIO_DEBUG" => Some(Self::PrioDebug),
1739            "PRIO_INFO" => Some(Self::PrioInfo),
1740            "PRIO_WARN" => Some(Self::PrioWarn),
1741            "PRIO_ERROR" => Some(Self::PrioError),
1742            "PRIO_FATAL" => Some(Self::PrioFatal),
1743            _ => None,
1744        }
1745    }
1746}
1747#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1748pub struct AndroidLogConfig {
1749    #[prost(enumeration = "AndroidLogId", repeated, packed = "false", tag = "1")]
1750    pub log_ids: ::prost::alloc::vec::Vec<i32>,
1751    /// If set ignores all log messages whose prio is < the given value.
1752    #[prost(enumeration = "AndroidLogPriority", optional, tag = "3")]
1753    pub min_prio: ::core::option::Option<i32>,
1754    /// If non-empty ignores all log messages whose tag doesn't match one of the
1755    /// specified values.
1756    #[prost(string, repeated, tag = "4")]
1757    pub filter_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1758    /// If true, includes the contents of the logcat buffers that were already
1759    /// present before the data source started. By default (false), only new
1760    /// log entries produced after the data source starts are recorded.
1761    /// Can be useful for boot traces or situations where logs from before
1762    /// traced started are important.
1763    #[prost(bool, optional, tag = "5")]
1764    pub preserve_log_buffer: ::core::option::Option<bool>,
1765}
1766/// Data source that polls for display state. This should only be used for
1767/// backward-compatibility; AndroidSystemPropertyConfig should be preferred.
1768#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1769pub struct AndroidPolledStateConfig {
1770    /// Frequency of polling. If absent the state will be recorded once, at the
1771    /// start of the trace.
1772    /// This is required to be > 100ms to avoid excessive CPU usage.
1773    #[prost(uint32, optional, tag = "1")]
1774    pub poll_ms: ::core::option::Option<u32>,
1775}
1776/// Configuration for the "android.process_state" data source.
1777#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1778pub struct AndroidProcessStateConfig {
1779    /// If true, dumps process name, start seq id, and start time in the snapshot.
1780    /// When false (default), these fields are omitted to save trace buffer space.
1781    #[prost(bool, optional, tag = "1")]
1782    pub dump_process_metadata: ::core::option::Option<bool>,
1783}
1784/// Data source that polls for system properties.
1785#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1786pub struct AndroidSystemPropertyConfig {
1787    /// Frequency of polling. If absent the state will be recorded once, at the
1788    /// start of the trace.
1789    /// This is required to be > 100ms to avoid excessive CPU usage.
1790    #[prost(uint32, optional, tag = "1")]
1791    pub poll_ms: ::core::option::Option<u32>,
1792    /// Properties to poll. All property names must start with "debug.tracing.".
1793    #[prost(string, repeated, tag = "2")]
1794    pub property_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1795}
1796/// Data source that controls the system properties used to guard initialization
1797/// of track_event producers (i.e. Skia) in apps using HWUI, and certain
1798/// processes like SurfaceFlinger.
1799///
1800/// This data source only tells Skia to initialized the Perfetto SDK and start
1801/// routing data to the Track Event system instead of ATrace. For those events
1802/// to actually show up in a trace, the track_event data source must be used as
1803/// well. The Perfetto SDK cannot be de-initialized, so some long-lived apps and
1804/// processes may need to be restarted for Skia to revert to using ATrace if
1805/// Track Events are no longer desired.
1806///
1807/// In addition to switching Skia to use Perfetto's track_event data source,
1808/// this "guard" also controls Skia's "broad tracing", which removes Skia's
1809/// internal tracing constraints and allows the track_event config to specify
1810/// which categories should be traced. Filtering to the "skia.always" category
1811/// *tag* in a track_event config can be used to re-enable the standard
1812/// constraints typically used with ATrace.
1813///
1814/// Data source name: android.sdk_sysprop_guard
1815/// Introduced in Android 14 (U) QPR1.
1816/// Next id: 4
1817#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1818pub struct AndroidSdkSyspropGuardConfig {
1819    /// If true, configures SurfaceFlinger to initialize Skia's Perfetto
1820    /// integration with the track_event data source in RenderEngine.
1821    /// If false or omitted, the simpler ATrace fallback is used.
1822    ///
1823    /// NOTE: once enabled, Skia will only revert to ATrace if SurfaceFlinger is
1824    /// restarted.
1825    ///
1826    /// Specifically this sets the following system properties:
1827    ///    - debug.tracing.ctl.renderengine.skia_tracing_enabled
1828    ///    - debug.tracing.ctl.renderengine.skia_use_perfetto_track_events
1829    ///
1830    /// Does not affect actual track_event data *collection*, which must be
1831    /// configured separately.
1832    #[prost(bool, optional, tag = "1")]
1833    pub surfaceflinger_skia_track_events: ::core::option::Option<bool>,
1834    /// If true, configures HWUI apps to initialize Skia's Perfetto integration
1835    /// with the track_event data source. hwui_package_name_filter
1836    /// can be used to control which apps are affected.
1837    /// If false or omitted, the simpler ATrace fallback is used.
1838    ///
1839    /// NOTE: once enabled, Skia will only revert to ATrace if the app is
1840    /// restarted.
1841    ///
1842    /// ATTENTION: affects ALL HWUI APPS if hwui_package_name_filter is not set!
1843    /// If filtering is NOT set, this controls these GLOBAL system properties:
1844    ///    - debug.tracing.ctl.hwui.skia_tracing_enabled
1845    ///    - debug.tracing.ctl.hwui.skia_use_perfetto_track_events
1846    /// If filtering IS set, this controls these APP-SPECIFIC system properties,
1847    /// for each package listed in the filter:
1848    ///    - debug.tracing.ctl.hwui.skia_tracing_enabled.<package.name>
1849    ///    - debug.tracing.ctl.hwui.skia_use_perfetto_track_events.<package.name>
1850    ///
1851    /// Does not affect actual track_event data *collection*, which must be
1852    /// configured separately.
1853    #[prost(bool, optional, tag = "2")]
1854    pub hwui_skia_track_events: ::core::option::Option<bool>,
1855    /// If non-empty, hwui_skia_track_events applies to only the packages listed.
1856    /// Otherwise, hwui_skia_track_events applies globally to all HWUI apps.
1857    #[prost(string, repeated, tag = "3")]
1858    pub hwui_package_name_filter: ::prost::alloc::vec::Vec<
1859        ::prost::alloc::string::String,
1860    >,
1861}
1862/// Configuration for the android.app_wakelocks data source.
1863#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1864pub struct AppWakelocksConfig {
1865    /// Specifies the delay (in milliseconds) after which the data source will
1866    /// attempt to write events. Writing less frequently reduces the trace size by
1867    /// making better use of the packed arrays and reducing the total number of
1868    /// TracePackets needed (which each have dozens of bytes of overhead). The
1869    /// suggested delay is 5000ms.
1870    #[prost(int32, optional, tag = "1")]
1871    pub write_delay_ms: ::core::option::Option<i32>,
1872    /// When set, wakelocks held for less than this amount of time are filtered
1873    /// from the resulting trace. Note: duration is computed by matching wakelocks
1874    /// with identical attributes, not by tracking the underlying objects. The
1875    /// threshold should be < the trace's flush_period_ms.
1876    #[prost(int32, optional, tag = "2")]
1877    pub filter_duration_below_ms: ::core::option::Option<i32>,
1878    /// When true, the owner_pid is dropped from the resulting output, reducing the
1879    /// size of the interning tables.
1880    #[prost(bool, optional, tag = "3")]
1881    pub drop_owner_pid: ::core::option::Option<bool>,
1882}
1883/// Data source that records CPU per UID data.
1884#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1885pub struct CpuPerUidConfig {
1886    /// Record at this frequency.
1887    #[prost(uint32, optional, tag = "1")]
1888    pub poll_ms: ::core::option::Option<u32>,
1889}
1890/// Custom configuration for the "android.inputmethod" data source.
1891#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1892pub struct InputMethodConfig {
1893    /// If true, enables tracing in the clients.
1894    #[prost(bool, optional, tag = "1")]
1895    pub client: ::core::option::Option<bool>,
1896    /// If true, enables tracing in InputMethodService.
1897    #[prost(bool, optional, tag = "2")]
1898    pub service: ::core::option::Option<bool>,
1899    /// If true, enables tracing in InputMethodManagerService.
1900    #[prost(bool, optional, tag = "3")]
1901    pub manager_service: ::core::option::Option<bool>,
1902}
1903/// Data source that records kernel (and native) wakelock data.
1904#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1905pub struct KernelWakelocksConfig {
1906    /// Record at this frequency.
1907    #[prost(uint32, optional, tag = "1")]
1908    pub poll_ms: ::core::option::Option<u32>,
1909}
1910/// Network tracing data source that records details on all packets sent or
1911/// received by the network.
1912#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1913pub struct NetworkPacketTraceConfig {
1914    /// Polling frequency in milliseconds. Network tracing writes to a fixed size
1915    /// ring buffer. The polling interval should be such that the ring buffer is
1916    /// unlikely to fill in that interval (or that filling is an acceptable risk).
1917    /// The minimum polling rate is 100ms (values below this are ignored).
1918    /// Introduced in Android 14 (U).
1919    #[prost(uint32, optional, tag = "1")]
1920    pub poll_ms: ::core::option::Option<u32>,
1921    /// The aggregation_threshold is the number of packets at which an event will
1922    /// switch from per-packet details to aggregate details. For example, a value
1923    /// of 50 means that if a particular event (grouped by the unique combinations
1924    /// of metadata fields: {interface, direction, uid, etc}) has fewer than 50
1925    /// packets, the exact timestamp and length are recorded for each packet. If
1926    /// there were 50 or more packets in an event, it would only record the total
1927    /// duration, packets, and length. A value of zero or unspecified will always
1928    /// / record per-packet details. A value of 1 always records aggregate details.
1929    #[prost(uint32, optional, tag = "2")]
1930    pub aggregation_threshold: ::core::option::Option<u32>,
1931    /// Specifies the maximum number of packet contexts to intern at a time. This
1932    /// prevents the interning table from growing too large and controls whether
1933    /// interning is enabled or disabled (a value of zero disables interning and
1934    /// is the default). When a data sources interning table reaches this amount,
1935    /// packet contexts will be inlined into NetworkPacketEvents.
1936    #[prost(uint32, optional, tag = "3")]
1937    pub intern_limit: ::core::option::Option<u32>,
1938    /// The following fields specify whether certain fields should be dropped from
1939    /// the output. Dropping fields improves normalization results, reduces the
1940    /// size of the interning table, and slightly reduces event size.
1941    #[prost(bool, optional, tag = "4")]
1942    pub drop_local_port: ::core::option::Option<bool>,
1943    #[prost(bool, optional, tag = "5")]
1944    pub drop_remote_port: ::core::option::Option<bool>,
1945    #[prost(bool, optional, tag = "6")]
1946    pub drop_tcp_flags: ::core::option::Option<bool>,
1947}
1948/// Data source that lists details (such as version code) about packages on an
1949/// Android device.
1950#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1951pub struct PackagesListConfig {
1952    /// If not empty, emit info about only the following list of package names
1953    /// (exact match, no regex). Can be combined with
1954    /// |package_name_regex_filter|: a package is included if it matches either
1955    /// filter. If both filters are empty, emit info about all packages.
1956    #[prost(string, repeated, tag = "1")]
1957    pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1958    /// If not empty, emit info about only the packages whose names match any of
1959    /// the following regexes (full match, not partial). Can be combined with
1960    /// |package_name_filter|: a package is included if it matches either filter.
1961    /// If both filters are empty, emit info about all packages.
1962    /// This field was introduced in Android 26Q2 (Perfetto v55).
1963    #[prost(string, repeated, tag = "3")]
1964    pub package_name_regex_filter: ::prost::alloc::vec::Vec<
1965        ::prost::alloc::string::String,
1966    >,
1967    /// If present and non-zero, the data source will periodically poll for CPU
1968    /// use by packages and only emit results for those that it sees. If absent,
1969    /// the data source will emit results for all packages at startup. The package
1970    /// name filters apply either way.
1971    #[prost(uint32, optional, tag = "2")]
1972    pub only_write_on_cpu_use_every_ms: ::core::option::Option<u32>,
1973}
1974/// Data source that records events from the modem.
1975#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1976pub struct PixelModemConfig {
1977    #[prost(enumeration = "pixel_modem_config::EventGroup", optional, tag = "1")]
1978    pub event_group: ::core::option::Option<i32>,
1979    /// If set, record only events with these hashes.
1980    #[prost(int64, repeated, packed = "false", tag = "2")]
1981    pub pigweed_hash_allow_list: ::prost::alloc::vec::Vec<i64>,
1982    /// If set and allow_list is not set, deny events with these hashes.
1983    #[prost(int64, repeated, packed = "false", tag = "3")]
1984    pub pigweed_hash_deny_list: ::prost::alloc::vec::Vec<i64>,
1985}
1986/// Nested message and enum types in `PixelModemConfig`.
1987pub mod pixel_modem_config {
1988    /// Event group to record, as defined by the modem.
1989    #[derive(
1990        Clone,
1991        Copy,
1992        Debug,
1993        PartialEq,
1994        Eq,
1995        Hash,
1996        PartialOrd,
1997        Ord,
1998        ::prost::Enumeration
1999    )]
2000    #[repr(i32)]
2001    pub enum EventGroup {
2002        Unknown = 0,
2003        /// Events suitable for low bandwidth tracing only.
2004        LowBandwidth = 1,
2005        /// Events suitable for high and low bandwidth tracing.
2006        HighAndLowBandwidth = 2,
2007    }
2008    impl EventGroup {
2009        /// String value of the enum field names used in the ProtoBuf definition.
2010        ///
2011        /// The values are not transformed in any way and thus are considered stable
2012        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2013        pub fn as_str_name(&self) -> &'static str {
2014            match self {
2015                Self::Unknown => "EVENT_GROUP_UNKNOWN",
2016                Self::LowBandwidth => "EVENT_GROUP_LOW_BANDWIDTH",
2017                Self::HighAndLowBandwidth => "EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH",
2018            }
2019        }
2020        /// Creates an enum from field names used in the ProtoBuf definition.
2021        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2022            match value {
2023                "EVENT_GROUP_UNKNOWN" => Some(Self::Unknown),
2024                "EVENT_GROUP_LOW_BANDWIDTH" => Some(Self::LowBandwidth),
2025                "EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH" => Some(Self::HighAndLowBandwidth),
2026                _ => None,
2027            }
2028        }
2029    }
2030}
2031/// Custom configuration for the "android.protolog" data source.
2032/// ProtoLog is a logging mechanism that is intented to be more efficient than
2033/// logcat. This configures what logs to capture in the tracing instance.
2034#[derive(Clone, PartialEq, ::prost::Message)]
2035pub struct ProtoLogConfig {
2036    /// Specified the configurations for each of the logging groups. If none is
2037    /// specified for a group the defaults will be used.
2038    #[prost(message, repeated, tag = "1")]
2039    pub group_overrides: ::prost::alloc::vec::Vec<ProtoLogGroup>,
2040    /// Specified what tracing mode to use for the tracing instance.
2041    #[prost(enumeration = "proto_log_config::TracingMode", optional, tag = "2")]
2042    pub tracing_mode: ::core::option::Option<i32>,
2043    /// If set, any message with log level higher than this level (inclusive) will
2044    /// be traced. Group overrides take precedence over this value.
2045    #[prost(enumeration = "ProtoLogLevel", optional, tag = "3")]
2046    pub default_log_from_level: ::core::option::Option<i32>,
2047}
2048/// Nested message and enum types in `ProtoLogConfig`.
2049pub mod proto_log_config {
2050    #[derive(
2051        Clone,
2052        Copy,
2053        Debug,
2054        PartialEq,
2055        Eq,
2056        Hash,
2057        PartialOrd,
2058        Ord,
2059        ::prost::Enumeration
2060    )]
2061    #[repr(i32)]
2062    pub enum TracingMode {
2063        /// When using the DEFAULT tracing mode, only log groups and levels specified
2064        /// in the group_overrides are traced.
2065        Default = 0,
2066        /// When using the ENABLE_ALL tracing mode, all log groups and levels are
2067        /// traced, unless specified in the group_overrides.
2068        EnableAll = 1,
2069    }
2070    impl TracingMode {
2071        /// String value of the enum field names used in the ProtoBuf definition.
2072        ///
2073        /// The values are not transformed in any way and thus are considered stable
2074        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2075        pub fn as_str_name(&self) -> &'static str {
2076            match self {
2077                Self::Default => "DEFAULT",
2078                Self::EnableAll => "ENABLE_ALL",
2079            }
2080        }
2081        /// Creates an enum from field names used in the ProtoBuf definition.
2082        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2083            match value {
2084                "DEFAULT" => Some(Self::Default),
2085                "ENABLE_ALL" => Some(Self::EnableAll),
2086                _ => None,
2087            }
2088        }
2089    }
2090}
2091#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2092pub struct ProtoLogGroup {
2093    /// The ProtoLog group name this configuration entry applies to.
2094    #[prost(string, optional, tag = "1")]
2095    pub group_name: ::core::option::Option<::prost::alloc::string::String>,
2096    /// Specify the level from which to start capturing protologs.
2097    /// e.g. if ProtoLogLevel.WARN is specified only warning, errors and fatal log
2098    /// message will be traced.
2099    #[prost(enumeration = "ProtoLogLevel", optional, tag = "2")]
2100    pub log_from: ::core::option::Option<i32>,
2101    /// When set to true we will collect the stacktrace for each protolog message
2102    /// in this group that we are tracing.
2103    #[prost(bool, optional, tag = "3")]
2104    pub collect_stacktrace: ::core::option::Option<bool>,
2105}
2106#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2107#[repr(i32)]
2108pub enum ProtoLogLevel {
2109    ProtologLevelUndefined = 0,
2110    ProtologLevelDebug = 1,
2111    ProtologLevelVerbose = 2,
2112    ProtologLevelInfo = 3,
2113    ProtologLevelWarn = 4,
2114    ProtologLevelError = 5,
2115    ProtologLevelWtf = 6,
2116}
2117impl ProtoLogLevel {
2118    /// String value of the enum field names used in the ProtoBuf definition.
2119    ///
2120    /// The values are not transformed in any way and thus are considered stable
2121    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2122    pub fn as_str_name(&self) -> &'static str {
2123        match self {
2124            Self::ProtologLevelUndefined => "PROTOLOG_LEVEL_UNDEFINED",
2125            Self::ProtologLevelDebug => "PROTOLOG_LEVEL_DEBUG",
2126            Self::ProtologLevelVerbose => "PROTOLOG_LEVEL_VERBOSE",
2127            Self::ProtologLevelInfo => "PROTOLOG_LEVEL_INFO",
2128            Self::ProtologLevelWarn => "PROTOLOG_LEVEL_WARN",
2129            Self::ProtologLevelError => "PROTOLOG_LEVEL_ERROR",
2130            Self::ProtologLevelWtf => "PROTOLOG_LEVEL_WTF",
2131        }
2132    }
2133    /// Creates an enum from field names used in the ProtoBuf definition.
2134    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2135        match value {
2136            "PROTOLOG_LEVEL_UNDEFINED" => Some(Self::ProtologLevelUndefined),
2137            "PROTOLOG_LEVEL_DEBUG" => Some(Self::ProtologLevelDebug),
2138            "PROTOLOG_LEVEL_VERBOSE" => Some(Self::ProtologLevelVerbose),
2139            "PROTOLOG_LEVEL_INFO" => Some(Self::ProtologLevelInfo),
2140            "PROTOLOG_LEVEL_WARN" => Some(Self::ProtologLevelWarn),
2141            "PROTOLOG_LEVEL_ERROR" => Some(Self::ProtologLevelError),
2142            "PROTOLOG_LEVEL_WTF" => Some(Self::ProtologLevelWtf),
2143            _ => None,
2144        }
2145    }
2146}
2147/// Config for the "android.display.video" data source. Unset/0 fields use
2148/// the producer's default.
2149#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2150pub struct DisplayVideoConfig {
2151    /// Scale applied to each display's resolution before capture (0.25 =
2152    /// quarter size).
2153    #[prost(float, optional, tag = "1")]
2154    pub scale: ::core::option::Option<f32>,
2155    #[prost(enumeration = "display_video_config::Format", optional, tag = "2")]
2156    pub format: ::core::option::Option<i32>,
2157    /// Keyframe interval in seconds. Smaller = snappier seeking, larger trace.
2158    #[prost(uint32, optional, tag = "3")]
2159    pub key_frame_interval_secs: ::core::option::Option<u32>,
2160    /// Per-display cap on emitted bytes. On reaching it the stream is torn
2161    /// down with a VideoFrameError (SIZE_CAP_HIT).
2162    #[prost(uint64, optional, tag = "4")]
2163    pub max_stream_size_bytes: ::core::option::Option<u64>,
2164    /// Target video encoder bitrate in bits per second. Controls quality vs
2165    /// trace size at a fixed resolution (unlike `scale`, which changes the
2166    /// resolution). Unset lets the producer pick a default from the (scaled)
2167    /// resolution and frame rate. Maps to MediaFormat.KEY_BIT_RATE.
2168    #[prost(uint32, optional, tag = "5")]
2169    pub bitrate_bps: ::core::option::Option<u32>,
2170}
2171/// Nested message and enum types in `DisplayVideoConfig`.
2172pub mod display_video_config {
2173    #[derive(
2174        Clone,
2175        Copy,
2176        Debug,
2177        PartialEq,
2178        Eq,
2179        Hash,
2180        PartialOrd,
2181        Ord,
2182        ::prost::Enumeration
2183    )]
2184    #[repr(i32)]
2185    pub enum Format {
2186        /// Default (H.264).
2187        Unspecified = 0,
2188        H264 = 1,
2189        Hevc = 2,
2190    }
2191    impl Format {
2192        /// String value of the enum field names used in the ProtoBuf definition.
2193        ///
2194        /// The values are not transformed in any way and thus are considered stable
2195        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2196        pub fn as_str_name(&self) -> &'static str {
2197            match self {
2198                Self::Unspecified => "FORMAT_UNSPECIFIED",
2199                Self::H264 => "FORMAT_H264",
2200                Self::Hevc => "FORMAT_HEVC",
2201            }
2202        }
2203        /// Creates an enum from field names used in the ProtoBuf definition.
2204        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2205            match value {
2206                "FORMAT_UNSPECIFIED" => Some(Self::Unspecified),
2207                "FORMAT_H264" => Some(Self::H264),
2208                "FORMAT_HEVC" => Some(Self::Hevc),
2209                _ => None,
2210            }
2211        }
2212    }
2213}
2214/// Custom configuration for the "android.surfaceflinger.layers" data source.
2215#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2216pub struct SurfaceFlingerLayersConfig {
2217    #[prost(enumeration = "surface_flinger_layers_config::Mode", optional, tag = "1")]
2218    pub mode: ::core::option::Option<i32>,
2219    #[prost(
2220        enumeration = "surface_flinger_layers_config::TraceFlag",
2221        repeated,
2222        packed = "false",
2223        tag = "2"
2224    )]
2225    pub trace_flags: ::prost::alloc::vec::Vec<i32>,
2226}
2227/// Nested message and enum types in `SurfaceFlingerLayersConfig`.
2228pub mod surface_flinger_layers_config {
2229    #[derive(
2230        Clone,
2231        Copy,
2232        Debug,
2233        PartialEq,
2234        Eq,
2235        Hash,
2236        PartialOrd,
2237        Ord,
2238        ::prost::Enumeration
2239    )]
2240    #[repr(i32)]
2241    pub enum Mode {
2242        Unspecified = 0,
2243        /// Trace layers snapshots. A snapshot is taken every time a layers change
2244        /// occurs.
2245        Active = 1,
2246        /// Generate layers snapshots from the transactions kept in the
2247        /// SurfaceFlinger's internal ring buffer.
2248        /// The layers snapshots generation occurs when this data source is flushed.
2249        Generated = 2,
2250        /// Trace a single layers snapshot.
2251        Dump = 3,
2252        /// Default mode (applied by SurfaceFlinger if no mode is specified).
2253        /// Same as MODE_GENERATED, but triggers the layers snapshots generation only
2254        /// when a bugreport is taken.
2255        GeneratedBugreportOnly = 4,
2256        /// Layer snapshots are generated by ProtoVM from layer patches
2257        Protovm = 5,
2258    }
2259    impl Mode {
2260        /// String value of the enum field names used in the ProtoBuf definition.
2261        ///
2262        /// The values are not transformed in any way and thus are considered stable
2263        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2264        pub fn as_str_name(&self) -> &'static str {
2265            match self {
2266                Self::Unspecified => "MODE_UNSPECIFIED",
2267                Self::Active => "MODE_ACTIVE",
2268                Self::Generated => "MODE_GENERATED",
2269                Self::Dump => "MODE_DUMP",
2270                Self::GeneratedBugreportOnly => "MODE_GENERATED_BUGREPORT_ONLY",
2271                Self::Protovm => "MODE_PROTOVM",
2272            }
2273        }
2274        /// Creates an enum from field names used in the ProtoBuf definition.
2275        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2276            match value {
2277                "MODE_UNSPECIFIED" => Some(Self::Unspecified),
2278                "MODE_ACTIVE" => Some(Self::Active),
2279                "MODE_GENERATED" => Some(Self::Generated),
2280                "MODE_DUMP" => Some(Self::Dump),
2281                "MODE_GENERATED_BUGREPORT_ONLY" => Some(Self::GeneratedBugreportOnly),
2282                "MODE_PROTOVM" => Some(Self::Protovm),
2283                _ => None,
2284            }
2285        }
2286    }
2287    #[derive(
2288        Clone,
2289        Copy,
2290        Debug,
2291        PartialEq,
2292        Eq,
2293        Hash,
2294        PartialOrd,
2295        Ord,
2296        ::prost::Enumeration
2297    )]
2298    #[repr(i32)]
2299    pub enum TraceFlag {
2300        Unspecified = 0,
2301        Input = 2,
2302        Composition = 4,
2303        Extra = 8,
2304        Hwc = 16,
2305        Buffers = 32,
2306        VirtualDisplays = 64,
2307        /// INPUT | COMPOSITION | EXTRA
2308        All = 14,
2309    }
2310    impl TraceFlag {
2311        /// String value of the enum field names used in the ProtoBuf definition.
2312        ///
2313        /// The values are not transformed in any way and thus are considered stable
2314        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2315        pub fn as_str_name(&self) -> &'static str {
2316            match self {
2317                Self::Unspecified => "TRACE_FLAG_UNSPECIFIED",
2318                Self::Input => "TRACE_FLAG_INPUT",
2319                Self::Composition => "TRACE_FLAG_COMPOSITION",
2320                Self::Extra => "TRACE_FLAG_EXTRA",
2321                Self::Hwc => "TRACE_FLAG_HWC",
2322                Self::Buffers => "TRACE_FLAG_BUFFERS",
2323                Self::VirtualDisplays => "TRACE_FLAG_VIRTUAL_DISPLAYS",
2324                Self::All => "TRACE_FLAG_ALL",
2325            }
2326        }
2327        /// Creates an enum from field names used in the ProtoBuf definition.
2328        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2329            match value {
2330                "TRACE_FLAG_UNSPECIFIED" => Some(Self::Unspecified),
2331                "TRACE_FLAG_INPUT" => Some(Self::Input),
2332                "TRACE_FLAG_COMPOSITION" => Some(Self::Composition),
2333                "TRACE_FLAG_EXTRA" => Some(Self::Extra),
2334                "TRACE_FLAG_HWC" => Some(Self::Hwc),
2335                "TRACE_FLAG_BUFFERS" => Some(Self::Buffers),
2336                "TRACE_FLAG_VIRTUAL_DISPLAYS" => Some(Self::VirtualDisplays),
2337                "TRACE_FLAG_ALL" => Some(Self::All),
2338                _ => None,
2339            }
2340        }
2341    }
2342}
2343/// Custom configuration for the "android.surfaceflinger.transactions" data
2344/// source.
2345#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2346pub struct SurfaceFlingerTransactionsConfig {
2347    #[prost(
2348        enumeration = "surface_flinger_transactions_config::Mode",
2349        optional,
2350        tag = "1"
2351    )]
2352    pub mode: ::core::option::Option<i32>,
2353}
2354/// Nested message and enum types in `SurfaceFlingerTransactionsConfig`.
2355pub mod surface_flinger_transactions_config {
2356    #[derive(
2357        Clone,
2358        Copy,
2359        Debug,
2360        PartialEq,
2361        Eq,
2362        Hash,
2363        PartialOrd,
2364        Ord,
2365        ::prost::Enumeration
2366    )]
2367    #[repr(i32)]
2368    pub enum Mode {
2369        Unspecified = 0,
2370        /// Default mode (applied by SurfaceFlinger if no mode is specified).
2371        /// SurfaceFlinger writes its internal ring buffer of transactions every time
2372        /// the data source is flushed. The ring buffer contains the SurfaceFlinger's
2373        /// initial state and the latest transactions.
2374        Continuous = 1,
2375        /// SurfaceFlinger writes the initial state and then each incoming
2376        /// transaction until the data source is stopped.
2377        Active = 2,
2378    }
2379    impl Mode {
2380        /// String value of the enum field names used in the ProtoBuf definition.
2381        ///
2382        /// The values are not transformed in any way and thus are considered stable
2383        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2384        pub fn as_str_name(&self) -> &'static str {
2385            match self {
2386                Self::Unspecified => "MODE_UNSPECIFIED",
2387                Self::Continuous => "MODE_CONTINUOUS",
2388                Self::Active => "MODE_ACTIVE",
2389            }
2390        }
2391        /// Creates an enum from field names used in the ProtoBuf definition.
2392        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2393            match value {
2394                "MODE_UNSPECIFIED" => Some(Self::Unspecified),
2395                "MODE_CONTINUOUS" => Some(Self::Continuous),
2396                "MODE_ACTIVE" => Some(Self::Active),
2397                _ => None,
2398            }
2399        }
2400    }
2401}
2402/// Data source that lists details (such as version code) about users on an
2403/// Android device.
2404#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2405pub struct AndroidUserListConfig {
2406    /// An allowlist of user type strings, used to control the granularity of
2407    /// user type information emitted in the trace. Exact, case-sensitive string
2408    /// matching is used.
2409    ///
2410    /// Any user type read from the device that is NOT present in the
2411    /// effective allowlist will have its type reported as
2412    /// "android.os.usertype.FILTERED".
2413    ///
2414    /// The effective allowlist is determined as follows:
2415    ///
2416    /// 1. If this 'user_type_filter' field is provided and non-empty:
2417    ///     This list itself is the effective allowlist.
2418    ///     Example TraceConfig:
2419    ///     --------------------
2420    ///     data_sources {
2421    ///         config {
2422    ///             name: "android.user_list"
2423    ///             target_buffer: 0
2424    ///             user_list_config {
2425    ///               # Only report these specific types, others become FILTERED.
2426    ///               user_type_filter: "android.os.usertype.full.SYSTEM"
2427    ///               user_type_filter: "android.os.usertype.system.HEADLESS"
2428    ///             }
2429    ///         }
2430    ///     }
2431    ///
2432    ///
2433    /// Note: This field does not support regular expressions.
2434    #[prost(string, repeated, tag = "1")]
2435    pub user_type_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2436}
2437/// Custom configuration for the "android.windowmanager" data source.
2438#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2439pub struct WindowManagerConfig {
2440    #[prost(enumeration = "window_manager_config::LogFrequency", optional, tag = "1")]
2441    pub log_frequency: ::core::option::Option<i32>,
2442    #[prost(enumeration = "window_manager_config::LogLevel", optional, tag = "2")]
2443    pub log_level: ::core::option::Option<i32>,
2444    #[prost(enumeration = "window_manager_config::LogMode", optional, tag = "3")]
2445    pub log_mode: ::core::option::Option<i32>,
2446}
2447/// Nested message and enum types in `WindowManagerConfig`.
2448pub mod window_manager_config {
2449    #[derive(
2450        Clone,
2451        Copy,
2452        Debug,
2453        PartialEq,
2454        Eq,
2455        Hash,
2456        PartialOrd,
2457        Ord,
2458        ::prost::Enumeration
2459    )]
2460    #[repr(i32)]
2461    pub enum LogFrequency {
2462        Unspecified = 0,
2463        /// Trace state snapshots when a frame is committed.
2464        Frame = 1,
2465        /// Trace state snapshots every time a transaction is committed.
2466        Transaction = 2,
2467        /// Trace single state snapshots when the data source is started.
2468        SingleDump = 3,
2469    }
2470    impl LogFrequency {
2471        /// String value of the enum field names used in the ProtoBuf definition.
2472        ///
2473        /// The values are not transformed in any way and thus are considered stable
2474        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2475        pub fn as_str_name(&self) -> &'static str {
2476            match self {
2477                Self::Unspecified => "LOG_FREQUENCY_UNSPECIFIED",
2478                Self::Frame => "LOG_FREQUENCY_FRAME",
2479                Self::Transaction => "LOG_FREQUENCY_TRANSACTION",
2480                Self::SingleDump => "LOG_FREQUENCY_SINGLE_DUMP",
2481            }
2482        }
2483        /// Creates an enum from field names used in the ProtoBuf definition.
2484        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2485            match value {
2486                "LOG_FREQUENCY_UNSPECIFIED" => Some(Self::Unspecified),
2487                "LOG_FREQUENCY_FRAME" => Some(Self::Frame),
2488                "LOG_FREQUENCY_TRANSACTION" => Some(Self::Transaction),
2489                "LOG_FREQUENCY_SINGLE_DUMP" => Some(Self::SingleDump),
2490                _ => None,
2491            }
2492        }
2493    }
2494    #[derive(
2495        Clone,
2496        Copy,
2497        Debug,
2498        PartialEq,
2499        Eq,
2500        Hash,
2501        PartialOrd,
2502        Ord,
2503        ::prost::Enumeration
2504    )]
2505    #[repr(i32)]
2506    pub enum LogLevel {
2507        Unspecified = 0,
2508        /// Logs all elements with maximum amount of information.
2509        Verbose = 1,
2510        /// Logs all elements but doesn't write all configuration data.
2511        Debug = 2,
2512        /// Logs only visible elements, with the minimum amount of performance
2513        /// overhead
2514        Critical = 3,
2515    }
2516    impl LogLevel {
2517        /// String value of the enum field names used in the ProtoBuf definition.
2518        ///
2519        /// The values are not transformed in any way and thus are considered stable
2520        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2521        pub fn as_str_name(&self) -> &'static str {
2522            match self {
2523                Self::Unspecified => "LOG_LEVEL_UNSPECIFIED",
2524                Self::Verbose => "LOG_LEVEL_VERBOSE",
2525                Self::Debug => "LOG_LEVEL_DEBUG",
2526                Self::Critical => "LOG_LEVEL_CRITICAL",
2527            }
2528        }
2529        /// Creates an enum from field names used in the ProtoBuf definition.
2530        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2531            match value {
2532                "LOG_LEVEL_UNSPECIFIED" => Some(Self::Unspecified),
2533                "LOG_LEVEL_VERBOSE" => Some(Self::Verbose),
2534                "LOG_LEVEL_DEBUG" => Some(Self::Debug),
2535                "LOG_LEVEL_CRITICAL" => Some(Self::Critical),
2536                _ => None,
2537            }
2538        }
2539    }
2540    #[derive(
2541        Clone,
2542        Copy,
2543        Debug,
2544        PartialEq,
2545        Eq,
2546        Hash,
2547        PartialOrd,
2548        Ord,
2549        ::prost::Enumeration
2550    )]
2551    #[repr(i32)]
2552    pub enum LogMode {
2553        Unspecified = 0,
2554        /// Always logs a full state dump of the window hierarchy.
2555        FullState = 1,
2556        /// Logs a full state dump of the window hierarchy only when tracing starts.
2557        /// The following trace packets are lightweight patches containing only the
2558        /// last changes.
2559        Incremental = 2,
2560    }
2561    impl LogMode {
2562        /// String value of the enum field names used in the ProtoBuf definition.
2563        ///
2564        /// The values are not transformed in any way and thus are considered stable
2565        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2566        pub fn as_str_name(&self) -> &'static str {
2567            match self {
2568                Self::Unspecified => "LOG_MODE_UNSPECIFIED",
2569                Self::FullState => "LOG_MODE_FULL_STATE",
2570                Self::Incremental => "LOG_MODE_INCREMENTAL",
2571            }
2572        }
2573        /// Creates an enum from field names used in the ProtoBuf definition.
2574        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2575            match value {
2576                "LOG_MODE_UNSPECIFIED" => Some(Self::Unspecified),
2577                "LOG_MODE_FULL_STATE" => Some(Self::FullState),
2578                "LOG_MODE_INCREMENTAL" => Some(Self::Incremental),
2579                _ => None,
2580            }
2581        }
2582    }
2583}
2584#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2585pub struct ChromeConfig {
2586    #[prost(string, optional, tag = "1")]
2587    pub trace_config: ::core::option::Option<::prost::alloc::string::String>,
2588    /// When enabled, the data source should only fill in fields in the output that
2589    /// are not potentially privacy sensitive.
2590    #[prost(bool, optional, tag = "2")]
2591    pub privacy_filtering_enabled: ::core::option::Option<bool>,
2592    /// Instead of emitting binary protobuf, convert the trace data to the legacy
2593    /// JSON format. Note that the trace data will still be returned as a series of
2594    /// TracePackets, but the embedded data will be JSON instead of serialized
2595    /// protobuf.
2596    #[prost(bool, optional, tag = "3")]
2597    pub convert_to_legacy_json: ::core::option::Option<bool>,
2598    #[prost(enumeration = "chrome_config::ClientPriority", optional, tag = "4")]
2599    pub client_priority: ::core::option::Option<i32>,
2600    /// Applicable only when using legacy JSON format.
2601    /// If |json_agent_label_filter| is not empty, only data pertaining to
2602    /// the specified tracing agent label (e.g. "traceEvents") will be returned.
2603    #[prost(string, optional, tag = "5")]
2604    pub json_agent_label_filter: ::core::option::Option<::prost::alloc::string::String>,
2605    ///   When enabled, event names should not contain package names.
2606    #[prost(bool, optional, tag = "6")]
2607    pub event_package_name_filter_enabled: ::core::option::Option<bool>,
2608}
2609/// Nested message and enum types in `ChromeConfig`.
2610pub mod chrome_config {
2611    /// Priority of the tracing session client. A higher priority session may
2612    /// preempt a lower priority one in configurations where concurrent sessions
2613    /// aren't supported.
2614    #[derive(
2615        Clone,
2616        Copy,
2617        Debug,
2618        PartialEq,
2619        Eq,
2620        Hash,
2621        PartialOrd,
2622        Ord,
2623        ::prost::Enumeration
2624    )]
2625    #[repr(i32)]
2626    pub enum ClientPriority {
2627        Unknown = 0,
2628        Background = 1,
2629        UserInitiated = 2,
2630    }
2631    impl ClientPriority {
2632        /// String value of the enum field names used in the ProtoBuf definition.
2633        ///
2634        /// The values are not transformed in any way and thus are considered stable
2635        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2636        pub fn as_str_name(&self) -> &'static str {
2637            match self {
2638                Self::Unknown => "UNKNOWN",
2639                Self::Background => "BACKGROUND",
2640                Self::UserInitiated => "USER_INITIATED",
2641            }
2642        }
2643        /// Creates an enum from field names used in the ProtoBuf definition.
2644        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2645            match value {
2646                "UNKNOWN" => Some(Self::Unknown),
2647                "BACKGROUND" => Some(Self::Background),
2648                "USER_INITIATED" => Some(Self::UserInitiated),
2649                _ => None,
2650            }
2651        }
2652    }
2653}
2654#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2655pub struct V8Config {
2656    /// Whether to log the actual content of scripts (e.g. content of the JS file
2657    /// that was compiled to generate code).
2658    /// ATTENTION: This could considerably increase the size of the resuling trace
2659    ///             file.
2660    #[prost(bool, optional, tag = "1")]
2661    pub log_script_sources: ::core::option::Option<bool>,
2662    /// Whether to log the generated code for jitted functions (machine code or
2663    /// bytecode).
2664    /// ATTENTION: This could considerably increase the size of the resuling trace
2665    ///             file.
2666    #[prost(bool, optional, tag = "2")]
2667    pub log_instructions: ::core::option::Option<bool>,
2668}
2669/// Proto definition based on the struct _EVENT_TRACE_PROPERTIES definition
2670/// See: <https://learn.microsoft.com/en-us/windows/win32/api/evntrace/>
2671/// ns-evntrace-event_trace_properties
2672///
2673/// See the list of keywords for for individual providers.
2674/// <https://learn.microsoft.com/en-us/windows/win32/etw/system-providers>
2675#[derive(Clone, PartialEq, ::prost::Message)]
2676pub struct EtwConfig {
2677    /// The kernel_flags determines the flags that will be used by the etw tracing
2678    /// session. These kernel flags have been built to expose the useful events
2679    /// captured from the kernel mode only.
2680    #[deprecated]
2681    #[prost(
2682        enumeration = "etw_config::KernelFlag",
2683        repeated,
2684        packed = "false",
2685        tag = "1"
2686    )]
2687    pub kernel_flags: ::prost::alloc::vec::Vec<i32>,
2688    /// Provides events relating to the scheduler.
2689    #[prost(string, repeated, tag = "2")]
2690    pub scheduler_provider_events: ::prost::alloc::vec::Vec<
2691        ::prost::alloc::string::String,
2692    >,
2693    /// Provides events relating to the memory manager.
2694    #[prost(string, repeated, tag = "3")]
2695    pub memory_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2696    /// Provides events relating to file I/O.
2697    #[deprecated]
2698    #[prost(string, repeated, tag = "4")]
2699    pub file_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2700    /// Events for which stacks should be collected.
2701    #[prost(string, repeated, tag = "5")]
2702    pub stack_sampling_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2703    /// Provides events relating to disk I/O.
2704    #[deprecated]
2705    #[prost(string, repeated, tag = "6")]
2706    pub disk_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2707    /// Provides events relating to multiple kinds of IO including disk, cache, and
2708    /// network.
2709    #[prost(string, repeated, tag = "7")]
2710    pub system_io_provider_events: ::prost::alloc::vec::Vec<
2711        ::prost::alloc::string::String,
2712    >,
2713    /// Debug IDs for images whose stack samples should be symbolized.
2714    #[prost(message, repeated, tag = "8")]
2715    pub stack_sampling_debug_ids: ::prost::alloc::vec::Vec<etw_config::DebugId>,
2716}
2717/// Nested message and enum types in `EtwConfig`.
2718pub mod etw_config {
2719    /// A debug ID that uniquely identifies an image (i.e., executable) for
2720    /// symbolization when stack sampling.
2721    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2722    pub struct DebugId {
2723        /// The full path to the image file.
2724        #[prost(string, optional, tag = "1")]
2725        pub path: ::core::option::Option<::prost::alloc::string::String>,
2726        /// The unique identifier for the image file.
2727        #[prost(string, optional, tag = "2")]
2728        pub debug_id: ::core::option::Option<::prost::alloc::string::String>,
2729    }
2730    /// The KernelFlag represent list of kernel flags that we are intrested in.
2731    /// To get a more extensive list run 'xperf -providers k'.
2732    #[derive(
2733        Clone,
2734        Copy,
2735        Debug,
2736        PartialEq,
2737        Eq,
2738        Hash,
2739        PartialOrd,
2740        Ord,
2741        ::prost::Enumeration
2742    )]
2743    #[repr(i32)]
2744    pub enum KernelFlag {
2745        Cswitch = 0,
2746        Dispatcher = 1,
2747    }
2748    impl KernelFlag {
2749        /// String value of the enum field names used in the ProtoBuf definition.
2750        ///
2751        /// The values are not transformed in any way and thus are considered stable
2752        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2753        pub fn as_str_name(&self) -> &'static str {
2754            match self {
2755                Self::Cswitch => "CSWITCH",
2756                Self::Dispatcher => "DISPATCHER",
2757            }
2758        }
2759        /// Creates an enum from field names used in the ProtoBuf definition.
2760        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2761            match value {
2762                "CSWITCH" => Some(Self::Cswitch),
2763                "DISPATCHER" => Some(Self::Dispatcher),
2764                _ => None,
2765            }
2766        }
2767    }
2768}
2769#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2770pub struct ChromiumSystemMetricsConfig {
2771    /// Samples counters every X ms.
2772    #[prost(uint32, optional, tag = "1")]
2773    pub sampling_interval_ms: ::core::option::Option<u32>,
2774}
2775/// Next id: 38
2776#[derive(Clone, PartialEq, ::prost::Message)]
2777pub struct FtraceConfig {
2778    /// Ftrace events to record, example: "sched/sched_switch".
2779    #[prost(string, repeated, tag = "1")]
2780    pub ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2781    /// Android-specific event categories:
2782    #[prost(string, repeated, tag = "2")]
2783    pub atrace_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2784    #[prost(string, repeated, tag = "3")]
2785    pub atrace_apps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2786    /// Some processes can emit data through atrace or through the perfetto SDK via
2787    /// the "track_event" data source. For these categories, the SDK will be
2788    /// preferred, if possible, for this config.
2789    #[prost(string, repeated, tag = "28")]
2790    pub atrace_categories_prefer_sdk: ::prost::alloc::vec::Vec<
2791        ::prost::alloc::string::String,
2792    >,
2793    /// If true, do *not* add in extra ftrace events when |atrace_categories| are
2794    /// set. This skips the legacy "atrace" behaviour of adding hardcoded ftrace
2795    /// events for convenience (and the vendor-specific events on top).
2796    /// Introduced in: perfetto v52.
2797    #[prost(bool, optional, tag = "34")]
2798    pub atrace_userspace_only: ::core::option::Option<bool>,
2799    /// Size of each per-cpu kernel ftrace ring buffer.
2800    /// Not guaranteed if there are multiple concurrent tracing sessions, as the
2801    /// buffers cannot be resized without pausing recording in the kernel.
2802    #[prost(uint32, optional, tag = "10")]
2803    pub buffer_size_kb: ::core::option::Option<u32>,
2804    /// If true, |buffer_size_kb| is interpreted as a lower bound, allowing the
2805    /// implementation to choose a bigger buffer size.
2806    ///
2807    /// Most configs for perfetto v43+ should simply leave both fields unset.
2808    ///
2809    /// If you need a config compatible with a range of perfetto builds and you
2810    /// used to set a non-default buffer_size_kb, consider setting both fields.
2811    /// Example:
2812    ///    buffer_size_kb: 4096
2813    ///    buffer_size_lower_bound: true
2814    /// On older builds, the per-cpu buffers will be exactly 4 MB.
2815    /// On v43+, buffers will be at least 4 MB.
2816    /// In both cases, neither is guaranteed if there are other concurrent
2817    /// perfetto ftrace sessions, as the buffers cannot be resized without pausing
2818    /// the recording in the kernel.
2819    /// Introduced in: perfetto v43.
2820    #[prost(bool, optional, tag = "27")]
2821    pub buffer_size_lower_bound: ::core::option::Option<bool>,
2822    /// If set, specifies how often the tracing daemon reads from the kernel ring
2823    /// buffer. Not guaranteed if there are multiple concurrent tracing sessions.
2824    /// Leave unset unless you're fine-tuning a local config.
2825    #[prost(uint32, optional, tag = "11")]
2826    pub drain_period_ms: ::core::option::Option<u32>,
2827    /// If set, the tracing daemon will read kernel ring buffers as soon as
2828    /// they're filled past this percentage of occupancy. In other words, a value
2829    /// of 50 means that a read pass is triggered as soon as any per-cpu buffer is
2830    /// half-full. Not guaranteed if there are multiple concurrent tracing
2831    /// sessions.
2832    /// Currently does nothing on Linux kernels below v6.9.
2833    /// Introduced in: perfetto v48.
2834    #[prost(uint32, optional, tag = "29")]
2835    pub drain_buffer_percent: ::core::option::Option<u32>,
2836    #[prost(message, optional, tag = "12")]
2837    pub compact_sched: ::core::option::Option<ftrace_config::CompactSchedConfig>,
2838    #[prost(message, optional, tag = "22")]
2839    pub print_filter: ::core::option::Option<ftrace_config::PrintFilter>,
2840    /// Enables symbol name resolution against /proc/kallsyms.
2841    /// It requires that either traced_probes is running as root or that
2842    /// kptr_restrict has been manually lowered.
2843    /// It does not disclose KASLR, symbol addresses are mangled.
2844    #[prost(bool, optional, tag = "13")]
2845    pub symbolize_ksyms: ::core::option::Option<bool>,
2846    #[prost(enumeration = "ftrace_config::KsymsMemPolicy", optional, tag = "17")]
2847    pub ksyms_mem_policy: ::core::option::Option<i32>,
2848    /// When this boolean is true AND the ftrace_events contains "kmem/rss_stat",
2849    /// this option causes traced_probes to enable the "kmem/rss_stat_throttled"
2850    /// event instead if present, and fall back to "kmem/rss_stat" if not present.
2851    /// The historical context for this is the following:
2852    /// - Up to Android S (12), the rss_stat was internally throttled in its
2853    ///    kernel implementation.
2854    /// - A change introduced in the kernels after S has introduced a new
2855    ///    "rss_stat_throttled" making the original "rss_stat" event unthrottled
2856    ///    (hence very spammy).
2857    /// - Not all Android T/13 devices will receive a new kernel though, hence we
2858    ///    need to deal with both cases.
2859    /// For more context: go/rss-stat-throttled.
2860    #[prost(bool, optional, tag = "15")]
2861    pub throttle_rss_stat: ::core::option::Option<bool>,
2862    /// If true, use self-describing proto messages when writing events not known
2863    /// at compile time (aka generic events). Each event bundle will have a set of
2864    /// serialised proto descriptors for events within that bundle.
2865    ///
2866    /// Default if unset:
2867    /// * v53+: true
2868    /// * before v53: false
2869    ///
2870    /// Added in: perfetto v50.
2871    #[prost(bool, optional, tag = "32")]
2872    pub denser_generic_event_encoding: ::core::option::Option<bool>,
2873    /// If true, avoid enabling events that aren't statically known by
2874    /// traced_probes. Otherwise, the default is to emit such events as
2875    /// GenericFtraceEvent protos.
2876    /// Prefer to keep this flag at its default. This was added for Android
2877    /// tracing, where atrace categories and/or atrace HAL requested events can
2878    /// expand to events that aren't of interest to the tracing user.
2879    /// Introduced in: Android T.
2880    #[prost(bool, optional, tag = "16")]
2881    pub disable_generic_events: ::core::option::Option<bool>,
2882    /// The subset of syscalls to record. To record all syscalls, leave this unset
2883    /// and add "ftrace_events: raw_syscalls/sys_{enter,exit}" to the config.
2884    /// * before perfetto v43, requires the config to also enable
2885    ///    raw_syscalls/sys_{enter,exit}.
2886    /// * perfetto v43+ does the right thing if you set only this field.
2887    /// Example: \["sys_read", "sys_open"\].
2888    /// Introduced in: Android U.
2889    #[prost(string, repeated, tag = "18")]
2890    pub syscall_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2891    /// If true, enable the "function_graph" kernel tracer that emits events
2892    /// whenever a kernel function is entered and exited
2893    /// (funcgraph_entry/funcgraph_exit).
2894    /// Notes on use:
2895    /// * Requires |symbolize_ksyms| for function name resolution.
2896    /// * Use |function_filters| or |function_graph_roots| to constrain the traced
2897    ///    set of functions, otherwise the event bandwidth will be too high for
2898    ///    practical use.
2899    /// * The data source might be rejected if there is already a concurrent
2900    ///    ftrace data source that does not use function graph itself, as we do not
2901    ///    support switching kernel tracers mid-trace.
2902    /// * Requires a kernel compiled with CONFIG_FUNCTION_GRAPH_TRACER. This is
2903    ///    enabled if "cat /sys/kernel/tracing/available_tracers" includes
2904    ///    "function_graph".
2905    /// Android:
2906    /// * Available only on debuggable builds.
2907    /// * Introduced in: Android U.
2908    #[prost(bool, optional, tag = "19")]
2909    pub enable_function_graph: ::core::option::Option<bool>,
2910    /// Constrains the set of functions traced when |enable_function_graph| is
2911    /// true. Supports globs, e.g. "sched*". You can specify multiple filters,
2912    /// in which case all matching functions will be traced. See kernel
2913    /// documentation on ftrace "set_ftrace_filter" file for more details.
2914    /// Android:
2915    /// * Available only on debuggable builds.
2916    /// * Introduced in: Android U.
2917    #[prost(string, repeated, tag = "20")]
2918    pub function_filters: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2919    /// If |enable_function_graph| is true, trace this set of functions *and* all
2920    /// of its callees. Supports globs. Can be set together with
2921    /// |function_filters|, in which case only callees matching the filter will be
2922    /// traced. If setting both, you most likely want all roots to also be
2923    /// included in |function_filters|.
2924    /// Android:
2925    /// * Available only on debuggable builds.
2926    /// * Introduced in: Android U.
2927    #[prost(string, repeated, tag = "21")]
2928    pub function_graph_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2929    /// If |enable_function_graph| is true, only trace the specified
2930    /// number of calls down the stack. Sets the max_graph_depth value
2931    /// in sys/kernel/tracing/
2932    ///
2933    /// Only respected for the first tracing session that enables
2934    /// function_graph tracing.
2935    ///
2936    /// Introduced in: perfetto v51.
2937    /// Supported on: Android 25Q3+.
2938    #[prost(uint32, optional, tag = "33")]
2939    pub function_graph_max_depth: ::core::option::Option<u32>,
2940    /// Ftrace events to record, specific for kprobes and kretprobes
2941    #[prost(message, repeated, tag = "30")]
2942    pub kprobe_events: ::prost::alloc::vec::Vec<ftrace_config::KprobeEvent>,
2943    /// If true, does not clear kernel ftrace buffers when starting the trace.
2944    /// This makes sense only if this is the first ftrace data source instance
2945    /// created after the daemon has been started. Can be useful for gathering boot
2946    /// traces, if ftrace has been separately configured (e.g. via kernel
2947    /// commandline).
2948    /// NB: when configuring the pre-perfetto ftrace, prefer to set
2949    /// "/sys/kernel/tracing/trace_clock" to "boot" if your trace will contain
2950    /// anything besides ftrace. Otherwise timestamps might be skewed.
2951    #[prost(bool, optional, tag = "23")]
2952    pub preserve_ftrace_buffer: ::core::option::Option<bool>,
2953    /// If true, overrides the default timestamp clock and uses a raw hardware
2954    /// based monotonic clock for getting timestamps.
2955    /// * Introduced in: Android U.
2956    #[prost(bool, optional, tag = "24")]
2957    pub use_monotonic_raw_clock: ::core::option::Option<bool>,
2958    /// If |instance_name| is not empty, then attempt to use that tracefs instance
2959    /// for event recording. Normally, this means
2960    /// `/sys/kernel/tracing/instances/$instance_name`.
2961    ///
2962    /// Names "hyp" and "hypervisor" are reserved.
2963    ///
2964    /// The instance must already exist, the tracing daemon *will not* create it
2965    /// for you as it typically doesn't have such permissions.
2966    /// Only a subset of features is guaranteed to work with non-default instances,
2967    /// at the time of writing:
2968    ///   * ftrace_events
2969    ///   * buffer_size_kb
2970    #[prost(string, optional, tag = "25")]
2971    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
2972    /// For perfetto developer use. If true and on a debuggable android build,
2973    /// serialise raw tracing pages that the implementation cannot parse.
2974    #[prost(bool, optional, tag = "31")]
2975    pub debug_ftrace_abi: ::core::option::Option<bool>,
2976    /// Filter ftrace events by Thread ID (TID).
2977    /// This writes the TIDs to `/sys/kernel/tracing/set_event_pid`.
2978    ///
2979    /// Note: this is an exclusive feature, see:
2980    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
2981    ///
2982    /// Introduced in: perfetto v52.
2983    /// Supported on: Android 25Q3+.
2984    #[prost(uint32, repeated, packed = "false", tag = "35")]
2985    pub tids_to_trace: ::prost::alloc::vec::Vec<u32>,
2986    #[prost(message, repeated, tag = "36")]
2987    pub tracefs_options: ::prost::alloc::vec::Vec<ftrace_config::TracefsOption>,
2988    /// This mask restricts tracing to a specific set of CPUs using a
2989    /// comma-separated hex mask. Each hex number (up to 8 digits) represents a
2990    /// 32-bit chunk of the CPU mask.
2991    ///
2992    /// The chunks are ordered from high CPUs to low CPUs (left to right):
2993    ///    - Rightmost chunk: CPUs 0-31
2994    ///    - 2nd chunk from right: CPUs 32-63
2995    ///    - ...and so on.
2996    ///
2997    /// Example (assuming NR_CPUS=128, requiring 4 chunks):
2998    /// The full mask would be in the format: "chunk3,chunk2,chunk1,chunk0"
2999    /// where chunk3 maps to CPUs 96-127, chunk2 to 64-95, chunk1 to 32-63, and
3000    /// chunk0 to 0-31.
3001    ///    - "ffffffff,0,0,0": Enables CPUs 96-127 only.
3002    ///    - "f,ff": Enables CPUs 0-7 (from "ff") and CPUs 32-35 (from "f").
3003    ///
3004    /// Note: This is an exclusive feature, see:
3005    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
3006    ///
3007    /// Introduced in: perfetto v52.
3008    /// Supported on: Android 25Q3+.
3009    #[prost(string, optional, tag = "37")]
3010    pub tracing_cpumask: ::core::option::Option<::prost::alloc::string::String>,
3011    /// No-op in perfetto v28+. Name preserved because of existing references in
3012    /// textproto configs.
3013    #[deprecated]
3014    #[prost(bool, optional, tag = "14")]
3015    pub initialize_ksyms_synchronously_for_testing: ::core::option::Option<bool>,
3016}
3017/// Nested message and enum types in `FtraceConfig`.
3018pub mod ftrace_config {
3019    /// Configuration for compact encoding of scheduler events. When enabled (and
3020    /// recording the relevant ftrace events), specific high-volume events are
3021    /// encoded in a denser format than normal.
3022    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3023    pub struct CompactSchedConfig {
3024        /// If true, and sched_switch or sched_waking ftrace events are enabled,
3025        /// record those events in the compact format.
3026        ///
3027        /// If the field is unset, the default is:
3028        /// * perfetto v42.0+: enabled
3029        /// * before: disabled
3030        #[prost(bool, optional, tag = "1")]
3031        pub enabled: ::core::option::Option<bool>,
3032    }
3033    /// Optional filter for "ftrace/print" events.
3034    ///
3035    /// The filter consists of multiple rules. As soon as a rule matches (the rules
3036    /// are processed in order), its `allow` field will be used as the outcome: if
3037    /// `allow` is true, the event will be included in the trace, otherwise it will
3038    /// be discarded. If an event does not match any rule, it will be allowed by
3039    /// default (a rule with an empty prefix and allow=false, disallows everything
3040    /// by default).
3041    #[derive(Clone, PartialEq, ::prost::Message)]
3042    pub struct PrintFilter {
3043        #[prost(message, repeated, tag = "1")]
3044        pub rules: ::prost::alloc::vec::Vec<print_filter::Rule>,
3045    }
3046    /// Nested message and enum types in `PrintFilter`.
3047    pub mod print_filter {
3048        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3049        pub struct Rule {
3050            #[prost(bool, optional, tag = "2")]
3051            pub allow: ::core::option::Option<bool>,
3052            #[prost(oneof = "rule::Match", tags = "1, 3")]
3053            pub r#match: ::core::option::Option<rule::Match>,
3054        }
3055        /// Nested message and enum types in `Rule`.
3056        pub mod rule {
3057            /// Matches an atrace message of the form:
3058            /// <type>|pid|<prefix>...
3059            #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3060            pub struct AtraceMessage {
3061                #[prost(string, optional, tag = "1")]
3062                pub r#type: ::core::option::Option<::prost::alloc::string::String>,
3063                #[prost(string, optional, tag = "2")]
3064                pub prefix: ::core::option::Option<::prost::alloc::string::String>,
3065            }
3066            #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
3067            pub enum Match {
3068                /// This rule matches if `prefix` matches exactly with the beginning of
3069                /// the "ftrace/print" "buf" field.
3070                #[prost(string, tag = "1")]
3071                Prefix(::prost::alloc::string::String),
3072                /// This rule matches if the "buf" field contains an atrace-style print
3073                /// message as specified in `atrace_msg`.
3074                #[prost(message, tag = "3")]
3075                AtraceMsg(AtraceMessage),
3076            }
3077        }
3078    }
3079    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3080    pub struct KprobeEvent {
3081        /// Kernel function name to attach to, for example "fuse_file_write_iter"
3082        #[prost(string, optional, tag = "1")]
3083        pub probe: ::core::option::Option<::prost::alloc::string::String>,
3084        #[prost(enumeration = "kprobe_event::KprobeType", optional, tag = "2")]
3085        pub r#type: ::core::option::Option<i32>,
3086    }
3087    /// Nested message and enum types in `KprobeEvent`.
3088    pub mod kprobe_event {
3089        #[derive(
3090            Clone,
3091            Copy,
3092            Debug,
3093            PartialEq,
3094            Eq,
3095            Hash,
3096            PartialOrd,
3097            Ord,
3098            ::prost::Enumeration
3099        )]
3100        #[repr(i32)]
3101        pub enum KprobeType {
3102            Unknown = 0,
3103            Kprobe = 1,
3104            Kretprobe = 2,
3105            Both = 3,
3106        }
3107        impl KprobeType {
3108            /// String value of the enum field names used in the ProtoBuf definition.
3109            ///
3110            /// The values are not transformed in any way and thus are considered stable
3111            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3112            pub fn as_str_name(&self) -> &'static str {
3113                match self {
3114                    Self::Unknown => "KPROBE_TYPE_UNKNOWN",
3115                    Self::Kprobe => "KPROBE_TYPE_KPROBE",
3116                    Self::Kretprobe => "KPROBE_TYPE_KRETPROBE",
3117                    Self::Both => "KPROBE_TYPE_BOTH",
3118                }
3119            }
3120            /// Creates an enum from field names used in the ProtoBuf definition.
3121            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3122                match value {
3123                    "KPROBE_TYPE_UNKNOWN" => Some(Self::Unknown),
3124                    "KPROBE_TYPE_KPROBE" => Some(Self::Kprobe),
3125                    "KPROBE_TYPE_KRETPROBE" => Some(Self::Kretprobe),
3126                    "KPROBE_TYPE_BOTH" => Some(Self::Both),
3127                    _ => None,
3128                }
3129            }
3130        }
3131    }
3132    /// Tracefs options to set directly in the tracefs instance. This is a very
3133    /// niche feature since almost all of the options deal with formatting textual
3134    /// output (the /trace file), which perfetto doesn't use.
3135    ///
3136    /// The options with a known use-case:
3137    /// * event-fork: when using `tids_to_trace` above, the kernel will
3138    ///    automatically add newly spawned descendant threads to the set of TIDs.
3139    ///
3140    /// Full list of options is available at
3141    /// <https://docs.kernel.org/trace/ftrace.html#trace-options.>
3142    ///
3143    /// Note: this is an exclusive feature, see:
3144    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
3145    ///
3146    /// Introduced in: perfetto v52.
3147    /// Supported on: Android 25Q3+.
3148    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3149    pub struct TracefsOption {
3150        /// The name of the tracefs option as found in tracefs/trace_options (without
3151        /// the "no" prefix).
3152        #[prost(string, optional, tag = "1")]
3153        pub name: ::core::option::Option<::prost::alloc::string::String>,
3154        #[prost(enumeration = "tracefs_option::State", optional, tag = "2")]
3155        pub state: ::core::option::Option<i32>,
3156    }
3157    /// Nested message and enum types in `TracefsOption`.
3158    pub mod tracefs_option {
3159        #[derive(
3160            Clone,
3161            Copy,
3162            Debug,
3163            PartialEq,
3164            Eq,
3165            Hash,
3166            PartialOrd,
3167            Ord,
3168            ::prost::Enumeration
3169        )]
3170        #[repr(i32)]
3171        pub enum State {
3172            Unknown = 0,
3173            Enabled = 1,
3174            Disabled = 2,
3175        }
3176        impl State {
3177            /// String value of the enum field names used in the ProtoBuf definition.
3178            ///
3179            /// The values are not transformed in any way and thus are considered stable
3180            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3181            pub fn as_str_name(&self) -> &'static str {
3182                match self {
3183                    Self::Unknown => "STATE_UNKNOWN",
3184                    Self::Enabled => "STATE_ENABLED",
3185                    Self::Disabled => "STATE_DISABLED",
3186                }
3187            }
3188            /// Creates an enum from field names used in the ProtoBuf definition.
3189            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3190                match value {
3191                    "STATE_UNKNOWN" => Some(Self::Unknown),
3192                    "STATE_ENABLED" => Some(Self::Enabled),
3193                    "STATE_DISABLED" => Some(Self::Disabled),
3194                    _ => None,
3195                }
3196            }
3197        }
3198    }
3199    /// When symbolize_ksyms=true, determines whether the traced_probes daemon
3200    /// should keep the symbol map in memory (and reuse it for future tracing
3201    /// sessions) or clear it (saving memory) and re-create it on each tracing
3202    /// session (wasting cpu and wall time).
3203    /// The tradeoff is roughly:
3204    ///   KSYMS_RETAIN: pay a fixed ~1.2 MB cost after the first trace.
3205    ///   KSYMS_CLEANUP_ON_STOP: pay a ~300-500ms cost when starting each trace.
3206    /// Default behavior: KSYMS_CLEANUP_ON_STOP.
3207    #[derive(
3208        Clone,
3209        Copy,
3210        Debug,
3211        PartialEq,
3212        Eq,
3213        Hash,
3214        PartialOrd,
3215        Ord,
3216        ::prost::Enumeration
3217    )]
3218    #[repr(i32)]
3219    pub enum KsymsMemPolicy {
3220        KsymsUnspecified = 0,
3221        KsymsCleanupOnStop = 1,
3222        KsymsRetain = 2,
3223    }
3224    impl KsymsMemPolicy {
3225        /// String value of the enum field names used in the ProtoBuf definition.
3226        ///
3227        /// The values are not transformed in any way and thus are considered stable
3228        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3229        pub fn as_str_name(&self) -> &'static str {
3230            match self {
3231                Self::KsymsUnspecified => "KSYMS_UNSPECIFIED",
3232                Self::KsymsCleanupOnStop => "KSYMS_CLEANUP_ON_STOP",
3233                Self::KsymsRetain => "KSYMS_RETAIN",
3234            }
3235        }
3236        /// Creates an enum from field names used in the ProtoBuf definition.
3237        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3238            match value {
3239                "KSYMS_UNSPECIFIED" => Some(Self::KsymsUnspecified),
3240                "KSYMS_CLEANUP_ON_STOP" => Some(Self::KsymsCleanupOnStop),
3241                "KSYMS_RETAIN" => Some(Self::KsymsRetain),
3242                _ => None,
3243            }
3244        }
3245    }
3246}
3247#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3248pub struct FrozenFtraceConfig {
3249    /// The instance name which stores the previous boot ftrace data. Required.
3250    #[prost(string, optional, tag = "1")]
3251    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
3252}
3253#[derive(Clone, PartialEq, ::prost::Message)]
3254pub struct GpuCounterConfig {
3255    /// Desired sampling interval for counters.
3256    #[prost(uint64, optional, tag = "1")]
3257    pub counter_period_ns: ::core::option::Option<u64>,
3258    /// Selects which counters to sample. Use either counter_ids or counter_names,
3259    /// not both. Counter IDs and names correspond to the ones described in
3260    /// GpuCounterSpec in the data source descriptor.
3261    ///
3262    /// List of counter IDs to be sampled.
3263    #[prost(uint32, repeated, packed = "false", tag = "2")]
3264    pub counter_ids: ::prost::alloc::vec::Vec<u32>,
3265    /// List of counter names to be sampled. Requires producer support; check
3266    /// GpuCounterDescriptor.supports_counter_names in the data source descriptor.
3267    /// Glob patterns may be used to match multiple counters by name; check
3268    /// GpuCounterDescriptor.supports_counter_name_globs for support.
3269    #[prost(string, repeated, tag = "6")]
3270    pub counter_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3271    /// Fix gpu clock rate during trace session.
3272    #[prost(bool, optional, tag = "4")]
3273    pub fix_gpu_clock: ::core::option::Option<bool>,
3274    /// Sample counters by instrumenting command buffers.
3275    #[prost(oneof = "gpu_counter_config::InstrumentedSamplingMode", tags = "3, 5")]
3276    pub instrumented_sampling_mode: ::core::option::Option<
3277        gpu_counter_config::InstrumentedSamplingMode,
3278    >,
3279}
3280/// Nested message and enum types in `GpuCounterConfig`.
3281pub mod gpu_counter_config {
3282    /// Configuration for sampling counters by instrumenting command buffers.
3283    ///
3284    /// When instrumented_sampling_config is used (instead of the
3285    /// instrumented_sampling bool), the following steps determine whether
3286    /// instrumented counters are enabled for a given GPU activity:
3287    ///
3288    /// 1. Activity name filtering: If activity_name_filters is non-empty, the
3289    ///     activity must match at least one filter. If empty, all activities
3290    ///     pass this step.
3291    /// 2. TX range filtering: If activity_tx_include_globs is non-empty, the
3292    ///     activity must fall within a matching TX range. Activities in TX
3293    ///     ranges matching activity_tx_exclude_globs are excluded (excludes
3294    ///     take precedence over includes). If both are empty, all activities
3295    ///     pass this step.
3296    /// 3. Range-based sampling: If activity_ranges is non-empty, only
3297    ///     activities within the specified skip/count ranges are instrumented.
3298    ///     If empty, all activities that passed the previous steps are
3299    ///     instrumented.
3300    #[derive(Clone, PartialEq, ::prost::Message)]
3301    pub struct InstrumentedSamplingConfig {
3302        /// GPU activity name filters. An activity matches if it matches any filter.
3303        #[prost(message, repeated, tag = "3")]
3304        pub activity_name_filters: ::prost::alloc::vec::Vec<
3305            instrumented_sampling_config::ActivityNameFilter,
3306        >,
3307        /// Glob patterns to use for including GPU activities in TX ranges. TX
3308        /// ranges are in-process annotations that mark different sections of GPU
3309        /// work (e.g. NVTX ranges for CUDA). TX ranges can be nested, and an
3310        /// activity is included if any range in its nesting hierarchy matches.
3311        /// Only activities that fall within a matching TX range will be
3312        /// instrumented.
3313        #[prost(string, repeated, tag = "6")]
3314        pub activity_tx_include_globs: ::prost::alloc::vec::Vec<
3315            ::prost::alloc::string::String,
3316        >,
3317        /// Glob patterns to use for excluding GPU activities from TX ranges.
3318        /// TX ranges can be nested, and an activity is excluded if any range
3319        /// in its nesting hierarchy matches. Excludes take precedence over
3320        /// includes.
3321        #[prost(string, repeated, tag = "7")]
3322        pub activity_tx_exclude_globs: ::prost::alloc::vec::Vec<
3323            ::prost::alloc::string::String,
3324        >,
3325        /// Ranges of GPU activities to instrument. Applied after activity name
3326        /// and TX range filters. If empty, all activities that passed the
3327        /// previous filters are instrumented.
3328        #[prost(message, repeated, tag = "5")]
3329        pub activity_ranges: ::prost::alloc::vec::Vec<
3330            instrumented_sampling_config::ActivityRange,
3331        >,
3332    }
3333    /// Nested message and enum types in `InstrumentedSamplingConfig`.
3334    pub mod instrumented_sampling_config {
3335        /// Filters GPU activities by name. Each filter specifies a glob pattern
3336        /// and the basis for matching (mangled or demangled kernel name).
3337        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3338        pub struct ActivityNameFilter {
3339            /// required. Glob pattern to use for GPU activity name filtering.
3340            #[prost(string, optional, tag = "1")]
3341            pub name_glob: ::core::option::Option<::prost::alloc::string::String>,
3342            /// Basis for name filtering. Defaults to MANGLED_KERNEL_NAME if not
3343            /// specified.
3344            #[prost(enumeration = "activity_name_filter::NameBase", optional, tag = "2")]
3345            pub name_base: ::core::option::Option<i32>,
3346        }
3347        /// Nested message and enum types in `ActivityNameFilter`.
3348        pub mod activity_name_filter {
3349            #[derive(
3350                Clone,
3351                Copy,
3352                Debug,
3353                PartialEq,
3354                Eq,
3355                Hash,
3356                PartialOrd,
3357                Ord,
3358                ::prost::Enumeration
3359            )]
3360            #[repr(i32)]
3361            pub enum NameBase {
3362                /// Match against the mangled (compiler-encoded) kernel name.
3363                /// Example: for a kernel whose demangled name is
3364                /// "matmul(float*,int,int)", the mangled name might be
3365                /// "_Z6matmulPfii". The glob pattern is matched against this
3366                /// mangled form.
3367                MangledKernelName = 0,
3368                /// Match against the fully demangled kernel name, including
3369                /// parameters, templates, and qualifiers.
3370                /// Example: "matmul(float*,int,int)". The glob pattern is
3371                /// matched against this full demangled form.
3372                DemangledKernelName = 1,
3373                /// Match against only the function name portion of the
3374                /// demangled kernel name, without parameters, templates,
3375                /// return types, or namespaces.
3376                /// Example: "matmul". The glob pattern is matched against
3377                /// just the bare function name.
3378                FunctionName = 2,
3379            }
3380            impl NameBase {
3381                /// String value of the enum field names used in the ProtoBuf definition.
3382                ///
3383                /// The values are not transformed in any way and thus are considered stable
3384                /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3385                pub fn as_str_name(&self) -> &'static str {
3386                    match self {
3387                        Self::MangledKernelName => "MANGLED_KERNEL_NAME",
3388                        Self::DemangledKernelName => "DEMANGLED_KERNEL_NAME",
3389                        Self::FunctionName => "FUNCTION_NAME",
3390                    }
3391                }
3392                /// Creates an enum from field names used in the ProtoBuf definition.
3393                pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3394                    match value {
3395                        "MANGLED_KERNEL_NAME" => Some(Self::MangledKernelName),
3396                        "DEMANGLED_KERNEL_NAME" => Some(Self::DemangledKernelName),
3397                        "FUNCTION_NAME" => Some(Self::FunctionName),
3398                        _ => None,
3399                    }
3400                }
3401            }
3402        }
3403        /// Defines a range of GPU activities to instrument.
3404        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3405        pub struct ActivityRange {
3406            /// Number of GPU activities to skip before starting to instrument
3407            /// command buffers. Defaults to 0 if not specified.
3408            #[prost(uint32, optional, tag = "1")]
3409            pub skip: ::core::option::Option<u32>,
3410            /// Limit for the number of GPU activities to sample counters for by
3411            /// instrumenting command buffers. Defaults to UINT32_MAX (all
3412            /// remaining activities) if not specified.
3413            #[prost(uint32, optional, tag = "2")]
3414            pub count: ::core::option::Option<u32>,
3415        }
3416    }
3417    /// Sample counters by instrumenting command buffers.
3418    #[derive(Clone, PartialEq, ::prost::Oneof)]
3419    pub enum InstrumentedSamplingMode {
3420        #[prost(bool, tag = "3")]
3421        InstrumentedSampling(bool),
3422        #[prost(message, tag = "5")]
3423        InstrumentedSamplingConfig(InstrumentedSamplingConfig),
3424    }
3425}
3426#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3427pub struct VulkanMemoryConfig {
3428    /// Tracking driver memory usage events
3429    #[prost(bool, optional, tag = "1")]
3430    pub track_driver_memory_usage: ::core::option::Option<bool>,
3431    /// Tracking device memory usage events
3432    #[prost(bool, optional, tag = "2")]
3433    pub track_device_memory_usage: ::core::option::Option<bool>,
3434}
3435#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3436pub struct GpuRenderStagesConfig {
3437    /// Enable to separate the color and depth/stencil load and store stages
3438    /// into a separate stages. If disabled, the depth/stencil load and store
3439    /// stages will be combined.  Disabled by default. This option has no effect if
3440    /// Low Overhead mode is enabled.
3441    #[prost(bool, optional, tag = "1")]
3442    pub full_loadstore: ::core::option::Option<bool>,
3443    /// Use the low overhead mode for traces. In this mode render stages are
3444    /// combined into a single workload stage. This provides less granular data but
3445    /// induces minimal GPU overhead. Disabled by default.
3446    #[prost(bool, optional, tag = "2")]
3447    pub low_overhead: ::core::option::Option<bool>,
3448    /// Trace metrics to capture for each render stage
3449    #[prost(string, repeated, tag = "3")]
3450    pub trace_metrics: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3451    /// Enable per-draw-call slices, with real per-occurrence timestamps and metric
3452    /// values, on the gpu.renderstages data source. Disabled by default.
3453    /// When drawcall_stages is enabled, full_loadstore and low_overhead are
3454    /// ignored and their default values are used.
3455    #[prost(bool, optional, tag = "4")]
3456    pub drawcall_stages: ::core::option::Option<bool>,
3457}
3458/// WARNING: unmaintained and deprecated. Likely won't work at all on modern
3459/// systems.
3460#[derive(Clone, PartialEq, ::prost::Message)]
3461pub struct InodeFileConfig {
3462    /// How long to pause between batches.
3463    #[prost(uint32, optional, tag = "1")]
3464    pub scan_interval_ms: ::core::option::Option<u32>,
3465    /// How long to wait before the first scan in order to accumulate inodes.
3466    #[prost(uint32, optional, tag = "2")]
3467    pub scan_delay_ms: ::core::option::Option<u32>,
3468    /// How many inodes to scan in one batch.
3469    #[prost(uint32, optional, tag = "3")]
3470    pub scan_batch_size: ::core::option::Option<u32>,
3471    /// Do not scan for inodes not found in the static map.
3472    #[prost(bool, optional, tag = "4")]
3473    pub do_not_scan: ::core::option::Option<bool>,
3474    /// If non-empty, only scan inodes corresponding to block devices named in
3475    /// this list.
3476    #[prost(string, repeated, tag = "5")]
3477    pub scan_mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3478    /// When encountering an inode belonging to a block device corresponding
3479    /// to one of the mount points in this map, scan its scan_roots instead.
3480    #[prost(message, repeated, tag = "6")]
3481    pub mount_point_mapping: ::prost::alloc::vec::Vec<
3482        inode_file_config::MountPointMappingEntry,
3483    >,
3484}
3485/// Nested message and enum types in `InodeFileConfig`.
3486pub mod inode_file_config {
3487    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3488    pub struct MountPointMappingEntry {
3489        #[prost(string, optional, tag = "1")]
3490        pub mountpoint: ::core::option::Option<::prost::alloc::string::String>,
3491        #[prost(string, repeated, tag = "2")]
3492        pub scan_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3493    }
3494}
3495#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3496pub struct ConsoleConfig {
3497    #[prost(enumeration = "console_config::Output", optional, tag = "1")]
3498    pub output: ::core::option::Option<i32>,
3499    #[prost(bool, optional, tag = "2")]
3500    pub enable_colors: ::core::option::Option<bool>,
3501}
3502/// Nested message and enum types in `ConsoleConfig`.
3503pub mod console_config {
3504    #[derive(
3505        Clone,
3506        Copy,
3507        Debug,
3508        PartialEq,
3509        Eq,
3510        Hash,
3511        PartialOrd,
3512        Ord,
3513        ::prost::Enumeration
3514    )]
3515    #[repr(i32)]
3516    pub enum Output {
3517        Unspecified = 0,
3518        Stdout = 1,
3519        Stderr = 2,
3520    }
3521    impl Output {
3522        /// String value of the enum field names used in the ProtoBuf definition.
3523        ///
3524        /// The values are not transformed in any way and thus are considered stable
3525        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3526        pub fn as_str_name(&self) -> &'static str {
3527            match self {
3528                Self::Unspecified => "OUTPUT_UNSPECIFIED",
3529                Self::Stdout => "OUTPUT_STDOUT",
3530                Self::Stderr => "OUTPUT_STDERR",
3531            }
3532        }
3533        /// Creates an enum from field names used in the ProtoBuf definition.
3534        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3535            match value {
3536                "OUTPUT_UNSPECIFIED" => Some(Self::Unspecified),
3537                "OUTPUT_STDOUT" => Some(Self::Stdout),
3538                "OUTPUT_STDERR" => Some(Self::Stderr),
3539                _ => None,
3540            }
3541        }
3542    }
3543}
3544/// Configuration for trace packet interception. Used for diverting trace data to
3545/// non-Perfetto sources (e.g., logging to the console, ETW) when using the
3546/// Perfetto SDK.
3547#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3548pub struct InterceptorConfig {
3549    /// Matches the name given to RegisterInterceptor().
3550    #[prost(string, optional, tag = "1")]
3551    pub name: ::core::option::Option<::prost::alloc::string::String>,
3552    #[prost(message, optional, tag = "100")]
3553    pub console_config: ::core::option::Option<ConsoleConfig>,
3554}
3555#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3556pub struct AndroidPowerConfig {
3557    #[prost(uint32, optional, tag = "1")]
3558    pub battery_poll_ms: ::core::option::Option<u32>,
3559    #[prost(
3560        enumeration = "android_power_config::BatteryCounters",
3561        repeated,
3562        packed = "false",
3563        tag = "2"
3564    )]
3565    pub battery_counters: ::prost::alloc::vec::Vec<i32>,
3566    /// Where available enables per-power-rail measurements.
3567    #[prost(bool, optional, tag = "3")]
3568    pub collect_power_rails: ::core::option::Option<bool>,
3569    /// Provides a breakdown of energy estimation for various subsystem (e.g. GPU).
3570    /// Available from Android S.
3571    #[prost(bool, optional, tag = "4")]
3572    pub collect_energy_estimation_breakdown: ::core::option::Option<bool>,
3573    /// Provides a breakdown of time in state for various subsystems.
3574    /// Available from Android U.
3575    #[prost(bool, optional, tag = "5")]
3576    pub collect_entity_state_residency: ::core::option::Option<bool>,
3577}
3578/// Nested message and enum types in `AndroidPowerConfig`.
3579pub mod android_power_config {
3580    #[derive(
3581        Clone,
3582        Copy,
3583        Debug,
3584        PartialEq,
3585        Eq,
3586        Hash,
3587        PartialOrd,
3588        Ord,
3589        ::prost::Enumeration
3590    )]
3591    #[repr(i32)]
3592    pub enum BatteryCounters {
3593        BatteryCounterUnspecified = 0,
3594        /// Coulomb counter.
3595        BatteryCounterCharge = 1,
3596        /// Charge (%).
3597        BatteryCounterCapacityPercent = 2,
3598        /// Instantaneous current.
3599        BatteryCounterCurrent = 3,
3600        /// Avg current.
3601        BatteryCounterCurrentAvg = 4,
3602        /// Instantaneous voltage.
3603        BatteryCounterVoltage = 5,
3604    }
3605    impl BatteryCounters {
3606        /// String value of the enum field names used in the ProtoBuf definition.
3607        ///
3608        /// The values are not transformed in any way and thus are considered stable
3609        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3610        pub fn as_str_name(&self) -> &'static str {
3611            match self {
3612                Self::BatteryCounterUnspecified => "BATTERY_COUNTER_UNSPECIFIED",
3613                Self::BatteryCounterCharge => "BATTERY_COUNTER_CHARGE",
3614                Self::BatteryCounterCapacityPercent => "BATTERY_COUNTER_CAPACITY_PERCENT",
3615                Self::BatteryCounterCurrent => "BATTERY_COUNTER_CURRENT",
3616                Self::BatteryCounterCurrentAvg => "BATTERY_COUNTER_CURRENT_AVG",
3617                Self::BatteryCounterVoltage => "BATTERY_COUNTER_VOLTAGE",
3618            }
3619        }
3620        /// Creates an enum from field names used in the ProtoBuf definition.
3621        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3622            match value {
3623                "BATTERY_COUNTER_UNSPECIFIED" => Some(Self::BatteryCounterUnspecified),
3624                "BATTERY_COUNTER_CHARGE" => Some(Self::BatteryCounterCharge),
3625                "BATTERY_COUNTER_CAPACITY_PERCENT" => {
3626                    Some(Self::BatteryCounterCapacityPercent)
3627                }
3628                "BATTERY_COUNTER_CURRENT" => Some(Self::BatteryCounterCurrent),
3629                "BATTERY_COUNTER_CURRENT_AVG" => Some(Self::BatteryCounterCurrentAvg),
3630                "BATTERY_COUNTER_VOLTAGE" => Some(Self::BatteryCounterVoltage),
3631                _ => None,
3632            }
3633        }
3634    }
3635}
3636#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3637pub struct ProtoVmConfig {
3638    #[prost(uint32, optional, tag = "1")]
3639    pub memory_limit_kb: ::core::option::Option<u32>,
3640}
3641/// This enum is obtained by post-processing
3642/// AOSP/frameworks/proto_logging/stats/atoms.proto through
3643/// AOSP/external/perfetto/tools/update-statsd-descriptor, which extracts one
3644/// enum value for each proto field defined in the upstream atoms.proto.
3645#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3646#[repr(i32)]
3647pub enum AtomId {
3648    AtomUnspecified = 0,
3649    AtomBleScanStateChanged = 2,
3650    AtomProcessStateChanged = 3,
3651    AtomBleScanResultReceived = 4,
3652    AtomSensorStateChanged = 5,
3653    AtomGpsScanStateChanged = 6,
3654    AtomSyncStateChanged = 7,
3655    AtomScheduledJobStateChanged = 8,
3656    AtomScreenBrightnessChanged = 9,
3657    AtomWakelockStateChanged = 10,
3658    AtomLongPartialWakelockStateChanged = 11,
3659    AtomMobileRadioPowerStateChanged = 12,
3660    AtomWifiRadioPowerStateChanged = 13,
3661    AtomActivityManagerSleepStateChanged = 14,
3662    AtomMemoryFactorStateChanged = 15,
3663    AtomExcessiveCpuUsageReported = 16,
3664    AtomCachedKillReported = 17,
3665    AtomProcessMemoryStatReported = 18,
3666    AtomLauncherEvent = 19,
3667    AtomBatterySaverModeStateChanged = 20,
3668    AtomDeviceIdleModeStateChanged = 21,
3669    AtomDeviceIdlingModeStateChanged = 22,
3670    AtomAudioStateChanged = 23,
3671    AtomMediaCodecStateChanged = 24,
3672    AtomCameraStateChanged = 25,
3673    AtomFlashlightStateChanged = 26,
3674    AtomUidProcessStateChanged = 27,
3675    AtomProcessLifeCycleStateChanged = 28,
3676    AtomScreenStateChanged = 29,
3677    AtomBatteryLevelChanged = 30,
3678    AtomChargingStateChanged = 31,
3679    AtomPluggedStateChanged = 32,
3680    AtomInteractiveStateChanged = 33,
3681    AtomTouchEventReported = 34,
3682    AtomWakeupAlarmOccurred = 35,
3683    AtomKernelWakeupReported = 36,
3684    AtomWifiLockStateChanged = 37,
3685    AtomWifiSignalStrengthChanged = 38,
3686    AtomWifiScanStateChanged = 39,
3687    AtomPhoneSignalStrengthChanged = 40,
3688    AtomSettingChanged = 41,
3689    AtomActivityForegroundStateChanged = 42,
3690    AtomIsolatedUidChanged = 43,
3691    AtomPacketWakeupOccurred = 44,
3692    AtomWallClockTimeShifted = 45,
3693    AtomAnomalyDetected = 46,
3694    AtomAppBreadcrumbReported = 47,
3695    AtomAppStartOccurred = 48,
3696    AtomAppStartCanceled = 49,
3697    AtomAppStartFullyDrawn = 50,
3698    AtomLmkKillOccurred = 51,
3699    AtomPictureInPictureStateChanged = 52,
3700    AtomWifiMulticastLockStateChanged = 53,
3701    AtomAppStartMemoryStateCaptured = 55,
3702    AtomShutdownSequenceReported = 56,
3703    AtomBootSequenceReported = 57,
3704    AtomOverlayStateChanged = 59,
3705    AtomForegroundServiceStateChanged = 60,
3706    AtomCallStateChanged = 61,
3707    AtomKeyguardStateChanged = 62,
3708    AtomKeyguardBouncerStateChanged = 63,
3709    AtomKeyguardBouncerPasswordEntered = 64,
3710    AtomAppDied = 65,
3711    AtomResourceConfigurationChanged = 66,
3712    AtomBluetoothEnabledStateChanged = 67,
3713    AtomBluetoothConnectionStateChanged = 68,
3714    AtomGpsSignalQualityChanged = 69,
3715    AtomUsbConnectorStateChanged = 70,
3716    AtomSpeakerImpedanceReported = 71,
3717    AtomHardwareFailed = 72,
3718    AtomPhysicalDropDetected = 73,
3719    AtomChargeCyclesReported = 74,
3720    AtomMobileConnectionStateChanged = 75,
3721    AtomMobileRadioTechnologyChanged = 76,
3722    AtomUsbDeviceAttached = 77,
3723    AtomAppCrashOccurred = 78,
3724    AtomAnrOccurred = 79,
3725    AtomWtfOccurred = 80,
3726    AtomLowMemReported = 81,
3727    AtomGenericAtom = 82,
3728    AtomVibratorStateChanged = 84,
3729    AtomDeferredJobStatsReported = 85,
3730    AtomThermalThrottling = 86,
3731    AtomBiometricAcquired = 87,
3732    AtomBiometricAuthenticated = 88,
3733    AtomBiometricErrorOccurred = 89,
3734    AtomUiEventReported = 90,
3735    AtomBatteryHealthSnapshot = 91,
3736    AtomSlowIo = 92,
3737    AtomBatteryCausedShutdown = 93,
3738    AtomPhoneServiceStateChanged = 94,
3739    AtomPhoneStateChanged = 95,
3740    AtomUserRestrictionChanged = 96,
3741    AtomSettingsUiChanged = 97,
3742    AtomConnectivityStateChanged = 98,
3743    AtomServiceStateChanged = 99,
3744    AtomServiceLaunchReported = 100,
3745    AtomFlagFlipUpdateOccurred = 101,
3746    AtomBinaryPushStateChanged = 102,
3747    AtomDevicePolicyEvent = 103,
3748    AtomDocsUiFileOpCanceled = 104,
3749    AtomDocsUiFileOpCopyMoveModeReported = 105,
3750    AtomDocsUiFileOpFailure = 106,
3751    AtomDocsUiProviderFileOp = 107,
3752    AtomDocsUiInvalidScopedAccessRequest = 108,
3753    AtomDocsUiLaunchReported = 109,
3754    AtomDocsUiRootVisited = 110,
3755    AtomDocsUiStartupMs = 111,
3756    AtomDocsUiUserActionReported = 112,
3757    AtomWifiEnabledStateChanged = 113,
3758    AtomWifiRunningStateChanged = 114,
3759    AtomAppCompacted = 115,
3760    AtomNetworkDnsEventReported = 116,
3761    AtomDocsUiPickerLaunchedFromReported = 117,
3762    AtomDocsUiPickResultReported = 118,
3763    AtomDocsUiSearchModeReported = 119,
3764    AtomDocsUiSearchTypeReported = 120,
3765    AtomDataStallEvent = 121,
3766    AtomRescuePartyResetReported = 122,
3767    AtomSignedConfigReported = 123,
3768    AtomGnssNiEventReported = 124,
3769    AtomBluetoothLinkLayerConnectionEvent = 125,
3770    AtomBluetoothAclConnectionStateChanged = 126,
3771    AtomBluetoothScoConnectionStateChanged = 127,
3772    AtomAppDowngraded = 128,
3773    AtomAppOptimizedAfterDowngraded = 129,
3774    AtomLowStorageStateChanged = 130,
3775    AtomGnssNfwNotificationReported = 131,
3776    AtomGnssConfigurationReported = 132,
3777    AtomUsbPortOverheatEventReported = 133,
3778    AtomNfcErrorOccurred = 134,
3779    AtomNfcStateChanged = 135,
3780    AtomNfcBeamOccurred = 136,
3781    AtomNfcCardemulationOccurred = 137,
3782    AtomNfcTagOccurred = 138,
3783    AtomNfcHceTransactionOccurred = 139,
3784    AtomSeStateChanged = 140,
3785    AtomSeOmapiReported = 141,
3786    AtomBroadcastDispatchLatencyReported = 142,
3787    AtomAttentionManagerServiceResultReported = 143,
3788    AtomAdbConnectionChanged = 144,
3789    AtomSpeechDspStatReported = 145,
3790    AtomUsbContaminantReported = 146,
3791    AtomWatchdogRollbackOccurred = 147,
3792    AtomBiometricSystemHealthIssueDetected = 148,
3793    AtomBubbleUiChanged = 149,
3794    AtomScheduledJobConstraintChanged = 150,
3795    AtomBluetoothActiveDeviceChanged = 151,
3796    AtomBluetoothA2dpPlaybackStateChanged = 152,
3797    AtomBluetoothA2dpCodecConfigChanged = 153,
3798    AtomBluetoothA2dpCodecCapabilityChanged = 154,
3799    AtomBluetoothA2dpAudioUnderrunReported = 155,
3800    AtomBluetoothA2dpAudioOverrunReported = 156,
3801    AtomBluetoothDeviceRssiReported = 157,
3802    AtomBluetoothDeviceFailedContactCounterReported = 158,
3803    AtomBluetoothDeviceTxPowerLevelReported = 159,
3804    AtomBluetoothHciTimeoutReported = 160,
3805    AtomBluetoothQualityReportReported = 161,
3806    AtomBluetoothDeviceInfoReported = 162,
3807    AtomBluetoothRemoteVersionInfoReported = 163,
3808    AtomBluetoothSdpAttributeReported = 164,
3809    AtomBluetoothBondStateChanged = 165,
3810    AtomBluetoothClassicPairingEventReported = 166,
3811    AtomBluetoothSmpPairingEventReported = 167,
3812    AtomScreenTimeoutExtensionReported = 168,
3813    AtomProcessStartTime = 169,
3814    AtomPermissionGrantRequestResultReported = 170,
3815    AtomBluetoothSocketConnectionStateChanged = 171,
3816    AtomDeviceIdentifierAccessDenied = 172,
3817    AtomBubbleDeveloperErrorReported = 173,
3818    AtomAssistGestureStageReported = 174,
3819    AtomAssistGestureFeedbackReported = 175,
3820    AtomAssistGestureProgressReported = 176,
3821    AtomTouchGestureClassified = 177,
3822    AtomHiddenApiUsed = 178,
3823    AtomStyleUiChanged = 179,
3824    AtomPrivacyIndicatorsInteracted = 180,
3825    AtomAppInstallOnExternalStorageReported = 181,
3826    AtomNetworkStackReported = 182,
3827    AtomAppMovedStorageReported = 183,
3828    AtomBiometricEnrolled = 184,
3829    AtomSystemServerWatchdogOccurred = 185,
3830    AtomTombStoneOccurred = 186,
3831    AtomBluetoothClassOfDeviceReported = 187,
3832    AtomIntelligenceEventReported = 188,
3833    AtomThermalThrottlingSeverityStateChanged = 189,
3834    AtomRoleRequestResultReported = 190,
3835    AtomMediametricsAudiopolicyReported = 191,
3836    AtomMediametricsAudiorecordReported = 192,
3837    AtomMediametricsAudiothreadReported = 193,
3838    AtomMediametricsAudiotrackReported = 194,
3839    AtomMediametricsCodecReported = 195,
3840    AtomMediametricsDrmWidevineReported = 196,
3841    AtomMediametricsExtractorReported = 197,
3842    AtomMediametricsMediadrmReported = 198,
3843    AtomMediametricsNuplayerReported = 199,
3844    AtomMediametricsRecorderReported = 200,
3845    AtomMediametricsDrmmanagerReported = 201,
3846    AtomCarPowerStateChanged = 203,
3847    AtomGarageModeInfo = 204,
3848    AtomTestAtomReported = 205,
3849    AtomContentCaptureCallerMismatchReported = 206,
3850    AtomContentCaptureServiceEvents = 207,
3851    AtomContentCaptureSessionEvents = 208,
3852    AtomContentCaptureFlushed = 209,
3853    AtomLocationManagerApiUsageReported = 210,
3854    AtomReviewPermissionsFragmentResultReported = 211,
3855    AtomRuntimePermissionsUpgradeResult = 212,
3856    AtomGrantPermissionsActivityButtonActions = 213,
3857    AtomLocationAccessCheckNotificationAction = 214,
3858    AtomAppPermissionFragmentActionReported = 215,
3859    AtomAppPermissionFragmentViewed = 216,
3860    AtomAppPermissionsFragmentViewed = 217,
3861    AtomPermissionAppsFragmentViewed = 218,
3862    AtomTextSelectionEvent = 219,
3863    AtomTextLinkifyEvent = 220,
3864    AtomConversationActionsEvent = 221,
3865    AtomLanguageDetectionEvent = 222,
3866    AtomExclusionRectStateChanged = 223,
3867    AtomBackGestureReportedReported = 224,
3868    AtomUpdateEngineUpdateAttemptReported = 225,
3869    AtomUpdateEngineSuccessfulUpdateReported = 226,
3870    AtomCameraActionEvent = 227,
3871    AtomAppCompatibilityChangeReported = 228,
3872    AtomPerfettoUploaded = 229,
3873    AtomVmsClientConnectionStateChanged = 230,
3874    AtomMediaProviderScanOccurred = 233,
3875    AtomMediaContentDeleted = 234,
3876    AtomMediaProviderPermissionRequested = 235,
3877    AtomMediaProviderSchemaChanged = 236,
3878    AtomMediaProviderIdleMaintenanceFinished = 237,
3879    AtomRebootEscrowRecoveryReported = 238,
3880    AtomBootTimeEventDurationReported = 239,
3881    AtomBootTimeEventElapsedTimeReported = 240,
3882    AtomBootTimeEventUtcTimeReported = 241,
3883    AtomBootTimeEventErrorCodeReported = 242,
3884    AtomUserspaceRebootReported = 243,
3885    AtomNotificationReported = 244,
3886    AtomNotificationPanelReported = 245,
3887    AtomNotificationChannelModified = 246,
3888    AtomIntegrityCheckResultReported = 247,
3889    AtomIntegrityRulesPushed = 248,
3890    AtomCbMessageReported = 249,
3891    AtomCbMessageError = 250,
3892    AtomWifiHealthStatReported = 251,
3893    AtomWifiFailureStatReported = 252,
3894    AtomWifiConnectionResultReported = 253,
3895    AtomAppFreezeChanged = 254,
3896    AtomSnapshotMergeReported = 255,
3897    AtomForegroundServiceAppOpSessionEnded = 256,
3898    AtomDisplayJankReported = 257,
3899    AtomAppStandbyBucketChanged = 258,
3900    AtomSharesheetStarted = 259,
3901    AtomRankingSelected = 260,
3902    AtomTvsettingsUiInteracted = 261,
3903    AtomLauncherSnapshot = 262,
3904    AtomPackageInstallerV2Reported = 263,
3905    AtomUserLifecycleJourneyReported = 264,
3906    AtomUserLifecycleEventOccurred = 265,
3907    AtomAccessibilityShortcutReported = 266,
3908    AtomAccessibilityServiceReported = 267,
3909    AtomDocsUiDragAndDropReported = 268,
3910    AtomAppUsageEventOccurred = 269,
3911    AtomAutoRevokeNotificationClicked = 270,
3912    AtomAutoRevokeFragmentAppViewed = 271,
3913    AtomAutoRevokedAppInteraction = 272,
3914    AtomAppPermissionGroupsFragmentAutoRevokeAction = 273,
3915    AtomEvsUsageStatsReported = 274,
3916    AtomAudioPowerUsageDataReported = 275,
3917    AtomTvTunerStateChanged = 276,
3918    AtomMediaoutputOpSwitchReported = 277,
3919    AtomCbMessageFiltered = 278,
3920    AtomTvTunerDvrStatus = 279,
3921    AtomTvCasSessionOpenStatus = 280,
3922    AtomAssistantInvocationReported = 281,
3923    AtomDisplayWakeReported = 282,
3924    AtomCarUserHalModifyUserRequestReported = 283,
3925    AtomCarUserHalModifyUserResponseReported = 284,
3926    AtomCarUserHalPostSwitchResponseReported = 285,
3927    AtomCarUserHalInitialUserInfoRequestReported = 286,
3928    AtomCarUserHalInitialUserInfoResponseReported = 287,
3929    AtomCarUserHalUserAssociationRequestReported = 288,
3930    AtomCarUserHalSetUserAssociationResponseReported = 289,
3931    AtomNetworkIpProvisioningReported = 290,
3932    AtomNetworkDhcpRenewReported = 291,
3933    AtomNetworkValidationReported = 292,
3934    AtomNetworkStackQuirkReported = 293,
3935    AtomMediametricsAudiorecorddeviceusageReported = 294,
3936    AtomMediametricsAudiothreaddeviceusageReported = 295,
3937    AtomMediametricsAudiotrackdeviceusageReported = 296,
3938    AtomMediametricsAudiodeviceconnectionReported = 297,
3939    AtomBlobCommitted = 298,
3940    AtomBlobLeased = 299,
3941    AtomBlobOpened = 300,
3942    AtomContactsProviderStatusReported = 301,
3943    AtomKeystoreKeyEventReported = 302,
3944    AtomNetworkTetheringReported = 303,
3945    AtomImeTouchReported = 304,
3946    AtomUiInteractionFrameInfoReported = 305,
3947    AtomUiActionLatencyReported = 306,
3948    AtomWifiDisconnectReported = 307,
3949    AtomWifiConnectionStateChanged = 308,
3950    AtomHdmiCecActiveSourceChanged = 309,
3951    AtomHdmiCecMessageReported = 310,
3952    AtomAirplaneMode = 311,
3953    AtomModemRestart = 312,
3954    AtomCarrierIdMismatchReported = 313,
3955    AtomCarrierIdTableUpdated = 314,
3956    AtomDataStallRecoveryReported = 315,
3957    AtomMediametricsMediaparserReported = 316,
3958    AtomTlsHandshakeReported = 317,
3959    AtomTextClassifierApiUsageReported = 318,
3960    AtomCarWatchdogKillStatsReported = 319,
3961    AtomMediametricsPlaybackReported = 320,
3962    AtomMediaNetworkInfoChanged = 321,
3963    AtomMediaPlaybackStateChanged = 322,
3964    AtomMediaPlaybackErrorReported = 323,
3965    AtomMediaPlaybackTrackChanged = 324,
3966    AtomWifiScanReported = 325,
3967    AtomWifiPnoScanReported = 326,
3968    AtomTifTuneChanged = 327,
3969    AtomAutoRotateReported = 328,
3970    AtomPerfettoTrigger = 329,
3971    AtomTranscodingData = 330,
3972    AtomImsServiceEntitlementUpdated = 331,
3973    AtomDeviceRotated = 333,
3974    AtomSimSpecificSettingsRestored = 334,
3975    AtomTextClassifierDownloadReported = 335,
3976    AtomPinStorageEvent = 336,
3977    AtomFaceDownReported = 337,
3978    AtomBluetoothHalCrashReasonReported = 338,
3979    AtomRebootEscrowPreparationReported = 339,
3980    AtomRebootEscrowLskfCaptureReported = 340,
3981    AtomRebootEscrowRebootReported = 341,
3982    AtomBinderLatencyReported = 342,
3983    AtomMediametricsAaudiostreamReported = 343,
3984    AtomMediaTranscodingSessionEnded = 344,
3985    AtomMagnificationUsageReported = 345,
3986    AtomMagnificationModeWithImeOnReported = 346,
3987    AtomAppSearchCallStatsReported = 347,
3988    AtomAppSearchPutDocumentStatsReported = 348,
3989    AtomDeviceControlChanged = 349,
3990    AtomDeviceStateChanged = 350,
3991    AtomInputdeviceRegistered = 351,
3992    AtomSmartspaceCardReported = 352,
3993    AtomAuthPromptAuthenticateInvoked = 353,
3994    AtomAuthManagerCanAuthenticateInvoked = 354,
3995    AtomAuthEnrollActionInvoked = 355,
3996    AtomAuthDeprecatedApiUsed = 356,
3997    AtomUnattendedRebootOccurred = 357,
3998    AtomLongRebootBlockingReported = 358,
3999    AtomLocationTimeZoneProviderStateChanged = 359,
4000    AtomFdtrackEventOccurred = 364,
4001    AtomTimeoutAutoExtendedReported = 365,
4002    AtomAlarmBatchDelivered = 367,
4003    AtomAlarmScheduled = 368,
4004    AtomCarWatchdogIoOveruseStatsReported = 369,
4005    AtomUserLevelHibernationStateChanged = 370,
4006    AtomAppSearchInitializeStatsReported = 371,
4007    AtomAppSearchQueryStatsReported = 372,
4008    AtomAppProcessDied = 373,
4009    AtomNetworkIpReachabilityMonitorReported = 374,
4010    AtomSlowInputEventReported = 375,
4011    AtomAnrOccurredProcessingStarted = 376,
4012    AtomAppSearchRemoveStatsReported = 377,
4013    AtomMediaCodecReported = 378,
4014    AtomPermissionUsageFragmentInteraction = 379,
4015    AtomPermissionDetailsInteraction = 380,
4016    AtomPrivacySensorToggleInteraction = 381,
4017    AtomPrivacyToggleDialogInteraction = 382,
4018    AtomAppSearchOptimizeStatsReported = 383,
4019    AtomNonA11yToolServiceWarningReport = 384,
4020    AtomAppCompatStateChanged = 386,
4021    AtomSizeCompatRestartButtonEventReported = 387,
4022    AtomSplitscreenUiChanged = 388,
4023    AtomNetworkDnsHandshakeReported = 389,
4024    AtomBluetoothCodePathCounter = 390,
4025    AtomBluetoothLeBatchScanReportDelay = 392,
4026    AtomAccessibilityFloatingMenuUiChanged = 393,
4027    AtomNeuralnetworksCompilationCompleted = 394,
4028    AtomNeuralnetworksExecutionCompleted = 395,
4029    AtomNeuralnetworksCompilationFailed = 396,
4030    AtomNeuralnetworksExecutionFailed = 397,
4031    AtomContextHubBooted = 398,
4032    AtomContextHubRestarted = 399,
4033    AtomContextHubLoadedNanoappSnapshotReported = 400,
4034    AtomChreCodeDownloadTransacted = 401,
4035    AtomUwbSessionInited = 402,
4036    AtomUwbSessionClosed = 403,
4037    AtomUwbFirstRangingReceived = 404,
4038    AtomUwbRangingMeasurementReceived = 405,
4039    AtomTextClassifierDownloadWorkScheduled = 406,
4040    AtomTextClassifierDownloadWorkCompleted = 407,
4041    AtomClipboardCleared = 408,
4042    AtomVmCreationRequested = 409,
4043    AtomNearbyDeviceScanStateChanged = 410,
4044    AtomApplicationLocalesChanged = 412,
4045    AtomMediametricsAudiotrackstatusReported = 413,
4046    AtomFoldStateDurationReported = 414,
4047    AtomLocationTimeZoneProviderControllerStateChanged = 415,
4048    AtomDisplayHbmStateChanged = 416,
4049    AtomDisplayHbmBrightnessChanged = 417,
4050    AtomPersistentUriPermissionsFlushed = 418,
4051    AtomEarlyBootCompOsArtifactsCheckReported = 419,
4052    AtomVbmetaDigestReported = 420,
4053    AtomApexInfoGathered = 421,
4054    AtomPvmInfoGathered = 422,
4055    AtomWearSettingsUiInteracted = 423,
4056    AtomTracingServiceReportEvent = 424,
4057    AtomMediametricsAudiorecordstatusReported = 425,
4058    AtomLauncherLatency = 426,
4059    AtomDropboxEntryDropped = 427,
4060    AtomWifiP2pConnectionReported = 428,
4061    AtomGameStateChanged = 429,
4062    AtomHotwordDetectorCreateRequested = 430,
4063    AtomHotwordDetectionServiceInitResultReported = 431,
4064    AtomHotwordDetectionServiceRestarted = 432,
4065    AtomHotwordDetectorKeyphraseTriggered = 433,
4066    AtomHotwordDetectorEvents = 434,
4067    AtomBootCompletedBroadcastCompletionLatencyReported = 437,
4068    AtomContactsIndexerUpdateStatsReported = 440,
4069    AtomAppBackgroundRestrictionsInfo = 441,
4070    AtomMmsSmsProviderGetThreadIdFailed = 442,
4071    AtomMmsSmsDatabaseHelperOnUpgradeFailed = 443,
4072    AtomPermissionReminderNotificationInteracted = 444,
4073    AtomRecentPermissionDecisionsInteracted = 445,
4074    AtomGnssPsdsDownloadReported = 446,
4075    AtomLeAudioConnectionSessionReported = 447,
4076    AtomLeAudioBroadcastSessionReported = 448,
4077    AtomDreamUiEventReported = 449,
4078    AtomTaskManagerEventReported = 450,
4079    AtomCdmAssociationAction = 451,
4080    AtomMagnificationTripleTapAndHoldActivatedSessionReported = 452,
4081    AtomMagnificationFollowTypingFocusActivatedSessionReported = 453,
4082    AtomAccessibilityTextReadingOptionsChanged = 454,
4083    AtomWifiSetupFailureCrashReported = 455,
4084    AtomUwbDeviceErrorReported = 456,
4085    AtomIsolatedCompilationScheduled = 457,
4086    AtomIsolatedCompilationEnded = 458,
4087    AtomOnsOpportunisticEsimProvisioningComplete = 459,
4088    AtomSystemServerPreWatchdogOccurred = 460,
4089    AtomTelephonyAnomalyDetected = 461,
4090    AtomLetterboxPositionChanged = 462,
4091    AtomRemoteKeyProvisioningAttempt = 463,
4092    AtomRemoteKeyProvisioningNetworkInfo = 464,
4093    AtomRemoteKeyProvisioningTiming = 465,
4094    AtomMediaoutputOpInteractionReport = 466,
4095    AtomSyncExemptionOccurred = 468,
4096    AtomAutofillPresentationEventReported = 469,
4097    AtomDockStateChanged = 470,
4098    AtomSafetySourceStateCollected = 471,
4099    AtomSafetyCenterSystemEventReported = 472,
4100    AtomSafetyCenterInteractionReported = 473,
4101    AtomSettingsProviderSettingChanged = 474,
4102    AtomBroadcastDeliveryEventReported = 475,
4103    AtomServiceRequestEventReported = 476,
4104    AtomProviderAcquisitionEventReported = 477,
4105    AtomBluetoothDeviceNameReported = 478,
4106    AtomCbConfigUpdated = 479,
4107    AtomCbModuleErrorReported = 480,
4108    AtomCbServiceFeatureChanged = 481,
4109    AtomCbReceiverFeatureChanged = 482,
4110    AtomPrivacySignalNotificationInteraction = 484,
4111    AtomPrivacySignalIssueCardInteraction = 485,
4112    AtomPrivacySignalsJobFailure = 486,
4113    AtomVibrationReported = 487,
4114    AtomUwbRangingStart = 489,
4115    AtomAppCompactedV2 = 491,
4116    AtomDisplayBrightnessChanged = 494,
4117    AtomActivityActionBlocked = 495,
4118    AtomNetworkDnsServerSupportReported = 504,
4119    AtomVmBooted = 505,
4120    AtomVmExited = 506,
4121    AtomAmbientBrightnessStatsReported = 507,
4122    AtomMediametricsSpatializercapabilitiesReported = 508,
4123    AtomMediametricsSpatializerdeviceenabledReported = 509,
4124    AtomMediametricsHeadtrackerdeviceenabledReported = 510,
4125    AtomMediametricsHeadtrackerdevicesupportedReported = 511,
4126    AtomHearingAidInfoReported = 513,
4127    AtomDeviceWideJobConstraintChanged = 514,
4128    AtomAmbientModeChanged = 515,
4129    AtomAnrLatencyReported = 516,
4130    AtomResourceApiInfo = 517,
4131    AtomSystemDefaultNetworkChanged = 518,
4132    AtomIwlanSetupDataCallResultReported = 519,
4133    AtomIwlanPdnDisconnectedReasonReported = 520,
4134    AtomAirplaneModeSessionReported = 521,
4135    AtomVmCpuStatusReported = 522,
4136    AtomVmMemStatusReported = 523,
4137    AtomPackageInstallationSessionReported = 524,
4138    AtomDefaultNetworkRematchInfo = 525,
4139    AtomNetworkSelectionPerformance = 526,
4140    AtomNetworkNsdReported = 527,
4141    AtomBluetoothDisconnectionReasonReported = 529,
4142    AtomBluetoothLocalVersionsReported = 530,
4143    AtomBluetoothRemoteSupportedFeaturesReported = 531,
4144    AtomBluetoothLocalSupportedFeaturesReported = 532,
4145    AtomBluetoothGattAppInfo = 533,
4146    AtomBrightnessConfigurationUpdated = 534,
4147    AtomWearMediaOutputSwitcherLaunched = 538,
4148    AtomWearMediaOutputSwitcherFinished = 539,
4149    AtomWearMediaOutputSwitcherConnectionReported = 540,
4150    AtomWearMediaOutputSwitcherDeviceScanTriggered = 541,
4151    AtomWearMediaOutputSwitcherFirstDeviceScanLatency = 542,
4152    AtomWearMediaOutputSwitcherConnectDeviceLatency = 543,
4153    AtomPackageManagerSnapshotReported = 544,
4154    AtomPackageManagerAppsFilterCacheBuildReported = 545,
4155    AtomPackageManagerAppsFilterCacheUpdateReported = 546,
4156    AtomLauncherImpressionEvent = 547,
4157    AtomWearMediaOutputSwitcherAllDevicesScanLatency = 549,
4158    AtomWsWatchFaceEdited = 551,
4159    AtomWsWatchFaceFavoriteActionReported = 552,
4160    AtomWsWatchFaceSetActionReported = 553,
4161    AtomPackageUninstallationReported = 554,
4162    AtomGameModeChanged = 555,
4163    AtomGameModeConfigurationChanged = 556,
4164    AtomBedtimeModeStateChanged = 557,
4165    AtomNetworkSliceSessionEnded = 558,
4166    AtomNetworkSliceDailyDataUsageReported = 559,
4167    AtomNfcTagTypeOccurred = 560,
4168    AtomNfcAidConflictOccurred = 561,
4169    AtomNfcReaderConflictOccurred = 562,
4170    AtomWsTileListChanged = 563,
4171    AtomGetTypeAccessedWithoutPermission = 564,
4172    AtomMobileBundledAppInfoGathered = 566,
4173    AtomWsWatchFaceComplicationSetChanged = 567,
4174    AtomMediaDrmCreated = 568,
4175    AtomMediaDrmErrored = 569,
4176    AtomMediaDrmSessionOpened = 570,
4177    AtomMediaDrmSessionClosed = 571,
4178    AtomUserSelectedResolution = 572,
4179    AtomUnsafeIntentEventReported = 573,
4180    AtomPerformanceHintSessionReported = 574,
4181    AtomMediametricsMidiDeviceCloseReported = 576,
4182    AtomBiometricTouchReported = 577,
4183    AtomHotwordAudioEgressEventReported = 578,
4184    AtomLocationEnabledStateChanged = 580,
4185    AtomImeRequestFinished = 581,
4186    AtomUsbComplianceWarningsReported = 582,
4187    AtomAppSupportedLocalesChanged = 583,
4188    AtomMediaProviderVolumeRecoveryReported = 586,
4189    AtomBiometricPropertiesCollected = 587,
4190    AtomKernelWakeupAttributed = 588,
4191    AtomScreenStateChangedV2 = 589,
4192    AtomWsBackupActionReported = 590,
4193    AtomWsRestoreActionReported = 591,
4194    AtomDeviceLogAccessEventReported = 592,
4195    AtomMediaSessionUpdated = 594,
4196    AtomWearOobeStateChanged = 595,
4197    AtomWsNotificationUpdated = 596,
4198    AtomNetworkValidationFailureStatsDailyReported = 601,
4199    AtomWsComplicationTapped = 602,
4200    AtomWsNotificationBlocking = 780,
4201    AtomWsNotificationBridgemodeUpdated = 822,
4202    AtomWsNotificationDismissalActioned = 823,
4203    AtomWsNotificationActioned = 824,
4204    AtomWsNotificationLatency = 880,
4205    AtomWifiBytesTransfer = 10000,
4206    AtomWifiBytesTransferByFgBg = 10001,
4207    AtomMobileBytesTransfer = 10002,
4208    AtomMobileBytesTransferByFgBg = 10003,
4209    AtomBluetoothBytesTransfer = 10006,
4210    AtomKernelWakelock = 10004,
4211    AtomSubsystemSleepState = 10005,
4212    AtomCpuTimePerUid = 10009,
4213    AtomCpuTimePerUidFreq = 10010,
4214    AtomWifiActivityInfo = 10011,
4215    AtomModemActivityInfo = 10012,
4216    AtomBluetoothActivityInfo = 10007,
4217    AtomProcessMemoryState = 10013,
4218    AtomSystemElapsedRealtime = 10014,
4219    AtomSystemUptime = 10015,
4220    AtomCpuActiveTime = 10016,
4221    AtomCpuClusterTime = 10017,
4222    AtomDiskSpace = 10018,
4223    AtomRemainingBatteryCapacity = 10019,
4224    AtomFullBatteryCapacity = 10020,
4225    AtomTemperature = 10021,
4226    AtomBinderCalls = 10022,
4227    AtomBinderCallsExceptions = 10023,
4228    AtomLooperStats = 10024,
4229    AtomDiskStats = 10025,
4230    AtomDirectoryUsage = 10026,
4231    AtomAppSize = 10027,
4232    AtomCategorySize = 10028,
4233    AtomProcStats = 10029,
4234    AtomBatteryVoltage = 10030,
4235    AtomNumFingerprintsEnrolled = 10031,
4236    AtomDiskIo = 10032,
4237    AtomPowerProfile = 10033,
4238    AtomProcStatsPkgProc = 10034,
4239    AtomProcessCpuTime = 10035,
4240    AtomCpuTimePerThreadFreq = 10037,
4241    AtomOnDevicePowerMeasurement = 10038,
4242    AtomDeviceCalculatedPowerUse = 10039,
4243    AtomProcessMemoryHighWaterMark = 10042,
4244    AtomBatteryLevel = 10043,
4245    AtomBuildInformation = 10044,
4246    AtomBatteryCycleCount = 10045,
4247    AtomDebugElapsedClock = 10046,
4248    AtomDebugFailingElapsedClock = 10047,
4249    AtomNumFacesEnrolled = 10048,
4250    AtomRoleHolder = 10049,
4251    AtomDangerousPermissionState = 10050,
4252    AtomTrainInfo = 10051,
4253    AtomTimeZoneDataInfo = 10052,
4254    AtomExternalStorageInfo = 10053,
4255    AtomGpuStatsGlobalInfo = 10054,
4256    AtomGpuStatsAppInfo = 10055,
4257    AtomSystemIonHeapSize = 10056,
4258    AtomAppsOnExternalStorageInfo = 10057,
4259    AtomFaceSettings = 10058,
4260    AtomCoolingDevice = 10059,
4261    AtomAppOps = 10060,
4262    AtomProcessSystemIonHeapSize = 10061,
4263    AtomSurfaceflingerStatsGlobalInfo = 10062,
4264    AtomSurfaceflingerStatsLayerInfo = 10063,
4265    AtomProcessMemorySnapshot = 10064,
4266    AtomVmsClientStats = 10065,
4267    AtomNotificationRemoteViews = 10066,
4268    AtomDangerousPermissionStateSampled = 10067,
4269    AtomGraphicsStats = 10068,
4270    AtomRuntimeAppOpAccess = 10069,
4271    AtomIonHeapSize = 10070,
4272    AtomPackageNotificationPreferences = 10071,
4273    AtomPackageNotificationChannelPreferences = 10072,
4274    AtomPackageNotificationChannelGroupPreferences = 10073,
4275    AtomGnssStats = 10074,
4276    AtomAttributedAppOps = 10075,
4277    AtomVoiceCallSession = 10076,
4278    AtomVoiceCallRatUsage = 10077,
4279    AtomSimSlotState = 10078,
4280    AtomSupportedRadioAccessFamily = 10079,
4281    AtomSettingSnapshot = 10080,
4282    AtomBlobInfo = 10081,
4283    AtomDataUsageBytesTransfer = 10082,
4284    AtomBytesTransferByTagAndMetered = 10083,
4285    AtomDndModeRule = 10084,
4286    AtomGeneralExternalStorageAccessStats = 10085,
4287    AtomIncomingSms = 10086,
4288    AtomOutgoingSms = 10087,
4289    AtomCarrierIdTableVersion = 10088,
4290    AtomDataCallSession = 10089,
4291    AtomCellularServiceState = 10090,
4292    AtomCellularDataServiceSwitch = 10091,
4293    AtomSystemMemory = 10092,
4294    AtomImsRegistrationTermination = 10093,
4295    AtomImsRegistrationStats = 10094,
4296    AtomCpuTimePerClusterFreq = 10095,
4297    AtomCpuCyclesPerUidCluster = 10096,
4298    AtomDeviceRotatedData = 10097,
4299    AtomCpuCyclesPerThreadGroupCluster = 10098,
4300    AtomMediaDrmActivityInfo = 10099,
4301    AtomOemManagedBytesTransfer = 10100,
4302    AtomGnssPowerStats = 10101,
4303    AtomTimeZoneDetectorState = 10102,
4304    AtomKeystore2StorageStats = 10103,
4305    AtomRkpPoolStats = 10104,
4306    AtomProcessDmabufMemory = 10105,
4307    AtomPendingAlarmInfo = 10106,
4308    AtomUserLevelHibernatedApps = 10107,
4309    AtomLauncherLayoutSnapshot = 10108,
4310    AtomGlobalHibernatedApps = 10109,
4311    AtomInputEventLatencySketch = 10110,
4312    AtomBatteryUsageStatsBeforeReset = 10111,
4313    AtomBatteryUsageStatsSinceReset = 10112,
4314    AtomBatteryUsageStatsSinceResetUsingPowerProfileModel = 10113,
4315    AtomInstalledIncrementalPackage = 10114,
4316    AtomTelephonyNetworkRequests = 10115,
4317    AtomAppSearchStorageInfo = 10116,
4318    AtomVmstat = 10117,
4319    AtomKeystore2KeyCreationWithGeneralInfo = 10118,
4320    AtomKeystore2KeyCreationWithAuthInfo = 10119,
4321    AtomKeystore2KeyCreationWithPurposeAndModesInfo = 10120,
4322    AtomKeystore2AtomWithOverflow = 10121,
4323    AtomKeystore2KeyOperationWithPurposeAndModesInfo = 10122,
4324    AtomKeystore2KeyOperationWithGeneralInfo = 10123,
4325    AtomRkpErrorStats = 10124,
4326    AtomKeystore2CrashStats = 10125,
4327    AtomVendorApexInfo = 10126,
4328    AtomAccessibilityShortcutStats = 10127,
4329    AtomAccessibilityFloatingMenuStats = 10128,
4330    AtomDataUsageBytesTransferV2 = 10129,
4331    AtomMediaCapabilities = 10130,
4332    AtomCarWatchdogSystemIoUsageSummary = 10131,
4333    AtomCarWatchdogUidIoUsageSummary = 10132,
4334    AtomImsRegistrationFeatureTagStats = 10133,
4335    AtomRcsClientProvisioningStats = 10134,
4336    AtomRcsAcsProvisioningStats = 10135,
4337    AtomSipDelegateStats = 10136,
4338    AtomSipTransportFeatureTagStats = 10137,
4339    AtomSipMessageResponse = 10138,
4340    AtomSipTransportSession = 10139,
4341    AtomImsDedicatedBearerListenerEvent = 10140,
4342    AtomImsDedicatedBearerEvent = 10141,
4343    AtomImsRegistrationServiceDescStats = 10142,
4344    AtomUceEventStats = 10143,
4345    AtomPresenceNotifyEvent = 10144,
4346    AtomGbaEvent = 10145,
4347    AtomPerSimStatus = 10146,
4348    AtomGpuWorkPerUid = 10147,
4349    AtomPersistentUriPermissionsAmountPerPackage = 10148,
4350    AtomSignedPartitionInfo = 10149,
4351    AtomPinnedFileSizesPerPackage = 10150,
4352    AtomPendingIntentsPerPackage = 10151,
4353    AtomUserInfo = 10152,
4354    AtomTelephonyNetworkRequestsV2 = 10153,
4355    AtomDeviceTelephonyProperties = 10154,
4356    AtomRemoteKeyProvisioningErrorCounts = 10155,
4357    AtomSafetyState = 10156,
4358    AtomIncomingMms = 10157,
4359    AtomOutgoingMms = 10158,
4360    AtomMultiUserInfo = 10160,
4361    AtomNetworkBpfMapInfo = 10161,
4362    AtomOutgoingShortCodeSms = 10162,
4363    AtomConnectivityStateSample = 10163,
4364    AtomNetworkSelectionRematchReasonsInfo = 10164,
4365    AtomGameModeInfo = 10165,
4366    AtomGameModeConfiguration = 10166,
4367    AtomGameModeListener = 10167,
4368    AtomNetworkSliceRequestCount = 10168,
4369    AtomWsTileSnapshot = 10169,
4370    AtomWsActiveWatchFaceComplicationSetSnapshot = 10170,
4371    AtomProcessState = 10171,
4372    AtomProcessAssociation = 10172,
4373    AtomAdpfSystemComponentInfo = 10173,
4374    AtomNotificationMemoryUse = 10174,
4375    AtomHdrCapabilities = 10175,
4376    AtomWsFavouriteWatchFaceListSnapshot = 10176,
4377    AtomWifiAwareNdpReported = 638,
4378    AtomWifiAwareAttachReported = 639,
4379    AtomWifiSelfRecoveryTriggered = 661,
4380    AtomSoftApStarted = 680,
4381    AtomSoftApStopped = 681,
4382    AtomWifiLockReleased = 687,
4383    AtomWifiLockDeactivated = 688,
4384    AtomWifiConfigSaved = 689,
4385    AtomWifiAwareResourceUsingChanged = 690,
4386    AtomWifiAwareHalApiCalled = 691,
4387    AtomWifiLocalOnlyRequestReceived = 692,
4388    AtomWifiLocalOnlyRequestScanTriggered = 693,
4389    AtomWifiThreadTaskExecuted = 694,
4390    AtomWifiStateChanged = 700,
4391    AtomPnoScanStarted = 719,
4392    AtomPnoScanStopped = 720,
4393    AtomWifiIsUnusableReported = 722,
4394    AtomWifiApCapabilitiesReported = 723,
4395    AtomSoftApStateChanged = 805,
4396    AtomScorerPredictionResultReported = 884,
4397    AtomWifiAwareCapabilities = 10190,
4398    AtomWifiModuleInfo = 10193,
4399    AtomWifiSettingInfo = 10194,
4400    AtomWifiComplexSettingInfo = 10195,
4401    AtomWifiConfiguredNetworkInfo = 10198,
4402    AtomWearPowerMenuOpened = 731,
4403    AtomWearAssistantOpened = 755,
4404    AtomFirstOverlayStateChanged = 917,
4405    AtomWsWearTimeSession = 610,
4406    AtomWsIncomingCallActionReported = 626,
4407    AtomWsCallDisconnectionReported = 627,
4408    AtomWsCallDurationReported = 628,
4409    AtomWsCallUserExperienceLatencyReported = 629,
4410    AtomWsCallInteractionReported = 630,
4411    AtomWsOnBodyStateChanged = 787,
4412    AtomWsWatchFaceRestrictedComplicationsImpacted = 802,
4413    AtomWsWatchFaceDefaultRestrictedComplicationsRemoved = 803,
4414    AtomWsComplicationsImpactedNotificationEventReported = 804,
4415    AtomWsRemoteEventUsageReported = 920,
4416    AtomWsNotificationManagedDismissalSync = 941,
4417    AtomWsBugreportEventReported = 964,
4418    AtomWsStandaloneModeSnapshot = 10197,
4419    AtomWsFavoriteWatchFaceSnapshot = 10206,
4420    AtomWsPhotosWatchFaceFeatureSnapshot = 10225,
4421    AtomWsWatchFaceCustomizationSnapshot = 10227,
4422    AtomWearAdaptiveSuspendStatsReported = 619,
4423    AtomWearPowerAnomalyServiceOperationalStatsReported = 620,
4424    AtomWearPowerAnomalyServiceEventStatsReported = 621,
4425    AtomWearTimeSyncRequested = 911,
4426    AtomWearTimeUpdateStarted = 912,
4427    AtomWearTimeSyncAttemptCompleted = 913,
4428    AtomWearTimeChanged = 914,
4429    AtomWearSetupWizardDeviceStatusReported = 953,
4430    AtomWearSetupWizardPairingCompleted = 954,
4431    AtomWearSetupWizardConnectionEstablished = 955,
4432    AtomWearSetupWizardCheckinCompleted = 956,
4433    AtomWearSetupWizardCompanionTimeReported = 957,
4434    AtomWearSetupWizardStatusReported = 958,
4435    AtomWearSetupWizardHeartbeatReported = 959,
4436    AtomWearSetupWizardFrpTriggered = 960,
4437    AtomWearSetupWizardSystemUpdateTriggered = 961,
4438    AtomWearSetupWizardPhoneSwitchTriggered = 962,
4439    AtomRendererInitialized = 736,
4440    AtomSchemaVersionReceived = 737,
4441    AtomLayoutInspected = 741,
4442    AtomLayoutExpressionInspected = 742,
4443    AtomLayoutAnimationsInspected = 743,
4444    AtomMaterialComponentsInspected = 744,
4445    AtomTileRequested = 745,
4446    AtomStateResponseReceived = 746,
4447    AtomTileResponseReceived = 747,
4448    AtomInflationFinished = 748,
4449    AtomInflationFailed = 749,
4450    AtomIgnoredInflationFailuresReported = 750,
4451    AtomDrawableRendered = 751,
4452    AtomWearModeStateChanged = 715,
4453    AtomMediaActionReported = 608,
4454    AtomMediaControlsLaunched = 609,
4455    AtomMediaSessionStateChanged = 677,
4456    AtomMediaControlApiUsageReported = 966,
4457    AtomMediaSubscriptionChanged = 990,
4458    AtomWearMediaOutputSwitcherDeviceScanApiLatency = 757,
4459    AtomWearMediaOutputSwitcherSassDeviceUnavailable = 758,
4460    AtomWearMediaOutputSwitcherFastpairApiTimeout = 759,
4461    AtomMediatorUpdated = 721,
4462    AtomSysproxyBluetoothBytesTransfer = 10196,
4463    AtomSysproxyConnectionUpdated = 786,
4464    AtomWearCompanionConnectionState = 921,
4465    AtomSysproxyServiceStateUpdated = 949,
4466    AtomUwbActivityInfo = 10188,
4467    AtomTestUprobestatsAtomReported = 915,
4468    AtomTvLowPowerStandbyPolicy = 679,
4469    AtomExternalTvInputEvent = 717,
4470    AtomBootIntegrityInfoReported = 775,
4471    AtomThreadnetworkTelemetryDataReported = 738,
4472    AtomThreadnetworkTopoEntryRepeated = 739,
4473    AtomThreadnetworkDeviceInfoReported = 740,
4474    AtomCellularRadioPowerStateChanged = 713,
4475    AtomEmergencyNumbersInfo = 10180,
4476    AtomDataNetworkValidation = 10207,
4477    AtomDataRatStateChanged = 854,
4478    AtomConnectedChannelChanged = 882,
4479    AtomCellularIdentifierDisclosed = 800,
4480    AtomSatelliteController = 10182,
4481    AtomSatelliteSession = 10183,
4482    AtomSatelliteIncomingDatagram = 10184,
4483    AtomSatelliteOutgoingDatagram = 10185,
4484    AtomSatelliteProvision = 10186,
4485    AtomSatelliteSosMessageRecommender = 10187,
4486    AtomCarrierRoamingSatelliteSession = 10211,
4487    AtomCarrierRoamingSatelliteControllerStats = 10212,
4488    AtomControllerStatsPerPackage = 10213,
4489    AtomSatelliteEntitlement = 10214,
4490    AtomSatelliteConfigUpdater = 10215,
4491    AtomSatelliteAccessController = 10219,
4492    AtomQualifiedRatListChanged = 634,
4493    AtomQnsImsCallDropStats = 635,
4494    AtomQnsFallbackRestrictionChanged = 636,
4495    AtomQnsRatPreferenceMismatchInfo = 10177,
4496    AtomQnsHandoverTimeMillis = 10178,
4497    AtomQnsHandoverPingpong = 10179,
4498    AtomIwlanUnderlyingNetworkValidationResultReported = 923,
4499    AtomEmergencyNumberDialed = 637,
4500    AtomCallStats = 10221,
4501    AtomCallAudioRouteStats = 10222,
4502    AtomTelecomApiStats = 10223,
4503    AtomTelecomErrorStats = 10224,
4504    AtomLockscreenShortcutSelected = 611,
4505    AtomLockscreenShortcutTriggered = 612,
4506    AtomLauncherImpressionEventV2 = 716,
4507    AtomDisplaySwitchLatencyTracked = 753,
4508    AtomNotificationListenerService = 829,
4509    AtomNavHandleTouchPoints = 869,
4510    AtomCommunalHubWidgetEventReported = 908,
4511    AtomPeripheralTutorialLaunched = 942,
4512    AtomContextualEducationTriggered = 971,
4513    AtomCommunalHubSnapshot = 10226,
4514    AtomTestExtensionAtomReported = 660,
4515    AtomTestRestrictedAtomReported = 672,
4516    AtomStatsSocketLossReported = 752,
4517    AtomSettingsSpaReported = 622,
4518    AtomSelinuxAuditLog = 799,
4519    AtomSandboxApiCalled = 488,
4520    AtomSandboxActivityEventOccurred = 735,
4521    AtomSdkSandboxRestrictedAccessInSession = 796,
4522    AtomSandboxSdkStorage = 10159,
4523    AtomRkpdPoolStats = 664,
4524    AtomRkpdClientOperation = 665,
4525    AtomRangingSessionConfigured = 993,
4526    AtomRangingSessionStarted = 994,
4527    AtomRangingSessionClosed = 995,
4528    AtomRangingTechnologyStarted = 996,
4529    AtomRangingTechnologyStopped = 997,
4530    AtomMediaProviderDatabaseRollbackReported = 784,
4531    AtomBackupSetupStatusReported = 785,
4532    AtomScreenOffReported = 776,
4533    AtomScreenTimeoutOverrideReported = 836,
4534    AtomScreenInteractiveSessionReported = 837,
4535    AtomScreenDimReported = 867,
4536    AtomAtom9999 = 9999,
4537    AtomAtom99999 = 99999,
4538    AtomPhotopickerSessionInfoReported = 886,
4539    AtomPhotopickerApiInfoReported = 887,
4540    AtomPhotopickerUiEventLogged = 888,
4541    AtomPhotopickerMediaItemStatusReported = 889,
4542    AtomPhotopickerPreviewInfoLogged = 890,
4543    AtomPhotopickerMenuInteractionLogged = 891,
4544    AtomPhotopickerBannerInteractionLogged = 892,
4545    AtomPhotopickerMediaLibraryInfoLogged = 893,
4546    AtomPhotopickerPageInfoLogged = 894,
4547    AtomPhotopickerMediaGridSyncInfoReported = 895,
4548    AtomPhotopickerAlbumSyncInfoReported = 896,
4549    AtomPhotopickerSearchInfoReported = 897,
4550    AtomSearchDataExtractionDetailsReported = 898,
4551    AtomEmbeddedPhotopickerInfoReported = 899,
4552    AtomPermissionRationaleDialogViewed = 645,
4553    AtomPermissionRationaleDialogActionReported = 646,
4554    AtomAppDataSharingUpdatesNotificationInteraction = 647,
4555    AtomAppDataSharingUpdatesFragmentViewed = 648,
4556    AtomAppDataSharingUpdatesFragmentActionReported = 649,
4557    AtomEnhancedConfirmationDialogResultReported = 827,
4558    AtomEnhancedConfirmationRestrictionCleared = 828,
4559    AtomPressureStallInformation = 10229,
4560    AtomPdfLoadReported = 859,
4561    AtomPdfApiUsageReported = 860,
4562    AtomPdfSearchReported = 861,
4563    AtomComponentStateChangedReported = 863,
4564    AtomOndevicepersonalizationApiCalled = 711,
4565    AtomOndevicepersonalizationTraceEvent = 952,
4566    AtomNfcObserveModeStateChanged = 855,
4567    AtomNfcFieldChanged = 856,
4568    AtomNfcPollingLoopNotificationReported = 857,
4569    AtomNfcProprietaryCapabilitiesReported = 858,
4570    AtomNfcExitFrameTableChanged = 1036,
4571    AtomNfcAutoTransactReported = 1038,
4572    AtomMicroxrDeviceBootCompleteReported = 901,
4573    AtomMteState = 10181,
4574    AtomZramMaintenanceExecuted = 1015,
4575    AtomZramSetupExecuted = 1029,
4576    AtomZramMmStatMmd = 10232,
4577    AtomZramBdStatMmd = 10233,
4578    AtomMediaEditingEndedReported = 798,
4579    AtomMediaCodecReclaimRequestCompleted = 600,
4580    AtomMediaCodecStarted = 641,
4581    AtomMediaCodecStopped = 642,
4582    AtomMediaCodecRendered = 684,
4583    AtomEmergencyStateChanged = 633,
4584    AtomChreSignificantMotionStateChanged = 868,
4585    AtomPopulationDensityProviderLoadingReported = 1002,
4586    AtomDensityBasedCoarseLocationsUsageReported = 1003,
4587    AtomDensityBasedCoarseLocationsProviderQueryReported = 1004,
4588    AtomKernelOomKillOccurred = 754,
4589    AtomKeyboardConfigured = 682,
4590    AtomKeyboardSystemsEventReported = 683,
4591    AtomInputdeviceUsageReported = 686,
4592    AtomInputEventLatencyReported = 932,
4593    AtomTouchpadUsage = 10191,
4594    AtomIkeSessionTerminated = 678,
4595    AtomIkeLivenessCheckSessionValidated = 760,
4596    AtomNegotiatedSecurityAssociation = 821,
4597    AtomHotwordEgressSizeAtomReported = 761,
4598    AtomHealthConnectUiImpression = 623,
4599    AtomHealthConnectUiInteraction = 624,
4600    AtomHealthConnectAppOpenedReported = 625,
4601    AtomHealthConnectApiCalled = 616,
4602    AtomHealthConnectUsageStats = 617,
4603    AtomHealthConnectStorageStats = 618,
4604    AtomHealthConnectApiInvoked = 643,
4605    AtomExerciseRouteApiCalled = 654,
4606    AtomHealthConnectExportInvoked = 907,
4607    AtomHealthConnectImportInvoked = 918,
4608    AtomHealthConnectExportImportStatsReported = 919,
4609    AtomHealthConnectPermissionStats = 963,
4610    AtomHealthConnectPhrApiInvoked = 980,
4611    AtomHealthConnectPhrUsageStats = 981,
4612    AtomHealthConnectPhrStorageStats = 984,
4613    AtomHealthConnectRestrictedEcosystemStats = 985,
4614    AtomHealthConnectEcosystemStats = 986,
4615    AtomHdmiEarcStatusReported = 701,
4616    AtomHdmiSoundbarModeStatusReported = 724,
4617    AtomHdmiPowerStateChangeOnActiveSourceLostToggled = 991,
4618    AtomBatteryHealth = 10220,
4619    AtomBiometricUnenrolled = 944,
4620    AtomBiometricEnumerated = 945,
4621    AtomApplicationGrammaticalInflectionChanged = 584,
4622    AtomSystemGrammaticalInflectionChanged = 816,
4623    AtomFullScreenIntentLaunched = 631,
4624    AtomBalAllowed = 632,
4625    AtomInTaskActivityStarted = 685,
4626    AtomDeviceOrientationChanged = 906,
4627    AtomCachedAppsHighWatermark = 10189,
4628    AtomStylusPredictionMetricsReported = 718,
4629    AtomUserRiskEventReported = 725,
4630    AtomMediaProjectionStateChanged = 729,
4631    AtomMediaProjectionTargetChanged = 730,
4632    AtomExcessiveBinderProxyCountReported = 853,
4633    AtomProxyBytesTransferByFgBg = 10200,
4634    AtomMobileBytesTransferByProcState = 10204,
4635    AtomBiometricFrrNotification = 817,
4636    AtomSensitiveContentMediaProjectionSession = 830,
4637    AtomSensitiveNotificationAppProtectionSession = 831,
4638    AtomSensitiveNotificationAppProtectionApplied = 832,
4639    AtomSensitiveNotificationRedaction = 833,
4640    AtomSensitiveContentAppProtection = 835,
4641    AtomAppRestrictionStateChanged = 866,
4642    AtomBatteryUsageStatsPerUid = 10209,
4643    AtomPostgcMemorySnapshot = 924,
4644    AtomPowerSaveTempAllowlistChanged = 926,
4645    AtomAppOpAccessTracked = 931,
4646    AtomContentOrFileUriEventReported = 933,
4647    AtomDeviceIdleTempAllowlistUpdated = 940,
4648    AtomAppOpNoteOpOrCheckOpBinderApiCalled = 943,
4649    AtomFrameworkWakelockInfo = 10230,
4650    AtomJankFrameCountByWidgetReported = 950,
4651    AtomIntentCreatorTokenAdded = 978,
4652    AtomNotificationChannelClassification = 983,
4653    AtomCameraStatusForCompatibilityChanged = 999,
4654    AtomFederatedComputeApiCalled = 712,
4655    AtomFederatedComputeTrainingEventReported = 771,
4656    AtomExampleIteratorNextLatencyReported = 838,
4657    AtomFederatedComputeTraceEventReported = 992,
4658    AtomExpressEventReported = 528,
4659    AtomExpressHistogramSampleReported = 593,
4660    AtomExpressUidEventReported = 644,
4661    AtomExpressUidHistogramSampleReported = 658,
4662    AtomDreamSettingChanged = 705,
4663    AtomDreamSettingSnapshot = 10192,
4664    AtomDndStateChanged = 657,
4665    AtomExternalDisplayStateChanged = 806,
4666    AtomDisplayModeDirectorVoteChanged = 792,
4667    AtomDevicePolicyManagementMode = 10216,
4668    AtomDevicePolicyState = 10217,
4669    AtomDeviceLockCheckInRequestReported = 726,
4670    AtomDeviceLockProvisioningCompleteReported = 727,
4671    AtomDeviceLockKioskAppRequestReported = 728,
4672    AtomDeviceLockCheckInRetryReported = 789,
4673    AtomDeviceLockProvisionFailureReported = 790,
4674    AtomDeviceLockLockUnlockDeviceFailureReported = 791,
4675    AtomDesktopModeUiChanged = 818,
4676    AtomDesktopModeSessionTaskUpdate = 819,
4677    AtomDesktopModeTaskSizeUpdated = 935,
4678    AtomCronetEngineCreated = 703,
4679    AtomCronetTrafficReported = 704,
4680    AtomCronetEngineBuilderInitialized = 762,
4681    AtomCronetHttpFlagsInitialized = 763,
4682    AtomCronetInitialized = 764,
4683    AtomCredentialManagerApiCalled = 585,
4684    AtomCredentialManagerInitPhaseReported = 651,
4685    AtomCredentialManagerCandidatePhaseReported = 652,
4686    AtomCredentialManagerFinalPhaseReported = 653,
4687    AtomCredentialManagerTotalReported = 667,
4688    AtomCredentialManagerFinalnouidReported = 668,
4689    AtomCredentialManagerGetReported = 669,
4690    AtomCredentialManagerAuthClickReported = 670,
4691    AtomCredentialManagerApiv2Called = 671,
4692    AtomCpuPolicy = 10199,
4693    AtomVpnConnectionStateChanged = 850,
4694    AtomVpnConnectionReported = 851,
4695    AtomIpClientRaInfoReported = 778,
4696    AtomApfSessionInfoReported = 777,
4697    AtomCoreNetworkingTerribleErrorOccurred = 979,
4698    AtomNetworkStatsRecorderFileOperated = 783,
4699    AtomDailyKeepaliveInfoReported = 650,
4700    AtomNetworkRequestStateChanged = 779,
4701    AtomTetheringActiveSessionsReported = 925,
4702    AtomCertificateTransparencyLogListUpdateStateChanged = 972,
4703    AtomHardwareRendererEvent = 946,
4704    AtomTextureViewEvent = 947,
4705    AtomSurfaceControlEvent = 948,
4706    AtomImageDecoded = 977,
4707    AtomCertificateTransparencyLogListStateChanged = 934,
4708    AtomConscryptServiceUsed = 965,
4709    AtomCertificateTransparencyVerificationReported = 989,
4710    AtomCameraFeatureCombinationQueryEvent = 900,
4711    AtomBroadcastSent = 922,
4712    AtomBluetoothHashedDeviceNameReported = 613,
4713    AtomBluetoothL2capCocClientConnection = 614,
4714    AtomBluetoothL2capCocServerConnection = 615,
4715    AtomBluetoothLeSessionConnected = 656,
4716    AtomRestrictedBluetoothDeviceNameReported = 666,
4717    AtomBluetoothProfileConnectionAttempted = 696,
4718    AtomBluetoothContentProfileErrorReported = 781,
4719    AtomBluetoothRfcommConnectionAttempted = 782,
4720    AtomRemoteDeviceInformationWithMetricId = 862,
4721    AtomLeAppScanStateChanged = 870,
4722    AtomLeRadioScanStopped = 871,
4723    AtomLeScanResultReceived = 872,
4724    AtomLeScanAbused = 873,
4725    AtomLeAdvStateChanged = 874,
4726    AtomLeAdvErrorReported = 875,
4727    AtomA2dpSessionReported = 904,
4728    AtomBluetoothCrossLayerEventReported = 916,
4729    AtomBroadcastAudioSessionReported = 927,
4730    AtomBroadcastAudioSyncReported = 928,
4731    AtomBluetoothRfcommConnectionReportedAtClose = 982,
4732    AtomBluetoothLeConnection = 988,
4733    AtomHearingDeviceActiveEventReported = 1021,
4734    AtomBackportedFixStatusReported = 987,
4735    AtomPluginInitialized = 655,
4736    AtomCarSystemUiDataSubscriptionEventReported = 974,
4737    AtomCarSettingsDataSubscriptionEventReported = 975,
4738    AtomCarQcLibEventReported = 976,
4739    AtomCarWakeupFromSuspendReported = 852,
4740    AtomCarRecentsEventReported = 770,
4741    AtomCarCalmModeEventReported = 797,
4742    AtomAutofillUiEventReported = 603,
4743    AtomAutofillFillRequestReported = 604,
4744    AtomAutofillFillResponseReported = 605,
4745    AtomAutofillSaveEventReported = 606,
4746    AtomAutofillSessionCommitted = 607,
4747    AtomAutofillFieldClassificationEventReported = 659,
4748    AtomOdrefreshReported = 366,
4749    AtomOdsignReported = 548,
4750    AtomBackgroundDexoptJobEnded = 467,
4751    AtomPrerebootDexoptJobEnded = 883,
4752    AtomArtDatumReported = 332,
4753    AtomArtDeviceDatumReported = 550,
4754    AtomArtDatumDeltaReported = 565,
4755    AtomArtDex2oatReported = 929,
4756    AtomArtDeviceStatus = 10205,
4757    AtomAppSearchSetSchemaStatsReported = 385,
4758    AtomAppSearchSchemaMigrationStatsReported = 579,
4759    AtomAppSearchUsageSearchIntentStatsReported = 825,
4760    AtomAppSearchUsageSearchIntentRawQueryStatsReported = 826,
4761    AtomAppSearchAppsIndexerStatsReported = 909,
4762    AtomAppFunctionsRequestReported = 998,
4763    AtomApexInstallationRequested = 732,
4764    AtomApexInstallationStaged = 733,
4765    AtomApexInstallationEnded = 734,
4766    AtomAiWallpapersButtonPressed = 706,
4767    AtomAiWallpapersTemplateSelected = 707,
4768    AtomAiWallpapersTermSelected = 708,
4769    AtomAiWallpapersWallpaperSet = 709,
4770    AtomAiWallpapersSessionSummary = 710,
4771    AtomJsscriptengineLatencyReported = 483,
4772    AtomAdServicesApiCalled = 435,
4773    AtomAdServicesMesurementReportsUploaded = 436,
4774    AtomMobileDataDownloadFileGroupStatusReported = 490,
4775    AtomMobileDataDownloadDownloadResultReported = 502,
4776    AtomAdServicesSettingsUsageReported = 493,
4777    AtomBackgroundFetchProcessReported = 496,
4778    AtomUpdateCustomAudienceProcessReported = 497,
4779    AtomRunAdBiddingProcessReported = 498,
4780    AtomRunAdScoringProcessReported = 499,
4781    AtomRunAdSelectionProcessReported = 500,
4782    AtomRunAdBiddingPerCaProcessReported = 501,
4783    AtomMobileDataDownloadFileGroupStorageStatsReported = 503,
4784    AtomAdServicesMeasurementRegistrations = 512,
4785    AtomAdServicesGetTopicsReported = 535,
4786    AtomAdServicesEpochComputationGetTopTopicsReported = 536,
4787    AtomAdServicesEpochComputationClassifierReported = 537,
4788    AtomAdServicesBackCompatGetTopicsReported = 598,
4789    AtomAdServicesBackCompatEpochComputationClassifierReported = 599,
4790    AtomAdServicesMeasurementDebugKeys = 640,
4791    AtomAdServicesErrorReported = 662,
4792    AtomAdServicesBackgroundJobsExecutionReported = 663,
4793    AtomAdServicesMeasurementDelayedSourceRegistration = 673,
4794    AtomAdServicesMeasurementAttribution = 674,
4795    AtomAdServicesMeasurementJobs = 675,
4796    AtomAdServicesMeasurementWipeout = 676,
4797    AtomAdServicesMeasurementAdIdMatchForDebugKeys = 695,
4798    AtomAdServicesEnrollmentDataStored = 697,
4799    AtomAdServicesEnrollmentFileDownloaded = 698,
4800    AtomAdServicesEnrollmentMatched = 699,
4801    AtomAdServicesConsentMigrated = 702,
4802    AtomAdServicesEnrollmentFailed = 714,
4803    AtomAdServicesMeasurementClickVerification = 756,
4804    AtomAdServicesEncryptionKeyFetched = 765,
4805    AtomAdServicesEncryptionKeyDbTransactionEnded = 766,
4806    AtomDestinationRegisteredBeacons = 767,
4807    AtomReportInteractionApiCalled = 768,
4808    AtomInteractionReportingTableCleared = 769,
4809    AtomAppManifestConfigHelperCalled = 788,
4810    AtomAdFilteringProcessJoinCaReported = 793,
4811    AtomAdFilteringProcessAdSelectionReported = 794,
4812    AtomAdCounterHistogramUpdaterReported = 795,
4813    AtomSignatureVerification = 807,
4814    AtomKAnonImmediateSignJoinStatusReported = 808,
4815    AtomKAnonBackgroundJobStatusReported = 809,
4816    AtomKAnonInitializeStatusReported = 810,
4817    AtomKAnonSignStatusReported = 811,
4818    AtomKAnonJoinStatusReported = 812,
4819    AtomKAnonKeyAttestationStatusReported = 813,
4820    AtomGetAdSelectionDataApiCalled = 814,
4821    AtomGetAdSelectionDataBuyerInputGenerated = 815,
4822    AtomBackgroundJobSchedulingReported = 834,
4823    AtomTopicsEncryptionEpochComputationReported = 840,
4824    AtomTopicsEncryptionGetTopicsReported = 841,
4825    AtomAdservicesShellCommandCalled = 842,
4826    AtomUpdateSignalsApiCalled = 843,
4827    AtomEncodingJobRun = 844,
4828    AtomEncodingJsFetch = 845,
4829    AtomEncodingJsExecution = 846,
4830    AtomPersistAdSelectionResultCalled = 847,
4831    AtomServerAuctionKeyFetchCalled = 848,
4832    AtomServerAuctionBackgroundKeyFetchEnabled = 849,
4833    AtomAdServicesMeasurementProcessOdpRegistration = 864,
4834    AtomAdServicesMeasurementNotifyRegistrationToOdp = 865,
4835    AtomSelectAdsFromOutcomesApiCalled = 876,
4836    AtomReportImpressionApiCalled = 877,
4837    AtomAdServicesEnrollmentTransactionStats = 885,
4838    AtomAdServicesCobaltLoggerEventReported = 902,
4839    AtomAdServicesCobaltPeriodicJobEventReported = 903,
4840    AtomUpdateSignalsProcessReported = 905,
4841    AtomTopicsScheduleEpochJobSettingReported = 930,
4842    AtomScheduledCustomAudienceUpdateScheduleAttempted = 967,
4843    AtomScheduledCustomAudienceUpdatePerformed = 968,
4844    AtomScheduledCustomAudienceUpdatePerformedAttemptedFailureReported = 969,
4845    AtomScheduledCustomAudienceUpdateBackgroundJobRan = 970,
4846    AtomThermalStatusCalled = 772,
4847    AtomThermalHeadroomCalled = 773,
4848    AtomThermalHeadroomThresholdsCalled = 774,
4849    AtomAdpfHintSessionTidCleanup = 839,
4850    AtomThermalHeadroomThresholds = 10201,
4851    AtomAdpfSessionSnapshot = 10218,
4852    AtomAdaptiveAuthUnlockAfterLockReported = 820,
4853    AtomAccountManagerEvent = 951,
4854    AtomAccessibilityCheckResultReported = 910,
4855}
4856impl AtomId {
4857    /// String value of the enum field names used in the ProtoBuf definition.
4858    ///
4859    /// The values are not transformed in any way and thus are considered stable
4860    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4861    pub fn as_str_name(&self) -> &'static str {
4862        match self {
4863            Self::AtomUnspecified => "ATOM_UNSPECIFIED",
4864            Self::AtomBleScanStateChanged => "ATOM_BLE_SCAN_STATE_CHANGED",
4865            Self::AtomProcessStateChanged => "ATOM_PROCESS_STATE_CHANGED",
4866            Self::AtomBleScanResultReceived => "ATOM_BLE_SCAN_RESULT_RECEIVED",
4867            Self::AtomSensorStateChanged => "ATOM_SENSOR_STATE_CHANGED",
4868            Self::AtomGpsScanStateChanged => "ATOM_GPS_SCAN_STATE_CHANGED",
4869            Self::AtomSyncStateChanged => "ATOM_SYNC_STATE_CHANGED",
4870            Self::AtomScheduledJobStateChanged => "ATOM_SCHEDULED_JOB_STATE_CHANGED",
4871            Self::AtomScreenBrightnessChanged => "ATOM_SCREEN_BRIGHTNESS_CHANGED",
4872            Self::AtomWakelockStateChanged => "ATOM_WAKELOCK_STATE_CHANGED",
4873            Self::AtomLongPartialWakelockStateChanged => {
4874                "ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED"
4875            }
4876            Self::AtomMobileRadioPowerStateChanged => {
4877                "ATOM_MOBILE_RADIO_POWER_STATE_CHANGED"
4878            }
4879            Self::AtomWifiRadioPowerStateChanged => "ATOM_WIFI_RADIO_POWER_STATE_CHANGED",
4880            Self::AtomActivityManagerSleepStateChanged => {
4881                "ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED"
4882            }
4883            Self::AtomMemoryFactorStateChanged => "ATOM_MEMORY_FACTOR_STATE_CHANGED",
4884            Self::AtomExcessiveCpuUsageReported => "ATOM_EXCESSIVE_CPU_USAGE_REPORTED",
4885            Self::AtomCachedKillReported => "ATOM_CACHED_KILL_REPORTED",
4886            Self::AtomProcessMemoryStatReported => "ATOM_PROCESS_MEMORY_STAT_REPORTED",
4887            Self::AtomLauncherEvent => "ATOM_LAUNCHER_EVENT",
4888            Self::AtomBatterySaverModeStateChanged => {
4889                "ATOM_BATTERY_SAVER_MODE_STATE_CHANGED"
4890            }
4891            Self::AtomDeviceIdleModeStateChanged => "ATOM_DEVICE_IDLE_MODE_STATE_CHANGED",
4892            Self::AtomDeviceIdlingModeStateChanged => {
4893                "ATOM_DEVICE_IDLING_MODE_STATE_CHANGED"
4894            }
4895            Self::AtomAudioStateChanged => "ATOM_AUDIO_STATE_CHANGED",
4896            Self::AtomMediaCodecStateChanged => "ATOM_MEDIA_CODEC_STATE_CHANGED",
4897            Self::AtomCameraStateChanged => "ATOM_CAMERA_STATE_CHANGED",
4898            Self::AtomFlashlightStateChanged => "ATOM_FLASHLIGHT_STATE_CHANGED",
4899            Self::AtomUidProcessStateChanged => "ATOM_UID_PROCESS_STATE_CHANGED",
4900            Self::AtomProcessLifeCycleStateChanged => {
4901                "ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED"
4902            }
4903            Self::AtomScreenStateChanged => "ATOM_SCREEN_STATE_CHANGED",
4904            Self::AtomBatteryLevelChanged => "ATOM_BATTERY_LEVEL_CHANGED",
4905            Self::AtomChargingStateChanged => "ATOM_CHARGING_STATE_CHANGED",
4906            Self::AtomPluggedStateChanged => "ATOM_PLUGGED_STATE_CHANGED",
4907            Self::AtomInteractiveStateChanged => "ATOM_INTERACTIVE_STATE_CHANGED",
4908            Self::AtomTouchEventReported => "ATOM_TOUCH_EVENT_REPORTED",
4909            Self::AtomWakeupAlarmOccurred => "ATOM_WAKEUP_ALARM_OCCURRED",
4910            Self::AtomKernelWakeupReported => "ATOM_KERNEL_WAKEUP_REPORTED",
4911            Self::AtomWifiLockStateChanged => "ATOM_WIFI_LOCK_STATE_CHANGED",
4912            Self::AtomWifiSignalStrengthChanged => "ATOM_WIFI_SIGNAL_STRENGTH_CHANGED",
4913            Self::AtomWifiScanStateChanged => "ATOM_WIFI_SCAN_STATE_CHANGED",
4914            Self::AtomPhoneSignalStrengthChanged => "ATOM_PHONE_SIGNAL_STRENGTH_CHANGED",
4915            Self::AtomSettingChanged => "ATOM_SETTING_CHANGED",
4916            Self::AtomActivityForegroundStateChanged => {
4917                "ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED"
4918            }
4919            Self::AtomIsolatedUidChanged => "ATOM_ISOLATED_UID_CHANGED",
4920            Self::AtomPacketWakeupOccurred => "ATOM_PACKET_WAKEUP_OCCURRED",
4921            Self::AtomWallClockTimeShifted => "ATOM_WALL_CLOCK_TIME_SHIFTED",
4922            Self::AtomAnomalyDetected => "ATOM_ANOMALY_DETECTED",
4923            Self::AtomAppBreadcrumbReported => "ATOM_APP_BREADCRUMB_REPORTED",
4924            Self::AtomAppStartOccurred => "ATOM_APP_START_OCCURRED",
4925            Self::AtomAppStartCanceled => "ATOM_APP_START_CANCELED",
4926            Self::AtomAppStartFullyDrawn => "ATOM_APP_START_FULLY_DRAWN",
4927            Self::AtomLmkKillOccurred => "ATOM_LMK_KILL_OCCURRED",
4928            Self::AtomPictureInPictureStateChanged => {
4929                "ATOM_PICTURE_IN_PICTURE_STATE_CHANGED"
4930            }
4931            Self::AtomWifiMulticastLockStateChanged => {
4932                "ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED"
4933            }
4934            Self::AtomAppStartMemoryStateCaptured => {
4935                "ATOM_APP_START_MEMORY_STATE_CAPTURED"
4936            }
4937            Self::AtomShutdownSequenceReported => "ATOM_SHUTDOWN_SEQUENCE_REPORTED",
4938            Self::AtomBootSequenceReported => "ATOM_BOOT_SEQUENCE_REPORTED",
4939            Self::AtomOverlayStateChanged => "ATOM_OVERLAY_STATE_CHANGED",
4940            Self::AtomForegroundServiceStateChanged => {
4941                "ATOM_FOREGROUND_SERVICE_STATE_CHANGED"
4942            }
4943            Self::AtomCallStateChanged => "ATOM_CALL_STATE_CHANGED",
4944            Self::AtomKeyguardStateChanged => "ATOM_KEYGUARD_STATE_CHANGED",
4945            Self::AtomKeyguardBouncerStateChanged => {
4946                "ATOM_KEYGUARD_BOUNCER_STATE_CHANGED"
4947            }
4948            Self::AtomKeyguardBouncerPasswordEntered => {
4949                "ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED"
4950            }
4951            Self::AtomAppDied => "ATOM_APP_DIED",
4952            Self::AtomResourceConfigurationChanged => {
4953                "ATOM_RESOURCE_CONFIGURATION_CHANGED"
4954            }
4955            Self::AtomBluetoothEnabledStateChanged => {
4956                "ATOM_BLUETOOTH_ENABLED_STATE_CHANGED"
4957            }
4958            Self::AtomBluetoothConnectionStateChanged => {
4959                "ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED"
4960            }
4961            Self::AtomGpsSignalQualityChanged => "ATOM_GPS_SIGNAL_QUALITY_CHANGED",
4962            Self::AtomUsbConnectorStateChanged => "ATOM_USB_CONNECTOR_STATE_CHANGED",
4963            Self::AtomSpeakerImpedanceReported => "ATOM_SPEAKER_IMPEDANCE_REPORTED",
4964            Self::AtomHardwareFailed => "ATOM_HARDWARE_FAILED",
4965            Self::AtomPhysicalDropDetected => "ATOM_PHYSICAL_DROP_DETECTED",
4966            Self::AtomChargeCyclesReported => "ATOM_CHARGE_CYCLES_REPORTED",
4967            Self::AtomMobileConnectionStateChanged => {
4968                "ATOM_MOBILE_CONNECTION_STATE_CHANGED"
4969            }
4970            Self::AtomMobileRadioTechnologyChanged => {
4971                "ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED"
4972            }
4973            Self::AtomUsbDeviceAttached => "ATOM_USB_DEVICE_ATTACHED",
4974            Self::AtomAppCrashOccurred => "ATOM_APP_CRASH_OCCURRED",
4975            Self::AtomAnrOccurred => "ATOM_ANR_OCCURRED",
4976            Self::AtomWtfOccurred => "ATOM_WTF_OCCURRED",
4977            Self::AtomLowMemReported => "ATOM_LOW_MEM_REPORTED",
4978            Self::AtomGenericAtom => "ATOM_GENERIC_ATOM",
4979            Self::AtomVibratorStateChanged => "ATOM_VIBRATOR_STATE_CHANGED",
4980            Self::AtomDeferredJobStatsReported => "ATOM_DEFERRED_JOB_STATS_REPORTED",
4981            Self::AtomThermalThrottling => "ATOM_THERMAL_THROTTLING",
4982            Self::AtomBiometricAcquired => "ATOM_BIOMETRIC_ACQUIRED",
4983            Self::AtomBiometricAuthenticated => "ATOM_BIOMETRIC_AUTHENTICATED",
4984            Self::AtomBiometricErrorOccurred => "ATOM_BIOMETRIC_ERROR_OCCURRED",
4985            Self::AtomUiEventReported => "ATOM_UI_EVENT_REPORTED",
4986            Self::AtomBatteryHealthSnapshot => "ATOM_BATTERY_HEALTH_SNAPSHOT",
4987            Self::AtomSlowIo => "ATOM_SLOW_IO",
4988            Self::AtomBatteryCausedShutdown => "ATOM_BATTERY_CAUSED_SHUTDOWN",
4989            Self::AtomPhoneServiceStateChanged => "ATOM_PHONE_SERVICE_STATE_CHANGED",
4990            Self::AtomPhoneStateChanged => "ATOM_PHONE_STATE_CHANGED",
4991            Self::AtomUserRestrictionChanged => "ATOM_USER_RESTRICTION_CHANGED",
4992            Self::AtomSettingsUiChanged => "ATOM_SETTINGS_UI_CHANGED",
4993            Self::AtomConnectivityStateChanged => "ATOM_CONNECTIVITY_STATE_CHANGED",
4994            Self::AtomServiceStateChanged => "ATOM_SERVICE_STATE_CHANGED",
4995            Self::AtomServiceLaunchReported => "ATOM_SERVICE_LAUNCH_REPORTED",
4996            Self::AtomFlagFlipUpdateOccurred => "ATOM_FLAG_FLIP_UPDATE_OCCURRED",
4997            Self::AtomBinaryPushStateChanged => "ATOM_BINARY_PUSH_STATE_CHANGED",
4998            Self::AtomDevicePolicyEvent => "ATOM_DEVICE_POLICY_EVENT",
4999            Self::AtomDocsUiFileOpCanceled => "ATOM_DOCS_UI_FILE_OP_CANCELED",
5000            Self::AtomDocsUiFileOpCopyMoveModeReported => {
5001                "ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED"
5002            }
5003            Self::AtomDocsUiFileOpFailure => "ATOM_DOCS_UI_FILE_OP_FAILURE",
5004            Self::AtomDocsUiProviderFileOp => "ATOM_DOCS_UI_PROVIDER_FILE_OP",
5005            Self::AtomDocsUiInvalidScopedAccessRequest => {
5006                "ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST"
5007            }
5008            Self::AtomDocsUiLaunchReported => "ATOM_DOCS_UI_LAUNCH_REPORTED",
5009            Self::AtomDocsUiRootVisited => "ATOM_DOCS_UI_ROOT_VISITED",
5010            Self::AtomDocsUiStartupMs => "ATOM_DOCS_UI_STARTUP_MS",
5011            Self::AtomDocsUiUserActionReported => "ATOM_DOCS_UI_USER_ACTION_REPORTED",
5012            Self::AtomWifiEnabledStateChanged => "ATOM_WIFI_ENABLED_STATE_CHANGED",
5013            Self::AtomWifiRunningStateChanged => "ATOM_WIFI_RUNNING_STATE_CHANGED",
5014            Self::AtomAppCompacted => "ATOM_APP_COMPACTED",
5015            Self::AtomNetworkDnsEventReported => "ATOM_NETWORK_DNS_EVENT_REPORTED",
5016            Self::AtomDocsUiPickerLaunchedFromReported => {
5017                "ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED"
5018            }
5019            Self::AtomDocsUiPickResultReported => "ATOM_DOCS_UI_PICK_RESULT_REPORTED",
5020            Self::AtomDocsUiSearchModeReported => "ATOM_DOCS_UI_SEARCH_MODE_REPORTED",
5021            Self::AtomDocsUiSearchTypeReported => "ATOM_DOCS_UI_SEARCH_TYPE_REPORTED",
5022            Self::AtomDataStallEvent => "ATOM_DATA_STALL_EVENT",
5023            Self::AtomRescuePartyResetReported => "ATOM_RESCUE_PARTY_RESET_REPORTED",
5024            Self::AtomSignedConfigReported => "ATOM_SIGNED_CONFIG_REPORTED",
5025            Self::AtomGnssNiEventReported => "ATOM_GNSS_NI_EVENT_REPORTED",
5026            Self::AtomBluetoothLinkLayerConnectionEvent => {
5027                "ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT"
5028            }
5029            Self::AtomBluetoothAclConnectionStateChanged => {
5030                "ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED"
5031            }
5032            Self::AtomBluetoothScoConnectionStateChanged => {
5033                "ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED"
5034            }
5035            Self::AtomAppDowngraded => "ATOM_APP_DOWNGRADED",
5036            Self::AtomAppOptimizedAfterDowngraded => {
5037                "ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED"
5038            }
5039            Self::AtomLowStorageStateChanged => "ATOM_LOW_STORAGE_STATE_CHANGED",
5040            Self::AtomGnssNfwNotificationReported => {
5041                "ATOM_GNSS_NFW_NOTIFICATION_REPORTED"
5042            }
5043            Self::AtomGnssConfigurationReported => "ATOM_GNSS_CONFIGURATION_REPORTED",
5044            Self::AtomUsbPortOverheatEventReported => {
5045                "ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED"
5046            }
5047            Self::AtomNfcErrorOccurred => "ATOM_NFC_ERROR_OCCURRED",
5048            Self::AtomNfcStateChanged => "ATOM_NFC_STATE_CHANGED",
5049            Self::AtomNfcBeamOccurred => "ATOM_NFC_BEAM_OCCURRED",
5050            Self::AtomNfcCardemulationOccurred => "ATOM_NFC_CARDEMULATION_OCCURRED",
5051            Self::AtomNfcTagOccurred => "ATOM_NFC_TAG_OCCURRED",
5052            Self::AtomNfcHceTransactionOccurred => "ATOM_NFC_HCE_TRANSACTION_OCCURRED",
5053            Self::AtomSeStateChanged => "ATOM_SE_STATE_CHANGED",
5054            Self::AtomSeOmapiReported => "ATOM_SE_OMAPI_REPORTED",
5055            Self::AtomBroadcastDispatchLatencyReported => {
5056                "ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED"
5057            }
5058            Self::AtomAttentionManagerServiceResultReported => {
5059                "ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED"
5060            }
5061            Self::AtomAdbConnectionChanged => "ATOM_ADB_CONNECTION_CHANGED",
5062            Self::AtomSpeechDspStatReported => "ATOM_SPEECH_DSP_STAT_REPORTED",
5063            Self::AtomUsbContaminantReported => "ATOM_USB_CONTAMINANT_REPORTED",
5064            Self::AtomWatchdogRollbackOccurred => "ATOM_WATCHDOG_ROLLBACK_OCCURRED",
5065            Self::AtomBiometricSystemHealthIssueDetected => {
5066                "ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED"
5067            }
5068            Self::AtomBubbleUiChanged => "ATOM_BUBBLE_UI_CHANGED",
5069            Self::AtomScheduledJobConstraintChanged => {
5070                "ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED"
5071            }
5072            Self::AtomBluetoothActiveDeviceChanged => {
5073                "ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED"
5074            }
5075            Self::AtomBluetoothA2dpPlaybackStateChanged => {
5076                "ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED"
5077            }
5078            Self::AtomBluetoothA2dpCodecConfigChanged => {
5079                "ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED"
5080            }
5081            Self::AtomBluetoothA2dpCodecCapabilityChanged => {
5082                "ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED"
5083            }
5084            Self::AtomBluetoothA2dpAudioUnderrunReported => {
5085                "ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED"
5086            }
5087            Self::AtomBluetoothA2dpAudioOverrunReported => {
5088                "ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED"
5089            }
5090            Self::AtomBluetoothDeviceRssiReported => {
5091                "ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED"
5092            }
5093            Self::AtomBluetoothDeviceFailedContactCounterReported => {
5094                "ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED"
5095            }
5096            Self::AtomBluetoothDeviceTxPowerLevelReported => {
5097                "ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED"
5098            }
5099            Self::AtomBluetoothHciTimeoutReported => {
5100                "ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED"
5101            }
5102            Self::AtomBluetoothQualityReportReported => {
5103                "ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED"
5104            }
5105            Self::AtomBluetoothDeviceInfoReported => {
5106                "ATOM_BLUETOOTH_DEVICE_INFO_REPORTED"
5107            }
5108            Self::AtomBluetoothRemoteVersionInfoReported => {
5109                "ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED"
5110            }
5111            Self::AtomBluetoothSdpAttributeReported => {
5112                "ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED"
5113            }
5114            Self::AtomBluetoothBondStateChanged => "ATOM_BLUETOOTH_BOND_STATE_CHANGED",
5115            Self::AtomBluetoothClassicPairingEventReported => {
5116                "ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED"
5117            }
5118            Self::AtomBluetoothSmpPairingEventReported => {
5119                "ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED"
5120            }
5121            Self::AtomScreenTimeoutExtensionReported => {
5122                "ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED"
5123            }
5124            Self::AtomProcessStartTime => "ATOM_PROCESS_START_TIME",
5125            Self::AtomPermissionGrantRequestResultReported => {
5126                "ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED"
5127            }
5128            Self::AtomBluetoothSocketConnectionStateChanged => {
5129                "ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED"
5130            }
5131            Self::AtomDeviceIdentifierAccessDenied => {
5132                "ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED"
5133            }
5134            Self::AtomBubbleDeveloperErrorReported => {
5135                "ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED"
5136            }
5137            Self::AtomAssistGestureStageReported => "ATOM_ASSIST_GESTURE_STAGE_REPORTED",
5138            Self::AtomAssistGestureFeedbackReported => {
5139                "ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED"
5140            }
5141            Self::AtomAssistGestureProgressReported => {
5142                "ATOM_ASSIST_GESTURE_PROGRESS_REPORTED"
5143            }
5144            Self::AtomTouchGestureClassified => "ATOM_TOUCH_GESTURE_CLASSIFIED",
5145            Self::AtomHiddenApiUsed => "ATOM_HIDDEN_API_USED",
5146            Self::AtomStyleUiChanged => "ATOM_STYLE_UI_CHANGED",
5147            Self::AtomPrivacyIndicatorsInteracted => "ATOM_PRIVACY_INDICATORS_INTERACTED",
5148            Self::AtomAppInstallOnExternalStorageReported => {
5149                "ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED"
5150            }
5151            Self::AtomNetworkStackReported => "ATOM_NETWORK_STACK_REPORTED",
5152            Self::AtomAppMovedStorageReported => "ATOM_APP_MOVED_STORAGE_REPORTED",
5153            Self::AtomBiometricEnrolled => "ATOM_BIOMETRIC_ENROLLED",
5154            Self::AtomSystemServerWatchdogOccurred => {
5155                "ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED"
5156            }
5157            Self::AtomTombStoneOccurred => "ATOM_TOMB_STONE_OCCURRED",
5158            Self::AtomBluetoothClassOfDeviceReported => {
5159                "ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED"
5160            }
5161            Self::AtomIntelligenceEventReported => "ATOM_INTELLIGENCE_EVENT_REPORTED",
5162            Self::AtomThermalThrottlingSeverityStateChanged => {
5163                "ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED"
5164            }
5165            Self::AtomRoleRequestResultReported => "ATOM_ROLE_REQUEST_RESULT_REPORTED",
5166            Self::AtomMediametricsAudiopolicyReported => {
5167                "ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED"
5168            }
5169            Self::AtomMediametricsAudiorecordReported => {
5170                "ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED"
5171            }
5172            Self::AtomMediametricsAudiothreadReported => {
5173                "ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED"
5174            }
5175            Self::AtomMediametricsAudiotrackReported => {
5176                "ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED"
5177            }
5178            Self::AtomMediametricsCodecReported => "ATOM_MEDIAMETRICS_CODEC_REPORTED",
5179            Self::AtomMediametricsDrmWidevineReported => {
5180                "ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED"
5181            }
5182            Self::AtomMediametricsExtractorReported => {
5183                "ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED"
5184            }
5185            Self::AtomMediametricsMediadrmReported => {
5186                "ATOM_MEDIAMETRICS_MEDIADRM_REPORTED"
5187            }
5188            Self::AtomMediametricsNuplayerReported => {
5189                "ATOM_MEDIAMETRICS_NUPLAYER_REPORTED"
5190            }
5191            Self::AtomMediametricsRecorderReported => {
5192                "ATOM_MEDIAMETRICS_RECORDER_REPORTED"
5193            }
5194            Self::AtomMediametricsDrmmanagerReported => {
5195                "ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED"
5196            }
5197            Self::AtomCarPowerStateChanged => "ATOM_CAR_POWER_STATE_CHANGED",
5198            Self::AtomGarageModeInfo => "ATOM_GARAGE_MODE_INFO",
5199            Self::AtomTestAtomReported => "ATOM_TEST_ATOM_REPORTED",
5200            Self::AtomContentCaptureCallerMismatchReported => {
5201                "ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED"
5202            }
5203            Self::AtomContentCaptureServiceEvents => {
5204                "ATOM_CONTENT_CAPTURE_SERVICE_EVENTS"
5205            }
5206            Self::AtomContentCaptureSessionEvents => {
5207                "ATOM_CONTENT_CAPTURE_SESSION_EVENTS"
5208            }
5209            Self::AtomContentCaptureFlushed => "ATOM_CONTENT_CAPTURE_FLUSHED",
5210            Self::AtomLocationManagerApiUsageReported => {
5211                "ATOM_LOCATION_MANAGER_API_USAGE_REPORTED"
5212            }
5213            Self::AtomReviewPermissionsFragmentResultReported => {
5214                "ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED"
5215            }
5216            Self::AtomRuntimePermissionsUpgradeResult => {
5217                "ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT"
5218            }
5219            Self::AtomGrantPermissionsActivityButtonActions => {
5220                "ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS"
5221            }
5222            Self::AtomLocationAccessCheckNotificationAction => {
5223                "ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION"
5224            }
5225            Self::AtomAppPermissionFragmentActionReported => {
5226                "ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED"
5227            }
5228            Self::AtomAppPermissionFragmentViewed => {
5229                "ATOM_APP_PERMISSION_FRAGMENT_VIEWED"
5230            }
5231            Self::AtomAppPermissionsFragmentViewed => {
5232                "ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED"
5233            }
5234            Self::AtomPermissionAppsFragmentViewed => {
5235                "ATOM_PERMISSION_APPS_FRAGMENT_VIEWED"
5236            }
5237            Self::AtomTextSelectionEvent => "ATOM_TEXT_SELECTION_EVENT",
5238            Self::AtomTextLinkifyEvent => "ATOM_TEXT_LINKIFY_EVENT",
5239            Self::AtomConversationActionsEvent => "ATOM_CONVERSATION_ACTIONS_EVENT",
5240            Self::AtomLanguageDetectionEvent => "ATOM_LANGUAGE_DETECTION_EVENT",
5241            Self::AtomExclusionRectStateChanged => "ATOM_EXCLUSION_RECT_STATE_CHANGED",
5242            Self::AtomBackGestureReportedReported => {
5243                "ATOM_BACK_GESTURE_REPORTED_REPORTED"
5244            }
5245            Self::AtomUpdateEngineUpdateAttemptReported => {
5246                "ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED"
5247            }
5248            Self::AtomUpdateEngineSuccessfulUpdateReported => {
5249                "ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED"
5250            }
5251            Self::AtomCameraActionEvent => "ATOM_CAMERA_ACTION_EVENT",
5252            Self::AtomAppCompatibilityChangeReported => {
5253                "ATOM_APP_COMPATIBILITY_CHANGE_REPORTED"
5254            }
5255            Self::AtomPerfettoUploaded => "ATOM_PERFETTO_UPLOADED",
5256            Self::AtomVmsClientConnectionStateChanged => {
5257                "ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED"
5258            }
5259            Self::AtomMediaProviderScanOccurred => "ATOM_MEDIA_PROVIDER_SCAN_OCCURRED",
5260            Self::AtomMediaContentDeleted => "ATOM_MEDIA_CONTENT_DELETED",
5261            Self::AtomMediaProviderPermissionRequested => {
5262                "ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED"
5263            }
5264            Self::AtomMediaProviderSchemaChanged => "ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED",
5265            Self::AtomMediaProviderIdleMaintenanceFinished => {
5266                "ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED"
5267            }
5268            Self::AtomRebootEscrowRecoveryReported => {
5269                "ATOM_REBOOT_ESCROW_RECOVERY_REPORTED"
5270            }
5271            Self::AtomBootTimeEventDurationReported => {
5272                "ATOM_BOOT_TIME_EVENT_DURATION_REPORTED"
5273            }
5274            Self::AtomBootTimeEventElapsedTimeReported => {
5275                "ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED"
5276            }
5277            Self::AtomBootTimeEventUtcTimeReported => {
5278                "ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED"
5279            }
5280            Self::AtomBootTimeEventErrorCodeReported => {
5281                "ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED"
5282            }
5283            Self::AtomUserspaceRebootReported => "ATOM_USERSPACE_REBOOT_REPORTED",
5284            Self::AtomNotificationReported => "ATOM_NOTIFICATION_REPORTED",
5285            Self::AtomNotificationPanelReported => "ATOM_NOTIFICATION_PANEL_REPORTED",
5286            Self::AtomNotificationChannelModified => "ATOM_NOTIFICATION_CHANNEL_MODIFIED",
5287            Self::AtomIntegrityCheckResultReported => {
5288                "ATOM_INTEGRITY_CHECK_RESULT_REPORTED"
5289            }
5290            Self::AtomIntegrityRulesPushed => "ATOM_INTEGRITY_RULES_PUSHED",
5291            Self::AtomCbMessageReported => "ATOM_CB_MESSAGE_REPORTED",
5292            Self::AtomCbMessageError => "ATOM_CB_MESSAGE_ERROR",
5293            Self::AtomWifiHealthStatReported => "ATOM_WIFI_HEALTH_STAT_REPORTED",
5294            Self::AtomWifiFailureStatReported => "ATOM_WIFI_FAILURE_STAT_REPORTED",
5295            Self::AtomWifiConnectionResultReported => {
5296                "ATOM_WIFI_CONNECTION_RESULT_REPORTED"
5297            }
5298            Self::AtomAppFreezeChanged => "ATOM_APP_FREEZE_CHANGED",
5299            Self::AtomSnapshotMergeReported => "ATOM_SNAPSHOT_MERGE_REPORTED",
5300            Self::AtomForegroundServiceAppOpSessionEnded => {
5301                "ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED"
5302            }
5303            Self::AtomDisplayJankReported => "ATOM_DISPLAY_JANK_REPORTED",
5304            Self::AtomAppStandbyBucketChanged => "ATOM_APP_STANDBY_BUCKET_CHANGED",
5305            Self::AtomSharesheetStarted => "ATOM_SHARESHEET_STARTED",
5306            Self::AtomRankingSelected => "ATOM_RANKING_SELECTED",
5307            Self::AtomTvsettingsUiInteracted => "ATOM_TVSETTINGS_UI_INTERACTED",
5308            Self::AtomLauncherSnapshot => "ATOM_LAUNCHER_SNAPSHOT",
5309            Self::AtomPackageInstallerV2Reported => "ATOM_PACKAGE_INSTALLER_V2_REPORTED",
5310            Self::AtomUserLifecycleJourneyReported => {
5311                "ATOM_USER_LIFECYCLE_JOURNEY_REPORTED"
5312            }
5313            Self::AtomUserLifecycleEventOccurred => "ATOM_USER_LIFECYCLE_EVENT_OCCURRED",
5314            Self::AtomAccessibilityShortcutReported => {
5315                "ATOM_ACCESSIBILITY_SHORTCUT_REPORTED"
5316            }
5317            Self::AtomAccessibilityServiceReported => {
5318                "ATOM_ACCESSIBILITY_SERVICE_REPORTED"
5319            }
5320            Self::AtomDocsUiDragAndDropReported => "ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED",
5321            Self::AtomAppUsageEventOccurred => "ATOM_APP_USAGE_EVENT_OCCURRED",
5322            Self::AtomAutoRevokeNotificationClicked => {
5323                "ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED"
5324            }
5325            Self::AtomAutoRevokeFragmentAppViewed => {
5326                "ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED"
5327            }
5328            Self::AtomAutoRevokedAppInteraction => "ATOM_AUTO_REVOKED_APP_INTERACTION",
5329            Self::AtomAppPermissionGroupsFragmentAutoRevokeAction => {
5330                "ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION"
5331            }
5332            Self::AtomEvsUsageStatsReported => "ATOM_EVS_USAGE_STATS_REPORTED",
5333            Self::AtomAudioPowerUsageDataReported => {
5334                "ATOM_AUDIO_POWER_USAGE_DATA_REPORTED"
5335            }
5336            Self::AtomTvTunerStateChanged => "ATOM_TV_TUNER_STATE_CHANGED",
5337            Self::AtomMediaoutputOpSwitchReported => {
5338                "ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED"
5339            }
5340            Self::AtomCbMessageFiltered => "ATOM_CB_MESSAGE_FILTERED",
5341            Self::AtomTvTunerDvrStatus => "ATOM_TV_TUNER_DVR_STATUS",
5342            Self::AtomTvCasSessionOpenStatus => "ATOM_TV_CAS_SESSION_OPEN_STATUS",
5343            Self::AtomAssistantInvocationReported => "ATOM_ASSISTANT_INVOCATION_REPORTED",
5344            Self::AtomDisplayWakeReported => "ATOM_DISPLAY_WAKE_REPORTED",
5345            Self::AtomCarUserHalModifyUserRequestReported => {
5346                "ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED"
5347            }
5348            Self::AtomCarUserHalModifyUserResponseReported => {
5349                "ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED"
5350            }
5351            Self::AtomCarUserHalPostSwitchResponseReported => {
5352                "ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED"
5353            }
5354            Self::AtomCarUserHalInitialUserInfoRequestReported => {
5355                "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED"
5356            }
5357            Self::AtomCarUserHalInitialUserInfoResponseReported => {
5358                "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED"
5359            }
5360            Self::AtomCarUserHalUserAssociationRequestReported => {
5361                "ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED"
5362            }
5363            Self::AtomCarUserHalSetUserAssociationResponseReported => {
5364                "ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED"
5365            }
5366            Self::AtomNetworkIpProvisioningReported => {
5367                "ATOM_NETWORK_IP_PROVISIONING_REPORTED"
5368            }
5369            Self::AtomNetworkDhcpRenewReported => "ATOM_NETWORK_DHCP_RENEW_REPORTED",
5370            Self::AtomNetworkValidationReported => "ATOM_NETWORK_VALIDATION_REPORTED",
5371            Self::AtomNetworkStackQuirkReported => "ATOM_NETWORK_STACK_QUIRK_REPORTED",
5372            Self::AtomMediametricsAudiorecorddeviceusageReported => {
5373                "ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED"
5374            }
5375            Self::AtomMediametricsAudiothreaddeviceusageReported => {
5376                "ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED"
5377            }
5378            Self::AtomMediametricsAudiotrackdeviceusageReported => {
5379                "ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED"
5380            }
5381            Self::AtomMediametricsAudiodeviceconnectionReported => {
5382                "ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED"
5383            }
5384            Self::AtomBlobCommitted => "ATOM_BLOB_COMMITTED",
5385            Self::AtomBlobLeased => "ATOM_BLOB_LEASED",
5386            Self::AtomBlobOpened => "ATOM_BLOB_OPENED",
5387            Self::AtomContactsProviderStatusReported => {
5388                "ATOM_CONTACTS_PROVIDER_STATUS_REPORTED"
5389            }
5390            Self::AtomKeystoreKeyEventReported => "ATOM_KEYSTORE_KEY_EVENT_REPORTED",
5391            Self::AtomNetworkTetheringReported => "ATOM_NETWORK_TETHERING_REPORTED",
5392            Self::AtomImeTouchReported => "ATOM_IME_TOUCH_REPORTED",
5393            Self::AtomUiInteractionFrameInfoReported => {
5394                "ATOM_UI_INTERACTION_FRAME_INFO_REPORTED"
5395            }
5396            Self::AtomUiActionLatencyReported => "ATOM_UI_ACTION_LATENCY_REPORTED",
5397            Self::AtomWifiDisconnectReported => "ATOM_WIFI_DISCONNECT_REPORTED",
5398            Self::AtomWifiConnectionStateChanged => "ATOM_WIFI_CONNECTION_STATE_CHANGED",
5399            Self::AtomHdmiCecActiveSourceChanged => "ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED",
5400            Self::AtomHdmiCecMessageReported => "ATOM_HDMI_CEC_MESSAGE_REPORTED",
5401            Self::AtomAirplaneMode => "ATOM_AIRPLANE_MODE",
5402            Self::AtomModemRestart => "ATOM_MODEM_RESTART",
5403            Self::AtomCarrierIdMismatchReported => "ATOM_CARRIER_ID_MISMATCH_REPORTED",
5404            Self::AtomCarrierIdTableUpdated => "ATOM_CARRIER_ID_TABLE_UPDATED",
5405            Self::AtomDataStallRecoveryReported => "ATOM_DATA_STALL_RECOVERY_REPORTED",
5406            Self::AtomMediametricsMediaparserReported => {
5407                "ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED"
5408            }
5409            Self::AtomTlsHandshakeReported => "ATOM_TLS_HANDSHAKE_REPORTED",
5410            Self::AtomTextClassifierApiUsageReported => {
5411                "ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED"
5412            }
5413            Self::AtomCarWatchdogKillStatsReported => {
5414                "ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED"
5415            }
5416            Self::AtomMediametricsPlaybackReported => {
5417                "ATOM_MEDIAMETRICS_PLAYBACK_REPORTED"
5418            }
5419            Self::AtomMediaNetworkInfoChanged => "ATOM_MEDIA_NETWORK_INFO_CHANGED",
5420            Self::AtomMediaPlaybackStateChanged => "ATOM_MEDIA_PLAYBACK_STATE_CHANGED",
5421            Self::AtomMediaPlaybackErrorReported => "ATOM_MEDIA_PLAYBACK_ERROR_REPORTED",
5422            Self::AtomMediaPlaybackTrackChanged => "ATOM_MEDIA_PLAYBACK_TRACK_CHANGED",
5423            Self::AtomWifiScanReported => "ATOM_WIFI_SCAN_REPORTED",
5424            Self::AtomWifiPnoScanReported => "ATOM_WIFI_PNO_SCAN_REPORTED",
5425            Self::AtomTifTuneChanged => "ATOM_TIF_TUNE_CHANGED",
5426            Self::AtomAutoRotateReported => "ATOM_AUTO_ROTATE_REPORTED",
5427            Self::AtomPerfettoTrigger => "ATOM_PERFETTO_TRIGGER",
5428            Self::AtomTranscodingData => "ATOM_TRANSCODING_DATA",
5429            Self::AtomImsServiceEntitlementUpdated => {
5430                "ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED"
5431            }
5432            Self::AtomDeviceRotated => "ATOM_DEVICE_ROTATED",
5433            Self::AtomSimSpecificSettingsRestored => {
5434                "ATOM_SIM_SPECIFIC_SETTINGS_RESTORED"
5435            }
5436            Self::AtomTextClassifierDownloadReported => {
5437                "ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED"
5438            }
5439            Self::AtomPinStorageEvent => "ATOM_PIN_STORAGE_EVENT",
5440            Self::AtomFaceDownReported => "ATOM_FACE_DOWN_REPORTED",
5441            Self::AtomBluetoothHalCrashReasonReported => {
5442                "ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED"
5443            }
5444            Self::AtomRebootEscrowPreparationReported => {
5445                "ATOM_REBOOT_ESCROW_PREPARATION_REPORTED"
5446            }
5447            Self::AtomRebootEscrowLskfCaptureReported => {
5448                "ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED"
5449            }
5450            Self::AtomRebootEscrowRebootReported => "ATOM_REBOOT_ESCROW_REBOOT_REPORTED",
5451            Self::AtomBinderLatencyReported => "ATOM_BINDER_LATENCY_REPORTED",
5452            Self::AtomMediametricsAaudiostreamReported => {
5453                "ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED"
5454            }
5455            Self::AtomMediaTranscodingSessionEnded => {
5456                "ATOM_MEDIA_TRANSCODING_SESSION_ENDED"
5457            }
5458            Self::AtomMagnificationUsageReported => "ATOM_MAGNIFICATION_USAGE_REPORTED",
5459            Self::AtomMagnificationModeWithImeOnReported => {
5460                "ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED"
5461            }
5462            Self::AtomAppSearchCallStatsReported => "ATOM_APP_SEARCH_CALL_STATS_REPORTED",
5463            Self::AtomAppSearchPutDocumentStatsReported => {
5464                "ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED"
5465            }
5466            Self::AtomDeviceControlChanged => "ATOM_DEVICE_CONTROL_CHANGED",
5467            Self::AtomDeviceStateChanged => "ATOM_DEVICE_STATE_CHANGED",
5468            Self::AtomInputdeviceRegistered => "ATOM_INPUTDEVICE_REGISTERED",
5469            Self::AtomSmartspaceCardReported => "ATOM_SMARTSPACE_CARD_REPORTED",
5470            Self::AtomAuthPromptAuthenticateInvoked => {
5471                "ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED"
5472            }
5473            Self::AtomAuthManagerCanAuthenticateInvoked => {
5474                "ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED"
5475            }
5476            Self::AtomAuthEnrollActionInvoked => "ATOM_AUTH_ENROLL_ACTION_INVOKED",
5477            Self::AtomAuthDeprecatedApiUsed => "ATOM_AUTH_DEPRECATED_API_USED",
5478            Self::AtomUnattendedRebootOccurred => "ATOM_UNATTENDED_REBOOT_OCCURRED",
5479            Self::AtomLongRebootBlockingReported => "ATOM_LONG_REBOOT_BLOCKING_REPORTED",
5480            Self::AtomLocationTimeZoneProviderStateChanged => {
5481                "ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED"
5482            }
5483            Self::AtomFdtrackEventOccurred => "ATOM_FDTRACK_EVENT_OCCURRED",
5484            Self::AtomTimeoutAutoExtendedReported => {
5485                "ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED"
5486            }
5487            Self::AtomAlarmBatchDelivered => "ATOM_ALARM_BATCH_DELIVERED",
5488            Self::AtomAlarmScheduled => "ATOM_ALARM_SCHEDULED",
5489            Self::AtomCarWatchdogIoOveruseStatsReported => {
5490                "ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED"
5491            }
5492            Self::AtomUserLevelHibernationStateChanged => {
5493                "ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED"
5494            }
5495            Self::AtomAppSearchInitializeStatsReported => {
5496                "ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED"
5497            }
5498            Self::AtomAppSearchQueryStatsReported => {
5499                "ATOM_APP_SEARCH_QUERY_STATS_REPORTED"
5500            }
5501            Self::AtomAppProcessDied => "ATOM_APP_PROCESS_DIED",
5502            Self::AtomNetworkIpReachabilityMonitorReported => {
5503                "ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED"
5504            }
5505            Self::AtomSlowInputEventReported => "ATOM_SLOW_INPUT_EVENT_REPORTED",
5506            Self::AtomAnrOccurredProcessingStarted => {
5507                "ATOM_ANR_OCCURRED_PROCESSING_STARTED"
5508            }
5509            Self::AtomAppSearchRemoveStatsReported => {
5510                "ATOM_APP_SEARCH_REMOVE_STATS_REPORTED"
5511            }
5512            Self::AtomMediaCodecReported => "ATOM_MEDIA_CODEC_REPORTED",
5513            Self::AtomPermissionUsageFragmentInteraction => {
5514                "ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION"
5515            }
5516            Self::AtomPermissionDetailsInteraction => {
5517                "ATOM_PERMISSION_DETAILS_INTERACTION"
5518            }
5519            Self::AtomPrivacySensorToggleInteraction => {
5520                "ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION"
5521            }
5522            Self::AtomPrivacyToggleDialogInteraction => {
5523                "ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION"
5524            }
5525            Self::AtomAppSearchOptimizeStatsReported => {
5526                "ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED"
5527            }
5528            Self::AtomNonA11yToolServiceWarningReport => {
5529                "ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT"
5530            }
5531            Self::AtomAppCompatStateChanged => "ATOM_APP_COMPAT_STATE_CHANGED",
5532            Self::AtomSizeCompatRestartButtonEventReported => {
5533                "ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED"
5534            }
5535            Self::AtomSplitscreenUiChanged => "ATOM_SPLITSCREEN_UI_CHANGED",
5536            Self::AtomNetworkDnsHandshakeReported => {
5537                "ATOM_NETWORK_DNS_HANDSHAKE_REPORTED"
5538            }
5539            Self::AtomBluetoothCodePathCounter => "ATOM_BLUETOOTH_CODE_PATH_COUNTER",
5540            Self::AtomBluetoothLeBatchScanReportDelay => {
5541                "ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY"
5542            }
5543            Self::AtomAccessibilityFloatingMenuUiChanged => {
5544                "ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED"
5545            }
5546            Self::AtomNeuralnetworksCompilationCompleted => {
5547                "ATOM_NEURALNETWORKS_COMPILATION_COMPLETED"
5548            }
5549            Self::AtomNeuralnetworksExecutionCompleted => {
5550                "ATOM_NEURALNETWORKS_EXECUTION_COMPLETED"
5551            }
5552            Self::AtomNeuralnetworksCompilationFailed => {
5553                "ATOM_NEURALNETWORKS_COMPILATION_FAILED"
5554            }
5555            Self::AtomNeuralnetworksExecutionFailed => {
5556                "ATOM_NEURALNETWORKS_EXECUTION_FAILED"
5557            }
5558            Self::AtomContextHubBooted => "ATOM_CONTEXT_HUB_BOOTED",
5559            Self::AtomContextHubRestarted => "ATOM_CONTEXT_HUB_RESTARTED",
5560            Self::AtomContextHubLoadedNanoappSnapshotReported => {
5561                "ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED"
5562            }
5563            Self::AtomChreCodeDownloadTransacted => "ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED",
5564            Self::AtomUwbSessionInited => "ATOM_UWB_SESSION_INITED",
5565            Self::AtomUwbSessionClosed => "ATOM_UWB_SESSION_CLOSED",
5566            Self::AtomUwbFirstRangingReceived => "ATOM_UWB_FIRST_RANGING_RECEIVED",
5567            Self::AtomUwbRangingMeasurementReceived => {
5568                "ATOM_UWB_RANGING_MEASUREMENT_RECEIVED"
5569            }
5570            Self::AtomTextClassifierDownloadWorkScheduled => {
5571                "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED"
5572            }
5573            Self::AtomTextClassifierDownloadWorkCompleted => {
5574                "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED"
5575            }
5576            Self::AtomClipboardCleared => "ATOM_CLIPBOARD_CLEARED",
5577            Self::AtomVmCreationRequested => "ATOM_VM_CREATION_REQUESTED",
5578            Self::AtomNearbyDeviceScanStateChanged => {
5579                "ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED"
5580            }
5581            Self::AtomApplicationLocalesChanged => "ATOM_APPLICATION_LOCALES_CHANGED",
5582            Self::AtomMediametricsAudiotrackstatusReported => {
5583                "ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED"
5584            }
5585            Self::AtomFoldStateDurationReported => "ATOM_FOLD_STATE_DURATION_REPORTED",
5586            Self::AtomLocationTimeZoneProviderControllerStateChanged => {
5587                "ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED"
5588            }
5589            Self::AtomDisplayHbmStateChanged => "ATOM_DISPLAY_HBM_STATE_CHANGED",
5590            Self::AtomDisplayHbmBrightnessChanged => {
5591                "ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED"
5592            }
5593            Self::AtomPersistentUriPermissionsFlushed => {
5594                "ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED"
5595            }
5596            Self::AtomEarlyBootCompOsArtifactsCheckReported => {
5597                "ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED"
5598            }
5599            Self::AtomVbmetaDigestReported => "ATOM_VBMETA_DIGEST_REPORTED",
5600            Self::AtomApexInfoGathered => "ATOM_APEX_INFO_GATHERED",
5601            Self::AtomPvmInfoGathered => "ATOM_PVM_INFO_GATHERED",
5602            Self::AtomWearSettingsUiInteracted => "ATOM_WEAR_SETTINGS_UI_INTERACTED",
5603            Self::AtomTracingServiceReportEvent => "ATOM_TRACING_SERVICE_REPORT_EVENT",
5604            Self::AtomMediametricsAudiorecordstatusReported => {
5605                "ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED"
5606            }
5607            Self::AtomLauncherLatency => "ATOM_LAUNCHER_LATENCY",
5608            Self::AtomDropboxEntryDropped => "ATOM_DROPBOX_ENTRY_DROPPED",
5609            Self::AtomWifiP2pConnectionReported => "ATOM_WIFI_P2P_CONNECTION_REPORTED",
5610            Self::AtomGameStateChanged => "ATOM_GAME_STATE_CHANGED",
5611            Self::AtomHotwordDetectorCreateRequested => {
5612                "ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED"
5613            }
5614            Self::AtomHotwordDetectionServiceInitResultReported => {
5615                "ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED"
5616            }
5617            Self::AtomHotwordDetectionServiceRestarted => {
5618                "ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED"
5619            }
5620            Self::AtomHotwordDetectorKeyphraseTriggered => {
5621                "ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED"
5622            }
5623            Self::AtomHotwordDetectorEvents => "ATOM_HOTWORD_DETECTOR_EVENTS",
5624            Self::AtomBootCompletedBroadcastCompletionLatencyReported => {
5625                "ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED"
5626            }
5627            Self::AtomContactsIndexerUpdateStatsReported => {
5628                "ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED"
5629            }
5630            Self::AtomAppBackgroundRestrictionsInfo => {
5631                "ATOM_APP_BACKGROUND_RESTRICTIONS_INFO"
5632            }
5633            Self::AtomMmsSmsProviderGetThreadIdFailed => {
5634                "ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED"
5635            }
5636            Self::AtomMmsSmsDatabaseHelperOnUpgradeFailed => {
5637                "ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED"
5638            }
5639            Self::AtomPermissionReminderNotificationInteracted => {
5640                "ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED"
5641            }
5642            Self::AtomRecentPermissionDecisionsInteracted => {
5643                "ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED"
5644            }
5645            Self::AtomGnssPsdsDownloadReported => "ATOM_GNSS_PSDS_DOWNLOAD_REPORTED",
5646            Self::AtomLeAudioConnectionSessionReported => {
5647                "ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED"
5648            }
5649            Self::AtomLeAudioBroadcastSessionReported => {
5650                "ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED"
5651            }
5652            Self::AtomDreamUiEventReported => "ATOM_DREAM_UI_EVENT_REPORTED",
5653            Self::AtomTaskManagerEventReported => "ATOM_TASK_MANAGER_EVENT_REPORTED",
5654            Self::AtomCdmAssociationAction => "ATOM_CDM_ASSOCIATION_ACTION",
5655            Self::AtomMagnificationTripleTapAndHoldActivatedSessionReported => {
5656                "ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED"
5657            }
5658            Self::AtomMagnificationFollowTypingFocusActivatedSessionReported => {
5659                "ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED"
5660            }
5661            Self::AtomAccessibilityTextReadingOptionsChanged => {
5662                "ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED"
5663            }
5664            Self::AtomWifiSetupFailureCrashReported => {
5665                "ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED"
5666            }
5667            Self::AtomUwbDeviceErrorReported => "ATOM_UWB_DEVICE_ERROR_REPORTED",
5668            Self::AtomIsolatedCompilationScheduled => {
5669                "ATOM_ISOLATED_COMPILATION_SCHEDULED"
5670            }
5671            Self::AtomIsolatedCompilationEnded => "ATOM_ISOLATED_COMPILATION_ENDED",
5672            Self::AtomOnsOpportunisticEsimProvisioningComplete => {
5673                "ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE"
5674            }
5675            Self::AtomSystemServerPreWatchdogOccurred => {
5676                "ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED"
5677            }
5678            Self::AtomTelephonyAnomalyDetected => "ATOM_TELEPHONY_ANOMALY_DETECTED",
5679            Self::AtomLetterboxPositionChanged => "ATOM_LETTERBOX_POSITION_CHANGED",
5680            Self::AtomRemoteKeyProvisioningAttempt => {
5681                "ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT"
5682            }
5683            Self::AtomRemoteKeyProvisioningNetworkInfo => {
5684                "ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO"
5685            }
5686            Self::AtomRemoteKeyProvisioningTiming => {
5687                "ATOM_REMOTE_KEY_PROVISIONING_TIMING"
5688            }
5689            Self::AtomMediaoutputOpInteractionReport => {
5690                "ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT"
5691            }
5692            Self::AtomSyncExemptionOccurred => "ATOM_SYNC_EXEMPTION_OCCURRED",
5693            Self::AtomAutofillPresentationEventReported => {
5694                "ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED"
5695            }
5696            Self::AtomDockStateChanged => "ATOM_DOCK_STATE_CHANGED",
5697            Self::AtomSafetySourceStateCollected => "ATOM_SAFETY_SOURCE_STATE_COLLECTED",
5698            Self::AtomSafetyCenterSystemEventReported => {
5699                "ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED"
5700            }
5701            Self::AtomSafetyCenterInteractionReported => {
5702                "ATOM_SAFETY_CENTER_INTERACTION_REPORTED"
5703            }
5704            Self::AtomSettingsProviderSettingChanged => {
5705                "ATOM_SETTINGS_PROVIDER_SETTING_CHANGED"
5706            }
5707            Self::AtomBroadcastDeliveryEventReported => {
5708                "ATOM_BROADCAST_DELIVERY_EVENT_REPORTED"
5709            }
5710            Self::AtomServiceRequestEventReported => {
5711                "ATOM_SERVICE_REQUEST_EVENT_REPORTED"
5712            }
5713            Self::AtomProviderAcquisitionEventReported => {
5714                "ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED"
5715            }
5716            Self::AtomBluetoothDeviceNameReported => {
5717                "ATOM_BLUETOOTH_DEVICE_NAME_REPORTED"
5718            }
5719            Self::AtomCbConfigUpdated => "ATOM_CB_CONFIG_UPDATED",
5720            Self::AtomCbModuleErrorReported => "ATOM_CB_MODULE_ERROR_REPORTED",
5721            Self::AtomCbServiceFeatureChanged => "ATOM_CB_SERVICE_FEATURE_CHANGED",
5722            Self::AtomCbReceiverFeatureChanged => "ATOM_CB_RECEIVER_FEATURE_CHANGED",
5723            Self::AtomPrivacySignalNotificationInteraction => {
5724                "ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION"
5725            }
5726            Self::AtomPrivacySignalIssueCardInteraction => {
5727                "ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION"
5728            }
5729            Self::AtomPrivacySignalsJobFailure => "ATOM_PRIVACY_SIGNALS_JOB_FAILURE",
5730            Self::AtomVibrationReported => "ATOM_VIBRATION_REPORTED",
5731            Self::AtomUwbRangingStart => "ATOM_UWB_RANGING_START",
5732            Self::AtomAppCompactedV2 => "ATOM_APP_COMPACTED_V2",
5733            Self::AtomDisplayBrightnessChanged => "ATOM_DISPLAY_BRIGHTNESS_CHANGED",
5734            Self::AtomActivityActionBlocked => "ATOM_ACTIVITY_ACTION_BLOCKED",
5735            Self::AtomNetworkDnsServerSupportReported => {
5736                "ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED"
5737            }
5738            Self::AtomVmBooted => "ATOM_VM_BOOTED",
5739            Self::AtomVmExited => "ATOM_VM_EXITED",
5740            Self::AtomAmbientBrightnessStatsReported => {
5741                "ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED"
5742            }
5743            Self::AtomMediametricsSpatializercapabilitiesReported => {
5744                "ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED"
5745            }
5746            Self::AtomMediametricsSpatializerdeviceenabledReported => {
5747                "ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED"
5748            }
5749            Self::AtomMediametricsHeadtrackerdeviceenabledReported => {
5750                "ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED"
5751            }
5752            Self::AtomMediametricsHeadtrackerdevicesupportedReported => {
5753                "ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED"
5754            }
5755            Self::AtomHearingAidInfoReported => "ATOM_HEARING_AID_INFO_REPORTED",
5756            Self::AtomDeviceWideJobConstraintChanged => {
5757                "ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED"
5758            }
5759            Self::AtomAmbientModeChanged => "ATOM_AMBIENT_MODE_CHANGED",
5760            Self::AtomAnrLatencyReported => "ATOM_ANR_LATENCY_REPORTED",
5761            Self::AtomResourceApiInfo => "ATOM_RESOURCE_API_INFO",
5762            Self::AtomSystemDefaultNetworkChanged => {
5763                "ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED"
5764            }
5765            Self::AtomIwlanSetupDataCallResultReported => {
5766                "ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED"
5767            }
5768            Self::AtomIwlanPdnDisconnectedReasonReported => {
5769                "ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED"
5770            }
5771            Self::AtomAirplaneModeSessionReported => {
5772                "ATOM_AIRPLANE_MODE_SESSION_REPORTED"
5773            }
5774            Self::AtomVmCpuStatusReported => "ATOM_VM_CPU_STATUS_REPORTED",
5775            Self::AtomVmMemStatusReported => "ATOM_VM_MEM_STATUS_REPORTED",
5776            Self::AtomPackageInstallationSessionReported => {
5777                "ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED"
5778            }
5779            Self::AtomDefaultNetworkRematchInfo => "ATOM_DEFAULT_NETWORK_REMATCH_INFO",
5780            Self::AtomNetworkSelectionPerformance => "ATOM_NETWORK_SELECTION_PERFORMANCE",
5781            Self::AtomNetworkNsdReported => "ATOM_NETWORK_NSD_REPORTED",
5782            Self::AtomBluetoothDisconnectionReasonReported => {
5783                "ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED"
5784            }
5785            Self::AtomBluetoothLocalVersionsReported => {
5786                "ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED"
5787            }
5788            Self::AtomBluetoothRemoteSupportedFeaturesReported => {
5789                "ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED"
5790            }
5791            Self::AtomBluetoothLocalSupportedFeaturesReported => {
5792                "ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED"
5793            }
5794            Self::AtomBluetoothGattAppInfo => "ATOM_BLUETOOTH_GATT_APP_INFO",
5795            Self::AtomBrightnessConfigurationUpdated => {
5796                "ATOM_BRIGHTNESS_CONFIGURATION_UPDATED"
5797            }
5798            Self::AtomWearMediaOutputSwitcherLaunched => {
5799                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED"
5800            }
5801            Self::AtomWearMediaOutputSwitcherFinished => {
5802                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED"
5803            }
5804            Self::AtomWearMediaOutputSwitcherConnectionReported => {
5805                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED"
5806            }
5807            Self::AtomWearMediaOutputSwitcherDeviceScanTriggered => {
5808                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED"
5809            }
5810            Self::AtomWearMediaOutputSwitcherFirstDeviceScanLatency => {
5811                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY"
5812            }
5813            Self::AtomWearMediaOutputSwitcherConnectDeviceLatency => {
5814                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY"
5815            }
5816            Self::AtomPackageManagerSnapshotReported => {
5817                "ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED"
5818            }
5819            Self::AtomPackageManagerAppsFilterCacheBuildReported => {
5820                "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED"
5821            }
5822            Self::AtomPackageManagerAppsFilterCacheUpdateReported => {
5823                "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED"
5824            }
5825            Self::AtomLauncherImpressionEvent => "ATOM_LAUNCHER_IMPRESSION_EVENT",
5826            Self::AtomWearMediaOutputSwitcherAllDevicesScanLatency => {
5827                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY"
5828            }
5829            Self::AtomWsWatchFaceEdited => "ATOM_WS_WATCH_FACE_EDITED",
5830            Self::AtomWsWatchFaceFavoriteActionReported => {
5831                "ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED"
5832            }
5833            Self::AtomWsWatchFaceSetActionReported => {
5834                "ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED"
5835            }
5836            Self::AtomPackageUninstallationReported => {
5837                "ATOM_PACKAGE_UNINSTALLATION_REPORTED"
5838            }
5839            Self::AtomGameModeChanged => "ATOM_GAME_MODE_CHANGED",
5840            Self::AtomGameModeConfigurationChanged => {
5841                "ATOM_GAME_MODE_CONFIGURATION_CHANGED"
5842            }
5843            Self::AtomBedtimeModeStateChanged => "ATOM_BEDTIME_MODE_STATE_CHANGED",
5844            Self::AtomNetworkSliceSessionEnded => "ATOM_NETWORK_SLICE_SESSION_ENDED",
5845            Self::AtomNetworkSliceDailyDataUsageReported => {
5846                "ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED"
5847            }
5848            Self::AtomNfcTagTypeOccurred => "ATOM_NFC_TAG_TYPE_OCCURRED",
5849            Self::AtomNfcAidConflictOccurred => "ATOM_NFC_AID_CONFLICT_OCCURRED",
5850            Self::AtomNfcReaderConflictOccurred => "ATOM_NFC_READER_CONFLICT_OCCURRED",
5851            Self::AtomWsTileListChanged => "ATOM_WS_TILE_LIST_CHANGED",
5852            Self::AtomGetTypeAccessedWithoutPermission => {
5853                "ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION"
5854            }
5855            Self::AtomMobileBundledAppInfoGathered => {
5856                "ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED"
5857            }
5858            Self::AtomWsWatchFaceComplicationSetChanged => {
5859                "ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED"
5860            }
5861            Self::AtomMediaDrmCreated => "ATOM_MEDIA_DRM_CREATED",
5862            Self::AtomMediaDrmErrored => "ATOM_MEDIA_DRM_ERRORED",
5863            Self::AtomMediaDrmSessionOpened => "ATOM_MEDIA_DRM_SESSION_OPENED",
5864            Self::AtomMediaDrmSessionClosed => "ATOM_MEDIA_DRM_SESSION_CLOSED",
5865            Self::AtomUserSelectedResolution => "ATOM_USER_SELECTED_RESOLUTION",
5866            Self::AtomUnsafeIntentEventReported => "ATOM_UNSAFE_INTENT_EVENT_REPORTED",
5867            Self::AtomPerformanceHintSessionReported => {
5868                "ATOM_PERFORMANCE_HINT_SESSION_REPORTED"
5869            }
5870            Self::AtomMediametricsMidiDeviceCloseReported => {
5871                "ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED"
5872            }
5873            Self::AtomBiometricTouchReported => "ATOM_BIOMETRIC_TOUCH_REPORTED",
5874            Self::AtomHotwordAudioEgressEventReported => {
5875                "ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED"
5876            }
5877            Self::AtomLocationEnabledStateChanged => {
5878                "ATOM_LOCATION_ENABLED_STATE_CHANGED"
5879            }
5880            Self::AtomImeRequestFinished => "ATOM_IME_REQUEST_FINISHED",
5881            Self::AtomUsbComplianceWarningsReported => {
5882                "ATOM_USB_COMPLIANCE_WARNINGS_REPORTED"
5883            }
5884            Self::AtomAppSupportedLocalesChanged => "ATOM_APP_SUPPORTED_LOCALES_CHANGED",
5885            Self::AtomMediaProviderVolumeRecoveryReported => {
5886                "ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED"
5887            }
5888            Self::AtomBiometricPropertiesCollected => {
5889                "ATOM_BIOMETRIC_PROPERTIES_COLLECTED"
5890            }
5891            Self::AtomKernelWakeupAttributed => "ATOM_KERNEL_WAKEUP_ATTRIBUTED",
5892            Self::AtomScreenStateChangedV2 => "ATOM_SCREEN_STATE_CHANGED_V2",
5893            Self::AtomWsBackupActionReported => "ATOM_WS_BACKUP_ACTION_REPORTED",
5894            Self::AtomWsRestoreActionReported => "ATOM_WS_RESTORE_ACTION_REPORTED",
5895            Self::AtomDeviceLogAccessEventReported => {
5896                "ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED"
5897            }
5898            Self::AtomMediaSessionUpdated => "ATOM_MEDIA_SESSION_UPDATED",
5899            Self::AtomWearOobeStateChanged => "ATOM_WEAR_OOBE_STATE_CHANGED",
5900            Self::AtomWsNotificationUpdated => "ATOM_WS_NOTIFICATION_UPDATED",
5901            Self::AtomNetworkValidationFailureStatsDailyReported => {
5902                "ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED"
5903            }
5904            Self::AtomWsComplicationTapped => "ATOM_WS_COMPLICATION_TAPPED",
5905            Self::AtomWsNotificationBlocking => "ATOM_WS_NOTIFICATION_BLOCKING",
5906            Self::AtomWsNotificationBridgemodeUpdated => {
5907                "ATOM_WS_NOTIFICATION_BRIDGEMODE_UPDATED"
5908            }
5909            Self::AtomWsNotificationDismissalActioned => {
5910                "ATOM_WS_NOTIFICATION_DISMISSAL_ACTIONED"
5911            }
5912            Self::AtomWsNotificationActioned => "ATOM_WS_NOTIFICATION_ACTIONED",
5913            Self::AtomWsNotificationLatency => "ATOM_WS_NOTIFICATION_LATENCY",
5914            Self::AtomWifiBytesTransfer => "ATOM_WIFI_BYTES_TRANSFER",
5915            Self::AtomWifiBytesTransferByFgBg => "ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG",
5916            Self::AtomMobileBytesTransfer => "ATOM_MOBILE_BYTES_TRANSFER",
5917            Self::AtomMobileBytesTransferByFgBg => "ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG",
5918            Self::AtomBluetoothBytesTransfer => "ATOM_BLUETOOTH_BYTES_TRANSFER",
5919            Self::AtomKernelWakelock => "ATOM_KERNEL_WAKELOCK",
5920            Self::AtomSubsystemSleepState => "ATOM_SUBSYSTEM_SLEEP_STATE",
5921            Self::AtomCpuTimePerUid => "ATOM_CPU_TIME_PER_UID",
5922            Self::AtomCpuTimePerUidFreq => "ATOM_CPU_TIME_PER_UID_FREQ",
5923            Self::AtomWifiActivityInfo => "ATOM_WIFI_ACTIVITY_INFO",
5924            Self::AtomModemActivityInfo => "ATOM_MODEM_ACTIVITY_INFO",
5925            Self::AtomBluetoothActivityInfo => "ATOM_BLUETOOTH_ACTIVITY_INFO",
5926            Self::AtomProcessMemoryState => "ATOM_PROCESS_MEMORY_STATE",
5927            Self::AtomSystemElapsedRealtime => "ATOM_SYSTEM_ELAPSED_REALTIME",
5928            Self::AtomSystemUptime => "ATOM_SYSTEM_UPTIME",
5929            Self::AtomCpuActiveTime => "ATOM_CPU_ACTIVE_TIME",
5930            Self::AtomCpuClusterTime => "ATOM_CPU_CLUSTER_TIME",
5931            Self::AtomDiskSpace => "ATOM_DISK_SPACE",
5932            Self::AtomRemainingBatteryCapacity => "ATOM_REMAINING_BATTERY_CAPACITY",
5933            Self::AtomFullBatteryCapacity => "ATOM_FULL_BATTERY_CAPACITY",
5934            Self::AtomTemperature => "ATOM_TEMPERATURE",
5935            Self::AtomBinderCalls => "ATOM_BINDER_CALLS",
5936            Self::AtomBinderCallsExceptions => "ATOM_BINDER_CALLS_EXCEPTIONS",
5937            Self::AtomLooperStats => "ATOM_LOOPER_STATS",
5938            Self::AtomDiskStats => "ATOM_DISK_STATS",
5939            Self::AtomDirectoryUsage => "ATOM_DIRECTORY_USAGE",
5940            Self::AtomAppSize => "ATOM_APP_SIZE",
5941            Self::AtomCategorySize => "ATOM_CATEGORY_SIZE",
5942            Self::AtomProcStats => "ATOM_PROC_STATS",
5943            Self::AtomBatteryVoltage => "ATOM_BATTERY_VOLTAGE",
5944            Self::AtomNumFingerprintsEnrolled => "ATOM_NUM_FINGERPRINTS_ENROLLED",
5945            Self::AtomDiskIo => "ATOM_DISK_IO",
5946            Self::AtomPowerProfile => "ATOM_POWER_PROFILE",
5947            Self::AtomProcStatsPkgProc => "ATOM_PROC_STATS_PKG_PROC",
5948            Self::AtomProcessCpuTime => "ATOM_PROCESS_CPU_TIME",
5949            Self::AtomCpuTimePerThreadFreq => "ATOM_CPU_TIME_PER_THREAD_FREQ",
5950            Self::AtomOnDevicePowerMeasurement => "ATOM_ON_DEVICE_POWER_MEASUREMENT",
5951            Self::AtomDeviceCalculatedPowerUse => "ATOM_DEVICE_CALCULATED_POWER_USE",
5952            Self::AtomProcessMemoryHighWaterMark => "ATOM_PROCESS_MEMORY_HIGH_WATER_MARK",
5953            Self::AtomBatteryLevel => "ATOM_BATTERY_LEVEL",
5954            Self::AtomBuildInformation => "ATOM_BUILD_INFORMATION",
5955            Self::AtomBatteryCycleCount => "ATOM_BATTERY_CYCLE_COUNT",
5956            Self::AtomDebugElapsedClock => "ATOM_DEBUG_ELAPSED_CLOCK",
5957            Self::AtomDebugFailingElapsedClock => "ATOM_DEBUG_FAILING_ELAPSED_CLOCK",
5958            Self::AtomNumFacesEnrolled => "ATOM_NUM_FACES_ENROLLED",
5959            Self::AtomRoleHolder => "ATOM_ROLE_HOLDER",
5960            Self::AtomDangerousPermissionState => "ATOM_DANGEROUS_PERMISSION_STATE",
5961            Self::AtomTrainInfo => "ATOM_TRAIN_INFO",
5962            Self::AtomTimeZoneDataInfo => "ATOM_TIME_ZONE_DATA_INFO",
5963            Self::AtomExternalStorageInfo => "ATOM_EXTERNAL_STORAGE_INFO",
5964            Self::AtomGpuStatsGlobalInfo => "ATOM_GPU_STATS_GLOBAL_INFO",
5965            Self::AtomGpuStatsAppInfo => "ATOM_GPU_STATS_APP_INFO",
5966            Self::AtomSystemIonHeapSize => "ATOM_SYSTEM_ION_HEAP_SIZE",
5967            Self::AtomAppsOnExternalStorageInfo => "ATOM_APPS_ON_EXTERNAL_STORAGE_INFO",
5968            Self::AtomFaceSettings => "ATOM_FACE_SETTINGS",
5969            Self::AtomCoolingDevice => "ATOM_COOLING_DEVICE",
5970            Self::AtomAppOps => "ATOM_APP_OPS",
5971            Self::AtomProcessSystemIonHeapSize => "ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE",
5972            Self::AtomSurfaceflingerStatsGlobalInfo => {
5973                "ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO"
5974            }
5975            Self::AtomSurfaceflingerStatsLayerInfo => {
5976                "ATOM_SURFACEFLINGER_STATS_LAYER_INFO"
5977            }
5978            Self::AtomProcessMemorySnapshot => "ATOM_PROCESS_MEMORY_SNAPSHOT",
5979            Self::AtomVmsClientStats => "ATOM_VMS_CLIENT_STATS",
5980            Self::AtomNotificationRemoteViews => "ATOM_NOTIFICATION_REMOTE_VIEWS",
5981            Self::AtomDangerousPermissionStateSampled => {
5982                "ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED"
5983            }
5984            Self::AtomGraphicsStats => "ATOM_GRAPHICS_STATS",
5985            Self::AtomRuntimeAppOpAccess => "ATOM_RUNTIME_APP_OP_ACCESS",
5986            Self::AtomIonHeapSize => "ATOM_ION_HEAP_SIZE",
5987            Self::AtomPackageNotificationPreferences => {
5988                "ATOM_PACKAGE_NOTIFICATION_PREFERENCES"
5989            }
5990            Self::AtomPackageNotificationChannelPreferences => {
5991                "ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES"
5992            }
5993            Self::AtomPackageNotificationChannelGroupPreferences => {
5994                "ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES"
5995            }
5996            Self::AtomGnssStats => "ATOM_GNSS_STATS",
5997            Self::AtomAttributedAppOps => "ATOM_ATTRIBUTED_APP_OPS",
5998            Self::AtomVoiceCallSession => "ATOM_VOICE_CALL_SESSION",
5999            Self::AtomVoiceCallRatUsage => "ATOM_VOICE_CALL_RAT_USAGE",
6000            Self::AtomSimSlotState => "ATOM_SIM_SLOT_STATE",
6001            Self::AtomSupportedRadioAccessFamily => "ATOM_SUPPORTED_RADIO_ACCESS_FAMILY",
6002            Self::AtomSettingSnapshot => "ATOM_SETTING_SNAPSHOT",
6003            Self::AtomBlobInfo => "ATOM_BLOB_INFO",
6004            Self::AtomDataUsageBytesTransfer => "ATOM_DATA_USAGE_BYTES_TRANSFER",
6005            Self::AtomBytesTransferByTagAndMetered => {
6006                "ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED"
6007            }
6008            Self::AtomDndModeRule => "ATOM_DND_MODE_RULE",
6009            Self::AtomGeneralExternalStorageAccessStats => {
6010                "ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS"
6011            }
6012            Self::AtomIncomingSms => "ATOM_INCOMING_SMS",
6013            Self::AtomOutgoingSms => "ATOM_OUTGOING_SMS",
6014            Self::AtomCarrierIdTableVersion => "ATOM_CARRIER_ID_TABLE_VERSION",
6015            Self::AtomDataCallSession => "ATOM_DATA_CALL_SESSION",
6016            Self::AtomCellularServiceState => "ATOM_CELLULAR_SERVICE_STATE",
6017            Self::AtomCellularDataServiceSwitch => "ATOM_CELLULAR_DATA_SERVICE_SWITCH",
6018            Self::AtomSystemMemory => "ATOM_SYSTEM_MEMORY",
6019            Self::AtomImsRegistrationTermination => "ATOM_IMS_REGISTRATION_TERMINATION",
6020            Self::AtomImsRegistrationStats => "ATOM_IMS_REGISTRATION_STATS",
6021            Self::AtomCpuTimePerClusterFreq => "ATOM_CPU_TIME_PER_CLUSTER_FREQ",
6022            Self::AtomCpuCyclesPerUidCluster => "ATOM_CPU_CYCLES_PER_UID_CLUSTER",
6023            Self::AtomDeviceRotatedData => "ATOM_DEVICE_ROTATED_DATA",
6024            Self::AtomCpuCyclesPerThreadGroupCluster => {
6025                "ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER"
6026            }
6027            Self::AtomMediaDrmActivityInfo => "ATOM_MEDIA_DRM_ACTIVITY_INFO",
6028            Self::AtomOemManagedBytesTransfer => "ATOM_OEM_MANAGED_BYTES_TRANSFER",
6029            Self::AtomGnssPowerStats => "ATOM_GNSS_POWER_STATS",
6030            Self::AtomTimeZoneDetectorState => "ATOM_TIME_ZONE_DETECTOR_STATE",
6031            Self::AtomKeystore2StorageStats => "ATOM_KEYSTORE2_STORAGE_STATS",
6032            Self::AtomRkpPoolStats => "ATOM_RKP_POOL_STATS",
6033            Self::AtomProcessDmabufMemory => "ATOM_PROCESS_DMABUF_MEMORY",
6034            Self::AtomPendingAlarmInfo => "ATOM_PENDING_ALARM_INFO",
6035            Self::AtomUserLevelHibernatedApps => "ATOM_USER_LEVEL_HIBERNATED_APPS",
6036            Self::AtomLauncherLayoutSnapshot => "ATOM_LAUNCHER_LAYOUT_SNAPSHOT",
6037            Self::AtomGlobalHibernatedApps => "ATOM_GLOBAL_HIBERNATED_APPS",
6038            Self::AtomInputEventLatencySketch => "ATOM_INPUT_EVENT_LATENCY_SKETCH",
6039            Self::AtomBatteryUsageStatsBeforeReset => {
6040                "ATOM_BATTERY_USAGE_STATS_BEFORE_RESET"
6041            }
6042            Self::AtomBatteryUsageStatsSinceReset => {
6043                "ATOM_BATTERY_USAGE_STATS_SINCE_RESET"
6044            }
6045            Self::AtomBatteryUsageStatsSinceResetUsingPowerProfileModel => {
6046                "ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL"
6047            }
6048            Self::AtomInstalledIncrementalPackage => "ATOM_INSTALLED_INCREMENTAL_PACKAGE",
6049            Self::AtomTelephonyNetworkRequests => "ATOM_TELEPHONY_NETWORK_REQUESTS",
6050            Self::AtomAppSearchStorageInfo => "ATOM_APP_SEARCH_STORAGE_INFO",
6051            Self::AtomVmstat => "ATOM_VMSTAT",
6052            Self::AtomKeystore2KeyCreationWithGeneralInfo => {
6053                "ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO"
6054            }
6055            Self::AtomKeystore2KeyCreationWithAuthInfo => {
6056                "ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO"
6057            }
6058            Self::AtomKeystore2KeyCreationWithPurposeAndModesInfo => {
6059                "ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO"
6060            }
6061            Self::AtomKeystore2AtomWithOverflow => "ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW",
6062            Self::AtomKeystore2KeyOperationWithPurposeAndModesInfo => {
6063                "ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO"
6064            }
6065            Self::AtomKeystore2KeyOperationWithGeneralInfo => {
6066                "ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO"
6067            }
6068            Self::AtomRkpErrorStats => "ATOM_RKP_ERROR_STATS",
6069            Self::AtomKeystore2CrashStats => "ATOM_KEYSTORE2_CRASH_STATS",
6070            Self::AtomVendorApexInfo => "ATOM_VENDOR_APEX_INFO",
6071            Self::AtomAccessibilityShortcutStats => "ATOM_ACCESSIBILITY_SHORTCUT_STATS",
6072            Self::AtomAccessibilityFloatingMenuStats => {
6073                "ATOM_ACCESSIBILITY_FLOATING_MENU_STATS"
6074            }
6075            Self::AtomDataUsageBytesTransferV2 => "ATOM_DATA_USAGE_BYTES_TRANSFER_V2",
6076            Self::AtomMediaCapabilities => "ATOM_MEDIA_CAPABILITIES",
6077            Self::AtomCarWatchdogSystemIoUsageSummary => {
6078                "ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY"
6079            }
6080            Self::AtomCarWatchdogUidIoUsageSummary => {
6081                "ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY"
6082            }
6083            Self::AtomImsRegistrationFeatureTagStats => {
6084                "ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS"
6085            }
6086            Self::AtomRcsClientProvisioningStats => "ATOM_RCS_CLIENT_PROVISIONING_STATS",
6087            Self::AtomRcsAcsProvisioningStats => "ATOM_RCS_ACS_PROVISIONING_STATS",
6088            Self::AtomSipDelegateStats => "ATOM_SIP_DELEGATE_STATS",
6089            Self::AtomSipTransportFeatureTagStats => {
6090                "ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS"
6091            }
6092            Self::AtomSipMessageResponse => "ATOM_SIP_MESSAGE_RESPONSE",
6093            Self::AtomSipTransportSession => "ATOM_SIP_TRANSPORT_SESSION",
6094            Self::AtomImsDedicatedBearerListenerEvent => {
6095                "ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT"
6096            }
6097            Self::AtomImsDedicatedBearerEvent => "ATOM_IMS_DEDICATED_BEARER_EVENT",
6098            Self::AtomImsRegistrationServiceDescStats => {
6099                "ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS"
6100            }
6101            Self::AtomUceEventStats => "ATOM_UCE_EVENT_STATS",
6102            Self::AtomPresenceNotifyEvent => "ATOM_PRESENCE_NOTIFY_EVENT",
6103            Self::AtomGbaEvent => "ATOM_GBA_EVENT",
6104            Self::AtomPerSimStatus => "ATOM_PER_SIM_STATUS",
6105            Self::AtomGpuWorkPerUid => "ATOM_GPU_WORK_PER_UID",
6106            Self::AtomPersistentUriPermissionsAmountPerPackage => {
6107                "ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE"
6108            }
6109            Self::AtomSignedPartitionInfo => "ATOM_SIGNED_PARTITION_INFO",
6110            Self::AtomPinnedFileSizesPerPackage => "ATOM_PINNED_FILE_SIZES_PER_PACKAGE",
6111            Self::AtomPendingIntentsPerPackage => "ATOM_PENDING_INTENTS_PER_PACKAGE",
6112            Self::AtomUserInfo => "ATOM_USER_INFO",
6113            Self::AtomTelephonyNetworkRequestsV2 => "ATOM_TELEPHONY_NETWORK_REQUESTS_V2",
6114            Self::AtomDeviceTelephonyProperties => "ATOM_DEVICE_TELEPHONY_PROPERTIES",
6115            Self::AtomRemoteKeyProvisioningErrorCounts => {
6116                "ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS"
6117            }
6118            Self::AtomSafetyState => "ATOM_SAFETY_STATE",
6119            Self::AtomIncomingMms => "ATOM_INCOMING_MMS",
6120            Self::AtomOutgoingMms => "ATOM_OUTGOING_MMS",
6121            Self::AtomMultiUserInfo => "ATOM_MULTI_USER_INFO",
6122            Self::AtomNetworkBpfMapInfo => "ATOM_NETWORK_BPF_MAP_INFO",
6123            Self::AtomOutgoingShortCodeSms => "ATOM_OUTGOING_SHORT_CODE_SMS",
6124            Self::AtomConnectivityStateSample => "ATOM_CONNECTIVITY_STATE_SAMPLE",
6125            Self::AtomNetworkSelectionRematchReasonsInfo => {
6126                "ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO"
6127            }
6128            Self::AtomGameModeInfo => "ATOM_GAME_MODE_INFO",
6129            Self::AtomGameModeConfiguration => "ATOM_GAME_MODE_CONFIGURATION",
6130            Self::AtomGameModeListener => "ATOM_GAME_MODE_LISTENER",
6131            Self::AtomNetworkSliceRequestCount => "ATOM_NETWORK_SLICE_REQUEST_COUNT",
6132            Self::AtomWsTileSnapshot => "ATOM_WS_TILE_SNAPSHOT",
6133            Self::AtomWsActiveWatchFaceComplicationSetSnapshot => {
6134                "ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT"
6135            }
6136            Self::AtomProcessState => "ATOM_PROCESS_STATE",
6137            Self::AtomProcessAssociation => "ATOM_PROCESS_ASSOCIATION",
6138            Self::AtomAdpfSystemComponentInfo => "ATOM_ADPF_SYSTEM_COMPONENT_INFO",
6139            Self::AtomNotificationMemoryUse => "ATOM_NOTIFICATION_MEMORY_USE",
6140            Self::AtomHdrCapabilities => "ATOM_HDR_CAPABILITIES",
6141            Self::AtomWsFavouriteWatchFaceListSnapshot => {
6142                "ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT"
6143            }
6144            Self::AtomWifiAwareNdpReported => "ATOM_WIFI_AWARE_NDP_REPORTED",
6145            Self::AtomWifiAwareAttachReported => "ATOM_WIFI_AWARE_ATTACH_REPORTED",
6146            Self::AtomWifiSelfRecoveryTriggered => "ATOM_WIFI_SELF_RECOVERY_TRIGGERED",
6147            Self::AtomSoftApStarted => "ATOM_SOFT_AP_STARTED",
6148            Self::AtomSoftApStopped => "ATOM_SOFT_AP_STOPPED",
6149            Self::AtomWifiLockReleased => "ATOM_WIFI_LOCK_RELEASED",
6150            Self::AtomWifiLockDeactivated => "ATOM_WIFI_LOCK_DEACTIVATED",
6151            Self::AtomWifiConfigSaved => "ATOM_WIFI_CONFIG_SAVED",
6152            Self::AtomWifiAwareResourceUsingChanged => {
6153                "ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED"
6154            }
6155            Self::AtomWifiAwareHalApiCalled => "ATOM_WIFI_AWARE_HAL_API_CALLED",
6156            Self::AtomWifiLocalOnlyRequestReceived => {
6157                "ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED"
6158            }
6159            Self::AtomWifiLocalOnlyRequestScanTriggered => {
6160                "ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED"
6161            }
6162            Self::AtomWifiThreadTaskExecuted => "ATOM_WIFI_THREAD_TASK_EXECUTED",
6163            Self::AtomWifiStateChanged => "ATOM_WIFI_STATE_CHANGED",
6164            Self::AtomPnoScanStarted => "ATOM_PNO_SCAN_STARTED",
6165            Self::AtomPnoScanStopped => "ATOM_PNO_SCAN_STOPPED",
6166            Self::AtomWifiIsUnusableReported => "ATOM_WIFI_IS_UNUSABLE_REPORTED",
6167            Self::AtomWifiApCapabilitiesReported => "ATOM_WIFI_AP_CAPABILITIES_REPORTED",
6168            Self::AtomSoftApStateChanged => "ATOM_SOFT_AP_STATE_CHANGED",
6169            Self::AtomScorerPredictionResultReported => {
6170                "ATOM_SCORER_PREDICTION_RESULT_REPORTED"
6171            }
6172            Self::AtomWifiAwareCapabilities => "ATOM_WIFI_AWARE_CAPABILITIES",
6173            Self::AtomWifiModuleInfo => "ATOM_WIFI_MODULE_INFO",
6174            Self::AtomWifiSettingInfo => "ATOM_WIFI_SETTING_INFO",
6175            Self::AtomWifiComplexSettingInfo => "ATOM_WIFI_COMPLEX_SETTING_INFO",
6176            Self::AtomWifiConfiguredNetworkInfo => "ATOM_WIFI_CONFIGURED_NETWORK_INFO",
6177            Self::AtomWearPowerMenuOpened => "ATOM_WEAR_POWER_MENU_OPENED",
6178            Self::AtomWearAssistantOpened => "ATOM_WEAR_ASSISTANT_OPENED",
6179            Self::AtomFirstOverlayStateChanged => "ATOM_FIRST_OVERLAY_STATE_CHANGED",
6180            Self::AtomWsWearTimeSession => "ATOM_WS_WEAR_TIME_SESSION",
6181            Self::AtomWsIncomingCallActionReported => {
6182                "ATOM_WS_INCOMING_CALL_ACTION_REPORTED"
6183            }
6184            Self::AtomWsCallDisconnectionReported => {
6185                "ATOM_WS_CALL_DISCONNECTION_REPORTED"
6186            }
6187            Self::AtomWsCallDurationReported => "ATOM_WS_CALL_DURATION_REPORTED",
6188            Self::AtomWsCallUserExperienceLatencyReported => {
6189                "ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED"
6190            }
6191            Self::AtomWsCallInteractionReported => "ATOM_WS_CALL_INTERACTION_REPORTED",
6192            Self::AtomWsOnBodyStateChanged => "ATOM_WS_ON_BODY_STATE_CHANGED",
6193            Self::AtomWsWatchFaceRestrictedComplicationsImpacted => {
6194                "ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED"
6195            }
6196            Self::AtomWsWatchFaceDefaultRestrictedComplicationsRemoved => {
6197                "ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED"
6198            }
6199            Self::AtomWsComplicationsImpactedNotificationEventReported => {
6200                "ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED"
6201            }
6202            Self::AtomWsRemoteEventUsageReported => "ATOM_WS_REMOTE_EVENT_USAGE_REPORTED",
6203            Self::AtomWsNotificationManagedDismissalSync => {
6204                "ATOM_WS_NOTIFICATION_MANAGED_DISMISSAL_SYNC"
6205            }
6206            Self::AtomWsBugreportEventReported => "ATOM_WS_BUGREPORT_EVENT_REPORTED",
6207            Self::AtomWsStandaloneModeSnapshot => "ATOM_WS_STANDALONE_MODE_SNAPSHOT",
6208            Self::AtomWsFavoriteWatchFaceSnapshot => {
6209                "ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT"
6210            }
6211            Self::AtomWsPhotosWatchFaceFeatureSnapshot => {
6212                "ATOM_WS_PHOTOS_WATCH_FACE_FEATURE_SNAPSHOT"
6213            }
6214            Self::AtomWsWatchFaceCustomizationSnapshot => {
6215                "ATOM_WS_WATCH_FACE_CUSTOMIZATION_SNAPSHOT"
6216            }
6217            Self::AtomWearAdaptiveSuspendStatsReported => {
6218                "ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED"
6219            }
6220            Self::AtomWearPowerAnomalyServiceOperationalStatsReported => {
6221                "ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED"
6222            }
6223            Self::AtomWearPowerAnomalyServiceEventStatsReported => {
6224                "ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED"
6225            }
6226            Self::AtomWearTimeSyncRequested => "ATOM_WEAR_TIME_SYNC_REQUESTED",
6227            Self::AtomWearTimeUpdateStarted => "ATOM_WEAR_TIME_UPDATE_STARTED",
6228            Self::AtomWearTimeSyncAttemptCompleted => {
6229                "ATOM_WEAR_TIME_SYNC_ATTEMPT_COMPLETED"
6230            }
6231            Self::AtomWearTimeChanged => "ATOM_WEAR_TIME_CHANGED",
6232            Self::AtomWearSetupWizardDeviceStatusReported => {
6233                "ATOM_WEAR_SETUP_WIZARD_DEVICE_STATUS_REPORTED"
6234            }
6235            Self::AtomWearSetupWizardPairingCompleted => {
6236                "ATOM_WEAR_SETUP_WIZARD_PAIRING_COMPLETED"
6237            }
6238            Self::AtomWearSetupWizardConnectionEstablished => {
6239                "ATOM_WEAR_SETUP_WIZARD_CONNECTION_ESTABLISHED"
6240            }
6241            Self::AtomWearSetupWizardCheckinCompleted => {
6242                "ATOM_WEAR_SETUP_WIZARD_CHECKIN_COMPLETED"
6243            }
6244            Self::AtomWearSetupWizardCompanionTimeReported => {
6245                "ATOM_WEAR_SETUP_WIZARD_COMPANION_TIME_REPORTED"
6246            }
6247            Self::AtomWearSetupWizardStatusReported => {
6248                "ATOM_WEAR_SETUP_WIZARD_STATUS_REPORTED"
6249            }
6250            Self::AtomWearSetupWizardHeartbeatReported => {
6251                "ATOM_WEAR_SETUP_WIZARD_HEARTBEAT_REPORTED"
6252            }
6253            Self::AtomWearSetupWizardFrpTriggered => {
6254                "ATOM_WEAR_SETUP_WIZARD_FRP_TRIGGERED"
6255            }
6256            Self::AtomWearSetupWizardSystemUpdateTriggered => {
6257                "ATOM_WEAR_SETUP_WIZARD_SYSTEM_UPDATE_TRIGGERED"
6258            }
6259            Self::AtomWearSetupWizardPhoneSwitchTriggered => {
6260                "ATOM_WEAR_SETUP_WIZARD_PHONE_SWITCH_TRIGGERED"
6261            }
6262            Self::AtomRendererInitialized => "ATOM_RENDERER_INITIALIZED",
6263            Self::AtomSchemaVersionReceived => "ATOM_SCHEMA_VERSION_RECEIVED",
6264            Self::AtomLayoutInspected => "ATOM_LAYOUT_INSPECTED",
6265            Self::AtomLayoutExpressionInspected => "ATOM_LAYOUT_EXPRESSION_INSPECTED",
6266            Self::AtomLayoutAnimationsInspected => "ATOM_LAYOUT_ANIMATIONS_INSPECTED",
6267            Self::AtomMaterialComponentsInspected => "ATOM_MATERIAL_COMPONENTS_INSPECTED",
6268            Self::AtomTileRequested => "ATOM_TILE_REQUESTED",
6269            Self::AtomStateResponseReceived => "ATOM_STATE_RESPONSE_RECEIVED",
6270            Self::AtomTileResponseReceived => "ATOM_TILE_RESPONSE_RECEIVED",
6271            Self::AtomInflationFinished => "ATOM_INFLATION_FINISHED",
6272            Self::AtomInflationFailed => "ATOM_INFLATION_FAILED",
6273            Self::AtomIgnoredInflationFailuresReported => {
6274                "ATOM_IGNORED_INFLATION_FAILURES_REPORTED"
6275            }
6276            Self::AtomDrawableRendered => "ATOM_DRAWABLE_RENDERED",
6277            Self::AtomWearModeStateChanged => "ATOM_WEAR_MODE_STATE_CHANGED",
6278            Self::AtomMediaActionReported => "ATOM_MEDIA_ACTION_REPORTED",
6279            Self::AtomMediaControlsLaunched => "ATOM_MEDIA_CONTROLS_LAUNCHED",
6280            Self::AtomMediaSessionStateChanged => "ATOM_MEDIA_SESSION_STATE_CHANGED",
6281            Self::AtomMediaControlApiUsageReported => {
6282                "ATOM_MEDIA_CONTROL_API_USAGE_REPORTED"
6283            }
6284            Self::AtomMediaSubscriptionChanged => "ATOM_MEDIA_SUBSCRIPTION_CHANGED",
6285            Self::AtomWearMediaOutputSwitcherDeviceScanApiLatency => {
6286                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY"
6287            }
6288            Self::AtomWearMediaOutputSwitcherSassDeviceUnavailable => {
6289                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE"
6290            }
6291            Self::AtomWearMediaOutputSwitcherFastpairApiTimeout => {
6292                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT"
6293            }
6294            Self::AtomMediatorUpdated => "ATOM_MEDIATOR_UPDATED",
6295            Self::AtomSysproxyBluetoothBytesTransfer => {
6296                "ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER"
6297            }
6298            Self::AtomSysproxyConnectionUpdated => "ATOM_SYSPROXY_CONNECTION_UPDATED",
6299            Self::AtomWearCompanionConnectionState => {
6300                "ATOM_WEAR_COMPANION_CONNECTION_STATE"
6301            }
6302            Self::AtomSysproxyServiceStateUpdated => {
6303                "ATOM_SYSPROXY_SERVICE_STATE_UPDATED"
6304            }
6305            Self::AtomUwbActivityInfo => "ATOM_UWB_ACTIVITY_INFO",
6306            Self::AtomTestUprobestatsAtomReported => {
6307                "ATOM_TEST_UPROBESTATS_ATOM_REPORTED"
6308            }
6309            Self::AtomTvLowPowerStandbyPolicy => "ATOM_TV_LOW_POWER_STANDBY_POLICY",
6310            Self::AtomExternalTvInputEvent => "ATOM_EXTERNAL_TV_INPUT_EVENT",
6311            Self::AtomBootIntegrityInfoReported => "ATOM_BOOT_INTEGRITY_INFO_REPORTED",
6312            Self::AtomThreadnetworkTelemetryDataReported => {
6313                "ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED"
6314            }
6315            Self::AtomThreadnetworkTopoEntryRepeated => {
6316                "ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED"
6317            }
6318            Self::AtomThreadnetworkDeviceInfoReported => {
6319                "ATOM_THREADNETWORK_DEVICE_INFO_REPORTED"
6320            }
6321            Self::AtomCellularRadioPowerStateChanged => {
6322                "ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED"
6323            }
6324            Self::AtomEmergencyNumbersInfo => "ATOM_EMERGENCY_NUMBERS_INFO",
6325            Self::AtomDataNetworkValidation => "ATOM_DATA_NETWORK_VALIDATION",
6326            Self::AtomDataRatStateChanged => "ATOM_DATA_RAT_STATE_CHANGED",
6327            Self::AtomConnectedChannelChanged => "ATOM_CONNECTED_CHANNEL_CHANGED",
6328            Self::AtomCellularIdentifierDisclosed => "ATOM_CELLULAR_IDENTIFIER_DISCLOSED",
6329            Self::AtomSatelliteController => "ATOM_SATELLITE_CONTROLLER",
6330            Self::AtomSatelliteSession => "ATOM_SATELLITE_SESSION",
6331            Self::AtomSatelliteIncomingDatagram => "ATOM_SATELLITE_INCOMING_DATAGRAM",
6332            Self::AtomSatelliteOutgoingDatagram => "ATOM_SATELLITE_OUTGOING_DATAGRAM",
6333            Self::AtomSatelliteProvision => "ATOM_SATELLITE_PROVISION",
6334            Self::AtomSatelliteSosMessageRecommender => {
6335                "ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER"
6336            }
6337            Self::AtomCarrierRoamingSatelliteSession => {
6338                "ATOM_CARRIER_ROAMING_SATELLITE_SESSION"
6339            }
6340            Self::AtomCarrierRoamingSatelliteControllerStats => {
6341                "ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS"
6342            }
6343            Self::AtomControllerStatsPerPackage => "ATOM_CONTROLLER_STATS_PER_PACKAGE",
6344            Self::AtomSatelliteEntitlement => "ATOM_SATELLITE_ENTITLEMENT",
6345            Self::AtomSatelliteConfigUpdater => "ATOM_SATELLITE_CONFIG_UPDATER",
6346            Self::AtomSatelliteAccessController => "ATOM_SATELLITE_ACCESS_CONTROLLER",
6347            Self::AtomQualifiedRatListChanged => "ATOM_QUALIFIED_RAT_LIST_CHANGED",
6348            Self::AtomQnsImsCallDropStats => "ATOM_QNS_IMS_CALL_DROP_STATS",
6349            Self::AtomQnsFallbackRestrictionChanged => {
6350                "ATOM_QNS_FALLBACK_RESTRICTION_CHANGED"
6351            }
6352            Self::AtomQnsRatPreferenceMismatchInfo => {
6353                "ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO"
6354            }
6355            Self::AtomQnsHandoverTimeMillis => "ATOM_QNS_HANDOVER_TIME_MILLIS",
6356            Self::AtomQnsHandoverPingpong => "ATOM_QNS_HANDOVER_PINGPONG",
6357            Self::AtomIwlanUnderlyingNetworkValidationResultReported => {
6358                "ATOM_IWLAN_UNDERLYING_NETWORK_VALIDATION_RESULT_REPORTED"
6359            }
6360            Self::AtomEmergencyNumberDialed => "ATOM_EMERGENCY_NUMBER_DIALED",
6361            Self::AtomCallStats => "ATOM_CALL_STATS",
6362            Self::AtomCallAudioRouteStats => "ATOM_CALL_AUDIO_ROUTE_STATS",
6363            Self::AtomTelecomApiStats => "ATOM_TELECOM_API_STATS",
6364            Self::AtomTelecomErrorStats => "ATOM_TELECOM_ERROR_STATS",
6365            Self::AtomLockscreenShortcutSelected => "ATOM_LOCKSCREEN_SHORTCUT_SELECTED",
6366            Self::AtomLockscreenShortcutTriggered => "ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED",
6367            Self::AtomLauncherImpressionEventV2 => "ATOM_LAUNCHER_IMPRESSION_EVENT_V2",
6368            Self::AtomDisplaySwitchLatencyTracked => {
6369                "ATOM_DISPLAY_SWITCH_LATENCY_TRACKED"
6370            }
6371            Self::AtomNotificationListenerService => "ATOM_NOTIFICATION_LISTENER_SERVICE",
6372            Self::AtomNavHandleTouchPoints => "ATOM_NAV_HANDLE_TOUCH_POINTS",
6373            Self::AtomCommunalHubWidgetEventReported => {
6374                "ATOM_COMMUNAL_HUB_WIDGET_EVENT_REPORTED"
6375            }
6376            Self::AtomPeripheralTutorialLaunched => "ATOM_PERIPHERAL_TUTORIAL_LAUNCHED",
6377            Self::AtomContextualEducationTriggered => {
6378                "ATOM_CONTEXTUAL_EDUCATION_TRIGGERED"
6379            }
6380            Self::AtomCommunalHubSnapshot => "ATOM_COMMUNAL_HUB_SNAPSHOT",
6381            Self::AtomTestExtensionAtomReported => "ATOM_TEST_EXTENSION_ATOM_REPORTED",
6382            Self::AtomTestRestrictedAtomReported => "ATOM_TEST_RESTRICTED_ATOM_REPORTED",
6383            Self::AtomStatsSocketLossReported => "ATOM_STATS_SOCKET_LOSS_REPORTED",
6384            Self::AtomSettingsSpaReported => "ATOM_SETTINGS_SPA_REPORTED",
6385            Self::AtomSelinuxAuditLog => "ATOM_SELINUX_AUDIT_LOG",
6386            Self::AtomSandboxApiCalled => "ATOM_SANDBOX_API_CALLED",
6387            Self::AtomSandboxActivityEventOccurred => {
6388                "ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED"
6389            }
6390            Self::AtomSdkSandboxRestrictedAccessInSession => {
6391                "ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION"
6392            }
6393            Self::AtomSandboxSdkStorage => "ATOM_SANDBOX_SDK_STORAGE",
6394            Self::AtomRkpdPoolStats => "ATOM_RKPD_POOL_STATS",
6395            Self::AtomRkpdClientOperation => "ATOM_RKPD_CLIENT_OPERATION",
6396            Self::AtomRangingSessionConfigured => "ATOM_RANGING_SESSION_CONFIGURED",
6397            Self::AtomRangingSessionStarted => "ATOM_RANGING_SESSION_STARTED",
6398            Self::AtomRangingSessionClosed => "ATOM_RANGING_SESSION_CLOSED",
6399            Self::AtomRangingTechnologyStarted => "ATOM_RANGING_TECHNOLOGY_STARTED",
6400            Self::AtomRangingTechnologyStopped => "ATOM_RANGING_TECHNOLOGY_STOPPED",
6401            Self::AtomMediaProviderDatabaseRollbackReported => {
6402                "ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED"
6403            }
6404            Self::AtomBackupSetupStatusReported => "ATOM_BACKUP_SETUP_STATUS_REPORTED",
6405            Self::AtomScreenOffReported => "ATOM_SCREEN_OFF_REPORTED",
6406            Self::AtomScreenTimeoutOverrideReported => {
6407                "ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED"
6408            }
6409            Self::AtomScreenInteractiveSessionReported => {
6410                "ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED"
6411            }
6412            Self::AtomScreenDimReported => "ATOM_SCREEN_DIM_REPORTED",
6413            Self::AtomAtom9999 => "ATOM_ATOM_9999",
6414            Self::AtomAtom99999 => "ATOM_ATOM_99999",
6415            Self::AtomPhotopickerSessionInfoReported => {
6416                "ATOM_PHOTOPICKER_SESSION_INFO_REPORTED"
6417            }
6418            Self::AtomPhotopickerApiInfoReported => "ATOM_PHOTOPICKER_API_INFO_REPORTED",
6419            Self::AtomPhotopickerUiEventLogged => "ATOM_PHOTOPICKER_UI_EVENT_LOGGED",
6420            Self::AtomPhotopickerMediaItemStatusReported => {
6421                "ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED"
6422            }
6423            Self::AtomPhotopickerPreviewInfoLogged => {
6424                "ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED"
6425            }
6426            Self::AtomPhotopickerMenuInteractionLogged => {
6427                "ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED"
6428            }
6429            Self::AtomPhotopickerBannerInteractionLogged => {
6430                "ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED"
6431            }
6432            Self::AtomPhotopickerMediaLibraryInfoLogged => {
6433                "ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED"
6434            }
6435            Self::AtomPhotopickerPageInfoLogged => "ATOM_PHOTOPICKER_PAGE_INFO_LOGGED",
6436            Self::AtomPhotopickerMediaGridSyncInfoReported => {
6437                "ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED"
6438            }
6439            Self::AtomPhotopickerAlbumSyncInfoReported => {
6440                "ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED"
6441            }
6442            Self::AtomPhotopickerSearchInfoReported => {
6443                "ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED"
6444            }
6445            Self::AtomSearchDataExtractionDetailsReported => {
6446                "ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED"
6447            }
6448            Self::AtomEmbeddedPhotopickerInfoReported => {
6449                "ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED"
6450            }
6451            Self::AtomPermissionRationaleDialogViewed => {
6452                "ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED"
6453            }
6454            Self::AtomPermissionRationaleDialogActionReported => {
6455                "ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED"
6456            }
6457            Self::AtomAppDataSharingUpdatesNotificationInteraction => {
6458                "ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION"
6459            }
6460            Self::AtomAppDataSharingUpdatesFragmentViewed => {
6461                "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED"
6462            }
6463            Self::AtomAppDataSharingUpdatesFragmentActionReported => {
6464                "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED"
6465            }
6466            Self::AtomEnhancedConfirmationDialogResultReported => {
6467                "ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED"
6468            }
6469            Self::AtomEnhancedConfirmationRestrictionCleared => {
6470                "ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED"
6471            }
6472            Self::AtomPressureStallInformation => "ATOM_PRESSURE_STALL_INFORMATION",
6473            Self::AtomPdfLoadReported => "ATOM_PDF_LOAD_REPORTED",
6474            Self::AtomPdfApiUsageReported => "ATOM_PDF_API_USAGE_REPORTED",
6475            Self::AtomPdfSearchReported => "ATOM_PDF_SEARCH_REPORTED",
6476            Self::AtomComponentStateChangedReported => {
6477                "ATOM_COMPONENT_STATE_CHANGED_REPORTED"
6478            }
6479            Self::AtomOndevicepersonalizationApiCalled => {
6480                "ATOM_ONDEVICEPERSONALIZATION_API_CALLED"
6481            }
6482            Self::AtomOndevicepersonalizationTraceEvent => {
6483                "ATOM_ONDEVICEPERSONALIZATION_TRACE_EVENT"
6484            }
6485            Self::AtomNfcObserveModeStateChanged => "ATOM_NFC_OBSERVE_MODE_STATE_CHANGED",
6486            Self::AtomNfcFieldChanged => "ATOM_NFC_FIELD_CHANGED",
6487            Self::AtomNfcPollingLoopNotificationReported => {
6488                "ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED"
6489            }
6490            Self::AtomNfcProprietaryCapabilitiesReported => {
6491                "ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED"
6492            }
6493            Self::AtomNfcExitFrameTableChanged => "ATOM_NFC_EXIT_FRAME_TABLE_CHANGED",
6494            Self::AtomNfcAutoTransactReported => "ATOM_NFC_AUTO_TRANSACT_REPORTED",
6495            Self::AtomMicroxrDeviceBootCompleteReported => {
6496                "ATOM_MICROXR_DEVICE_BOOT_COMPLETE_REPORTED"
6497            }
6498            Self::AtomMteState => "ATOM_MTE_STATE",
6499            Self::AtomZramMaintenanceExecuted => "ATOM_ZRAM_MAINTENANCE_EXECUTED",
6500            Self::AtomZramSetupExecuted => "ATOM_ZRAM_SETUP_EXECUTED",
6501            Self::AtomZramMmStatMmd => "ATOM_ZRAM_MM_STAT_MMD",
6502            Self::AtomZramBdStatMmd => "ATOM_ZRAM_BD_STAT_MMD",
6503            Self::AtomMediaEditingEndedReported => "ATOM_MEDIA_EDITING_ENDED_REPORTED",
6504            Self::AtomMediaCodecReclaimRequestCompleted => {
6505                "ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED"
6506            }
6507            Self::AtomMediaCodecStarted => "ATOM_MEDIA_CODEC_STARTED",
6508            Self::AtomMediaCodecStopped => "ATOM_MEDIA_CODEC_STOPPED",
6509            Self::AtomMediaCodecRendered => "ATOM_MEDIA_CODEC_RENDERED",
6510            Self::AtomEmergencyStateChanged => "ATOM_EMERGENCY_STATE_CHANGED",
6511            Self::AtomChreSignificantMotionStateChanged => {
6512                "ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED"
6513            }
6514            Self::AtomPopulationDensityProviderLoadingReported => {
6515                "ATOM_POPULATION_DENSITY_PROVIDER_LOADING_REPORTED"
6516            }
6517            Self::AtomDensityBasedCoarseLocationsUsageReported => {
6518                "ATOM_DENSITY_BASED_COARSE_LOCATIONS_USAGE_REPORTED"
6519            }
6520            Self::AtomDensityBasedCoarseLocationsProviderQueryReported => {
6521                "ATOM_DENSITY_BASED_COARSE_LOCATIONS_PROVIDER_QUERY_REPORTED"
6522            }
6523            Self::AtomKernelOomKillOccurred => "ATOM_KERNEL_OOM_KILL_OCCURRED",
6524            Self::AtomKeyboardConfigured => "ATOM_KEYBOARD_CONFIGURED",
6525            Self::AtomKeyboardSystemsEventReported => {
6526                "ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED"
6527            }
6528            Self::AtomInputdeviceUsageReported => "ATOM_INPUTDEVICE_USAGE_REPORTED",
6529            Self::AtomInputEventLatencyReported => "ATOM_INPUT_EVENT_LATENCY_REPORTED",
6530            Self::AtomTouchpadUsage => "ATOM_TOUCHPAD_USAGE",
6531            Self::AtomIkeSessionTerminated => "ATOM_IKE_SESSION_TERMINATED",
6532            Self::AtomIkeLivenessCheckSessionValidated => {
6533                "ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED"
6534            }
6535            Self::AtomNegotiatedSecurityAssociation => {
6536                "ATOM_NEGOTIATED_SECURITY_ASSOCIATION"
6537            }
6538            Self::AtomHotwordEgressSizeAtomReported => {
6539                "ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED"
6540            }
6541            Self::AtomHealthConnectUiImpression => "ATOM_HEALTH_CONNECT_UI_IMPRESSION",
6542            Self::AtomHealthConnectUiInteraction => "ATOM_HEALTH_CONNECT_UI_INTERACTION",
6543            Self::AtomHealthConnectAppOpenedReported => {
6544                "ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED"
6545            }
6546            Self::AtomHealthConnectApiCalled => "ATOM_HEALTH_CONNECT_API_CALLED",
6547            Self::AtomHealthConnectUsageStats => "ATOM_HEALTH_CONNECT_USAGE_STATS",
6548            Self::AtomHealthConnectStorageStats => "ATOM_HEALTH_CONNECT_STORAGE_STATS",
6549            Self::AtomHealthConnectApiInvoked => "ATOM_HEALTH_CONNECT_API_INVOKED",
6550            Self::AtomExerciseRouteApiCalled => "ATOM_EXERCISE_ROUTE_API_CALLED",
6551            Self::AtomHealthConnectExportInvoked => "ATOM_HEALTH_CONNECT_EXPORT_INVOKED",
6552            Self::AtomHealthConnectImportInvoked => "ATOM_HEALTH_CONNECT_IMPORT_INVOKED",
6553            Self::AtomHealthConnectExportImportStatsReported => {
6554                "ATOM_HEALTH_CONNECT_EXPORT_IMPORT_STATS_REPORTED"
6555            }
6556            Self::AtomHealthConnectPermissionStats => {
6557                "ATOM_HEALTH_CONNECT_PERMISSION_STATS"
6558            }
6559            Self::AtomHealthConnectPhrApiInvoked => "ATOM_HEALTH_CONNECT_PHR_API_INVOKED",
6560            Self::AtomHealthConnectPhrUsageStats => "ATOM_HEALTH_CONNECT_PHR_USAGE_STATS",
6561            Self::AtomHealthConnectPhrStorageStats => {
6562                "ATOM_HEALTH_CONNECT_PHR_STORAGE_STATS"
6563            }
6564            Self::AtomHealthConnectRestrictedEcosystemStats => {
6565                "ATOM_HEALTH_CONNECT_RESTRICTED_ECOSYSTEM_STATS"
6566            }
6567            Self::AtomHealthConnectEcosystemStats => {
6568                "ATOM_HEALTH_CONNECT_ECOSYSTEM_STATS"
6569            }
6570            Self::AtomHdmiEarcStatusReported => "ATOM_HDMI_EARC_STATUS_REPORTED",
6571            Self::AtomHdmiSoundbarModeStatusReported => {
6572                "ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED"
6573            }
6574            Self::AtomHdmiPowerStateChangeOnActiveSourceLostToggled => {
6575                "ATOM_HDMI_POWER_STATE_CHANGE_ON_ACTIVE_SOURCE_LOST_TOGGLED"
6576            }
6577            Self::AtomBatteryHealth => "ATOM_BATTERY_HEALTH",
6578            Self::AtomBiometricUnenrolled => "ATOM_BIOMETRIC_UNENROLLED",
6579            Self::AtomBiometricEnumerated => "ATOM_BIOMETRIC_ENUMERATED",
6580            Self::AtomApplicationGrammaticalInflectionChanged => {
6581                "ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED"
6582            }
6583            Self::AtomSystemGrammaticalInflectionChanged => {
6584                "ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED"
6585            }
6586            Self::AtomFullScreenIntentLaunched => "ATOM_FULL_SCREEN_INTENT_LAUNCHED",
6587            Self::AtomBalAllowed => "ATOM_BAL_ALLOWED",
6588            Self::AtomInTaskActivityStarted => "ATOM_IN_TASK_ACTIVITY_STARTED",
6589            Self::AtomDeviceOrientationChanged => "ATOM_DEVICE_ORIENTATION_CHANGED",
6590            Self::AtomCachedAppsHighWatermark => "ATOM_CACHED_APPS_HIGH_WATERMARK",
6591            Self::AtomStylusPredictionMetricsReported => {
6592                "ATOM_STYLUS_PREDICTION_METRICS_REPORTED"
6593            }
6594            Self::AtomUserRiskEventReported => "ATOM_USER_RISK_EVENT_REPORTED",
6595            Self::AtomMediaProjectionStateChanged => {
6596                "ATOM_MEDIA_PROJECTION_STATE_CHANGED"
6597            }
6598            Self::AtomMediaProjectionTargetChanged => {
6599                "ATOM_MEDIA_PROJECTION_TARGET_CHANGED"
6600            }
6601            Self::AtomExcessiveBinderProxyCountReported => {
6602                "ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED"
6603            }
6604            Self::AtomProxyBytesTransferByFgBg => "ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG",
6605            Self::AtomMobileBytesTransferByProcState => {
6606                "ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE"
6607            }
6608            Self::AtomBiometricFrrNotification => "ATOM_BIOMETRIC_FRR_NOTIFICATION",
6609            Self::AtomSensitiveContentMediaProjectionSession => {
6610                "ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION"
6611            }
6612            Self::AtomSensitiveNotificationAppProtectionSession => {
6613                "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION"
6614            }
6615            Self::AtomSensitiveNotificationAppProtectionApplied => {
6616                "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED"
6617            }
6618            Self::AtomSensitiveNotificationRedaction => {
6619                "ATOM_SENSITIVE_NOTIFICATION_REDACTION"
6620            }
6621            Self::AtomSensitiveContentAppProtection => {
6622                "ATOM_SENSITIVE_CONTENT_APP_PROTECTION"
6623            }
6624            Self::AtomAppRestrictionStateChanged => "ATOM_APP_RESTRICTION_STATE_CHANGED",
6625            Self::AtomBatteryUsageStatsPerUid => "ATOM_BATTERY_USAGE_STATS_PER_UID",
6626            Self::AtomPostgcMemorySnapshot => "ATOM_POSTGC_MEMORY_SNAPSHOT",
6627            Self::AtomPowerSaveTempAllowlistChanged => {
6628                "ATOM_POWER_SAVE_TEMP_ALLOWLIST_CHANGED"
6629            }
6630            Self::AtomAppOpAccessTracked => "ATOM_APP_OP_ACCESS_TRACKED",
6631            Self::AtomContentOrFileUriEventReported => {
6632                "ATOM_CONTENT_OR_FILE_URI_EVENT_REPORTED"
6633            }
6634            Self::AtomDeviceIdleTempAllowlistUpdated => {
6635                "ATOM_DEVICE_IDLE_TEMP_ALLOWLIST_UPDATED"
6636            }
6637            Self::AtomAppOpNoteOpOrCheckOpBinderApiCalled => {
6638                "ATOM_APP_OP_NOTE_OP_OR_CHECK_OP_BINDER_API_CALLED"
6639            }
6640            Self::AtomFrameworkWakelockInfo => "ATOM_FRAMEWORK_WAKELOCK_INFO",
6641            Self::AtomJankFrameCountByWidgetReported => {
6642                "ATOM_JANK_FRAME_COUNT_BY_WIDGET_REPORTED"
6643            }
6644            Self::AtomIntentCreatorTokenAdded => "ATOM_INTENT_CREATOR_TOKEN_ADDED",
6645            Self::AtomNotificationChannelClassification => {
6646                "ATOM_NOTIFICATION_CHANNEL_CLASSIFICATION"
6647            }
6648            Self::AtomCameraStatusForCompatibilityChanged => {
6649                "ATOM_CAMERA_STATUS_FOR_COMPATIBILITY_CHANGED"
6650            }
6651            Self::AtomFederatedComputeApiCalled => "ATOM_FEDERATED_COMPUTE_API_CALLED",
6652            Self::AtomFederatedComputeTrainingEventReported => {
6653                "ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED"
6654            }
6655            Self::AtomExampleIteratorNextLatencyReported => {
6656                "ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED"
6657            }
6658            Self::AtomFederatedComputeTraceEventReported => {
6659                "ATOM_FEDERATED_COMPUTE_TRACE_EVENT_REPORTED"
6660            }
6661            Self::AtomExpressEventReported => "ATOM_EXPRESS_EVENT_REPORTED",
6662            Self::AtomExpressHistogramSampleReported => {
6663                "ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED"
6664            }
6665            Self::AtomExpressUidEventReported => "ATOM_EXPRESS_UID_EVENT_REPORTED",
6666            Self::AtomExpressUidHistogramSampleReported => {
6667                "ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED"
6668            }
6669            Self::AtomDreamSettingChanged => "ATOM_DREAM_SETTING_CHANGED",
6670            Self::AtomDreamSettingSnapshot => "ATOM_DREAM_SETTING_SNAPSHOT",
6671            Self::AtomDndStateChanged => "ATOM_DND_STATE_CHANGED",
6672            Self::AtomExternalDisplayStateChanged => {
6673                "ATOM_EXTERNAL_DISPLAY_STATE_CHANGED"
6674            }
6675            Self::AtomDisplayModeDirectorVoteChanged => {
6676                "ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED"
6677            }
6678            Self::AtomDevicePolicyManagementMode => "ATOM_DEVICE_POLICY_MANAGEMENT_MODE",
6679            Self::AtomDevicePolicyState => "ATOM_DEVICE_POLICY_STATE",
6680            Self::AtomDeviceLockCheckInRequestReported => {
6681                "ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED"
6682            }
6683            Self::AtomDeviceLockProvisioningCompleteReported => {
6684                "ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED"
6685            }
6686            Self::AtomDeviceLockKioskAppRequestReported => {
6687                "ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED"
6688            }
6689            Self::AtomDeviceLockCheckInRetryReported => {
6690                "ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED"
6691            }
6692            Self::AtomDeviceLockProvisionFailureReported => {
6693                "ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED"
6694            }
6695            Self::AtomDeviceLockLockUnlockDeviceFailureReported => {
6696                "ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED"
6697            }
6698            Self::AtomDesktopModeUiChanged => "ATOM_DESKTOP_MODE_UI_CHANGED",
6699            Self::AtomDesktopModeSessionTaskUpdate => {
6700                "ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE"
6701            }
6702            Self::AtomDesktopModeTaskSizeUpdated => "ATOM_DESKTOP_MODE_TASK_SIZE_UPDATED",
6703            Self::AtomCronetEngineCreated => "ATOM_CRONET_ENGINE_CREATED",
6704            Self::AtomCronetTrafficReported => "ATOM_CRONET_TRAFFIC_REPORTED",
6705            Self::AtomCronetEngineBuilderInitialized => {
6706                "ATOM_CRONET_ENGINE_BUILDER_INITIALIZED"
6707            }
6708            Self::AtomCronetHttpFlagsInitialized => "ATOM_CRONET_HTTP_FLAGS_INITIALIZED",
6709            Self::AtomCronetInitialized => "ATOM_CRONET_INITIALIZED",
6710            Self::AtomCredentialManagerApiCalled => "ATOM_CREDENTIAL_MANAGER_API_CALLED",
6711            Self::AtomCredentialManagerInitPhaseReported => {
6712                "ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED"
6713            }
6714            Self::AtomCredentialManagerCandidatePhaseReported => {
6715                "ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED"
6716            }
6717            Self::AtomCredentialManagerFinalPhaseReported => {
6718                "ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED"
6719            }
6720            Self::AtomCredentialManagerTotalReported => {
6721                "ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED"
6722            }
6723            Self::AtomCredentialManagerFinalnouidReported => {
6724                "ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED"
6725            }
6726            Self::AtomCredentialManagerGetReported => {
6727                "ATOM_CREDENTIAL_MANAGER_GET_REPORTED"
6728            }
6729            Self::AtomCredentialManagerAuthClickReported => {
6730                "ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED"
6731            }
6732            Self::AtomCredentialManagerApiv2Called => {
6733                "ATOM_CREDENTIAL_MANAGER_APIV2_CALLED"
6734            }
6735            Self::AtomCpuPolicy => "ATOM_CPU_POLICY",
6736            Self::AtomVpnConnectionStateChanged => "ATOM_VPN_CONNECTION_STATE_CHANGED",
6737            Self::AtomVpnConnectionReported => "ATOM_VPN_CONNECTION_REPORTED",
6738            Self::AtomIpClientRaInfoReported => "ATOM_IP_CLIENT_RA_INFO_REPORTED",
6739            Self::AtomApfSessionInfoReported => "ATOM_APF_SESSION_INFO_REPORTED",
6740            Self::AtomCoreNetworkingTerribleErrorOccurred => {
6741                "ATOM_CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED"
6742            }
6743            Self::AtomNetworkStatsRecorderFileOperated => {
6744                "ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED"
6745            }
6746            Self::AtomDailyKeepaliveInfoReported => "ATOM_DAILY_KEEPALIVE_INFO_REPORTED",
6747            Self::AtomNetworkRequestStateChanged => "ATOM_NETWORK_REQUEST_STATE_CHANGED",
6748            Self::AtomTetheringActiveSessionsReported => {
6749                "ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED"
6750            }
6751            Self::AtomCertificateTransparencyLogListUpdateStateChanged => {
6752                "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_STATE_CHANGED"
6753            }
6754            Self::AtomHardwareRendererEvent => "ATOM_HARDWARE_RENDERER_EVENT",
6755            Self::AtomTextureViewEvent => "ATOM_TEXTURE_VIEW_EVENT",
6756            Self::AtomSurfaceControlEvent => "ATOM_SURFACE_CONTROL_EVENT",
6757            Self::AtomImageDecoded => "ATOM_IMAGE_DECODED",
6758            Self::AtomCertificateTransparencyLogListStateChanged => {
6759                "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_STATE_CHANGED"
6760            }
6761            Self::AtomConscryptServiceUsed => "ATOM_CONSCRYPT_SERVICE_USED",
6762            Self::AtomCertificateTransparencyVerificationReported => {
6763                "ATOM_CERTIFICATE_TRANSPARENCY_VERIFICATION_REPORTED"
6764            }
6765            Self::AtomCameraFeatureCombinationQueryEvent => {
6766                "ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT"
6767            }
6768            Self::AtomBroadcastSent => "ATOM_BROADCAST_SENT",
6769            Self::AtomBluetoothHashedDeviceNameReported => {
6770                "ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED"
6771            }
6772            Self::AtomBluetoothL2capCocClientConnection => {
6773                "ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION"
6774            }
6775            Self::AtomBluetoothL2capCocServerConnection => {
6776                "ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION"
6777            }
6778            Self::AtomBluetoothLeSessionConnected => {
6779                "ATOM_BLUETOOTH_LE_SESSION_CONNECTED"
6780            }
6781            Self::AtomRestrictedBluetoothDeviceNameReported => {
6782                "ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED"
6783            }
6784            Self::AtomBluetoothProfileConnectionAttempted => {
6785                "ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED"
6786            }
6787            Self::AtomBluetoothContentProfileErrorReported => {
6788                "ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED"
6789            }
6790            Self::AtomBluetoothRfcommConnectionAttempted => {
6791                "ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED"
6792            }
6793            Self::AtomRemoteDeviceInformationWithMetricId => {
6794                "ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID"
6795            }
6796            Self::AtomLeAppScanStateChanged => "ATOM_LE_APP_SCAN_STATE_CHANGED",
6797            Self::AtomLeRadioScanStopped => "ATOM_LE_RADIO_SCAN_STOPPED",
6798            Self::AtomLeScanResultReceived => "ATOM_LE_SCAN_RESULT_RECEIVED",
6799            Self::AtomLeScanAbused => "ATOM_LE_SCAN_ABUSED",
6800            Self::AtomLeAdvStateChanged => "ATOM_LE_ADV_STATE_CHANGED",
6801            Self::AtomLeAdvErrorReported => "ATOM_LE_ADV_ERROR_REPORTED",
6802            Self::AtomA2dpSessionReported => "ATOM_A2DP_SESSION_REPORTED",
6803            Self::AtomBluetoothCrossLayerEventReported => {
6804                "ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED"
6805            }
6806            Self::AtomBroadcastAudioSessionReported => {
6807                "ATOM_BROADCAST_AUDIO_SESSION_REPORTED"
6808            }
6809            Self::AtomBroadcastAudioSyncReported => "ATOM_BROADCAST_AUDIO_SYNC_REPORTED",
6810            Self::AtomBluetoothRfcommConnectionReportedAtClose => {
6811                "ATOM_BLUETOOTH_RFCOMM_CONNECTION_REPORTED_AT_CLOSE"
6812            }
6813            Self::AtomBluetoothLeConnection => "ATOM_BLUETOOTH_LE_CONNECTION",
6814            Self::AtomHearingDeviceActiveEventReported => {
6815                "ATOM_HEARING_DEVICE_ACTIVE_EVENT_REPORTED"
6816            }
6817            Self::AtomBackportedFixStatusReported => {
6818                "ATOM_BACKPORTED_FIX_STATUS_REPORTED"
6819            }
6820            Self::AtomPluginInitialized => "ATOM_PLUGIN_INITIALIZED",
6821            Self::AtomCarSystemUiDataSubscriptionEventReported => {
6822                "ATOM_CAR_SYSTEM_UI_DATA_SUBSCRIPTION_EVENT_REPORTED"
6823            }
6824            Self::AtomCarSettingsDataSubscriptionEventReported => {
6825                "ATOM_CAR_SETTINGS_DATA_SUBSCRIPTION_EVENT_REPORTED"
6826            }
6827            Self::AtomCarQcLibEventReported => "ATOM_CAR_QC_LIB_EVENT_REPORTED",
6828            Self::AtomCarWakeupFromSuspendReported => {
6829                "ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED"
6830            }
6831            Self::AtomCarRecentsEventReported => "ATOM_CAR_RECENTS_EVENT_REPORTED",
6832            Self::AtomCarCalmModeEventReported => "ATOM_CAR_CALM_MODE_EVENT_REPORTED",
6833            Self::AtomAutofillUiEventReported => "ATOM_AUTOFILL_UI_EVENT_REPORTED",
6834            Self::AtomAutofillFillRequestReported => {
6835                "ATOM_AUTOFILL_FILL_REQUEST_REPORTED"
6836            }
6837            Self::AtomAutofillFillResponseReported => {
6838                "ATOM_AUTOFILL_FILL_RESPONSE_REPORTED"
6839            }
6840            Self::AtomAutofillSaveEventReported => "ATOM_AUTOFILL_SAVE_EVENT_REPORTED",
6841            Self::AtomAutofillSessionCommitted => "ATOM_AUTOFILL_SESSION_COMMITTED",
6842            Self::AtomAutofillFieldClassificationEventReported => {
6843                "ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED"
6844            }
6845            Self::AtomOdrefreshReported => "ATOM_ODREFRESH_REPORTED",
6846            Self::AtomOdsignReported => "ATOM_ODSIGN_REPORTED",
6847            Self::AtomBackgroundDexoptJobEnded => "ATOM_BACKGROUND_DEXOPT_JOB_ENDED",
6848            Self::AtomPrerebootDexoptJobEnded => "ATOM_PREREBOOT_DEXOPT_JOB_ENDED",
6849            Self::AtomArtDatumReported => "ATOM_ART_DATUM_REPORTED",
6850            Self::AtomArtDeviceDatumReported => "ATOM_ART_DEVICE_DATUM_REPORTED",
6851            Self::AtomArtDatumDeltaReported => "ATOM_ART_DATUM_DELTA_REPORTED",
6852            Self::AtomArtDex2oatReported => "ATOM_ART_DEX2OAT_REPORTED",
6853            Self::AtomArtDeviceStatus => "ATOM_ART_DEVICE_STATUS",
6854            Self::AtomAppSearchSetSchemaStatsReported => {
6855                "ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED"
6856            }
6857            Self::AtomAppSearchSchemaMigrationStatsReported => {
6858                "ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED"
6859            }
6860            Self::AtomAppSearchUsageSearchIntentStatsReported => {
6861                "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED"
6862            }
6863            Self::AtomAppSearchUsageSearchIntentRawQueryStatsReported => {
6864                "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED"
6865            }
6866            Self::AtomAppSearchAppsIndexerStatsReported => {
6867                "ATOM_APP_SEARCH_APPS_INDEXER_STATS_REPORTED"
6868            }
6869            Self::AtomAppFunctionsRequestReported => {
6870                "ATOM_APP_FUNCTIONS_REQUEST_REPORTED"
6871            }
6872            Self::AtomApexInstallationRequested => "ATOM_APEX_INSTALLATION_REQUESTED",
6873            Self::AtomApexInstallationStaged => "ATOM_APEX_INSTALLATION_STAGED",
6874            Self::AtomApexInstallationEnded => "ATOM_APEX_INSTALLATION_ENDED",
6875            Self::AtomAiWallpapersButtonPressed => "ATOM_AI_WALLPAPERS_BUTTON_PRESSED",
6876            Self::AtomAiWallpapersTemplateSelected => {
6877                "ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED"
6878            }
6879            Self::AtomAiWallpapersTermSelected => "ATOM_AI_WALLPAPERS_TERM_SELECTED",
6880            Self::AtomAiWallpapersWallpaperSet => "ATOM_AI_WALLPAPERS_WALLPAPER_SET",
6881            Self::AtomAiWallpapersSessionSummary => "ATOM_AI_WALLPAPERS_SESSION_SUMMARY",
6882            Self::AtomJsscriptengineLatencyReported => {
6883                "ATOM_JSSCRIPTENGINE_LATENCY_REPORTED"
6884            }
6885            Self::AtomAdServicesApiCalled => "ATOM_AD_SERVICES_API_CALLED",
6886            Self::AtomAdServicesMesurementReportsUploaded => {
6887                "ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED"
6888            }
6889            Self::AtomMobileDataDownloadFileGroupStatusReported => {
6890                "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED"
6891            }
6892            Self::AtomMobileDataDownloadDownloadResultReported => {
6893                "ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED"
6894            }
6895            Self::AtomAdServicesSettingsUsageReported => {
6896                "ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED"
6897            }
6898            Self::AtomBackgroundFetchProcessReported => {
6899                "ATOM_BACKGROUND_FETCH_PROCESS_REPORTED"
6900            }
6901            Self::AtomUpdateCustomAudienceProcessReported => {
6902                "ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED"
6903            }
6904            Self::AtomRunAdBiddingProcessReported => {
6905                "ATOM_RUN_AD_BIDDING_PROCESS_REPORTED"
6906            }
6907            Self::AtomRunAdScoringProcessReported => {
6908                "ATOM_RUN_AD_SCORING_PROCESS_REPORTED"
6909            }
6910            Self::AtomRunAdSelectionProcessReported => {
6911                "ATOM_RUN_AD_SELECTION_PROCESS_REPORTED"
6912            }
6913            Self::AtomRunAdBiddingPerCaProcessReported => {
6914                "ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED"
6915            }
6916            Self::AtomMobileDataDownloadFileGroupStorageStatsReported => {
6917                "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED"
6918            }
6919            Self::AtomAdServicesMeasurementRegistrations => {
6920                "ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS"
6921            }
6922            Self::AtomAdServicesGetTopicsReported => {
6923                "ATOM_AD_SERVICES_GET_TOPICS_REPORTED"
6924            }
6925            Self::AtomAdServicesEpochComputationGetTopTopicsReported => {
6926                "ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED"
6927            }
6928            Self::AtomAdServicesEpochComputationClassifierReported => {
6929                "ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED"
6930            }
6931            Self::AtomAdServicesBackCompatGetTopicsReported => {
6932                "ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED"
6933            }
6934            Self::AtomAdServicesBackCompatEpochComputationClassifierReported => {
6935                "ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED"
6936            }
6937            Self::AtomAdServicesMeasurementDebugKeys => {
6938                "ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS"
6939            }
6940            Self::AtomAdServicesErrorReported => "ATOM_AD_SERVICES_ERROR_REPORTED",
6941            Self::AtomAdServicesBackgroundJobsExecutionReported => {
6942                "ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED"
6943            }
6944            Self::AtomAdServicesMeasurementDelayedSourceRegistration => {
6945                "ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION"
6946            }
6947            Self::AtomAdServicesMeasurementAttribution => {
6948                "ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION"
6949            }
6950            Self::AtomAdServicesMeasurementJobs => "ATOM_AD_SERVICES_MEASUREMENT_JOBS",
6951            Self::AtomAdServicesMeasurementWipeout => {
6952                "ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT"
6953            }
6954            Self::AtomAdServicesMeasurementAdIdMatchForDebugKeys => {
6955                "ATOM_AD_SERVICES_MEASUREMENT_AD_ID_MATCH_FOR_DEBUG_KEYS"
6956            }
6957            Self::AtomAdServicesEnrollmentDataStored => {
6958                "ATOM_AD_SERVICES_ENROLLMENT_DATA_STORED"
6959            }
6960            Self::AtomAdServicesEnrollmentFileDownloaded => {
6961                "ATOM_AD_SERVICES_ENROLLMENT_FILE_DOWNLOADED"
6962            }
6963            Self::AtomAdServicesEnrollmentMatched => {
6964                "ATOM_AD_SERVICES_ENROLLMENT_MATCHED"
6965            }
6966            Self::AtomAdServicesConsentMigrated => "ATOM_AD_SERVICES_CONSENT_MIGRATED",
6967            Self::AtomAdServicesEnrollmentFailed => "ATOM_AD_SERVICES_ENROLLMENT_FAILED",
6968            Self::AtomAdServicesMeasurementClickVerification => {
6969                "ATOM_AD_SERVICES_MEASUREMENT_CLICK_VERIFICATION"
6970            }
6971            Self::AtomAdServicesEncryptionKeyFetched => {
6972                "ATOM_AD_SERVICES_ENCRYPTION_KEY_FETCHED"
6973            }
6974            Self::AtomAdServicesEncryptionKeyDbTransactionEnded => {
6975                "ATOM_AD_SERVICES_ENCRYPTION_KEY_DB_TRANSACTION_ENDED"
6976            }
6977            Self::AtomDestinationRegisteredBeacons => {
6978                "ATOM_DESTINATION_REGISTERED_BEACONS"
6979            }
6980            Self::AtomReportInteractionApiCalled => "ATOM_REPORT_INTERACTION_API_CALLED",
6981            Self::AtomInteractionReportingTableCleared => {
6982                "ATOM_INTERACTION_REPORTING_TABLE_CLEARED"
6983            }
6984            Self::AtomAppManifestConfigHelperCalled => {
6985                "ATOM_APP_MANIFEST_CONFIG_HELPER_CALLED"
6986            }
6987            Self::AtomAdFilteringProcessJoinCaReported => {
6988                "ATOM_AD_FILTERING_PROCESS_JOIN_CA_REPORTED"
6989            }
6990            Self::AtomAdFilteringProcessAdSelectionReported => {
6991                "ATOM_AD_FILTERING_PROCESS_AD_SELECTION_REPORTED"
6992            }
6993            Self::AtomAdCounterHistogramUpdaterReported => {
6994                "ATOM_AD_COUNTER_HISTOGRAM_UPDATER_REPORTED"
6995            }
6996            Self::AtomSignatureVerification => "ATOM_SIGNATURE_VERIFICATION",
6997            Self::AtomKAnonImmediateSignJoinStatusReported => {
6998                "ATOM_K_ANON_IMMEDIATE_SIGN_JOIN_STATUS_REPORTED"
6999            }
7000            Self::AtomKAnonBackgroundJobStatusReported => {
7001                "ATOM_K_ANON_BACKGROUND_JOB_STATUS_REPORTED"
7002            }
7003            Self::AtomKAnonInitializeStatusReported => {
7004                "ATOM_K_ANON_INITIALIZE_STATUS_REPORTED"
7005            }
7006            Self::AtomKAnonSignStatusReported => "ATOM_K_ANON_SIGN_STATUS_REPORTED",
7007            Self::AtomKAnonJoinStatusReported => "ATOM_K_ANON_JOIN_STATUS_REPORTED",
7008            Self::AtomKAnonKeyAttestationStatusReported => {
7009                "ATOM_K_ANON_KEY_ATTESTATION_STATUS_REPORTED"
7010            }
7011            Self::AtomGetAdSelectionDataApiCalled => {
7012                "ATOM_GET_AD_SELECTION_DATA_API_CALLED"
7013            }
7014            Self::AtomGetAdSelectionDataBuyerInputGenerated => {
7015                "ATOM_GET_AD_SELECTION_DATA_BUYER_INPUT_GENERATED"
7016            }
7017            Self::AtomBackgroundJobSchedulingReported => {
7018                "ATOM_BACKGROUND_JOB_SCHEDULING_REPORTED"
7019            }
7020            Self::AtomTopicsEncryptionEpochComputationReported => {
7021                "ATOM_TOPICS_ENCRYPTION_EPOCH_COMPUTATION_REPORTED"
7022            }
7023            Self::AtomTopicsEncryptionGetTopicsReported => {
7024                "ATOM_TOPICS_ENCRYPTION_GET_TOPICS_REPORTED"
7025            }
7026            Self::AtomAdservicesShellCommandCalled => {
7027                "ATOM_ADSERVICES_SHELL_COMMAND_CALLED"
7028            }
7029            Self::AtomUpdateSignalsApiCalled => "ATOM_UPDATE_SIGNALS_API_CALLED",
7030            Self::AtomEncodingJobRun => "ATOM_ENCODING_JOB_RUN",
7031            Self::AtomEncodingJsFetch => "ATOM_ENCODING_JS_FETCH",
7032            Self::AtomEncodingJsExecution => "ATOM_ENCODING_JS_EXECUTION",
7033            Self::AtomPersistAdSelectionResultCalled => {
7034                "ATOM_PERSIST_AD_SELECTION_RESULT_CALLED"
7035            }
7036            Self::AtomServerAuctionKeyFetchCalled => {
7037                "ATOM_SERVER_AUCTION_KEY_FETCH_CALLED"
7038            }
7039            Self::AtomServerAuctionBackgroundKeyFetchEnabled => {
7040                "ATOM_SERVER_AUCTION_BACKGROUND_KEY_FETCH_ENABLED"
7041            }
7042            Self::AtomAdServicesMeasurementProcessOdpRegistration => {
7043                "ATOM_AD_SERVICES_MEASUREMENT_PROCESS_ODP_REGISTRATION"
7044            }
7045            Self::AtomAdServicesMeasurementNotifyRegistrationToOdp => {
7046                "ATOM_AD_SERVICES_MEASUREMENT_NOTIFY_REGISTRATION_TO_ODP"
7047            }
7048            Self::AtomSelectAdsFromOutcomesApiCalled => {
7049                "ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED"
7050            }
7051            Self::AtomReportImpressionApiCalled => "ATOM_REPORT_IMPRESSION_API_CALLED",
7052            Self::AtomAdServicesEnrollmentTransactionStats => {
7053                "ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS"
7054            }
7055            Self::AtomAdServicesCobaltLoggerEventReported => {
7056                "ATOM_AD_SERVICES_COBALT_LOGGER_EVENT_REPORTED"
7057            }
7058            Self::AtomAdServicesCobaltPeriodicJobEventReported => {
7059                "ATOM_AD_SERVICES_COBALT_PERIODIC_JOB_EVENT_REPORTED"
7060            }
7061            Self::AtomUpdateSignalsProcessReported => {
7062                "ATOM_UPDATE_SIGNALS_PROCESS_REPORTED"
7063            }
7064            Self::AtomTopicsScheduleEpochJobSettingReported => {
7065                "ATOM_TOPICS_SCHEDULE_EPOCH_JOB_SETTING_REPORTED"
7066            }
7067            Self::AtomScheduledCustomAudienceUpdateScheduleAttempted => {
7068                "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_SCHEDULE_ATTEMPTED"
7069            }
7070            Self::AtomScheduledCustomAudienceUpdatePerformed => {
7071                "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_PERFORMED"
7072            }
7073            Self::AtomScheduledCustomAudienceUpdatePerformedAttemptedFailureReported => {
7074                "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_PERFORMED_ATTEMPTED_FAILURE_REPORTED"
7075            }
7076            Self::AtomScheduledCustomAudienceUpdateBackgroundJobRan => {
7077                "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_BACKGROUND_JOB_RAN"
7078            }
7079            Self::AtomThermalStatusCalled => "ATOM_THERMAL_STATUS_CALLED",
7080            Self::AtomThermalHeadroomCalled => "ATOM_THERMAL_HEADROOM_CALLED",
7081            Self::AtomThermalHeadroomThresholdsCalled => {
7082                "ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED"
7083            }
7084            Self::AtomAdpfHintSessionTidCleanup => "ATOM_ADPF_HINT_SESSION_TID_CLEANUP",
7085            Self::AtomThermalHeadroomThresholds => "ATOM_THERMAL_HEADROOM_THRESHOLDS",
7086            Self::AtomAdpfSessionSnapshot => "ATOM_ADPF_SESSION_SNAPSHOT",
7087            Self::AtomAdaptiveAuthUnlockAfterLockReported => {
7088                "ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED"
7089            }
7090            Self::AtomAccountManagerEvent => "ATOM_ACCOUNT_MANAGER_EVENT",
7091            Self::AtomAccessibilityCheckResultReported => {
7092                "ATOM_ACCESSIBILITY_CHECK_RESULT_REPORTED"
7093            }
7094        }
7095    }
7096    /// Creates an enum from field names used in the ProtoBuf definition.
7097    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7098        match value {
7099            "ATOM_UNSPECIFIED" => Some(Self::AtomUnspecified),
7100            "ATOM_BLE_SCAN_STATE_CHANGED" => Some(Self::AtomBleScanStateChanged),
7101            "ATOM_PROCESS_STATE_CHANGED" => Some(Self::AtomProcessStateChanged),
7102            "ATOM_BLE_SCAN_RESULT_RECEIVED" => Some(Self::AtomBleScanResultReceived),
7103            "ATOM_SENSOR_STATE_CHANGED" => Some(Self::AtomSensorStateChanged),
7104            "ATOM_GPS_SCAN_STATE_CHANGED" => Some(Self::AtomGpsScanStateChanged),
7105            "ATOM_SYNC_STATE_CHANGED" => Some(Self::AtomSyncStateChanged),
7106            "ATOM_SCHEDULED_JOB_STATE_CHANGED" => {
7107                Some(Self::AtomScheduledJobStateChanged)
7108            }
7109            "ATOM_SCREEN_BRIGHTNESS_CHANGED" => Some(Self::AtomScreenBrightnessChanged),
7110            "ATOM_WAKELOCK_STATE_CHANGED" => Some(Self::AtomWakelockStateChanged),
7111            "ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED" => {
7112                Some(Self::AtomLongPartialWakelockStateChanged)
7113            }
7114            "ATOM_MOBILE_RADIO_POWER_STATE_CHANGED" => {
7115                Some(Self::AtomMobileRadioPowerStateChanged)
7116            }
7117            "ATOM_WIFI_RADIO_POWER_STATE_CHANGED" => {
7118                Some(Self::AtomWifiRadioPowerStateChanged)
7119            }
7120            "ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED" => {
7121                Some(Self::AtomActivityManagerSleepStateChanged)
7122            }
7123            "ATOM_MEMORY_FACTOR_STATE_CHANGED" => {
7124                Some(Self::AtomMemoryFactorStateChanged)
7125            }
7126            "ATOM_EXCESSIVE_CPU_USAGE_REPORTED" => {
7127                Some(Self::AtomExcessiveCpuUsageReported)
7128            }
7129            "ATOM_CACHED_KILL_REPORTED" => Some(Self::AtomCachedKillReported),
7130            "ATOM_PROCESS_MEMORY_STAT_REPORTED" => {
7131                Some(Self::AtomProcessMemoryStatReported)
7132            }
7133            "ATOM_LAUNCHER_EVENT" => Some(Self::AtomLauncherEvent),
7134            "ATOM_BATTERY_SAVER_MODE_STATE_CHANGED" => {
7135                Some(Self::AtomBatterySaverModeStateChanged)
7136            }
7137            "ATOM_DEVICE_IDLE_MODE_STATE_CHANGED" => {
7138                Some(Self::AtomDeviceIdleModeStateChanged)
7139            }
7140            "ATOM_DEVICE_IDLING_MODE_STATE_CHANGED" => {
7141                Some(Self::AtomDeviceIdlingModeStateChanged)
7142            }
7143            "ATOM_AUDIO_STATE_CHANGED" => Some(Self::AtomAudioStateChanged),
7144            "ATOM_MEDIA_CODEC_STATE_CHANGED" => Some(Self::AtomMediaCodecStateChanged),
7145            "ATOM_CAMERA_STATE_CHANGED" => Some(Self::AtomCameraStateChanged),
7146            "ATOM_FLASHLIGHT_STATE_CHANGED" => Some(Self::AtomFlashlightStateChanged),
7147            "ATOM_UID_PROCESS_STATE_CHANGED" => Some(Self::AtomUidProcessStateChanged),
7148            "ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED" => {
7149                Some(Self::AtomProcessLifeCycleStateChanged)
7150            }
7151            "ATOM_SCREEN_STATE_CHANGED" => Some(Self::AtomScreenStateChanged),
7152            "ATOM_BATTERY_LEVEL_CHANGED" => Some(Self::AtomBatteryLevelChanged),
7153            "ATOM_CHARGING_STATE_CHANGED" => Some(Self::AtomChargingStateChanged),
7154            "ATOM_PLUGGED_STATE_CHANGED" => Some(Self::AtomPluggedStateChanged),
7155            "ATOM_INTERACTIVE_STATE_CHANGED" => Some(Self::AtomInteractiveStateChanged),
7156            "ATOM_TOUCH_EVENT_REPORTED" => Some(Self::AtomTouchEventReported),
7157            "ATOM_WAKEUP_ALARM_OCCURRED" => Some(Self::AtomWakeupAlarmOccurred),
7158            "ATOM_KERNEL_WAKEUP_REPORTED" => Some(Self::AtomKernelWakeupReported),
7159            "ATOM_WIFI_LOCK_STATE_CHANGED" => Some(Self::AtomWifiLockStateChanged),
7160            "ATOM_WIFI_SIGNAL_STRENGTH_CHANGED" => {
7161                Some(Self::AtomWifiSignalStrengthChanged)
7162            }
7163            "ATOM_WIFI_SCAN_STATE_CHANGED" => Some(Self::AtomWifiScanStateChanged),
7164            "ATOM_PHONE_SIGNAL_STRENGTH_CHANGED" => {
7165                Some(Self::AtomPhoneSignalStrengthChanged)
7166            }
7167            "ATOM_SETTING_CHANGED" => Some(Self::AtomSettingChanged),
7168            "ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED" => {
7169                Some(Self::AtomActivityForegroundStateChanged)
7170            }
7171            "ATOM_ISOLATED_UID_CHANGED" => Some(Self::AtomIsolatedUidChanged),
7172            "ATOM_PACKET_WAKEUP_OCCURRED" => Some(Self::AtomPacketWakeupOccurred),
7173            "ATOM_WALL_CLOCK_TIME_SHIFTED" => Some(Self::AtomWallClockTimeShifted),
7174            "ATOM_ANOMALY_DETECTED" => Some(Self::AtomAnomalyDetected),
7175            "ATOM_APP_BREADCRUMB_REPORTED" => Some(Self::AtomAppBreadcrumbReported),
7176            "ATOM_APP_START_OCCURRED" => Some(Self::AtomAppStartOccurred),
7177            "ATOM_APP_START_CANCELED" => Some(Self::AtomAppStartCanceled),
7178            "ATOM_APP_START_FULLY_DRAWN" => Some(Self::AtomAppStartFullyDrawn),
7179            "ATOM_LMK_KILL_OCCURRED" => Some(Self::AtomLmkKillOccurred),
7180            "ATOM_PICTURE_IN_PICTURE_STATE_CHANGED" => {
7181                Some(Self::AtomPictureInPictureStateChanged)
7182            }
7183            "ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED" => {
7184                Some(Self::AtomWifiMulticastLockStateChanged)
7185            }
7186            "ATOM_APP_START_MEMORY_STATE_CAPTURED" => {
7187                Some(Self::AtomAppStartMemoryStateCaptured)
7188            }
7189            "ATOM_SHUTDOWN_SEQUENCE_REPORTED" => Some(Self::AtomShutdownSequenceReported),
7190            "ATOM_BOOT_SEQUENCE_REPORTED" => Some(Self::AtomBootSequenceReported),
7191            "ATOM_OVERLAY_STATE_CHANGED" => Some(Self::AtomOverlayStateChanged),
7192            "ATOM_FOREGROUND_SERVICE_STATE_CHANGED" => {
7193                Some(Self::AtomForegroundServiceStateChanged)
7194            }
7195            "ATOM_CALL_STATE_CHANGED" => Some(Self::AtomCallStateChanged),
7196            "ATOM_KEYGUARD_STATE_CHANGED" => Some(Self::AtomKeyguardStateChanged),
7197            "ATOM_KEYGUARD_BOUNCER_STATE_CHANGED" => {
7198                Some(Self::AtomKeyguardBouncerStateChanged)
7199            }
7200            "ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED" => {
7201                Some(Self::AtomKeyguardBouncerPasswordEntered)
7202            }
7203            "ATOM_APP_DIED" => Some(Self::AtomAppDied),
7204            "ATOM_RESOURCE_CONFIGURATION_CHANGED" => {
7205                Some(Self::AtomResourceConfigurationChanged)
7206            }
7207            "ATOM_BLUETOOTH_ENABLED_STATE_CHANGED" => {
7208                Some(Self::AtomBluetoothEnabledStateChanged)
7209            }
7210            "ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED" => {
7211                Some(Self::AtomBluetoothConnectionStateChanged)
7212            }
7213            "ATOM_GPS_SIGNAL_QUALITY_CHANGED" => Some(Self::AtomGpsSignalQualityChanged),
7214            "ATOM_USB_CONNECTOR_STATE_CHANGED" => {
7215                Some(Self::AtomUsbConnectorStateChanged)
7216            }
7217            "ATOM_SPEAKER_IMPEDANCE_REPORTED" => Some(Self::AtomSpeakerImpedanceReported),
7218            "ATOM_HARDWARE_FAILED" => Some(Self::AtomHardwareFailed),
7219            "ATOM_PHYSICAL_DROP_DETECTED" => Some(Self::AtomPhysicalDropDetected),
7220            "ATOM_CHARGE_CYCLES_REPORTED" => Some(Self::AtomChargeCyclesReported),
7221            "ATOM_MOBILE_CONNECTION_STATE_CHANGED" => {
7222                Some(Self::AtomMobileConnectionStateChanged)
7223            }
7224            "ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED" => {
7225                Some(Self::AtomMobileRadioTechnologyChanged)
7226            }
7227            "ATOM_USB_DEVICE_ATTACHED" => Some(Self::AtomUsbDeviceAttached),
7228            "ATOM_APP_CRASH_OCCURRED" => Some(Self::AtomAppCrashOccurred),
7229            "ATOM_ANR_OCCURRED" => Some(Self::AtomAnrOccurred),
7230            "ATOM_WTF_OCCURRED" => Some(Self::AtomWtfOccurred),
7231            "ATOM_LOW_MEM_REPORTED" => Some(Self::AtomLowMemReported),
7232            "ATOM_GENERIC_ATOM" => Some(Self::AtomGenericAtom),
7233            "ATOM_VIBRATOR_STATE_CHANGED" => Some(Self::AtomVibratorStateChanged),
7234            "ATOM_DEFERRED_JOB_STATS_REPORTED" => {
7235                Some(Self::AtomDeferredJobStatsReported)
7236            }
7237            "ATOM_THERMAL_THROTTLING" => Some(Self::AtomThermalThrottling),
7238            "ATOM_BIOMETRIC_ACQUIRED" => Some(Self::AtomBiometricAcquired),
7239            "ATOM_BIOMETRIC_AUTHENTICATED" => Some(Self::AtomBiometricAuthenticated),
7240            "ATOM_BIOMETRIC_ERROR_OCCURRED" => Some(Self::AtomBiometricErrorOccurred),
7241            "ATOM_UI_EVENT_REPORTED" => Some(Self::AtomUiEventReported),
7242            "ATOM_BATTERY_HEALTH_SNAPSHOT" => Some(Self::AtomBatteryHealthSnapshot),
7243            "ATOM_SLOW_IO" => Some(Self::AtomSlowIo),
7244            "ATOM_BATTERY_CAUSED_SHUTDOWN" => Some(Self::AtomBatteryCausedShutdown),
7245            "ATOM_PHONE_SERVICE_STATE_CHANGED" => {
7246                Some(Self::AtomPhoneServiceStateChanged)
7247            }
7248            "ATOM_PHONE_STATE_CHANGED" => Some(Self::AtomPhoneStateChanged),
7249            "ATOM_USER_RESTRICTION_CHANGED" => Some(Self::AtomUserRestrictionChanged),
7250            "ATOM_SETTINGS_UI_CHANGED" => Some(Self::AtomSettingsUiChanged),
7251            "ATOM_CONNECTIVITY_STATE_CHANGED" => Some(Self::AtomConnectivityStateChanged),
7252            "ATOM_SERVICE_STATE_CHANGED" => Some(Self::AtomServiceStateChanged),
7253            "ATOM_SERVICE_LAUNCH_REPORTED" => Some(Self::AtomServiceLaunchReported),
7254            "ATOM_FLAG_FLIP_UPDATE_OCCURRED" => Some(Self::AtomFlagFlipUpdateOccurred),
7255            "ATOM_BINARY_PUSH_STATE_CHANGED" => Some(Self::AtomBinaryPushStateChanged),
7256            "ATOM_DEVICE_POLICY_EVENT" => Some(Self::AtomDevicePolicyEvent),
7257            "ATOM_DOCS_UI_FILE_OP_CANCELED" => Some(Self::AtomDocsUiFileOpCanceled),
7258            "ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED" => {
7259                Some(Self::AtomDocsUiFileOpCopyMoveModeReported)
7260            }
7261            "ATOM_DOCS_UI_FILE_OP_FAILURE" => Some(Self::AtomDocsUiFileOpFailure),
7262            "ATOM_DOCS_UI_PROVIDER_FILE_OP" => Some(Self::AtomDocsUiProviderFileOp),
7263            "ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST" => {
7264                Some(Self::AtomDocsUiInvalidScopedAccessRequest)
7265            }
7266            "ATOM_DOCS_UI_LAUNCH_REPORTED" => Some(Self::AtomDocsUiLaunchReported),
7267            "ATOM_DOCS_UI_ROOT_VISITED" => Some(Self::AtomDocsUiRootVisited),
7268            "ATOM_DOCS_UI_STARTUP_MS" => Some(Self::AtomDocsUiStartupMs),
7269            "ATOM_DOCS_UI_USER_ACTION_REPORTED" => {
7270                Some(Self::AtomDocsUiUserActionReported)
7271            }
7272            "ATOM_WIFI_ENABLED_STATE_CHANGED" => Some(Self::AtomWifiEnabledStateChanged),
7273            "ATOM_WIFI_RUNNING_STATE_CHANGED" => Some(Self::AtomWifiRunningStateChanged),
7274            "ATOM_APP_COMPACTED" => Some(Self::AtomAppCompacted),
7275            "ATOM_NETWORK_DNS_EVENT_REPORTED" => Some(Self::AtomNetworkDnsEventReported),
7276            "ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED" => {
7277                Some(Self::AtomDocsUiPickerLaunchedFromReported)
7278            }
7279            "ATOM_DOCS_UI_PICK_RESULT_REPORTED" => {
7280                Some(Self::AtomDocsUiPickResultReported)
7281            }
7282            "ATOM_DOCS_UI_SEARCH_MODE_REPORTED" => {
7283                Some(Self::AtomDocsUiSearchModeReported)
7284            }
7285            "ATOM_DOCS_UI_SEARCH_TYPE_REPORTED" => {
7286                Some(Self::AtomDocsUiSearchTypeReported)
7287            }
7288            "ATOM_DATA_STALL_EVENT" => Some(Self::AtomDataStallEvent),
7289            "ATOM_RESCUE_PARTY_RESET_REPORTED" => {
7290                Some(Self::AtomRescuePartyResetReported)
7291            }
7292            "ATOM_SIGNED_CONFIG_REPORTED" => Some(Self::AtomSignedConfigReported),
7293            "ATOM_GNSS_NI_EVENT_REPORTED" => Some(Self::AtomGnssNiEventReported),
7294            "ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT" => {
7295                Some(Self::AtomBluetoothLinkLayerConnectionEvent)
7296            }
7297            "ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED" => {
7298                Some(Self::AtomBluetoothAclConnectionStateChanged)
7299            }
7300            "ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED" => {
7301                Some(Self::AtomBluetoothScoConnectionStateChanged)
7302            }
7303            "ATOM_APP_DOWNGRADED" => Some(Self::AtomAppDowngraded),
7304            "ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED" => {
7305                Some(Self::AtomAppOptimizedAfterDowngraded)
7306            }
7307            "ATOM_LOW_STORAGE_STATE_CHANGED" => Some(Self::AtomLowStorageStateChanged),
7308            "ATOM_GNSS_NFW_NOTIFICATION_REPORTED" => {
7309                Some(Self::AtomGnssNfwNotificationReported)
7310            }
7311            "ATOM_GNSS_CONFIGURATION_REPORTED" => {
7312                Some(Self::AtomGnssConfigurationReported)
7313            }
7314            "ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED" => {
7315                Some(Self::AtomUsbPortOverheatEventReported)
7316            }
7317            "ATOM_NFC_ERROR_OCCURRED" => Some(Self::AtomNfcErrorOccurred),
7318            "ATOM_NFC_STATE_CHANGED" => Some(Self::AtomNfcStateChanged),
7319            "ATOM_NFC_BEAM_OCCURRED" => Some(Self::AtomNfcBeamOccurred),
7320            "ATOM_NFC_CARDEMULATION_OCCURRED" => Some(Self::AtomNfcCardemulationOccurred),
7321            "ATOM_NFC_TAG_OCCURRED" => Some(Self::AtomNfcTagOccurred),
7322            "ATOM_NFC_HCE_TRANSACTION_OCCURRED" => {
7323                Some(Self::AtomNfcHceTransactionOccurred)
7324            }
7325            "ATOM_SE_STATE_CHANGED" => Some(Self::AtomSeStateChanged),
7326            "ATOM_SE_OMAPI_REPORTED" => Some(Self::AtomSeOmapiReported),
7327            "ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED" => {
7328                Some(Self::AtomBroadcastDispatchLatencyReported)
7329            }
7330            "ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED" => {
7331                Some(Self::AtomAttentionManagerServiceResultReported)
7332            }
7333            "ATOM_ADB_CONNECTION_CHANGED" => Some(Self::AtomAdbConnectionChanged),
7334            "ATOM_SPEECH_DSP_STAT_REPORTED" => Some(Self::AtomSpeechDspStatReported),
7335            "ATOM_USB_CONTAMINANT_REPORTED" => Some(Self::AtomUsbContaminantReported),
7336            "ATOM_WATCHDOG_ROLLBACK_OCCURRED" => Some(Self::AtomWatchdogRollbackOccurred),
7337            "ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED" => {
7338                Some(Self::AtomBiometricSystemHealthIssueDetected)
7339            }
7340            "ATOM_BUBBLE_UI_CHANGED" => Some(Self::AtomBubbleUiChanged),
7341            "ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED" => {
7342                Some(Self::AtomScheduledJobConstraintChanged)
7343            }
7344            "ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED" => {
7345                Some(Self::AtomBluetoothActiveDeviceChanged)
7346            }
7347            "ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED" => {
7348                Some(Self::AtomBluetoothA2dpPlaybackStateChanged)
7349            }
7350            "ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED" => {
7351                Some(Self::AtomBluetoothA2dpCodecConfigChanged)
7352            }
7353            "ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED" => {
7354                Some(Self::AtomBluetoothA2dpCodecCapabilityChanged)
7355            }
7356            "ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED" => {
7357                Some(Self::AtomBluetoothA2dpAudioUnderrunReported)
7358            }
7359            "ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED" => {
7360                Some(Self::AtomBluetoothA2dpAudioOverrunReported)
7361            }
7362            "ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED" => {
7363                Some(Self::AtomBluetoothDeviceRssiReported)
7364            }
7365            "ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED" => {
7366                Some(Self::AtomBluetoothDeviceFailedContactCounterReported)
7367            }
7368            "ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED" => {
7369                Some(Self::AtomBluetoothDeviceTxPowerLevelReported)
7370            }
7371            "ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED" => {
7372                Some(Self::AtomBluetoothHciTimeoutReported)
7373            }
7374            "ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED" => {
7375                Some(Self::AtomBluetoothQualityReportReported)
7376            }
7377            "ATOM_BLUETOOTH_DEVICE_INFO_REPORTED" => {
7378                Some(Self::AtomBluetoothDeviceInfoReported)
7379            }
7380            "ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED" => {
7381                Some(Self::AtomBluetoothRemoteVersionInfoReported)
7382            }
7383            "ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED" => {
7384                Some(Self::AtomBluetoothSdpAttributeReported)
7385            }
7386            "ATOM_BLUETOOTH_BOND_STATE_CHANGED" => {
7387                Some(Self::AtomBluetoothBondStateChanged)
7388            }
7389            "ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED" => {
7390                Some(Self::AtomBluetoothClassicPairingEventReported)
7391            }
7392            "ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED" => {
7393                Some(Self::AtomBluetoothSmpPairingEventReported)
7394            }
7395            "ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED" => {
7396                Some(Self::AtomScreenTimeoutExtensionReported)
7397            }
7398            "ATOM_PROCESS_START_TIME" => Some(Self::AtomProcessStartTime),
7399            "ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED" => {
7400                Some(Self::AtomPermissionGrantRequestResultReported)
7401            }
7402            "ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED" => {
7403                Some(Self::AtomBluetoothSocketConnectionStateChanged)
7404            }
7405            "ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED" => {
7406                Some(Self::AtomDeviceIdentifierAccessDenied)
7407            }
7408            "ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED" => {
7409                Some(Self::AtomBubbleDeveloperErrorReported)
7410            }
7411            "ATOM_ASSIST_GESTURE_STAGE_REPORTED" => {
7412                Some(Self::AtomAssistGestureStageReported)
7413            }
7414            "ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED" => {
7415                Some(Self::AtomAssistGestureFeedbackReported)
7416            }
7417            "ATOM_ASSIST_GESTURE_PROGRESS_REPORTED" => {
7418                Some(Self::AtomAssistGestureProgressReported)
7419            }
7420            "ATOM_TOUCH_GESTURE_CLASSIFIED" => Some(Self::AtomTouchGestureClassified),
7421            "ATOM_HIDDEN_API_USED" => Some(Self::AtomHiddenApiUsed),
7422            "ATOM_STYLE_UI_CHANGED" => Some(Self::AtomStyleUiChanged),
7423            "ATOM_PRIVACY_INDICATORS_INTERACTED" => {
7424                Some(Self::AtomPrivacyIndicatorsInteracted)
7425            }
7426            "ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED" => {
7427                Some(Self::AtomAppInstallOnExternalStorageReported)
7428            }
7429            "ATOM_NETWORK_STACK_REPORTED" => Some(Self::AtomNetworkStackReported),
7430            "ATOM_APP_MOVED_STORAGE_REPORTED" => Some(Self::AtomAppMovedStorageReported),
7431            "ATOM_BIOMETRIC_ENROLLED" => Some(Self::AtomBiometricEnrolled),
7432            "ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED" => {
7433                Some(Self::AtomSystemServerWatchdogOccurred)
7434            }
7435            "ATOM_TOMB_STONE_OCCURRED" => Some(Self::AtomTombStoneOccurred),
7436            "ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED" => {
7437                Some(Self::AtomBluetoothClassOfDeviceReported)
7438            }
7439            "ATOM_INTELLIGENCE_EVENT_REPORTED" => {
7440                Some(Self::AtomIntelligenceEventReported)
7441            }
7442            "ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED" => {
7443                Some(Self::AtomThermalThrottlingSeverityStateChanged)
7444            }
7445            "ATOM_ROLE_REQUEST_RESULT_REPORTED" => {
7446                Some(Self::AtomRoleRequestResultReported)
7447            }
7448            "ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED" => {
7449                Some(Self::AtomMediametricsAudiopolicyReported)
7450            }
7451            "ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED" => {
7452                Some(Self::AtomMediametricsAudiorecordReported)
7453            }
7454            "ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED" => {
7455                Some(Self::AtomMediametricsAudiothreadReported)
7456            }
7457            "ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED" => {
7458                Some(Self::AtomMediametricsAudiotrackReported)
7459            }
7460            "ATOM_MEDIAMETRICS_CODEC_REPORTED" => {
7461                Some(Self::AtomMediametricsCodecReported)
7462            }
7463            "ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED" => {
7464                Some(Self::AtomMediametricsDrmWidevineReported)
7465            }
7466            "ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED" => {
7467                Some(Self::AtomMediametricsExtractorReported)
7468            }
7469            "ATOM_MEDIAMETRICS_MEDIADRM_REPORTED" => {
7470                Some(Self::AtomMediametricsMediadrmReported)
7471            }
7472            "ATOM_MEDIAMETRICS_NUPLAYER_REPORTED" => {
7473                Some(Self::AtomMediametricsNuplayerReported)
7474            }
7475            "ATOM_MEDIAMETRICS_RECORDER_REPORTED" => {
7476                Some(Self::AtomMediametricsRecorderReported)
7477            }
7478            "ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED" => {
7479                Some(Self::AtomMediametricsDrmmanagerReported)
7480            }
7481            "ATOM_CAR_POWER_STATE_CHANGED" => Some(Self::AtomCarPowerStateChanged),
7482            "ATOM_GARAGE_MODE_INFO" => Some(Self::AtomGarageModeInfo),
7483            "ATOM_TEST_ATOM_REPORTED" => Some(Self::AtomTestAtomReported),
7484            "ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED" => {
7485                Some(Self::AtomContentCaptureCallerMismatchReported)
7486            }
7487            "ATOM_CONTENT_CAPTURE_SERVICE_EVENTS" => {
7488                Some(Self::AtomContentCaptureServiceEvents)
7489            }
7490            "ATOM_CONTENT_CAPTURE_SESSION_EVENTS" => {
7491                Some(Self::AtomContentCaptureSessionEvents)
7492            }
7493            "ATOM_CONTENT_CAPTURE_FLUSHED" => Some(Self::AtomContentCaptureFlushed),
7494            "ATOM_LOCATION_MANAGER_API_USAGE_REPORTED" => {
7495                Some(Self::AtomLocationManagerApiUsageReported)
7496            }
7497            "ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED" => {
7498                Some(Self::AtomReviewPermissionsFragmentResultReported)
7499            }
7500            "ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT" => {
7501                Some(Self::AtomRuntimePermissionsUpgradeResult)
7502            }
7503            "ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS" => {
7504                Some(Self::AtomGrantPermissionsActivityButtonActions)
7505            }
7506            "ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION" => {
7507                Some(Self::AtomLocationAccessCheckNotificationAction)
7508            }
7509            "ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED" => {
7510                Some(Self::AtomAppPermissionFragmentActionReported)
7511            }
7512            "ATOM_APP_PERMISSION_FRAGMENT_VIEWED" => {
7513                Some(Self::AtomAppPermissionFragmentViewed)
7514            }
7515            "ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED" => {
7516                Some(Self::AtomAppPermissionsFragmentViewed)
7517            }
7518            "ATOM_PERMISSION_APPS_FRAGMENT_VIEWED" => {
7519                Some(Self::AtomPermissionAppsFragmentViewed)
7520            }
7521            "ATOM_TEXT_SELECTION_EVENT" => Some(Self::AtomTextSelectionEvent),
7522            "ATOM_TEXT_LINKIFY_EVENT" => Some(Self::AtomTextLinkifyEvent),
7523            "ATOM_CONVERSATION_ACTIONS_EVENT" => Some(Self::AtomConversationActionsEvent),
7524            "ATOM_LANGUAGE_DETECTION_EVENT" => Some(Self::AtomLanguageDetectionEvent),
7525            "ATOM_EXCLUSION_RECT_STATE_CHANGED" => {
7526                Some(Self::AtomExclusionRectStateChanged)
7527            }
7528            "ATOM_BACK_GESTURE_REPORTED_REPORTED" => {
7529                Some(Self::AtomBackGestureReportedReported)
7530            }
7531            "ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED" => {
7532                Some(Self::AtomUpdateEngineUpdateAttemptReported)
7533            }
7534            "ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED" => {
7535                Some(Self::AtomUpdateEngineSuccessfulUpdateReported)
7536            }
7537            "ATOM_CAMERA_ACTION_EVENT" => Some(Self::AtomCameraActionEvent),
7538            "ATOM_APP_COMPATIBILITY_CHANGE_REPORTED" => {
7539                Some(Self::AtomAppCompatibilityChangeReported)
7540            }
7541            "ATOM_PERFETTO_UPLOADED" => Some(Self::AtomPerfettoUploaded),
7542            "ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED" => {
7543                Some(Self::AtomVmsClientConnectionStateChanged)
7544            }
7545            "ATOM_MEDIA_PROVIDER_SCAN_OCCURRED" => {
7546                Some(Self::AtomMediaProviderScanOccurred)
7547            }
7548            "ATOM_MEDIA_CONTENT_DELETED" => Some(Self::AtomMediaContentDeleted),
7549            "ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED" => {
7550                Some(Self::AtomMediaProviderPermissionRequested)
7551            }
7552            "ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED" => {
7553                Some(Self::AtomMediaProviderSchemaChanged)
7554            }
7555            "ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED" => {
7556                Some(Self::AtomMediaProviderIdleMaintenanceFinished)
7557            }
7558            "ATOM_REBOOT_ESCROW_RECOVERY_REPORTED" => {
7559                Some(Self::AtomRebootEscrowRecoveryReported)
7560            }
7561            "ATOM_BOOT_TIME_EVENT_DURATION_REPORTED" => {
7562                Some(Self::AtomBootTimeEventDurationReported)
7563            }
7564            "ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED" => {
7565                Some(Self::AtomBootTimeEventElapsedTimeReported)
7566            }
7567            "ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED" => {
7568                Some(Self::AtomBootTimeEventUtcTimeReported)
7569            }
7570            "ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED" => {
7571                Some(Self::AtomBootTimeEventErrorCodeReported)
7572            }
7573            "ATOM_USERSPACE_REBOOT_REPORTED" => Some(Self::AtomUserspaceRebootReported),
7574            "ATOM_NOTIFICATION_REPORTED" => Some(Self::AtomNotificationReported),
7575            "ATOM_NOTIFICATION_PANEL_REPORTED" => {
7576                Some(Self::AtomNotificationPanelReported)
7577            }
7578            "ATOM_NOTIFICATION_CHANNEL_MODIFIED" => {
7579                Some(Self::AtomNotificationChannelModified)
7580            }
7581            "ATOM_INTEGRITY_CHECK_RESULT_REPORTED" => {
7582                Some(Self::AtomIntegrityCheckResultReported)
7583            }
7584            "ATOM_INTEGRITY_RULES_PUSHED" => Some(Self::AtomIntegrityRulesPushed),
7585            "ATOM_CB_MESSAGE_REPORTED" => Some(Self::AtomCbMessageReported),
7586            "ATOM_CB_MESSAGE_ERROR" => Some(Self::AtomCbMessageError),
7587            "ATOM_WIFI_HEALTH_STAT_REPORTED" => Some(Self::AtomWifiHealthStatReported),
7588            "ATOM_WIFI_FAILURE_STAT_REPORTED" => Some(Self::AtomWifiFailureStatReported),
7589            "ATOM_WIFI_CONNECTION_RESULT_REPORTED" => {
7590                Some(Self::AtomWifiConnectionResultReported)
7591            }
7592            "ATOM_APP_FREEZE_CHANGED" => Some(Self::AtomAppFreezeChanged),
7593            "ATOM_SNAPSHOT_MERGE_REPORTED" => Some(Self::AtomSnapshotMergeReported),
7594            "ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED" => {
7595                Some(Self::AtomForegroundServiceAppOpSessionEnded)
7596            }
7597            "ATOM_DISPLAY_JANK_REPORTED" => Some(Self::AtomDisplayJankReported),
7598            "ATOM_APP_STANDBY_BUCKET_CHANGED" => Some(Self::AtomAppStandbyBucketChanged),
7599            "ATOM_SHARESHEET_STARTED" => Some(Self::AtomSharesheetStarted),
7600            "ATOM_RANKING_SELECTED" => Some(Self::AtomRankingSelected),
7601            "ATOM_TVSETTINGS_UI_INTERACTED" => Some(Self::AtomTvsettingsUiInteracted),
7602            "ATOM_LAUNCHER_SNAPSHOT" => Some(Self::AtomLauncherSnapshot),
7603            "ATOM_PACKAGE_INSTALLER_V2_REPORTED" => {
7604                Some(Self::AtomPackageInstallerV2Reported)
7605            }
7606            "ATOM_USER_LIFECYCLE_JOURNEY_REPORTED" => {
7607                Some(Self::AtomUserLifecycleJourneyReported)
7608            }
7609            "ATOM_USER_LIFECYCLE_EVENT_OCCURRED" => {
7610                Some(Self::AtomUserLifecycleEventOccurred)
7611            }
7612            "ATOM_ACCESSIBILITY_SHORTCUT_REPORTED" => {
7613                Some(Self::AtomAccessibilityShortcutReported)
7614            }
7615            "ATOM_ACCESSIBILITY_SERVICE_REPORTED" => {
7616                Some(Self::AtomAccessibilityServiceReported)
7617            }
7618            "ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED" => {
7619                Some(Self::AtomDocsUiDragAndDropReported)
7620            }
7621            "ATOM_APP_USAGE_EVENT_OCCURRED" => Some(Self::AtomAppUsageEventOccurred),
7622            "ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED" => {
7623                Some(Self::AtomAutoRevokeNotificationClicked)
7624            }
7625            "ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED" => {
7626                Some(Self::AtomAutoRevokeFragmentAppViewed)
7627            }
7628            "ATOM_AUTO_REVOKED_APP_INTERACTION" => {
7629                Some(Self::AtomAutoRevokedAppInteraction)
7630            }
7631            "ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION" => {
7632                Some(Self::AtomAppPermissionGroupsFragmentAutoRevokeAction)
7633            }
7634            "ATOM_EVS_USAGE_STATS_REPORTED" => Some(Self::AtomEvsUsageStatsReported),
7635            "ATOM_AUDIO_POWER_USAGE_DATA_REPORTED" => {
7636                Some(Self::AtomAudioPowerUsageDataReported)
7637            }
7638            "ATOM_TV_TUNER_STATE_CHANGED" => Some(Self::AtomTvTunerStateChanged),
7639            "ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED" => {
7640                Some(Self::AtomMediaoutputOpSwitchReported)
7641            }
7642            "ATOM_CB_MESSAGE_FILTERED" => Some(Self::AtomCbMessageFiltered),
7643            "ATOM_TV_TUNER_DVR_STATUS" => Some(Self::AtomTvTunerDvrStatus),
7644            "ATOM_TV_CAS_SESSION_OPEN_STATUS" => Some(Self::AtomTvCasSessionOpenStatus),
7645            "ATOM_ASSISTANT_INVOCATION_REPORTED" => {
7646                Some(Self::AtomAssistantInvocationReported)
7647            }
7648            "ATOM_DISPLAY_WAKE_REPORTED" => Some(Self::AtomDisplayWakeReported),
7649            "ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED" => {
7650                Some(Self::AtomCarUserHalModifyUserRequestReported)
7651            }
7652            "ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED" => {
7653                Some(Self::AtomCarUserHalModifyUserResponseReported)
7654            }
7655            "ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED" => {
7656                Some(Self::AtomCarUserHalPostSwitchResponseReported)
7657            }
7658            "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED" => {
7659                Some(Self::AtomCarUserHalInitialUserInfoRequestReported)
7660            }
7661            "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED" => {
7662                Some(Self::AtomCarUserHalInitialUserInfoResponseReported)
7663            }
7664            "ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED" => {
7665                Some(Self::AtomCarUserHalUserAssociationRequestReported)
7666            }
7667            "ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED" => {
7668                Some(Self::AtomCarUserHalSetUserAssociationResponseReported)
7669            }
7670            "ATOM_NETWORK_IP_PROVISIONING_REPORTED" => {
7671                Some(Self::AtomNetworkIpProvisioningReported)
7672            }
7673            "ATOM_NETWORK_DHCP_RENEW_REPORTED" => {
7674                Some(Self::AtomNetworkDhcpRenewReported)
7675            }
7676            "ATOM_NETWORK_VALIDATION_REPORTED" => {
7677                Some(Self::AtomNetworkValidationReported)
7678            }
7679            "ATOM_NETWORK_STACK_QUIRK_REPORTED" => {
7680                Some(Self::AtomNetworkStackQuirkReported)
7681            }
7682            "ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED" => {
7683                Some(Self::AtomMediametricsAudiorecorddeviceusageReported)
7684            }
7685            "ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED" => {
7686                Some(Self::AtomMediametricsAudiothreaddeviceusageReported)
7687            }
7688            "ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED" => {
7689                Some(Self::AtomMediametricsAudiotrackdeviceusageReported)
7690            }
7691            "ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED" => {
7692                Some(Self::AtomMediametricsAudiodeviceconnectionReported)
7693            }
7694            "ATOM_BLOB_COMMITTED" => Some(Self::AtomBlobCommitted),
7695            "ATOM_BLOB_LEASED" => Some(Self::AtomBlobLeased),
7696            "ATOM_BLOB_OPENED" => Some(Self::AtomBlobOpened),
7697            "ATOM_CONTACTS_PROVIDER_STATUS_REPORTED" => {
7698                Some(Self::AtomContactsProviderStatusReported)
7699            }
7700            "ATOM_KEYSTORE_KEY_EVENT_REPORTED" => {
7701                Some(Self::AtomKeystoreKeyEventReported)
7702            }
7703            "ATOM_NETWORK_TETHERING_REPORTED" => Some(Self::AtomNetworkTetheringReported),
7704            "ATOM_IME_TOUCH_REPORTED" => Some(Self::AtomImeTouchReported),
7705            "ATOM_UI_INTERACTION_FRAME_INFO_REPORTED" => {
7706                Some(Self::AtomUiInteractionFrameInfoReported)
7707            }
7708            "ATOM_UI_ACTION_LATENCY_REPORTED" => Some(Self::AtomUiActionLatencyReported),
7709            "ATOM_WIFI_DISCONNECT_REPORTED" => Some(Self::AtomWifiDisconnectReported),
7710            "ATOM_WIFI_CONNECTION_STATE_CHANGED" => {
7711                Some(Self::AtomWifiConnectionStateChanged)
7712            }
7713            "ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED" => {
7714                Some(Self::AtomHdmiCecActiveSourceChanged)
7715            }
7716            "ATOM_HDMI_CEC_MESSAGE_REPORTED" => Some(Self::AtomHdmiCecMessageReported),
7717            "ATOM_AIRPLANE_MODE" => Some(Self::AtomAirplaneMode),
7718            "ATOM_MODEM_RESTART" => Some(Self::AtomModemRestart),
7719            "ATOM_CARRIER_ID_MISMATCH_REPORTED" => {
7720                Some(Self::AtomCarrierIdMismatchReported)
7721            }
7722            "ATOM_CARRIER_ID_TABLE_UPDATED" => Some(Self::AtomCarrierIdTableUpdated),
7723            "ATOM_DATA_STALL_RECOVERY_REPORTED" => {
7724                Some(Self::AtomDataStallRecoveryReported)
7725            }
7726            "ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED" => {
7727                Some(Self::AtomMediametricsMediaparserReported)
7728            }
7729            "ATOM_TLS_HANDSHAKE_REPORTED" => Some(Self::AtomTlsHandshakeReported),
7730            "ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED" => {
7731                Some(Self::AtomTextClassifierApiUsageReported)
7732            }
7733            "ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED" => {
7734                Some(Self::AtomCarWatchdogKillStatsReported)
7735            }
7736            "ATOM_MEDIAMETRICS_PLAYBACK_REPORTED" => {
7737                Some(Self::AtomMediametricsPlaybackReported)
7738            }
7739            "ATOM_MEDIA_NETWORK_INFO_CHANGED" => Some(Self::AtomMediaNetworkInfoChanged),
7740            "ATOM_MEDIA_PLAYBACK_STATE_CHANGED" => {
7741                Some(Self::AtomMediaPlaybackStateChanged)
7742            }
7743            "ATOM_MEDIA_PLAYBACK_ERROR_REPORTED" => {
7744                Some(Self::AtomMediaPlaybackErrorReported)
7745            }
7746            "ATOM_MEDIA_PLAYBACK_TRACK_CHANGED" => {
7747                Some(Self::AtomMediaPlaybackTrackChanged)
7748            }
7749            "ATOM_WIFI_SCAN_REPORTED" => Some(Self::AtomWifiScanReported),
7750            "ATOM_WIFI_PNO_SCAN_REPORTED" => Some(Self::AtomWifiPnoScanReported),
7751            "ATOM_TIF_TUNE_CHANGED" => Some(Self::AtomTifTuneChanged),
7752            "ATOM_AUTO_ROTATE_REPORTED" => Some(Self::AtomAutoRotateReported),
7753            "ATOM_PERFETTO_TRIGGER" => Some(Self::AtomPerfettoTrigger),
7754            "ATOM_TRANSCODING_DATA" => Some(Self::AtomTranscodingData),
7755            "ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED" => {
7756                Some(Self::AtomImsServiceEntitlementUpdated)
7757            }
7758            "ATOM_DEVICE_ROTATED" => Some(Self::AtomDeviceRotated),
7759            "ATOM_SIM_SPECIFIC_SETTINGS_RESTORED" => {
7760                Some(Self::AtomSimSpecificSettingsRestored)
7761            }
7762            "ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED" => {
7763                Some(Self::AtomTextClassifierDownloadReported)
7764            }
7765            "ATOM_PIN_STORAGE_EVENT" => Some(Self::AtomPinStorageEvent),
7766            "ATOM_FACE_DOWN_REPORTED" => Some(Self::AtomFaceDownReported),
7767            "ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED" => {
7768                Some(Self::AtomBluetoothHalCrashReasonReported)
7769            }
7770            "ATOM_REBOOT_ESCROW_PREPARATION_REPORTED" => {
7771                Some(Self::AtomRebootEscrowPreparationReported)
7772            }
7773            "ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED" => {
7774                Some(Self::AtomRebootEscrowLskfCaptureReported)
7775            }
7776            "ATOM_REBOOT_ESCROW_REBOOT_REPORTED" => {
7777                Some(Self::AtomRebootEscrowRebootReported)
7778            }
7779            "ATOM_BINDER_LATENCY_REPORTED" => Some(Self::AtomBinderLatencyReported),
7780            "ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED" => {
7781                Some(Self::AtomMediametricsAaudiostreamReported)
7782            }
7783            "ATOM_MEDIA_TRANSCODING_SESSION_ENDED" => {
7784                Some(Self::AtomMediaTranscodingSessionEnded)
7785            }
7786            "ATOM_MAGNIFICATION_USAGE_REPORTED" => {
7787                Some(Self::AtomMagnificationUsageReported)
7788            }
7789            "ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED" => {
7790                Some(Self::AtomMagnificationModeWithImeOnReported)
7791            }
7792            "ATOM_APP_SEARCH_CALL_STATS_REPORTED" => {
7793                Some(Self::AtomAppSearchCallStatsReported)
7794            }
7795            "ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED" => {
7796                Some(Self::AtomAppSearchPutDocumentStatsReported)
7797            }
7798            "ATOM_DEVICE_CONTROL_CHANGED" => Some(Self::AtomDeviceControlChanged),
7799            "ATOM_DEVICE_STATE_CHANGED" => Some(Self::AtomDeviceStateChanged),
7800            "ATOM_INPUTDEVICE_REGISTERED" => Some(Self::AtomInputdeviceRegistered),
7801            "ATOM_SMARTSPACE_CARD_REPORTED" => Some(Self::AtomSmartspaceCardReported),
7802            "ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED" => {
7803                Some(Self::AtomAuthPromptAuthenticateInvoked)
7804            }
7805            "ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED" => {
7806                Some(Self::AtomAuthManagerCanAuthenticateInvoked)
7807            }
7808            "ATOM_AUTH_ENROLL_ACTION_INVOKED" => Some(Self::AtomAuthEnrollActionInvoked),
7809            "ATOM_AUTH_DEPRECATED_API_USED" => Some(Self::AtomAuthDeprecatedApiUsed),
7810            "ATOM_UNATTENDED_REBOOT_OCCURRED" => Some(Self::AtomUnattendedRebootOccurred),
7811            "ATOM_LONG_REBOOT_BLOCKING_REPORTED" => {
7812                Some(Self::AtomLongRebootBlockingReported)
7813            }
7814            "ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED" => {
7815                Some(Self::AtomLocationTimeZoneProviderStateChanged)
7816            }
7817            "ATOM_FDTRACK_EVENT_OCCURRED" => Some(Self::AtomFdtrackEventOccurred),
7818            "ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED" => {
7819                Some(Self::AtomTimeoutAutoExtendedReported)
7820            }
7821            "ATOM_ALARM_BATCH_DELIVERED" => Some(Self::AtomAlarmBatchDelivered),
7822            "ATOM_ALARM_SCHEDULED" => Some(Self::AtomAlarmScheduled),
7823            "ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED" => {
7824                Some(Self::AtomCarWatchdogIoOveruseStatsReported)
7825            }
7826            "ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED" => {
7827                Some(Self::AtomUserLevelHibernationStateChanged)
7828            }
7829            "ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED" => {
7830                Some(Self::AtomAppSearchInitializeStatsReported)
7831            }
7832            "ATOM_APP_SEARCH_QUERY_STATS_REPORTED" => {
7833                Some(Self::AtomAppSearchQueryStatsReported)
7834            }
7835            "ATOM_APP_PROCESS_DIED" => Some(Self::AtomAppProcessDied),
7836            "ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED" => {
7837                Some(Self::AtomNetworkIpReachabilityMonitorReported)
7838            }
7839            "ATOM_SLOW_INPUT_EVENT_REPORTED" => Some(Self::AtomSlowInputEventReported),
7840            "ATOM_ANR_OCCURRED_PROCESSING_STARTED" => {
7841                Some(Self::AtomAnrOccurredProcessingStarted)
7842            }
7843            "ATOM_APP_SEARCH_REMOVE_STATS_REPORTED" => {
7844                Some(Self::AtomAppSearchRemoveStatsReported)
7845            }
7846            "ATOM_MEDIA_CODEC_REPORTED" => Some(Self::AtomMediaCodecReported),
7847            "ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION" => {
7848                Some(Self::AtomPermissionUsageFragmentInteraction)
7849            }
7850            "ATOM_PERMISSION_DETAILS_INTERACTION" => {
7851                Some(Self::AtomPermissionDetailsInteraction)
7852            }
7853            "ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION" => {
7854                Some(Self::AtomPrivacySensorToggleInteraction)
7855            }
7856            "ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION" => {
7857                Some(Self::AtomPrivacyToggleDialogInteraction)
7858            }
7859            "ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED" => {
7860                Some(Self::AtomAppSearchOptimizeStatsReported)
7861            }
7862            "ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT" => {
7863                Some(Self::AtomNonA11yToolServiceWarningReport)
7864            }
7865            "ATOM_APP_COMPAT_STATE_CHANGED" => Some(Self::AtomAppCompatStateChanged),
7866            "ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED" => {
7867                Some(Self::AtomSizeCompatRestartButtonEventReported)
7868            }
7869            "ATOM_SPLITSCREEN_UI_CHANGED" => Some(Self::AtomSplitscreenUiChanged),
7870            "ATOM_NETWORK_DNS_HANDSHAKE_REPORTED" => {
7871                Some(Self::AtomNetworkDnsHandshakeReported)
7872            }
7873            "ATOM_BLUETOOTH_CODE_PATH_COUNTER" => {
7874                Some(Self::AtomBluetoothCodePathCounter)
7875            }
7876            "ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY" => {
7877                Some(Self::AtomBluetoothLeBatchScanReportDelay)
7878            }
7879            "ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED" => {
7880                Some(Self::AtomAccessibilityFloatingMenuUiChanged)
7881            }
7882            "ATOM_NEURALNETWORKS_COMPILATION_COMPLETED" => {
7883                Some(Self::AtomNeuralnetworksCompilationCompleted)
7884            }
7885            "ATOM_NEURALNETWORKS_EXECUTION_COMPLETED" => {
7886                Some(Self::AtomNeuralnetworksExecutionCompleted)
7887            }
7888            "ATOM_NEURALNETWORKS_COMPILATION_FAILED" => {
7889                Some(Self::AtomNeuralnetworksCompilationFailed)
7890            }
7891            "ATOM_NEURALNETWORKS_EXECUTION_FAILED" => {
7892                Some(Self::AtomNeuralnetworksExecutionFailed)
7893            }
7894            "ATOM_CONTEXT_HUB_BOOTED" => Some(Self::AtomContextHubBooted),
7895            "ATOM_CONTEXT_HUB_RESTARTED" => Some(Self::AtomContextHubRestarted),
7896            "ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED" => {
7897                Some(Self::AtomContextHubLoadedNanoappSnapshotReported)
7898            }
7899            "ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED" => {
7900                Some(Self::AtomChreCodeDownloadTransacted)
7901            }
7902            "ATOM_UWB_SESSION_INITED" => Some(Self::AtomUwbSessionInited),
7903            "ATOM_UWB_SESSION_CLOSED" => Some(Self::AtomUwbSessionClosed),
7904            "ATOM_UWB_FIRST_RANGING_RECEIVED" => Some(Self::AtomUwbFirstRangingReceived),
7905            "ATOM_UWB_RANGING_MEASUREMENT_RECEIVED" => {
7906                Some(Self::AtomUwbRangingMeasurementReceived)
7907            }
7908            "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED" => {
7909                Some(Self::AtomTextClassifierDownloadWorkScheduled)
7910            }
7911            "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED" => {
7912                Some(Self::AtomTextClassifierDownloadWorkCompleted)
7913            }
7914            "ATOM_CLIPBOARD_CLEARED" => Some(Self::AtomClipboardCleared),
7915            "ATOM_VM_CREATION_REQUESTED" => Some(Self::AtomVmCreationRequested),
7916            "ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED" => {
7917                Some(Self::AtomNearbyDeviceScanStateChanged)
7918            }
7919            "ATOM_APPLICATION_LOCALES_CHANGED" => {
7920                Some(Self::AtomApplicationLocalesChanged)
7921            }
7922            "ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED" => {
7923                Some(Self::AtomMediametricsAudiotrackstatusReported)
7924            }
7925            "ATOM_FOLD_STATE_DURATION_REPORTED" => {
7926                Some(Self::AtomFoldStateDurationReported)
7927            }
7928            "ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED" => {
7929                Some(Self::AtomLocationTimeZoneProviderControllerStateChanged)
7930            }
7931            "ATOM_DISPLAY_HBM_STATE_CHANGED" => Some(Self::AtomDisplayHbmStateChanged),
7932            "ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED" => {
7933                Some(Self::AtomDisplayHbmBrightnessChanged)
7934            }
7935            "ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED" => {
7936                Some(Self::AtomPersistentUriPermissionsFlushed)
7937            }
7938            "ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED" => {
7939                Some(Self::AtomEarlyBootCompOsArtifactsCheckReported)
7940            }
7941            "ATOM_VBMETA_DIGEST_REPORTED" => Some(Self::AtomVbmetaDigestReported),
7942            "ATOM_APEX_INFO_GATHERED" => Some(Self::AtomApexInfoGathered),
7943            "ATOM_PVM_INFO_GATHERED" => Some(Self::AtomPvmInfoGathered),
7944            "ATOM_WEAR_SETTINGS_UI_INTERACTED" => {
7945                Some(Self::AtomWearSettingsUiInteracted)
7946            }
7947            "ATOM_TRACING_SERVICE_REPORT_EVENT" => {
7948                Some(Self::AtomTracingServiceReportEvent)
7949            }
7950            "ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED" => {
7951                Some(Self::AtomMediametricsAudiorecordstatusReported)
7952            }
7953            "ATOM_LAUNCHER_LATENCY" => Some(Self::AtomLauncherLatency),
7954            "ATOM_DROPBOX_ENTRY_DROPPED" => Some(Self::AtomDropboxEntryDropped),
7955            "ATOM_WIFI_P2P_CONNECTION_REPORTED" => {
7956                Some(Self::AtomWifiP2pConnectionReported)
7957            }
7958            "ATOM_GAME_STATE_CHANGED" => Some(Self::AtomGameStateChanged),
7959            "ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED" => {
7960                Some(Self::AtomHotwordDetectorCreateRequested)
7961            }
7962            "ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED" => {
7963                Some(Self::AtomHotwordDetectionServiceInitResultReported)
7964            }
7965            "ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED" => {
7966                Some(Self::AtomHotwordDetectionServiceRestarted)
7967            }
7968            "ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED" => {
7969                Some(Self::AtomHotwordDetectorKeyphraseTriggered)
7970            }
7971            "ATOM_HOTWORD_DETECTOR_EVENTS" => Some(Self::AtomHotwordDetectorEvents),
7972            "ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED" => {
7973                Some(Self::AtomBootCompletedBroadcastCompletionLatencyReported)
7974            }
7975            "ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED" => {
7976                Some(Self::AtomContactsIndexerUpdateStatsReported)
7977            }
7978            "ATOM_APP_BACKGROUND_RESTRICTIONS_INFO" => {
7979                Some(Self::AtomAppBackgroundRestrictionsInfo)
7980            }
7981            "ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED" => {
7982                Some(Self::AtomMmsSmsProviderGetThreadIdFailed)
7983            }
7984            "ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED" => {
7985                Some(Self::AtomMmsSmsDatabaseHelperOnUpgradeFailed)
7986            }
7987            "ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED" => {
7988                Some(Self::AtomPermissionReminderNotificationInteracted)
7989            }
7990            "ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED" => {
7991                Some(Self::AtomRecentPermissionDecisionsInteracted)
7992            }
7993            "ATOM_GNSS_PSDS_DOWNLOAD_REPORTED" => {
7994                Some(Self::AtomGnssPsdsDownloadReported)
7995            }
7996            "ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED" => {
7997                Some(Self::AtomLeAudioConnectionSessionReported)
7998            }
7999            "ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED" => {
8000                Some(Self::AtomLeAudioBroadcastSessionReported)
8001            }
8002            "ATOM_DREAM_UI_EVENT_REPORTED" => Some(Self::AtomDreamUiEventReported),
8003            "ATOM_TASK_MANAGER_EVENT_REPORTED" => {
8004                Some(Self::AtomTaskManagerEventReported)
8005            }
8006            "ATOM_CDM_ASSOCIATION_ACTION" => Some(Self::AtomCdmAssociationAction),
8007            "ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED" => {
8008                Some(Self::AtomMagnificationTripleTapAndHoldActivatedSessionReported)
8009            }
8010            "ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED" => {
8011                Some(Self::AtomMagnificationFollowTypingFocusActivatedSessionReported)
8012            }
8013            "ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED" => {
8014                Some(Self::AtomAccessibilityTextReadingOptionsChanged)
8015            }
8016            "ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED" => {
8017                Some(Self::AtomWifiSetupFailureCrashReported)
8018            }
8019            "ATOM_UWB_DEVICE_ERROR_REPORTED" => Some(Self::AtomUwbDeviceErrorReported),
8020            "ATOM_ISOLATED_COMPILATION_SCHEDULED" => {
8021                Some(Self::AtomIsolatedCompilationScheduled)
8022            }
8023            "ATOM_ISOLATED_COMPILATION_ENDED" => Some(Self::AtomIsolatedCompilationEnded),
8024            "ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE" => {
8025                Some(Self::AtomOnsOpportunisticEsimProvisioningComplete)
8026            }
8027            "ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED" => {
8028                Some(Self::AtomSystemServerPreWatchdogOccurred)
8029            }
8030            "ATOM_TELEPHONY_ANOMALY_DETECTED" => Some(Self::AtomTelephonyAnomalyDetected),
8031            "ATOM_LETTERBOX_POSITION_CHANGED" => Some(Self::AtomLetterboxPositionChanged),
8032            "ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT" => {
8033                Some(Self::AtomRemoteKeyProvisioningAttempt)
8034            }
8035            "ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO" => {
8036                Some(Self::AtomRemoteKeyProvisioningNetworkInfo)
8037            }
8038            "ATOM_REMOTE_KEY_PROVISIONING_TIMING" => {
8039                Some(Self::AtomRemoteKeyProvisioningTiming)
8040            }
8041            "ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT" => {
8042                Some(Self::AtomMediaoutputOpInteractionReport)
8043            }
8044            "ATOM_SYNC_EXEMPTION_OCCURRED" => Some(Self::AtomSyncExemptionOccurred),
8045            "ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED" => {
8046                Some(Self::AtomAutofillPresentationEventReported)
8047            }
8048            "ATOM_DOCK_STATE_CHANGED" => Some(Self::AtomDockStateChanged),
8049            "ATOM_SAFETY_SOURCE_STATE_COLLECTED" => {
8050                Some(Self::AtomSafetySourceStateCollected)
8051            }
8052            "ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED" => {
8053                Some(Self::AtomSafetyCenterSystemEventReported)
8054            }
8055            "ATOM_SAFETY_CENTER_INTERACTION_REPORTED" => {
8056                Some(Self::AtomSafetyCenterInteractionReported)
8057            }
8058            "ATOM_SETTINGS_PROVIDER_SETTING_CHANGED" => {
8059                Some(Self::AtomSettingsProviderSettingChanged)
8060            }
8061            "ATOM_BROADCAST_DELIVERY_EVENT_REPORTED" => {
8062                Some(Self::AtomBroadcastDeliveryEventReported)
8063            }
8064            "ATOM_SERVICE_REQUEST_EVENT_REPORTED" => {
8065                Some(Self::AtomServiceRequestEventReported)
8066            }
8067            "ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED" => {
8068                Some(Self::AtomProviderAcquisitionEventReported)
8069            }
8070            "ATOM_BLUETOOTH_DEVICE_NAME_REPORTED" => {
8071                Some(Self::AtomBluetoothDeviceNameReported)
8072            }
8073            "ATOM_CB_CONFIG_UPDATED" => Some(Self::AtomCbConfigUpdated),
8074            "ATOM_CB_MODULE_ERROR_REPORTED" => Some(Self::AtomCbModuleErrorReported),
8075            "ATOM_CB_SERVICE_FEATURE_CHANGED" => Some(Self::AtomCbServiceFeatureChanged),
8076            "ATOM_CB_RECEIVER_FEATURE_CHANGED" => {
8077                Some(Self::AtomCbReceiverFeatureChanged)
8078            }
8079            "ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION" => {
8080                Some(Self::AtomPrivacySignalNotificationInteraction)
8081            }
8082            "ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION" => {
8083                Some(Self::AtomPrivacySignalIssueCardInteraction)
8084            }
8085            "ATOM_PRIVACY_SIGNALS_JOB_FAILURE" => {
8086                Some(Self::AtomPrivacySignalsJobFailure)
8087            }
8088            "ATOM_VIBRATION_REPORTED" => Some(Self::AtomVibrationReported),
8089            "ATOM_UWB_RANGING_START" => Some(Self::AtomUwbRangingStart),
8090            "ATOM_APP_COMPACTED_V2" => Some(Self::AtomAppCompactedV2),
8091            "ATOM_DISPLAY_BRIGHTNESS_CHANGED" => Some(Self::AtomDisplayBrightnessChanged),
8092            "ATOM_ACTIVITY_ACTION_BLOCKED" => Some(Self::AtomActivityActionBlocked),
8093            "ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED" => {
8094                Some(Self::AtomNetworkDnsServerSupportReported)
8095            }
8096            "ATOM_VM_BOOTED" => Some(Self::AtomVmBooted),
8097            "ATOM_VM_EXITED" => Some(Self::AtomVmExited),
8098            "ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED" => {
8099                Some(Self::AtomAmbientBrightnessStatsReported)
8100            }
8101            "ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED" => {
8102                Some(Self::AtomMediametricsSpatializercapabilitiesReported)
8103            }
8104            "ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED" => {
8105                Some(Self::AtomMediametricsSpatializerdeviceenabledReported)
8106            }
8107            "ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED" => {
8108                Some(Self::AtomMediametricsHeadtrackerdeviceenabledReported)
8109            }
8110            "ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED" => {
8111                Some(Self::AtomMediametricsHeadtrackerdevicesupportedReported)
8112            }
8113            "ATOM_HEARING_AID_INFO_REPORTED" => Some(Self::AtomHearingAidInfoReported),
8114            "ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED" => {
8115                Some(Self::AtomDeviceWideJobConstraintChanged)
8116            }
8117            "ATOM_AMBIENT_MODE_CHANGED" => Some(Self::AtomAmbientModeChanged),
8118            "ATOM_ANR_LATENCY_REPORTED" => Some(Self::AtomAnrLatencyReported),
8119            "ATOM_RESOURCE_API_INFO" => Some(Self::AtomResourceApiInfo),
8120            "ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED" => {
8121                Some(Self::AtomSystemDefaultNetworkChanged)
8122            }
8123            "ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED" => {
8124                Some(Self::AtomIwlanSetupDataCallResultReported)
8125            }
8126            "ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED" => {
8127                Some(Self::AtomIwlanPdnDisconnectedReasonReported)
8128            }
8129            "ATOM_AIRPLANE_MODE_SESSION_REPORTED" => {
8130                Some(Self::AtomAirplaneModeSessionReported)
8131            }
8132            "ATOM_VM_CPU_STATUS_REPORTED" => Some(Self::AtomVmCpuStatusReported),
8133            "ATOM_VM_MEM_STATUS_REPORTED" => Some(Self::AtomVmMemStatusReported),
8134            "ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED" => {
8135                Some(Self::AtomPackageInstallationSessionReported)
8136            }
8137            "ATOM_DEFAULT_NETWORK_REMATCH_INFO" => {
8138                Some(Self::AtomDefaultNetworkRematchInfo)
8139            }
8140            "ATOM_NETWORK_SELECTION_PERFORMANCE" => {
8141                Some(Self::AtomNetworkSelectionPerformance)
8142            }
8143            "ATOM_NETWORK_NSD_REPORTED" => Some(Self::AtomNetworkNsdReported),
8144            "ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED" => {
8145                Some(Self::AtomBluetoothDisconnectionReasonReported)
8146            }
8147            "ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED" => {
8148                Some(Self::AtomBluetoothLocalVersionsReported)
8149            }
8150            "ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED" => {
8151                Some(Self::AtomBluetoothRemoteSupportedFeaturesReported)
8152            }
8153            "ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED" => {
8154                Some(Self::AtomBluetoothLocalSupportedFeaturesReported)
8155            }
8156            "ATOM_BLUETOOTH_GATT_APP_INFO" => Some(Self::AtomBluetoothGattAppInfo),
8157            "ATOM_BRIGHTNESS_CONFIGURATION_UPDATED" => {
8158                Some(Self::AtomBrightnessConfigurationUpdated)
8159            }
8160            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED" => {
8161                Some(Self::AtomWearMediaOutputSwitcherLaunched)
8162            }
8163            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED" => {
8164                Some(Self::AtomWearMediaOutputSwitcherFinished)
8165            }
8166            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED" => {
8167                Some(Self::AtomWearMediaOutputSwitcherConnectionReported)
8168            }
8169            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED" => {
8170                Some(Self::AtomWearMediaOutputSwitcherDeviceScanTriggered)
8171            }
8172            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY" => {
8173                Some(Self::AtomWearMediaOutputSwitcherFirstDeviceScanLatency)
8174            }
8175            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY" => {
8176                Some(Self::AtomWearMediaOutputSwitcherConnectDeviceLatency)
8177            }
8178            "ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED" => {
8179                Some(Self::AtomPackageManagerSnapshotReported)
8180            }
8181            "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED" => {
8182                Some(Self::AtomPackageManagerAppsFilterCacheBuildReported)
8183            }
8184            "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED" => {
8185                Some(Self::AtomPackageManagerAppsFilterCacheUpdateReported)
8186            }
8187            "ATOM_LAUNCHER_IMPRESSION_EVENT" => Some(Self::AtomLauncherImpressionEvent),
8188            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY" => {
8189                Some(Self::AtomWearMediaOutputSwitcherAllDevicesScanLatency)
8190            }
8191            "ATOM_WS_WATCH_FACE_EDITED" => Some(Self::AtomWsWatchFaceEdited),
8192            "ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED" => {
8193                Some(Self::AtomWsWatchFaceFavoriteActionReported)
8194            }
8195            "ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED" => {
8196                Some(Self::AtomWsWatchFaceSetActionReported)
8197            }
8198            "ATOM_PACKAGE_UNINSTALLATION_REPORTED" => {
8199                Some(Self::AtomPackageUninstallationReported)
8200            }
8201            "ATOM_GAME_MODE_CHANGED" => Some(Self::AtomGameModeChanged),
8202            "ATOM_GAME_MODE_CONFIGURATION_CHANGED" => {
8203                Some(Self::AtomGameModeConfigurationChanged)
8204            }
8205            "ATOM_BEDTIME_MODE_STATE_CHANGED" => Some(Self::AtomBedtimeModeStateChanged),
8206            "ATOM_NETWORK_SLICE_SESSION_ENDED" => {
8207                Some(Self::AtomNetworkSliceSessionEnded)
8208            }
8209            "ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED" => {
8210                Some(Self::AtomNetworkSliceDailyDataUsageReported)
8211            }
8212            "ATOM_NFC_TAG_TYPE_OCCURRED" => Some(Self::AtomNfcTagTypeOccurred),
8213            "ATOM_NFC_AID_CONFLICT_OCCURRED" => Some(Self::AtomNfcAidConflictOccurred),
8214            "ATOM_NFC_READER_CONFLICT_OCCURRED" => {
8215                Some(Self::AtomNfcReaderConflictOccurred)
8216            }
8217            "ATOM_WS_TILE_LIST_CHANGED" => Some(Self::AtomWsTileListChanged),
8218            "ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION" => {
8219                Some(Self::AtomGetTypeAccessedWithoutPermission)
8220            }
8221            "ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED" => {
8222                Some(Self::AtomMobileBundledAppInfoGathered)
8223            }
8224            "ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED" => {
8225                Some(Self::AtomWsWatchFaceComplicationSetChanged)
8226            }
8227            "ATOM_MEDIA_DRM_CREATED" => Some(Self::AtomMediaDrmCreated),
8228            "ATOM_MEDIA_DRM_ERRORED" => Some(Self::AtomMediaDrmErrored),
8229            "ATOM_MEDIA_DRM_SESSION_OPENED" => Some(Self::AtomMediaDrmSessionOpened),
8230            "ATOM_MEDIA_DRM_SESSION_CLOSED" => Some(Self::AtomMediaDrmSessionClosed),
8231            "ATOM_USER_SELECTED_RESOLUTION" => Some(Self::AtomUserSelectedResolution),
8232            "ATOM_UNSAFE_INTENT_EVENT_REPORTED" => {
8233                Some(Self::AtomUnsafeIntentEventReported)
8234            }
8235            "ATOM_PERFORMANCE_HINT_SESSION_REPORTED" => {
8236                Some(Self::AtomPerformanceHintSessionReported)
8237            }
8238            "ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED" => {
8239                Some(Self::AtomMediametricsMidiDeviceCloseReported)
8240            }
8241            "ATOM_BIOMETRIC_TOUCH_REPORTED" => Some(Self::AtomBiometricTouchReported),
8242            "ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED" => {
8243                Some(Self::AtomHotwordAudioEgressEventReported)
8244            }
8245            "ATOM_LOCATION_ENABLED_STATE_CHANGED" => {
8246                Some(Self::AtomLocationEnabledStateChanged)
8247            }
8248            "ATOM_IME_REQUEST_FINISHED" => Some(Self::AtomImeRequestFinished),
8249            "ATOM_USB_COMPLIANCE_WARNINGS_REPORTED" => {
8250                Some(Self::AtomUsbComplianceWarningsReported)
8251            }
8252            "ATOM_APP_SUPPORTED_LOCALES_CHANGED" => {
8253                Some(Self::AtomAppSupportedLocalesChanged)
8254            }
8255            "ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED" => {
8256                Some(Self::AtomMediaProviderVolumeRecoveryReported)
8257            }
8258            "ATOM_BIOMETRIC_PROPERTIES_COLLECTED" => {
8259                Some(Self::AtomBiometricPropertiesCollected)
8260            }
8261            "ATOM_KERNEL_WAKEUP_ATTRIBUTED" => Some(Self::AtomKernelWakeupAttributed),
8262            "ATOM_SCREEN_STATE_CHANGED_V2" => Some(Self::AtomScreenStateChangedV2),
8263            "ATOM_WS_BACKUP_ACTION_REPORTED" => Some(Self::AtomWsBackupActionReported),
8264            "ATOM_WS_RESTORE_ACTION_REPORTED" => Some(Self::AtomWsRestoreActionReported),
8265            "ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED" => {
8266                Some(Self::AtomDeviceLogAccessEventReported)
8267            }
8268            "ATOM_MEDIA_SESSION_UPDATED" => Some(Self::AtomMediaSessionUpdated),
8269            "ATOM_WEAR_OOBE_STATE_CHANGED" => Some(Self::AtomWearOobeStateChanged),
8270            "ATOM_WS_NOTIFICATION_UPDATED" => Some(Self::AtomWsNotificationUpdated),
8271            "ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED" => {
8272                Some(Self::AtomNetworkValidationFailureStatsDailyReported)
8273            }
8274            "ATOM_WS_COMPLICATION_TAPPED" => Some(Self::AtomWsComplicationTapped),
8275            "ATOM_WS_NOTIFICATION_BLOCKING" => Some(Self::AtomWsNotificationBlocking),
8276            "ATOM_WS_NOTIFICATION_BRIDGEMODE_UPDATED" => {
8277                Some(Self::AtomWsNotificationBridgemodeUpdated)
8278            }
8279            "ATOM_WS_NOTIFICATION_DISMISSAL_ACTIONED" => {
8280                Some(Self::AtomWsNotificationDismissalActioned)
8281            }
8282            "ATOM_WS_NOTIFICATION_ACTIONED" => Some(Self::AtomWsNotificationActioned),
8283            "ATOM_WS_NOTIFICATION_LATENCY" => Some(Self::AtomWsNotificationLatency),
8284            "ATOM_WIFI_BYTES_TRANSFER" => Some(Self::AtomWifiBytesTransfer),
8285            "ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG" => {
8286                Some(Self::AtomWifiBytesTransferByFgBg)
8287            }
8288            "ATOM_MOBILE_BYTES_TRANSFER" => Some(Self::AtomMobileBytesTransfer),
8289            "ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG" => {
8290                Some(Self::AtomMobileBytesTransferByFgBg)
8291            }
8292            "ATOM_BLUETOOTH_BYTES_TRANSFER" => Some(Self::AtomBluetoothBytesTransfer),
8293            "ATOM_KERNEL_WAKELOCK" => Some(Self::AtomKernelWakelock),
8294            "ATOM_SUBSYSTEM_SLEEP_STATE" => Some(Self::AtomSubsystemSleepState),
8295            "ATOM_CPU_TIME_PER_UID" => Some(Self::AtomCpuTimePerUid),
8296            "ATOM_CPU_TIME_PER_UID_FREQ" => Some(Self::AtomCpuTimePerUidFreq),
8297            "ATOM_WIFI_ACTIVITY_INFO" => Some(Self::AtomWifiActivityInfo),
8298            "ATOM_MODEM_ACTIVITY_INFO" => Some(Self::AtomModemActivityInfo),
8299            "ATOM_BLUETOOTH_ACTIVITY_INFO" => Some(Self::AtomBluetoothActivityInfo),
8300            "ATOM_PROCESS_MEMORY_STATE" => Some(Self::AtomProcessMemoryState),
8301            "ATOM_SYSTEM_ELAPSED_REALTIME" => Some(Self::AtomSystemElapsedRealtime),
8302            "ATOM_SYSTEM_UPTIME" => Some(Self::AtomSystemUptime),
8303            "ATOM_CPU_ACTIVE_TIME" => Some(Self::AtomCpuActiveTime),
8304            "ATOM_CPU_CLUSTER_TIME" => Some(Self::AtomCpuClusterTime),
8305            "ATOM_DISK_SPACE" => Some(Self::AtomDiskSpace),
8306            "ATOM_REMAINING_BATTERY_CAPACITY" => Some(Self::AtomRemainingBatteryCapacity),
8307            "ATOM_FULL_BATTERY_CAPACITY" => Some(Self::AtomFullBatteryCapacity),
8308            "ATOM_TEMPERATURE" => Some(Self::AtomTemperature),
8309            "ATOM_BINDER_CALLS" => Some(Self::AtomBinderCalls),
8310            "ATOM_BINDER_CALLS_EXCEPTIONS" => Some(Self::AtomBinderCallsExceptions),
8311            "ATOM_LOOPER_STATS" => Some(Self::AtomLooperStats),
8312            "ATOM_DISK_STATS" => Some(Self::AtomDiskStats),
8313            "ATOM_DIRECTORY_USAGE" => Some(Self::AtomDirectoryUsage),
8314            "ATOM_APP_SIZE" => Some(Self::AtomAppSize),
8315            "ATOM_CATEGORY_SIZE" => Some(Self::AtomCategorySize),
8316            "ATOM_PROC_STATS" => Some(Self::AtomProcStats),
8317            "ATOM_BATTERY_VOLTAGE" => Some(Self::AtomBatteryVoltage),
8318            "ATOM_NUM_FINGERPRINTS_ENROLLED" => Some(Self::AtomNumFingerprintsEnrolled),
8319            "ATOM_DISK_IO" => Some(Self::AtomDiskIo),
8320            "ATOM_POWER_PROFILE" => Some(Self::AtomPowerProfile),
8321            "ATOM_PROC_STATS_PKG_PROC" => Some(Self::AtomProcStatsPkgProc),
8322            "ATOM_PROCESS_CPU_TIME" => Some(Self::AtomProcessCpuTime),
8323            "ATOM_CPU_TIME_PER_THREAD_FREQ" => Some(Self::AtomCpuTimePerThreadFreq),
8324            "ATOM_ON_DEVICE_POWER_MEASUREMENT" => {
8325                Some(Self::AtomOnDevicePowerMeasurement)
8326            }
8327            "ATOM_DEVICE_CALCULATED_POWER_USE" => {
8328                Some(Self::AtomDeviceCalculatedPowerUse)
8329            }
8330            "ATOM_PROCESS_MEMORY_HIGH_WATER_MARK" => {
8331                Some(Self::AtomProcessMemoryHighWaterMark)
8332            }
8333            "ATOM_BATTERY_LEVEL" => Some(Self::AtomBatteryLevel),
8334            "ATOM_BUILD_INFORMATION" => Some(Self::AtomBuildInformation),
8335            "ATOM_BATTERY_CYCLE_COUNT" => Some(Self::AtomBatteryCycleCount),
8336            "ATOM_DEBUG_ELAPSED_CLOCK" => Some(Self::AtomDebugElapsedClock),
8337            "ATOM_DEBUG_FAILING_ELAPSED_CLOCK" => {
8338                Some(Self::AtomDebugFailingElapsedClock)
8339            }
8340            "ATOM_NUM_FACES_ENROLLED" => Some(Self::AtomNumFacesEnrolled),
8341            "ATOM_ROLE_HOLDER" => Some(Self::AtomRoleHolder),
8342            "ATOM_DANGEROUS_PERMISSION_STATE" => Some(Self::AtomDangerousPermissionState),
8343            "ATOM_TRAIN_INFO" => Some(Self::AtomTrainInfo),
8344            "ATOM_TIME_ZONE_DATA_INFO" => Some(Self::AtomTimeZoneDataInfo),
8345            "ATOM_EXTERNAL_STORAGE_INFO" => Some(Self::AtomExternalStorageInfo),
8346            "ATOM_GPU_STATS_GLOBAL_INFO" => Some(Self::AtomGpuStatsGlobalInfo),
8347            "ATOM_GPU_STATS_APP_INFO" => Some(Self::AtomGpuStatsAppInfo),
8348            "ATOM_SYSTEM_ION_HEAP_SIZE" => Some(Self::AtomSystemIonHeapSize),
8349            "ATOM_APPS_ON_EXTERNAL_STORAGE_INFO" => {
8350                Some(Self::AtomAppsOnExternalStorageInfo)
8351            }
8352            "ATOM_FACE_SETTINGS" => Some(Self::AtomFaceSettings),
8353            "ATOM_COOLING_DEVICE" => Some(Self::AtomCoolingDevice),
8354            "ATOM_APP_OPS" => Some(Self::AtomAppOps),
8355            "ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE" => {
8356                Some(Self::AtomProcessSystemIonHeapSize)
8357            }
8358            "ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO" => {
8359                Some(Self::AtomSurfaceflingerStatsGlobalInfo)
8360            }
8361            "ATOM_SURFACEFLINGER_STATS_LAYER_INFO" => {
8362                Some(Self::AtomSurfaceflingerStatsLayerInfo)
8363            }
8364            "ATOM_PROCESS_MEMORY_SNAPSHOT" => Some(Self::AtomProcessMemorySnapshot),
8365            "ATOM_VMS_CLIENT_STATS" => Some(Self::AtomVmsClientStats),
8366            "ATOM_NOTIFICATION_REMOTE_VIEWS" => Some(Self::AtomNotificationRemoteViews),
8367            "ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED" => {
8368                Some(Self::AtomDangerousPermissionStateSampled)
8369            }
8370            "ATOM_GRAPHICS_STATS" => Some(Self::AtomGraphicsStats),
8371            "ATOM_RUNTIME_APP_OP_ACCESS" => Some(Self::AtomRuntimeAppOpAccess),
8372            "ATOM_ION_HEAP_SIZE" => Some(Self::AtomIonHeapSize),
8373            "ATOM_PACKAGE_NOTIFICATION_PREFERENCES" => {
8374                Some(Self::AtomPackageNotificationPreferences)
8375            }
8376            "ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES" => {
8377                Some(Self::AtomPackageNotificationChannelPreferences)
8378            }
8379            "ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES" => {
8380                Some(Self::AtomPackageNotificationChannelGroupPreferences)
8381            }
8382            "ATOM_GNSS_STATS" => Some(Self::AtomGnssStats),
8383            "ATOM_ATTRIBUTED_APP_OPS" => Some(Self::AtomAttributedAppOps),
8384            "ATOM_VOICE_CALL_SESSION" => Some(Self::AtomVoiceCallSession),
8385            "ATOM_VOICE_CALL_RAT_USAGE" => Some(Self::AtomVoiceCallRatUsage),
8386            "ATOM_SIM_SLOT_STATE" => Some(Self::AtomSimSlotState),
8387            "ATOM_SUPPORTED_RADIO_ACCESS_FAMILY" => {
8388                Some(Self::AtomSupportedRadioAccessFamily)
8389            }
8390            "ATOM_SETTING_SNAPSHOT" => Some(Self::AtomSettingSnapshot),
8391            "ATOM_BLOB_INFO" => Some(Self::AtomBlobInfo),
8392            "ATOM_DATA_USAGE_BYTES_TRANSFER" => Some(Self::AtomDataUsageBytesTransfer),
8393            "ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED" => {
8394                Some(Self::AtomBytesTransferByTagAndMetered)
8395            }
8396            "ATOM_DND_MODE_RULE" => Some(Self::AtomDndModeRule),
8397            "ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS" => {
8398                Some(Self::AtomGeneralExternalStorageAccessStats)
8399            }
8400            "ATOM_INCOMING_SMS" => Some(Self::AtomIncomingSms),
8401            "ATOM_OUTGOING_SMS" => Some(Self::AtomOutgoingSms),
8402            "ATOM_CARRIER_ID_TABLE_VERSION" => Some(Self::AtomCarrierIdTableVersion),
8403            "ATOM_DATA_CALL_SESSION" => Some(Self::AtomDataCallSession),
8404            "ATOM_CELLULAR_SERVICE_STATE" => Some(Self::AtomCellularServiceState),
8405            "ATOM_CELLULAR_DATA_SERVICE_SWITCH" => {
8406                Some(Self::AtomCellularDataServiceSwitch)
8407            }
8408            "ATOM_SYSTEM_MEMORY" => Some(Self::AtomSystemMemory),
8409            "ATOM_IMS_REGISTRATION_TERMINATION" => {
8410                Some(Self::AtomImsRegistrationTermination)
8411            }
8412            "ATOM_IMS_REGISTRATION_STATS" => Some(Self::AtomImsRegistrationStats),
8413            "ATOM_CPU_TIME_PER_CLUSTER_FREQ" => Some(Self::AtomCpuTimePerClusterFreq),
8414            "ATOM_CPU_CYCLES_PER_UID_CLUSTER" => Some(Self::AtomCpuCyclesPerUidCluster),
8415            "ATOM_DEVICE_ROTATED_DATA" => Some(Self::AtomDeviceRotatedData),
8416            "ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER" => {
8417                Some(Self::AtomCpuCyclesPerThreadGroupCluster)
8418            }
8419            "ATOM_MEDIA_DRM_ACTIVITY_INFO" => Some(Self::AtomMediaDrmActivityInfo),
8420            "ATOM_OEM_MANAGED_BYTES_TRANSFER" => Some(Self::AtomOemManagedBytesTransfer),
8421            "ATOM_GNSS_POWER_STATS" => Some(Self::AtomGnssPowerStats),
8422            "ATOM_TIME_ZONE_DETECTOR_STATE" => Some(Self::AtomTimeZoneDetectorState),
8423            "ATOM_KEYSTORE2_STORAGE_STATS" => Some(Self::AtomKeystore2StorageStats),
8424            "ATOM_RKP_POOL_STATS" => Some(Self::AtomRkpPoolStats),
8425            "ATOM_PROCESS_DMABUF_MEMORY" => Some(Self::AtomProcessDmabufMemory),
8426            "ATOM_PENDING_ALARM_INFO" => Some(Self::AtomPendingAlarmInfo),
8427            "ATOM_USER_LEVEL_HIBERNATED_APPS" => Some(Self::AtomUserLevelHibernatedApps),
8428            "ATOM_LAUNCHER_LAYOUT_SNAPSHOT" => Some(Self::AtomLauncherLayoutSnapshot),
8429            "ATOM_GLOBAL_HIBERNATED_APPS" => Some(Self::AtomGlobalHibernatedApps),
8430            "ATOM_INPUT_EVENT_LATENCY_SKETCH" => Some(Self::AtomInputEventLatencySketch),
8431            "ATOM_BATTERY_USAGE_STATS_BEFORE_RESET" => {
8432                Some(Self::AtomBatteryUsageStatsBeforeReset)
8433            }
8434            "ATOM_BATTERY_USAGE_STATS_SINCE_RESET" => {
8435                Some(Self::AtomBatteryUsageStatsSinceReset)
8436            }
8437            "ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL" => {
8438                Some(Self::AtomBatteryUsageStatsSinceResetUsingPowerProfileModel)
8439            }
8440            "ATOM_INSTALLED_INCREMENTAL_PACKAGE" => {
8441                Some(Self::AtomInstalledIncrementalPackage)
8442            }
8443            "ATOM_TELEPHONY_NETWORK_REQUESTS" => Some(Self::AtomTelephonyNetworkRequests),
8444            "ATOM_APP_SEARCH_STORAGE_INFO" => Some(Self::AtomAppSearchStorageInfo),
8445            "ATOM_VMSTAT" => Some(Self::AtomVmstat),
8446            "ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO" => {
8447                Some(Self::AtomKeystore2KeyCreationWithGeneralInfo)
8448            }
8449            "ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO" => {
8450                Some(Self::AtomKeystore2KeyCreationWithAuthInfo)
8451            }
8452            "ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO" => {
8453                Some(Self::AtomKeystore2KeyCreationWithPurposeAndModesInfo)
8454            }
8455            "ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW" => {
8456                Some(Self::AtomKeystore2AtomWithOverflow)
8457            }
8458            "ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO" => {
8459                Some(Self::AtomKeystore2KeyOperationWithPurposeAndModesInfo)
8460            }
8461            "ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO" => {
8462                Some(Self::AtomKeystore2KeyOperationWithGeneralInfo)
8463            }
8464            "ATOM_RKP_ERROR_STATS" => Some(Self::AtomRkpErrorStats),
8465            "ATOM_KEYSTORE2_CRASH_STATS" => Some(Self::AtomKeystore2CrashStats),
8466            "ATOM_VENDOR_APEX_INFO" => Some(Self::AtomVendorApexInfo),
8467            "ATOM_ACCESSIBILITY_SHORTCUT_STATS" => {
8468                Some(Self::AtomAccessibilityShortcutStats)
8469            }
8470            "ATOM_ACCESSIBILITY_FLOATING_MENU_STATS" => {
8471                Some(Self::AtomAccessibilityFloatingMenuStats)
8472            }
8473            "ATOM_DATA_USAGE_BYTES_TRANSFER_V2" => {
8474                Some(Self::AtomDataUsageBytesTransferV2)
8475            }
8476            "ATOM_MEDIA_CAPABILITIES" => Some(Self::AtomMediaCapabilities),
8477            "ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY" => {
8478                Some(Self::AtomCarWatchdogSystemIoUsageSummary)
8479            }
8480            "ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY" => {
8481                Some(Self::AtomCarWatchdogUidIoUsageSummary)
8482            }
8483            "ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS" => {
8484                Some(Self::AtomImsRegistrationFeatureTagStats)
8485            }
8486            "ATOM_RCS_CLIENT_PROVISIONING_STATS" => {
8487                Some(Self::AtomRcsClientProvisioningStats)
8488            }
8489            "ATOM_RCS_ACS_PROVISIONING_STATS" => Some(Self::AtomRcsAcsProvisioningStats),
8490            "ATOM_SIP_DELEGATE_STATS" => Some(Self::AtomSipDelegateStats),
8491            "ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS" => {
8492                Some(Self::AtomSipTransportFeatureTagStats)
8493            }
8494            "ATOM_SIP_MESSAGE_RESPONSE" => Some(Self::AtomSipMessageResponse),
8495            "ATOM_SIP_TRANSPORT_SESSION" => Some(Self::AtomSipTransportSession),
8496            "ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT" => {
8497                Some(Self::AtomImsDedicatedBearerListenerEvent)
8498            }
8499            "ATOM_IMS_DEDICATED_BEARER_EVENT" => Some(Self::AtomImsDedicatedBearerEvent),
8500            "ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS" => {
8501                Some(Self::AtomImsRegistrationServiceDescStats)
8502            }
8503            "ATOM_UCE_EVENT_STATS" => Some(Self::AtomUceEventStats),
8504            "ATOM_PRESENCE_NOTIFY_EVENT" => Some(Self::AtomPresenceNotifyEvent),
8505            "ATOM_GBA_EVENT" => Some(Self::AtomGbaEvent),
8506            "ATOM_PER_SIM_STATUS" => Some(Self::AtomPerSimStatus),
8507            "ATOM_GPU_WORK_PER_UID" => Some(Self::AtomGpuWorkPerUid),
8508            "ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE" => {
8509                Some(Self::AtomPersistentUriPermissionsAmountPerPackage)
8510            }
8511            "ATOM_SIGNED_PARTITION_INFO" => Some(Self::AtomSignedPartitionInfo),
8512            "ATOM_PINNED_FILE_SIZES_PER_PACKAGE" => {
8513                Some(Self::AtomPinnedFileSizesPerPackage)
8514            }
8515            "ATOM_PENDING_INTENTS_PER_PACKAGE" => {
8516                Some(Self::AtomPendingIntentsPerPackage)
8517            }
8518            "ATOM_USER_INFO" => Some(Self::AtomUserInfo),
8519            "ATOM_TELEPHONY_NETWORK_REQUESTS_V2" => {
8520                Some(Self::AtomTelephonyNetworkRequestsV2)
8521            }
8522            "ATOM_DEVICE_TELEPHONY_PROPERTIES" => {
8523                Some(Self::AtomDeviceTelephonyProperties)
8524            }
8525            "ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS" => {
8526                Some(Self::AtomRemoteKeyProvisioningErrorCounts)
8527            }
8528            "ATOM_SAFETY_STATE" => Some(Self::AtomSafetyState),
8529            "ATOM_INCOMING_MMS" => Some(Self::AtomIncomingMms),
8530            "ATOM_OUTGOING_MMS" => Some(Self::AtomOutgoingMms),
8531            "ATOM_MULTI_USER_INFO" => Some(Self::AtomMultiUserInfo),
8532            "ATOM_NETWORK_BPF_MAP_INFO" => Some(Self::AtomNetworkBpfMapInfo),
8533            "ATOM_OUTGOING_SHORT_CODE_SMS" => Some(Self::AtomOutgoingShortCodeSms),
8534            "ATOM_CONNECTIVITY_STATE_SAMPLE" => Some(Self::AtomConnectivityStateSample),
8535            "ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO" => {
8536                Some(Self::AtomNetworkSelectionRematchReasonsInfo)
8537            }
8538            "ATOM_GAME_MODE_INFO" => Some(Self::AtomGameModeInfo),
8539            "ATOM_GAME_MODE_CONFIGURATION" => Some(Self::AtomGameModeConfiguration),
8540            "ATOM_GAME_MODE_LISTENER" => Some(Self::AtomGameModeListener),
8541            "ATOM_NETWORK_SLICE_REQUEST_COUNT" => {
8542                Some(Self::AtomNetworkSliceRequestCount)
8543            }
8544            "ATOM_WS_TILE_SNAPSHOT" => Some(Self::AtomWsTileSnapshot),
8545            "ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT" => {
8546                Some(Self::AtomWsActiveWatchFaceComplicationSetSnapshot)
8547            }
8548            "ATOM_PROCESS_STATE" => Some(Self::AtomProcessState),
8549            "ATOM_PROCESS_ASSOCIATION" => Some(Self::AtomProcessAssociation),
8550            "ATOM_ADPF_SYSTEM_COMPONENT_INFO" => Some(Self::AtomAdpfSystemComponentInfo),
8551            "ATOM_NOTIFICATION_MEMORY_USE" => Some(Self::AtomNotificationMemoryUse),
8552            "ATOM_HDR_CAPABILITIES" => Some(Self::AtomHdrCapabilities),
8553            "ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT" => {
8554                Some(Self::AtomWsFavouriteWatchFaceListSnapshot)
8555            }
8556            "ATOM_WIFI_AWARE_NDP_REPORTED" => Some(Self::AtomWifiAwareNdpReported),
8557            "ATOM_WIFI_AWARE_ATTACH_REPORTED" => Some(Self::AtomWifiAwareAttachReported),
8558            "ATOM_WIFI_SELF_RECOVERY_TRIGGERED" => {
8559                Some(Self::AtomWifiSelfRecoveryTriggered)
8560            }
8561            "ATOM_SOFT_AP_STARTED" => Some(Self::AtomSoftApStarted),
8562            "ATOM_SOFT_AP_STOPPED" => Some(Self::AtomSoftApStopped),
8563            "ATOM_WIFI_LOCK_RELEASED" => Some(Self::AtomWifiLockReleased),
8564            "ATOM_WIFI_LOCK_DEACTIVATED" => Some(Self::AtomWifiLockDeactivated),
8565            "ATOM_WIFI_CONFIG_SAVED" => Some(Self::AtomWifiConfigSaved),
8566            "ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED" => {
8567                Some(Self::AtomWifiAwareResourceUsingChanged)
8568            }
8569            "ATOM_WIFI_AWARE_HAL_API_CALLED" => Some(Self::AtomWifiAwareHalApiCalled),
8570            "ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED" => {
8571                Some(Self::AtomWifiLocalOnlyRequestReceived)
8572            }
8573            "ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED" => {
8574                Some(Self::AtomWifiLocalOnlyRequestScanTriggered)
8575            }
8576            "ATOM_WIFI_THREAD_TASK_EXECUTED" => Some(Self::AtomWifiThreadTaskExecuted),
8577            "ATOM_WIFI_STATE_CHANGED" => Some(Self::AtomWifiStateChanged),
8578            "ATOM_PNO_SCAN_STARTED" => Some(Self::AtomPnoScanStarted),
8579            "ATOM_PNO_SCAN_STOPPED" => Some(Self::AtomPnoScanStopped),
8580            "ATOM_WIFI_IS_UNUSABLE_REPORTED" => Some(Self::AtomWifiIsUnusableReported),
8581            "ATOM_WIFI_AP_CAPABILITIES_REPORTED" => {
8582                Some(Self::AtomWifiApCapabilitiesReported)
8583            }
8584            "ATOM_SOFT_AP_STATE_CHANGED" => Some(Self::AtomSoftApStateChanged),
8585            "ATOM_SCORER_PREDICTION_RESULT_REPORTED" => {
8586                Some(Self::AtomScorerPredictionResultReported)
8587            }
8588            "ATOM_WIFI_AWARE_CAPABILITIES" => Some(Self::AtomWifiAwareCapabilities),
8589            "ATOM_WIFI_MODULE_INFO" => Some(Self::AtomWifiModuleInfo),
8590            "ATOM_WIFI_SETTING_INFO" => Some(Self::AtomWifiSettingInfo),
8591            "ATOM_WIFI_COMPLEX_SETTING_INFO" => Some(Self::AtomWifiComplexSettingInfo),
8592            "ATOM_WIFI_CONFIGURED_NETWORK_INFO" => {
8593                Some(Self::AtomWifiConfiguredNetworkInfo)
8594            }
8595            "ATOM_WEAR_POWER_MENU_OPENED" => Some(Self::AtomWearPowerMenuOpened),
8596            "ATOM_WEAR_ASSISTANT_OPENED" => Some(Self::AtomWearAssistantOpened),
8597            "ATOM_FIRST_OVERLAY_STATE_CHANGED" => {
8598                Some(Self::AtomFirstOverlayStateChanged)
8599            }
8600            "ATOM_WS_WEAR_TIME_SESSION" => Some(Self::AtomWsWearTimeSession),
8601            "ATOM_WS_INCOMING_CALL_ACTION_REPORTED" => {
8602                Some(Self::AtomWsIncomingCallActionReported)
8603            }
8604            "ATOM_WS_CALL_DISCONNECTION_REPORTED" => {
8605                Some(Self::AtomWsCallDisconnectionReported)
8606            }
8607            "ATOM_WS_CALL_DURATION_REPORTED" => Some(Self::AtomWsCallDurationReported),
8608            "ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED" => {
8609                Some(Self::AtomWsCallUserExperienceLatencyReported)
8610            }
8611            "ATOM_WS_CALL_INTERACTION_REPORTED" => {
8612                Some(Self::AtomWsCallInteractionReported)
8613            }
8614            "ATOM_WS_ON_BODY_STATE_CHANGED" => Some(Self::AtomWsOnBodyStateChanged),
8615            "ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED" => {
8616                Some(Self::AtomWsWatchFaceRestrictedComplicationsImpacted)
8617            }
8618            "ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED" => {
8619                Some(Self::AtomWsWatchFaceDefaultRestrictedComplicationsRemoved)
8620            }
8621            "ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED" => {
8622                Some(Self::AtomWsComplicationsImpactedNotificationEventReported)
8623            }
8624            "ATOM_WS_REMOTE_EVENT_USAGE_REPORTED" => {
8625                Some(Self::AtomWsRemoteEventUsageReported)
8626            }
8627            "ATOM_WS_NOTIFICATION_MANAGED_DISMISSAL_SYNC" => {
8628                Some(Self::AtomWsNotificationManagedDismissalSync)
8629            }
8630            "ATOM_WS_BUGREPORT_EVENT_REPORTED" => {
8631                Some(Self::AtomWsBugreportEventReported)
8632            }
8633            "ATOM_WS_STANDALONE_MODE_SNAPSHOT" => {
8634                Some(Self::AtomWsStandaloneModeSnapshot)
8635            }
8636            "ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT" => {
8637                Some(Self::AtomWsFavoriteWatchFaceSnapshot)
8638            }
8639            "ATOM_WS_PHOTOS_WATCH_FACE_FEATURE_SNAPSHOT" => {
8640                Some(Self::AtomWsPhotosWatchFaceFeatureSnapshot)
8641            }
8642            "ATOM_WS_WATCH_FACE_CUSTOMIZATION_SNAPSHOT" => {
8643                Some(Self::AtomWsWatchFaceCustomizationSnapshot)
8644            }
8645            "ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED" => {
8646                Some(Self::AtomWearAdaptiveSuspendStatsReported)
8647            }
8648            "ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED" => {
8649                Some(Self::AtomWearPowerAnomalyServiceOperationalStatsReported)
8650            }
8651            "ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED" => {
8652                Some(Self::AtomWearPowerAnomalyServiceEventStatsReported)
8653            }
8654            "ATOM_WEAR_TIME_SYNC_REQUESTED" => Some(Self::AtomWearTimeSyncRequested),
8655            "ATOM_WEAR_TIME_UPDATE_STARTED" => Some(Self::AtomWearTimeUpdateStarted),
8656            "ATOM_WEAR_TIME_SYNC_ATTEMPT_COMPLETED" => {
8657                Some(Self::AtomWearTimeSyncAttemptCompleted)
8658            }
8659            "ATOM_WEAR_TIME_CHANGED" => Some(Self::AtomWearTimeChanged),
8660            "ATOM_WEAR_SETUP_WIZARD_DEVICE_STATUS_REPORTED" => {
8661                Some(Self::AtomWearSetupWizardDeviceStatusReported)
8662            }
8663            "ATOM_WEAR_SETUP_WIZARD_PAIRING_COMPLETED" => {
8664                Some(Self::AtomWearSetupWizardPairingCompleted)
8665            }
8666            "ATOM_WEAR_SETUP_WIZARD_CONNECTION_ESTABLISHED" => {
8667                Some(Self::AtomWearSetupWizardConnectionEstablished)
8668            }
8669            "ATOM_WEAR_SETUP_WIZARD_CHECKIN_COMPLETED" => {
8670                Some(Self::AtomWearSetupWizardCheckinCompleted)
8671            }
8672            "ATOM_WEAR_SETUP_WIZARD_COMPANION_TIME_REPORTED" => {
8673                Some(Self::AtomWearSetupWizardCompanionTimeReported)
8674            }
8675            "ATOM_WEAR_SETUP_WIZARD_STATUS_REPORTED" => {
8676                Some(Self::AtomWearSetupWizardStatusReported)
8677            }
8678            "ATOM_WEAR_SETUP_WIZARD_HEARTBEAT_REPORTED" => {
8679                Some(Self::AtomWearSetupWizardHeartbeatReported)
8680            }
8681            "ATOM_WEAR_SETUP_WIZARD_FRP_TRIGGERED" => {
8682                Some(Self::AtomWearSetupWizardFrpTriggered)
8683            }
8684            "ATOM_WEAR_SETUP_WIZARD_SYSTEM_UPDATE_TRIGGERED" => {
8685                Some(Self::AtomWearSetupWizardSystemUpdateTriggered)
8686            }
8687            "ATOM_WEAR_SETUP_WIZARD_PHONE_SWITCH_TRIGGERED" => {
8688                Some(Self::AtomWearSetupWizardPhoneSwitchTriggered)
8689            }
8690            "ATOM_RENDERER_INITIALIZED" => Some(Self::AtomRendererInitialized),
8691            "ATOM_SCHEMA_VERSION_RECEIVED" => Some(Self::AtomSchemaVersionReceived),
8692            "ATOM_LAYOUT_INSPECTED" => Some(Self::AtomLayoutInspected),
8693            "ATOM_LAYOUT_EXPRESSION_INSPECTED" => {
8694                Some(Self::AtomLayoutExpressionInspected)
8695            }
8696            "ATOM_LAYOUT_ANIMATIONS_INSPECTED" => {
8697                Some(Self::AtomLayoutAnimationsInspected)
8698            }
8699            "ATOM_MATERIAL_COMPONENTS_INSPECTED" => {
8700                Some(Self::AtomMaterialComponentsInspected)
8701            }
8702            "ATOM_TILE_REQUESTED" => Some(Self::AtomTileRequested),
8703            "ATOM_STATE_RESPONSE_RECEIVED" => Some(Self::AtomStateResponseReceived),
8704            "ATOM_TILE_RESPONSE_RECEIVED" => Some(Self::AtomTileResponseReceived),
8705            "ATOM_INFLATION_FINISHED" => Some(Self::AtomInflationFinished),
8706            "ATOM_INFLATION_FAILED" => Some(Self::AtomInflationFailed),
8707            "ATOM_IGNORED_INFLATION_FAILURES_REPORTED" => {
8708                Some(Self::AtomIgnoredInflationFailuresReported)
8709            }
8710            "ATOM_DRAWABLE_RENDERED" => Some(Self::AtomDrawableRendered),
8711            "ATOM_WEAR_MODE_STATE_CHANGED" => Some(Self::AtomWearModeStateChanged),
8712            "ATOM_MEDIA_ACTION_REPORTED" => Some(Self::AtomMediaActionReported),
8713            "ATOM_MEDIA_CONTROLS_LAUNCHED" => Some(Self::AtomMediaControlsLaunched),
8714            "ATOM_MEDIA_SESSION_STATE_CHANGED" => {
8715                Some(Self::AtomMediaSessionStateChanged)
8716            }
8717            "ATOM_MEDIA_CONTROL_API_USAGE_REPORTED" => {
8718                Some(Self::AtomMediaControlApiUsageReported)
8719            }
8720            "ATOM_MEDIA_SUBSCRIPTION_CHANGED" => Some(Self::AtomMediaSubscriptionChanged),
8721            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY" => {
8722                Some(Self::AtomWearMediaOutputSwitcherDeviceScanApiLatency)
8723            }
8724            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE" => {
8725                Some(Self::AtomWearMediaOutputSwitcherSassDeviceUnavailable)
8726            }
8727            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT" => {
8728                Some(Self::AtomWearMediaOutputSwitcherFastpairApiTimeout)
8729            }
8730            "ATOM_MEDIATOR_UPDATED" => Some(Self::AtomMediatorUpdated),
8731            "ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER" => {
8732                Some(Self::AtomSysproxyBluetoothBytesTransfer)
8733            }
8734            "ATOM_SYSPROXY_CONNECTION_UPDATED" => {
8735                Some(Self::AtomSysproxyConnectionUpdated)
8736            }
8737            "ATOM_WEAR_COMPANION_CONNECTION_STATE" => {
8738                Some(Self::AtomWearCompanionConnectionState)
8739            }
8740            "ATOM_SYSPROXY_SERVICE_STATE_UPDATED" => {
8741                Some(Self::AtomSysproxyServiceStateUpdated)
8742            }
8743            "ATOM_UWB_ACTIVITY_INFO" => Some(Self::AtomUwbActivityInfo),
8744            "ATOM_TEST_UPROBESTATS_ATOM_REPORTED" => {
8745                Some(Self::AtomTestUprobestatsAtomReported)
8746            }
8747            "ATOM_TV_LOW_POWER_STANDBY_POLICY" => Some(Self::AtomTvLowPowerStandbyPolicy),
8748            "ATOM_EXTERNAL_TV_INPUT_EVENT" => Some(Self::AtomExternalTvInputEvent),
8749            "ATOM_BOOT_INTEGRITY_INFO_REPORTED" => {
8750                Some(Self::AtomBootIntegrityInfoReported)
8751            }
8752            "ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED" => {
8753                Some(Self::AtomThreadnetworkTelemetryDataReported)
8754            }
8755            "ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED" => {
8756                Some(Self::AtomThreadnetworkTopoEntryRepeated)
8757            }
8758            "ATOM_THREADNETWORK_DEVICE_INFO_REPORTED" => {
8759                Some(Self::AtomThreadnetworkDeviceInfoReported)
8760            }
8761            "ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED" => {
8762                Some(Self::AtomCellularRadioPowerStateChanged)
8763            }
8764            "ATOM_EMERGENCY_NUMBERS_INFO" => Some(Self::AtomEmergencyNumbersInfo),
8765            "ATOM_DATA_NETWORK_VALIDATION" => Some(Self::AtomDataNetworkValidation),
8766            "ATOM_DATA_RAT_STATE_CHANGED" => Some(Self::AtomDataRatStateChanged),
8767            "ATOM_CONNECTED_CHANNEL_CHANGED" => Some(Self::AtomConnectedChannelChanged),
8768            "ATOM_CELLULAR_IDENTIFIER_DISCLOSED" => {
8769                Some(Self::AtomCellularIdentifierDisclosed)
8770            }
8771            "ATOM_SATELLITE_CONTROLLER" => Some(Self::AtomSatelliteController),
8772            "ATOM_SATELLITE_SESSION" => Some(Self::AtomSatelliteSession),
8773            "ATOM_SATELLITE_INCOMING_DATAGRAM" => {
8774                Some(Self::AtomSatelliteIncomingDatagram)
8775            }
8776            "ATOM_SATELLITE_OUTGOING_DATAGRAM" => {
8777                Some(Self::AtomSatelliteOutgoingDatagram)
8778            }
8779            "ATOM_SATELLITE_PROVISION" => Some(Self::AtomSatelliteProvision),
8780            "ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER" => {
8781                Some(Self::AtomSatelliteSosMessageRecommender)
8782            }
8783            "ATOM_CARRIER_ROAMING_SATELLITE_SESSION" => {
8784                Some(Self::AtomCarrierRoamingSatelliteSession)
8785            }
8786            "ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS" => {
8787                Some(Self::AtomCarrierRoamingSatelliteControllerStats)
8788            }
8789            "ATOM_CONTROLLER_STATS_PER_PACKAGE" => {
8790                Some(Self::AtomControllerStatsPerPackage)
8791            }
8792            "ATOM_SATELLITE_ENTITLEMENT" => Some(Self::AtomSatelliteEntitlement),
8793            "ATOM_SATELLITE_CONFIG_UPDATER" => Some(Self::AtomSatelliteConfigUpdater),
8794            "ATOM_SATELLITE_ACCESS_CONTROLLER" => {
8795                Some(Self::AtomSatelliteAccessController)
8796            }
8797            "ATOM_QUALIFIED_RAT_LIST_CHANGED" => Some(Self::AtomQualifiedRatListChanged),
8798            "ATOM_QNS_IMS_CALL_DROP_STATS" => Some(Self::AtomQnsImsCallDropStats),
8799            "ATOM_QNS_FALLBACK_RESTRICTION_CHANGED" => {
8800                Some(Self::AtomQnsFallbackRestrictionChanged)
8801            }
8802            "ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO" => {
8803                Some(Self::AtomQnsRatPreferenceMismatchInfo)
8804            }
8805            "ATOM_QNS_HANDOVER_TIME_MILLIS" => Some(Self::AtomQnsHandoverTimeMillis),
8806            "ATOM_QNS_HANDOVER_PINGPONG" => Some(Self::AtomQnsHandoverPingpong),
8807            "ATOM_IWLAN_UNDERLYING_NETWORK_VALIDATION_RESULT_REPORTED" => {
8808                Some(Self::AtomIwlanUnderlyingNetworkValidationResultReported)
8809            }
8810            "ATOM_EMERGENCY_NUMBER_DIALED" => Some(Self::AtomEmergencyNumberDialed),
8811            "ATOM_CALL_STATS" => Some(Self::AtomCallStats),
8812            "ATOM_CALL_AUDIO_ROUTE_STATS" => Some(Self::AtomCallAudioRouteStats),
8813            "ATOM_TELECOM_API_STATS" => Some(Self::AtomTelecomApiStats),
8814            "ATOM_TELECOM_ERROR_STATS" => Some(Self::AtomTelecomErrorStats),
8815            "ATOM_LOCKSCREEN_SHORTCUT_SELECTED" => {
8816                Some(Self::AtomLockscreenShortcutSelected)
8817            }
8818            "ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED" => {
8819                Some(Self::AtomLockscreenShortcutTriggered)
8820            }
8821            "ATOM_LAUNCHER_IMPRESSION_EVENT_V2" => {
8822                Some(Self::AtomLauncherImpressionEventV2)
8823            }
8824            "ATOM_DISPLAY_SWITCH_LATENCY_TRACKED" => {
8825                Some(Self::AtomDisplaySwitchLatencyTracked)
8826            }
8827            "ATOM_NOTIFICATION_LISTENER_SERVICE" => {
8828                Some(Self::AtomNotificationListenerService)
8829            }
8830            "ATOM_NAV_HANDLE_TOUCH_POINTS" => Some(Self::AtomNavHandleTouchPoints),
8831            "ATOM_COMMUNAL_HUB_WIDGET_EVENT_REPORTED" => {
8832                Some(Self::AtomCommunalHubWidgetEventReported)
8833            }
8834            "ATOM_PERIPHERAL_TUTORIAL_LAUNCHED" => {
8835                Some(Self::AtomPeripheralTutorialLaunched)
8836            }
8837            "ATOM_CONTEXTUAL_EDUCATION_TRIGGERED" => {
8838                Some(Self::AtomContextualEducationTriggered)
8839            }
8840            "ATOM_COMMUNAL_HUB_SNAPSHOT" => Some(Self::AtomCommunalHubSnapshot),
8841            "ATOM_TEST_EXTENSION_ATOM_REPORTED" => {
8842                Some(Self::AtomTestExtensionAtomReported)
8843            }
8844            "ATOM_TEST_RESTRICTED_ATOM_REPORTED" => {
8845                Some(Self::AtomTestRestrictedAtomReported)
8846            }
8847            "ATOM_STATS_SOCKET_LOSS_REPORTED" => Some(Self::AtomStatsSocketLossReported),
8848            "ATOM_SETTINGS_SPA_REPORTED" => Some(Self::AtomSettingsSpaReported),
8849            "ATOM_SELINUX_AUDIT_LOG" => Some(Self::AtomSelinuxAuditLog),
8850            "ATOM_SANDBOX_API_CALLED" => Some(Self::AtomSandboxApiCalled),
8851            "ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED" => {
8852                Some(Self::AtomSandboxActivityEventOccurred)
8853            }
8854            "ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION" => {
8855                Some(Self::AtomSdkSandboxRestrictedAccessInSession)
8856            }
8857            "ATOM_SANDBOX_SDK_STORAGE" => Some(Self::AtomSandboxSdkStorage),
8858            "ATOM_RKPD_POOL_STATS" => Some(Self::AtomRkpdPoolStats),
8859            "ATOM_RKPD_CLIENT_OPERATION" => Some(Self::AtomRkpdClientOperation),
8860            "ATOM_RANGING_SESSION_CONFIGURED" => Some(Self::AtomRangingSessionConfigured),
8861            "ATOM_RANGING_SESSION_STARTED" => Some(Self::AtomRangingSessionStarted),
8862            "ATOM_RANGING_SESSION_CLOSED" => Some(Self::AtomRangingSessionClosed),
8863            "ATOM_RANGING_TECHNOLOGY_STARTED" => Some(Self::AtomRangingTechnologyStarted),
8864            "ATOM_RANGING_TECHNOLOGY_STOPPED" => Some(Self::AtomRangingTechnologyStopped),
8865            "ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED" => {
8866                Some(Self::AtomMediaProviderDatabaseRollbackReported)
8867            }
8868            "ATOM_BACKUP_SETUP_STATUS_REPORTED" => {
8869                Some(Self::AtomBackupSetupStatusReported)
8870            }
8871            "ATOM_SCREEN_OFF_REPORTED" => Some(Self::AtomScreenOffReported),
8872            "ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED" => {
8873                Some(Self::AtomScreenTimeoutOverrideReported)
8874            }
8875            "ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED" => {
8876                Some(Self::AtomScreenInteractiveSessionReported)
8877            }
8878            "ATOM_SCREEN_DIM_REPORTED" => Some(Self::AtomScreenDimReported),
8879            "ATOM_ATOM_9999" => Some(Self::AtomAtom9999),
8880            "ATOM_ATOM_99999" => Some(Self::AtomAtom99999),
8881            "ATOM_PHOTOPICKER_SESSION_INFO_REPORTED" => {
8882                Some(Self::AtomPhotopickerSessionInfoReported)
8883            }
8884            "ATOM_PHOTOPICKER_API_INFO_REPORTED" => {
8885                Some(Self::AtomPhotopickerApiInfoReported)
8886            }
8887            "ATOM_PHOTOPICKER_UI_EVENT_LOGGED" => {
8888                Some(Self::AtomPhotopickerUiEventLogged)
8889            }
8890            "ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED" => {
8891                Some(Self::AtomPhotopickerMediaItemStatusReported)
8892            }
8893            "ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED" => {
8894                Some(Self::AtomPhotopickerPreviewInfoLogged)
8895            }
8896            "ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED" => {
8897                Some(Self::AtomPhotopickerMenuInteractionLogged)
8898            }
8899            "ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED" => {
8900                Some(Self::AtomPhotopickerBannerInteractionLogged)
8901            }
8902            "ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED" => {
8903                Some(Self::AtomPhotopickerMediaLibraryInfoLogged)
8904            }
8905            "ATOM_PHOTOPICKER_PAGE_INFO_LOGGED" => {
8906                Some(Self::AtomPhotopickerPageInfoLogged)
8907            }
8908            "ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED" => {
8909                Some(Self::AtomPhotopickerMediaGridSyncInfoReported)
8910            }
8911            "ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED" => {
8912                Some(Self::AtomPhotopickerAlbumSyncInfoReported)
8913            }
8914            "ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED" => {
8915                Some(Self::AtomPhotopickerSearchInfoReported)
8916            }
8917            "ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED" => {
8918                Some(Self::AtomSearchDataExtractionDetailsReported)
8919            }
8920            "ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED" => {
8921                Some(Self::AtomEmbeddedPhotopickerInfoReported)
8922            }
8923            "ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED" => {
8924                Some(Self::AtomPermissionRationaleDialogViewed)
8925            }
8926            "ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED" => {
8927                Some(Self::AtomPermissionRationaleDialogActionReported)
8928            }
8929            "ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION" => {
8930                Some(Self::AtomAppDataSharingUpdatesNotificationInteraction)
8931            }
8932            "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED" => {
8933                Some(Self::AtomAppDataSharingUpdatesFragmentViewed)
8934            }
8935            "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED" => {
8936                Some(Self::AtomAppDataSharingUpdatesFragmentActionReported)
8937            }
8938            "ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED" => {
8939                Some(Self::AtomEnhancedConfirmationDialogResultReported)
8940            }
8941            "ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED" => {
8942                Some(Self::AtomEnhancedConfirmationRestrictionCleared)
8943            }
8944            "ATOM_PRESSURE_STALL_INFORMATION" => Some(Self::AtomPressureStallInformation),
8945            "ATOM_PDF_LOAD_REPORTED" => Some(Self::AtomPdfLoadReported),
8946            "ATOM_PDF_API_USAGE_REPORTED" => Some(Self::AtomPdfApiUsageReported),
8947            "ATOM_PDF_SEARCH_REPORTED" => Some(Self::AtomPdfSearchReported),
8948            "ATOM_COMPONENT_STATE_CHANGED_REPORTED" => {
8949                Some(Self::AtomComponentStateChangedReported)
8950            }
8951            "ATOM_ONDEVICEPERSONALIZATION_API_CALLED" => {
8952                Some(Self::AtomOndevicepersonalizationApiCalled)
8953            }
8954            "ATOM_ONDEVICEPERSONALIZATION_TRACE_EVENT" => {
8955                Some(Self::AtomOndevicepersonalizationTraceEvent)
8956            }
8957            "ATOM_NFC_OBSERVE_MODE_STATE_CHANGED" => {
8958                Some(Self::AtomNfcObserveModeStateChanged)
8959            }
8960            "ATOM_NFC_FIELD_CHANGED" => Some(Self::AtomNfcFieldChanged),
8961            "ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED" => {
8962                Some(Self::AtomNfcPollingLoopNotificationReported)
8963            }
8964            "ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED" => {
8965                Some(Self::AtomNfcProprietaryCapabilitiesReported)
8966            }
8967            "ATOM_NFC_EXIT_FRAME_TABLE_CHANGED" => {
8968                Some(Self::AtomNfcExitFrameTableChanged)
8969            }
8970            "ATOM_NFC_AUTO_TRANSACT_REPORTED" => Some(Self::AtomNfcAutoTransactReported),
8971            "ATOM_MICROXR_DEVICE_BOOT_COMPLETE_REPORTED" => {
8972                Some(Self::AtomMicroxrDeviceBootCompleteReported)
8973            }
8974            "ATOM_MTE_STATE" => Some(Self::AtomMteState),
8975            "ATOM_ZRAM_MAINTENANCE_EXECUTED" => Some(Self::AtomZramMaintenanceExecuted),
8976            "ATOM_ZRAM_SETUP_EXECUTED" => Some(Self::AtomZramSetupExecuted),
8977            "ATOM_ZRAM_MM_STAT_MMD" => Some(Self::AtomZramMmStatMmd),
8978            "ATOM_ZRAM_BD_STAT_MMD" => Some(Self::AtomZramBdStatMmd),
8979            "ATOM_MEDIA_EDITING_ENDED_REPORTED" => {
8980                Some(Self::AtomMediaEditingEndedReported)
8981            }
8982            "ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED" => {
8983                Some(Self::AtomMediaCodecReclaimRequestCompleted)
8984            }
8985            "ATOM_MEDIA_CODEC_STARTED" => Some(Self::AtomMediaCodecStarted),
8986            "ATOM_MEDIA_CODEC_STOPPED" => Some(Self::AtomMediaCodecStopped),
8987            "ATOM_MEDIA_CODEC_RENDERED" => Some(Self::AtomMediaCodecRendered),
8988            "ATOM_EMERGENCY_STATE_CHANGED" => Some(Self::AtomEmergencyStateChanged),
8989            "ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED" => {
8990                Some(Self::AtomChreSignificantMotionStateChanged)
8991            }
8992            "ATOM_POPULATION_DENSITY_PROVIDER_LOADING_REPORTED" => {
8993                Some(Self::AtomPopulationDensityProviderLoadingReported)
8994            }
8995            "ATOM_DENSITY_BASED_COARSE_LOCATIONS_USAGE_REPORTED" => {
8996                Some(Self::AtomDensityBasedCoarseLocationsUsageReported)
8997            }
8998            "ATOM_DENSITY_BASED_COARSE_LOCATIONS_PROVIDER_QUERY_REPORTED" => {
8999                Some(Self::AtomDensityBasedCoarseLocationsProviderQueryReported)
9000            }
9001            "ATOM_KERNEL_OOM_KILL_OCCURRED" => Some(Self::AtomKernelOomKillOccurred),
9002            "ATOM_KEYBOARD_CONFIGURED" => Some(Self::AtomKeyboardConfigured),
9003            "ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED" => {
9004                Some(Self::AtomKeyboardSystemsEventReported)
9005            }
9006            "ATOM_INPUTDEVICE_USAGE_REPORTED" => Some(Self::AtomInputdeviceUsageReported),
9007            "ATOM_INPUT_EVENT_LATENCY_REPORTED" => {
9008                Some(Self::AtomInputEventLatencyReported)
9009            }
9010            "ATOM_TOUCHPAD_USAGE" => Some(Self::AtomTouchpadUsage),
9011            "ATOM_IKE_SESSION_TERMINATED" => Some(Self::AtomIkeSessionTerminated),
9012            "ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED" => {
9013                Some(Self::AtomIkeLivenessCheckSessionValidated)
9014            }
9015            "ATOM_NEGOTIATED_SECURITY_ASSOCIATION" => {
9016                Some(Self::AtomNegotiatedSecurityAssociation)
9017            }
9018            "ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED" => {
9019                Some(Self::AtomHotwordEgressSizeAtomReported)
9020            }
9021            "ATOM_HEALTH_CONNECT_UI_IMPRESSION" => {
9022                Some(Self::AtomHealthConnectUiImpression)
9023            }
9024            "ATOM_HEALTH_CONNECT_UI_INTERACTION" => {
9025                Some(Self::AtomHealthConnectUiInteraction)
9026            }
9027            "ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED" => {
9028                Some(Self::AtomHealthConnectAppOpenedReported)
9029            }
9030            "ATOM_HEALTH_CONNECT_API_CALLED" => Some(Self::AtomHealthConnectApiCalled),
9031            "ATOM_HEALTH_CONNECT_USAGE_STATS" => Some(Self::AtomHealthConnectUsageStats),
9032            "ATOM_HEALTH_CONNECT_STORAGE_STATS" => {
9033                Some(Self::AtomHealthConnectStorageStats)
9034            }
9035            "ATOM_HEALTH_CONNECT_API_INVOKED" => Some(Self::AtomHealthConnectApiInvoked),
9036            "ATOM_EXERCISE_ROUTE_API_CALLED" => Some(Self::AtomExerciseRouteApiCalled),
9037            "ATOM_HEALTH_CONNECT_EXPORT_INVOKED" => {
9038                Some(Self::AtomHealthConnectExportInvoked)
9039            }
9040            "ATOM_HEALTH_CONNECT_IMPORT_INVOKED" => {
9041                Some(Self::AtomHealthConnectImportInvoked)
9042            }
9043            "ATOM_HEALTH_CONNECT_EXPORT_IMPORT_STATS_REPORTED" => {
9044                Some(Self::AtomHealthConnectExportImportStatsReported)
9045            }
9046            "ATOM_HEALTH_CONNECT_PERMISSION_STATS" => {
9047                Some(Self::AtomHealthConnectPermissionStats)
9048            }
9049            "ATOM_HEALTH_CONNECT_PHR_API_INVOKED" => {
9050                Some(Self::AtomHealthConnectPhrApiInvoked)
9051            }
9052            "ATOM_HEALTH_CONNECT_PHR_USAGE_STATS" => {
9053                Some(Self::AtomHealthConnectPhrUsageStats)
9054            }
9055            "ATOM_HEALTH_CONNECT_PHR_STORAGE_STATS" => {
9056                Some(Self::AtomHealthConnectPhrStorageStats)
9057            }
9058            "ATOM_HEALTH_CONNECT_RESTRICTED_ECOSYSTEM_STATS" => {
9059                Some(Self::AtomHealthConnectRestrictedEcosystemStats)
9060            }
9061            "ATOM_HEALTH_CONNECT_ECOSYSTEM_STATS" => {
9062                Some(Self::AtomHealthConnectEcosystemStats)
9063            }
9064            "ATOM_HDMI_EARC_STATUS_REPORTED" => Some(Self::AtomHdmiEarcStatusReported),
9065            "ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED" => {
9066                Some(Self::AtomHdmiSoundbarModeStatusReported)
9067            }
9068            "ATOM_HDMI_POWER_STATE_CHANGE_ON_ACTIVE_SOURCE_LOST_TOGGLED" => {
9069                Some(Self::AtomHdmiPowerStateChangeOnActiveSourceLostToggled)
9070            }
9071            "ATOM_BATTERY_HEALTH" => Some(Self::AtomBatteryHealth),
9072            "ATOM_BIOMETRIC_UNENROLLED" => Some(Self::AtomBiometricUnenrolled),
9073            "ATOM_BIOMETRIC_ENUMERATED" => Some(Self::AtomBiometricEnumerated),
9074            "ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED" => {
9075                Some(Self::AtomApplicationGrammaticalInflectionChanged)
9076            }
9077            "ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED" => {
9078                Some(Self::AtomSystemGrammaticalInflectionChanged)
9079            }
9080            "ATOM_FULL_SCREEN_INTENT_LAUNCHED" => {
9081                Some(Self::AtomFullScreenIntentLaunched)
9082            }
9083            "ATOM_BAL_ALLOWED" => Some(Self::AtomBalAllowed),
9084            "ATOM_IN_TASK_ACTIVITY_STARTED" => Some(Self::AtomInTaskActivityStarted),
9085            "ATOM_DEVICE_ORIENTATION_CHANGED" => Some(Self::AtomDeviceOrientationChanged),
9086            "ATOM_CACHED_APPS_HIGH_WATERMARK" => Some(Self::AtomCachedAppsHighWatermark),
9087            "ATOM_STYLUS_PREDICTION_METRICS_REPORTED" => {
9088                Some(Self::AtomStylusPredictionMetricsReported)
9089            }
9090            "ATOM_USER_RISK_EVENT_REPORTED" => Some(Self::AtomUserRiskEventReported),
9091            "ATOM_MEDIA_PROJECTION_STATE_CHANGED" => {
9092                Some(Self::AtomMediaProjectionStateChanged)
9093            }
9094            "ATOM_MEDIA_PROJECTION_TARGET_CHANGED" => {
9095                Some(Self::AtomMediaProjectionTargetChanged)
9096            }
9097            "ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED" => {
9098                Some(Self::AtomExcessiveBinderProxyCountReported)
9099            }
9100            "ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG" => {
9101                Some(Self::AtomProxyBytesTransferByFgBg)
9102            }
9103            "ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE" => {
9104                Some(Self::AtomMobileBytesTransferByProcState)
9105            }
9106            "ATOM_BIOMETRIC_FRR_NOTIFICATION" => Some(Self::AtomBiometricFrrNotification),
9107            "ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION" => {
9108                Some(Self::AtomSensitiveContentMediaProjectionSession)
9109            }
9110            "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION" => {
9111                Some(Self::AtomSensitiveNotificationAppProtectionSession)
9112            }
9113            "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED" => {
9114                Some(Self::AtomSensitiveNotificationAppProtectionApplied)
9115            }
9116            "ATOM_SENSITIVE_NOTIFICATION_REDACTION" => {
9117                Some(Self::AtomSensitiveNotificationRedaction)
9118            }
9119            "ATOM_SENSITIVE_CONTENT_APP_PROTECTION" => {
9120                Some(Self::AtomSensitiveContentAppProtection)
9121            }
9122            "ATOM_APP_RESTRICTION_STATE_CHANGED" => {
9123                Some(Self::AtomAppRestrictionStateChanged)
9124            }
9125            "ATOM_BATTERY_USAGE_STATS_PER_UID" => Some(Self::AtomBatteryUsageStatsPerUid),
9126            "ATOM_POSTGC_MEMORY_SNAPSHOT" => Some(Self::AtomPostgcMemorySnapshot),
9127            "ATOM_POWER_SAVE_TEMP_ALLOWLIST_CHANGED" => {
9128                Some(Self::AtomPowerSaveTempAllowlistChanged)
9129            }
9130            "ATOM_APP_OP_ACCESS_TRACKED" => Some(Self::AtomAppOpAccessTracked),
9131            "ATOM_CONTENT_OR_FILE_URI_EVENT_REPORTED" => {
9132                Some(Self::AtomContentOrFileUriEventReported)
9133            }
9134            "ATOM_DEVICE_IDLE_TEMP_ALLOWLIST_UPDATED" => {
9135                Some(Self::AtomDeviceIdleTempAllowlistUpdated)
9136            }
9137            "ATOM_APP_OP_NOTE_OP_OR_CHECK_OP_BINDER_API_CALLED" => {
9138                Some(Self::AtomAppOpNoteOpOrCheckOpBinderApiCalled)
9139            }
9140            "ATOM_FRAMEWORK_WAKELOCK_INFO" => Some(Self::AtomFrameworkWakelockInfo),
9141            "ATOM_JANK_FRAME_COUNT_BY_WIDGET_REPORTED" => {
9142                Some(Self::AtomJankFrameCountByWidgetReported)
9143            }
9144            "ATOM_INTENT_CREATOR_TOKEN_ADDED" => Some(Self::AtomIntentCreatorTokenAdded),
9145            "ATOM_NOTIFICATION_CHANNEL_CLASSIFICATION" => {
9146                Some(Self::AtomNotificationChannelClassification)
9147            }
9148            "ATOM_CAMERA_STATUS_FOR_COMPATIBILITY_CHANGED" => {
9149                Some(Self::AtomCameraStatusForCompatibilityChanged)
9150            }
9151            "ATOM_FEDERATED_COMPUTE_API_CALLED" => {
9152                Some(Self::AtomFederatedComputeApiCalled)
9153            }
9154            "ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED" => {
9155                Some(Self::AtomFederatedComputeTrainingEventReported)
9156            }
9157            "ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED" => {
9158                Some(Self::AtomExampleIteratorNextLatencyReported)
9159            }
9160            "ATOM_FEDERATED_COMPUTE_TRACE_EVENT_REPORTED" => {
9161                Some(Self::AtomFederatedComputeTraceEventReported)
9162            }
9163            "ATOM_EXPRESS_EVENT_REPORTED" => Some(Self::AtomExpressEventReported),
9164            "ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED" => {
9165                Some(Self::AtomExpressHistogramSampleReported)
9166            }
9167            "ATOM_EXPRESS_UID_EVENT_REPORTED" => Some(Self::AtomExpressUidEventReported),
9168            "ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED" => {
9169                Some(Self::AtomExpressUidHistogramSampleReported)
9170            }
9171            "ATOM_DREAM_SETTING_CHANGED" => Some(Self::AtomDreamSettingChanged),
9172            "ATOM_DREAM_SETTING_SNAPSHOT" => Some(Self::AtomDreamSettingSnapshot),
9173            "ATOM_DND_STATE_CHANGED" => Some(Self::AtomDndStateChanged),
9174            "ATOM_EXTERNAL_DISPLAY_STATE_CHANGED" => {
9175                Some(Self::AtomExternalDisplayStateChanged)
9176            }
9177            "ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED" => {
9178                Some(Self::AtomDisplayModeDirectorVoteChanged)
9179            }
9180            "ATOM_DEVICE_POLICY_MANAGEMENT_MODE" => {
9181                Some(Self::AtomDevicePolicyManagementMode)
9182            }
9183            "ATOM_DEVICE_POLICY_STATE" => Some(Self::AtomDevicePolicyState),
9184            "ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED" => {
9185                Some(Self::AtomDeviceLockCheckInRequestReported)
9186            }
9187            "ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED" => {
9188                Some(Self::AtomDeviceLockProvisioningCompleteReported)
9189            }
9190            "ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED" => {
9191                Some(Self::AtomDeviceLockKioskAppRequestReported)
9192            }
9193            "ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED" => {
9194                Some(Self::AtomDeviceLockCheckInRetryReported)
9195            }
9196            "ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED" => {
9197                Some(Self::AtomDeviceLockProvisionFailureReported)
9198            }
9199            "ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED" => {
9200                Some(Self::AtomDeviceLockLockUnlockDeviceFailureReported)
9201            }
9202            "ATOM_DESKTOP_MODE_UI_CHANGED" => Some(Self::AtomDesktopModeUiChanged),
9203            "ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE" => {
9204                Some(Self::AtomDesktopModeSessionTaskUpdate)
9205            }
9206            "ATOM_DESKTOP_MODE_TASK_SIZE_UPDATED" => {
9207                Some(Self::AtomDesktopModeTaskSizeUpdated)
9208            }
9209            "ATOM_CRONET_ENGINE_CREATED" => Some(Self::AtomCronetEngineCreated),
9210            "ATOM_CRONET_TRAFFIC_REPORTED" => Some(Self::AtomCronetTrafficReported),
9211            "ATOM_CRONET_ENGINE_BUILDER_INITIALIZED" => {
9212                Some(Self::AtomCronetEngineBuilderInitialized)
9213            }
9214            "ATOM_CRONET_HTTP_FLAGS_INITIALIZED" => {
9215                Some(Self::AtomCronetHttpFlagsInitialized)
9216            }
9217            "ATOM_CRONET_INITIALIZED" => Some(Self::AtomCronetInitialized),
9218            "ATOM_CREDENTIAL_MANAGER_API_CALLED" => {
9219                Some(Self::AtomCredentialManagerApiCalled)
9220            }
9221            "ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED" => {
9222                Some(Self::AtomCredentialManagerInitPhaseReported)
9223            }
9224            "ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED" => {
9225                Some(Self::AtomCredentialManagerCandidatePhaseReported)
9226            }
9227            "ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED" => {
9228                Some(Self::AtomCredentialManagerFinalPhaseReported)
9229            }
9230            "ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED" => {
9231                Some(Self::AtomCredentialManagerTotalReported)
9232            }
9233            "ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED" => {
9234                Some(Self::AtomCredentialManagerFinalnouidReported)
9235            }
9236            "ATOM_CREDENTIAL_MANAGER_GET_REPORTED" => {
9237                Some(Self::AtomCredentialManagerGetReported)
9238            }
9239            "ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED" => {
9240                Some(Self::AtomCredentialManagerAuthClickReported)
9241            }
9242            "ATOM_CREDENTIAL_MANAGER_APIV2_CALLED" => {
9243                Some(Self::AtomCredentialManagerApiv2Called)
9244            }
9245            "ATOM_CPU_POLICY" => Some(Self::AtomCpuPolicy),
9246            "ATOM_VPN_CONNECTION_STATE_CHANGED" => {
9247                Some(Self::AtomVpnConnectionStateChanged)
9248            }
9249            "ATOM_VPN_CONNECTION_REPORTED" => Some(Self::AtomVpnConnectionReported),
9250            "ATOM_IP_CLIENT_RA_INFO_REPORTED" => Some(Self::AtomIpClientRaInfoReported),
9251            "ATOM_APF_SESSION_INFO_REPORTED" => Some(Self::AtomApfSessionInfoReported),
9252            "ATOM_CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED" => {
9253                Some(Self::AtomCoreNetworkingTerribleErrorOccurred)
9254            }
9255            "ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED" => {
9256                Some(Self::AtomNetworkStatsRecorderFileOperated)
9257            }
9258            "ATOM_DAILY_KEEPALIVE_INFO_REPORTED" => {
9259                Some(Self::AtomDailyKeepaliveInfoReported)
9260            }
9261            "ATOM_NETWORK_REQUEST_STATE_CHANGED" => {
9262                Some(Self::AtomNetworkRequestStateChanged)
9263            }
9264            "ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED" => {
9265                Some(Self::AtomTetheringActiveSessionsReported)
9266            }
9267            "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_STATE_CHANGED" => {
9268                Some(Self::AtomCertificateTransparencyLogListUpdateStateChanged)
9269            }
9270            "ATOM_HARDWARE_RENDERER_EVENT" => Some(Self::AtomHardwareRendererEvent),
9271            "ATOM_TEXTURE_VIEW_EVENT" => Some(Self::AtomTextureViewEvent),
9272            "ATOM_SURFACE_CONTROL_EVENT" => Some(Self::AtomSurfaceControlEvent),
9273            "ATOM_IMAGE_DECODED" => Some(Self::AtomImageDecoded),
9274            "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_STATE_CHANGED" => {
9275                Some(Self::AtomCertificateTransparencyLogListStateChanged)
9276            }
9277            "ATOM_CONSCRYPT_SERVICE_USED" => Some(Self::AtomConscryptServiceUsed),
9278            "ATOM_CERTIFICATE_TRANSPARENCY_VERIFICATION_REPORTED" => {
9279                Some(Self::AtomCertificateTransparencyVerificationReported)
9280            }
9281            "ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT" => {
9282                Some(Self::AtomCameraFeatureCombinationQueryEvent)
9283            }
9284            "ATOM_BROADCAST_SENT" => Some(Self::AtomBroadcastSent),
9285            "ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED" => {
9286                Some(Self::AtomBluetoothHashedDeviceNameReported)
9287            }
9288            "ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION" => {
9289                Some(Self::AtomBluetoothL2capCocClientConnection)
9290            }
9291            "ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION" => {
9292                Some(Self::AtomBluetoothL2capCocServerConnection)
9293            }
9294            "ATOM_BLUETOOTH_LE_SESSION_CONNECTED" => {
9295                Some(Self::AtomBluetoothLeSessionConnected)
9296            }
9297            "ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED" => {
9298                Some(Self::AtomRestrictedBluetoothDeviceNameReported)
9299            }
9300            "ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED" => {
9301                Some(Self::AtomBluetoothProfileConnectionAttempted)
9302            }
9303            "ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED" => {
9304                Some(Self::AtomBluetoothContentProfileErrorReported)
9305            }
9306            "ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED" => {
9307                Some(Self::AtomBluetoothRfcommConnectionAttempted)
9308            }
9309            "ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID" => {
9310                Some(Self::AtomRemoteDeviceInformationWithMetricId)
9311            }
9312            "ATOM_LE_APP_SCAN_STATE_CHANGED" => Some(Self::AtomLeAppScanStateChanged),
9313            "ATOM_LE_RADIO_SCAN_STOPPED" => Some(Self::AtomLeRadioScanStopped),
9314            "ATOM_LE_SCAN_RESULT_RECEIVED" => Some(Self::AtomLeScanResultReceived),
9315            "ATOM_LE_SCAN_ABUSED" => Some(Self::AtomLeScanAbused),
9316            "ATOM_LE_ADV_STATE_CHANGED" => Some(Self::AtomLeAdvStateChanged),
9317            "ATOM_LE_ADV_ERROR_REPORTED" => Some(Self::AtomLeAdvErrorReported),
9318            "ATOM_A2DP_SESSION_REPORTED" => Some(Self::AtomA2dpSessionReported),
9319            "ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED" => {
9320                Some(Self::AtomBluetoothCrossLayerEventReported)
9321            }
9322            "ATOM_BROADCAST_AUDIO_SESSION_REPORTED" => {
9323                Some(Self::AtomBroadcastAudioSessionReported)
9324            }
9325            "ATOM_BROADCAST_AUDIO_SYNC_REPORTED" => {
9326                Some(Self::AtomBroadcastAudioSyncReported)
9327            }
9328            "ATOM_BLUETOOTH_RFCOMM_CONNECTION_REPORTED_AT_CLOSE" => {
9329                Some(Self::AtomBluetoothRfcommConnectionReportedAtClose)
9330            }
9331            "ATOM_BLUETOOTH_LE_CONNECTION" => Some(Self::AtomBluetoothLeConnection),
9332            "ATOM_HEARING_DEVICE_ACTIVE_EVENT_REPORTED" => {
9333                Some(Self::AtomHearingDeviceActiveEventReported)
9334            }
9335            "ATOM_BACKPORTED_FIX_STATUS_REPORTED" => {
9336                Some(Self::AtomBackportedFixStatusReported)
9337            }
9338            "ATOM_PLUGIN_INITIALIZED" => Some(Self::AtomPluginInitialized),
9339            "ATOM_CAR_SYSTEM_UI_DATA_SUBSCRIPTION_EVENT_REPORTED" => {
9340                Some(Self::AtomCarSystemUiDataSubscriptionEventReported)
9341            }
9342            "ATOM_CAR_SETTINGS_DATA_SUBSCRIPTION_EVENT_REPORTED" => {
9343                Some(Self::AtomCarSettingsDataSubscriptionEventReported)
9344            }
9345            "ATOM_CAR_QC_LIB_EVENT_REPORTED" => Some(Self::AtomCarQcLibEventReported),
9346            "ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED" => {
9347                Some(Self::AtomCarWakeupFromSuspendReported)
9348            }
9349            "ATOM_CAR_RECENTS_EVENT_REPORTED" => Some(Self::AtomCarRecentsEventReported),
9350            "ATOM_CAR_CALM_MODE_EVENT_REPORTED" => {
9351                Some(Self::AtomCarCalmModeEventReported)
9352            }
9353            "ATOM_AUTOFILL_UI_EVENT_REPORTED" => Some(Self::AtomAutofillUiEventReported),
9354            "ATOM_AUTOFILL_FILL_REQUEST_REPORTED" => {
9355                Some(Self::AtomAutofillFillRequestReported)
9356            }
9357            "ATOM_AUTOFILL_FILL_RESPONSE_REPORTED" => {
9358                Some(Self::AtomAutofillFillResponseReported)
9359            }
9360            "ATOM_AUTOFILL_SAVE_EVENT_REPORTED" => {
9361                Some(Self::AtomAutofillSaveEventReported)
9362            }
9363            "ATOM_AUTOFILL_SESSION_COMMITTED" => Some(Self::AtomAutofillSessionCommitted),
9364            "ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED" => {
9365                Some(Self::AtomAutofillFieldClassificationEventReported)
9366            }
9367            "ATOM_ODREFRESH_REPORTED" => Some(Self::AtomOdrefreshReported),
9368            "ATOM_ODSIGN_REPORTED" => Some(Self::AtomOdsignReported),
9369            "ATOM_BACKGROUND_DEXOPT_JOB_ENDED" => {
9370                Some(Self::AtomBackgroundDexoptJobEnded)
9371            }
9372            "ATOM_PREREBOOT_DEXOPT_JOB_ENDED" => Some(Self::AtomPrerebootDexoptJobEnded),
9373            "ATOM_ART_DATUM_REPORTED" => Some(Self::AtomArtDatumReported),
9374            "ATOM_ART_DEVICE_DATUM_REPORTED" => Some(Self::AtomArtDeviceDatumReported),
9375            "ATOM_ART_DATUM_DELTA_REPORTED" => Some(Self::AtomArtDatumDeltaReported),
9376            "ATOM_ART_DEX2OAT_REPORTED" => Some(Self::AtomArtDex2oatReported),
9377            "ATOM_ART_DEVICE_STATUS" => Some(Self::AtomArtDeviceStatus),
9378            "ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED" => {
9379                Some(Self::AtomAppSearchSetSchemaStatsReported)
9380            }
9381            "ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED" => {
9382                Some(Self::AtomAppSearchSchemaMigrationStatsReported)
9383            }
9384            "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED" => {
9385                Some(Self::AtomAppSearchUsageSearchIntentStatsReported)
9386            }
9387            "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED" => {
9388                Some(Self::AtomAppSearchUsageSearchIntentRawQueryStatsReported)
9389            }
9390            "ATOM_APP_SEARCH_APPS_INDEXER_STATS_REPORTED" => {
9391                Some(Self::AtomAppSearchAppsIndexerStatsReported)
9392            }
9393            "ATOM_APP_FUNCTIONS_REQUEST_REPORTED" => {
9394                Some(Self::AtomAppFunctionsRequestReported)
9395            }
9396            "ATOM_APEX_INSTALLATION_REQUESTED" => {
9397                Some(Self::AtomApexInstallationRequested)
9398            }
9399            "ATOM_APEX_INSTALLATION_STAGED" => Some(Self::AtomApexInstallationStaged),
9400            "ATOM_APEX_INSTALLATION_ENDED" => Some(Self::AtomApexInstallationEnded),
9401            "ATOM_AI_WALLPAPERS_BUTTON_PRESSED" => {
9402                Some(Self::AtomAiWallpapersButtonPressed)
9403            }
9404            "ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED" => {
9405                Some(Self::AtomAiWallpapersTemplateSelected)
9406            }
9407            "ATOM_AI_WALLPAPERS_TERM_SELECTED" => {
9408                Some(Self::AtomAiWallpapersTermSelected)
9409            }
9410            "ATOM_AI_WALLPAPERS_WALLPAPER_SET" => {
9411                Some(Self::AtomAiWallpapersWallpaperSet)
9412            }
9413            "ATOM_AI_WALLPAPERS_SESSION_SUMMARY" => {
9414                Some(Self::AtomAiWallpapersSessionSummary)
9415            }
9416            "ATOM_JSSCRIPTENGINE_LATENCY_REPORTED" => {
9417                Some(Self::AtomJsscriptengineLatencyReported)
9418            }
9419            "ATOM_AD_SERVICES_API_CALLED" => Some(Self::AtomAdServicesApiCalled),
9420            "ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED" => {
9421                Some(Self::AtomAdServicesMesurementReportsUploaded)
9422            }
9423            "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED" => {
9424                Some(Self::AtomMobileDataDownloadFileGroupStatusReported)
9425            }
9426            "ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED" => {
9427                Some(Self::AtomMobileDataDownloadDownloadResultReported)
9428            }
9429            "ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED" => {
9430                Some(Self::AtomAdServicesSettingsUsageReported)
9431            }
9432            "ATOM_BACKGROUND_FETCH_PROCESS_REPORTED" => {
9433                Some(Self::AtomBackgroundFetchProcessReported)
9434            }
9435            "ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED" => {
9436                Some(Self::AtomUpdateCustomAudienceProcessReported)
9437            }
9438            "ATOM_RUN_AD_BIDDING_PROCESS_REPORTED" => {
9439                Some(Self::AtomRunAdBiddingProcessReported)
9440            }
9441            "ATOM_RUN_AD_SCORING_PROCESS_REPORTED" => {
9442                Some(Self::AtomRunAdScoringProcessReported)
9443            }
9444            "ATOM_RUN_AD_SELECTION_PROCESS_REPORTED" => {
9445                Some(Self::AtomRunAdSelectionProcessReported)
9446            }
9447            "ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED" => {
9448                Some(Self::AtomRunAdBiddingPerCaProcessReported)
9449            }
9450            "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED" => {
9451                Some(Self::AtomMobileDataDownloadFileGroupStorageStatsReported)
9452            }
9453            "ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS" => {
9454                Some(Self::AtomAdServicesMeasurementRegistrations)
9455            }
9456            "ATOM_AD_SERVICES_GET_TOPICS_REPORTED" => {
9457                Some(Self::AtomAdServicesGetTopicsReported)
9458            }
9459            "ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED" => {
9460                Some(Self::AtomAdServicesEpochComputationGetTopTopicsReported)
9461            }
9462            "ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED" => {
9463                Some(Self::AtomAdServicesEpochComputationClassifierReported)
9464            }
9465            "ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED" => {
9466                Some(Self::AtomAdServicesBackCompatGetTopicsReported)
9467            }
9468            "ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED" => {
9469                Some(Self::AtomAdServicesBackCompatEpochComputationClassifierReported)
9470            }
9471            "ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS" => {
9472                Some(Self::AtomAdServicesMeasurementDebugKeys)
9473            }
9474            "ATOM_AD_SERVICES_ERROR_REPORTED" => Some(Self::AtomAdServicesErrorReported),
9475            "ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED" => {
9476                Some(Self::AtomAdServicesBackgroundJobsExecutionReported)
9477            }
9478            "ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION" => {
9479                Some(Self::AtomAdServicesMeasurementDelayedSourceRegistration)
9480            }
9481            "ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION" => {
9482                Some(Self::AtomAdServicesMeasurementAttribution)
9483            }
9484            "ATOM_AD_SERVICES_MEASUREMENT_JOBS" => {
9485                Some(Self::AtomAdServicesMeasurementJobs)
9486            }
9487            "ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT" => {
9488                Some(Self::AtomAdServicesMeasurementWipeout)
9489            }
9490            "ATOM_AD_SERVICES_MEASUREMENT_AD_ID_MATCH_FOR_DEBUG_KEYS" => {
9491                Some(Self::AtomAdServicesMeasurementAdIdMatchForDebugKeys)
9492            }
9493            "ATOM_AD_SERVICES_ENROLLMENT_DATA_STORED" => {
9494                Some(Self::AtomAdServicesEnrollmentDataStored)
9495            }
9496            "ATOM_AD_SERVICES_ENROLLMENT_FILE_DOWNLOADED" => {
9497                Some(Self::AtomAdServicesEnrollmentFileDownloaded)
9498            }
9499            "ATOM_AD_SERVICES_ENROLLMENT_MATCHED" => {
9500                Some(Self::AtomAdServicesEnrollmentMatched)
9501            }
9502            "ATOM_AD_SERVICES_CONSENT_MIGRATED" => {
9503                Some(Self::AtomAdServicesConsentMigrated)
9504            }
9505            "ATOM_AD_SERVICES_ENROLLMENT_FAILED" => {
9506                Some(Self::AtomAdServicesEnrollmentFailed)
9507            }
9508            "ATOM_AD_SERVICES_MEASUREMENT_CLICK_VERIFICATION" => {
9509                Some(Self::AtomAdServicesMeasurementClickVerification)
9510            }
9511            "ATOM_AD_SERVICES_ENCRYPTION_KEY_FETCHED" => {
9512                Some(Self::AtomAdServicesEncryptionKeyFetched)
9513            }
9514            "ATOM_AD_SERVICES_ENCRYPTION_KEY_DB_TRANSACTION_ENDED" => {
9515                Some(Self::AtomAdServicesEncryptionKeyDbTransactionEnded)
9516            }
9517            "ATOM_DESTINATION_REGISTERED_BEACONS" => {
9518                Some(Self::AtomDestinationRegisteredBeacons)
9519            }
9520            "ATOM_REPORT_INTERACTION_API_CALLED" => {
9521                Some(Self::AtomReportInteractionApiCalled)
9522            }
9523            "ATOM_INTERACTION_REPORTING_TABLE_CLEARED" => {
9524                Some(Self::AtomInteractionReportingTableCleared)
9525            }
9526            "ATOM_APP_MANIFEST_CONFIG_HELPER_CALLED" => {
9527                Some(Self::AtomAppManifestConfigHelperCalled)
9528            }
9529            "ATOM_AD_FILTERING_PROCESS_JOIN_CA_REPORTED" => {
9530                Some(Self::AtomAdFilteringProcessJoinCaReported)
9531            }
9532            "ATOM_AD_FILTERING_PROCESS_AD_SELECTION_REPORTED" => {
9533                Some(Self::AtomAdFilteringProcessAdSelectionReported)
9534            }
9535            "ATOM_AD_COUNTER_HISTOGRAM_UPDATER_REPORTED" => {
9536                Some(Self::AtomAdCounterHistogramUpdaterReported)
9537            }
9538            "ATOM_SIGNATURE_VERIFICATION" => Some(Self::AtomSignatureVerification),
9539            "ATOM_K_ANON_IMMEDIATE_SIGN_JOIN_STATUS_REPORTED" => {
9540                Some(Self::AtomKAnonImmediateSignJoinStatusReported)
9541            }
9542            "ATOM_K_ANON_BACKGROUND_JOB_STATUS_REPORTED" => {
9543                Some(Self::AtomKAnonBackgroundJobStatusReported)
9544            }
9545            "ATOM_K_ANON_INITIALIZE_STATUS_REPORTED" => {
9546                Some(Self::AtomKAnonInitializeStatusReported)
9547            }
9548            "ATOM_K_ANON_SIGN_STATUS_REPORTED" => Some(Self::AtomKAnonSignStatusReported),
9549            "ATOM_K_ANON_JOIN_STATUS_REPORTED" => Some(Self::AtomKAnonJoinStatusReported),
9550            "ATOM_K_ANON_KEY_ATTESTATION_STATUS_REPORTED" => {
9551                Some(Self::AtomKAnonKeyAttestationStatusReported)
9552            }
9553            "ATOM_GET_AD_SELECTION_DATA_API_CALLED" => {
9554                Some(Self::AtomGetAdSelectionDataApiCalled)
9555            }
9556            "ATOM_GET_AD_SELECTION_DATA_BUYER_INPUT_GENERATED" => {
9557                Some(Self::AtomGetAdSelectionDataBuyerInputGenerated)
9558            }
9559            "ATOM_BACKGROUND_JOB_SCHEDULING_REPORTED" => {
9560                Some(Self::AtomBackgroundJobSchedulingReported)
9561            }
9562            "ATOM_TOPICS_ENCRYPTION_EPOCH_COMPUTATION_REPORTED" => {
9563                Some(Self::AtomTopicsEncryptionEpochComputationReported)
9564            }
9565            "ATOM_TOPICS_ENCRYPTION_GET_TOPICS_REPORTED" => {
9566                Some(Self::AtomTopicsEncryptionGetTopicsReported)
9567            }
9568            "ATOM_ADSERVICES_SHELL_COMMAND_CALLED" => {
9569                Some(Self::AtomAdservicesShellCommandCalled)
9570            }
9571            "ATOM_UPDATE_SIGNALS_API_CALLED" => Some(Self::AtomUpdateSignalsApiCalled),
9572            "ATOM_ENCODING_JOB_RUN" => Some(Self::AtomEncodingJobRun),
9573            "ATOM_ENCODING_JS_FETCH" => Some(Self::AtomEncodingJsFetch),
9574            "ATOM_ENCODING_JS_EXECUTION" => Some(Self::AtomEncodingJsExecution),
9575            "ATOM_PERSIST_AD_SELECTION_RESULT_CALLED" => {
9576                Some(Self::AtomPersistAdSelectionResultCalled)
9577            }
9578            "ATOM_SERVER_AUCTION_KEY_FETCH_CALLED" => {
9579                Some(Self::AtomServerAuctionKeyFetchCalled)
9580            }
9581            "ATOM_SERVER_AUCTION_BACKGROUND_KEY_FETCH_ENABLED" => {
9582                Some(Self::AtomServerAuctionBackgroundKeyFetchEnabled)
9583            }
9584            "ATOM_AD_SERVICES_MEASUREMENT_PROCESS_ODP_REGISTRATION" => {
9585                Some(Self::AtomAdServicesMeasurementProcessOdpRegistration)
9586            }
9587            "ATOM_AD_SERVICES_MEASUREMENT_NOTIFY_REGISTRATION_TO_ODP" => {
9588                Some(Self::AtomAdServicesMeasurementNotifyRegistrationToOdp)
9589            }
9590            "ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED" => {
9591                Some(Self::AtomSelectAdsFromOutcomesApiCalled)
9592            }
9593            "ATOM_REPORT_IMPRESSION_API_CALLED" => {
9594                Some(Self::AtomReportImpressionApiCalled)
9595            }
9596            "ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS" => {
9597                Some(Self::AtomAdServicesEnrollmentTransactionStats)
9598            }
9599            "ATOM_AD_SERVICES_COBALT_LOGGER_EVENT_REPORTED" => {
9600                Some(Self::AtomAdServicesCobaltLoggerEventReported)
9601            }
9602            "ATOM_AD_SERVICES_COBALT_PERIODIC_JOB_EVENT_REPORTED" => {
9603                Some(Self::AtomAdServicesCobaltPeriodicJobEventReported)
9604            }
9605            "ATOM_UPDATE_SIGNALS_PROCESS_REPORTED" => {
9606                Some(Self::AtomUpdateSignalsProcessReported)
9607            }
9608            "ATOM_TOPICS_SCHEDULE_EPOCH_JOB_SETTING_REPORTED" => {
9609                Some(Self::AtomTopicsScheduleEpochJobSettingReported)
9610            }
9611            "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_SCHEDULE_ATTEMPTED" => {
9612                Some(Self::AtomScheduledCustomAudienceUpdateScheduleAttempted)
9613            }
9614            "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_PERFORMED" => {
9615                Some(Self::AtomScheduledCustomAudienceUpdatePerformed)
9616            }
9617            "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_PERFORMED_ATTEMPTED_FAILURE_REPORTED" => {
9618                Some(
9619                    Self::AtomScheduledCustomAudienceUpdatePerformedAttemptedFailureReported,
9620                )
9621            }
9622            "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_BACKGROUND_JOB_RAN" => {
9623                Some(Self::AtomScheduledCustomAudienceUpdateBackgroundJobRan)
9624            }
9625            "ATOM_THERMAL_STATUS_CALLED" => Some(Self::AtomThermalStatusCalled),
9626            "ATOM_THERMAL_HEADROOM_CALLED" => Some(Self::AtomThermalHeadroomCalled),
9627            "ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED" => {
9628                Some(Self::AtomThermalHeadroomThresholdsCalled)
9629            }
9630            "ATOM_ADPF_HINT_SESSION_TID_CLEANUP" => {
9631                Some(Self::AtomAdpfHintSessionTidCleanup)
9632            }
9633            "ATOM_THERMAL_HEADROOM_THRESHOLDS" => {
9634                Some(Self::AtomThermalHeadroomThresholds)
9635            }
9636            "ATOM_ADPF_SESSION_SNAPSHOT" => Some(Self::AtomAdpfSessionSnapshot),
9637            "ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED" => {
9638                Some(Self::AtomAdaptiveAuthUnlockAfterLockReported)
9639            }
9640            "ATOM_ACCOUNT_MANAGER_EVENT" => Some(Self::AtomAccountManagerEvent),
9641            "ATOM_ACCESSIBILITY_CHECK_RESULT_REPORTED" => {
9642                Some(Self::AtomAccessibilityCheckResultReported)
9643            }
9644            _ => None,
9645        }
9646    }
9647}
9648/// This file is named 'statsd_tracing_config.proto' rather than
9649/// 'statsd_config.proto' (which would be more consistent with the other
9650/// config protos) so it doesn't show up and confuse folks looking for
9651/// the existing statsd_config.proto for configuring statsd itself.
9652/// Same for the config proto itself.
9653#[derive(Clone, PartialEq, ::prost::Message)]
9654pub struct StatsdTracingConfig {
9655    /// This is for the common case of the atom id being known in the enum AtomId.
9656    #[prost(enumeration = "AtomId", repeated, packed = "false", tag = "1")]
9657    pub push_atom_id: ::prost::alloc::vec::Vec<i32>,
9658    /// Escape hatch for Atom IDs that are not yet in the AtomId enum
9659    /// (e.g. non-upstream atoms that don't exist in AOSP).
9660    #[prost(int32, repeated, packed = "false", tag = "2")]
9661    pub raw_push_atom_id: ::prost::alloc::vec::Vec<i32>,
9662    #[prost(message, repeated, tag = "3")]
9663    pub pull_config: ::prost::alloc::vec::Vec<StatsdPullAtomConfig>,
9664}
9665#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9666pub struct StatsdPullAtomConfig {
9667    #[prost(enumeration = "AtomId", repeated, packed = "false", tag = "1")]
9668    pub pull_atom_id: ::prost::alloc::vec::Vec<i32>,
9669    #[prost(int32, repeated, packed = "false", tag = "2")]
9670    pub raw_pull_atom_id: ::prost::alloc::vec::Vec<i32>,
9671    #[prost(int32, optional, tag = "3")]
9672    pub pull_frequency_ms: ::core::option::Option<i32>,
9673    #[prost(string, repeated, tag = "4")]
9674    pub packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9675}
9676/// Configuration that allows to boost the priority of the 'traced' or
9677/// 'traced_probs' processes, by changing the scheduler configuration.
9678/// Only supported on Linux and Android the boosted process must have
9679/// 'CAP_SYS_NICE' capability.
9680#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9681pub struct PriorityBoostConfig {
9682    #[prost(enumeration = "priority_boost_config::BoostPolicy", optional, tag = "1")]
9683    pub policy: ::core::option::Option<i32>,
9684    #[prost(uint32, optional, tag = "2")]
9685    pub priority: ::core::option::Option<u32>,
9686}
9687/// Nested message and enum types in `PriorityBoostConfig`.
9688pub mod priority_boost_config {
9689    #[derive(
9690        Clone,
9691        Copy,
9692        Debug,
9693        PartialEq,
9694        Eq,
9695        Hash,
9696        PartialOrd,
9697        Ord,
9698        ::prost::Enumeration
9699    )]
9700    #[repr(i32)]
9701    pub enum BoostPolicy {
9702        PolicyUnspecified = 0,
9703        /// The default policy (e.g., CFS on Linux). Priority range: \[0; 20\]
9704        /// priority is interpreted as -(nice), i.e., 1 is slightly higher prio
9705        /// than default 0, 20 is the highest priority.
9706        /// Note: this is the opposite semantic of the cmdline nice, and is done for
9707        /// consistency with POLICY_SCHED_FIFO, so higher number == higher prio.
9708        PolicySchedOther = 1,
9709        /// The Real-time policy, Priority range: \[1; 99\]
9710        PolicySchedFifo = 2,
9711    }
9712    impl BoostPolicy {
9713        /// String value of the enum field names used in the ProtoBuf definition.
9714        ///
9715        /// The values are not transformed in any way and thus are considered stable
9716        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9717        pub fn as_str_name(&self) -> &'static str {
9718            match self {
9719                Self::PolicyUnspecified => "POLICY_UNSPECIFIED",
9720                Self::PolicySchedOther => "POLICY_SCHED_OTHER",
9721                Self::PolicySchedFifo => "POLICY_SCHED_FIFO",
9722            }
9723        }
9724        /// Creates an enum from field names used in the ProtoBuf definition.
9725        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9726            match value {
9727                "POLICY_UNSPECIFIED" => Some(Self::PolicyUnspecified),
9728                "POLICY_SCHED_OTHER" => Some(Self::PolicySchedOther),
9729                "POLICY_SCHED_FIFO" => Some(Self::PolicySchedFifo),
9730                _ => None,
9731            }
9732        }
9733    }
9734}
9735/// Config for polling process-related information from /proc/pid/status and
9736/// related files on Linux.
9737///
9738/// Data source name: "linux.process_stats".
9739#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9740pub struct ProcessStatsConfig {
9741    #[prost(
9742        enumeration = "process_stats_config::Quirks",
9743        repeated,
9744        packed = "false",
9745        tag = "1"
9746    )]
9747    pub quirks: ::prost::alloc::vec::Vec<i32>,
9748    /// If enabled all processes will be scanned and dumped when the trace starts.
9749    #[prost(bool, optional, tag = "2")]
9750    pub scan_all_processes_on_start: ::core::option::Option<bool>,
9751    /// If enabled thread names are also recoded (this is redundant if sched_switch
9752    /// is enabled).
9753    #[prost(bool, optional, tag = "3")]
9754    pub record_thread_names: ::core::option::Option<bool>,
9755    /// If > 0 samples counters (see process_stats.proto) from
9756    /// /proc/pid/status and oom_score_adj every X ms.
9757    /// This is required to be > 100ms to avoid excessive CPU usage.
9758    #[prost(uint32, optional, tag = "4")]
9759    pub proc_stats_poll_ms: ::core::option::Option<u32>,
9760    /// Explicit caching period during which the polling won't re-emit identical
9761    /// counter values. This is required to be either = 0 or a multiple of
9762    /// |proc_stats_poll_ms| (default: |proc_stats_poll_ms|). Non-multiples will be
9763    /// rounded down to the nearest multiple.
9764    #[prost(uint32, optional, tag = "6")]
9765    pub proc_stats_cache_ttl_ms: ::core::option::Option<u32>,
9766    /// If true and |proc_stats_poll_ms| is set, sample memory stats from
9767    /// /proc/pid/smaps_rollup.
9768    ///
9769    /// Android: does NOT work with the system daemons by default, as it requires
9770    /// running the recording process (traced_probes or tracebox) as root. It is
9771    /// possible to avoid the root requirement, but the exact steps depend on the
9772    /// Linux distibution. The proc file requires passing a PTRACE_MODE_READ
9773    /// check, and might be further covered by the procfs "hidepid" mount option.
9774    #[prost(bool, optional, tag = "10")]
9775    pub scan_smaps_rollup: ::core::option::Option<bool>,
9776    /// If true: process descriptions will include process age (starttime in
9777    /// /proc/pid/stat).
9778    /// Introduced in: perfetto v44.
9779    #[prost(bool, optional, tag = "11")]
9780    pub record_process_age: ::core::option::Option<bool>,
9781    /// If true and |proc_stats_poll_ms| is set, process stats will include time
9782    /// spent running in user/kernel mode (utime/stime in /proc/pid/stat).
9783    /// Introduced in: perfetto v44.
9784    #[prost(bool, optional, tag = "12")]
9785    pub record_process_runtime: ::core::option::Option<bool>,
9786    /// If true obtain per-process dmabuf resident set size from
9787    /// /proc/pid/dmabuf_rss.
9788    /// This feature is not in upstream linux, and is available only on some
9789    /// Android kernels.
9790    #[prost(bool, optional, tag = "13")]
9791    pub record_process_dmabuf_rss: ::core::option::Option<bool>,
9792    /// WARNING: unmaintained and deprecated. If true this will resolve file
9793    /// descriptors for each process so these can be mapped to their actual device
9794    /// or file. Requires raw_syscalls/sys_{enter,exit} ftrace events to be enabled
9795    /// or new fds opened after initially scanning a process will not be
9796    /// recognized.
9797    #[prost(bool, optional, tag = "9")]
9798    pub resolve_process_fds: ::core::option::Option<bool>,
9799    /// If true, do *not* write a ProcessTree::Thread message for the main thread
9800    /// of a process. This was the default behaviour before perfetto v58.
9801    ///
9802    /// Added in perfetto v58.
9803    #[prost(bool, optional, tag = "14")]
9804    pub skip_main_thread_message: ::core::option::Option<bool>,
9805}
9806/// Nested message and enum types in `ProcessStatsConfig`.
9807pub mod process_stats_config {
9808    #[derive(
9809        Clone,
9810        Copy,
9811        Debug,
9812        PartialEq,
9813        Eq,
9814        Hash,
9815        PartialOrd,
9816        Ord,
9817        ::prost::Enumeration
9818    )]
9819    #[repr(i32)]
9820    pub enum Quirks {
9821        Unspecified = 0,
9822        /// This has been deprecated and ignored as per 2018-05-01. Full scan at
9823        /// startup is now disabled by default and can be re-enabled using the
9824        /// |scan_all_processes_on_start| arg.
9825        #[deprecated]
9826        DisableInitialDump = 1,
9827        /// If set, disables the special interaction with "linux.ftrace" data source,
9828        /// where the process stats rescrapes any thread id seen in the ftrace
9829        /// stream.
9830        DisableOnDemand = 2,
9831    }
9832    impl Quirks {
9833        /// String value of the enum field names used in the ProtoBuf definition.
9834        ///
9835        /// The values are not transformed in any way and thus are considered stable
9836        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9837        pub fn as_str_name(&self) -> &'static str {
9838            match self {
9839                Self::Unspecified => "QUIRKS_UNSPECIFIED",
9840                #[allow(deprecated)]
9841                Self::DisableInitialDump => "DISABLE_INITIAL_DUMP",
9842                Self::DisableOnDemand => "DISABLE_ON_DEMAND",
9843            }
9844        }
9845        /// Creates an enum from field names used in the ProtoBuf definition.
9846        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9847            match value {
9848                "QUIRKS_UNSPECIFIED" => Some(Self::Unspecified),
9849                "DISABLE_INITIAL_DUMP" => {
9850                    Some(#[allow(deprecated)] Self::DisableInitialDump)
9851                }
9852                "DISABLE_ON_DEMAND" => Some(Self::DisableOnDemand),
9853                _ => None,
9854            }
9855        }
9856    }
9857}
9858/// Configuration for go/heapprofd.
9859/// Next id: 28
9860#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9861pub struct HeapprofdConfig {
9862    /// Sampling rate for all heaps not specified via heap_sampling_intervals.
9863    ///
9864    /// These are:
9865    /// * All heaps if heap_sampling_intervals is empty.
9866    /// * Those profiled due to all_heaps and not named in heaps if
9867    ///    heap_sampling_intervals is not empty.
9868    /// * The implicit libc.malloc heap if heaps is empty.
9869    ///
9870    /// Set to 1 for perfect accuracy.
9871    /// Otherwise, sample every sample_interval_bytes on average.
9872    ///
9873    /// See
9874    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#sampling-interval>
9875    /// for more details.
9876    ///
9877    /// BUGS
9878    /// Before Android 12, setting this to 0 would crash the target process.
9879    ///
9880    /// N.B. This must be explicitly set to a non-zero value for all heaps (with
9881    /// this field or with heap_sampling_intervals), otherwise the producer will
9882    /// not start.
9883    #[prost(uint64, optional, tag = "1")]
9884    pub sampling_interval_bytes: ::core::option::Option<u64>,
9885    /// If less than the given numbers of bytes are left free in the shared
9886    /// memory buffer, increase sampling interval by a factor of two.
9887    /// Adaptive sampling is disabled when set to 0.
9888    #[prost(uint64, optional, tag = "24")]
9889    pub adaptive_sampling_shmem_threshold: ::core::option::Option<u64>,
9890    /// Stop doubling the sampling_interval once the sampling interval has reached
9891    /// this value.
9892    #[prost(uint64, optional, tag = "25")]
9893    pub adaptive_sampling_max_sampling_interval_bytes: ::core::option::Option<u64>,
9894    /// Names of process cmdlines to profile. The semantics before perfetto v57 are
9895    /// as the following section (A), and on newer versions are both (A) and (B):
9896    ///
9897    /// (A) E.g. surfaceflinger, com.android.phone
9898    /// This input is normalized in the following way: if it contains slashes,
9899    /// everything up to the last slash is discarded. If it contains "@",
9900    /// everything after the first @ is discared.
9901    /// E.g. /system/bin/surfaceflinger@1.0 normalizes to surfaceflinger.
9902    /// This transformation is also applied to the processes' command lines when
9903    /// matching.
9904    ///
9905    /// (B) Perfetto v57+: a pattern may also contain a wildcard ('*'), in which
9906    /// case it is matched against running processes' command lines using glob
9907    /// semantics. If the pattern starts with '/' it is matched against the full
9908    /// argv0 (e.g. "/system/bin/*"), otherwise it is matched against the binary
9909    /// name part of argv0 (e.g. "system_*"). Wildcard patterns are *not*
9910    /// normalized as described above.
9911    /// Wildcard patterns are supported only for profiling already-running
9912    /// processes. A config must set no_startup=true if using wildcards, or it will
9913    /// be rejected.
9914    #[prost(string, repeated, tag = "2")]
9915    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9916    /// For watermark based triggering or local debugging.
9917    #[prost(uint64, repeated, packed = "false", tag = "4")]
9918    pub pid: ::prost::alloc::vec::Vec<u64>,
9919    /// Only profile target if it was installed by one of the packages given.
9920    /// Special values are:
9921    /// * @system: installed on the system partition
9922    /// * @product: installed on the product partition
9923    /// * @null: sideloaded
9924    /// Supported on Android 12+.
9925    #[prost(string, repeated, tag = "26")]
9926    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9927    /// Which heaps to sample, e.g. "libc.malloc". If left empty, only samples
9928    /// "malloc".
9929    ///
9930    /// Introduced in Android 12.
9931    #[prost(string, repeated, tag = "20")]
9932    pub heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9933    /// Which heaps not to sample, e.g. "libc.malloc". This is useful when used in
9934    /// combination with all_heaps;
9935    ///
9936    /// Introduced in Android 12.
9937    #[prost(string, repeated, tag = "27")]
9938    pub exclude_heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9939    #[prost(bool, optional, tag = "23")]
9940    pub stream_allocations: ::core::option::Option<bool>,
9941    /// If given, needs to be the same length as heaps and gives the sampling
9942    /// interval for the respective entry in heaps.
9943    ///
9944    /// Otherwise, sampling_interval_bytes is used.
9945    ///
9946    /// It is recommended to set sampling_interval_bytes to a reasonable default
9947    /// value when using this, as a value of 0 for sampling_interval_bytes will
9948    /// crash the target process before Android 12.
9949    ///
9950    /// Introduced in Android 12.
9951    ///
9952    /// All values must be non-zero or the producer will not start.
9953    #[prost(uint64, repeated, packed = "false", tag = "22")]
9954    pub heap_sampling_intervals: ::prost::alloc::vec::Vec<u64>,
9955    /// Sample all heaps registered by target process. Introduced in Android 12.
9956    #[prost(bool, optional, tag = "21")]
9957    pub all_heaps: ::core::option::Option<bool>,
9958    /// Profile all processes eligible for profiling on the system.
9959    /// See
9960    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#heapprofd-targets>
9961    /// for which processes are eligible.
9962    ///
9963    /// On unmodified userdebug builds, this will lead to system crashes. Zygote
9964    /// will crash when trying to launch a new process as it will have an
9965    /// unexpected open socket to heapprofd.
9966    ///
9967    /// heapprofd will likely be overloaded by the amount of data for low
9968    /// sampling intervals.
9969    #[prost(bool, optional, tag = "5")]
9970    pub all: ::core::option::Option<bool>,
9971    /// Do not profile processes whose anon RSS + swap < given value.
9972    /// Introduced in Android 11.
9973    #[prost(uint32, optional, tag = "15")]
9974    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
9975    /// Stop profile if heapprofd memory usage goes beyond the given value.
9976    /// Introduced in Android 11.
9977    #[prost(uint32, optional, tag = "16")]
9978    pub max_heapprofd_memory_kb: ::core::option::Option<u32>,
9979    /// Stop profile if heapprofd CPU time since start of this data-source
9980    /// goes beyond given value.
9981    /// Introduced in Android 11.
9982    #[prost(uint64, optional, tag = "17")]
9983    pub max_heapprofd_cpu_secs: ::core::option::Option<u64>,
9984    /// Do not emit function names for mappings starting with this prefix.
9985    /// E.g. /system to not emit symbols for any system libraries.
9986    #[prost(string, repeated, tag = "7")]
9987    pub skip_symbol_prefix: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9988    /// Dump at a predefined interval.
9989    #[prost(message, optional, tag = "6")]
9990    pub continuous_dump_config: ::core::option::Option<
9991        heapprofd_config::ContinuousDumpConfig,
9992    >,
9993    /// Size of the shared memory buffer between the profiled processes and
9994    /// heapprofd. Defaults to 8 MiB. If larger than 500 MiB, truncated to 500
9995    /// MiB.
9996    ///
9997    /// Needs to be:
9998    /// * at least 8192,
9999    /// * a power of two,
10000    /// * a multiple of 4096.
10001    #[prost(uint64, optional, tag = "8")]
10002    pub shmem_size_bytes: ::core::option::Option<u64>,
10003    /// When the shmem buffer is full, block the client instead of ending the
10004    /// trace. Use with caution as this will significantly slow down the target
10005    /// process.
10006    #[prost(bool, optional, tag = "9")]
10007    pub block_client: ::core::option::Option<bool>,
10008    /// If set, stop the trace session after blocking the client for this
10009    /// timeout. Needs to be larger than 100 us, otherwise no retries are done.
10010    /// Introduced in Android 11.
10011    #[prost(uint32, optional, tag = "14")]
10012    pub block_client_timeout_us: ::core::option::Option<u32>,
10013    /// Do not profile processes from startup, only match already running
10014    /// processes.
10015    ///
10016    /// Can not be set at the same time as no_running.
10017    /// Introduced in Android 11.
10018    #[prost(bool, optional, tag = "10")]
10019    pub no_startup: ::core::option::Option<bool>,
10020    /// Do not profile running processes. Only match processes on startup.
10021    ///
10022    /// Can not be set at the same time as no_startup.
10023    /// Introduced in Android 11.
10024    #[prost(bool, optional, tag = "11")]
10025    pub no_running: ::core::option::Option<bool>,
10026    /// Cause heapprofd to emit a single dump at the end, showing the memory usage
10027    /// at the point in time when the sampled heap usage of the process was at its
10028    /// maximum. This causes ProfilePacket.HeapSample.self_max to be set, and
10029    /// self_allocated and self_freed to not be set.
10030    /// Introduced in Android 11.
10031    #[prost(bool, optional, tag = "13")]
10032    pub dump_at_max: ::core::option::Option<bool>,
10033    /// Escape hatch if the session is being torn down because of a forked child
10034    /// that shares memory space, but is not correctly identified as a vforked
10035    /// child.
10036    /// Introduced in Android 11.
10037    #[prost(bool, optional, tag = "18")]
10038    pub disable_fork_teardown: ::core::option::Option<bool>,
10039    /// We try to automatically detect when a target applicatation vforks but then
10040    /// does a memory allocation (or free). This auto-detection can be disabled
10041    /// with this.
10042    /// Introduced in Android 11.
10043    #[prost(bool, optional, tag = "19")]
10044    pub disable_vfork_detection: ::core::option::Option<bool>,
10045}
10046/// Nested message and enum types in `HeapprofdConfig`.
10047pub mod heapprofd_config {
10048    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10049    pub struct ContinuousDumpConfig {
10050        /// ms to wait before first dump.
10051        #[prost(uint32, optional, tag = "5")]
10052        pub dump_phase_ms: ::core::option::Option<u32>,
10053        /// ms to wait between following dumps.
10054        #[prost(uint32, optional, tag = "6")]
10055        pub dump_interval_ms: ::core::option::Option<u32>,
10056    }
10057}
10058/// Config for the "linux.smaps" data source, describes one-shot or periodic
10059/// /proc/pid/smaps collection.
10060///
10061/// A valid config must specify at least one |target_cmdline| or |target_uid|.
10062/// Example:
10063///
10064/// data_sources {
10065///    config {
10066///      name: "linux.smaps"
10067///      process_smaps_config {
10068///        scope {
10069///          target_cmdline: "top"
10070///          target_cmdline: "tmux"
10071///        }
10072///      }
10073///    }
10074/// }
10075#[derive(Clone, PartialEq, ::prost::Message)]
10076pub struct ProcessSmapsConfig {
10077    /// Which fields to record per process.
10078    /// If unset, defaults to {size, rss, anon, swap}, aggregated by path name.
10079    #[prost(message, optional, tag = "1")]
10080    pub smaps_config: ::core::option::Option<SmapsConfig>,
10081    #[prost(message, optional, tag = "2")]
10082    pub scope: ::core::option::Option<process_smaps_config::Scope>,
10083    /// How often to recapture the smaps, including re-evaluating which processes
10084    /// match the |scope|. May be overridden by the implementation (at the time of
10085    /// writing, \[1s, 24hr\] range).
10086    /// If zero or unset, each process is captured only once at start.
10087    #[prost(uint32, optional, tag = "3")]
10088    pub read_period_ms: ::core::option::Option<u32>,
10089    /// Caps the number of processes handled per |read_period_ms|, or overall if
10090    /// the config is one-shot (period = 0). The immediate use case is to limit
10091    /// work if too many processes match the |scope|.
10092    /// Additionally, this option can be used for sampling, since the
10093    /// implementation inspects processes in a shuffled order (not in numeric pid
10094    /// order), and successive periods cover separate subsets of pids.
10095    /// So a config with scope=*, period=10s, and max_processes=5 would
10096    /// progressively scan all processes on the machine by parsing 5 processes at
10097    /// a time with 10s breaks in between.
10098    /// If zero or unset, there is no limit.
10099    #[prost(uint32, optional, tag = "4")]
10100    pub max_processes_per_period: ::core::option::Option<u32>,
10101}
10102/// Nested message and enum types in `ProcessSmapsConfig`.
10103pub mod process_smaps_config {
10104    /// Which processes to record. At least one field must be set.
10105    /// Multiples of the same option (e.g. target_cmdline) are ORed.
10106    /// Different options are ANDed, skipping fields that are unset.
10107    #[derive(Clone, PartialEq, ::prost::Message)]
10108    pub struct Scope {
10109        /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
10110        /// comm string).
10111        ///
10112        /// This field can specify a single wildcard (*), and the profiler will
10113        /// attempt to match it in two possible ways:
10114        /// * if the pattern starts with a '/', then it is matched against the first
10115        ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
10116        ///    "/bin/echo".
10117        /// * otherwise the pattern is matched against the part of argv0
10118        ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
10119        ///    For example "echo" would match "/bin/echo".
10120        ///
10121        /// Implementation note: at most 511 characters of cmdline are considered.
10122        #[prost(string, repeated, tag = "1")]
10123        pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10124        #[prost(message, repeated, tag = "2")]
10125        pub target_uid: ::prost::alloc::vec::Vec<scope::UidRange>,
10126    }
10127    /// Nested message and enum types in `Scope`.
10128    pub mod scope {
10129        /// Range of UIDs.
10130        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10131        pub struct UidRange {
10132            /// inclusive, must be set
10133            #[prost(uint32, optional, tag = "1")]
10134            pub min_uid: ::core::option::Option<u32>,
10135            /// inclusive, must be set
10136            #[prost(uint32, optional, tag = "2")]
10137            pub max_uid: ::core::option::Option<u32>,
10138            /// Android: if true, compare the UID modulo the per-user/profile offset
10139            /// (AID_USER_OFFSET, 100000).
10140            #[prost(bool, optional, tag = "3")]
10141            pub android_match_across_profiles: ::core::option::Option<bool>,
10142        }
10143    }
10144}
10145/// Describes what to record from /proc/pid/smaps.
10146#[derive(Clone, PartialEq, ::prost::Message)]
10147pub struct SmapsConfig {
10148    /// Set of fields to collect.
10149    /// If unset, defaults to: size, rss, anonymous, swap.
10150    #[prost(
10151        enumeration = "smaps_config::VmaField",
10152        repeated,
10153        packed = "false",
10154        tag = "1"
10155    )]
10156    pub vma_fields: ::prost::alloc::vec::Vec<i32>,
10157    /// If false, mappings are aggregated by their path name.
10158    /// If true, each mapping is serialised separately.
10159    #[prost(bool, optional, tag = "2")]
10160    pub unaggregated: ::core::option::Option<bool>,
10161    /// Optional ordered list of redaction rules for the name of the mapping.
10162    /// Note that all mappings will still be emitted, these rules only affect the
10163    /// emitted name.
10164    /// If unset, all names are written as is.
10165    /// If set, the first matching rule decides on the action.
10166    /// If no rules match, the name is written as is.
10167    #[prost(message, repeated, tag = "3")]
10168    pub name_redaction_rules: ::prost::alloc::vec::Vec<RedactionRule>,
10169}
10170/// Nested message and enum types in `SmapsConfig`.
10171pub mod smaps_config {
10172    #[derive(
10173        Clone,
10174        Copy,
10175        Debug,
10176        PartialEq,
10177        Eq,
10178        Hash,
10179        PartialOrd,
10180        Ord,
10181        ::prost::Enumeration
10182    )]
10183    #[repr(i32)]
10184    pub enum VmaField {
10185        Unknown = 0,
10186        Size = 1,
10187        Rss = 2,
10188        Anonymous = 3,
10189        Swap = 4,
10190        SharedClean = 5,
10191        SharedDirty = 6,
10192        PrivateClean = 7,
10193        PrivateDirty = 8,
10194        Locked = 9,
10195        Pss = 10,
10196        PssDirty = 11,
10197        SwapPss = 12,
10198    }
10199    impl VmaField {
10200        /// String value of the enum field names used in the ProtoBuf definition.
10201        ///
10202        /// The values are not transformed in any way and thus are considered stable
10203        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10204        pub fn as_str_name(&self) -> &'static str {
10205            match self {
10206                Self::Unknown => "VMA_FIELD_UNKNOWN",
10207                Self::Size => "VMA_FIELD_SIZE",
10208                Self::Rss => "VMA_FIELD_RSS",
10209                Self::Anonymous => "VMA_FIELD_ANONYMOUS",
10210                Self::Swap => "VMA_FIELD_SWAP",
10211                Self::SharedClean => "VMA_FIELD_SHARED_CLEAN",
10212                Self::SharedDirty => "VMA_FIELD_SHARED_DIRTY",
10213                Self::PrivateClean => "VMA_FIELD_PRIVATE_CLEAN",
10214                Self::PrivateDirty => "VMA_FIELD_PRIVATE_DIRTY",
10215                Self::Locked => "VMA_FIELD_LOCKED",
10216                Self::Pss => "VMA_FIELD_PSS",
10217                Self::PssDirty => "VMA_FIELD_PSS_DIRTY",
10218                Self::SwapPss => "VMA_FIELD_SWAP_PSS",
10219            }
10220        }
10221        /// Creates an enum from field names used in the ProtoBuf definition.
10222        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10223            match value {
10224                "VMA_FIELD_UNKNOWN" => Some(Self::Unknown),
10225                "VMA_FIELD_SIZE" => Some(Self::Size),
10226                "VMA_FIELD_RSS" => Some(Self::Rss),
10227                "VMA_FIELD_ANONYMOUS" => Some(Self::Anonymous),
10228                "VMA_FIELD_SWAP" => Some(Self::Swap),
10229                "VMA_FIELD_SHARED_CLEAN" => Some(Self::SharedClean),
10230                "VMA_FIELD_SHARED_DIRTY" => Some(Self::SharedDirty),
10231                "VMA_FIELD_PRIVATE_CLEAN" => Some(Self::PrivateClean),
10232                "VMA_FIELD_PRIVATE_DIRTY" => Some(Self::PrivateDirty),
10233                "VMA_FIELD_LOCKED" => Some(Self::Locked),
10234                "VMA_FIELD_PSS" => Some(Self::Pss),
10235                "VMA_FIELD_PSS_DIRTY" => Some(Self::PssDirty),
10236                "VMA_FIELD_SWAP_PSS" => Some(Self::SwapPss),
10237                _ => None,
10238            }
10239        }
10240    }
10241}
10242#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10243pub struct RedactionRule {
10244    /// The pattern to match against.
10245    #[prost(string, optional, tag = "1")]
10246    pub pattern: ::core::option::Option<::prost::alloc::string::String>,
10247    #[prost(enumeration = "redaction_rule::MatchMode", optional, tag = "2")]
10248    pub match_mode: ::core::option::Option<i32>,
10249    /// If the pattern matches, keep the entire name. In other words, do not
10250    /// redact. This option exists since the rules are evaluated in order, so a
10251    /// more specific allow rule with keep_full can match before a more general
10252    /// deny rule. This option is mutually exclusive with |keep_file_extension| and
10253    /// |keep_path_elements|.
10254    #[prost(bool, optional, tag = "3")]
10255    pub keep_full: ::core::option::Option<bool>,
10256    /// If the pattern matches, replace the name with this string (defaulting to
10257    /// <pf_redacted> if unset). The final emitted name might be further augmented
10258    /// by the options below keeping parts of the original name.
10259    #[prost(string, optional, tag = "4")]
10260    pub replacement_name: ::core::option::Option<::prost::alloc::string::String>,
10261    /// If the pattern matches, keep the file extension, if any.
10262    /// Can be combined with |keep_path_elements|.
10263    #[prost(bool, optional, tag = "5")]
10264    pub keep_file_extension: ::core::option::Option<bool>,
10265    /// If the pattern matches, keep the first N path elements (as separated by
10266    /// '/'). If the name is not a path, this option does nothing. Can be combined
10267    /// with |keep_file_extension|.
10268    #[prost(uint32, optional, tag = "6")]
10269    pub keep_path_elements: ::core::option::Option<u32>,
10270}
10271/// Nested message and enum types in `RedactionRule`.
10272pub mod redaction_rule {
10273    /// How to match |pattern| against the name of the mapping.
10274    /// Note for future extensions: unrecognised enums are treated as always
10275    /// matching.
10276    #[derive(
10277        Clone,
10278        Copy,
10279        Debug,
10280        PartialEq,
10281        Eq,
10282        Hash,
10283        PartialOrd,
10284        Ord,
10285        ::prost::Enumeration
10286    )]
10287    #[repr(i32)]
10288    pub enum MatchMode {
10289        Unknown = 0,
10290        /// The pattern matches if it is a prefix of the mapping name.
10291        Prefix = 1,
10292        /// The pattern is matched against the mapping name as a pathname glob
10293        /// (see "man 7 glob" and FNM_PATHNAME in "man 3 fnmatch").
10294        /// The key distinction is that path separators in the name are *not* matched
10295        /// against wildcards. So a pattern of the form "/usr/*/llvm" would match
10296        /// "/usr/lib/llvm" but not "/usr/lib/nested/llvm".
10297        /// Note: any "(deleted)" suffix is excluded before matching.
10298        GlobPath = 2,
10299        /// The pattern is matched against the mapping name without special-casing
10300        /// path separators. So a pattern of the form "/usr/*/llvm" would match
10301        /// both "/usr/lib/llvm" and "/usr/lib/nested/llvm".
10302        /// Note: any "(deleted)" suffix is excluded before matching.
10303        GlobString = 3,
10304    }
10305    impl MatchMode {
10306        /// String value of the enum field names used in the ProtoBuf definition.
10307        ///
10308        /// The values are not transformed in any way and thus are considered stable
10309        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10310        pub fn as_str_name(&self) -> &'static str {
10311            match self {
10312                Self::Unknown => "MATCH_MODE_UNKNOWN",
10313                Self::Prefix => "MATCH_MODE_PREFIX",
10314                Self::GlobPath => "MATCH_MODE_GLOB_PATH",
10315                Self::GlobString => "MATCH_MODE_GLOB_STRING",
10316            }
10317        }
10318        /// Creates an enum from field names used in the ProtoBuf definition.
10319        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10320            match value {
10321                "MATCH_MODE_UNKNOWN" => Some(Self::Unknown),
10322                "MATCH_MODE_PREFIX" => Some(Self::Prefix),
10323                "MATCH_MODE_GLOB_PATH" => Some(Self::GlobPath),
10324                "MATCH_MODE_GLOB_STRING" => Some(Self::GlobString),
10325                _ => None,
10326            }
10327        }
10328    }
10329}
10330/// Configuration for managed app heap graph snapshots.
10331#[derive(Clone, PartialEq, ::prost::Message)]
10332pub struct JavaHprofConfig {
10333    /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
10334    /// comm string). The semantics of this field were changed since its original
10335    /// introduction.
10336    ///
10337    /// On Android T+ (13+), this field can specify a single wildcard (*), and
10338    /// the profiler will attempt to match it in two possible ways:
10339    /// * if the pattern starts with a '/', then it is matched against the first
10340    ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
10341    ///    "/bin/echo".
10342    /// * otherwise the pattern is matched against the part of argv0
10343    ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
10344    ///    For example "echo" would match "/bin/echo".
10345    ///
10346    /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
10347    /// normalized prior to an exact string comparison. Normalization is as
10348    /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
10349    /// the string contains forward slashes, trim everything up to and including
10350    /// the last one.
10351    ///
10352    /// Implementation note: in either case, at most 511 characters of cmdline
10353    /// are considered.
10354    #[prost(string, repeated, tag = "1")]
10355    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10356    /// For watermark based triggering or local debugging.
10357    #[prost(uint64, repeated, packed = "false", tag = "2")]
10358    pub pid: ::prost::alloc::vec::Vec<u64>,
10359    /// Only profile target if it was installed by one of the packages given.
10360    /// Special values are:
10361    /// * @system: installed on the system partition
10362    /// * @product: installed on the product partition
10363    /// * @null: sideloaded
10364    /// Supported on Android 12+.
10365    #[prost(string, repeated, tag = "7")]
10366    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10367    /// Dump at a predefined interval.
10368    #[prost(message, optional, tag = "3")]
10369    pub continuous_dump_config: ::core::option::Option<
10370        java_hprof_config::ContinuousDumpConfig,
10371    >,
10372    /// Do not profile processes whose anon RSS + swap < given value.
10373    #[prost(uint32, optional, tag = "4")]
10374    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
10375    /// Do not profile processes whose Java heap size < given value.
10376    #[prost(uint32, optional, tag = "9")]
10377    pub min_java_heap_size_kb: ::core::option::Option<u32>,
10378    /// Include the process' /proc/self/smaps.
10379    /// This only shows maps that:
10380    /// * start with /system
10381    /// * start with /vendor
10382    /// * start with /data/app
10383    /// * contain "extracted in memory from Y", where Y matches any of the above
10384    ///
10385    /// Superseded by |smaps_config| in perfetto v58+.
10386    #[prost(bool, optional, tag = "5")]
10387    pub dump_smaps: ::core::option::Option<bool>,
10388    /// If set, include /proc/self/smaps memory mappings.
10389    ///
10390    /// Added in perfetto v58.
10391    #[prost(message, optional, tag = "8")]
10392    pub smaps_config: ::core::option::Option<SmapsConfig>,
10393    /// Exclude objects of the following types from the profile. This can be
10394    /// useful if lots of uninteresting objects, e.g. "sun.misc.Cleaner".
10395    #[prost(string, repeated, tag = "6")]
10396    pub ignored_types: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10397    /// Dump the callsite of the thread triggering the OutOfMemoryError.
10398    /// Only applicable to OutOfMemoryError heap dumps
10399    #[prost(bool, optional, tag = "10")]
10400    pub dump_oome_callstack: ::core::option::Option<bool>,
10401}
10402/// Nested message and enum types in `JavaHprofConfig`.
10403pub mod java_hprof_config {
10404    /// If dump_interval_ms != 0, the following configuration is used.
10405    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10406    pub struct ContinuousDumpConfig {
10407        /// ms to wait before first continuous dump.
10408        /// A dump is always created at the beginning of the trace.
10409        #[prost(uint32, optional, tag = "1")]
10410        pub dump_phase_ms: ::core::option::Option<u32>,
10411        /// ms to wait between following dumps.
10412        #[prost(uint32, optional, tag = "2")]
10413        pub dump_interval_ms: ::core::option::Option<u32>,
10414        /// If true, scans all the processes to find `process_cmdline` and filter by
10415        /// `min_anonymous_memory_kb` only at data source start. Default on Android
10416        /// S-.
10417        ///
10418        /// If false, rescans all the processes to find on every dump. Default on
10419        /// Android T+.
10420        #[prost(bool, optional, tag = "3")]
10421        pub scan_pids_only_on_start: ::core::option::Option<bool>,
10422    }
10423}
10424#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10425pub struct PerfEvents {}
10426/// Nested message and enum types in `PerfEvents`.
10427pub mod perf_events {
10428    /// The primary event to count. If recording multiple events, this
10429    /// counter is the "group leader".
10430    /// Commented from the perspective of its use in |PerfEventConfig|.
10431    /// Next id: 13
10432    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10433    pub struct Timebase {
10434        /// Optional modifiers for the event. Modelled after the perftool's
10435        /// <https://man7.org/linux/man-pages/man1/perf-list.1.html#EVENT_MODIFIERS>
10436        /// Currently supported: count scoping such as :u, :k, :uk, ...
10437        /// Modifiers can differ between the timebase and followers.
10438        #[prost(enumeration = "EventModifier", repeated, packed = "false", tag = "12")]
10439        pub modifiers: ::prost::alloc::vec::Vec<i32>,
10440        /// If set, samples will be timestamped with the given clock.
10441        /// If unset, the clock is chosen by the implementation.
10442        /// For software events, prefer PERF_CLOCK_BOOTTIME. However it cannot be
10443        /// used for hardware events (due to interrupt safety), for which the
10444        /// recommendation is to use one of the monotonic clocks.
10445        #[prost(enumeration = "PerfClock", optional, tag = "11")]
10446        pub timestamp_clock: ::core::option::Option<i32>,
10447        /// Optional arbitrary name for the event, to identify it in the parsed
10448        /// trace. Does *not* affect the profiling itself. If unset, the trace
10449        /// parser will choose a suitable name.
10450        #[prost(string, optional, tag = "10")]
10451        pub name: ::core::option::Option<::prost::alloc::string::String>,
10452        /// How often to snapshot the counter, along with any follower events and
10453        /// any additional sampled data such as callstacks.
10454        ///
10455        /// This choice also controls how the readings are taken:
10456        /// * With |frequency| or |period|, samples are taken by the kernel
10457        ///    into a ring buffer. Analogous to `perf record`.
10458        /// * With |poll_period_ms|, the userspace periodically snapshots
10459        ///    the counters using the read syscall. Analogous to `perf stat -I`.
10460        /// Prefer the sampling options unless you're recording PMUs whose
10461        /// perf drivers only support the reading mode.
10462        ///
10463        /// If unset, an implementation-defined sampling default is used.
10464        #[prost(oneof = "timebase::Interval", tags = "2, 1, 6")]
10465        pub interval: ::core::option::Option<timebase::Interval>,
10466        /// Counting event to use as the timebase.
10467        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
10468        /// which is what you usually want.
10469        #[prost(oneof = "timebase::Event", tags = "4, 3, 5")]
10470        pub event: ::core::option::Option<timebase::Event>,
10471    }
10472    /// Nested message and enum types in `Timebase`.
10473    pub mod timebase {
10474        /// How often to snapshot the counter, along with any follower events and
10475        /// any additional sampled data such as callstacks.
10476        ///
10477        /// This choice also controls how the readings are taken:
10478        /// * With |frequency| or |period|, samples are taken by the kernel
10479        ///    into a ring buffer. Analogous to `perf record`.
10480        /// * With |poll_period_ms|, the userspace periodically snapshots
10481        ///    the counters using the read syscall. Analogous to `perf stat -I`.
10482        /// Prefer the sampling options unless you're recording PMUs whose
10483        /// perf drivers only support the reading mode.
10484        ///
10485        /// If unset, an implementation-defined sampling default is used.
10486        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
10487        pub enum Interval {
10488            /// Per-cpu sampling frequency in Hz, as requested from the kernel. Not the
10489            /// same as 1/period.
10490            /// Details: the actual sampling will still be based on a period, but the
10491            /// kernel will dynamically adjust it based on the observed event rate, to
10492            /// approximate this frequency. Works best with steady-rate events like
10493            /// timers.
10494            /// Not guaranteed to be honored as the kernel can throttle the sampling
10495            /// rate if it's too high.
10496            #[prost(uint64, tag = "2")]
10497            Frequency(u64),
10498            /// Per-cpu sampling will occur every |period| counts of |event|.
10499            /// Prefer |frequency| by default, as it's easier to oversample with a
10500            /// fixed period.
10501            /// Not guaranteed to be honored as the kernel can throttle the sampling
10502            /// rate if it's too high.
10503            #[prost(uint64, tag = "1")]
10504            Period(u64),
10505            /// Per-cpu values are read by the userspace every interval. If using this
10506            /// mode, only follower events are supported. Options such as
10507            /// |PerfEventConfig.CallstackSampling| are incompatible.
10508            /// The period can't be guaranteed to be exact since the readings are taken
10509            /// by userspace.
10510            #[prost(uint32, tag = "6")]
10511            PollPeriodMs(u32),
10512        }
10513        /// Counting event to use as the timebase.
10514        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
10515        /// which is what you usually want.
10516        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
10517        pub enum Event {
10518            #[prost(enumeration = "super::Counter", tag = "4")]
10519            Counter(i32),
10520            #[prost(message, tag = "3")]
10521            Tracepoint(super::Tracepoint),
10522            #[prost(message, tag = "5")]
10523            RawEvent(super::RawEvent),
10524        }
10525    }
10526    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10527    pub struct Tracepoint {
10528        /// Group and name for the tracepoint, acceptable forms:
10529        /// * "sched/sched_switch"
10530        /// * "sched:sched_switch"
10531        #[prost(string, optional, tag = "1")]
10532        pub name: ::core::option::Option<::prost::alloc::string::String>,
10533        /// Optional field-level filter for the tracepoint. Only events matching this
10534        /// filter will be counted (and therefore contribute to the sampling period).
10535        /// Example: "prev_pid >= 42 && next_pid == 0".
10536        /// For full syntax, see kernel documentation on "Event filtering":
10537        /// <https://www.kernel.org/doc/Documentation/trace/events.txt>
10538        #[prost(string, optional, tag = "2")]
10539        pub filter: ::core::option::Option<::prost::alloc::string::String>,
10540    }
10541    /// Syscall-level description of the event, propagated to the perf_event_attr
10542    /// struct. Primarily for local use-cases, since the event availability and
10543    /// encoding is hardware-specific.
10544    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10545    pub struct RawEvent {
10546        /// Either |type| or |pmu_name| can be set.
10547        #[prost(uint32, optional, tag = "1")]
10548        pub r#type: ::core::option::Option<u32>,
10549        #[prost(uint64, optional, tag = "2")]
10550        pub config: ::core::option::Option<u64>,
10551        #[prost(uint64, optional, tag = "3")]
10552        pub config1: ::core::option::Option<u64>,
10553        #[prost(uint64, optional, tag = "4")]
10554        pub config2: ::core::option::Option<u64>,
10555        /// The name of a dynamic PMU under /sys/bus/event_source/devices
10556        /// (e.g. "armv8_pmuv3").
10557        /// If set, leave |type| unset.
10558        /// Android: the relevant sysfs paths are not allowlisted by default, so
10559        /// this option will require a rooted device with selinux disabled.
10560        #[prost(string, optional, tag = "5")]
10561        pub pmu_name: ::core::option::Option<::prost::alloc::string::String>,
10562    }
10563    /// Builtin counter names from the uapi header. Commented with their perf tool
10564    /// aliases.
10565    /// TODO(rsavitski): consider generating enums for cache events (should be
10566    /// finite), and generally make this list as extensive as possible. Excluding
10567    /// things like dynamic PMUs since those don't fit into a static enum.
10568    /// Next id: 21
10569    #[derive(
10570        Clone,
10571        Copy,
10572        Debug,
10573        PartialEq,
10574        Eq,
10575        Hash,
10576        PartialOrd,
10577        Ord,
10578        ::prost::Enumeration
10579    )]
10580    #[repr(i32)]
10581    pub enum Counter {
10582        UnknownCounter = 0,
10583        /// cpu-clock
10584        SwCpuClock = 1,
10585        /// page-faults, faults
10586        SwPageFaults = 2,
10587        /// task-clock
10588        SwTaskClock = 3,
10589        /// context-switches, cs
10590        SwContextSwitches = 4,
10591        /// cpu-migrations, migrations
10592        SwCpuMigrations = 5,
10593        /// minor-faults
10594        SwPageFaultsMin = 6,
10595        /// major-faults
10596        SwPageFaultsMaj = 7,
10597        /// alignment-faults
10598        SwAlignmentFaults = 8,
10599        /// emulation-faults
10600        SwEmulationFaults = 9,
10601        /// dummy
10602        SwDummy = 20,
10603        /// cpu-cycles, cycles
10604        HwCpuCycles = 10,
10605        /// instructions
10606        HwInstructions = 11,
10607        /// cache-references
10608        HwCacheReferences = 12,
10609        /// cache-misses
10610        HwCacheMisses = 13,
10611        /// branch-instructions, branches
10612        HwBranchInstructions = 14,
10613        /// branch-misses
10614        HwBranchMisses = 15,
10615        /// bus-cycles
10616        HwBusCycles = 16,
10617        /// stalled-cycles-frontend, idle-cycles-frontend
10618        HwStalledCyclesFrontend = 17,
10619        /// stalled-cycles-backend, idle-cycles-backend
10620        HwStalledCyclesBackend = 18,
10621        /// ref-cycles
10622        HwRefCpuCycles = 19,
10623    }
10624    impl Counter {
10625        /// String value of the enum field names used in the ProtoBuf definition.
10626        ///
10627        /// The values are not transformed in any way and thus are considered stable
10628        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10629        pub fn as_str_name(&self) -> &'static str {
10630            match self {
10631                Self::UnknownCounter => "UNKNOWN_COUNTER",
10632                Self::SwCpuClock => "SW_CPU_CLOCK",
10633                Self::SwPageFaults => "SW_PAGE_FAULTS",
10634                Self::SwTaskClock => "SW_TASK_CLOCK",
10635                Self::SwContextSwitches => "SW_CONTEXT_SWITCHES",
10636                Self::SwCpuMigrations => "SW_CPU_MIGRATIONS",
10637                Self::SwPageFaultsMin => "SW_PAGE_FAULTS_MIN",
10638                Self::SwPageFaultsMaj => "SW_PAGE_FAULTS_MAJ",
10639                Self::SwAlignmentFaults => "SW_ALIGNMENT_FAULTS",
10640                Self::SwEmulationFaults => "SW_EMULATION_FAULTS",
10641                Self::SwDummy => "SW_DUMMY",
10642                Self::HwCpuCycles => "HW_CPU_CYCLES",
10643                Self::HwInstructions => "HW_INSTRUCTIONS",
10644                Self::HwCacheReferences => "HW_CACHE_REFERENCES",
10645                Self::HwCacheMisses => "HW_CACHE_MISSES",
10646                Self::HwBranchInstructions => "HW_BRANCH_INSTRUCTIONS",
10647                Self::HwBranchMisses => "HW_BRANCH_MISSES",
10648                Self::HwBusCycles => "HW_BUS_CYCLES",
10649                Self::HwStalledCyclesFrontend => "HW_STALLED_CYCLES_FRONTEND",
10650                Self::HwStalledCyclesBackend => "HW_STALLED_CYCLES_BACKEND",
10651                Self::HwRefCpuCycles => "HW_REF_CPU_CYCLES",
10652            }
10653        }
10654        /// Creates an enum from field names used in the ProtoBuf definition.
10655        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10656            match value {
10657                "UNKNOWN_COUNTER" => Some(Self::UnknownCounter),
10658                "SW_CPU_CLOCK" => Some(Self::SwCpuClock),
10659                "SW_PAGE_FAULTS" => Some(Self::SwPageFaults),
10660                "SW_TASK_CLOCK" => Some(Self::SwTaskClock),
10661                "SW_CONTEXT_SWITCHES" => Some(Self::SwContextSwitches),
10662                "SW_CPU_MIGRATIONS" => Some(Self::SwCpuMigrations),
10663                "SW_PAGE_FAULTS_MIN" => Some(Self::SwPageFaultsMin),
10664                "SW_PAGE_FAULTS_MAJ" => Some(Self::SwPageFaultsMaj),
10665                "SW_ALIGNMENT_FAULTS" => Some(Self::SwAlignmentFaults),
10666                "SW_EMULATION_FAULTS" => Some(Self::SwEmulationFaults),
10667                "SW_DUMMY" => Some(Self::SwDummy),
10668                "HW_CPU_CYCLES" => Some(Self::HwCpuCycles),
10669                "HW_INSTRUCTIONS" => Some(Self::HwInstructions),
10670                "HW_CACHE_REFERENCES" => Some(Self::HwCacheReferences),
10671                "HW_CACHE_MISSES" => Some(Self::HwCacheMisses),
10672                "HW_BRANCH_INSTRUCTIONS" => Some(Self::HwBranchInstructions),
10673                "HW_BRANCH_MISSES" => Some(Self::HwBranchMisses),
10674                "HW_BUS_CYCLES" => Some(Self::HwBusCycles),
10675                "HW_STALLED_CYCLES_FRONTEND" => Some(Self::HwStalledCyclesFrontend),
10676                "HW_STALLED_CYCLES_BACKEND" => Some(Self::HwStalledCyclesBackend),
10677                "HW_REF_CPU_CYCLES" => Some(Self::HwRefCpuCycles),
10678                _ => None,
10679            }
10680        }
10681    }
10682    /// Subset of clocks that is supported by perf timestamping.
10683    /// CLOCK_TAI is excluded since it's not expected to be used in practice, but
10684    /// would require additions to the trace clock synchronisation logic.
10685    #[derive(
10686        Clone,
10687        Copy,
10688        Debug,
10689        PartialEq,
10690        Eq,
10691        Hash,
10692        PartialOrd,
10693        Ord,
10694        ::prost::Enumeration
10695    )]
10696    #[repr(i32)]
10697    pub enum PerfClock {
10698        UnknownPerfClock = 0,
10699        Realtime = 1,
10700        Monotonic = 2,
10701        MonotonicRaw = 3,
10702        Boottime = 4,
10703    }
10704    impl PerfClock {
10705        /// String value of the enum field names used in the ProtoBuf definition.
10706        ///
10707        /// The values are not transformed in any way and thus are considered stable
10708        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10709        pub fn as_str_name(&self) -> &'static str {
10710            match self {
10711                Self::UnknownPerfClock => "UNKNOWN_PERF_CLOCK",
10712                Self::Realtime => "PERF_CLOCK_REALTIME",
10713                Self::Monotonic => "PERF_CLOCK_MONOTONIC",
10714                Self::MonotonicRaw => "PERF_CLOCK_MONOTONIC_RAW",
10715                Self::Boottime => "PERF_CLOCK_BOOTTIME",
10716            }
10717        }
10718        /// Creates an enum from field names used in the ProtoBuf definition.
10719        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10720            match value {
10721                "UNKNOWN_PERF_CLOCK" => Some(Self::UnknownPerfClock),
10722                "PERF_CLOCK_REALTIME" => Some(Self::Realtime),
10723                "PERF_CLOCK_MONOTONIC" => Some(Self::Monotonic),
10724                "PERF_CLOCK_MONOTONIC_RAW" => Some(Self::MonotonicRaw),
10725                "PERF_CLOCK_BOOTTIME" => Some(Self::Boottime),
10726                _ => None,
10727            }
10728        }
10729    }
10730    #[derive(
10731        Clone,
10732        Copy,
10733        Debug,
10734        PartialEq,
10735        Eq,
10736        Hash,
10737        PartialOrd,
10738        Ord,
10739        ::prost::Enumeration
10740    )]
10741    #[repr(i32)]
10742    pub enum EventModifier {
10743        UnknownEventModifier = 0,
10744        /// count only while in userspace
10745        CountUserspace = 1,
10746        /// count only while in kernel
10747        CountKernel = 2,
10748        /// count only while in hypervisor
10749        CountHypervisor = 3,
10750    }
10751    impl EventModifier {
10752        /// String value of the enum field names used in the ProtoBuf definition.
10753        ///
10754        /// The values are not transformed in any way and thus are considered stable
10755        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10756        pub fn as_str_name(&self) -> &'static str {
10757            match self {
10758                Self::UnknownEventModifier => "UNKNOWN_EVENT_MODIFIER",
10759                Self::CountUserspace => "EVENT_MODIFIER_COUNT_USERSPACE",
10760                Self::CountKernel => "EVENT_MODIFIER_COUNT_KERNEL",
10761                Self::CountHypervisor => "EVENT_MODIFIER_COUNT_HYPERVISOR",
10762            }
10763        }
10764        /// Creates an enum from field names used in the ProtoBuf definition.
10765        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10766            match value {
10767                "UNKNOWN_EVENT_MODIFIER" => Some(Self::UnknownEventModifier),
10768                "EVENT_MODIFIER_COUNT_USERSPACE" => Some(Self::CountUserspace),
10769                "EVENT_MODIFIER_COUNT_KERNEL" => Some(Self::CountKernel),
10770                "EVENT_MODIFIER_COUNT_HYPERVISOR" => Some(Self::CountHypervisor),
10771                _ => None,
10772            }
10773        }
10774    }
10775}
10776/// Additional events associated with a leader.
10777/// See <https://man7.org/linux/man-pages/man1/perf-list.1.html#LEADER_SAMPLING>
10778#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10779pub struct FollowerEvent {
10780    /// Modifiers can differ between the timebase and followers.
10781    #[prost(
10782        enumeration = "perf_events::EventModifier",
10783        repeated,
10784        packed = "false",
10785        tag = "5"
10786    )]
10787    pub modifiers: ::prost::alloc::vec::Vec<i32>,
10788    /// Optional arbitrary name for the event, to identify it in the parsed
10789    /// trace. Does *not* affect the profiling itself. If unset, the trace
10790    /// parser will choose a suitable name.
10791    #[prost(string, optional, tag = "4")]
10792    pub name: ::core::option::Option<::prost::alloc::string::String>,
10793    #[prost(oneof = "follower_event::Event", tags = "1, 2, 3")]
10794    pub event: ::core::option::Option<follower_event::Event>,
10795}
10796/// Nested message and enum types in `FollowerEvent`.
10797pub mod follower_event {
10798    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
10799    pub enum Event {
10800        #[prost(enumeration = "super::perf_events::Counter", tag = "1")]
10801        Counter(i32),
10802        #[prost(message, tag = "2")]
10803        Tracepoint(super::perf_events::Tracepoint),
10804        #[prost(message, tag = "3")]
10805        RawEvent(super::perf_events::RawEvent),
10806    }
10807}
10808/// Configuration for the traced_perf profiler.
10809///
10810/// Example config for basic cpu profiling:
10811///    perf_event_config {
10812///      timebase {
10813///        frequency: 80
10814///      }
10815///      callstack_sampling {
10816///        scope {
10817///          target_cmdline: "surfaceflinger"
10818///          target_cmdline: "system_server"
10819///        }
10820///        kernel_frames: true
10821///      }
10822///    }
10823///
10824/// Next id: 23
10825#[derive(Clone, PartialEq, ::prost::Message)]
10826pub struct PerfEventConfig {
10827    /// What event to sample on, and how often.
10828    /// Defined in common/perf_events.proto.
10829    #[prost(message, optional, tag = "15")]
10830    pub timebase: ::core::option::Option<perf_events::Timebase>,
10831    /// Other events associated with the leader described in the timebase.
10832    #[prost(message, repeated, tag = "19")]
10833    pub followers: ::prost::alloc::vec::Vec<FollowerEvent>,
10834    /// If set, the profiler will sample userspace processes' callstacks at the
10835    /// interval specified by the |timebase|.
10836    /// If unset, the profiler will record only the event counts.
10837    #[prost(message, optional, tag = "16")]
10838    pub callstack_sampling: ::core::option::Option<perf_event_config::CallstackSampling>,
10839    /// List of cpu indices for counting. If empty, the default is all cpus.
10840    ///
10841    /// Note: this is not inside |callstack_sampling.scope| as it also applies to
10842    /// counter-only traces. A future change will likely reorganise the options,
10843    /// but this field will continue to be supported.
10844    ///
10845    /// Available since: perfetto v50.
10846    #[prost(uint32, repeated, packed = "false", tag = "20")]
10847    pub target_cpu: ::prost::alloc::vec::Vec<u32>,
10848    /// Allow failure of perf_event_open
10849    #[prost(bool, optional, tag = "21")]
10850    pub ignore_open_failure: ::core::option::Option<bool>,
10851    /// If not empty, consider only CPUs whose CPUID matches one of these values.
10852    #[prost(string, repeated, tag = "22")]
10853    pub cpuid: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10854    /// How often the per-cpu ring buffers are read by the producer.
10855    /// If unset, an implementation-defined default is used.
10856    #[prost(uint32, optional, tag = "8")]
10857    pub ring_buffer_read_period_ms: ::core::option::Option<u32>,
10858    /// Size (in 4k pages) of each per-cpu ring buffer that is filled by the
10859    /// kernel. If set, must be a power of two.
10860    /// If unset, an implementation-defined default is used.
10861    #[prost(uint32, optional, tag = "3")]
10862    pub ring_buffer_pages: ::core::option::Option<u32>,
10863    /// Drop samples if the heap memory held by the samples in the unwinder queue
10864    /// is above the given limit. This counts the memory across all concurrent data
10865    /// sources (not just this one's), and there is no fairness guarantee - the
10866    /// whole quota might be used up by a concurrent source.
10867    #[prost(uint64, optional, tag = "17")]
10868    pub max_enqueued_footprint_kb: ::core::option::Option<u64>,
10869    /// Stop the data source if traced_perf's combined {RssAnon + Swap} memory
10870    /// footprint exceeds this value.
10871    #[prost(uint32, optional, tag = "13")]
10872    pub max_daemon_memory_kb: ::core::option::Option<u32>,
10873    /// Timeout for the remote /proc/<pid>/{maps,mem} file descriptors for a
10874    /// sampled process. This is primarily for Android, where this lookup is
10875    /// asynchronous. As long as the producer is waiting, the associated samples
10876    /// will be kept enqueued (putting pressure on the capacity of the shared
10877    /// unwinding queue). Once a lookup for a process expires, all associated
10878    /// samples are discarded. However, if the lookup still succeeds after the
10879    /// timeout, future samples will be handled normally.
10880    /// If unset, an implementation-defined default is used.
10881    #[prost(uint32, optional, tag = "9")]
10882    pub remote_descriptor_timeout_ms: ::core::option::Option<u32>,
10883    /// Optional period for clearing state cached by the userspace unwinder. This
10884    /// is a heavy operation that is only necessary for traces that target a wide
10885    /// set of processes, and require the memory footprint to be reset
10886    /// periodically. To effectively disable the cache clearing, set to a value
10887    /// greater than your trace duration.
10888    ///
10889    /// Relevant only if |callstack_sampling.user_frames| is set to UNWIND_DWARF.
10890    ///
10891    /// If zero or unset:
10892    /// * before perfetto v52: no cache clearing.
10893    /// * perfetto v52+: implementation chooses an infrequent default.
10894    #[prost(uint32, optional, tag = "10")]
10895    pub unwind_state_clear_period_ms: ::core::option::Option<u32>,
10896    /// If set, only profile target if it was installed by a package with one of
10897    /// these names. Special values:
10898    /// * "@system": installed on the system partition
10899    /// * "@product": installed on the product partition
10900    /// * "@null": sideloaded
10901    /// Supported on Android 12+.
10902    #[prost(string, repeated, tag = "18")]
10903    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10904    /// Note: legacy configs had to set |all_cpus| to true to pass parsing.
10905    /// We rely on this to detect such configs.
10906    #[prost(bool, optional, tag = "1")]
10907    pub all_cpus: ::core::option::Option<bool>,
10908    #[prost(uint32, optional, tag = "2")]
10909    pub sampling_frequency: ::core::option::Option<u32>,
10910    #[prost(bool, optional, tag = "12")]
10911    pub kernel_frames: ::core::option::Option<bool>,
10912    #[prost(int32, repeated, packed = "false", tag = "4")]
10913    pub target_pid: ::prost::alloc::vec::Vec<i32>,
10914    #[prost(string, repeated, tag = "5")]
10915    pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10916    #[prost(int32, repeated, packed = "false", tag = "6")]
10917    pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
10918    #[prost(string, repeated, tag = "7")]
10919    pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10920    #[prost(uint32, optional, tag = "11")]
10921    pub additional_cmdline_count: ::core::option::Option<u32>,
10922}
10923/// Nested message and enum types in `PerfEventConfig`.
10924pub mod perf_event_config {
10925    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10926    pub struct CallstackSampling {
10927        /// Defines a set of processes for which samples are retained/skipped. If
10928        /// unset, all samples are kept, but beware that it will be very heavy on the
10929        /// stack unwinder, which might start dropping samples due to overload.
10930        #[prost(message, optional, tag = "1")]
10931        pub scope: ::core::option::Option<Scope>,
10932        /// If true, callstacks will include the kernel-space frames. Such frames can
10933        /// be identified by a magical "kernel" string as their mapping name.
10934        /// Requires traced_perf to be running as root, or kptr_restrict to have been
10935        /// manually unrestricted. On Android, the platform should do the right thing
10936        /// on debug builds.
10937        /// This does *not* disclose KASLR, as only the function names are emitted.
10938        #[prost(bool, optional, tag = "2")]
10939        pub kernel_frames: ::core::option::Option<bool>,
10940        /// Whether to record and unwind userspace callstacks. If unset, defaults to
10941        /// including userspace (UNWIND_DWARF) both for backwards compatibility and
10942        /// as the most common default (this defaulting is only applicable if the
10943        /// outer CallstackSampling message is explicitly set).
10944        #[prost(enumeration = "UnwindMode", optional, tag = "3")]
10945        pub user_frames: ::core::option::Option<i32>,
10946    }
10947    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10948    pub struct Scope {
10949        /// Process ID (TGID) allowlist. If this list is not empty, only matching
10950        /// samples will be retained. If multiple allow/deny-lists are
10951        /// specified by the config, then all of them are evaluated for each sampled
10952        /// process.
10953        #[prost(int32, repeated, packed = "false", tag = "1")]
10954        pub target_pid: ::prost::alloc::vec::Vec<i32>,
10955        /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
10956        /// comm string). The semantics of this field were changed since its original
10957        /// introduction.
10958        ///
10959        /// On Android T+ (13+), this field can specify a single wildcard (*), and
10960        /// the profiler will attempt to match it in two possible ways:
10961        /// * if the pattern starts with a '/', then it is matched against the first
10962        ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
10963        ///    "/bin/echo".
10964        /// * otherwise the pattern is matched against the part of argv0
10965        ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
10966        ///    For example "echo" would match "/bin/echo".
10967        ///
10968        /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
10969        /// normalized prior to an exact string comparison. Normalization is as
10970        /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
10971        /// the string contains forward slashes, trim everything up to and including
10972        /// the last one.
10973        ///
10974        /// Implementation note: in either case, at most 511 characters of cmdline
10975        /// are considered.
10976        #[prost(string, repeated, tag = "2")]
10977        pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10978        /// List of excluded pids.
10979        #[prost(int32, repeated, packed = "false", tag = "3")]
10980        pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
10981        /// List of excluded cmdlines. See description of |target_cmdline| for how
10982        /// this is handled.
10983        #[prost(string, repeated, tag = "4")]
10984        pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10985        /// Number of additional command lines to sample. Only those which are
10986        /// neither explicitly included nor excluded will be considered. Processes
10987        /// are accepted on a first come, first served basis.
10988        #[prost(uint32, optional, tag = "5")]
10989        pub additional_cmdline_count: ::core::option::Option<u32>,
10990        /// If set to N, all encountered processes will be put into one of the N
10991        /// possible bins, and only one randomly-chosen bin will be selected for
10992        /// unwinding. The binning is simply "pid % N", under the assumption that
10993        /// low-order bits of pids are roughly uniformly distributed. Other explicit
10994        /// inclusions/exclusions in this |Scope| message are still respected.
10995        ///
10996        /// The profiler will report the chosen shard in PerfSampleDefaults, and the
10997        /// values will be queryable in trace processor under the "stats" table as
10998        /// "perf_process_shard_count" and "perf_chosen_process_shard".
10999        ///
11000        /// NB: all data sources in a config that set |process_shard_count| must set
11001        /// it to the same value. The profiler will choose one bin for all those data
11002        /// sources.
11003        #[prost(uint32, optional, tag = "6")]
11004        pub process_shard_count: ::core::option::Option<u32>,
11005    }
11006    /// Userspace unwinding mode.
11007    #[derive(
11008        Clone,
11009        Copy,
11010        Debug,
11011        PartialEq,
11012        Eq,
11013        Hash,
11014        PartialOrd,
11015        Ord,
11016        ::prost::Enumeration
11017    )]
11018    #[repr(i32)]
11019    pub enum UnwindMode {
11020        UnwindUnknown = 0,
11021        /// Do not unwind userspace:
11022        UnwindSkip = 1,
11023        /// Use libunwindstack (default):
11024        UnwindDwarf = 2,
11025        /// Use userspace frame pointer unwinder:
11026        UnwindFramePointer = 3,
11027        /// Ask the kernel to unwind the userspace stack via frame pointers, using
11028        /// PERF_SAMPLE_CALLCHAIN. The user stack bytes are not copied into the
11029        /// sample, which avoids the per-sample copy cost and the depth limit
11030        /// imposed by PERF_SAMPLE_STACK_USER. Requires that the userspace code
11031        /// (including system libraries) is built with frame pointers - the kernel
11032        /// walks the chain and returns instruction addresses, which still need to
11033        /// be symbolized offline using the recorded process mappings.
11034        UnwindKernelFramePointer = 4,
11035    }
11036    impl UnwindMode {
11037        /// String value of the enum field names used in the ProtoBuf definition.
11038        ///
11039        /// The values are not transformed in any way and thus are considered stable
11040        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11041        pub fn as_str_name(&self) -> &'static str {
11042            match self {
11043                Self::UnwindUnknown => "UNWIND_UNKNOWN",
11044                Self::UnwindSkip => "UNWIND_SKIP",
11045                Self::UnwindDwarf => "UNWIND_DWARF",
11046                Self::UnwindFramePointer => "UNWIND_FRAME_POINTER",
11047                Self::UnwindKernelFramePointer => "UNWIND_KERNEL_FRAME_POINTER",
11048            }
11049        }
11050        /// Creates an enum from field names used in the ProtoBuf definition.
11051        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11052            match value {
11053                "UNWIND_UNKNOWN" => Some(Self::UnwindUnknown),
11054                "UNWIND_SKIP" => Some(Self::UnwindSkip),
11055                "UNWIND_DWARF" => Some(Self::UnwindDwarf),
11056                "UNWIND_FRAME_POINTER" => Some(Self::UnwindFramePointer),
11057                "UNWIND_KERNEL_FRAME_POINTER" => Some(Self::UnwindKernelFramePointer),
11058                _ => None,
11059            }
11060        }
11061    }
11062}
11063/// When editing entries here remember also to update "sys_stats_counters.h" with
11064/// the corresponding string definitions for the actual /proc files parser.
11065///
11066/// Counter definitions for Linux's /proc/meminfo.
11067#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
11068#[repr(i32)]
11069pub enum MeminfoCounters {
11070    MeminfoUnspecified = 0,
11071    MeminfoMemTotal = 1,
11072    MeminfoMemFree = 2,
11073    MeminfoMemAvailable = 3,
11074    MeminfoBuffers = 4,
11075    MeminfoCached = 5,
11076    MeminfoSwapCached = 6,
11077    MeminfoActive = 7,
11078    MeminfoInactive = 8,
11079    MeminfoActiveAnon = 9,
11080    MeminfoInactiveAnon = 10,
11081    MeminfoActiveFile = 11,
11082    MeminfoInactiveFile = 12,
11083    MeminfoUnevictable = 13,
11084    MeminfoMlocked = 14,
11085    MeminfoSwapTotal = 15,
11086    MeminfoSwapFree = 16,
11087    MeminfoDirty = 17,
11088    MeminfoWriteback = 18,
11089    MeminfoAnonPages = 19,
11090    MeminfoMapped = 20,
11091    MeminfoShmem = 21,
11092    MeminfoSlab = 22,
11093    MeminfoSlabReclaimable = 23,
11094    MeminfoSlabUnreclaimable = 24,
11095    MeminfoKernelStack = 25,
11096    MeminfoPageTables = 26,
11097    MeminfoCommitLimit = 27,
11098    MeminfoCommitedAs = 28,
11099    MeminfoVmallocTotal = 29,
11100    MeminfoVmallocUsed = 30,
11101    MeminfoVmallocChunk = 31,
11102    MeminfoCmaTotal = 32,
11103    MeminfoCmaFree = 33,
11104    MeminfoGpu = 34,
11105    MeminfoZram = 35,
11106    MeminfoMisc = 36,
11107    MeminfoIonHeap = 37,
11108    MeminfoIonHeapPool = 38,
11109}
11110impl MeminfoCounters {
11111    /// String value of the enum field names used in the ProtoBuf definition.
11112    ///
11113    /// The values are not transformed in any way and thus are considered stable
11114    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11115    pub fn as_str_name(&self) -> &'static str {
11116        match self {
11117            Self::MeminfoUnspecified => "MEMINFO_UNSPECIFIED",
11118            Self::MeminfoMemTotal => "MEMINFO_MEM_TOTAL",
11119            Self::MeminfoMemFree => "MEMINFO_MEM_FREE",
11120            Self::MeminfoMemAvailable => "MEMINFO_MEM_AVAILABLE",
11121            Self::MeminfoBuffers => "MEMINFO_BUFFERS",
11122            Self::MeminfoCached => "MEMINFO_CACHED",
11123            Self::MeminfoSwapCached => "MEMINFO_SWAP_CACHED",
11124            Self::MeminfoActive => "MEMINFO_ACTIVE",
11125            Self::MeminfoInactive => "MEMINFO_INACTIVE",
11126            Self::MeminfoActiveAnon => "MEMINFO_ACTIVE_ANON",
11127            Self::MeminfoInactiveAnon => "MEMINFO_INACTIVE_ANON",
11128            Self::MeminfoActiveFile => "MEMINFO_ACTIVE_FILE",
11129            Self::MeminfoInactiveFile => "MEMINFO_INACTIVE_FILE",
11130            Self::MeminfoUnevictable => "MEMINFO_UNEVICTABLE",
11131            Self::MeminfoMlocked => "MEMINFO_MLOCKED",
11132            Self::MeminfoSwapTotal => "MEMINFO_SWAP_TOTAL",
11133            Self::MeminfoSwapFree => "MEMINFO_SWAP_FREE",
11134            Self::MeminfoDirty => "MEMINFO_DIRTY",
11135            Self::MeminfoWriteback => "MEMINFO_WRITEBACK",
11136            Self::MeminfoAnonPages => "MEMINFO_ANON_PAGES",
11137            Self::MeminfoMapped => "MEMINFO_MAPPED",
11138            Self::MeminfoShmem => "MEMINFO_SHMEM",
11139            Self::MeminfoSlab => "MEMINFO_SLAB",
11140            Self::MeminfoSlabReclaimable => "MEMINFO_SLAB_RECLAIMABLE",
11141            Self::MeminfoSlabUnreclaimable => "MEMINFO_SLAB_UNRECLAIMABLE",
11142            Self::MeminfoKernelStack => "MEMINFO_KERNEL_STACK",
11143            Self::MeminfoPageTables => "MEMINFO_PAGE_TABLES",
11144            Self::MeminfoCommitLimit => "MEMINFO_COMMIT_LIMIT",
11145            Self::MeminfoCommitedAs => "MEMINFO_COMMITED_AS",
11146            Self::MeminfoVmallocTotal => "MEMINFO_VMALLOC_TOTAL",
11147            Self::MeminfoVmallocUsed => "MEMINFO_VMALLOC_USED",
11148            Self::MeminfoVmallocChunk => "MEMINFO_VMALLOC_CHUNK",
11149            Self::MeminfoCmaTotal => "MEMINFO_CMA_TOTAL",
11150            Self::MeminfoCmaFree => "MEMINFO_CMA_FREE",
11151            Self::MeminfoGpu => "MEMINFO_GPU",
11152            Self::MeminfoZram => "MEMINFO_ZRAM",
11153            Self::MeminfoMisc => "MEMINFO_MISC",
11154            Self::MeminfoIonHeap => "MEMINFO_ION_HEAP",
11155            Self::MeminfoIonHeapPool => "MEMINFO_ION_HEAP_POOL",
11156        }
11157    }
11158    /// Creates an enum from field names used in the ProtoBuf definition.
11159    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11160        match value {
11161            "MEMINFO_UNSPECIFIED" => Some(Self::MeminfoUnspecified),
11162            "MEMINFO_MEM_TOTAL" => Some(Self::MeminfoMemTotal),
11163            "MEMINFO_MEM_FREE" => Some(Self::MeminfoMemFree),
11164            "MEMINFO_MEM_AVAILABLE" => Some(Self::MeminfoMemAvailable),
11165            "MEMINFO_BUFFERS" => Some(Self::MeminfoBuffers),
11166            "MEMINFO_CACHED" => Some(Self::MeminfoCached),
11167            "MEMINFO_SWAP_CACHED" => Some(Self::MeminfoSwapCached),
11168            "MEMINFO_ACTIVE" => Some(Self::MeminfoActive),
11169            "MEMINFO_INACTIVE" => Some(Self::MeminfoInactive),
11170            "MEMINFO_ACTIVE_ANON" => Some(Self::MeminfoActiveAnon),
11171            "MEMINFO_INACTIVE_ANON" => Some(Self::MeminfoInactiveAnon),
11172            "MEMINFO_ACTIVE_FILE" => Some(Self::MeminfoActiveFile),
11173            "MEMINFO_INACTIVE_FILE" => Some(Self::MeminfoInactiveFile),
11174            "MEMINFO_UNEVICTABLE" => Some(Self::MeminfoUnevictable),
11175            "MEMINFO_MLOCKED" => Some(Self::MeminfoMlocked),
11176            "MEMINFO_SWAP_TOTAL" => Some(Self::MeminfoSwapTotal),
11177            "MEMINFO_SWAP_FREE" => Some(Self::MeminfoSwapFree),
11178            "MEMINFO_DIRTY" => Some(Self::MeminfoDirty),
11179            "MEMINFO_WRITEBACK" => Some(Self::MeminfoWriteback),
11180            "MEMINFO_ANON_PAGES" => Some(Self::MeminfoAnonPages),
11181            "MEMINFO_MAPPED" => Some(Self::MeminfoMapped),
11182            "MEMINFO_SHMEM" => Some(Self::MeminfoShmem),
11183            "MEMINFO_SLAB" => Some(Self::MeminfoSlab),
11184            "MEMINFO_SLAB_RECLAIMABLE" => Some(Self::MeminfoSlabReclaimable),
11185            "MEMINFO_SLAB_UNRECLAIMABLE" => Some(Self::MeminfoSlabUnreclaimable),
11186            "MEMINFO_KERNEL_STACK" => Some(Self::MeminfoKernelStack),
11187            "MEMINFO_PAGE_TABLES" => Some(Self::MeminfoPageTables),
11188            "MEMINFO_COMMIT_LIMIT" => Some(Self::MeminfoCommitLimit),
11189            "MEMINFO_COMMITED_AS" => Some(Self::MeminfoCommitedAs),
11190            "MEMINFO_VMALLOC_TOTAL" => Some(Self::MeminfoVmallocTotal),
11191            "MEMINFO_VMALLOC_USED" => Some(Self::MeminfoVmallocUsed),
11192            "MEMINFO_VMALLOC_CHUNK" => Some(Self::MeminfoVmallocChunk),
11193            "MEMINFO_CMA_TOTAL" => Some(Self::MeminfoCmaTotal),
11194            "MEMINFO_CMA_FREE" => Some(Self::MeminfoCmaFree),
11195            "MEMINFO_GPU" => Some(Self::MeminfoGpu),
11196            "MEMINFO_ZRAM" => Some(Self::MeminfoZram),
11197            "MEMINFO_MISC" => Some(Self::MeminfoMisc),
11198            "MEMINFO_ION_HEAP" => Some(Self::MeminfoIonHeap),
11199            "MEMINFO_ION_HEAP_POOL" => Some(Self::MeminfoIonHeapPool),
11200            _ => None,
11201        }
11202    }
11203}
11204/// Counter definitions for Linux's /proc/vmstat.
11205#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
11206#[repr(i32)]
11207pub enum VmstatCounters {
11208    VmstatUnspecified = 0,
11209    VmstatNrFreePages = 1,
11210    VmstatNrAllocBatch = 2,
11211    VmstatNrInactiveAnon = 3,
11212    VmstatNrActiveAnon = 4,
11213    VmstatNrInactiveFile = 5,
11214    VmstatNrActiveFile = 6,
11215    VmstatNrUnevictable = 7,
11216    VmstatNrMlock = 8,
11217    VmstatNrAnonPages = 9,
11218    VmstatNrMapped = 10,
11219    VmstatNrFilePages = 11,
11220    VmstatNrDirty = 12,
11221    VmstatNrWriteback = 13,
11222    VmstatNrSlabReclaimable = 14,
11223    VmstatNrSlabUnreclaimable = 15,
11224    VmstatNrPageTablePages = 16,
11225    VmstatNrKernelStack = 17,
11226    VmstatNrOverhead = 18,
11227    VmstatNrUnstable = 19,
11228    VmstatNrBounce = 20,
11229    VmstatNrVmscanWrite = 21,
11230    VmstatNrVmscanImmediateReclaim = 22,
11231    VmstatNrWritebackTemp = 23,
11232    VmstatNrIsolatedAnon = 24,
11233    VmstatNrIsolatedFile = 25,
11234    VmstatNrShmem = 26,
11235    VmstatNrDirtied = 27,
11236    VmstatNrWritten = 28,
11237    VmstatNrPagesScanned = 29,
11238    VmstatWorkingsetRefault = 30,
11239    VmstatWorkingsetActivate = 31,
11240    VmstatWorkingsetNodereclaim = 32,
11241    VmstatNrAnonTransparentHugepages = 33,
11242    VmstatNrFreeCma = 34,
11243    VmstatNrSwapcache = 35,
11244    VmstatNrDirtyThreshold = 36,
11245    VmstatNrDirtyBackgroundThreshold = 37,
11246    VmstatPgpgin = 38,
11247    VmstatPgpgout = 39,
11248    VmstatPgpgoutclean = 40,
11249    VmstatPswpin = 41,
11250    VmstatPswpout = 42,
11251    VmstatPgallocDma = 43,
11252    VmstatPgallocNormal = 44,
11253    VmstatPgallocMovable = 45,
11254    VmstatPgfree = 46,
11255    VmstatPgactivate = 47,
11256    VmstatPgdeactivate = 48,
11257    VmstatPgfault = 49,
11258    VmstatPgmajfault = 50,
11259    VmstatPgrefillDma = 51,
11260    VmstatPgrefillNormal = 52,
11261    VmstatPgrefillMovable = 53,
11262    VmstatPgstealKswapdDma = 54,
11263    VmstatPgstealKswapdNormal = 55,
11264    VmstatPgstealKswapdMovable = 56,
11265    VmstatPgstealDirectDma = 57,
11266    VmstatPgstealDirectNormal = 58,
11267    VmstatPgstealDirectMovable = 59,
11268    VmstatPgscanKswapdDma = 60,
11269    VmstatPgscanKswapdNormal = 61,
11270    VmstatPgscanKswapdMovable = 62,
11271    VmstatPgscanDirectDma = 63,
11272    VmstatPgscanDirectNormal = 64,
11273    VmstatPgscanDirectMovable = 65,
11274    VmstatPgscanDirectThrottle = 66,
11275    VmstatPginodesteal = 67,
11276    VmstatSlabsScanned = 68,
11277    VmstatKswapdInodesteal = 69,
11278    VmstatKswapdLowWmarkHitQuickly = 70,
11279    VmstatKswapdHighWmarkHitQuickly = 71,
11280    VmstatPageoutrun = 72,
11281    VmstatAllocstall = 73,
11282    VmstatPgrotated = 74,
11283    VmstatDropPagecache = 75,
11284    VmstatDropSlab = 76,
11285    VmstatPgmigrateSuccess = 77,
11286    VmstatPgmigrateFail = 78,
11287    VmstatCompactMigrateScanned = 79,
11288    VmstatCompactFreeScanned = 80,
11289    VmstatCompactIsolated = 81,
11290    VmstatCompactStall = 82,
11291    VmstatCompactFail = 83,
11292    VmstatCompactSuccess = 84,
11293    VmstatCompactDaemonWake = 85,
11294    VmstatUnevictablePgsCulled = 86,
11295    VmstatUnevictablePgsScanned = 87,
11296    VmstatUnevictablePgsRescued = 88,
11297    VmstatUnevictablePgsMlocked = 89,
11298    VmstatUnevictablePgsMunlocked = 90,
11299    VmstatUnevictablePgsCleared = 91,
11300    VmstatUnevictablePgsStranded = 92,
11301    VmstatNrZspages = 93,
11302    VmstatNrIonHeap = 94,
11303    VmstatNrGpuHeap = 95,
11304    VmstatAllocstallDma = 96,
11305    VmstatAllocstallMovable = 97,
11306    VmstatAllocstallNormal = 98,
11307    VmstatCompactDaemonFreeScanned = 99,
11308    VmstatCompactDaemonMigrateScanned = 100,
11309    VmstatNrFastrpc = 101,
11310    VmstatNrIndirectlyReclaimable = 102,
11311    VmstatNrIonHeapPool = 103,
11312    VmstatNrKernelMiscReclaimable = 104,
11313    VmstatNrShadowCallStackBytes = 105,
11314    VmstatNrShmemHugepages = 106,
11315    VmstatNrShmemPmdmapped = 107,
11316    VmstatNrUnreclaimablePages = 108,
11317    VmstatNrZoneActiveAnon = 109,
11318    VmstatNrZoneActiveFile = 110,
11319    VmstatNrZoneInactiveAnon = 111,
11320    VmstatNrZoneInactiveFile = 112,
11321    VmstatNrZoneUnevictable = 113,
11322    VmstatNrZoneWritePending = 114,
11323    VmstatOomKill = 115,
11324    VmstatPglazyfree = 116,
11325    VmstatPglazyfreed = 117,
11326    VmstatPgrefill = 118,
11327    VmstatPgscanDirect = 119,
11328    VmstatPgscanKswapd = 120,
11329    VmstatPgskipDma = 121,
11330    VmstatPgskipMovable = 122,
11331    VmstatPgskipNormal = 123,
11332    VmstatPgstealDirect = 124,
11333    VmstatPgstealKswapd = 125,
11334    VmstatSwapRa = 126,
11335    VmstatSwapRaHit = 127,
11336    VmstatWorkingsetRestore = 128,
11337    VmstatAllocstallDevice = 129,
11338    VmstatAllocstallDma32 = 130,
11339    VmstatBalloonDeflate = 131,
11340    VmstatBalloonInflate = 132,
11341    VmstatBalloonMigrate = 133,
11342    VmstatCmaAllocFail = 134,
11343    VmstatCmaAllocSuccess = 135,
11344    VmstatNrFileHugepages = 136,
11345    VmstatNrFilePmdmapped = 137,
11346    VmstatNrFollPinAcquired = 138,
11347    VmstatNrFollPinReleased = 139,
11348    VmstatNrSecPageTablePages = 140,
11349    VmstatNrShadowCallStack = 141,
11350    VmstatNrSwapcached = 142,
11351    VmstatNrThrottledWritten = 143,
11352    VmstatPgallocDevice = 144,
11353    VmstatPgallocDma32 = 145,
11354    VmstatPgdemoteDirect = 146,
11355    VmstatPgdemoteKswapd = 147,
11356    VmstatPgreuse = 148,
11357    VmstatPgscanAnon = 149,
11358    VmstatPgscanFile = 150,
11359    VmstatPgskipDevice = 151,
11360    VmstatPgskipDma32 = 152,
11361    VmstatPgstealAnon = 153,
11362    VmstatPgstealFile = 154,
11363    VmstatThpCollapseAlloc = 155,
11364    VmstatThpCollapseAllocFailed = 156,
11365    VmstatThpDeferredSplitPage = 157,
11366    VmstatThpFaultAlloc = 158,
11367    VmstatThpFaultFallback = 159,
11368    VmstatThpFaultFallbackCharge = 160,
11369    VmstatThpFileAlloc = 161,
11370    VmstatThpFileFallback = 162,
11371    VmstatThpFileFallbackCharge = 163,
11372    VmstatThpFileMapped = 164,
11373    VmstatThpMigrationFail = 165,
11374    VmstatThpMigrationSplit = 166,
11375    VmstatThpMigrationSuccess = 167,
11376    VmstatThpScanExceedNonePte = 168,
11377    VmstatThpScanExceedSharePte = 169,
11378    VmstatThpScanExceedSwapPte = 170,
11379    VmstatThpSplitPage = 171,
11380    VmstatThpSplitPageFailed = 172,
11381    VmstatThpSplitPmd = 173,
11382    VmstatThpSwpout = 174,
11383    VmstatThpSwpoutFallback = 175,
11384    VmstatThpZeroPageAlloc = 176,
11385    VmstatThpZeroPageAllocFailed = 177,
11386    VmstatVmaLockAbort = 178,
11387    VmstatVmaLockMiss = 179,
11388    VmstatVmaLockRetry = 180,
11389    VmstatVmaLockSuccess = 181,
11390    VmstatWorkingsetActivateAnon = 182,
11391    VmstatWorkingsetActivateFile = 183,
11392    VmstatWorkingsetNodes = 184,
11393    VmstatWorkingsetRefaultAnon = 185,
11394    VmstatWorkingsetRefaultFile = 186,
11395    VmstatWorkingsetRestoreAnon = 187,
11396    VmstatWorkingsetRestoreFile = 188,
11397}
11398impl VmstatCounters {
11399    /// String value of the enum field names used in the ProtoBuf definition.
11400    ///
11401    /// The values are not transformed in any way and thus are considered stable
11402    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11403    pub fn as_str_name(&self) -> &'static str {
11404        match self {
11405            Self::VmstatUnspecified => "VMSTAT_UNSPECIFIED",
11406            Self::VmstatNrFreePages => "VMSTAT_NR_FREE_PAGES",
11407            Self::VmstatNrAllocBatch => "VMSTAT_NR_ALLOC_BATCH",
11408            Self::VmstatNrInactiveAnon => "VMSTAT_NR_INACTIVE_ANON",
11409            Self::VmstatNrActiveAnon => "VMSTAT_NR_ACTIVE_ANON",
11410            Self::VmstatNrInactiveFile => "VMSTAT_NR_INACTIVE_FILE",
11411            Self::VmstatNrActiveFile => "VMSTAT_NR_ACTIVE_FILE",
11412            Self::VmstatNrUnevictable => "VMSTAT_NR_UNEVICTABLE",
11413            Self::VmstatNrMlock => "VMSTAT_NR_MLOCK",
11414            Self::VmstatNrAnonPages => "VMSTAT_NR_ANON_PAGES",
11415            Self::VmstatNrMapped => "VMSTAT_NR_MAPPED",
11416            Self::VmstatNrFilePages => "VMSTAT_NR_FILE_PAGES",
11417            Self::VmstatNrDirty => "VMSTAT_NR_DIRTY",
11418            Self::VmstatNrWriteback => "VMSTAT_NR_WRITEBACK",
11419            Self::VmstatNrSlabReclaimable => "VMSTAT_NR_SLAB_RECLAIMABLE",
11420            Self::VmstatNrSlabUnreclaimable => "VMSTAT_NR_SLAB_UNRECLAIMABLE",
11421            Self::VmstatNrPageTablePages => "VMSTAT_NR_PAGE_TABLE_PAGES",
11422            Self::VmstatNrKernelStack => "VMSTAT_NR_KERNEL_STACK",
11423            Self::VmstatNrOverhead => "VMSTAT_NR_OVERHEAD",
11424            Self::VmstatNrUnstable => "VMSTAT_NR_UNSTABLE",
11425            Self::VmstatNrBounce => "VMSTAT_NR_BOUNCE",
11426            Self::VmstatNrVmscanWrite => "VMSTAT_NR_VMSCAN_WRITE",
11427            Self::VmstatNrVmscanImmediateReclaim => "VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM",
11428            Self::VmstatNrWritebackTemp => "VMSTAT_NR_WRITEBACK_TEMP",
11429            Self::VmstatNrIsolatedAnon => "VMSTAT_NR_ISOLATED_ANON",
11430            Self::VmstatNrIsolatedFile => "VMSTAT_NR_ISOLATED_FILE",
11431            Self::VmstatNrShmem => "VMSTAT_NR_SHMEM",
11432            Self::VmstatNrDirtied => "VMSTAT_NR_DIRTIED",
11433            Self::VmstatNrWritten => "VMSTAT_NR_WRITTEN",
11434            Self::VmstatNrPagesScanned => "VMSTAT_NR_PAGES_SCANNED",
11435            Self::VmstatWorkingsetRefault => "VMSTAT_WORKINGSET_REFAULT",
11436            Self::VmstatWorkingsetActivate => "VMSTAT_WORKINGSET_ACTIVATE",
11437            Self::VmstatWorkingsetNodereclaim => "VMSTAT_WORKINGSET_NODERECLAIM",
11438            Self::VmstatNrAnonTransparentHugepages => {
11439                "VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES"
11440            }
11441            Self::VmstatNrFreeCma => "VMSTAT_NR_FREE_CMA",
11442            Self::VmstatNrSwapcache => "VMSTAT_NR_SWAPCACHE",
11443            Self::VmstatNrDirtyThreshold => "VMSTAT_NR_DIRTY_THRESHOLD",
11444            Self::VmstatNrDirtyBackgroundThreshold => {
11445                "VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD"
11446            }
11447            Self::VmstatPgpgin => "VMSTAT_PGPGIN",
11448            Self::VmstatPgpgout => "VMSTAT_PGPGOUT",
11449            Self::VmstatPgpgoutclean => "VMSTAT_PGPGOUTCLEAN",
11450            Self::VmstatPswpin => "VMSTAT_PSWPIN",
11451            Self::VmstatPswpout => "VMSTAT_PSWPOUT",
11452            Self::VmstatPgallocDma => "VMSTAT_PGALLOC_DMA",
11453            Self::VmstatPgallocNormal => "VMSTAT_PGALLOC_NORMAL",
11454            Self::VmstatPgallocMovable => "VMSTAT_PGALLOC_MOVABLE",
11455            Self::VmstatPgfree => "VMSTAT_PGFREE",
11456            Self::VmstatPgactivate => "VMSTAT_PGACTIVATE",
11457            Self::VmstatPgdeactivate => "VMSTAT_PGDEACTIVATE",
11458            Self::VmstatPgfault => "VMSTAT_PGFAULT",
11459            Self::VmstatPgmajfault => "VMSTAT_PGMAJFAULT",
11460            Self::VmstatPgrefillDma => "VMSTAT_PGREFILL_DMA",
11461            Self::VmstatPgrefillNormal => "VMSTAT_PGREFILL_NORMAL",
11462            Self::VmstatPgrefillMovable => "VMSTAT_PGREFILL_MOVABLE",
11463            Self::VmstatPgstealKswapdDma => "VMSTAT_PGSTEAL_KSWAPD_DMA",
11464            Self::VmstatPgstealKswapdNormal => "VMSTAT_PGSTEAL_KSWAPD_NORMAL",
11465            Self::VmstatPgstealKswapdMovable => "VMSTAT_PGSTEAL_KSWAPD_MOVABLE",
11466            Self::VmstatPgstealDirectDma => "VMSTAT_PGSTEAL_DIRECT_DMA",
11467            Self::VmstatPgstealDirectNormal => "VMSTAT_PGSTEAL_DIRECT_NORMAL",
11468            Self::VmstatPgstealDirectMovable => "VMSTAT_PGSTEAL_DIRECT_MOVABLE",
11469            Self::VmstatPgscanKswapdDma => "VMSTAT_PGSCAN_KSWAPD_DMA",
11470            Self::VmstatPgscanKswapdNormal => "VMSTAT_PGSCAN_KSWAPD_NORMAL",
11471            Self::VmstatPgscanKswapdMovable => "VMSTAT_PGSCAN_KSWAPD_MOVABLE",
11472            Self::VmstatPgscanDirectDma => "VMSTAT_PGSCAN_DIRECT_DMA",
11473            Self::VmstatPgscanDirectNormal => "VMSTAT_PGSCAN_DIRECT_NORMAL",
11474            Self::VmstatPgscanDirectMovable => "VMSTAT_PGSCAN_DIRECT_MOVABLE",
11475            Self::VmstatPgscanDirectThrottle => "VMSTAT_PGSCAN_DIRECT_THROTTLE",
11476            Self::VmstatPginodesteal => "VMSTAT_PGINODESTEAL",
11477            Self::VmstatSlabsScanned => "VMSTAT_SLABS_SCANNED",
11478            Self::VmstatKswapdInodesteal => "VMSTAT_KSWAPD_INODESTEAL",
11479            Self::VmstatKswapdLowWmarkHitQuickly => "VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY",
11480            Self::VmstatKswapdHighWmarkHitQuickly => {
11481                "VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY"
11482            }
11483            Self::VmstatPageoutrun => "VMSTAT_PAGEOUTRUN",
11484            Self::VmstatAllocstall => "VMSTAT_ALLOCSTALL",
11485            Self::VmstatPgrotated => "VMSTAT_PGROTATED",
11486            Self::VmstatDropPagecache => "VMSTAT_DROP_PAGECACHE",
11487            Self::VmstatDropSlab => "VMSTAT_DROP_SLAB",
11488            Self::VmstatPgmigrateSuccess => "VMSTAT_PGMIGRATE_SUCCESS",
11489            Self::VmstatPgmigrateFail => "VMSTAT_PGMIGRATE_FAIL",
11490            Self::VmstatCompactMigrateScanned => "VMSTAT_COMPACT_MIGRATE_SCANNED",
11491            Self::VmstatCompactFreeScanned => "VMSTAT_COMPACT_FREE_SCANNED",
11492            Self::VmstatCompactIsolated => "VMSTAT_COMPACT_ISOLATED",
11493            Self::VmstatCompactStall => "VMSTAT_COMPACT_STALL",
11494            Self::VmstatCompactFail => "VMSTAT_COMPACT_FAIL",
11495            Self::VmstatCompactSuccess => "VMSTAT_COMPACT_SUCCESS",
11496            Self::VmstatCompactDaemonWake => "VMSTAT_COMPACT_DAEMON_WAKE",
11497            Self::VmstatUnevictablePgsCulled => "VMSTAT_UNEVICTABLE_PGS_CULLED",
11498            Self::VmstatUnevictablePgsScanned => "VMSTAT_UNEVICTABLE_PGS_SCANNED",
11499            Self::VmstatUnevictablePgsRescued => "VMSTAT_UNEVICTABLE_PGS_RESCUED",
11500            Self::VmstatUnevictablePgsMlocked => "VMSTAT_UNEVICTABLE_PGS_MLOCKED",
11501            Self::VmstatUnevictablePgsMunlocked => "VMSTAT_UNEVICTABLE_PGS_MUNLOCKED",
11502            Self::VmstatUnevictablePgsCleared => "VMSTAT_UNEVICTABLE_PGS_CLEARED",
11503            Self::VmstatUnevictablePgsStranded => "VMSTAT_UNEVICTABLE_PGS_STRANDED",
11504            Self::VmstatNrZspages => "VMSTAT_NR_ZSPAGES",
11505            Self::VmstatNrIonHeap => "VMSTAT_NR_ION_HEAP",
11506            Self::VmstatNrGpuHeap => "VMSTAT_NR_GPU_HEAP",
11507            Self::VmstatAllocstallDma => "VMSTAT_ALLOCSTALL_DMA",
11508            Self::VmstatAllocstallMovable => "VMSTAT_ALLOCSTALL_MOVABLE",
11509            Self::VmstatAllocstallNormal => "VMSTAT_ALLOCSTALL_NORMAL",
11510            Self::VmstatCompactDaemonFreeScanned => "VMSTAT_COMPACT_DAEMON_FREE_SCANNED",
11511            Self::VmstatCompactDaemonMigrateScanned => {
11512                "VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED"
11513            }
11514            Self::VmstatNrFastrpc => "VMSTAT_NR_FASTRPC",
11515            Self::VmstatNrIndirectlyReclaimable => "VMSTAT_NR_INDIRECTLY_RECLAIMABLE",
11516            Self::VmstatNrIonHeapPool => "VMSTAT_NR_ION_HEAP_POOL",
11517            Self::VmstatNrKernelMiscReclaimable => "VMSTAT_NR_KERNEL_MISC_RECLAIMABLE",
11518            Self::VmstatNrShadowCallStackBytes => "VMSTAT_NR_SHADOW_CALL_STACK_BYTES",
11519            Self::VmstatNrShmemHugepages => "VMSTAT_NR_SHMEM_HUGEPAGES",
11520            Self::VmstatNrShmemPmdmapped => "VMSTAT_NR_SHMEM_PMDMAPPED",
11521            Self::VmstatNrUnreclaimablePages => "VMSTAT_NR_UNRECLAIMABLE_PAGES",
11522            Self::VmstatNrZoneActiveAnon => "VMSTAT_NR_ZONE_ACTIVE_ANON",
11523            Self::VmstatNrZoneActiveFile => "VMSTAT_NR_ZONE_ACTIVE_FILE",
11524            Self::VmstatNrZoneInactiveAnon => "VMSTAT_NR_ZONE_INACTIVE_ANON",
11525            Self::VmstatNrZoneInactiveFile => "VMSTAT_NR_ZONE_INACTIVE_FILE",
11526            Self::VmstatNrZoneUnevictable => "VMSTAT_NR_ZONE_UNEVICTABLE",
11527            Self::VmstatNrZoneWritePending => "VMSTAT_NR_ZONE_WRITE_PENDING",
11528            Self::VmstatOomKill => "VMSTAT_OOM_KILL",
11529            Self::VmstatPglazyfree => "VMSTAT_PGLAZYFREE",
11530            Self::VmstatPglazyfreed => "VMSTAT_PGLAZYFREED",
11531            Self::VmstatPgrefill => "VMSTAT_PGREFILL",
11532            Self::VmstatPgscanDirect => "VMSTAT_PGSCAN_DIRECT",
11533            Self::VmstatPgscanKswapd => "VMSTAT_PGSCAN_KSWAPD",
11534            Self::VmstatPgskipDma => "VMSTAT_PGSKIP_DMA",
11535            Self::VmstatPgskipMovable => "VMSTAT_PGSKIP_MOVABLE",
11536            Self::VmstatPgskipNormal => "VMSTAT_PGSKIP_NORMAL",
11537            Self::VmstatPgstealDirect => "VMSTAT_PGSTEAL_DIRECT",
11538            Self::VmstatPgstealKswapd => "VMSTAT_PGSTEAL_KSWAPD",
11539            Self::VmstatSwapRa => "VMSTAT_SWAP_RA",
11540            Self::VmstatSwapRaHit => "VMSTAT_SWAP_RA_HIT",
11541            Self::VmstatWorkingsetRestore => "VMSTAT_WORKINGSET_RESTORE",
11542            Self::VmstatAllocstallDevice => "VMSTAT_ALLOCSTALL_DEVICE",
11543            Self::VmstatAllocstallDma32 => "VMSTAT_ALLOCSTALL_DMA32",
11544            Self::VmstatBalloonDeflate => "VMSTAT_BALLOON_DEFLATE",
11545            Self::VmstatBalloonInflate => "VMSTAT_BALLOON_INFLATE",
11546            Self::VmstatBalloonMigrate => "VMSTAT_BALLOON_MIGRATE",
11547            Self::VmstatCmaAllocFail => "VMSTAT_CMA_ALLOC_FAIL",
11548            Self::VmstatCmaAllocSuccess => "VMSTAT_CMA_ALLOC_SUCCESS",
11549            Self::VmstatNrFileHugepages => "VMSTAT_NR_FILE_HUGEPAGES",
11550            Self::VmstatNrFilePmdmapped => "VMSTAT_NR_FILE_PMDMAPPED",
11551            Self::VmstatNrFollPinAcquired => "VMSTAT_NR_FOLL_PIN_ACQUIRED",
11552            Self::VmstatNrFollPinReleased => "VMSTAT_NR_FOLL_PIN_RELEASED",
11553            Self::VmstatNrSecPageTablePages => "VMSTAT_NR_SEC_PAGE_TABLE_PAGES",
11554            Self::VmstatNrShadowCallStack => "VMSTAT_NR_SHADOW_CALL_STACK",
11555            Self::VmstatNrSwapcached => "VMSTAT_NR_SWAPCACHED",
11556            Self::VmstatNrThrottledWritten => "VMSTAT_NR_THROTTLED_WRITTEN",
11557            Self::VmstatPgallocDevice => "VMSTAT_PGALLOC_DEVICE",
11558            Self::VmstatPgallocDma32 => "VMSTAT_PGALLOC_DMA32",
11559            Self::VmstatPgdemoteDirect => "VMSTAT_PGDEMOTE_DIRECT",
11560            Self::VmstatPgdemoteKswapd => "VMSTAT_PGDEMOTE_KSWAPD",
11561            Self::VmstatPgreuse => "VMSTAT_PGREUSE",
11562            Self::VmstatPgscanAnon => "VMSTAT_PGSCAN_ANON",
11563            Self::VmstatPgscanFile => "VMSTAT_PGSCAN_FILE",
11564            Self::VmstatPgskipDevice => "VMSTAT_PGSKIP_DEVICE",
11565            Self::VmstatPgskipDma32 => "VMSTAT_PGSKIP_DMA32",
11566            Self::VmstatPgstealAnon => "VMSTAT_PGSTEAL_ANON",
11567            Self::VmstatPgstealFile => "VMSTAT_PGSTEAL_FILE",
11568            Self::VmstatThpCollapseAlloc => "VMSTAT_THP_COLLAPSE_ALLOC",
11569            Self::VmstatThpCollapseAllocFailed => "VMSTAT_THP_COLLAPSE_ALLOC_FAILED",
11570            Self::VmstatThpDeferredSplitPage => "VMSTAT_THP_DEFERRED_SPLIT_PAGE",
11571            Self::VmstatThpFaultAlloc => "VMSTAT_THP_FAULT_ALLOC",
11572            Self::VmstatThpFaultFallback => "VMSTAT_THP_FAULT_FALLBACK",
11573            Self::VmstatThpFaultFallbackCharge => "VMSTAT_THP_FAULT_FALLBACK_CHARGE",
11574            Self::VmstatThpFileAlloc => "VMSTAT_THP_FILE_ALLOC",
11575            Self::VmstatThpFileFallback => "VMSTAT_THP_FILE_FALLBACK",
11576            Self::VmstatThpFileFallbackCharge => "VMSTAT_THP_FILE_FALLBACK_CHARGE",
11577            Self::VmstatThpFileMapped => "VMSTAT_THP_FILE_MAPPED",
11578            Self::VmstatThpMigrationFail => "VMSTAT_THP_MIGRATION_FAIL",
11579            Self::VmstatThpMigrationSplit => "VMSTAT_THP_MIGRATION_SPLIT",
11580            Self::VmstatThpMigrationSuccess => "VMSTAT_THP_MIGRATION_SUCCESS",
11581            Self::VmstatThpScanExceedNonePte => "VMSTAT_THP_SCAN_EXCEED_NONE_PTE",
11582            Self::VmstatThpScanExceedSharePte => "VMSTAT_THP_SCAN_EXCEED_SHARE_PTE",
11583            Self::VmstatThpScanExceedSwapPte => "VMSTAT_THP_SCAN_EXCEED_SWAP_PTE",
11584            Self::VmstatThpSplitPage => "VMSTAT_THP_SPLIT_PAGE",
11585            Self::VmstatThpSplitPageFailed => "VMSTAT_THP_SPLIT_PAGE_FAILED",
11586            Self::VmstatThpSplitPmd => "VMSTAT_THP_SPLIT_PMD",
11587            Self::VmstatThpSwpout => "VMSTAT_THP_SWPOUT",
11588            Self::VmstatThpSwpoutFallback => "VMSTAT_THP_SWPOUT_FALLBACK",
11589            Self::VmstatThpZeroPageAlloc => "VMSTAT_THP_ZERO_PAGE_ALLOC",
11590            Self::VmstatThpZeroPageAllocFailed => "VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED",
11591            Self::VmstatVmaLockAbort => "VMSTAT_VMA_LOCK_ABORT",
11592            Self::VmstatVmaLockMiss => "VMSTAT_VMA_LOCK_MISS",
11593            Self::VmstatVmaLockRetry => "VMSTAT_VMA_LOCK_RETRY",
11594            Self::VmstatVmaLockSuccess => "VMSTAT_VMA_LOCK_SUCCESS",
11595            Self::VmstatWorkingsetActivateAnon => "VMSTAT_WORKINGSET_ACTIVATE_ANON",
11596            Self::VmstatWorkingsetActivateFile => "VMSTAT_WORKINGSET_ACTIVATE_FILE",
11597            Self::VmstatWorkingsetNodes => "VMSTAT_WORKINGSET_NODES",
11598            Self::VmstatWorkingsetRefaultAnon => "VMSTAT_WORKINGSET_REFAULT_ANON",
11599            Self::VmstatWorkingsetRefaultFile => "VMSTAT_WORKINGSET_REFAULT_FILE",
11600            Self::VmstatWorkingsetRestoreAnon => "VMSTAT_WORKINGSET_RESTORE_ANON",
11601            Self::VmstatWorkingsetRestoreFile => "VMSTAT_WORKINGSET_RESTORE_FILE",
11602        }
11603    }
11604    /// Creates an enum from field names used in the ProtoBuf definition.
11605    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11606        match value {
11607            "VMSTAT_UNSPECIFIED" => Some(Self::VmstatUnspecified),
11608            "VMSTAT_NR_FREE_PAGES" => Some(Self::VmstatNrFreePages),
11609            "VMSTAT_NR_ALLOC_BATCH" => Some(Self::VmstatNrAllocBatch),
11610            "VMSTAT_NR_INACTIVE_ANON" => Some(Self::VmstatNrInactiveAnon),
11611            "VMSTAT_NR_ACTIVE_ANON" => Some(Self::VmstatNrActiveAnon),
11612            "VMSTAT_NR_INACTIVE_FILE" => Some(Self::VmstatNrInactiveFile),
11613            "VMSTAT_NR_ACTIVE_FILE" => Some(Self::VmstatNrActiveFile),
11614            "VMSTAT_NR_UNEVICTABLE" => Some(Self::VmstatNrUnevictable),
11615            "VMSTAT_NR_MLOCK" => Some(Self::VmstatNrMlock),
11616            "VMSTAT_NR_ANON_PAGES" => Some(Self::VmstatNrAnonPages),
11617            "VMSTAT_NR_MAPPED" => Some(Self::VmstatNrMapped),
11618            "VMSTAT_NR_FILE_PAGES" => Some(Self::VmstatNrFilePages),
11619            "VMSTAT_NR_DIRTY" => Some(Self::VmstatNrDirty),
11620            "VMSTAT_NR_WRITEBACK" => Some(Self::VmstatNrWriteback),
11621            "VMSTAT_NR_SLAB_RECLAIMABLE" => Some(Self::VmstatNrSlabReclaimable),
11622            "VMSTAT_NR_SLAB_UNRECLAIMABLE" => Some(Self::VmstatNrSlabUnreclaimable),
11623            "VMSTAT_NR_PAGE_TABLE_PAGES" => Some(Self::VmstatNrPageTablePages),
11624            "VMSTAT_NR_KERNEL_STACK" => Some(Self::VmstatNrKernelStack),
11625            "VMSTAT_NR_OVERHEAD" => Some(Self::VmstatNrOverhead),
11626            "VMSTAT_NR_UNSTABLE" => Some(Self::VmstatNrUnstable),
11627            "VMSTAT_NR_BOUNCE" => Some(Self::VmstatNrBounce),
11628            "VMSTAT_NR_VMSCAN_WRITE" => Some(Self::VmstatNrVmscanWrite),
11629            "VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM" => {
11630                Some(Self::VmstatNrVmscanImmediateReclaim)
11631            }
11632            "VMSTAT_NR_WRITEBACK_TEMP" => Some(Self::VmstatNrWritebackTemp),
11633            "VMSTAT_NR_ISOLATED_ANON" => Some(Self::VmstatNrIsolatedAnon),
11634            "VMSTAT_NR_ISOLATED_FILE" => Some(Self::VmstatNrIsolatedFile),
11635            "VMSTAT_NR_SHMEM" => Some(Self::VmstatNrShmem),
11636            "VMSTAT_NR_DIRTIED" => Some(Self::VmstatNrDirtied),
11637            "VMSTAT_NR_WRITTEN" => Some(Self::VmstatNrWritten),
11638            "VMSTAT_NR_PAGES_SCANNED" => Some(Self::VmstatNrPagesScanned),
11639            "VMSTAT_WORKINGSET_REFAULT" => Some(Self::VmstatWorkingsetRefault),
11640            "VMSTAT_WORKINGSET_ACTIVATE" => Some(Self::VmstatWorkingsetActivate),
11641            "VMSTAT_WORKINGSET_NODERECLAIM" => Some(Self::VmstatWorkingsetNodereclaim),
11642            "VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES" => {
11643                Some(Self::VmstatNrAnonTransparentHugepages)
11644            }
11645            "VMSTAT_NR_FREE_CMA" => Some(Self::VmstatNrFreeCma),
11646            "VMSTAT_NR_SWAPCACHE" => Some(Self::VmstatNrSwapcache),
11647            "VMSTAT_NR_DIRTY_THRESHOLD" => Some(Self::VmstatNrDirtyThreshold),
11648            "VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD" => {
11649                Some(Self::VmstatNrDirtyBackgroundThreshold)
11650            }
11651            "VMSTAT_PGPGIN" => Some(Self::VmstatPgpgin),
11652            "VMSTAT_PGPGOUT" => Some(Self::VmstatPgpgout),
11653            "VMSTAT_PGPGOUTCLEAN" => Some(Self::VmstatPgpgoutclean),
11654            "VMSTAT_PSWPIN" => Some(Self::VmstatPswpin),
11655            "VMSTAT_PSWPOUT" => Some(Self::VmstatPswpout),
11656            "VMSTAT_PGALLOC_DMA" => Some(Self::VmstatPgallocDma),
11657            "VMSTAT_PGALLOC_NORMAL" => Some(Self::VmstatPgallocNormal),
11658            "VMSTAT_PGALLOC_MOVABLE" => Some(Self::VmstatPgallocMovable),
11659            "VMSTAT_PGFREE" => Some(Self::VmstatPgfree),
11660            "VMSTAT_PGACTIVATE" => Some(Self::VmstatPgactivate),
11661            "VMSTAT_PGDEACTIVATE" => Some(Self::VmstatPgdeactivate),
11662            "VMSTAT_PGFAULT" => Some(Self::VmstatPgfault),
11663            "VMSTAT_PGMAJFAULT" => Some(Self::VmstatPgmajfault),
11664            "VMSTAT_PGREFILL_DMA" => Some(Self::VmstatPgrefillDma),
11665            "VMSTAT_PGREFILL_NORMAL" => Some(Self::VmstatPgrefillNormal),
11666            "VMSTAT_PGREFILL_MOVABLE" => Some(Self::VmstatPgrefillMovable),
11667            "VMSTAT_PGSTEAL_KSWAPD_DMA" => Some(Self::VmstatPgstealKswapdDma),
11668            "VMSTAT_PGSTEAL_KSWAPD_NORMAL" => Some(Self::VmstatPgstealKswapdNormal),
11669            "VMSTAT_PGSTEAL_KSWAPD_MOVABLE" => Some(Self::VmstatPgstealKswapdMovable),
11670            "VMSTAT_PGSTEAL_DIRECT_DMA" => Some(Self::VmstatPgstealDirectDma),
11671            "VMSTAT_PGSTEAL_DIRECT_NORMAL" => Some(Self::VmstatPgstealDirectNormal),
11672            "VMSTAT_PGSTEAL_DIRECT_MOVABLE" => Some(Self::VmstatPgstealDirectMovable),
11673            "VMSTAT_PGSCAN_KSWAPD_DMA" => Some(Self::VmstatPgscanKswapdDma),
11674            "VMSTAT_PGSCAN_KSWAPD_NORMAL" => Some(Self::VmstatPgscanKswapdNormal),
11675            "VMSTAT_PGSCAN_KSWAPD_MOVABLE" => Some(Self::VmstatPgscanKswapdMovable),
11676            "VMSTAT_PGSCAN_DIRECT_DMA" => Some(Self::VmstatPgscanDirectDma),
11677            "VMSTAT_PGSCAN_DIRECT_NORMAL" => Some(Self::VmstatPgscanDirectNormal),
11678            "VMSTAT_PGSCAN_DIRECT_MOVABLE" => Some(Self::VmstatPgscanDirectMovable),
11679            "VMSTAT_PGSCAN_DIRECT_THROTTLE" => Some(Self::VmstatPgscanDirectThrottle),
11680            "VMSTAT_PGINODESTEAL" => Some(Self::VmstatPginodesteal),
11681            "VMSTAT_SLABS_SCANNED" => Some(Self::VmstatSlabsScanned),
11682            "VMSTAT_KSWAPD_INODESTEAL" => Some(Self::VmstatKswapdInodesteal),
11683            "VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY" => {
11684                Some(Self::VmstatKswapdLowWmarkHitQuickly)
11685            }
11686            "VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY" => {
11687                Some(Self::VmstatKswapdHighWmarkHitQuickly)
11688            }
11689            "VMSTAT_PAGEOUTRUN" => Some(Self::VmstatPageoutrun),
11690            "VMSTAT_ALLOCSTALL" => Some(Self::VmstatAllocstall),
11691            "VMSTAT_PGROTATED" => Some(Self::VmstatPgrotated),
11692            "VMSTAT_DROP_PAGECACHE" => Some(Self::VmstatDropPagecache),
11693            "VMSTAT_DROP_SLAB" => Some(Self::VmstatDropSlab),
11694            "VMSTAT_PGMIGRATE_SUCCESS" => Some(Self::VmstatPgmigrateSuccess),
11695            "VMSTAT_PGMIGRATE_FAIL" => Some(Self::VmstatPgmigrateFail),
11696            "VMSTAT_COMPACT_MIGRATE_SCANNED" => Some(Self::VmstatCompactMigrateScanned),
11697            "VMSTAT_COMPACT_FREE_SCANNED" => Some(Self::VmstatCompactFreeScanned),
11698            "VMSTAT_COMPACT_ISOLATED" => Some(Self::VmstatCompactIsolated),
11699            "VMSTAT_COMPACT_STALL" => Some(Self::VmstatCompactStall),
11700            "VMSTAT_COMPACT_FAIL" => Some(Self::VmstatCompactFail),
11701            "VMSTAT_COMPACT_SUCCESS" => Some(Self::VmstatCompactSuccess),
11702            "VMSTAT_COMPACT_DAEMON_WAKE" => Some(Self::VmstatCompactDaemonWake),
11703            "VMSTAT_UNEVICTABLE_PGS_CULLED" => Some(Self::VmstatUnevictablePgsCulled),
11704            "VMSTAT_UNEVICTABLE_PGS_SCANNED" => Some(Self::VmstatUnevictablePgsScanned),
11705            "VMSTAT_UNEVICTABLE_PGS_RESCUED" => Some(Self::VmstatUnevictablePgsRescued),
11706            "VMSTAT_UNEVICTABLE_PGS_MLOCKED" => Some(Self::VmstatUnevictablePgsMlocked),
11707            "VMSTAT_UNEVICTABLE_PGS_MUNLOCKED" => {
11708                Some(Self::VmstatUnevictablePgsMunlocked)
11709            }
11710            "VMSTAT_UNEVICTABLE_PGS_CLEARED" => Some(Self::VmstatUnevictablePgsCleared),
11711            "VMSTAT_UNEVICTABLE_PGS_STRANDED" => Some(Self::VmstatUnevictablePgsStranded),
11712            "VMSTAT_NR_ZSPAGES" => Some(Self::VmstatNrZspages),
11713            "VMSTAT_NR_ION_HEAP" => Some(Self::VmstatNrIonHeap),
11714            "VMSTAT_NR_GPU_HEAP" => Some(Self::VmstatNrGpuHeap),
11715            "VMSTAT_ALLOCSTALL_DMA" => Some(Self::VmstatAllocstallDma),
11716            "VMSTAT_ALLOCSTALL_MOVABLE" => Some(Self::VmstatAllocstallMovable),
11717            "VMSTAT_ALLOCSTALL_NORMAL" => Some(Self::VmstatAllocstallNormal),
11718            "VMSTAT_COMPACT_DAEMON_FREE_SCANNED" => {
11719                Some(Self::VmstatCompactDaemonFreeScanned)
11720            }
11721            "VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED" => {
11722                Some(Self::VmstatCompactDaemonMigrateScanned)
11723            }
11724            "VMSTAT_NR_FASTRPC" => Some(Self::VmstatNrFastrpc),
11725            "VMSTAT_NR_INDIRECTLY_RECLAIMABLE" => {
11726                Some(Self::VmstatNrIndirectlyReclaimable)
11727            }
11728            "VMSTAT_NR_ION_HEAP_POOL" => Some(Self::VmstatNrIonHeapPool),
11729            "VMSTAT_NR_KERNEL_MISC_RECLAIMABLE" => {
11730                Some(Self::VmstatNrKernelMiscReclaimable)
11731            }
11732            "VMSTAT_NR_SHADOW_CALL_STACK_BYTES" => {
11733                Some(Self::VmstatNrShadowCallStackBytes)
11734            }
11735            "VMSTAT_NR_SHMEM_HUGEPAGES" => Some(Self::VmstatNrShmemHugepages),
11736            "VMSTAT_NR_SHMEM_PMDMAPPED" => Some(Self::VmstatNrShmemPmdmapped),
11737            "VMSTAT_NR_UNRECLAIMABLE_PAGES" => Some(Self::VmstatNrUnreclaimablePages),
11738            "VMSTAT_NR_ZONE_ACTIVE_ANON" => Some(Self::VmstatNrZoneActiveAnon),
11739            "VMSTAT_NR_ZONE_ACTIVE_FILE" => Some(Self::VmstatNrZoneActiveFile),
11740            "VMSTAT_NR_ZONE_INACTIVE_ANON" => Some(Self::VmstatNrZoneInactiveAnon),
11741            "VMSTAT_NR_ZONE_INACTIVE_FILE" => Some(Self::VmstatNrZoneInactiveFile),
11742            "VMSTAT_NR_ZONE_UNEVICTABLE" => Some(Self::VmstatNrZoneUnevictable),
11743            "VMSTAT_NR_ZONE_WRITE_PENDING" => Some(Self::VmstatNrZoneWritePending),
11744            "VMSTAT_OOM_KILL" => Some(Self::VmstatOomKill),
11745            "VMSTAT_PGLAZYFREE" => Some(Self::VmstatPglazyfree),
11746            "VMSTAT_PGLAZYFREED" => Some(Self::VmstatPglazyfreed),
11747            "VMSTAT_PGREFILL" => Some(Self::VmstatPgrefill),
11748            "VMSTAT_PGSCAN_DIRECT" => Some(Self::VmstatPgscanDirect),
11749            "VMSTAT_PGSCAN_KSWAPD" => Some(Self::VmstatPgscanKswapd),
11750            "VMSTAT_PGSKIP_DMA" => Some(Self::VmstatPgskipDma),
11751            "VMSTAT_PGSKIP_MOVABLE" => Some(Self::VmstatPgskipMovable),
11752            "VMSTAT_PGSKIP_NORMAL" => Some(Self::VmstatPgskipNormal),
11753            "VMSTAT_PGSTEAL_DIRECT" => Some(Self::VmstatPgstealDirect),
11754            "VMSTAT_PGSTEAL_KSWAPD" => Some(Self::VmstatPgstealKswapd),
11755            "VMSTAT_SWAP_RA" => Some(Self::VmstatSwapRa),
11756            "VMSTAT_SWAP_RA_HIT" => Some(Self::VmstatSwapRaHit),
11757            "VMSTAT_WORKINGSET_RESTORE" => Some(Self::VmstatWorkingsetRestore),
11758            "VMSTAT_ALLOCSTALL_DEVICE" => Some(Self::VmstatAllocstallDevice),
11759            "VMSTAT_ALLOCSTALL_DMA32" => Some(Self::VmstatAllocstallDma32),
11760            "VMSTAT_BALLOON_DEFLATE" => Some(Self::VmstatBalloonDeflate),
11761            "VMSTAT_BALLOON_INFLATE" => Some(Self::VmstatBalloonInflate),
11762            "VMSTAT_BALLOON_MIGRATE" => Some(Self::VmstatBalloonMigrate),
11763            "VMSTAT_CMA_ALLOC_FAIL" => Some(Self::VmstatCmaAllocFail),
11764            "VMSTAT_CMA_ALLOC_SUCCESS" => Some(Self::VmstatCmaAllocSuccess),
11765            "VMSTAT_NR_FILE_HUGEPAGES" => Some(Self::VmstatNrFileHugepages),
11766            "VMSTAT_NR_FILE_PMDMAPPED" => Some(Self::VmstatNrFilePmdmapped),
11767            "VMSTAT_NR_FOLL_PIN_ACQUIRED" => Some(Self::VmstatNrFollPinAcquired),
11768            "VMSTAT_NR_FOLL_PIN_RELEASED" => Some(Self::VmstatNrFollPinReleased),
11769            "VMSTAT_NR_SEC_PAGE_TABLE_PAGES" => Some(Self::VmstatNrSecPageTablePages),
11770            "VMSTAT_NR_SHADOW_CALL_STACK" => Some(Self::VmstatNrShadowCallStack),
11771            "VMSTAT_NR_SWAPCACHED" => Some(Self::VmstatNrSwapcached),
11772            "VMSTAT_NR_THROTTLED_WRITTEN" => Some(Self::VmstatNrThrottledWritten),
11773            "VMSTAT_PGALLOC_DEVICE" => Some(Self::VmstatPgallocDevice),
11774            "VMSTAT_PGALLOC_DMA32" => Some(Self::VmstatPgallocDma32),
11775            "VMSTAT_PGDEMOTE_DIRECT" => Some(Self::VmstatPgdemoteDirect),
11776            "VMSTAT_PGDEMOTE_KSWAPD" => Some(Self::VmstatPgdemoteKswapd),
11777            "VMSTAT_PGREUSE" => Some(Self::VmstatPgreuse),
11778            "VMSTAT_PGSCAN_ANON" => Some(Self::VmstatPgscanAnon),
11779            "VMSTAT_PGSCAN_FILE" => Some(Self::VmstatPgscanFile),
11780            "VMSTAT_PGSKIP_DEVICE" => Some(Self::VmstatPgskipDevice),
11781            "VMSTAT_PGSKIP_DMA32" => Some(Self::VmstatPgskipDma32),
11782            "VMSTAT_PGSTEAL_ANON" => Some(Self::VmstatPgstealAnon),
11783            "VMSTAT_PGSTEAL_FILE" => Some(Self::VmstatPgstealFile),
11784            "VMSTAT_THP_COLLAPSE_ALLOC" => Some(Self::VmstatThpCollapseAlloc),
11785            "VMSTAT_THP_COLLAPSE_ALLOC_FAILED" => {
11786                Some(Self::VmstatThpCollapseAllocFailed)
11787            }
11788            "VMSTAT_THP_DEFERRED_SPLIT_PAGE" => Some(Self::VmstatThpDeferredSplitPage),
11789            "VMSTAT_THP_FAULT_ALLOC" => Some(Self::VmstatThpFaultAlloc),
11790            "VMSTAT_THP_FAULT_FALLBACK" => Some(Self::VmstatThpFaultFallback),
11791            "VMSTAT_THP_FAULT_FALLBACK_CHARGE" => {
11792                Some(Self::VmstatThpFaultFallbackCharge)
11793            }
11794            "VMSTAT_THP_FILE_ALLOC" => Some(Self::VmstatThpFileAlloc),
11795            "VMSTAT_THP_FILE_FALLBACK" => Some(Self::VmstatThpFileFallback),
11796            "VMSTAT_THP_FILE_FALLBACK_CHARGE" => Some(Self::VmstatThpFileFallbackCharge),
11797            "VMSTAT_THP_FILE_MAPPED" => Some(Self::VmstatThpFileMapped),
11798            "VMSTAT_THP_MIGRATION_FAIL" => Some(Self::VmstatThpMigrationFail),
11799            "VMSTAT_THP_MIGRATION_SPLIT" => Some(Self::VmstatThpMigrationSplit),
11800            "VMSTAT_THP_MIGRATION_SUCCESS" => Some(Self::VmstatThpMigrationSuccess),
11801            "VMSTAT_THP_SCAN_EXCEED_NONE_PTE" => Some(Self::VmstatThpScanExceedNonePte),
11802            "VMSTAT_THP_SCAN_EXCEED_SHARE_PTE" => Some(Self::VmstatThpScanExceedSharePte),
11803            "VMSTAT_THP_SCAN_EXCEED_SWAP_PTE" => Some(Self::VmstatThpScanExceedSwapPte),
11804            "VMSTAT_THP_SPLIT_PAGE" => Some(Self::VmstatThpSplitPage),
11805            "VMSTAT_THP_SPLIT_PAGE_FAILED" => Some(Self::VmstatThpSplitPageFailed),
11806            "VMSTAT_THP_SPLIT_PMD" => Some(Self::VmstatThpSplitPmd),
11807            "VMSTAT_THP_SWPOUT" => Some(Self::VmstatThpSwpout),
11808            "VMSTAT_THP_SWPOUT_FALLBACK" => Some(Self::VmstatThpSwpoutFallback),
11809            "VMSTAT_THP_ZERO_PAGE_ALLOC" => Some(Self::VmstatThpZeroPageAlloc),
11810            "VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED" => {
11811                Some(Self::VmstatThpZeroPageAllocFailed)
11812            }
11813            "VMSTAT_VMA_LOCK_ABORT" => Some(Self::VmstatVmaLockAbort),
11814            "VMSTAT_VMA_LOCK_MISS" => Some(Self::VmstatVmaLockMiss),
11815            "VMSTAT_VMA_LOCK_RETRY" => Some(Self::VmstatVmaLockRetry),
11816            "VMSTAT_VMA_LOCK_SUCCESS" => Some(Self::VmstatVmaLockSuccess),
11817            "VMSTAT_WORKINGSET_ACTIVATE_ANON" => Some(Self::VmstatWorkingsetActivateAnon),
11818            "VMSTAT_WORKINGSET_ACTIVATE_FILE" => Some(Self::VmstatWorkingsetActivateFile),
11819            "VMSTAT_WORKINGSET_NODES" => Some(Self::VmstatWorkingsetNodes),
11820            "VMSTAT_WORKINGSET_REFAULT_ANON" => Some(Self::VmstatWorkingsetRefaultAnon),
11821            "VMSTAT_WORKINGSET_REFAULT_FILE" => Some(Self::VmstatWorkingsetRefaultFile),
11822            "VMSTAT_WORKINGSET_RESTORE_ANON" => Some(Self::VmstatWorkingsetRestoreAnon),
11823            "VMSTAT_WORKINGSET_RESTORE_FILE" => Some(Self::VmstatWorkingsetRestoreFile),
11824            _ => None,
11825        }
11826    }
11827}
11828/// This file defines the configuration for the Linux /proc poller data source,
11829/// which injects counters in the trace.
11830/// Counters that are needed in the trace must be explicitly listed in the
11831/// *_counters fields. This is to avoid spamming the trace with all counters
11832/// at all times.
11833/// The sampling rate is configurable. All polling rates (*_period_ms) need
11834/// to be integer multiples of each other.
11835/// OK:     \[10ms, 10ms, 10ms\],  \[10ms, 20ms, 10ms\],  \[10ms, 20ms, 60ms\]
11836/// Not OK: \[10ms, 10ms, 11ms\],  \[10ms, 15ms, 20ms\]
11837#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11838pub struct SysStatsConfig {
11839    /// Polls /proc/meminfo every X ms, if non-zero.
11840    /// This is required to be > 10ms to avoid excessive CPU usage.
11841    /// Cost: 0.3 ms \[read\] + 0.07 ms \[parse + trace injection\]
11842    #[prost(uint32, optional, tag = "1")]
11843    pub meminfo_period_ms: ::core::option::Option<u32>,
11844    /// If empty all known counters are reported. Otherwise, only the counters
11845    /// specified below are reported.
11846    #[prost(enumeration = "MeminfoCounters", repeated, packed = "false", tag = "2")]
11847    pub meminfo_counters: ::prost::alloc::vec::Vec<i32>,
11848    /// Polls /proc/vmstat every X ms, if non-zero.
11849    /// This is required to be > 10ms to avoid excessive CPU usage.
11850    /// Cost: 0.2 ms \[read\] + 0.3 ms \[parse + trace injection\]
11851    #[prost(uint32, optional, tag = "3")]
11852    pub vmstat_period_ms: ::core::option::Option<u32>,
11853    #[prost(enumeration = "VmstatCounters", repeated, packed = "false", tag = "4")]
11854    pub vmstat_counters: ::prost::alloc::vec::Vec<i32>,
11855    /// Pols /proc/stat every X ms, if non-zero.
11856    /// This is required to be > 10ms to avoid excessive CPU usage.
11857    /// Cost: 4.1 ms \[read\] + 1.9 ms \[parse + trace injection\]
11858    #[prost(uint32, optional, tag = "5")]
11859    pub stat_period_ms: ::core::option::Option<u32>,
11860    #[prost(
11861        enumeration = "sys_stats_config::StatCounters",
11862        repeated,
11863        packed = "false",
11864        tag = "6"
11865    )]
11866    pub stat_counters: ::prost::alloc::vec::Vec<i32>,
11867    /// Polls /sys/devfreq/*/curfreq every X ms, if non-zero.
11868    /// This is required to be > 10ms to avoid excessive CPU usage.
11869    /// This option can be used to record unchanging values.
11870    /// Updates from frequency changes can come from ftrace/set_clock_rate.
11871    #[prost(uint32, optional, tag = "7")]
11872    pub devfreq_period_ms: ::core::option::Option<u32>,
11873    /// Polls /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq every X ms.
11874    /// This is required to be > 10ms to avoid excessive CPU usage.
11875    #[prost(uint32, optional, tag = "8")]
11876    pub cpufreq_period_ms: ::core::option::Option<u32>,
11877    /// Polls /proc/buddyinfo every X ms, if non-zero.
11878    /// This is required to be > 10ms to avoid excessive CPU usage.
11879    #[prost(uint32, optional, tag = "9")]
11880    pub buddyinfo_period_ms: ::core::option::Option<u32>,
11881    /// Polls /proc/diskstats every X ms, if non-zero.
11882    /// This is required to be > 10ms to avoid excessive CPU usage.
11883    #[prost(uint32, optional, tag = "10")]
11884    pub diskstat_period_ms: ::core::option::Option<u32>,
11885    /// Polls /proc/pressure/* every X ms, if non-zero.
11886    /// This is required to be > 10ms to avoid excessive CPU usage.
11887    #[prost(uint32, optional, tag = "11")]
11888    pub psi_period_ms: ::core::option::Option<u32>,
11889    /// Polls /sys/class/thermal/* every X ms, if non-zero.
11890    /// This is required to be > 10ms to avoid excessive CPU usage.
11891    #[prost(uint32, optional, tag = "12")]
11892    pub thermal_period_ms: ::core::option::Option<u32>,
11893    /// Polls /sys/devices/system/cpu/cpu*/cpuidle/state* every X ms, if non-zero.
11894    /// This is required to be > 10ms to avoid excessive CPU usage.
11895    #[prost(uint32, optional, tag = "13")]
11896    pub cpuidle_period_ms: ::core::option::Option<u32>,
11897    /// Polls device-specific GPU frequency info every X ms, if non-zero.
11898    /// This is required to be > 10ms to avoid excessive CPU usage.
11899    #[prost(uint32, optional, tag = "14")]
11900    pub gpufreq_period_ms: ::core::option::Option<u32>,
11901    /// Polls /proc/slabinfo every X ms, if non-zero.
11902    /// This is required to be > 10ms to avoid excessive CPU usage.
11903    #[prost(uint32, optional, tag = "15")]
11904    pub slab_period_ms: ::core::option::Option<u32>,
11905}
11906/// Nested message and enum types in `SysStatsConfig`.
11907pub mod sys_stats_config {
11908    #[derive(
11909        Clone,
11910        Copy,
11911        Debug,
11912        PartialEq,
11913        Eq,
11914        Hash,
11915        PartialOrd,
11916        Ord,
11917        ::prost::Enumeration
11918    )]
11919    #[repr(i32)]
11920    pub enum StatCounters {
11921        StatUnspecified = 0,
11922        StatCpuTimes = 1,
11923        StatIrqCounts = 2,
11924        StatSoftirqCounts = 3,
11925        StatForkCount = 4,
11926    }
11927    impl StatCounters {
11928        /// String value of the enum field names used in the ProtoBuf definition.
11929        ///
11930        /// The values are not transformed in any way and thus are considered stable
11931        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11932        pub fn as_str_name(&self) -> &'static str {
11933            match self {
11934                Self::StatUnspecified => "STAT_UNSPECIFIED",
11935                Self::StatCpuTimes => "STAT_CPU_TIMES",
11936                Self::StatIrqCounts => "STAT_IRQ_COUNTS",
11937                Self::StatSoftirqCounts => "STAT_SOFTIRQ_COUNTS",
11938                Self::StatForkCount => "STAT_FORK_COUNT",
11939            }
11940        }
11941        /// Creates an enum from field names used in the ProtoBuf definition.
11942        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11943            match value {
11944                "STAT_UNSPECIFIED" => Some(Self::StatUnspecified),
11945                "STAT_CPU_TIMES" => Some(Self::StatCpuTimes),
11946                "STAT_IRQ_COUNTS" => Some(Self::StatIrqCounts),
11947                "STAT_SOFTIRQ_COUNTS" => Some(Self::StatSoftirqCounts),
11948                "STAT_FORK_COUNT" => Some(Self::StatForkCount),
11949                _ => None,
11950            }
11951        }
11952    }
11953}
11954/// The configuration for a fake producer used in tests.
11955#[derive(Clone, PartialEq, ::prost::Message)]
11956pub struct TestConfig {
11957    /// The number of messages the fake producer should send.
11958    #[prost(uint32, optional, tag = "1")]
11959    pub message_count: ::core::option::Option<u32>,
11960    /// The maximum number of messages which should be sent each second.
11961    /// The actual obserced speed may be lower if the producer is unable to
11962    /// work fast enough.
11963    /// If this is zero or unset, the producer will send as fast as possible.
11964    #[prost(uint32, optional, tag = "2")]
11965    pub max_messages_per_second: ::core::option::Option<u32>,
11966    /// The seed value for a simple multiplicative congruential pseudo-random
11967    /// number sequence.
11968    #[prost(uint32, optional, tag = "3")]
11969    pub seed: ::core::option::Option<u32>,
11970    /// The size of each message in bytes. Should be greater than or equal 5 to
11971    /// account for the number of bytes needed to encode the random number and a
11972    /// null byte for the string.
11973    #[prost(uint32, optional, tag = "4")]
11974    pub message_size: ::core::option::Option<u32>,
11975    /// Whether the producer should send a event batch when the data source is
11976    /// is initially registered.
11977    #[prost(bool, optional, tag = "5")]
11978    pub send_batch_on_register: ::core::option::Option<bool>,
11979    #[prost(message, optional, tag = "6")]
11980    pub dummy_fields: ::core::option::Option<test_config::DummyFields>,
11981}
11982/// Nested message and enum types in `TestConfig`.
11983pub mod test_config {
11984    #[derive(Clone, PartialEq, ::prost::Message)]
11985    pub struct DummyFields {
11986        #[prost(uint32, optional, tag = "1")]
11987        pub field_uint32: ::core::option::Option<u32>,
11988        #[prost(int32, optional, tag = "2")]
11989        pub field_int32: ::core::option::Option<i32>,
11990        #[prost(uint64, optional, tag = "3")]
11991        pub field_uint64: ::core::option::Option<u64>,
11992        #[prost(int64, optional, tag = "4")]
11993        pub field_int64: ::core::option::Option<i64>,
11994        #[prost(fixed64, optional, tag = "5")]
11995        pub field_fixed64: ::core::option::Option<u64>,
11996        #[prost(sfixed64, optional, tag = "6")]
11997        pub field_sfixed64: ::core::option::Option<i64>,
11998        #[prost(fixed32, optional, tag = "7")]
11999        pub field_fixed32: ::core::option::Option<u32>,
12000        #[prost(sfixed32, optional, tag = "8")]
12001        pub field_sfixed32: ::core::option::Option<i32>,
12002        #[prost(double, optional, tag = "9")]
12003        pub field_double: ::core::option::Option<f64>,
12004        #[prost(float, optional, tag = "10")]
12005        pub field_float: ::core::option::Option<f32>,
12006        #[prost(sint64, optional, tag = "11")]
12007        pub field_sint64: ::core::option::Option<i64>,
12008        #[prost(sint32, optional, tag = "12")]
12009        pub field_sint32: ::core::option::Option<i32>,
12010        #[prost(string, optional, tag = "13")]
12011        pub field_string: ::core::option::Option<::prost::alloc::string::String>,
12012        #[prost(bytes = "vec", optional, tag = "14")]
12013        pub field_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
12014    }
12015}
12016/// The following fields define the set of enabled trace categories. Each list
12017/// item is a glob.
12018///
12019/// To determine if category is enabled, it is checked against the filters in
12020/// the following order:
12021///
12022///    1. Exact matches in enabled categories.
12023///    2. Exact matches in enabled tags.
12024///    3. Exact matches in disabled categories.
12025///    4. Exact matches in disabled tags.
12026///    5. Pattern matches in enabled categories.
12027///    6. Pattern matches in enabled tags.
12028///    7. Pattern matches in disabled categories.
12029///    8. Pattern matches in disabled tags.
12030///
12031/// If none of the steps produced a match:
12032///   - In the C++ SDK (`perfetto::Category`), categories are enabled by
12033///   default.
12034///   - In the C SDK (`PerfettoTeCategory`), categories are disabled by default.
12035///
12036/// Examples:
12037///
12038///   - To enable all non-slow/debug categories:
12039///
12040///        enabled_categories: "*"
12041///
12042///   - To enable specific categories:
12043///
12044///        disabled_categories: "*"
12045///        enabled_categories: "my_category"
12046///        enabled_categories: "my_category2"
12047///
12048///   - To enable only categories with a specific tag:
12049///
12050///        disabled_tags: "*"
12051///        enabled_tags: "my_tag"
12052///
12053#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12054pub struct TrackEventConfig {
12055    /// Default: \[\]
12056    #[prost(string, repeated, tag = "1")]
12057    pub disabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
12058    /// Default: \[\]
12059    #[prost(string, repeated, tag = "2")]
12060    pub enabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
12061    /// Default: \["slow", "debug"\]
12062    #[prost(string, repeated, tag = "3")]
12063    pub disabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
12064    /// Default: \[\]
12065    #[prost(string, repeated, tag = "4")]
12066    pub enabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
12067    /// Default: false (i.e. enabled by default)
12068    #[prost(bool, optional, tag = "5")]
12069    pub disable_incremental_timestamps: ::core::option::Option<bool>,
12070    /// Allows to specify a custom unit different than the default (ns).
12071    /// Also affects thread timestamps if enable_thread_time_sampling = true.
12072    /// A multiplier of 1000 means that a timestamp = 3 should be interpreted as
12073    /// 3000 ns = 3 us.
12074    /// Default: 1 (if unset, it should be read as 1).
12075    #[prost(uint64, optional, tag = "6")]
12076    pub timestamp_unit_multiplier: ::core::option::Option<u64>,
12077    /// Default: false (i.e. debug_annotations is NOT filtered out by default)
12078    /// When true, any debug annotations provided as arguments to the
12079    /// TRACE_EVENT macros are not written into the trace. Typed arguments will
12080    /// still be emitted even if set to true.
12081    #[prost(bool, optional, tag = "7")]
12082    pub filter_debug_annotations: ::core::option::Option<bool>,
12083    /// Default: false (i.e. disabled)
12084    /// When true, the SDK samples and emits the current thread time counter value
12085    /// for each event on the current thread's track. This value represents the
12086    /// total CPU time consumed by that thread since its creation.
12087    /// Learn more: "CLOCK_THREAD_CPUTIME_ID" flag at
12088    /// <https://man7.org/linux/man-pages/man3/clock_gettime.3.html>
12089    #[prost(bool, optional, tag = "8")]
12090    pub enable_thread_time_sampling: ::core::option::Option<bool>,
12091    /// When enable_thread_time_sampling is true, and this is specified, thread
12092    /// time is sampled only if the elapsed wall time >
12093    /// `thread_time_subsampling_ns`. Otherwise, thread time is considered nil.
12094    /// Effectively, this means thread time will have a leeway of
12095    /// `thread_time_subsampling_ns` and won't be emitted for shorter events.
12096    #[prost(uint64, optional, tag = "10")]
12097    pub thread_time_subsampling_ns: ::core::option::Option<u64>,
12098    /// Default: false (i.e. dynamic event names are NOT filtered out by default)
12099    /// When true, event_names wrapped in perfetto::DynamicString will be filtered
12100    /// out.
12101    #[prost(bool, optional, tag = "9")]
12102    pub filter_dynamic_event_names: ::core::option::Option<bool>,
12103}
12104/// This data-source does a one-off recording of system information when
12105/// the trace starts.
12106/// Currently this includes:
12107/// - Values of
12108/// /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies This
12109/// datasource has no configuration options at present.
12110#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12111pub struct SystemInfoConfig {
12112    /// If true, records hardware interrupt ID-to-name mappings from
12113    /// /proc/interrupts.
12114    #[prost(bool, optional, tag = "1")]
12115    pub irq_names: ::core::option::Option<bool>,
12116}
12117#[derive(Clone, PartialEq, ::prost::Message)]
12118pub struct ChromiumHistogramSamplesConfig {
12119    /// List of histograms to record. If no histogram is specified, all histograms
12120    /// are recorded.
12121    #[prost(message, repeated, tag = "1")]
12122    pub histograms: ::prost::alloc::vec::Vec<
12123        chromium_histogram_samples_config::HistogramSample,
12124    >,
12125    /// Default: false (i.e. histogram names are NOT filtered out by default)
12126    /// When true, histogram_name will be filtered out.
12127    #[prost(bool, optional, tag = "2")]
12128    pub filter_histogram_names: ::core::option::Option<bool>,
12129}
12130/// Nested message and enum types in `ChromiumHistogramSamplesConfig`.
12131pub mod chromium_histogram_samples_config {
12132    /// Records when a value within the specified bounds \[min_value, max_value\] is
12133    /// emitted into a Chrome histogram.
12134    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12135    pub struct HistogramSample {
12136        #[prost(string, optional, tag = "1")]
12137        pub histogram_name: ::core::option::Option<::prost::alloc::string::String>,
12138        #[prost(int64, optional, tag = "2")]
12139        pub min_value: ::core::option::Option<i64>,
12140        #[prost(int64, optional, tag = "3")]
12141        pub max_value: ::core::option::Option<i64>,
12142    }
12143}
12144#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12145pub struct ChromiumSamplingHeapProfilerConfig {
12146    /// Sampling interval in bytes.
12147    #[prost(uint64, optional, tag = "1")]
12148    pub sampling_interval_bytes: ::core::option::Option<u64>,
12149    /// Sampling interval in milliseconds.
12150    #[prost(uint32, optional, tag = "2")]
12151    pub sampling_interval_ms: ::core::option::Option<u32>,
12152}
12153#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12154pub struct ChromiumStackSamplingProfilerConfig {
12155    /// Sampling interval in milliseconds.
12156    #[prost(uint32, optional, tag = "1")]
12157    pub sampling_interval_ms: ::core::option::Option<u32>,
12158}
12159/// Configuration for the "linux.systemd_journald" data source.
12160/// Next field id: 4
12161#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12162pub struct SystemdJournaldConfig {
12163    /// Minimum syslog priority level to capture (inclusive).
12164    /// 0=EMERG, 1=ALERT, 2=CRIT, 3=ERR, 4=WARNING, 5=NOTICE, 6=INFO, 7=DEBUG.
12165    /// Default (0 / unset): capture all priorities (equivalent to 7).
12166    #[prost(uint32, optional, tag = "1")]
12167    pub min_prio: ::core::option::Option<u32>,
12168    /// If non-empty, only capture journal entries whose SYSLOG_IDENTIFIER
12169    /// matches one of these strings.
12170    #[prost(string, repeated, tag = "2")]
12171    pub filter_identifiers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
12172    /// If non-empty, only capture journal entries from these systemd unit names.
12173    #[prost(string, repeated, tag = "3")]
12174    pub filter_units: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
12175}
12176/// QnxConfig is used with trace_qnx_probes build from
12177/// <https://github.com/qnx-ports/perfetto>
12178#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12179pub struct QnxConfig {
12180    /// The number of buffers that tracelog will init for the QNX trace.
12181    #[prost(uint32, optional, tag = "1")]
12182    pub qnx_kernel_buffers: ::core::option::Option<u32>,
12183    /// The number of kernel buffers that tracelog will init for the QNX trace.
12184    #[prost(uint32, optional, tag = "2")]
12185    pub qnx_kernel_kbuffers: ::core::option::Option<u32>,
12186    /// Flag indicating whether the QNX kernel tracing should produce wide
12187    /// events which contain additional data or fast events which are most
12188    /// concise. In fast mode we lose the priority information
12189    #[prost(bool, optional, tag = "3")]
12190    pub qnx_kernel_wide_events: ::core::option::Option<bool>,
12191    /// The number of pages initialized by default the parser's page cache.
12192    #[prost(uint32, optional, tag = "4")]
12193    pub qnx_cache_pages: ::core::option::Option<u32>,
12194    /// The max pages the page cache should allocate (must be at least as big)
12195    /// as the qnx_cache_pages value. Using -1 will allow the cache to grow
12196    /// unbounded. The cache will prefer to re-use existing pages so growth will
12197    /// only happen when needed (when parser is not keeping up).
12198    #[prost(int32, optional, tag = "5")]
12199    pub qnx_cache_max_pages: ::core::option::Option<i32>,
12200    /// The initial size of the the buffer used to hold the trace header values
12201    /// this dynamic buffer will grow as needed but reallocs can be avoided by
12202    /// selecting an initial size large enough to hold all the initial header
12203    /// data.
12204    #[prost(uint32, optional, tag = "6")]
12205    pub qnx_trace_buffer_init_bytes: ::core::option::Option<u32>,
12206}
12207/// The configuration that is passed to each data source when starting tracing.
12208///
12209/// Keep the lower IDs (up to 99) for fields that are *not* specific to
12210/// data-sources and needs to be processed by the traced daemon.
12211///
12212/// All data source config fields must be marked as \[lazy=true\]. This prevents
12213/// the proto-to-cpp generator from recursing into those when generating the
12214/// cpp classes and polluting tracing/core with data-source-specific classes.
12215/// Instead they are treated as opaque strings containing raw proto bytes.
12216///
12217/// Next id: 149
12218#[derive(Clone, PartialEq, ::prost::Message)]
12219pub struct DataSourceConfig {
12220    /// Data source unique name, e.g., "linux.ftrace". This must match
12221    /// the name passed by the data source when it registers (see
12222    /// RegisterDataSource()).
12223    #[prost(string, optional, tag = "1")]
12224    pub name: ::core::option::Option<::prost::alloc::string::String>,
12225    /// The index of the logging buffer where TracePacket(s) will be stored.
12226    /// This field is quite subtle as it has a double semantic:
12227    /// 1) When the config is passed, this field is a 0-based index relative to the
12228    ///     buffer array in the TraceConfig and defines the mapping between data
12229    ///     sources and config. From v54 this is optional because the user can
12230    ///     instead use target_buffer_name.
12231    /// 2) When the TracingService issues a SetupDataSource/StartDataSource to the
12232    ///     producer, it overwrites this field with the global buffer index (which
12233    ///     depends on other tracing sessions active). This tells the producer which
12234    ///     buffer id should be passed to CreateTraceWriter. In this case, the trace
12235    ///     service always sets the resolved global id, even when using
12236    ///     `target_buffer_name`.
12237    /// In hindsight we should have used two different fields given even in v0 they
12238    /// had a different semantic. But now it's too late as this would be a major
12239    /// protocol breaking change.
12240    #[prost(uint32, optional, tag = "2")]
12241    pub target_buffer: ::core::option::Option<u32>,
12242    /// Alternative to |target_buffer|. References a buffer by name (as specified
12243    /// in TraceConfig.BufferConfig.name) rather than by index. This is more
12244    /// readable and less error-prone than using buffer indices.
12245    /// If both |target_buffer| and |target_buffer_name| are specified, they must
12246    /// refer to the same buffer, otherwise the service will reject the config.
12247    /// Using both fields allows configs to work with both old and new versions
12248    /// of the tracing service. Introduced in v54.
12249    #[prost(string, optional, tag = "11")]
12250    pub target_buffer_name: ::core::option::Option<::prost::alloc::string::String>,
12251    /// Set by the service to indicate the duration of the trace.
12252    /// DO NOT SET in consumer as this will be overridden by the service.
12253    #[prost(uint32, optional, tag = "3")]
12254    pub trace_duration_ms: ::core::option::Option<u32>,
12255    /// If true, |trace_duration_ms| should count also time in suspend. This
12256    /// is propagated from TraceConfig.prefer_suspend_clock_for_duration.
12257    #[prost(bool, optional, tag = "122")]
12258    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
12259    /// Set by the service to indicate how long it waits after StopDataSource.
12260    /// DO NOT SET in consumer as this will be overridden by the service.
12261    #[prost(uint32, optional, tag = "7")]
12262    pub stop_timeout_ms: ::core::option::Option<u32>,
12263    /// Set by the service to indicate whether this tracing session has extra
12264    /// guardrails.
12265    /// DO NOT SET in consumer as this will be overridden by the service.
12266    #[prost(bool, optional, tag = "6")]
12267    pub enable_extra_guardrails: ::core::option::Option<bool>,
12268    /// Set by the service to indicate which user initiated this trace.
12269    /// DO NOT SET in consumer as this will be overridden by the service.
12270    #[prost(enumeration = "data_source_config::SessionInitiator", optional, tag = "8")]
12271    pub session_initiator: ::core::option::Option<i32>,
12272    /// Set by the service to indicate which tracing session the data source
12273    /// belongs to. The intended use case for this is checking if two data sources,
12274    /// one of which produces metadata for the other one, belong to the same trace
12275    /// session and hence should be linked together.
12276    /// This field was introduced in Aug 2018 after Android P.
12277    /// DO NOT SET in consumer as this will be overridden by the service.
12278    #[prost(uint64, optional, tag = "4")]
12279    pub tracing_session_id: ::core::option::Option<u64>,
12280    /// How to behave when the producer runs out of space in the shared memory
12281    /// buffer. This is only honored by some data sources (in the SDK, the data
12282    /// sources registered with a configurable buffer exhausted policy).
12283    #[prost(
12284        enumeration = "data_source_config::BufferExhaustedPolicy",
12285        optional,
12286        tag = "9"
12287    )]
12288    pub buffer_exhausted_policy: ::core::option::Option<i32>,
12289    #[prost(message, optional, tag = "10")]
12290    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
12291    /// If specified, the data source requires the tracing service to process
12292    /// overwritten packets (patches) using a ProtoVM instance with this config.
12293    /// The ProtoVM program is specified at data source registration time through
12294    /// the descriptor.
12295    ///
12296    /// TODO(primiano): today when we enable a protovm_config, we actually accept
12297    /// that if N producers advertise M different versions of the same program we
12298    /// will create M instances of that program.
12299    /// To overcome this, we could move the program to the TraceConfig. But doing
12300    /// so would bloat the trace config size too big and create problems to statsd.
12301    /// Once the config store (b/482305876) exists we should move protovm programs
12302    /// onto that.
12303    #[prost(message, optional, tag = "12")]
12304    pub protovm_config: ::core::option::Option<ProtoVmConfig>,
12305    /// Set by the service to indicate that this data source can write to its
12306    /// target buffer through the tracing v2 ring buffer. True only if:
12307    /// - v2 is in the connection's common ProtocolAbiVersion mask, and
12308    /// - the target buffer is a TraceBufferV2.
12309    /// Absent means false. True permits v2 but does not select it. The producer
12310    /// can select v1 only if v1 is also in the common mask. If no common version
12311    /// is permitted by the config and target buffer, the instance cannot run.
12312    /// One buffer can hold both formats. Each writer sequence uses one format.
12313    ///
12314    /// Not supported: a ProtoVM data source on the same buffer.
12315    /// DO NOT SET in consumer as this will be overridden by the service.
12316    #[prost(bool, optional, tag = "147")]
12317    pub supports_tracing_v2: ::core::option::Option<bool>,
12318    #[prost(message, optional, tag = "148")]
12319    pub experimental_tracing_v2: ::core::option::Option<
12320        data_source_config::ExperimentalTracingV2Config,
12321    >,
12322    /// Data source name: linux.ftrace
12323    #[prost(message, optional, tag = "100")]
12324    pub ftrace_config: ::core::option::Option<FtraceConfig>,
12325    /// Data source name: linux.inode_file_map
12326    #[prost(message, optional, tag = "102")]
12327    pub inode_file_config: ::core::option::Option<InodeFileConfig>,
12328    /// Data source name: linux.process_stats
12329    #[prost(message, optional, tag = "103")]
12330    pub process_stats_config: ::core::option::Option<ProcessStatsConfig>,
12331    /// Data source name: linux.sys_stats
12332    #[prost(message, optional, tag = "104")]
12333    pub sys_stats_config: ::core::option::Option<SysStatsConfig>,
12334    /// Data source name: android.heapprofd
12335    /// Introduced in Android 10.
12336    #[prost(message, optional, tag = "105")]
12337    pub heapprofd_config: ::core::option::Option<HeapprofdConfig>,
12338    /// Data source name: android.java_hprof
12339    /// Introduced in Android 11.
12340    #[prost(message, optional, tag = "110")]
12341    pub java_hprof_config: ::core::option::Option<JavaHprofConfig>,
12342    /// Data source name: android.power
12343    #[prost(message, optional, tag = "106")]
12344    pub android_power_config: ::core::option::Option<AndroidPowerConfig>,
12345    /// Data source name: android.log
12346    #[prost(message, optional, tag = "107")]
12347    pub android_log_config: ::core::option::Option<AndroidLogConfig>,
12348    /// Data source name: gpu.counters
12349    #[prost(message, optional, tag = "108")]
12350    pub gpu_counter_config: ::core::option::Option<GpuCounterConfig>,
12351    /// Data source name: android.game_interventions
12352    #[prost(message, optional, tag = "116")]
12353    pub android_game_intervention_list_config: ::core::option::Option<
12354        AndroidGameInterventionListConfig,
12355    >,
12356    /// Data source name: android.packages_list
12357    #[prost(message, optional, tag = "109")]
12358    pub packages_list_config: ::core::option::Option<PackagesListConfig>,
12359    /// Data source name: linux.perf
12360    #[prost(message, optional, tag = "111")]
12361    pub perf_event_config: ::core::option::Option<PerfEventConfig>,
12362    /// Data source name: vulkan.memory_tracker
12363    #[prost(message, optional, tag = "112")]
12364    pub vulkan_memory_config: ::core::option::Option<VulkanMemoryConfig>,
12365    /// Data source name: track_event
12366    #[prost(message, optional, tag = "113")]
12367    pub track_event_config: ::core::option::Option<TrackEventConfig>,
12368    /// Data source name: android.polled_state
12369    #[prost(message, optional, tag = "114")]
12370    pub android_polled_state_config: ::core::option::Option<AndroidPolledStateConfig>,
12371    /// Data source name: android.system_property
12372    #[prost(message, optional, tag = "118")]
12373    pub android_system_property_config: ::core::option::Option<
12374        AndroidSystemPropertyConfig,
12375    >,
12376    /// Data source name: android.statsd
12377    #[prost(message, optional, tag = "117")]
12378    pub statsd_tracing_config: ::core::option::Option<StatsdTracingConfig>,
12379    /// Data source name: linux.system_info
12380    #[prost(message, optional, tag = "119")]
12381    pub system_info_config: ::core::option::Option<SystemInfoConfig>,
12382    /// Data source name: linux.frozen_ftrace
12383    #[prost(message, optional, tag = "136")]
12384    pub frozen_ftrace_config: ::core::option::Option<FrozenFtraceConfig>,
12385    /// Chrome is special as it doesn't use the perfetto IPC layer. We want to
12386    /// avoid proto serialization and de-serialization there because that would
12387    /// just add extra hops on top of the Mojo ser/des. Instead we auto-generate a
12388    /// C++ class for it so it can pass around plain C++ objets.
12389    #[prost(message, optional, tag = "101")]
12390    pub chrome_config: ::core::option::Option<ChromeConfig>,
12391    /// Data source name: code.v8.dev
12392    #[prost(message, optional, tag = "127")]
12393    pub v8_config: ::core::option::Option<V8Config>,
12394    /// If an interceptor is specified here, packets for this data source will be
12395    /// rerouted to the interceptor instead of the main trace buffer. This can be
12396    /// used, for example, to write trace data into ETW or for logging trace points
12397    /// to the console.
12398    ///
12399    /// Note that interceptors are only supported by data sources registered
12400    /// through the Perfetto SDK API. Data sources that don't use that API (e.g.,
12401    /// traced_probes) may not support interception.
12402    #[prost(message, optional, tag = "115")]
12403    pub interceptor_config: ::core::option::Option<InterceptorConfig>,
12404    /// Data source name: android.network_packets.
12405    /// Introduced in Android 14 (U).
12406    #[prost(message, optional, tag = "120")]
12407    pub network_packet_trace_config: ::core::option::Option<NetworkPacketTraceConfig>,
12408    /// Data source name: android.surfaceflinger.layers
12409    #[prost(message, optional, tag = "121")]
12410    pub surfaceflinger_layers_config: ::core::option::Option<SurfaceFlingerLayersConfig>,
12411    /// Data source name: android.surfaceflinger.transactions
12412    #[prost(message, optional, tag = "123")]
12413    pub surfaceflinger_transactions_config: ::core::option::Option<
12414        SurfaceFlingerTransactionsConfig,
12415    >,
12416    /// Data source name: android.sdk_sysprop_guard
12417    /// Introduced in Android 14 (U) QPR1.
12418    #[prost(message, optional, tag = "124")]
12419    pub android_sdk_sysprop_guard_config: ::core::option::Option<
12420        AndroidSdkSyspropGuardConfig,
12421    >,
12422    /// Data source name: windows.etw
12423    #[prost(message, optional, tag = "125")]
12424    pub etw_config: ::core::option::Option<EtwConfig>,
12425    /// Data source name: android.protolog
12426    #[prost(message, optional, tag = "126")]
12427    pub protolog_config: ::core::option::Option<ProtoLogConfig>,
12428    /// Data source name: android.input.inputevent
12429    #[prost(message, optional, tag = "128")]
12430    pub android_input_event_config: ::core::option::Option<AndroidInputEventConfig>,
12431    /// Data source name: android.pixel.modem
12432    #[prost(message, optional, tag = "129")]
12433    pub pixel_modem_config: ::core::option::Option<PixelModemConfig>,
12434    /// Data source name: android.windowmanager
12435    #[prost(message, optional, tag = "130")]
12436    pub windowmanager_config: ::core::option::Option<WindowManagerConfig>,
12437    /// Data source name: org.chromium.system_metrics
12438    #[prost(message, optional, tag = "131")]
12439    pub chromium_system_metrics: ::core::option::Option<ChromiumSystemMetricsConfig>,
12440    /// Data source name: android.kernel_wakelocks
12441    #[prost(message, optional, tag = "132")]
12442    pub kernel_wakelocks_config: ::core::option::Option<KernelWakelocksConfig>,
12443    /// Data source name: gpu.renderstages
12444    #[prost(message, optional, tag = "133")]
12445    pub gpu_renderstages_config: ::core::option::Option<GpuRenderStagesConfig>,
12446    /// Data source name: org.chromium.histogram_samples
12447    #[prost(message, optional, tag = "134")]
12448    pub chromium_histogram_samples: ::core::option::Option<
12449        ChromiumHistogramSamplesConfig,
12450    >,
12451    /// Data source name: android.app_wakelocks
12452    #[prost(message, optional, tag = "135")]
12453    pub app_wakelocks_config: ::core::option::Option<AppWakelocksConfig>,
12454    /// Data source name: android.cpu_per_uid
12455    #[prost(message, optional, tag = "137")]
12456    pub cpu_per_uid_config: ::core::option::Option<CpuPerUidConfig>,
12457    /// Data source name: android.user_list
12458    #[prost(message, optional, tag = "138")]
12459    pub user_list_config: ::core::option::Option<AndroidUserListConfig>,
12460    /// Data source name: android.inputmethod
12461    #[prost(message, optional, tag = "139")]
12462    pub inputmethod_config: ::core::option::Option<InputMethodConfig>,
12463    /// Data source name: android.aflags
12464    #[prost(message, optional, tag = "140")]
12465    pub android_aflags_config: ::core::option::Option<AndroidAflagsConfig>,
12466    /// Data source name: linux.systemd_journald
12467    #[prost(message, optional, tag = "141")]
12468    pub journald_config: ::core::option::Option<SystemdJournaldConfig>,
12469    /// Data source name: android.display.video
12470    #[prost(message, optional, tag = "142")]
12471    pub display_video_config: ::core::option::Option<DisplayVideoConfig>,
12472    /// Data source name: org.chromium.sampler_profiler
12473    #[prost(message, optional, tag = "143")]
12474    pub chromium_stack_sampling_profiler: ::core::option::Option<
12475        ChromiumStackSamplingProfilerConfig,
12476    >,
12477    /// Data source name: org.chromium.native_heap_profiler
12478    #[prost(message, optional, tag = "144")]
12479    pub chromium_sampling_heap_profiler: ::core::option::Option<
12480        ChromiumSamplingHeapProfilerConfig,
12481    >,
12482    /// Data source name: android.process_state
12483    #[prost(message, optional, tag = "145")]
12484    pub android_process_state_config: ::core::option::Option<AndroidProcessStateConfig>,
12485    /// Data source name: linux.smaps
12486    #[prost(message, optional, tag = "146")]
12487    pub process_smaps_config: ::core::option::Option<ProcessSmapsConfig>,
12488    /// Data source name: qnx.kernel
12489    #[prost(message, optional, tag = "150")]
12490    pub qnx_config: ::core::option::Option<QnxConfig>,
12491    /// This is a fallback mechanism to send a free-form text config to the
12492    /// producer. In theory this should never be needed. All the code that
12493    /// is part of the platform (i.e. traced service) is supposed to *not* truncate
12494    /// the trace config proto and propagate unknown fields. However, if anything
12495    /// in the pipeline (client or backend) ends up breaking this forward compat
12496    /// plan, this field will become the escape hatch to allow future data sources
12497    /// to get some meaningful configuration.
12498    #[prost(string, optional, tag = "1000")]
12499    pub legacy_config: ::core::option::Option<::prost::alloc::string::String>,
12500    /// This field is only used for testing.
12501    #[prost(message, optional, tag = "1001")]
12502    pub for_testing: ::core::option::Option<TestConfig>,
12503}
12504/// Nested message and enum types in `DataSourceConfig`.
12505pub mod data_source_config {
12506    /// Experimental.
12507    /// Lets the producer write this data source through the tracing v2 ring
12508    /// buffer.
12509    /// - Selecting v2 requires a TRACE_BUFFER_V2 target buffer and support from
12510    ///    the producer and data source.
12511    /// - Instances that do not select v2 use v1 only if the connection permits it.
12512    ///    If neither transport is available, writers discard their data.
12513    /// - If the producer cannot create or attach the ring buffer, selected
12514    ///    instances discard their data and do not fall back to v1.
12515    #[derive(Clone, PartialEq, ::prost::Message)]
12516    pub struct ExperimentalTracingV2Config {
12517        /// Percent of instances that use v2, from 0 (the default) to 100.
12518        /// The service rejects a nonzero use_v2_probability_percent and a
12519        /// ProtoVM data source on the same buffer.
12520        #[prost(uint32, optional, tag = "1")]
12521        pub use_v2_probability_percent: ::core::option::Option<u32>,
12522        /// The producer chooses one option at random, by weight, when it creates
12523        /// the ring buffer.
12524        /// With no option, or with all weights 0, it uses 256 bytes.
12525        ///
12526        /// The first instance that selects v2 chooses the size for the connection,
12527        /// and the options of later instances have no effect.
12528        #[prost(message, repeated, tag = "2")]
12529        pub chunk_size_options: ::prost::alloc::vec::Vec<
12530            experimental_tracing_v2_config::ChunkSizeOption,
12531        >,
12532        /// When the writers ask the service to drain the ring buffer.
12533        /// After each publication, a writer counts the ring buffer positions that
12534        /// wait for the reader, and asks for a drain when the count reaches:
12535        /// - 0 or absent: 25% of the positions.
12536        /// - 1 to 100: this percent of the positions, and at least one.
12537        /// - -1: one position, so it asks after every publication.
12538        /// Flushes and full ring buffers still ask for a drain at once.
12539        /// The service rejects other values.
12540        ///
12541        /// As for chunk_size_options, the first instance that selects v2 sets it
12542        /// for the connection, and the values of later instances have no effect.
12543        #[prost(int32, optional, tag = "3")]
12544        pub drain_occupancy_percent: ::core::option::Option<i32>,
12545    }
12546    /// Nested message and enum types in `ExperimentalTracingV2Config`.
12547    pub mod experimental_tracing_v2_config {
12548        /// One chunk size that the producer can choose for the ring buffer.
12549        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12550        pub struct ChunkSizeOption {
12551            /// Bytes per chunk, from 256 to 65536, and a multiple of 4.
12552            /// The service rejects other values.
12553            #[prost(uint32, optional, tag = "1")]
12554            pub size_bytes: ::core::option::Option<u32>,
12555            /// The chance of this option, relative to the other options.
12556            /// Absent means 1, and 0 means never.
12557            #[prost(uint32, optional, tag = "2")]
12558            pub weight: ::core::option::Option<u32>,
12559        }
12560    }
12561    #[derive(
12562        Clone,
12563        Copy,
12564        Debug,
12565        PartialEq,
12566        Eq,
12567        Hash,
12568        PartialOrd,
12569        Ord,
12570        ::prost::Enumeration
12571    )]
12572    #[repr(i32)]
12573    pub enum SessionInitiator {
12574        Unspecified = 0,
12575        /// This trace was initiated from a trusted system app has DUMP and
12576        /// USAGE_STATS permission. This system app is expected to not expose the
12577        /// trace to the user of the device.
12578        /// This is determined by checking the UID initiating the trace.
12579        TrustedSystem = 1,
12580    }
12581    impl SessionInitiator {
12582        /// String value of the enum field names used in the ProtoBuf definition.
12583        ///
12584        /// The values are not transformed in any way and thus are considered stable
12585        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12586        pub fn as_str_name(&self) -> &'static str {
12587            match self {
12588                Self::Unspecified => "SESSION_INITIATOR_UNSPECIFIED",
12589                Self::TrustedSystem => "SESSION_INITIATOR_TRUSTED_SYSTEM",
12590            }
12591        }
12592        /// Creates an enum from field names used in the ProtoBuf definition.
12593        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
12594            match value {
12595                "SESSION_INITIATOR_UNSPECIFIED" => Some(Self::Unspecified),
12596                "SESSION_INITIATOR_TRUSTED_SYSTEM" => Some(Self::TrustedSystem),
12597                _ => None,
12598            }
12599        }
12600    }
12601    #[derive(
12602        Clone,
12603        Copy,
12604        Debug,
12605        PartialEq,
12606        Eq,
12607        Hash,
12608        PartialOrd,
12609        Ord,
12610        ::prost::Enumeration
12611    )]
12612    #[repr(i32)]
12613    pub enum BufferExhaustedPolicy {
12614        /// The data source will use its default buffer exhausted policy, specified
12615        /// by the code when the data source is registered.
12616        BufferExhaustedUnspecified = 0,
12617        /// The data source will drop packets when there's no space in the shared
12618        /// memory buffer.
12619        BufferExhaustedDrop = 1,
12620        /// The data source will wait when there's no space in the shared memory
12621        /// buffer. If there's still not space, after a few seconds, the whole
12622        /// producer process will be aborted.
12623        BufferExhaustedStallThenAbort = 2,
12624        /// The data source will wait when there's no space in the shared memory
12625        /// buffer.  If there's still not space, after a few seconds, the data source
12626        /// will drop packets.
12627        BufferExhaustedStallThenDrop = 3,
12628    }
12629    impl BufferExhaustedPolicy {
12630        /// String value of the enum field names used in the ProtoBuf definition.
12631        ///
12632        /// The values are not transformed in any way and thus are considered stable
12633        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12634        pub fn as_str_name(&self) -> &'static str {
12635            match self {
12636                Self::BufferExhaustedUnspecified => "BUFFER_EXHAUSTED_UNSPECIFIED",
12637                Self::BufferExhaustedDrop => "BUFFER_EXHAUSTED_DROP",
12638                Self::BufferExhaustedStallThenAbort => {
12639                    "BUFFER_EXHAUSTED_STALL_THEN_ABORT"
12640                }
12641                Self::BufferExhaustedStallThenDrop => "BUFFER_EXHAUSTED_STALL_THEN_DROP",
12642            }
12643        }
12644        /// Creates an enum from field names used in the ProtoBuf definition.
12645        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
12646            match value {
12647                "BUFFER_EXHAUSTED_UNSPECIFIED" => Some(Self::BufferExhaustedUnspecified),
12648                "BUFFER_EXHAUSTED_DROP" => Some(Self::BufferExhaustedDrop),
12649                "BUFFER_EXHAUSTED_STALL_THEN_ABORT" => {
12650                    Some(Self::BufferExhaustedStallThenAbort)
12651                }
12652                "BUFFER_EXHAUSTED_STALL_THEN_DROP" => {
12653                    Some(Self::BufferExhaustedStallThenDrop)
12654                }
12655                _ => None,
12656            }
12657        }
12658    }
12659}
12660/// The overall config that is used when starting a new tracing session through
12661/// ProducerPort::StartTracing().
12662/// It contains the general config for the logging buffer(s) and the configs for
12663/// all the data source being enabled.
12664///
12665/// Next id: 51.
12666#[derive(Clone, PartialEq, ::prost::Message)]
12667pub struct TraceConfig {
12668    #[prost(message, repeated, tag = "1")]
12669    pub buffers: ::prost::alloc::vec::Vec<trace_config::BufferConfig>,
12670    /// Enables compaction after reads for this session's TraceBufferV2.
12671    /// Defaults to false and does not affect V1, DISCARD, or read-only buffers.
12672    #[prost(bool, optional, tag = "50")]
12673    pub experimental_trace_buffer_v2_compaction: ::core::option::Option<bool>,
12674    #[prost(message, repeated, tag = "2")]
12675    pub data_sources: ::prost::alloc::vec::Vec<trace_config::DataSource>,
12676    #[prost(message, optional, tag = "20")]
12677    pub builtin_data_sources: ::core::option::Option<trace_config::BuiltinDataSource>,
12678    /// If specified, the trace will be stopped |duration_ms| after starting.
12679    /// This does *not* count the time the system is suspended, so we will run
12680    /// for duration_ms of system activity, not wall time.
12681    ///
12682    /// However in case of traces with triggers, see
12683    /// TriggerConfig.trigger_timeout_ms instead.
12684    #[prost(uint32, optional, tag = "3")]
12685    pub duration_ms: ::core::option::Option<u32>,
12686    /// If true, tries to use CLOCK_BOOTTIME for duration_ms rather than
12687    /// CLOCK_MONOTONIC (which doesn't count time in suspend). Supported only on
12688    /// Linux/Android, no-op on other platforms. This is used when dealing with
12689    /// long (e.g. 24h) traces, where suspend can inflate them to weeks of
12690    /// wall-time, making them more likely to hit device reboots (and hence loss).
12691    /// This option also changes consistently the semantic of
12692    /// TriggerConfig.stop_delay_ms.
12693    #[prost(bool, optional, tag = "36")]
12694    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
12695    /// This is set when --dropbox is passed to the Perfetto command line client
12696    /// and enables guardrails that limit resource usage for traces requested
12697    /// by statsd.
12698    #[prost(bool, optional, tag = "4")]
12699    pub enable_extra_guardrails: ::core::option::Option<bool>,
12700    /// Reject producers that are not running under the same UID as the tracing
12701    /// service.
12702    #[prost(enumeration = "trace_config::LockdownModeOperation", optional, tag = "5")]
12703    pub lockdown_mode: ::core::option::Option<i32>,
12704    #[prost(message, repeated, tag = "6")]
12705    pub producers: ::prost::alloc::vec::Vec<trace_config::ProducerConfig>,
12706    /// Statsd-specific metadata.
12707    #[prost(message, optional, tag = "7")]
12708    pub statsd_metadata: ::core::option::Option<trace_config::StatsdMetadata>,
12709    /// When true && |output_path| is empty, the EnableTracing() request must
12710    /// provide a file descriptor. The service will then periodically read packets
12711    /// out of the trace buffer and store it into the passed file.
12712    /// If |output_path| is not empty no fd should be passed, the service
12713    /// will create a new file and write into that (see comment below).
12714    #[prost(bool, optional, tag = "8")]
12715    pub write_into_file: ::core::option::Option<bool>,
12716    /// This must point to a non-existing file. If the file exists the service
12717    /// will NOT overwrite and will fail instead as a security precaution.
12718    /// On Android, when this is used with the system traced, the path must be
12719    /// within /data/misc/perfetto-traces/ or the trace will fail.
12720    /// This option has been introduced in Android R. Before R write_into_file
12721    /// can be used only with the "pass a file descriptor over IPC" mode.
12722    #[prost(string, optional, tag = "29")]
12723    pub output_path: ::core::option::Option<::prost::alloc::string::String>,
12724    /// Optional. If non-zero tunes the write period. A min value of 100ms is
12725    /// enforced (i.e. smaller values are ignored).
12726    #[prost(uint32, optional, tag = "9")]
12727    pub file_write_period_ms: ::core::option::Option<u32>,
12728    /// Optional. When non zero the periodic write stops once at most X bytes
12729    /// have been written into the file. Tracing is disabled when this limit is
12730    /// reached, even if |duration_ms| has not been reached yet.
12731    #[prost(uint64, optional, tag = "10")]
12732    pub max_file_size_bytes: ::core::option::Option<u64>,
12733    #[prost(message, optional, tag = "11")]
12734    pub guardrail_overrides: ::core::option::Option<trace_config::GuardrailOverrides>,
12735    /// When true, data sources are not started until an explicit call to
12736    /// StartTracing() on the consumer port. This is to support early
12737    /// initialization and fast trace triggering. This can be used only when the
12738    /// Consumer explicitly triggers the StartTracing() method.
12739    /// This should not be used in a remote trace config via statsd, doing so will
12740    /// result in a hung trace session.
12741    #[prost(bool, optional, tag = "12")]
12742    pub deferred_start: ::core::option::Option<bool>,
12743    /// When set, it periodically issues a Flush() to all data source, forcing them
12744    /// to commit their data into the tracing service. This can be used for
12745    /// quasi-real-time streaming mode and to guarantee some partial ordering of
12746    /// events in the trace in windows of X ms.
12747    ///
12748    /// Warning: Perfetto automatically handles periodic flushing so in most
12749    /// scenarios setting this field is not needed. High frequency flushing can
12750    /// significantly impact performance.
12751    #[prost(uint32, optional, tag = "13")]
12752    pub flush_period_ms: ::core::option::Option<u32>,
12753    /// Wait for this long for producers to acknowledge flush requests.
12754    /// Default 5s.
12755    #[prost(uint32, optional, tag = "14")]
12756    pub flush_timeout_ms: ::core::option::Option<u32>,
12757    /// Wait for this long for producers to acknowledge stop requests.
12758    /// Default 5s.
12759    #[prost(uint32, optional, tag = "23")]
12760    pub data_source_stop_timeout_ms: ::core::option::Option<u32>,
12761    /// Android-only. If set, sends an intent to the Traceur system app when the
12762    /// trace ends to notify it about the trace readiness.
12763    #[prost(bool, optional, tag = "16")]
12764    pub notify_traceur: ::core::option::Option<bool>,
12765    /// This field was introduced in Android S.
12766    /// Android-only. If set to a value > 0, marks the trace session as a candidate
12767    /// for being attached to a bugreport. This field effectively acts as a z-index
12768    /// for bugreports. When Android's dumpstate runs perfetto
12769    /// --save-for-bugreport, traced will pick the tracing session with the highest
12770    /// score (score <= 0 is ignored) and:
12771    /// On Android S, T:  will steal its contents, save the trace into
12772    ///      a known path and stop prematurely.
12773    /// On Android U+: will create a read-only snapshot and save that into a known
12774    ///      path, without stoppin the original tracing session.
12775    /// When this field is set the tracing session becomes eligible to be cloned
12776    /// by other UIDs.
12777    #[prost(int32, optional, tag = "30")]
12778    pub bugreport_score: ::core::option::Option<i32>,
12779    /// When set, defines name of the file that will be saved under
12780    /// /data/misc/perfetto-traces/bugreport/ when using --save-all-for-bugreport.
12781    /// If omitted, traces will be named systrace.pftrace, systrace_1.pftrace, etc,
12782    /// starting from the highest `bugreport_score`.
12783    /// Introduced in v42 / Android V.
12784    #[prost(string, optional, tag = "38")]
12785    pub bugreport_filename: ::core::option::Option<::prost::alloc::string::String>,
12786    #[prost(message, optional, tag = "17")]
12787    pub trigger_config: ::core::option::Option<trace_config::TriggerConfig>,
12788    /// When this is non-empty the perfetto command line tool will ignore the rest
12789    /// of this TraceConfig and instead connect to the perfetto service as a
12790    /// producer and send these triggers, potentially stopping or starting traces
12791    /// that were previous configured to use a TriggerConfig.
12792    #[prost(string, repeated, tag = "18")]
12793    pub activate_triggers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
12794    #[prost(message, optional, tag = "21")]
12795    pub incremental_state_config: ::core::option::Option<
12796        trace_config::IncrementalStateConfig,
12797    >,
12798    /// No longer needed as we unconditionally allow tracing on user builds.
12799    #[deprecated]
12800    #[prost(bool, optional, tag = "19")]
12801    pub allow_user_build_tracing: ::core::option::Option<bool>,
12802    /// If set the tracing service will ensure there is at most one tracing session
12803    /// with this key.
12804    #[prost(string, optional, tag = "22")]
12805    pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
12806    #[deprecated]
12807    #[prost(enumeration = "trace_config::CompressionType", optional, tag = "24")]
12808    pub compression_type: ::core::option::Option<i32>,
12809    #[prost(message, optional, tag = "47")]
12810    pub compression: ::core::option::Option<trace_config::CompressionConfig>,
12811    #[prost(message, optional, tag = "25")]
12812    pub incident_report_config: ::core::option::Option<
12813        trace_config::IncidentReportConfig,
12814    >,
12815    /// Android-only. Not for general use. If specified, sets the logging to statsd
12816    /// of guardrails and checkpoints in the tracing service. perfetto_cmd sets
12817    /// this to enabled (if not explicitly set in the config) when specifying
12818    /// --upload.
12819    #[prost(enumeration = "trace_config::StatsdLogging", optional, tag = "31")]
12820    pub statsd_logging: ::core::option::Option<i32>,
12821    /// An identifier clients can use to tie this trace to other logging.
12822    /// DEPRECATED as per v32. See TracePacket.trace_uuid for the authoritative
12823    /// Trace UUID. If this field is set, the tracing service will respect the
12824    /// requested UUID (i.e. TracePacket.trace_uuid == this field) but only if
12825    /// gap-less snapshotting is not used.
12826    #[deprecated]
12827    #[prost(int64, optional, tag = "27")]
12828    pub trace_uuid_msb: ::core::option::Option<i64>,
12829    #[deprecated]
12830    #[prost(int64, optional, tag = "28")]
12831    pub trace_uuid_lsb: ::core::option::Option<i64>,
12832    #[prost(message, optional, tag = "33")]
12833    pub trace_filter: ::core::option::Option<trace_config::TraceFilter>,
12834    #[prost(message, optional, tag = "34")]
12835    pub android_report_config: ::core::option::Option<trace_config::AndroidReportConfig>,
12836    #[prost(message, optional, tag = "35")]
12837    pub cmd_trace_start_delay: ::core::option::Option<trace_config::CmdTraceStartDelay>,
12838    #[prost(message, repeated, tag = "39")]
12839    pub session_semaphores: ::prost::alloc::vec::Vec<trace_config::SessionSemaphore>,
12840    /// Priority boost to be applied to the traced process, when the session is
12841    /// running.
12842    #[prost(message, optional, tag = "40")]
12843    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
12844    /// When set to a value > 0, this tracing session will be started in
12845    /// "exclusive mode". This has the following semantics:
12846    /// - It can only be set by shell or root users.
12847    /// - A new exclusive session will only be started if its priority is strictly
12848    ///    higher than any other active tracing session.
12849    /// - If a new exclusive session is started, all other existing tracing
12850    ///    sessions (exclusive or not) are aborted.
12851    /// - While an exclusive session is active, any new non-exclusive session (or
12852    ///    any exclusive session with a lower or equal priority) will be rejected.
12853    ///
12854    /// Introduced in: perfetto v52.
12855    /// Supported on: Android 25Q3+.
12856    #[prost(uint32, optional, tag = "41")]
12857    pub exclusive_prio: ::core::option::Option<u32>,
12858    /// Configures how the service should handle flushing data from producers
12859    /// before periodically writing the trace into the output file.
12860    /// Only applicable when |write_into_file| is true.
12861    ///
12862    /// By default, if |write_into_file| is set, the service periodically issues
12863    /// a Flush() to all data sources before writing buffers into the file.
12864    /// This ensures the file always contains the latest available data.
12865    ///
12866    /// Introduced in: perfetto v54.
12867    /// Supported on: Android 26Q1+.
12868    #[prost(enumeration = "trace_config::WriteFlushMode", optional, tag = "44")]
12869    pub write_flush_mode: ::core::option::Option<i32>,
12870    /// Whether to sync the output file to storage after each periodic write pass.
12871    /// Only applicable when |write_into_file| is true.
12872    ///
12873    /// By default, no fflush is invoked. FFLUSH_ENABLED must be set to explicitly
12874    /// sync to storage on every write.
12875    ///
12876    /// Introduced in: perfetto v54.
12877    /// Supported on: Android 26Q1+.
12878    #[prost(enumeration = "trace_config::FFlushMode", optional, tag = "45")]
12879    pub fflush_post_write: ::core::option::Option<i32>,
12880    /// When true, data sources in remote producers (machines connected via
12881    /// traced_relay) will be matched by default. When false (the default), data
12882    /// sources only match the host machine. In either case, an explicit
12883    /// |DataSource.machine_name_filter| takes priority.
12884    ///
12885    /// NB: perfetto versions before v54 do not have this option and match across
12886    /// machines by default. To be compatible across this version boundary, either
12887    /// set this field to true, or set an explicit machine_name_filter on all data
12888    /// sources.
12889    ///
12890    /// Introduced in: perfetto v54.
12891    #[prost(bool, optional, tag = "43")]
12892    pub trace_all_machines: ::core::option::Option<bool>,
12893    /// Trace attributes: arbitrary key/value pairs describing the trace, saved
12894    /// into it and surfaced by trace_processor in the `metadata` table (see
12895    /// common/trace_attributes.proto). Typically set via
12896    /// `perfetto --add-attribute key=value`.
12897    ///
12898    /// Introduced in: perfetto v58.
12899    #[prost(message, optional, tag = "48")]
12900    pub trace_attributes: ::core::option::Option<TraceAttributes>,
12901    /// Android-only. Not for general use. If set to true, writes trace chunks to a
12902    /// persistent file
12903    /// (/data/misc/perfetto-traces/persistent/$unique_session_name.tmp) that
12904    /// survives device reboots (e.g. during OTA updates or battery depletion).
12905    ///
12906    /// Introduced in: perfetto v59.
12907    /// Supported on: Android 26Q4+.
12908    #[prost(bool, optional, tag = "49")]
12909    pub persist_trace_across_reboots: ::core::option::Option<bool>,
12910}
12911/// Nested message and enum types in `TraceConfig`.
12912pub mod trace_config {
12913    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12914    pub struct BufferConfig {
12915        #[prost(uint32, optional, tag = "1")]
12916        pub size_kb: ::core::option::Option<u32>,
12917        #[prost(enumeration = "buffer_config::FillPolicy", optional, tag = "4")]
12918        pub fill_policy: ::core::option::Option<i32>,
12919        /// When true the buffer is moved (rather than copied) onto the cloned
12920        /// session, and an empty buffer of the same size is allocated in the source
12921        /// tracing session. This feature will likely get deprecated in the future.
12922        /// It been introduced mainly to support the surfaceflinger snapshot dump
12923        /// for bugreports, where SF can dumps O(400MB) into the bugreport trace. In
12924        /// that case we don't want to retain another in-memory copy of the buffer.
12925        #[prost(bool, optional, tag = "5")]
12926        pub transfer_on_clone: ::core::option::Option<bool>,
12927        /// Used in conjunction with transfer_on_clone. When true the buffer is
12928        /// cleared before issuing the Flush(reason=kTraceClone). This is to ensure
12929        /// that if the data source took too long to write the data in a previous
12930        /// clone-related flush, we don't end up with a mixture of leftovers from
12931        /// the previous write and new data.
12932        #[prost(bool, optional, tag = "6")]
12933        pub clear_before_clone: ::core::option::Option<bool>,
12934        /// Optional name for this buffer. If set, data sources can reference this
12935        /// buffer by name using |target_buffer_name| in DataSourceConfig instead of
12936        /// using the buffer index. Buffer names must be unique within a tracing
12937        /// session. This provides a more human-readable and less error-prone way to
12938        /// configure which buffer a data source writes to.
12939        #[prost(string, optional, tag = "7")]
12940        pub name: ::core::option::Option<::prost::alloc::string::String>,
12941        #[prost(enumeration = "buffer_config::ExperimentalMode", optional, tag = "8")]
12942        pub experimental_mode: ::core::option::Option<i32>,
12943    }
12944    /// Nested message and enum types in `BufferConfig`.
12945    pub mod buffer_config {
12946        #[derive(
12947            Clone,
12948            Copy,
12949            Debug,
12950            PartialEq,
12951            Eq,
12952            Hash,
12953            PartialOrd,
12954            Ord,
12955            ::prost::Enumeration
12956        )]
12957        #[repr(i32)]
12958        pub enum FillPolicy {
12959            Unspecified = 0,
12960            /// Default behavior. The buffer operates as a conventional ring buffer.
12961            /// If the writer is faster than the reader (or if the reader reads only
12962            /// after tracing is stopped) newly written packets will overwrite old
12963            /// packets.
12964            RingBuffer = 1,
12965            /// Behaves like RING_BUFFER as long as there is space in the buffer or
12966            /// the reader catches up with the writer. As soon as the writer hits
12967            /// an unread chunk, it stops accepting new data in the buffer.
12968            Discard = 2,
12969        }
12970        impl FillPolicy {
12971            /// String value of the enum field names used in the ProtoBuf definition.
12972            ///
12973            /// The values are not transformed in any way and thus are considered stable
12974            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12975            pub fn as_str_name(&self) -> &'static str {
12976                match self {
12977                    Self::Unspecified => "UNSPECIFIED",
12978                    Self::RingBuffer => "RING_BUFFER",
12979                    Self::Discard => "DISCARD",
12980                }
12981            }
12982            /// Creates an enum from field names used in the ProtoBuf definition.
12983            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
12984                match value {
12985                    "UNSPECIFIED" => Some(Self::Unspecified),
12986                    "RING_BUFFER" => Some(Self::RingBuffer),
12987                    "DISCARD" => Some(Self::Discard),
12988                    _ => None,
12989                }
12990            }
12991        }
12992        /// When true, uses the experimental TraceBufferV2 implementation for this
12993        /// buffer. This is for testing purposes only and may be removed in future
12994        /// versions.
12995        #[derive(
12996            Clone,
12997            Copy,
12998            Debug,
12999            PartialEq,
13000            Eq,
13001            Hash,
13002            PartialOrd,
13003            Ord,
13004            ::prost::Enumeration
13005        )]
13006        #[repr(i32)]
13007        pub enum ExperimentalMode {
13008            /// Use the default V1 implementation.
13009            ModeUnspecified = 0,
13010            /// Use TraceBufferV2.
13011            TraceBufferV2 = 1,
13012        }
13013        impl ExperimentalMode {
13014            /// String value of the enum field names used in the ProtoBuf definition.
13015            ///
13016            /// The values are not transformed in any way and thus are considered stable
13017            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13018            pub fn as_str_name(&self) -> &'static str {
13019                match self {
13020                    Self::ModeUnspecified => "MODE_UNSPECIFIED",
13021                    Self::TraceBufferV2 => "TRACE_BUFFER_V2",
13022                }
13023            }
13024            /// Creates an enum from field names used in the ProtoBuf definition.
13025            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13026                match value {
13027                    "MODE_UNSPECIFIED" => Some(Self::ModeUnspecified),
13028                    "TRACE_BUFFER_V2" => Some(Self::TraceBufferV2),
13029                    _ => None,
13030                }
13031            }
13032        }
13033    }
13034    #[derive(Clone, PartialEq, ::prost::Message)]
13035    pub struct DataSource {
13036        /// Filters and data-source specific config. It contains also the unique name
13037        /// of the data source, the one passed in the  DataSourceDescriptor when they
13038        /// register on the service.
13039        #[prost(message, optional, tag = "1")]
13040        pub config: ::core::option::Option<super::DataSourceConfig>,
13041        /// Optional. If multiple producers (~processes) expose the same data source
13042        /// and either |producer_name_filter| or |producer_name_regex_filter| is set,
13043        /// the data source is enabled only for producers whose names match any of
13044        /// the filters.
13045        /// |producer_name_filter| has to be an exact match, while
13046        /// |producer_name_regex_filter| is a regular expression.
13047        /// This allows to enable a data source only for specific processes.
13048        /// The "repeated" fields have OR semantics: specifying a filter ["foo",
13049        /// "bar"] will enable data sources on both "foo" and "bar" (if they exist).
13050        #[prost(string, repeated, tag = "2")]
13051        pub producer_name_filter: ::prost::alloc::vec::Vec<
13052            ::prost::alloc::string::String,
13053        >,
13054        #[prost(string, repeated, tag = "3")]
13055        pub producer_name_regex_filter: ::prost::alloc::vec::Vec<
13056            ::prost::alloc::string::String,
13057        >,
13058        /// Filter by machine names. The name of a machine is determined by the
13059        /// PERFETTO_MACHINE_NAME env variable. In Android systems, if the env
13060        /// variable is not set then the
13061        /// persist.traced_relay.machine_name system property is used. If the
13062        /// sysprop isn't set or not in an Android system, then the machine name by
13063        /// default is set to the utsname sysname (e.g. Linux), which can be obtained
13064        /// via the 'uname -s' command. As a convenience, one can use "host" to refer
13065        /// to the host machine, which is the machine running traced.
13066        #[prost(string, repeated, tag = "4")]
13067        pub machine_name_filter: ::prost::alloc::vec::Vec<
13068            ::prost::alloc::string::String,
13069        >,
13070    }
13071    /// Config for disabling builtin data sources in the tracing service.
13072    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13073    pub struct BuiltinDataSource {
13074        /// Disable emitting clock timestamps into the trace.
13075        #[prost(bool, optional, tag = "1")]
13076        pub disable_clock_snapshotting: ::core::option::Option<bool>,
13077        /// Disable echoing the original trace config in the trace.
13078        #[prost(bool, optional, tag = "2")]
13079        pub disable_trace_config: ::core::option::Option<bool>,
13080        /// Disable emitting system info (build fingerprint, cpuinfo, etc).
13081        #[prost(bool, optional, tag = "3")]
13082        pub disable_system_info: ::core::option::Option<bool>,
13083        /// Disable emitting events for data-source state changes (e.g. the marker
13084        /// for all data sources having ACKed the start of the trace).
13085        #[prost(bool, optional, tag = "4")]
13086        pub disable_service_events: ::core::option::Option<bool>,
13087        /// The authoritative clock domain for the trace. Defaults to BOOTTIME. See
13088        /// also ClockSnapshot's primary_trace_clock. The configured value is written
13089        /// into the trace as part of the ClockSnapshots emitted by the service.
13090        /// Trace processor will attempt to translate packet/event timestamps from
13091        /// various data sources (and their chosen clock domains) to this domain
13092        /// during import. Added in Android R.
13093        #[prost(enumeration = "super::BuiltinClock", optional, tag = "5")]
13094        pub primary_trace_clock: ::core::option::Option<i32>,
13095        /// Time interval in between snapshotting of sync markers, clock snapshots,
13096        /// stats, and other periodic service-emitted events. Note that the service
13097        /// only keeps track of the first and the most recent snapshot until
13098        /// ReadBuffers() is called.
13099        #[prost(uint32, optional, tag = "6")]
13100        pub snapshot_interval_ms: ::core::option::Option<u32>,
13101        /// Hints to the service that a suspend-aware (i.e. counting time in suspend)
13102        /// clock should be used for periodic snapshots of service-emitted events.
13103        /// This means, if a snapshot *should* have happened during suspend, it will
13104        /// happen immediately after the device resumes.
13105        ///
13106        /// Choosing a clock like this is done on best-effort basis; not all
13107        /// platforms (e.g. Windows) expose a clock which can be used for periodic
13108        /// tasks counting suspend. If such a clock is not available, the service
13109        /// falls back to the best-available alternative.
13110        ///
13111        /// Introduced in Android S.
13112        /// TODO(lalitm): deprecate this in T and make this the default if nothing
13113        /// crashes in S.
13114        #[prost(bool, optional, tag = "7")]
13115        pub prefer_suspend_clock_for_snapshot: ::core::option::Option<bool>,
13116        /// Disables the reporting of per-trace-writer histograms in TraceStats.
13117        #[prost(bool, optional, tag = "8")]
13118        pub disable_chunk_usage_histograms: ::core::option::Option<bool>,
13119        /// Disable emitting extension descriptors into the trace.
13120        #[prost(bool, optional, tag = "9")]
13121        pub disable_extension_descriptors: ::core::option::Option<bool>,
13122        /// Emit state changes of other tracing sessions running concurrently
13123        /// with this one (see ConcurrentSessionEvent).
13124        ///
13125        /// Introduced in v58 / Android 26Q3+.
13126        #[prost(bool, optional, tag = "10")]
13127        pub enable_concurrent_session_events: ::core::option::Option<bool>,
13128    }
13129    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13130    pub struct ProducerConfig {
13131        /// Identifies the producer for which this config is for.
13132        #[prost(string, optional, tag = "1")]
13133        pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
13134        /// Specifies the preferred size of the shared memory buffer. If the size is
13135        /// larger than the max size, the max will be used. If it is smaller than
13136        /// the page size or doesn't fit pages evenly into it, it will fall back to
13137        /// the size specified by the producer or finally the default shared memory
13138        /// size.
13139        #[prost(uint32, optional, tag = "2")]
13140        pub shm_size_kb: ::core::option::Option<u32>,
13141        /// Specifies the preferred size of each page in the shared memory buffer.
13142        /// Must be an integer multiple of 4K.
13143        #[prost(uint32, optional, tag = "3")]
13144        pub page_size_kb: ::core::option::Option<u32>,
13145    }
13146    /// Contains statsd-specific metadata about an alert associated with the trace.
13147    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13148    pub struct StatsdMetadata {
13149        /// The identifier of the alert which triggered this trace.
13150        #[prost(int64, optional, tag = "1")]
13151        pub triggering_alert_id: ::core::option::Option<i64>,
13152        /// The uid which registered the triggering configuration with statsd.
13153        #[prost(int32, optional, tag = "2")]
13154        pub triggering_config_uid: ::core::option::Option<i32>,
13155        /// The identifier of the config which triggered the alert.
13156        #[prost(int64, optional, tag = "3")]
13157        pub triggering_config_id: ::core::option::Option<i64>,
13158        /// The identifier of the subscription which triggered this trace.
13159        #[prost(int64, optional, tag = "4")]
13160        pub triggering_subscription_id: ::core::option::Option<i64>,
13161    }
13162    /// Contains flags which override the default values of the guardrails inside
13163    /// Perfetto.
13164    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13165    pub struct GuardrailOverrides {
13166        /// Override the default limit (in bytes) for uploading data to server within
13167        /// a 24 hour period.
13168        /// On R-, this override only affected userdebug builds. Since S, it also
13169        /// affects user builds.
13170        /// In 24Q3+ (V+), this override is a noop because upload guardrail logic
13171        /// was removed from Perfetto.
13172        #[deprecated]
13173        #[prost(uint64, optional, tag = "1")]
13174        pub max_upload_per_day_bytes: ::core::option::Option<u64>,
13175        /// Overrides the guardrail for maximum trace buffer size.
13176        /// Available on U+
13177        #[prost(uint32, optional, tag = "2")]
13178        pub max_tracing_buffer_size_kb: ::core::option::Option<u32>,
13179    }
13180    /// Triggers allow producers to start or stop the tracing session when an event
13181    /// occurs.
13182    ///
13183    /// For example if we are tracing probabilistically, most traces will be
13184    /// uninteresting. Triggers allow us to keep only the interesting ones such as
13185    /// those traces during which the device temperature reached a certain
13186    /// threshold. In this case the producer can activate a trigger to keep
13187    /// (STOP_TRACING) the trace, otherwise it can also begin a trace
13188    /// (START_TRACING) because it knows something is about to happen.
13189    #[derive(Clone, PartialEq, ::prost::Message)]
13190    pub struct TriggerConfig {
13191        #[prost(enumeration = "trigger_config::TriggerMode", optional, tag = "1")]
13192        pub trigger_mode: ::core::option::Option<i32>,
13193        /// This flag is really a workaround for b/274931668. This is needed only
13194        /// when deploying configs to different versions of the tracing service.
13195        /// When this is set to true this has the same effect of setting trigger_mode
13196        /// to CLONE_SNAPSHOT on newer versions of the service. This boolean has been
13197        /// introduced to allow to have configs that use CLONE_SNAPSHOT on newer
13198        /// versions of Android and fall back to STOP_TRACING on older versions where
13199        /// CLONE_SNAPSHOT did not exist.
13200        /// When using this flag, trigger_mode must be set to STOP_TRACING.
13201        #[prost(bool, optional, tag = "5")]
13202        pub use_clone_snapshot_if_available: ::core::option::Option<bool>,
13203        /// A list of triggers which are related to this configuration. If ANY
13204        /// trigger is seen then an action will be performed based on |trigger_mode|.
13205        #[prost(message, repeated, tag = "2")]
13206        pub triggers: ::prost::alloc::vec::Vec<trigger_config::Trigger>,
13207        /// Required and must be positive if a TriggerConfig is specified. This is
13208        /// how long this TraceConfig should wait for a trigger to arrive. After this
13209        /// period of time if no trigger is seen the TracingSession will be cleaned
13210        /// up.
13211        #[prost(uint32, optional, tag = "3")]
13212        pub trigger_timeout_ms: ::core::option::Option<u32>,
13213    }
13214    /// Nested message and enum types in `TriggerConfig`.
13215    pub mod trigger_config {
13216        #[derive(Clone, PartialEq, ::prost::Message)]
13217        pub struct Trigger {
13218            /// The producer must specify this name to activate the trigger.
13219            #[prost(string, optional, tag = "1")]
13220            pub name: ::core::option::Option<::prost::alloc::string::String>,
13221            /// An std::regex that will match the producer that can activate this
13222            /// trigger. This is optional. If unset any producers can activate this
13223            /// trigger.
13224            #[prost(string, optional, tag = "2")]
13225            pub producer_name_regex: ::core::option::Option<
13226                ::prost::alloc::string::String,
13227            >,
13228            /// After a trigger is received either in START_TRACING or STOP_TRACING
13229            /// mode then the trace will end |stop_delay_ms| after triggering.
13230            /// In CLONE_SNAPSHOT mode, this is the delay between the trigger and the
13231            /// snapshot.
13232            /// If |prefer_suspend_clock_for_duration| is set, the duration will be
13233            /// based on wall-clock, counting also time in suspend.
13234            #[prost(uint32, optional, tag = "3")]
13235            pub stop_delay_ms: ::core::option::Option<u32>,
13236            /// Limits the number of traces this trigger can start/stop in a rolling
13237            /// 24 hour window. If this field is unset or zero, no limit is applied and
13238            /// activiation of this trigger *always* starts/stops the trace.
13239            #[prost(uint32, optional, tag = "4")]
13240            pub max_per_24_h: ::core::option::Option<u32>,
13241            /// A value between 0 and 1 which encodes the probability of skipping a
13242            /// trigger with this name. This is useful for reducing the probability
13243            /// of high-frequency triggers from dominating trace finaization. If this
13244            /// field is unset or zero, the trigger will *never* be skipped. If this
13245            /// field is greater than or equal to 1, this trigger will *always* be
13246            /// skipped i.e. it will be as if this trigger was never included in the
13247            /// first place.
13248            /// This probability check is applied *before* any other limits. For
13249            /// example, if |max_per_24_h| is also set, first we will check if the
13250            /// probability bar is met and only then will we check the |max_per_24_h|
13251            /// limit.
13252            #[prost(double, optional, tag = "5")]
13253            pub skip_probability: ::core::option::Option<f64>,
13254        }
13255        #[derive(
13256            Clone,
13257            Copy,
13258            Debug,
13259            PartialEq,
13260            Eq,
13261            Hash,
13262            PartialOrd,
13263            Ord,
13264            ::prost::Enumeration
13265        )]
13266        #[repr(i32)]
13267        pub enum TriggerMode {
13268            Unspecified = 0,
13269            /// When this mode is chosen, data sources are not started until one of the
13270            /// |triggers| are received. This supports early initialization and fast
13271            /// starting of the tracing system. On triggering, the session will then
13272            /// record for |stop_delay_ms|. However if no trigger is seen
13273            /// after |trigger_timeout_ms| the session will be stopped and no data will
13274            /// be returned.
13275            StartTracing = 1,
13276            /// When this mode is chosen, the session will be started via the normal
13277            /// EnableTracing() & StartTracing(). If no trigger is ever seen
13278            /// the session will be stopped after |trigger_timeout_ms| and no data will
13279            /// be returned. However if triggered the trace will stop after
13280            /// |stop_delay_ms| and any data in the buffer will be returned to the
13281            /// consumer.
13282            StopTracing = 2,
13283            /// When this mode is chosen, this causes a snapshot of the current tracing
13284            /// session to be created after |stop_delay_ms| while the current tracing
13285            /// session continues undisturbed (% an extra flush). This mode can be
13286            /// used only when the tracing session is handled by the "perfetto" cmdline
13287            /// client (which is true in 90% of cases). Part of the business logic
13288            /// necessary for this behavior, and ensuing file handling, lives in
13289            /// perfetto_cmd.cc . On other consumers, this causes only a notification
13290            /// of the trigger through a CloneTriggerHit ObservableEvent. The custom
13291            /// consumer is supposed to call CloneSession() itself after the event.
13292            /// Use use_clone_snapshot_if_available=true when targeting older versions
13293            /// of perfetto.
13294            ///
13295            /// NOTE: CLONE_SNAPSHOT should be used only when we targeting Android V+
13296            /// (15+) / Perfetto v38+. A bug in older versions of the tracing service
13297            /// might cause indefinitely long tracing sessions (see b/274931668).
13298            CloneSnapshot = 4,
13299        }
13300        impl TriggerMode {
13301            /// String value of the enum field names used in the ProtoBuf definition.
13302            ///
13303            /// The values are not transformed in any way and thus are considered stable
13304            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13305            pub fn as_str_name(&self) -> &'static str {
13306                match self {
13307                    Self::Unspecified => "UNSPECIFIED",
13308                    Self::StartTracing => "START_TRACING",
13309                    Self::StopTracing => "STOP_TRACING",
13310                    Self::CloneSnapshot => "CLONE_SNAPSHOT",
13311                }
13312            }
13313            /// Creates an enum from field names used in the ProtoBuf definition.
13314            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13315                match value {
13316                    "UNSPECIFIED" => Some(Self::Unspecified),
13317                    "START_TRACING" => Some(Self::StartTracing),
13318                    "STOP_TRACING" => Some(Self::StopTracing),
13319                    "CLONE_SNAPSHOT" => Some(Self::CloneSnapshot),
13320                    _ => None,
13321                }
13322            }
13323        }
13324    }
13325    /// Configuration for trace contents that reference earlier trace data. For
13326    /// example, a data source might intern strings, and emit packets containing
13327    /// {interned id : string} pairs. Future packets from that data source can then
13328    /// use the interned ids instead of duplicating the raw string contents. The
13329    /// trace parser will then need to use that interning table to fully interpret
13330    /// the rest of the trace.
13331    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13332    pub struct IncrementalStateConfig {
13333        /// If nonzero, notify eligible data sources to clear their incremental state
13334        /// periodically, with the given period. The notification is sent only to
13335        /// data sources that have |handles_incremental_state_clear| set in their
13336        /// DataSourceDescriptor. The notification requests that the data source
13337        /// stops referring to past trace contents. This is particularly useful when
13338        /// tracing in ring buffer mode, where it is not exceptional to overwrite old
13339        /// trace data.
13340        ///
13341        /// Warning: this time-based global clearing is likely to be removed in the
13342        /// future, to be replaced with a smarter way of sending the notifications
13343        /// only when necessary.
13344        #[prost(uint32, optional, tag = "1")]
13345        pub clear_period_ms: ::core::option::Option<u32>,
13346    }
13347    /// Selects and configures the compression codec, superseding
13348    /// |compression_type|. The codec is chosen by which sub-message is set; when
13349    /// several are set the service picks the highest-numbered one it supports and
13350    /// ignores codecs it doesn't know, so a single config can target old and new
13351    /// services. Falls back to |compression_type| (deflate-only), if given.
13352    ///
13353    /// Introduced in: perfetto v58.
13354    /// Supported on: Android 26Q3+.
13355    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13356    pub struct CompressionConfig {
13357        /// If a config sets more than one of these, the service picks the one with
13358        /// the highest field number (see the rule above): e.g. with deflate (1) and
13359        /// zstd (2) both set, zstd wins.
13360        #[prost(message, optional, tag = "1")]
13361        pub deflate: ::core::option::Option<compression_config::Deflate>,
13362        #[prost(message, optional, tag = "2")]
13363        pub zstd: ::core::option::Option<compression_config::Zstd>,
13364    }
13365    /// Nested message and enum types in `CompressionConfig`.
13366    pub mod compression_config {
13367        /// Deflate (zlib), equivalent to the legacy `COMPRESSION_TYPE_DEFLATE`.
13368        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13369        pub struct Deflate {}
13370        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13371        pub struct Zstd {
13372            /// Compression level, 1 (fast) to 22 (smallest); 0/unset uses zstd's
13373            /// default (3). Levels above the max are clamped; negatives are valid
13374            /// faster, lower-ratio modes.
13375            #[prost(int32, optional, tag = "1")]
13376            pub level: ::core::option::Option<i32>,
13377        }
13378    }
13379    /// Android-only. Not for general use. If set, saves the trace into an
13380    /// incident. This field is read by perfetto_cmd, rather than the tracing
13381    /// service. This field must be set when passing the --upload flag to
13382    /// perfetto_cmd.
13383    /// In this message, either:
13384    ///   * all of |destination_package|, |destination_class| and |privacy_level|
13385    ///     must be set.
13386    ///   * |skip_incidentd| must be explicitly set to true.
13387    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13388    pub struct IncidentReportConfig {
13389        #[prost(string, optional, tag = "1")]
13390        pub destination_package: ::core::option::Option<::prost::alloc::string::String>,
13391        #[prost(string, optional, tag = "2")]
13392        pub destination_class: ::core::option::Option<::prost::alloc::string::String>,
13393        /// Level of filtering in the requested incident. See |Destination| in
13394        /// frameworks/base/core/proto/android/privacy.proto.
13395        #[prost(int32, optional, tag = "3")]
13396        pub privacy_level: ::core::option::Option<i32>,
13397        /// If true, then skips saving the trace to incidentd.
13398        ///
13399        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
13400        /// or when we explicitly don't want traces to go to incidentd even when they
13401        /// usually would (e.g. configs deployed using statsd but only used for
13402        /// inclusion in bugreports using |bugreport_score|).
13403        ///
13404        /// The motivation for having this flag, instead of just not setting
13405        /// |incident_report_config|, is prevent accidents where
13406        /// |incident_report_config| is omitted by mistake.
13407        #[prost(bool, optional, tag = "5")]
13408        pub skip_incidentd: ::core::option::Option<bool>,
13409        /// If true, do not write the trace into dropbox (i.e. incident only).
13410        /// Otherwise, write to both dropbox and incident.
13411        /// TODO(lalitm): remove this field as we no longer use Dropbox.
13412        #[deprecated]
13413        #[prost(bool, optional, tag = "4")]
13414        pub skip_dropbox: ::core::option::Option<bool>,
13415    }
13416    /// When set applies a post-filter to the trace contents using the filter
13417    /// provided. The filter is applied at ReadBuffers() time and works both in the
13418    /// case of IPC readback and write_into_file. This filter can be generated
13419    /// using `tools/proto_filter -s schema.proto -F filter_out.bytes` or
13420    /// `-T filter_out.escaped_string` (for .pbtx). See go/trace-filtering for
13421    /// design.
13422    ///
13423    /// Introduced in Android S, but it was broken (b/195065199). Reintroduced in
13424    /// Android T with a different field number. Updated in Android U with a new
13425    /// bytecode version which supports string filtering.
13426    ///
13427    /// The principles and terminology of string filtering is heavily inspired by
13428    /// iptables. A "rule" decide how strings should be filtered. Each rule
13429    /// contains a "policy" which indicates the algorithm to use for filtering.
13430    /// A "chain" is a list of rules which will be sequentially checked against
13431    /// each string.
13432    ///
13433    /// The first rule which applies to the string terminates filtering for that
13434    /// string. If no rules apply, the string is left unchanged.
13435    ///
13436    /// =========================
13437    /// Filter bytecode.
13438    /// =========================
13439    #[derive(Clone, PartialEq, ::prost::Message)]
13440    pub struct TraceFilter {
13441        /// The bytecode as implemented in Android T.
13442        #[prost(bytes = "vec", optional, tag = "1")]
13443        pub bytecode: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
13444        /// The bytecode as implemented in Android U. Adds support for string
13445        /// filtering.
13446        #[prost(bytes = "vec", optional, tag = "2")]
13447        pub bytecode_v2: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
13448        #[prost(message, optional, tag = "3")]
13449        pub string_filter_chain: ::core::option::Option<trace_filter::StringFilterChain>,
13450        /// Bytecode overlay for Perfetto v54+. This overlay is applied on top of
13451        /// bytecode_v2 to upgrade specific simple fields to new values. Old Perfetto
13452        /// versions ignore this field; new versions apply it.
13453        ///
13454        /// The motivation for this is that adding new opcodes in a backwards
13455        /// compatible way while also minimizing config size is hard. Instead, the
13456        /// overlay mechanism allows us to "patch" specific fields in the original
13457        /// bytecode_v2 with new semantics.
13458        ///
13459        /// See RFC 0011-subset-string-filter-rules.md for more info.
13460        ///
13461        /// Note:
13462        /// Unlike bytecode_v2 (which uses implicit message indices via EndOfMessage
13463        /// markers), this overlay uses a triplet format with explicit indices:
13464        ///    \[msg_index, field_id << 3 | opcode, argument\] ... \[checksum\]
13465        /// Each entry is exactly 3 varints. The argument is 0 when not needed.
13466        /// Entries must be sorted by (msg_index, field_id).
13467        ///
13468        /// The parser processes bytecode_v2 and this overlay simultaneously:
13469        ///   - any field not mentioned in the overlay is parsed as usual
13470        ///   - any field in the overlay but *not* in the bytecode_v2 is added
13471        ///     with its overlay value
13472        ///   - any field in both the overlay and bytecode_v2 takes the value in the
13473        ///     overlay, the bytecode_v2 value is ignored.
13474        ///
13475        /// Note: despite the name, this was broken in v54 (the overlay was not
13476        /// passed through to the bytecode parser). Only works in v55+.
13477        #[prost(bytes = "vec", optional, tag = "4")]
13478        pub bytecode_overlay_v54: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
13479        /// String filter chain for Perfetto v54+. Rules in this chain either
13480        /// overwrite rules in string_filter_chain (if the name matches) or are
13481        /// appended (if the name doesn't match). This allows modifying existing
13482        /// rules (e.g., changing policy) without duplicating the entire chain.
13483        /// Rules without a name are always appended.
13484        /// See /rfcs/0011-subset-string-filter-rules.md for design details.
13485        /// Introduced in: Perfetto v54.
13486        #[prost(message, optional, tag = "5")]
13487        pub string_filter_chain_v54: ::core::option::Option<
13488            trace_filter::StringFilterChain,
13489        >,
13490    }
13491    /// Nested message and enum types in `TraceFilter`.
13492    pub mod trace_filter {
13493        /// A rule specifies how strings should be filtered.
13494        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13495        pub struct StringFilterRule {
13496            /// The policy (i.e. algorithm) dictating how strings matching this rule
13497            /// should be handled.
13498            #[prost(enumeration = "StringFilterPolicy", optional, tag = "1")]
13499            pub policy: ::core::option::Option<i32>,
13500            /// The regex pattern used to match against each string.
13501            #[prost(string, optional, tag = "2")]
13502            pub regex_pattern: ::core::option::Option<::prost::alloc::string::String>,
13503            /// The string which should appear after the tgid in atrace tracepoint
13504            /// strings.
13505            #[prost(string, optional, tag = "3")]
13506            pub atrace_payload_starts_with: ::core::option::Option<
13507                ::prost::alloc::string::String,
13508            >,
13509            /// Optional name for the rule. When merging chains (e.g. via
13510            /// string_filter_chain_v54), rules with matching names in the newer chain
13511            /// will overwrite rules in the base chain. Rules without a name (empty or
13512            /// unset) are always treated as distinct and will be appended.
13513            /// See /rfcs/0011-subset-string-filter-rules.md for design details.
13514            /// Introduced in: Perfetto v54.
13515            #[prost(string, optional, tag = "4")]
13516            pub name: ::core::option::Option<::prost::alloc::string::String>,
13517            /// The semantic types this rule applies to.
13518            ///
13519            /// SEMANTIC_TYPE_UNSPECIFIED (0) is treated as its own distinct category:
13520            /// - If empty, the rule applies only to fields with UNSPECIFIED type.
13521            /// - If non-empty, the rule applies only to fields whose semantic type
13522            ///    is explicitly listed. To match UNSPECIFIED fields, you must include
13523            ///    SEMANTIC_TYPE_UNSPECIFIED in the list.
13524            ///
13525            /// Examples:
13526            ///    semantic_type: \[\]           -> matches only UNSPECIFIED fields
13527            ///    semantic_type: \[ATRACE\]     -> matches only ATRACE fields
13528            ///    semantic_type: \[UNSPECIFIED, ATRACE\] -> matches both
13529            ///
13530            /// See /rfcs/0011-subset-string-filter-rules.md for design details.
13531            /// Introduced in: Perfetto v54.
13532            #[prost(
13533                enumeration = "super::super::SemanticType",
13534                repeated,
13535                packed = "false",
13536                tag = "5"
13537            )]
13538            pub semantic_type: ::prost::alloc::vec::Vec<i32>,
13539        }
13540        /// A chain is a list of rules which string will be sequentially checked
13541        /// against.
13542        #[derive(Clone, PartialEq, ::prost::Message)]
13543        pub struct StringFilterChain {
13544            #[prost(message, repeated, tag = "1")]
13545            pub rules: ::prost::alloc::vec::Vec<StringFilterRule>,
13546        }
13547        /// A policy specifies which algorithm should be used for filtering the
13548        /// string.
13549        #[derive(
13550            Clone,
13551            Copy,
13552            Debug,
13553            PartialEq,
13554            Eq,
13555            Hash,
13556            PartialOrd,
13557            Ord,
13558            ::prost::Enumeration
13559        )]
13560        #[repr(i32)]
13561        pub enum StringFilterPolicy {
13562            SfpUnspecified = 0,
13563            /// Tries to match the string field against |regex_pattern|. If it
13564            /// matches, all matching groups are "redacted" (i.e. replaced with a
13565            /// constant string) and filtering is terminated (i.e. no further rules are
13566            /// checked). If it doesn't match, the string is left unchanged and the
13567            /// next rule in chain is considered.
13568            SfpMatchRedactGroups = 1,
13569            /// Like |SFP_MATCH_REDACT_GROUPS| but tries to do some pre-work before
13570            /// checking the regex. Specifically, it tries to parse the string field as
13571            /// an atrace tracepoint and checks if the post-tgid field starts with
13572            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
13573            /// this check succeeds.
13574            SfpAtraceMatchRedactGroups = 2,
13575            /// Tries to match the string field against |regex_pattern|. If it
13576            /// matches, filtering is terminated (i.e. no further rules are checked).
13577            /// If it doesn't match, the string is left unchanged and the next rule in
13578            /// chain is considered.
13579            SfpMatchBreak = 3,
13580            /// Like |SFP_MATCH_BREAK| but tries to do some pre-work before checking
13581            /// the regex. Specifically, it tries to parse the string field as an
13582            /// atrace tracepoint and checks if the post-tgid field starts with
13583            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
13584            /// this check succeeds.
13585            SfpAtraceMatchBreak = 4,
13586            /// Tries to repeatedly search (i.e. find substrings of) the string field
13587            /// with |regex_pattern|. For each match, redacts any matching groups (i.e.
13588            /// replaced with a constant string). Once there are no further matches,
13589            /// filtering is terminated (i.e. no further rules are checked).
13590            ///
13591            /// Note that this is policy is a "search" policy not a "match" policy
13592            /// unlike the above policies:
13593            ///   * Match policies require matching the full string i.e. there is an
13594            ///     implicit leading `^` and trailing `$`.
13595            ///   * Search policies perform repeated partial matching of the string
13596            ///     e.g.
13597            ///       - String: `foo=aaa,bar=123,foo=bbb,baz=456`
13598            ///       - Pattern: `foo=(\d+)`
13599            ///       - Output: `foo=P6O,bar=123,foo=P6O,baz=456`
13600            ///     where P6O is the redaction string
13601            ///
13602            /// All of this is only performed after some pre-work where we try to parse
13603            /// the string field as an atrace tracepoint and check if the post-tgid
13604            /// field starts with |atrace_post_tgid_starts_with|.
13605            ///
13606            /// If there are no partial matches, the string is left unchanged and the
13607            /// next rule in chain is considered.
13608            SfpAtraceRepeatedSearchRedactGroups = 5,
13609        }
13610        impl StringFilterPolicy {
13611            /// String value of the enum field names used in the ProtoBuf definition.
13612            ///
13613            /// The values are not transformed in any way and thus are considered stable
13614            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13615            pub fn as_str_name(&self) -> &'static str {
13616                match self {
13617                    Self::SfpUnspecified => "SFP_UNSPECIFIED",
13618                    Self::SfpMatchRedactGroups => "SFP_MATCH_REDACT_GROUPS",
13619                    Self::SfpAtraceMatchRedactGroups => "SFP_ATRACE_MATCH_REDACT_GROUPS",
13620                    Self::SfpMatchBreak => "SFP_MATCH_BREAK",
13621                    Self::SfpAtraceMatchBreak => "SFP_ATRACE_MATCH_BREAK",
13622                    Self::SfpAtraceRepeatedSearchRedactGroups => {
13623                        "SFP_ATRACE_REPEATED_SEARCH_REDACT_GROUPS"
13624                    }
13625                }
13626            }
13627            /// Creates an enum from field names used in the ProtoBuf definition.
13628            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13629                match value {
13630                    "SFP_UNSPECIFIED" => Some(Self::SfpUnspecified),
13631                    "SFP_MATCH_REDACT_GROUPS" => Some(Self::SfpMatchRedactGroups),
13632                    "SFP_ATRACE_MATCH_REDACT_GROUPS" => {
13633                        Some(Self::SfpAtraceMatchRedactGroups)
13634                    }
13635                    "SFP_MATCH_BREAK" => Some(Self::SfpMatchBreak),
13636                    "SFP_ATRACE_MATCH_BREAK" => Some(Self::SfpAtraceMatchBreak),
13637                    "SFP_ATRACE_REPEATED_SEARCH_REDACT_GROUPS" => {
13638                        Some(Self::SfpAtraceRepeatedSearchRedactGroups)
13639                    }
13640                    _ => None,
13641                }
13642            }
13643        }
13644    }
13645    /// Android-only. Not for general use. If set, reports the trace to the
13646    /// Android framework. This field is read by perfetto_cmd, rather than the
13647    /// tracing service. This field must be set when passing the --upload flag to
13648    /// perfetto_cmd.
13649    /// In this message, either:
13650    ///   * |reporter_service_package| and |reporter_service_class| must be set.
13651    ///   * |skip_reporting| must be explicitly set to true.
13652    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13653    pub struct AndroidReportConfig {
13654        #[prost(string, optional, tag = "1")]
13655        pub reporter_service_package: ::core::option::Option<
13656            ::prost::alloc::string::String,
13657        >,
13658        #[prost(string, optional, tag = "2")]
13659        pub reporter_service_class: ::core::option::Option<
13660            ::prost::alloc::string::String,
13661        >,
13662        /// If true, then skips reporting the trace to Android framework.
13663        ///
13664        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
13665        /// or when we explicitly don't want to report traces to the framework even
13666        /// when they usually would (e.g. configs deployed using statsd but only
13667        /// used for inclusion in bugreports using |bugreport_score|).
13668        ///
13669        /// The motivation for having this flag, instead of just not setting
13670        /// |framework_report_config|, is prevent accidents where
13671        /// |framework_report_config| is omitted by mistake.
13672        #[prost(bool, optional, tag = "3")]
13673        pub skip_report: ::core::option::Option<bool>,
13674        /// If true, will direct the Android framework to read the data in trace
13675        /// file and pass it to the reporter class over a pipe instead of passing
13676        /// the file descriptor directly.
13677        ///
13678        /// This flag is needed because the Android test framework does not
13679        /// currently support priv-app helper apps (in terms of SELinux) and we
13680        /// really don't want to add an allow rule for untrusted_app to receive
13681        /// trace fds.
13682        ///
13683        /// Because of this, we instead will direct the framework to create a new
13684        /// pipe and pass this to the reporter process instead. As the pipe is
13685        /// created by the framework, we won't have any problems with SELinux
13686        /// (system_server is already allowed to pass pipe fds, even
13687        /// to untrusted apps).
13688        ///
13689        /// As the name suggests this option *MUST* only be used for testing.
13690        /// Note that the framework will reject (and drop) files which are too
13691        /// large both for simplicity and to be minimize the amount of data we
13692        /// pass to a non-priv app (note that the framework will still check
13693        /// manifest permissions even though SELinux permissions are worked around).
13694        #[prost(bool, optional, tag = "4")]
13695        pub use_pipe_in_framework_for_testing: ::core::option::Option<bool>,
13696    }
13697    /// If set, delays the start of tracing by a random duration. The duration is
13698    /// chosen from a uniform distribution between the specified minimum and
13699    /// maximum.
13700    /// Note: this delay is implemented by perfetto_cmd *not* by traced so will
13701    /// not work if you communicate with traced directly over the consumer API.
13702    /// Introduced in Android T.
13703    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13704    pub struct CmdTraceStartDelay {
13705        #[prost(uint32, optional, tag = "1")]
13706        pub min_delay_ms: ::core::option::Option<u32>,
13707        #[prost(uint32, optional, tag = "2")]
13708        pub max_delay_ms: ::core::option::Option<u32>,
13709    }
13710    /// When non-empty, ensures that for a each semaphore named `name at most
13711    /// `max_other_session_count`` *other* sessions (whose value is taken of the
13712    /// minimum of all values specified by this config or any already-running
13713    /// session) can be be running.
13714    ///
13715    /// If a semaphore "acquisition" fails, EnableTracing will return an error
13716    /// and the tracing session will not be started (or elgible to start in
13717    /// the case of deferred sessions).
13718    ///
13719    /// This is easiest to explain with an example. Suppose the tracing service has
13720    /// the following active tracing sessions:
13721    ///    S1 = [{name=foo, max_other_session_count=2},
13722    ///          {name=bar, max_other_session_count=0}]
13723    ///    S2 = [{name=foo, max_other_session_count=1},
13724    ///          {name=baz, max_other_session_count=1}]
13725    ///
13726    /// Then, for a new session, the following would be the expected behaviour of
13727    /// EnableSession given the state of `session_semaphores`.
13728    ///    Q: session_semaphores = \[\]
13729    ///    A: Allowed because it does not specify any semaphores. Will be allowed
13730    ///       no matter the state of any other tracing session.
13731    ///    Q: session_semaphores = \[{name=baz, max_other_session_count=1}\]
13732    ///    A: Allowed because both S2 and this config specify
13733    ///       max_other_session_count=1 for baz.
13734    ///    Q: session_semaphores = \[{name=foo, max_other_session_count=3}\]
13735    ///    A: Denied because S2 specified max_other_session_count=1 for foo and S1
13736    ///       takes that slot.
13737    ///    Q: session_semaphores = \[{name=bar, max_other_session_count=0}\]
13738    ///    A: Denied because S1 takes the the slot specified by both S1 and
13739    ///       this config.
13740    ///
13741    /// Introduced in 24Q3 (Android V).
13742    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13743    pub struct SessionSemaphore {
13744        /// The name of the semaphore. Acts as a unique identifier across all
13745        /// tracing sessions (including the one being started).
13746        #[prost(string, optional, tag = "1")]
13747        pub name: ::core::option::Option<::prost::alloc::string::String>,
13748        /// The maximum number of *other* sesssions which specify the same semaphore
13749        /// which can be active. The minimum of this value across all tracing
13750        /// sessions and the value specified by the config is used when deciding
13751        /// whether the tracing session can be started.
13752        #[prost(uint64, optional, tag = "2")]
13753        pub max_other_session_count: ::core::option::Option<u64>,
13754    }
13755    #[derive(
13756        Clone,
13757        Copy,
13758        Debug,
13759        PartialEq,
13760        Eq,
13761        Hash,
13762        PartialOrd,
13763        Ord,
13764        ::prost::Enumeration
13765    )]
13766    #[repr(i32)]
13767    pub enum LockdownModeOperation {
13768        LockdownUnchanged = 0,
13769        LockdownClear = 1,
13770        LockdownSet = 2,
13771    }
13772    impl LockdownModeOperation {
13773        /// String value of the enum field names used in the ProtoBuf definition.
13774        ///
13775        /// The values are not transformed in any way and thus are considered stable
13776        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13777        pub fn as_str_name(&self) -> &'static str {
13778            match self {
13779                Self::LockdownUnchanged => "LOCKDOWN_UNCHANGED",
13780                Self::LockdownClear => "LOCKDOWN_CLEAR",
13781                Self::LockdownSet => "LOCKDOWN_SET",
13782            }
13783        }
13784        /// Creates an enum from field names used in the ProtoBuf definition.
13785        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13786            match value {
13787                "LOCKDOWN_UNCHANGED" => Some(Self::LockdownUnchanged),
13788                "LOCKDOWN_CLEAR" => Some(Self::LockdownClear),
13789                "LOCKDOWN_SET" => Some(Self::LockdownSet),
13790                _ => None,
13791            }
13792        }
13793    }
13794    /// Deprecated: use |compression| (CompressionConfig) instead. Legacy selector
13795    /// that only ever selects deflate. Kept for backwards compatibility with
13796    /// Perfetto <= v57, whose services predate |compression|. Best effort.
13797    #[derive(
13798        Clone,
13799        Copy,
13800        Debug,
13801        PartialEq,
13802        Eq,
13803        Hash,
13804        PartialOrd,
13805        Ord,
13806        ::prost::Enumeration
13807    )]
13808    #[repr(i32)]
13809    pub enum CompressionType {
13810        Unspecified = 0,
13811        Deflate = 1,
13812    }
13813    impl CompressionType {
13814        /// String value of the enum field names used in the ProtoBuf definition.
13815        ///
13816        /// The values are not transformed in any way and thus are considered stable
13817        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13818        pub fn as_str_name(&self) -> &'static str {
13819            match self {
13820                Self::Unspecified => "COMPRESSION_TYPE_UNSPECIFIED",
13821                Self::Deflate => "COMPRESSION_TYPE_DEFLATE",
13822            }
13823        }
13824        /// Creates an enum from field names used in the ProtoBuf definition.
13825        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13826            match value {
13827                "COMPRESSION_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
13828                "COMPRESSION_TYPE_DEFLATE" => Some(Self::Deflate),
13829                _ => None,
13830            }
13831        }
13832    }
13833    #[derive(
13834        Clone,
13835        Copy,
13836        Debug,
13837        PartialEq,
13838        Eq,
13839        Hash,
13840        PartialOrd,
13841        Ord,
13842        ::prost::Enumeration
13843    )]
13844    #[repr(i32)]
13845    pub enum StatsdLogging {
13846        Unspecified = 0,
13847        Enabled = 1,
13848        Disabled = 2,
13849    }
13850    impl StatsdLogging {
13851        /// String value of the enum field names used in the ProtoBuf definition.
13852        ///
13853        /// The values are not transformed in any way and thus are considered stable
13854        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13855        pub fn as_str_name(&self) -> &'static str {
13856            match self {
13857                Self::Unspecified => "STATSD_LOGGING_UNSPECIFIED",
13858                Self::Enabled => "STATSD_LOGGING_ENABLED",
13859                Self::Disabled => "STATSD_LOGGING_DISABLED",
13860            }
13861        }
13862        /// Creates an enum from field names used in the ProtoBuf definition.
13863        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13864            match value {
13865                "STATSD_LOGGING_UNSPECIFIED" => Some(Self::Unspecified),
13866                "STATSD_LOGGING_ENABLED" => Some(Self::Enabled),
13867                "STATSD_LOGGING_DISABLED" => Some(Self::Disabled),
13868                _ => None,
13869            }
13870        }
13871    }
13872    #[derive(
13873        Clone,
13874        Copy,
13875        Debug,
13876        PartialEq,
13877        Eq,
13878        Hash,
13879        PartialOrd,
13880        Ord,
13881        ::prost::Enumeration
13882    )]
13883    #[repr(i32)]
13884    pub enum WriteFlushMode {
13885        /// Same as WRITE_FLUSH_AUTO.
13886        WriteFlushUnspecified = 0,
13887        /// Default mode. The service automatically determines the flush frequency
13888        /// to balance performance and data freshness:
13889        /// 1) If file_write_period_ms <= 5s (kDefaultWriteIntoFilePeriodMs):
13890        ///     Flushes are NOT issued on every write. Instead, a periodic flush is
13891        ///     issued every 5s.
13892        /// 2) If file_write_period_ms > 5s:
13893        ///     A flush is issued before every periodic write into the file.
13894        WriteFlushAuto = 1,
13895        /// The following modes are intended for advanced usage and not recommended
13896        /// for general use.
13897        ///
13898        /// Do not flush buffers before periodic writes into the file.
13899        /// Use this mode if you want to minimize the performance impact of flushes
13900        /// and can tolerate potentially missing the most recent data in the trace
13901        /// file until the end of the session or an explicit flush.
13902        /// When this mode is selected, |flush_period_ms| is respected.
13903        WriteFlushDisabled = 2,
13904        /// Issue a flush before every periodic write into the file.
13905        /// This ensures that each write into the file contains the most up-to-date
13906        /// data from all data sources, but may have a higher performance overhead.
13907        WriteFlushEnabled = 3,
13908    }
13909    impl WriteFlushMode {
13910        /// String value of the enum field names used in the ProtoBuf definition.
13911        ///
13912        /// The values are not transformed in any way and thus are considered stable
13913        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13914        pub fn as_str_name(&self) -> &'static str {
13915            match self {
13916                Self::WriteFlushUnspecified => "WRITE_FLUSH_UNSPECIFIED",
13917                Self::WriteFlushAuto => "WRITE_FLUSH_AUTO",
13918                Self::WriteFlushDisabled => "WRITE_FLUSH_DISABLED",
13919                Self::WriteFlushEnabled => "WRITE_FLUSH_ENABLED",
13920            }
13921        }
13922        /// Creates an enum from field names used in the ProtoBuf definition.
13923        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13924            match value {
13925                "WRITE_FLUSH_UNSPECIFIED" => Some(Self::WriteFlushUnspecified),
13926                "WRITE_FLUSH_AUTO" => Some(Self::WriteFlushAuto),
13927                "WRITE_FLUSH_DISABLED" => Some(Self::WriteFlushDisabled),
13928                "WRITE_FLUSH_ENABLED" => Some(Self::WriteFlushEnabled),
13929                _ => None,
13930            }
13931        }
13932    }
13933    #[derive(
13934        Clone,
13935        Copy,
13936        Debug,
13937        PartialEq,
13938        Eq,
13939        Hash,
13940        PartialOrd,
13941        Ord,
13942        ::prost::Enumeration
13943    )]
13944    #[repr(i32)]
13945    pub enum FFlushMode {
13946        /// Default: same as FFLUSH_DISABLED.
13947        FflushUnspecified = 0,
13948        /// Do not explicitly sync the file to storage after each write pass.
13949        FflushDisabled = 1,
13950        /// Explicitly sync the file to storage (via fdatasync) after each periodic
13951        /// write pass. Increases data durability at the cost of higher disk I/O
13952        /// overhead.
13953        FflushEnabled = 2,
13954    }
13955    impl FFlushMode {
13956        /// String value of the enum field names used in the ProtoBuf definition.
13957        ///
13958        /// The values are not transformed in any way and thus are considered stable
13959        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13960        pub fn as_str_name(&self) -> &'static str {
13961            match self {
13962                Self::FflushUnspecified => "FFLUSH_UNSPECIFIED",
13963                Self::FflushDisabled => "FFLUSH_DISABLED",
13964                Self::FflushEnabled => "FFLUSH_ENABLED",
13965            }
13966        }
13967        /// Creates an enum from field names used in the ProtoBuf definition.
13968        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13969            match value {
13970                "FFLUSH_UNSPECIFIED" => Some(Self::FflushUnspecified),
13971                "FFLUSH_DISABLED" => Some(Self::FflushDisabled),
13972                "FFLUSH_ENABLED" => Some(Self::FflushEnabled),
13973                _ => None,
13974            }
13975        }
13976    }
13977}
13978/// Arguments for rpc EnableTracing().
13979#[derive(Clone, PartialEq, ::prost::Message)]
13980pub struct EnableTracingRequest {
13981    #[prost(message, optional, tag = "1")]
13982    pub trace_config: ::core::option::Option<TraceConfig>,
13983    /// Introduced in Android Q. This is used for re-attaching to the end-of-trace
13984    /// EnableTracingResponse notification after a Detach+Attach request.
13985    /// When this flag is set the |trace_config| is ignored and no method is called
13986    /// on the tracing service.
13987    #[prost(bool, optional, tag = "2")]
13988    pub attach_notification_only: ::core::option::Option<bool>,
13989}
13990#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13991pub struct EnableTracingResponse {
13992    /// If present and non-empty tracing was disabled because of an error.
13993    /// Introduced in Android S.
13994    #[prost(string, optional, tag = "3")]
13995    pub error: ::core::option::Option<::prost::alloc::string::String>,
13996    #[prost(oneof = "enable_tracing_response::State", tags = "1")]
13997    pub state: ::core::option::Option<enable_tracing_response::State>,
13998}
13999/// Nested message and enum types in `EnableTracingResponse`.
14000pub mod enable_tracing_response {
14001    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
14002    pub enum State {
14003        #[prost(bool, tag = "1")]
14004        Disabled(bool),
14005    }
14006}
14007/// Arguments for rpc StartTracing().
14008#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14009pub struct StartTracingRequest {}
14010#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14011pub struct StartTracingResponse {}
14012/// Arguments for rpc ChangeTraceConfig().
14013#[derive(Clone, PartialEq, ::prost::Message)]
14014pub struct ChangeTraceConfigRequest {
14015    #[prost(message, optional, tag = "1")]
14016    pub trace_config: ::core::option::Option<TraceConfig>,
14017}
14018#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14019pub struct ChangeTraceConfigResponse {}
14020/// Arguments for rpc DisableTracing().
14021///
14022/// TODO: not supported yet, selectively disable only some data sources.
14023/// repeated string data_source_name;
14024#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14025pub struct DisableTracingRequest {}
14026#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14027pub struct DisableTracingResponse {}
14028/// Arguments for rpc ReadBuffers().
14029///
14030/// The |id|s of the buffer, as passed to CreateBuffers().
14031/// TODO: repeated uint32 buffer_ids = 1;
14032#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14033pub struct ReadBuffersRequest {}
14034/// TODO: uint32 buffer_id = 1;
14035#[derive(Clone, PartialEq, ::prost::Message)]
14036pub struct ReadBuffersResponse {
14037    #[prost(message, repeated, tag = "2")]
14038    pub slices: ::prost::alloc::vec::Vec<read_buffers_response::Slice>,
14039}
14040/// Nested message and enum types in `ReadBuffersResponse`.
14041pub mod read_buffers_response {
14042    /// Each streaming reply returns one or more slices for one or more trace
14043    /// packets, or even just a portion of it (if it's too big to fit within one
14044    /// IPC). The returned slices are ordered and contiguous: packets' slices are
14045    /// not interleaved and slices are sent only once all slices for a packet are
14046    /// available (i.e. the consumer will never see any gap).
14047    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14048    pub struct Slice {
14049        #[prost(bytes = "vec", optional, tag = "1")]
14050        pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
14051        /// When true, this is the last slice for the packet. A ReadBufferResponse
14052        /// might have no slices marked as |last_slice_for_packet|==true, in the case
14053        /// of a very large packet that gets chunked into several IPCs (in which case
14054        /// only the last IPC for the packet will have this flag set).
14055        #[prost(bool, optional, tag = "2")]
14056        pub last_slice_for_packet: ::core::option::Option<bool>,
14057    }
14058}
14059/// Arguments for rpc FreeBuffers().
14060#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14061pub struct FreeBuffersRequest {
14062    /// The |id|s of the buffer, as passed to CreateBuffers().
14063    #[prost(uint32, repeated, packed = "false", tag = "1")]
14064    pub buffer_ids: ::prost::alloc::vec::Vec<u32>,
14065}
14066#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14067pub struct FreeBuffersResponse {}
14068/// Arguments for rpc Flush().
14069#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14070pub struct FlushRequest {
14071    #[prost(uint32, optional, tag = "1")]
14072    pub timeout_ms: ::core::option::Option<u32>,
14073    /// More details such as flush reason and originator. Introduced in v38 / V.
14074    /// See FlushFlags in include/perfetto/ext/tracing/core/flush_flags.h.
14075    #[prost(uint64, optional, tag = "2")]
14076    pub flags: ::core::option::Option<u64>,
14077}
14078#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14079pub struct FlushResponse {}
14080/// Arguments for rpc Detach
14081#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14082pub struct DetachRequest {
14083    #[prost(string, optional, tag = "1")]
14084    pub key: ::core::option::Option<::prost::alloc::string::String>,
14085}
14086#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14087pub struct DetachResponse {}
14088/// Arguments for rpc Attach.
14089#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14090pub struct AttachRequest {
14091    #[prost(string, optional, tag = "1")]
14092    pub key: ::core::option::Option<::prost::alloc::string::String>,
14093}
14094#[derive(Clone, PartialEq, ::prost::Message)]
14095pub struct AttachResponse {
14096    #[prost(message, optional, tag = "1")]
14097    pub trace_config: ::core::option::Option<TraceConfig>,
14098}
14099/// Arguments for rpc GetTraceStats.
14100#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14101pub struct GetTraceStatsRequest {}
14102#[derive(Clone, PartialEq, ::prost::Message)]
14103pub struct GetTraceStatsResponse {
14104    #[prost(message, optional, tag = "1")]
14105    pub trace_stats: ::core::option::Option<TraceStats>,
14106}
14107/// Arguments for rpc ObserveEvents.
14108///
14109/// To stop observing events of a certain type, send a request with the remaining
14110/// types. To stop observing completely, send an empty request.
14111#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14112pub struct ObserveEventsRequest {
14113    #[prost(
14114        enumeration = "observable_events::Type",
14115        repeated,
14116        packed = "false",
14117        tag = "1"
14118    )]
14119    pub events_to_observe: ::prost::alloc::vec::Vec<i32>,
14120}
14121#[derive(Clone, PartialEq, ::prost::Message)]
14122pub struct ObserveEventsResponse {
14123    #[prost(message, optional, tag = "1")]
14124    pub events: ::core::option::Option<ObservableEvents>,
14125}
14126/// Arguments for rpc QueryServiceState.
14127#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14128pub struct QueryServiceStateRequest {
14129    /// If set, only the TracingServiceState.tracing_sessions is filled. Producers
14130    /// and data sources are omitted.
14131    #[prost(bool, optional, tag = "1")]
14132    pub sessions_only: ::core::option::Option<bool>,
14133}
14134#[derive(Clone, PartialEq, ::prost::Message)]
14135pub struct QueryServiceStateResponse {
14136    /// In order to avoid hitting IPC message size limitations, the service will
14137    /// return >1 replies for each query, chunking the TracingServiceState. The
14138    /// receiver is expected to merge replies together and parse that when the
14139    /// last reply is received (i.e. when IPC's |has_more| == false).
14140    #[prost(message, optional, tag = "1")]
14141    pub service_state: ::core::option::Option<TracingServiceState>,
14142}
14143/// Arguments for rpc QueryCapabilities.
14144#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14145pub struct QueryCapabilitiesRequest {}
14146#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14147pub struct QueryCapabilitiesResponse {
14148    #[prost(message, optional, tag = "1")]
14149    pub capabilities: ::core::option::Option<TracingServiceCapabilities>,
14150}
14151/// Arguments for rpc SaveTraceForBugreport.
14152#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14153pub struct SaveTraceForBugreportRequest {}
14154/// This response is sent only after the trace was saved into file (if succeeded)
14155/// or something failed.
14156#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14157pub struct SaveTraceForBugreportResponse {
14158    /// If true, an eligible the trace was saved into a known location (on Android
14159    /// /data/misc/perfetto-traces, see GetBugreportTracePath()).
14160    /// If false no trace with bugreport_score > 0 was found or an error occurred.
14161    /// see |msg| in that case for details about the failure.
14162    #[prost(bool, optional, tag = "1")]
14163    pub success: ::core::option::Option<bool>,
14164    #[prost(string, optional, tag = "2")]
14165    pub msg: ::core::option::Option<::prost::alloc::string::String>,
14166}
14167/// Arguments for rpc CloneSession.
14168/// Consumer may also send a file descriptor with this rpc message. If the
14169/// descriptor is valid, and the session that should be cloned is
14170/// 'write_into_file' session, traced writes the cloned session content to that
14171/// file descriptor, instead of writing it in the cloned session buffers.
14172#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14173pub struct CloneSessionRequest {
14174    /// If set, the trace filter will not have effect on the cloned session.
14175    /// Used for bugreports.
14176    #[prost(bool, optional, tag = "2")]
14177    pub skip_trace_filter: ::core::option::Option<bool>,
14178    /// If set, affects the generation of the FlushFlags::CloneTarget to be set
14179    /// to kBugreport when requesting the flush to the producers.
14180    #[prost(bool, optional, tag = "3")]
14181    pub for_bugreport: ::core::option::Option<bool>,
14182    /// If set, this is stored in the trace as name of the trigger that caused the
14183    /// clone.
14184    #[prost(string, optional, tag = "5")]
14185    pub clone_trigger_name: ::core::option::Option<::prost::alloc::string::String>,
14186    /// If set, this is stored in the trace as name of the producer that triggered
14187    /// the clone.
14188    #[prost(string, optional, tag = "6")]
14189    pub clone_trigger_producer_name: ::core::option::Option<
14190        ::prost::alloc::string::String,
14191    >,
14192    /// If set, this is stored in the trace as uid of the producer that triggered
14193    /// the clone.
14194    #[prost(int32, optional, tag = "7")]
14195    pub clone_trigger_trusted_producer_uid: ::core::option::Option<i32>,
14196    /// If set, this is stored in the trace as timestamp of the trigger that caused
14197    /// the clone.
14198    #[prost(uint64, optional, tag = "8")]
14199    pub clone_trigger_boot_time_ns: ::core::option::Option<u64>,
14200    /// If set, this is stored in the trace as the configured delay of the trigger
14201    /// that caused the clone.
14202    #[prost(uint64, optional, tag = "9")]
14203    pub clone_trigger_delay_ms: ::core::option::Option<u64>,
14204    #[prost(oneof = "clone_session_request::Selector", tags = "1, 4")]
14205    pub selector: ::core::option::Option<clone_session_request::Selector>,
14206}
14207/// Nested message and enum types in `CloneSessionRequest`.
14208pub mod clone_session_request {
14209    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
14210    pub enum Selector {
14211        /// The session ID to clone. If session_id == kBugreportSessionId (0xff...ff)
14212        /// the session with the highest bugreport score is cloned (if any exists).
14213        #[prost(uint64, tag = "1")]
14214        SessionId(u64),
14215        /// The unique_session_name of the tracing session to clone. Tracing sessions
14216        /// that are clones of other tracing sessions are ignored.
14217        #[prost(string, tag = "4")]
14218        UniqueSessionName(::prost::alloc::string::String),
14219    }
14220}
14221#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14222pub struct CloneSessionResponse {
14223    /// If true, the clone was successful. If false it failed and |error| contains
14224    /// the details about the failure.
14225    #[prost(bool, optional, tag = "1")]
14226    pub success: ::core::option::Option<bool>,
14227    #[prost(string, optional, tag = "2")]
14228    pub error: ::core::option::Option<::prost::alloc::string::String>,
14229    /// The UUID of the cloned session.
14230    #[prost(int64, optional, tag = "3")]
14231    pub uuid_msb: ::core::option::Option<i64>,
14232    #[prost(int64, optional, tag = "4")]
14233    pub uuid_lsb: ::core::option::Option<i64>,
14234    /// TracingService sets this when the cloned session was write_into_file=true.
14235    /// The consumer cannot know upfront if a session is WIF or not.
14236    /// Introduced in v53.
14237    #[prost(bool, optional, tag = "5")]
14238    pub was_write_into_file: ::core::option::Option<bool>,
14239}
14240#[derive(Clone, PartialEq, ::prost::Message)]
14241pub struct CommitDataRequest {
14242    #[prost(message, repeated, tag = "1")]
14243    pub chunks_to_move: ::prost::alloc::vec::Vec<commit_data_request::ChunksToMove>,
14244    #[prost(message, repeated, tag = "2")]
14245    pub chunks_to_patch: ::prost::alloc::vec::Vec<commit_data_request::ChunkToPatch>,
14246    /// Optional. If this commit is made in response to a Flush(id) request coming
14247    /// from the service, copy back the id of the request so the service can tell
14248    /// when the flush happened.
14249    #[prost(uint64, optional, tag = "3")]
14250    pub flush_request_id: ::core::option::Option<u64>,
14251}
14252/// Nested message and enum types in `CommitDataRequest`.
14253pub mod commit_data_request {
14254    /// When |chunks_to_move| is present, the producer is requesting the service to
14255    /// move the given chunks form the share memory buffer into the central
14256    /// trace buffer(s).
14257    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14258    pub struct ChunksToMove {
14259        /// The 0-based index of the page in the Shared Memory Buffer.
14260        #[prost(uint32, optional, tag = "1")]
14261        pub page: ::core::option::Option<u32>,
14262        /// The 0-based chunk index \[0..13\] within the page.
14263        #[prost(uint32, optional, tag = "2")]
14264        pub chunk: ::core::option::Option<u32>,
14265        /// The target buffer it should be moved onto. The service will check that
14266        /// the producer is allowed to write into that buffer before the move.
14267        #[prost(uint32, optional, tag = "3")]
14268        pub target_buffer: ::core::option::Option<u32>,
14269        /// Sending the chunk data over the wire. Used for transports that don't
14270        /// support shared memory (e.g. vsock or TCP sockets). In the default case
14271        /// (tracing protocol over a Unix socket), this field is not used and tracing
14272        /// data is stored in the shmem buffer and referenced by the fields above.
14273        /// See |use_shemem_emulation| in the codebase for reference.
14274        #[prost(bytes = "vec", optional, tag = "4")]
14275        pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
14276        /// Set to true when scraping data in shmem emulation (aka commits-over-ipc)
14277        /// AND the chunk was still in kChunkBeingWritten. This is necessary because
14278        /// in emulation mode, the service cannot tell whether this is a complete
14279        /// chunk coming from a regular TraceWriter commit, or a scraped one.
14280        /// This field is only set when `data` is present. It is never set (and is
14281        /// ignored by the service) for the regular case of doing commits over
14282        /// shmem. Introduced in Perfetto v54.
14283        /// See /rfcs/0010-smb-scraping-remote-producers.md .
14284        #[prost(bool, optional, tag = "5")]
14285        pub chunk_incomplete: ::core::option::Option<bool>,
14286    }
14287    /// Used to patch chunks that have already been sent to the service. The chunk
14288    /// might not be in the shared memory buffer anymore as it could have been
14289    /// moved by the service in response to a prior CommitDataRequest.
14290    /// It is perfectly valid to patch a chunk that is being notified in the same
14291    /// message (a chunk can show up both in the |changed_pages| and |patches|
14292    /// field within the same CommitDataRequest message).
14293    /// In other words, |chunks_to_patch| is always processed after
14294    /// |chunks_to_move|.
14295    #[derive(Clone, PartialEq, ::prost::Message)]
14296    pub struct ChunkToPatch {
14297        #[prost(uint32, optional, tag = "1")]
14298        pub target_buffer: ::core::option::Option<u32>,
14299        /// {WriterID, ChunkID} uniquely identify a chunk for the current producer.
14300        #[prost(uint32, optional, tag = "2")]
14301        pub writer_id: ::core::option::Option<u32>,
14302        #[prost(uint32, optional, tag = "3")]
14303        pub chunk_id: ::core::option::Option<u32>,
14304        /// List of patches to apply to the given chunk.
14305        #[prost(message, repeated, tag = "4")]
14306        pub patches: ::prost::alloc::vec::Vec<chunk_to_patch::Patch>,
14307        /// When true more patches will follow in future requests and the chunk
14308        /// should be still considered as patch-pending. When false the chunk becomes
14309        /// eligible for reading.
14310        #[prost(bool, optional, tag = "5")]
14311        pub has_more_patches: ::core::option::Option<bool>,
14312    }
14313    /// Nested message and enum types in `ChunkToPatch`.
14314    pub mod chunk_to_patch {
14315        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14316        pub struct Patch {
14317            /// Offset in bytes from the start of the chunk payload. e.g., offset == 0
14318            /// corresponds to the first byte of the first packet (or fragment) in the
14319            /// chunk.
14320            #[prost(uint32, optional, tag = "1")]
14321            pub offset: ::core::option::Option<u32>,
14322            /// Bytes to patch at the given offset.
14323            #[prost(bytes = "vec", optional, tag = "2")]
14324            pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
14325        }
14326    }
14327}
14328/// Arguments for rpc InitializeConnection().
14329#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14330pub struct InitializeConnectionRequest {
14331    /// Optional. Provides a hint to the tracing service about the suggested size
14332    /// of the shared memory buffer pages. The service is not required to respect
14333    /// this if it has already another value in the configuration or if the hint
14334    /// is unreasonably large. Must be an integer multiple of 4096. See tradeoff
14335    /// considerations in shared_memory_abi.h.
14336    #[prost(uint32, optional, tag = "1")]
14337    pub shared_memory_page_size_hint_bytes: ::core::option::Option<u32>,
14338    /// Optional. Provides a hint to the tracing service about the suggested size
14339    /// of the shared memory buffer. The service is not required to respect this
14340    /// and might return a smaller buffer.
14341    #[prost(uint32, optional, tag = "2")]
14342    pub shared_memory_size_hint_bytes: ::core::option::Option<u32>,
14343    /// Required to match the producer config set by the service to the correct
14344    /// producer.
14345    #[prost(string, optional, tag = "3")]
14346    pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
14347    /// If provided, overrides the service's SMB scraping setting for the producer.
14348    #[prost(
14349        enumeration = "initialize_connection_request::ProducerSmbScrapingMode",
14350        optional,
14351        tag = "4"
14352    )]
14353    pub smb_scraping_mode: ::core::option::Option<i32>,
14354    /// Since Android R, this request can also transport an FD for the producer's
14355    /// shared memory buffer, if allocated by the producer (e.g. for startup
14356    /// tracing). In this case, |shared_memory_page_size_hint_bytes| is a required
14357    /// field, and describes the SMB's page size. Note that the service may not
14358    /// accept this SMB (e.g. because it is too old or its size / page size are
14359    /// invalid) and instead allocate a new SMB which is provided in the
14360    /// SetupTracing response. See TracingService::ConnectProducer() and
14361    /// |using_shmem_provided_by_producer| in InitializeConnectionResponse.
14362    #[prost(bool, optional, tag = "6")]
14363    pub producer_provided_shmem: ::core::option::Option<bool>,
14364    /// The version of the client library used by the producer.
14365    /// This is a human readable string with and its format varies depending on
14366    /// the build system that is used to build the code and the repo (standalone
14367    /// vs AOSP). This is intended for human debugging only.
14368    #[prost(string, optional, tag = "8")]
14369    pub sdk_version: ::core::option::Option<::prost::alloc::string::String>,
14370    /// On Windows, when producer_provided_shmem = true, the client creates a named
14371    /// SHM region and passes the name (an unguessable token) back to the service.
14372    /// Introduced in v13.
14373    #[prost(string, optional, tag = "7")]
14374    pub shm_key_windows: ::core::option::Option<::prost::alloc::string::String>,
14375    /// Bitmask of the ProtocolAbiVersion values that the producer supports.
14376    /// The service returns those it supports too, and ignores unknown bits.
14377    /// 0 or absent, as from an old producer, means v1 only.
14378    /// Introduced in v59.
14379    #[prost(uint32, optional, tag = "9")]
14380    pub supported_protocol_abi_versions: ::core::option::Option<u32>,
14381}
14382/// Nested message and enum types in `InitializeConnectionRequest`.
14383pub mod initialize_connection_request {
14384    #[derive(
14385        Clone,
14386        Copy,
14387        Debug,
14388        PartialEq,
14389        Eq,
14390        Hash,
14391        PartialOrd,
14392        Ord,
14393        ::prost::Enumeration
14394    )]
14395    #[repr(i32)]
14396    pub enum ProducerSmbScrapingMode {
14397        /// Use the service's default setting for SMB scraping.
14398        SmbScrapingUnspecified = 0,
14399        /// Enable scraping of uncommitted chunks from the producer's shared memory
14400        /// buffer.
14401        SmbScrapingEnabled = 1,
14402        /// Disable scraping of uncommitted chunks from the producer's shared memory
14403        /// buffer.
14404        SmbScrapingDisabled = 2,
14405    }
14406    impl ProducerSmbScrapingMode {
14407        /// String value of the enum field names used in the ProtoBuf definition.
14408        ///
14409        /// The values are not transformed in any way and thus are considered stable
14410        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
14411        pub fn as_str_name(&self) -> &'static str {
14412            match self {
14413                Self::SmbScrapingUnspecified => "SMB_SCRAPING_UNSPECIFIED",
14414                Self::SmbScrapingEnabled => "SMB_SCRAPING_ENABLED",
14415                Self::SmbScrapingDisabled => "SMB_SCRAPING_DISABLED",
14416            }
14417        }
14418        /// Creates an enum from field names used in the ProtoBuf definition.
14419        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
14420            match value {
14421                "SMB_SCRAPING_UNSPECIFIED" => Some(Self::SmbScrapingUnspecified),
14422                "SMB_SCRAPING_ENABLED" => Some(Self::SmbScrapingEnabled),
14423                "SMB_SCRAPING_DISABLED" => Some(Self::SmbScrapingDisabled),
14424                _ => None,
14425            }
14426        }
14427    }
14428}
14429#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14430pub struct InitializeConnectionResponse {
14431    /// Indicates whether the service accepted the SMB provided by the producer in
14432    /// InitializeConnectionRequest (if any). If false, the shared memory buffer FD
14433    /// will provided by the service via the SetupTracing async command.
14434    #[prost(bool, optional, tag = "1")]
14435    pub using_shmem_provided_by_producer: ::core::option::Option<bool>,
14436    /// Indicates to the producer that the service allows direct SMB patching of
14437    /// chunks that have not yet been committed to it.
14438    /// This field has been introduced in Android S.
14439    #[prost(bool, optional, tag = "2")]
14440    pub direct_smb_patching_supported: ::core::option::Option<bool>,
14441    /// Indicates whether the service would like to use SMB emulation for the
14442    /// connection, and request the client to send chunk data over the socket e.g.
14443    /// for remote connection from a VM guest.
14444    #[prost(bool, optional, tag = "3")]
14445    pub use_shmem_emulation: ::core::option::Option<bool>,
14446    /// Bitmask of the versions in supported_protocol_abi_versions that the
14447    /// service also supports on this connection.
14448    /// - No common version: the service rejects InitializeConnection.
14449    /// - 0 or absent, as from an old service: v1 only, not an empty common set.
14450    /// - A version that the producer did not offer: the producer disconnects.
14451    ///    This includes an old service when the producer did not offer v1.
14452    /// The mask stays fixed for the connection. It does not select a writer.
14453    /// Introduced in v59.
14454    #[prost(uint32, optional, tag = "4")]
14455    pub protocol_abi_versions: ::core::option::Option<u32>,
14456}
14457/// Arguments for rpc AttachV2RingBuffer().
14458/// - The IPC layer sends the ring buffer's file descriptor, a sealed memfd,
14459///    with this request. Without it, the service rejects the request.
14460/// - The service takes the ring buffer size from the memfd. The request has
14461///    no size field.
14462#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14463pub struct AttachV2RingBufferRequest {
14464    /// Bytes per chunk in the shared memory. The service rejects the ring buffer
14465    /// if the size and this value give no valid layout.
14466    #[prost(uint32, optional, tag = "1")]
14467    pub chunk_size_bytes: ::core::option::Option<u32>,
14468}
14469/// The service sends it if it attached the ring buffer, and rejects the
14470/// request otherwise.
14471#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14472pub struct AttachV2RingBufferResponse {}
14473/// Arguments for rpc DrainV2RingBuffer().
14474#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14475pub struct DrainV2RingBufferRequest {}
14476/// The IPC schema requires a response type. The service never sends it.
14477#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14478pub struct DrainV2RingBufferResponse {}
14479/// Arguments for rpc RegisterDataSource().
14480#[derive(Clone, PartialEq, ::prost::Message)]
14481pub struct RegisterDataSourceRequest {
14482    #[prost(message, optional, tag = "1")]
14483    pub data_source_descriptor: ::core::option::Option<DataSourceDescriptor>,
14484}
14485#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14486pub struct RegisterDataSourceResponse {
14487    /// Only set in case of errors, when |data_source_id| == 0.
14488    #[prost(string, optional, tag = "1")]
14489    pub error: ::core::option::Option<::prost::alloc::string::String>,
14490}
14491/// Arguments for rpc UpdateDataSource().
14492#[derive(Clone, PartialEq, ::prost::Message)]
14493pub struct UpdateDataSourceRequest {
14494    /// The new data_source_descriptor.{id, name} must match {id, name} of a
14495    /// data source previously registered via RegisterDataSource().
14496    #[prost(message, optional, tag = "1")]
14497    pub data_source_descriptor: ::core::option::Option<DataSourceDescriptor>,
14498}
14499#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14500pub struct UpdateDataSourceResponse {}
14501/// Arguments for rpc UnregisterDataSource().
14502#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14503pub struct UnregisterDataSourceRequest {
14504    /// The name of the data source to unregister, as previously passed in
14505    /// |RegisterDataSourceRequest.name|.
14506    #[prost(string, optional, tag = "1")]
14507    pub data_source_name: ::core::option::Option<::prost::alloc::string::String>,
14508}
14509#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14510pub struct UnregisterDataSourceResponse {}
14511/// Arguments for rpc RegisterTraceWriter().
14512#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14513pub struct RegisterTraceWriterRequest {
14514    /// The ID of a producer's trace writer.
14515    #[prost(uint32, optional, tag = "1")]
14516    pub trace_writer_id: ::core::option::Option<u32>,
14517    /// The ID of the target buffer that the trace writer commits its chunks to.
14518    #[prost(uint32, optional, tag = "2")]
14519    pub target_buffer: ::core::option::Option<u32>,
14520}
14521#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14522pub struct RegisterTraceWriterResponse {}
14523/// Arguments for rpc UnregisterTraceWriter().
14524#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14525pub struct UnregisterTraceWriterRequest {
14526    /// The ID of a producer's trace writer.
14527    #[prost(uint32, optional, tag = "1")]
14528    pub trace_writer_id: ::core::option::Option<u32>,
14529}
14530#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14531pub struct UnregisterTraceWriterResponse {}
14532/// Arguments for rpc CommitData().
14533/// See commit_data_request.proto for CommitDataRequest. That has its own file
14534/// because it is used also as input to generate C++ classes (xxx.gen.h).
14535#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14536pub struct CommitDataResponse {}
14537/// Arguments for rpc NotifyDataSourceStarted().
14538#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14539pub struct NotifyDataSourceStartedRequest {
14540    /// ID of the data source that has successfully started.
14541    #[prost(uint64, optional, tag = "1")]
14542    pub data_source_id: ::core::option::Option<u64>,
14543}
14544#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14545pub struct NotifyDataSourceStartedResponse {}
14546/// Arguments for rpc NotifyDataSourceStopped().
14547#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14548pub struct NotifyDataSourceStoppedRequest {
14549    /// ID of the data source that has successfully stopped.
14550    #[prost(uint64, optional, tag = "1")]
14551    pub data_source_id: ::core::option::Option<u64>,
14552}
14553#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14554pub struct NotifyDataSourceStoppedResponse {}
14555/// Arguments for rpc ActivateTriggersRequest().
14556#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14557pub struct ActivateTriggersRequest {
14558    #[prost(string, repeated, tag = "1")]
14559    pub trigger_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
14560}
14561#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14562pub struct ActivateTriggersResponse {}
14563/// Arguments for rpc GetAsyncCommand().
14564#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14565pub struct GetAsyncCommandRequest {}
14566#[derive(Clone, PartialEq, ::prost::Message)]
14567pub struct GetAsyncCommandResponse {
14568    /// Next id: 8.
14569    #[prost(oneof = "get_async_command_response::Cmd", tags = "3, 6, 1, 2, 5, 7")]
14570    pub cmd: ::core::option::Option<get_async_command_response::Cmd>,
14571}
14572/// Nested message and enum types in `GetAsyncCommandResponse`.
14573pub mod get_async_command_response {
14574    /// Called after SetupTracing and before StartDataSource.
14575    /// This message was introduced in Android Q.
14576    #[derive(Clone, PartialEq, ::prost::Message)]
14577    pub struct SetupDataSource {
14578        #[prost(uint64, optional, tag = "1")]
14579        pub new_instance_id: ::core::option::Option<u64>,
14580        #[prost(message, optional, tag = "2")]
14581        pub config: ::core::option::Option<super::DataSourceConfig>,
14582    }
14583    #[derive(Clone, PartialEq, ::prost::Message)]
14584    pub struct StartDataSource {
14585        #[prost(uint64, optional, tag = "1")]
14586        pub new_instance_id: ::core::option::Option<u64>,
14587        /// For backwards compat reasons (with Android P), the config passed here
14588        /// is identical to the one passed to SetupDataSource.config.
14589        #[prost(message, optional, tag = "2")]
14590        pub config: ::core::option::Option<super::DataSourceConfig>,
14591    }
14592    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14593    pub struct StopDataSource {
14594        #[prost(uint64, optional, tag = "1")]
14595        pub instance_id: ::core::option::Option<u64>,
14596    }
14597    /// On Android/Linux/Mac this message also transports the file descriptor for
14598    /// the shared memory buffer (not a proto field).
14599    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14600    pub struct SetupTracing {
14601        #[prost(uint32, optional, tag = "1")]
14602        pub shared_buffer_page_size_kb: ::core::option::Option<u32>,
14603        /// On Windows, instead, we pass the name (an unguessable token) of a shared
14604        /// memory region that can be attached by the other process by name.
14605        /// Introduced in v13.
14606        #[prost(string, optional, tag = "2")]
14607        pub shm_key_windows: ::core::option::Option<::prost::alloc::string::String>,
14608    }
14609    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14610    pub struct Flush {
14611        /// The instance id (i.e. StartDataSource.new_instance_id) of the data
14612        /// sources to flush.
14613        #[prost(uint64, repeated, packed = "false", tag = "1")]
14614        pub data_source_ids: ::prost::alloc::vec::Vec<u64>,
14615        /// A monotonic counter generated by the service. The producer is simply
14616        /// expected to copy this value back into the CommitDataRequest, so the
14617        /// service can tell when the data for this flush has been committed.
14618        #[prost(uint64, optional, tag = "2")]
14619        pub request_id: ::core::option::Option<u64>,
14620        /// More details such as flush reason and originator. Introduced in v38 / V.
14621        /// See FlushFlags in include/perfetto/ext/tracing/core/flush_flags.h.
14622        #[prost(uint64, optional, tag = "3")]
14623        pub flags: ::core::option::Option<u64>,
14624    }
14625    /// Instructs the given data sources to stop referring to any trace contents
14626    /// emitted so far. Sent only to active data sources that set
14627    /// |handles_incremental_state_clear| in their DataSourceDescriptor.
14628    ///
14629    /// Added to perfetto tree in May 2019.
14630    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14631    pub struct ClearIncrementalState {
14632        /// The instance id (i.e. StartDataSource.new_instance_id) of the data
14633        /// sources that should clear their incremental state.
14634        #[prost(uint64, repeated, packed = "false", tag = "1")]
14635        pub data_source_ids: ::prost::alloc::vec::Vec<u64>,
14636    }
14637    /// Next id: 8.
14638    #[derive(Clone, PartialEq, ::prost::Oneof)]
14639    pub enum Cmd {
14640        #[prost(message, tag = "3")]
14641        SetupTracing(SetupTracing),
14642        #[prost(message, tag = "6")]
14643        SetupDataSource(SetupDataSource),
14644        #[prost(message, tag = "1")]
14645        StartDataSource(StartDataSource),
14646        #[prost(message, tag = "2")]
14647        StopDataSource(StopDataSource),
14648        /// id == 4 was teardown_tracing, never implemented.
14649        #[prost(message, tag = "5")]
14650        Flush(Flush),
14651        #[prost(message, tag = "7")]
14652        ClearIncrementalState(ClearIncrementalState),
14653    }
14654}
14655/// Arguments for rpc Sync().
14656#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14657pub struct SyncRequest {}
14658#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14659pub struct SyncResponse {}
14660/// A shared memory layout and the operations that send its data to the service.
14661/// The versions are independent: v2 does not imply v1. The producer sends a
14662/// bitmask of its versions in InitializeConnectionRequest. The service returns
14663/// the bitmask of common versions. This exchange does not select a writer for
14664/// an instance.
14665///
14666/// Each value is a single bit, so a uint32 mask holds a set of versions.
14667/// A new version must take the next unused bit: 4, then 8.
14668///
14669/// Keep in sync with ProtocolAbiVersion in
14670/// include/perfetto/ext/tracing/core/tracing_service.h, which describes each
14671/// version in detail.
14672#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
14673#[repr(i32)]
14674pub enum ProtocolAbiVersion {
14675    /// Reserved. Do not advertise this value.
14676    Unspecified = 0,
14677    /// The original protocol: a shared memory buffer (SMB) of pages and chunks,
14678    /// with CommitData IPCs and patches.
14679    /// Docs: <https://perfetto.dev/docs/design-docs/api-and-abi#shmem-abi.>
14680    V1 = 1,
14681    /// Tracing v2: a ring buffer that the producer allocates, shared with
14682    /// AttachV2RingBuffer and read on DrainV2RingBuffer.
14683    /// It is experimental and its ABI is not stable yet.
14684    /// Design: RFC-0014, <https://github.com/google/perfetto/discussions/4508.>
14685    V2 = 2,
14686}
14687impl ProtocolAbiVersion {
14688    /// String value of the enum field names used in the ProtoBuf definition.
14689    ///
14690    /// The values are not transformed in any way and thus are considered stable
14691    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
14692    pub fn as_str_name(&self) -> &'static str {
14693        match self {
14694            Self::Unspecified => "PROTOCOL_ABI_VERSION_UNSPECIFIED",
14695            Self::V1 => "PROTOCOL_ABI_VERSION_V1",
14696            Self::V2 => "PROTOCOL_ABI_VERSION_V2",
14697        }
14698    }
14699    /// Creates an enum from field names used in the ProtoBuf definition.
14700    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
14701        match value {
14702            "PROTOCOL_ABI_VERSION_UNSPECIFIED" => Some(Self::Unspecified),
14703            "PROTOCOL_ABI_VERSION_V1" => Some(Self::V1),
14704            "PROTOCOL_ABI_VERSION_V2" => Some(Self::V2),
14705            _ => None,
14706        }
14707    }
14708}
14709#[derive(Clone, PartialEq, ::prost::Message)]
14710pub struct IpcFrame {
14711    /// The client is expected to send requests with monotonically increasing
14712    /// request_id. The host will match the request_id sent from the client.
14713    /// In the case of a Streaming response (has_more = true) the host will send
14714    /// several InvokeMethodReply with the same request_id.
14715    #[prost(uint64, optional, tag = "2")]
14716    pub request_id: ::core::option::Option<u64>,
14717    /// Used only in unittests to generate a parsable message of arbitrary size.
14718    #[prost(bytes = "vec", repeated, tag = "1")]
14719    pub data_for_testing: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
14720    #[prost(oneof = "ipc_frame::Msg", tags = "3, 4, 5, 6, 7, 8")]
14721    pub msg: ::core::option::Option<ipc_frame::Msg>,
14722}
14723/// Nested message and enum types in `IPCFrame`.
14724pub mod ipc_frame {
14725    /// Client -> Host.
14726    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14727    pub struct BindService {
14728        #[prost(string, optional, tag = "1")]
14729        pub service_name: ::core::option::Option<::prost::alloc::string::String>,
14730    }
14731    /// Host -> Client.
14732    #[derive(Clone, PartialEq, ::prost::Message)]
14733    pub struct BindServiceReply {
14734        #[prost(bool, optional, tag = "1")]
14735        pub success: ::core::option::Option<bool>,
14736        #[prost(uint32, optional, tag = "2")]
14737        pub service_id: ::core::option::Option<u32>,
14738        #[prost(message, repeated, tag = "3")]
14739        pub methods: ::prost::alloc::vec::Vec<bind_service_reply::MethodInfo>,
14740    }
14741    /// Nested message and enum types in `BindServiceReply`.
14742    pub mod bind_service_reply {
14743        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14744        pub struct MethodInfo {
14745            #[prost(uint32, optional, tag = "1")]
14746            pub id: ::core::option::Option<u32>,
14747            #[prost(string, optional, tag = "2")]
14748            pub name: ::core::option::Option<::prost::alloc::string::String>,
14749        }
14750    }
14751    /// Client -> Host.
14752    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14753    pub struct InvokeMethod {
14754        /// BindServiceReply.id.
14755        #[prost(uint32, optional, tag = "1")]
14756        pub service_id: ::core::option::Option<u32>,
14757        /// BindServiceReply.method.id.
14758        #[prost(uint32, optional, tag = "2")]
14759        pub method_id: ::core::option::Option<u32>,
14760        /// Proto-encoded request argument.
14761        #[prost(bytes = "vec", optional, tag = "3")]
14762        pub args_proto: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
14763        /// When true the client specifies that a reply is not needed. The use case
14764        /// is a method with an empty, where the client doesn't care about the
14765        /// success/failure of the method invocation and rather prefers avoiding the
14766        /// IPC roundtrip + context switch associated with the reply.
14767        #[prost(bool, optional, tag = "4")]
14768        pub drop_reply: ::core::option::Option<bool>,
14769    }
14770    /// Host -> Client.
14771    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14772    pub struct InvokeMethodReply {
14773        #[prost(bool, optional, tag = "1")]
14774        pub success: ::core::option::Option<bool>,
14775        /// only for streaming RPCs.
14776        #[prost(bool, optional, tag = "2")]
14777        pub has_more: ::core::option::Option<bool>,
14778        /// proto-encoded response value.
14779        #[prost(bytes = "vec", optional, tag = "3")]
14780        pub reply_proto: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
14781    }
14782    /// Host -> Client.
14783    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14784    pub struct RequestError {
14785        #[prost(string, optional, tag = "1")]
14786        pub error: ::core::option::Option<::prost::alloc::string::String>,
14787    }
14788    /// Client (relay service) -> Host. This is generated by the relay service to
14789    /// fill the producer identity in the guest. This message is sent to the host
14790    /// service *before* any IPCFrame is from a local producer is relayed. This is
14791    /// accepted only on AF_VSOCK and AF_INET sockets, where we cannot validate the
14792    /// endpoont of the connection. for AF_UNIX sockets, this is ignored and traced
14793    /// uses instead the SO_PEERCRED.
14794    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14795    pub struct SetPeerIdentity {
14796        /// The UID and PID of the producer process.
14797        #[prost(int32, optional, tag = "1")]
14798        pub pid: ::core::option::Option<i32>,
14799        #[prost(int32, optional, tag = "2")]
14800        pub uid: ::core::option::Option<i32>,
14801        /// The hint for the tracing service to infer the machine ID. This field
14802        /// should satisfy the requriement that different machines should have
14803        /// different values. In practice, this filed contains the Linux kernel
14804        /// boot_id, or a hash of kernel bootup timestamp and uname(2) if boot_id
14805        /// isn't available.
14806        #[prost(string, optional, tag = "3")]
14807        pub machine_id_hint: ::core::option::Option<::prost::alloc::string::String>,
14808        /// Human-readable name associated to the producer's machine. Provides the
14809        /// tracing service a new dimension to filter data sources on. Given the
14810        /// perfetto machine name is provided by users, there is no expectation of
14811        /// uniqueness across machines in a tracing session.
14812        #[prost(string, optional, tag = "4")]
14813        pub machine_name: ::core::option::Option<::prost::alloc::string::String>,
14814    }
14815    #[derive(Clone, PartialEq, ::prost::Oneof)]
14816    pub enum Msg {
14817        #[prost(message, tag = "3")]
14818        MsgBindService(BindService),
14819        #[prost(message, tag = "4")]
14820        MsgBindServiceReply(BindServiceReply),
14821        #[prost(message, tag = "5")]
14822        MsgInvokeMethod(InvokeMethod),
14823        #[prost(message, tag = "6")]
14824        MsgInvokeMethodReply(InvokeMethodReply),
14825        #[prost(message, tag = "7")]
14826        MsgRequestError(RequestError),
14827        #[prost(message, tag = "8")]
14828        SetPeerIdentity(SetPeerIdentity),
14829    }
14830}