Merge changes Id8e45dd9,If1f99da9,Iebc6952a into main

* changes:
  tp: diff tests for ftrace cropping
  tp: implement ftrace event cropping for traces recorded by perfetto v44+
  ftrace: write "last read event timestamp" to assist parsing of ring buffer traces
diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs
index e8a7879..444384f 100644
--- a/.git-blame-ignore-revs
+++ b/.git-blame-ignore-revs
@@ -1,2 +1,8 @@
 # Replace block comments with line comments to appease eslint
 e56b1a91dcc4638262843eaead4347d7bf5a73b0
+
+# Format all files using eslint
+5dbacf5464d62811e53750cb164fe81ca52c1372
+
+# Format all files using prettier
+7e63f42d755ca255162f1f327126f90e34465581
diff --git a/docs/contributing/ui-plugins.md b/docs/contributing/ui-plugins.md
index cff386b..67bb445 100644
--- a/docs/contributing/ui-plugins.md
+++ b/docs/contributing/ui-plugins.md
@@ -46,11 +46,18 @@
 ```
 Now navigate to [localhost:10000](http://localhost:10000/)
 
+### Enable your plugin
+- Navigate to the plugins page: [localhost:10000/#!/plugins](http://localhost:10000/#!/plugins).
+- Ctrl-F for your plugin name and enable it.
+
+Later you can request for your plugin to be enabled by default.
+Follow the [default plugins](#default-plugins) section for this.
+
 ### Upload your plugin for review
 - Update `ui/src/plugins/<your-plugin-name>/OWNERS` to include your email.
 - Follow the [Contributing](./getting-started#contributing)
   instructions to upload your CL to the codereview tool.
-- Once uploaded add `hjd@google.com` as a reviewer for your CL.
+- Once uploaded add `stevegolton@google.com` as a reviewer for your CL.
 
 ## Plugin extension points
 Plugins can extend a handful of specific places in the UI. The sections
@@ -575,9 +582,10 @@
 ## Guide to the plugin API
 The plugin interfaces are defined in [ui/src/public/index.ts](https://cs.android.com/android/platform/superproject/main/+/main:external/perfetto/ui/src/public/index.ts).
 
-
 ## Default plugins
-TBD
+Some plugins are enabled by default.
+These plugins are held to a higher quality than non-default plugins since changes to those plugins effect all users of the UI.
+The list of default plugins is specified at [ui/src/core/default_plugins.ts](https://cs.android.com/android/platform/superproject/main/+/main:external/perfetto/ui/src/common/default_plugins.ts).
 
 ## Misc notes
 - Plugins must be licensed under
diff --git a/protos/perfetto/config/chrome/scenario_config.proto b/protos/perfetto/config/chrome/scenario_config.proto
index e90d6db..eca7165 100644
--- a/protos/perfetto/config/chrome/scenario_config.proto
+++ b/protos/perfetto/config/chrome/scenario_config.proto
@@ -120,4 +120,8 @@
 
 message ChromeFieldTracingConfig {
   repeated ScenarioConfig scenarios = 1;
+}
+
+message TracingTriggerRulesConfig {
+  repeated TriggerRule rules = 1;
 }
\ No newline at end of file
diff --git a/src/trace_processor/metrics/sql/android/android_io.sql b/src/trace_processor/metrics/sql/android/android_io.sql
index 657f85f..3950906 100644
--- a/src/trace_processor/metrics/sql/android/android_io.sql
+++ b/src/trace_processor/metrics/sql/android/android_io.sql
@@ -44,6 +44,6 @@
                 'distinct_thread_count', distinct_thread_count
             )
         )
-        FROM android_io_f2fs_aggregate_write_stats
+        FROM _android_io_f2fs_aggregate_write_stats
     )
 );
\ No newline at end of file
diff --git a/src/trace_processor/metrics/sql/android/android_io_unagg.sql b/src/trace_processor/metrics/sql/android/android_io_unagg.sql
index 5be4c22..bcbfb04 100644
--- a/src/trace_processor/metrics/sql/android/android_io_unagg.sql
+++ b/src/trace_processor/metrics/sql/android/android_io_unagg.sql
@@ -30,6 +30,6 @@
                 'dev', dev
             )
         )
-        FROM android_io_f2fs_write_stats
+        FROM _android_io_f2fs_write_stats
     )
 );
\ No newline at end of file
diff --git a/src/trace_processor/perfetto_sql/stdlib/android/io.sql b/src/trace_processor/perfetto_sql/stdlib/android/io.sql
index b5d7021..304a018 100644
--- a/src/trace_processor/perfetto_sql/stdlib/android/io.sql
+++ b/src/trace_processor/perfetto_sql/stdlib/android/io.sql
@@ -13,8 +13,10 @@
 -- See the License for the specific language governing permissions and
 -- limitations under the License.
 
+-- TODO(b/329344794): Rewrite to fetch data from other tables than `raw`.
+
 -- Aggregates f2fs IO and latency stats by counter name.
-CREATE PERFETTO VIEW android_io_f2fs_counter_stats(
+CREATE PERFETTO VIEW _android_io_f2fs_counter_stats(
   -- Counter name on which all the other values are aggregated on.
   name STRING,
   -- Sum of all counter values for the counter name.
@@ -45,7 +47,7 @@
 ORDER BY sum DESC;
 
 -- Aggregates f2fs_write stats by inode and thread.
-CREATE PERFETTO VIEW android_io_f2fs_write_stats(
+CREATE PERFETTO VIEW _android_io_f2fs_write_stats(
   -- Utid of the thread.
   utid INT,
   -- Tid of the thread.
@@ -99,7 +101,7 @@
 
 -- Aggregates f2fs write stats. Counts distinct datapoints, total write operations,
 -- and bytes written
-CREATE PERFETTO VIEW android_io_f2fs_aggregate_write_stats(
+CREATE PERFETTO VIEW _android_io_f2fs_aggregate_write_stats(
   -- Total number of writes in the trace.
   total_write_count INT,
   -- Number of distinct processes.
@@ -119,4 +121,4 @@
       COUNT(DISTINCT dev) as distinct_device_count,
       COUNT(DISTINCT ino) distict_inode_count,
       COUNT(DISTINCT tid) distinct_thread_count
-from android_io_f2fs_write_stats;
\ No newline at end of file
+from _android_io_f2fs_write_stats;
\ No newline at end of file
diff --git a/test/trace_processor/diff_tests/stdlib/android/tests.py b/test/trace_processor/diff_tests/stdlib/android/tests.py
index 07801ad..a3ec34f 100644
--- a/test/trace_processor/diff_tests/stdlib/android/tests.py
+++ b/test/trace_processor/diff_tests/stdlib/android/tests.py
@@ -392,7 +392,7 @@
         trace=DataPath('android_monitor_contention_trace.atr'),
         query="""
       INCLUDE PERFETTO MODULE android.io;
-      SELECT * FROM android_io_f2fs_counter_stats;
+      SELECT * FROM _android_io_f2fs_counter_stats;
       """,
         out=Csv("""
         "name","sum","max","min","dur","count","avg"
@@ -452,7 +452,7 @@
         trace=DataPath('android_monitor_contention_trace.atr'),
         query="""
       INCLUDE PERFETTO MODULE android.io;
-      SELECT tid, thread_name, pid, process_name, ino, dev, bytes, write_count FROM android_io_f2fs_write_stats;
+      SELECT tid, thread_name, pid, process_name, ino, dev, bytes, write_count FROM _android_io_f2fs_write_stats;
       """,
         out=Csv("""
         "tid","thread_name","pid","process_name","ino","dev","bytes","write_count"
@@ -479,7 +479,7 @@
         INCLUDE PERFETTO MODULE android.io;
         SELECT total_write_count, distinct_processes, total_bytes_written,
                distinct_device_count, distict_inode_count, distinct_thread_count
-        FROM android_io_f2fs_aggregate_write_stats
+        FROM _android_io_f2fs_aggregate_write_stats
         """,
         out=Csv("""
         "total_write_count","distinct_processes","total_bytes_written","distinct_device_count","distict_inode_count","distinct_thread_count"
diff --git a/ui/src/common/plugins.ts b/ui/src/common/plugins.ts
index 2d4ec02..56b88cd 100644
--- a/ui/src/common/plugins.ts
+++ b/ui/src/common/plugins.ts
@@ -45,7 +45,7 @@
 import {Flag, featureFlags} from '../core/feature_flags';
 import {assertExists} from '../base/logging';
 import {raf} from '../core/raf_scheduler';
-import {defaultPlugins} from './default_plugins';
+import {defaultPlugins} from '../core/default_plugins';
 
 // Every plugin gets its own PluginContext. This is how we keep track
 // what each plugin is doing and how we can blame issues on particular
diff --git a/ui/src/common/default_plugins.ts b/ui/src/core/default_plugins.ts
similarity index 100%
rename from ui/src/common/default_plugins.ts
rename to ui/src/core/default_plugins.ts
diff --git a/ui/src/frontend/plugins_page.ts b/ui/src/frontend/plugins_page.ts
index aa5c69e..19c0739 100644
--- a/ui/src/frontend/plugins_page.ts
+++ b/ui/src/frontend/plugins_page.ts
@@ -21,7 +21,7 @@
 import {exists} from '../base/utils';
 import {PluginDescriptor} from '../public';
 import {createPage} from './pages';
-import {defaultPlugins} from '../common/default_plugins';
+import {defaultPlugins} from '../core/default_plugins';
 
 export const PluginsPage = createPage({
   view() {