Update NDK prebuilts to build 11421629.

Taken from branch aosp-simpleperf-release.

Bug: 323599819
Test: run test/test.py on android N-V for emulators and devices
Test: run test/test.py on darwin/linux/windows
Change-Id: I496b28ebf26e11687a45da0ce5c560ff143c49a0
diff --git a/ChangeLog b/ChangeLog
index 49ce358..f73df5b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,37 @@
+build 11421629 (Feb 8, 2024)
+inject command:
+  Support converting LBR profiles to AutoFDO format
+list command:
+  Use event_table.json to config raw events supported on different cpu models, and read
+  /proc/cpuinfo to know cpu models on device. As a result, we can precisely report raw
+  events supported on different cpu cores.
+record/stat command:
+  Support monitoring different events on different cores using --cpu
+  Use thousand groups when reporting sample counts
+record command:
+  Add --delay to delay recording samples
+  Add --record-timestamp and --record-cycles to record timestamps and cpu-cycles with ETM data
+  Add --cycle-threshold for ETM cycle count packets
+  Support reading symbols from DEX files in memory
+  Support starting simpleperf at early-init when boot profiling, as in android_platform_profiling.md
+stat command:
+  Add --tp-filter and --kprobe to improve tracepoint event counting
+app_profiler.py:
+  Add app versioncode in record file
+  Add --launch to start an app with its package name
+report scripts:
+  Add --cpu to filter samples based on CPUs
+  Add ipc.py to capture instructions per cycle of the system
+  Support profiles generated by the report-sample command
+  Add sample_filter.py to split large record files
+gecko_profile_generator.py:
+  Add --percpu-samples to show samples grouped by CPUs
+report_html.py:
+  Support parsing kernel disassembly in scripts
+  Speed up generating disassembly
+  Sort functions by names in flamegraph
+
+
 build 10661963 (Aug 16, 2023)
 report-sample command: Remove small stack gaps to get a smoother view in Stack Chart.
 Use prebult libsimpleperf_readelf (provided by Android clang prebuilts) for reading ELF files.
diff --git a/annotate.py b/annotate.py
index 7bf8fe9..b349fce 100755
--- a/annotate.py
+++ b/annotate.py
@@ -25,7 +25,7 @@
 from texttable import Texttable
 from typing import Dict, Union
 
-from simpleperf_report_lib import ReportLib
+from simpleperf_report_lib import GetReportLib
 from simpleperf_utils import (
     Addr2Nearestline, BaseArgumentParser, BinaryFinder, extant_dir, flatten_arg_list, is_windows,
     log_exit, ReadElf, SourceFileSearcher)
@@ -186,8 +186,7 @@
            source file:line.
         """
         for perf_data in self.config['perf_data_list']:
-            lib = ReportLib()
-            lib.SetRecordFile(perf_data)
+            lib = GetReportLib(perf_data)
             if self.symfs_dir:
                 lib.SetSymfs(self.symfs_dir)
             if self.kallsyms:
@@ -224,8 +223,7 @@
             binaries, source files, functions, lines.
         """
         for perf_data in self.config['perf_data_list']:
-            lib = ReportLib()
-            lib.SetRecordFile(perf_data)
+            lib = GetReportLib(perf_data)
             if self.symfs_dir:
                 lib.SetSymfs(self.symfs_dir)
             if self.kallsyms:
diff --git a/app_profiler.py b/app_profiler.py
index 1ab7e15..7b42de2 100755
--- a/app_profiler.py
+++ b/app_profiler.py
@@ -28,6 +28,7 @@
 import subprocess
 import sys
 import time
+from typing import Optional
 
 from simpleperf_utils import (
     AdbHelper, BaseArgumentParser, bytes_to_str, extant_dir, get_script_dir, get_target_binary_path,
@@ -295,9 +296,23 @@
 
     def prepare(self):
         super(AppProfiler, self).prepare()
+        self.app_versioncode = self.get_app_versioncode()
         if self.args.compile_java_code:
             self.compile_java_code()
 
+    def get_app_versioncode(self) -> Optional[str]:
+        result, output = self.adb.run_and_return_output(
+            ['shell', 'pm', 'list', 'packages', '--show-versioncode'])
+        if not result:
+            return None
+        prefix = f'package:{self.args.app} '
+        for line in output.splitlines():
+            if line.startswith(prefix):
+                pos = line.find('versionCode:')
+                if pos != -1:
+                    return line[pos + len('versionCode:'):].strip()
+        return None
+
     def compile_java_code(self):
         self.kill_app_process()
         # Fully compile Java code on Android >= N.
@@ -351,15 +366,26 @@
         return self.adb.run_and_return_output(adb_args)
 
     def start(self):
-        if self.args.activity or self.args.test:
+        if self.args.launch or self.args.activity or self.args.test:
             self.kill_app_process()
-        self.start_profiling(['--app', self.args.app])
+        args = ['--app', self.args.app]
+        if self.app_versioncode:
+            args += ['--add-meta-info', f'app_versioncode={self.app_versioncode}']
+        self.start_profiling(args)
+        if self.args.launch:
+            self.start_app()
         if self.args.activity:
             self.start_activity()
         elif self.args.test:
             self.start_test()
         # else: no need to start an activity or test.
 
+    def start_app(self):
+        result = self.adb.run(['shell', 'monkey', '-p', self.args.app, '1'])
+        if not result:
+            self.record_subproc.terminate()
+            log_exit(f"Can't start {self.args.app}")
+
     def start_activity(self):
         activity = self.args.app + '/' + self.args.activity
         result = self.adb.run(['shell', 'am', 'start', '-n', activity])
@@ -449,6 +475,9 @@
                                   wrap.sh in the apk to use the native instructions.""")
 
     app_start_group = app_target_group.add_mutually_exclusive_group()
+    app_start_group.add_argument('--launch', action='store_true', help="""Used with -p. Profile the
+                                 launch time of an Android app. The app will be started or
+                                 restarted.""")
     app_start_group.add_argument('-a', '--activity', help="""Used with -p. Profile the launch time
                                  of an activity in an Android app. The app will be started or
                                  restarted to run the activity. Like `-a .MainActivity`.""")
diff --git a/bin/android/arm/simpleperf b/bin/android/arm/simpleperf
index 5043fb6..8d9da24 100755
--- a/bin/android/arm/simpleperf
+++ b/bin/android/arm/simpleperf
Binary files differ
diff --git a/bin/android/arm64/simpleperf b/bin/android/arm64/simpleperf
index a33e5c2..f79030b 100755
--- a/bin/android/arm64/simpleperf
+++ b/bin/android/arm64/simpleperf
Binary files differ
diff --git a/bin/android/riscv64/simpleperf b/bin/android/riscv64/simpleperf
new file mode 100755
index 0000000..7b89eb3
--- /dev/null
+++ b/bin/android/riscv64/simpleperf
Binary files differ
diff --git a/bin/android/x86/simpleperf b/bin/android/x86/simpleperf
index d295d4e..1ba17e5 100755
--- a/bin/android/x86/simpleperf
+++ b/bin/android/x86/simpleperf
Binary files differ
diff --git a/bin/android/x86_64/simpleperf b/bin/android/x86_64/simpleperf
index 0700af3..96274d6 100755
--- a/bin/android/x86_64/simpleperf
+++ b/bin/android/x86_64/simpleperf
Binary files differ
diff --git a/bin/darwin/x86_64/libsimpleperf_report.dylib b/bin/darwin/x86_64/libsimpleperf_report.dylib
index 523372a..6d6e0ad 100755
--- a/bin/darwin/x86_64/libsimpleperf_report.dylib
+++ b/bin/darwin/x86_64/libsimpleperf_report.dylib
Binary files differ
diff --git a/bin/darwin/x86_64/simpleperf b/bin/darwin/x86_64/simpleperf
index a94fe33..19284b0 100755
--- a/bin/darwin/x86_64/simpleperf
+++ b/bin/darwin/x86_64/simpleperf
Binary files differ
diff --git a/bin/linux/x86_64/libsimpleperf_report.so b/bin/linux/x86_64/libsimpleperf_report.so
index 6e99be0..42b4b40 100755
--- a/bin/linux/x86_64/libsimpleperf_report.so
+++ b/bin/linux/x86_64/libsimpleperf_report.so
Binary files differ
diff --git a/bin/linux/x86_64/simpleperf b/bin/linux/x86_64/simpleperf
index 33e1bdc..dc3364a 100755
--- a/bin/linux/x86_64/simpleperf
+++ b/bin/linux/x86_64/simpleperf
Binary files differ
diff --git a/bin/windows/x86_64/libsimpleperf_report.dll b/bin/windows/x86_64/libsimpleperf_report.dll
index 7781e19..3cb3653 100755
--- a/bin/windows/x86_64/libsimpleperf_report.dll
+++ b/bin/windows/x86_64/libsimpleperf_report.dll
Binary files differ
diff --git a/bin/windows/x86_64/simpleperf.exe b/bin/windows/x86_64/simpleperf.exe
index 719e817..577d5ca 100755
--- a/bin/windows/x86_64/simpleperf.exe
+++ b/bin/windows/x86_64/simpleperf.exe
Binary files differ
diff --git a/doc/README.md b/doc/README.md
index 4555c7c..2efa323 100644
--- a/doc/README.md
+++ b/doc/README.md
@@ -172,18 +172,21 @@
    well.
 
 2. Simpleperf stores samples in a buffer before unwinding them. If the bufer is low in free space,
-   simpleperf may decide to cut stack data for a sample to 1K. Hopefully, this can be recovered by
-   callchain joiner. But when a high percentage of samples are cut, many callchains can be broken.
-   We can tell if many samples are cut in the record command output, like:
+   simpleperf may decide to truncate stack data for a sample to 1K. Hopefully, this can be recovered
+   by callchain joiner. But when a high percentage of samples are truncated, many callchains can be
+   broken. We can tell if many samples are truncated in the record command output, like:
 
 ```sh
 $ simpleperf record ...
 simpleperf I cmd_record.cpp:809] Samples recorded: 105584 (cut 86291). Samples lost: 6501.
+
+$ simpleperf record ...
+simpleperf I cmd_record.cpp:894] Samples recorded: 7,365 (1,857 with truncated stacks).
 ```
 
-   There are two ways to avoid cutting samples. One is increasing the buffer size, like
+   There are two ways to avoid truncating samples. One is increasing the buffer size, like
    `--user-buffer-size 1G`. But `--user-buffer-size` is only available on latest simpleperf. If that
-   option isn't available, we can use `--no-cut-samples` to disable cutting samples.
+   option isn't available, we can use `--no-cut-samples` to disable truncating samples.
 
 For the missing DWARF call frame info problem:
 1. Most C++ code generates binaries containing call frame info, in .eh_frame or .ARM.exidx sections.
@@ -268,6 +271,39 @@
    2) Use pprof_proto_generator.py to generate pprof proto file. `pprof_proto_generator.py`.
    3) Use pprof to report a function with annotated source code, as described [here](https://android.googlesource.com/platform/system/extras/+/main/simpleperf/doc/scripts_reference.md#pprof_proto_generator_py).
 
+
+### Reduce lost samples and samples with truncated stack
+
+When using `simpleperf record`, we may see lost samples or samples with truncated stack data. Before
+saving samples to a file, simpleperf uses two buffers to cache samples in memory. One is a kernel
+buffer, the other is a userspace buffer. The kernel puts samples to the kernel buffer. Simpleperf
+moves samples from the kernel buffer to the userspace buffer before processing them. If a buffer
+overflows, we lose samples or get samples with truncated stack data. Below is an example.
+
+```sh
+$ simpleperf record -a --duration 1 -g --user-buffer-size 100k
+simpleperf I cmd_record.cpp:799] Recorded for 1.00814 seconds. Start post processing.
+simpleperf I cmd_record.cpp:894] Samples recorded: 79 (16 with truncated stacks).
+                                 Samples lost: 2,129 (kernelspace: 18, userspace: 2,111).
+simpleperf W cmd_record.cpp:911] Lost 18.5567% of samples in kernel space, consider increasing
+                                 kernel buffer size(-m), or decreasing sample frequency(-f), or
+                                 increasing sample period(-c).
+simpleperf W cmd_record.cpp:928] Lost/Truncated 97.1233% of samples in user space, consider
+                                 increasing userspace buffer size(--user-buffer-size), or
+                                 decreasing sample frequency(-f), or increasing sample period(-c).
+```
+
+In the above example, we get 79 samples, 16 of them are with truncated stack data. We lose 18
+samples in the kernel buffer, and lose 2111 samples in the userspace buffer.
+
+To reduce lost samples in the kernel buffer, we can increase kernel buffer size via `-m`. To reduce
+lost samples in the userspace buffer, or reduce samples with truncated stack data, we can increase
+userspace buffer size via `--user-buffer-size`.
+
+We can also reduce samples generated in a fixed time period, like reducing sample frequency using
+`-f`, reducing monitored threads, not monitoring multiple perf events at the same time.
+
+
 ## Bugs and contribution
 
 Bugs and feature requests can be submitted at https://github.com/android/ndk/issues.
@@ -279,7 +315,7 @@
 2. Build simpleperf.
 ```sh
 $ . build/envsetup.sh
-$ lunch aosp_arm64-userdebug
+$ lunch aosp_arm64-trunk_staging-userdebug
 $ mmma system/extras/simpleperf -j30
 ```
 
diff --git a/doc/android_platform_profiling.md b/doc/android_platform_profiling.md
index f2a31cf..52bccda 100644
--- a/doc/android_platform_profiling.md
+++ b/doc/android_platform_profiling.md
@@ -80,27 +80,27 @@
 
 On userdebug/eng devices, we can get boot-time profile via simpleperf.
 
-Step 1. In adb root, set options used to record boot-time profile. Simpleperf stores the options in
-a persist property `persist.simpleperf.boot_record`.
+Step 1. Customize the configuration if needed. By default, simpleperf tracks all processes
+except for itself, starts at `early-init`, and stops when `sys.boot_completed` is set.
+You can customize it by changing the trigger or command line flags in
+`system/extras/simpleperf/simpleperf.rc`.
 
+Step 2. Add `androidboot.simpleperf.boot_record=1` to the kernel command line.
+For example, on Pixel devices, you can do
 ```
-# simpleperf boot-record --enable "-a -g --duration 10 --exclude-perf"
+$ fastboot oem cmdline add androidboot.simpleperf.boot_record=1
 ```
 
-Step 2. Reboot the device. When booting, init finds that the persist property is set, so it forks
-a background process to run simpleperf to record boot-time profile. init starts simpleperf at
-zygote-start stage, right after zygote is started.
+Step 3. Reboot the device. When booting, init finds that the kernel command line flag is set,
+so it forks a background process to run simpleperf to record boot-time profile.
+init starts simpleperf at `early-init` stage, which is very soon after second-stage init starts.
 
-```
-$ adb reboot
-```
-
-Step 3. After boot, the boot-time profile is stored in /data/simpleperf_boot_data. Then we can pull
+Step 4. After boot, the boot-time profile is stored in /tmp/boot_perf.data. Then we can pull
 the profile to host to report.
 
 ```
-$ adb shell ls /data/simpleperf_boot_data
-perf-20220126-11-47-51.data
+$ adb shell ls /tmp/boot_perf.data
+/tmp/boot_perf.data
 ```
 
 Following is a boot-time profile example. From timestamp, the first sample is generated at about
diff --git a/doc/collect_etm_data_for_autofdo.md b/doc/collect_etm_data_for_autofdo.md
index ca14551..059ffb4 100644
--- a/doc/collect_etm_data_for_autofdo.md
+++ b/doc/collect_etm_data_for_autofdo.md
@@ -111,7 +111,7 @@
 
 ```sh
 (host) <AOSP>$ . build/envsetup.sh
-(host) <AOSP>$ lunch aosp_arm64-userdebug
+(host) <AOSP>$ lunch aosp_arm64-trunk_staging-userdebug
 (host) <AOSP>$ make etm_test_loop
 ```
 
diff --git a/doc/executable_commands_reference.md b/doc/executable_commands_reference.md
index 0e29fbf..b5c051a 100644
--- a/doc/executable_commands_reference.md
+++ b/doc/executable_commands_reference.md
@@ -333,6 +333,27 @@
 $ su 0 simpleperf stat -e cpu-cycles -a --per-thread --per-core --duration 1
 ```
 
+### Monitor different events on different cores
+
+Android devices usually have big and little cores. Different cores may support different events.
+Therefore, we may want to monitor different events on different cores. We can do this using
+the `--cpu` option. The `--cpu` option selects the cores on which to monitor events. A `--cpu`
+option affects all the following events until meeting another `--cpu` option. The first `--cpu`
+option also affects all events before it. Following are some examples:
+
+```sh
+# By default, cpu-cycles and instructions are monitored on all cpus.
+$ su 0 simpleperf stat -e cpu-cycles,instructions -a --duration 1 --per-core
+
+# Use one `--cpu` option to monitor cpu-cycles and instructions only on cpu 0-3,8.
+$ su 0 simpleperf stat -e cpu-cycles --cpu 0-3,8 -e instructions -a --duration 1 --per-core
+
+# Use two `--cpu` options to monitor raw-l3d-cache-refill-rd on cpu 0-3, and raw-l3d-cache-refill on
+# cpu 4-8.
+$ su 0 simpleperf stat --cpu 0-3 -e raw-l3d-cache-refill-rd --cpu 4-8 -e raw-l3d-cache-refill \
+  -a --duration 1 --per-core
+```
+
 ## The record command
 
 The record command is used to dump samples of the profiled processes. Each sample can contain
diff --git a/doc/sample_filter.md b/doc/sample_filter.md
index 3755e76..421c975 100644
--- a/doc/sample_filter.md
+++ b/doc/sample_filter.md
@@ -7,7 +7,8 @@
 ## filter file format
 
 To filter samples based on time ranges, simpleperf accepts a filter file when reporting. The filter
-file is in text format, containing a list of lines. Each line is a filter command.
+file is in text format, containing a list of lines. Each line is a filter command. The filter file
+can be generated by `sample_filter.py`, and passed to report scripts via `--filter-file`.
 
 ```
 filter_command1 command_args
diff --git a/doc/scripts_reference.md b/doc/scripts_reference.md
index 31dee02..d118ed2 100644
--- a/doc/scripts_reference.md
+++ b/doc/scripts_reference.md
@@ -320,3 +320,38 @@
 
 Examples of using `simpleperf_report_lib.py` are in `report_sample.py`, `report_html.py`,
 `pprof_proto_generator.py` and `inferno/inferno.py`.
+
+## ipc.py
+`ipc.py`captures the instructions per cycle (IPC) of the system during a specified duration.
+
+Example:
+```sh
+./ipc.py
+./ipc.py 2 20          # Set interval to 2 secs and total duration to 20 secs
+./ipc.py -p 284 -C 4   # Only profile the PID 284 while running on core 4
+./ipc.py -c 'sleep 5'  # Only profile the command to run
+```
+
+The results look like:
+```
+K_CYCLES   K_INSTR      IPC
+36840      14138       0.38
+70701      27743       0.39
+104562     41350       0.40
+138264     54916       0.40
+```
+
+## sample_filter.py
+
+`sample_filter.py` generates sample filter files as documented in [sample_filter.md](https://android.googlesource.com/platform/system/extras/+/refs/heads/main/simpleperf/doc/sample_filter.md).
+A filter file can be passed in `--filter-file` when running report scripts.
+
+For example, it can be used to split a large recording file into several report files.
+
+```sh
+$ sample_filter.py -i perf.data --split-time-range 2 -o sample_filter
+$ gecko_profile_generator.py -i perf.data --filter-file sample_filter_part1 \
+    | gzip >profile-part1.json.gz
+$ gecko_profile_generator.py -i perf.data --filter-file sample_filter_part2 \
+    | gzip >profile-part2.json.gz
+```
diff --git a/doc/view_the_profile.md b/doc/view_the_profile.md
index 796f159..ccf4472 100644
--- a/doc/view_the_profile.md
+++ b/doc/view_the_profile.md
@@ -39,18 +39,27 @@
 This will print some debug logs about Failed to read symbols: this is usually OK, unless those
 symbols are hotspots.
 
-Upload pprof.profile to http://pprof/ UI:
+The continuous pprof server has a file upload size limit of 50MB. To get around this limit, compress
+the profile before uploading:
+
+```
+gzip pprof.profile
+```
+
+After compressing, you can upload the `pprof.profile.gz` file to either http://pprof/ or
+http://pprofng/. Both websites have an 'Upload' tab for this purpose. Alternatively, you can use
+the following `pprof` command to upload the compressed profile:
 
 ```
 # Upload all threads in profile, grouped by threadpool.
 # This is usually a good default, combining threads with similar names.
-pprof --flame --tagroot threadpool pprof.profile
+pprof --flame --tagroot threadpool pprof.profile.gz
 
 # Upload all threads in profile, grouped by individual thread name.
-pprof --flame --tagroot thread pprof.profile
+pprof --flame --tagroot thread pprof.profile.gz
 
 # Upload all threads in profile, without grouping by thread.
-pprof --flame pprof.profile
+pprof --flame pprof.profile.gz
 This will output a URL, example: https://pprof.corp.google.com/?id=589a60852306144c880e36429e10b166
 ```
 
@@ -58,6 +67,7 @@
 
 We can view Android profiles using Firefox Profiler: https://profiler.firefox.com/. This does not
 require Firefox installation -- Firefox Profiler is just a website, you can open it in any browser.
+There is also an internal Google-Hosted Firefox Profiler, at go/profiler or go/firefox-profiler.
 
 ![Example](./pictures/firefox_profiler.png)
 
diff --git a/gecko_profile_generator.py b/gecko_profile_generator.py
index e7b0046..980012c 100755
--- a/gecko_profile_generator.py
+++ b/gecko_profile_generator.py
@@ -32,7 +32,7 @@
 import sys
 from typing import List, Dict, Optional, NamedTuple, Tuple
 
-from simpleperf_report_lib import ReportLib
+from simpleperf_report_lib import GetReportLib
 from simpleperf_utils import BaseArgumentParser, ReportLibOptions
 
 
@@ -390,16 +390,20 @@
         symfs_dir: Optional[str],
         kallsyms_file: Optional[str],
         report_lib_options: ReportLibOptions,
-        max_remove_gap_length: int) -> GeckoProfile:
+        max_remove_gap_length: int,
+        percpu_samples: bool) -> GeckoProfile:
     """convert a simpleperf profile to gecko format"""
-    lib = ReportLib()
+    lib = GetReportLib(record_file)
 
     lib.ShowIpForUnknownSymbol()
     if symfs_dir is not None:
         lib.SetSymfs(symfs_dir)
-    lib.SetRecordFile(record_file)
     if kallsyms_file is not None:
         lib.SetKallsymsFile(kallsyms_file)
+    if percpu_samples:
+        # Grouping samples by cpus doesn't support off cpu samples.
+        if lib.GetSupportedTraceOffCpuModes():
+            report_lib_options.trace_offcpu = 'on-cpu'
     lib.SetReportOptions(report_lib_options)
 
     arch = lib.GetArch()
@@ -407,7 +411,9 @@
     record_cmd = lib.GetRecordCmd()
 
     # Map from tid to Thread
-    threadMap: Dict[int, Thread] = {}
+    thread_map: Dict[int, Thread] = {}
+    # Map from pid to process name
+    process_names: Dict[int, str] = {}
 
     while True:
         sample = lib.GetNextSample()
@@ -425,28 +431,44 @@
         # We want root first, leaf last.
         stack.reverse()
 
-        # add thread sample
-        thread = threadMap.get(sample.tid)
-        if thread is None:
-            thread = Thread(comm=sample.thread_comm, pid=sample.pid, tid=sample.tid)
-            threadMap[sample.tid] = thread
-        thread.add_sample(
-            comm=sample.thread_comm,
-            stack=stack,
-            # We are being a bit fast and loose here with time here.  simpleperf
-            # uses CLOCK_MONOTONIC by default, which doesn't use the normal unix
-            # epoch, but rather some arbitrary time. In practice, this doesn't
-            # matter, the Firefox Profiler normalises all the timestamps to begin at
-            # the minimum time.  Consider fixing this in future, if needed, by
-            # setting `simpleperf record --clockid realtime`.
-            time_ms=sample_time_ms)
+        if percpu_samples:
+            if sample.tid == sample.pid:
+                process_names[sample.pid] = sample.thread_comm
+            process_name = process_names.get(sample.pid)
+            stack = [
+                '%s tid %d (in %s pid %d)' %
+                (sample.thread_comm, sample.tid, process_name, sample.pid)] + stack
+            thread = thread_map.get(sample.cpu)
+            if thread is None:
+                thread = Thread(comm=f'Cpu {sample.cpu}', pid=sample.cpu, tid=sample.cpu)
+                thread_map[sample.cpu] = thread
+            thread.add_sample(
+                comm=f'Cpu {sample.cpu}',
+                stack=stack,
+                time_ms=sample_time_ms)
+        else:
+            # add thread sample
+            thread = thread_map.get(sample.tid)
+            if thread is None:
+                thread = Thread(comm=sample.thread_comm, pid=sample.pid, tid=sample.tid)
+                thread_map[sample.tid] = thread
+            thread.add_sample(
+                comm=sample.thread_comm,
+                stack=stack,
+                # We are being a bit fast and loose here with time here.  simpleperf
+                # uses CLOCK_MONOTONIC by default, which doesn't use the normal unix
+                # epoch, but rather some arbitrary time. In practice, this doesn't
+                # matter, the Firefox Profiler normalises all the timestamps to begin at
+                # the minimum time.  Consider fixing this in future, if needed, by
+                # setting `simpleperf record --clockid realtime`.
+                time_ms=sample_time_ms)
 
-    for thread in threadMap.values():
+    for thread in thread_map.values():
         thread.sort_samples()
 
-    remove_stack_gaps(max_remove_gap_length, threadMap)
+    remove_stack_gaps(max_remove_gap_length, thread_map)
 
-    threads = [thread.to_json_dict() for thread in threadMap.values()]
+    threads = [thread.to_json_dict() for thread in thread_map.values()]
 
     profile_timestamp = meta_info.get('timestamp')
     end_time_ms = (int(profile_timestamp) * 1000) if profile_timestamp else 0
@@ -475,6 +497,7 @@
         "markerSchema": [],
         "abi": arch,
         "oscpu": meta_info.get("android_build_fingerprint"),
+        "appBuildID": meta_info.get("app_versioncode"),
     }
 
     # Schema:
@@ -504,6 +527,9 @@
                         broken-stack samples we want to remove.
                         """
                         )
+    parser.add_argument(
+        '--percpu-samples', action='store_true',
+        help='show samples based on cpus instead of threads')
     parser.add_report_lib_options()
     args = parser.parse_args()
     profile = _gecko_profile(
@@ -511,7 +537,9 @@
         symfs_dir=args.symfs,
         kallsyms_file=args.kallsyms,
         report_lib_options=args.report_lib_options,
-        max_remove_gap_length=args.max_remove_gap_length)
+        max_remove_gap_length=args.max_remove_gap_length,
+        percpu_samples=args.percpu_samples,
+    )
 
     json.dump(profile, sys.stdout, sort_keys=True)
 
diff --git a/ipc.py b/ipc.py
new file mode 100755
index 0000000..9871875
--- /dev/null
+++ b/ipc.py
@@ -0,0 +1,137 @@
+#!/usr/bin/env python3
+#
+# Copyright (C) 2023 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+"""ipc.py: Capture the Instructions per Cycle (IPC) of the system during a
+           specified duration.
+
+  Example:
+    ./ipc.py
+    ./ipc.py 2 20          # Set interval to 2 secs and total duration to 20 secs
+    ./ipc.py -p 284 -C 4   # Only profile the PID 284 while running on core 4
+    ./ipc.py -c 'sleep 5'  # Only profile the command to run
+
+  Result looks like:
+    K_CYCLES   K_INSTR      IPC
+    36840      14138       0.38
+    70701      27743       0.39
+    104562     41350       0.40
+    138264     54916       0.40
+"""
+
+import io
+import logging
+import subprocess
+import sys
+import time
+
+from simpleperf_utils import (
+        AdbHelper, BaseArgumentParser, get_target_binary_path, log_exit)
+
+def start_profiling(adb, args, target_args):
+    """Start simpleperf process on device."""
+    shell_args = ['simpleperf', 'stat', '-e', 'cpu-cycles',
+            '-e', 'instructions', '--interval', str(args.interval * 1000),
+            '--duration', str(args.duration)]
+    shell_args += target_args
+    adb_args = [adb.adb_path, 'shell'] + shell_args
+    logging.info('run adb cmd: %s' % adb_args)
+    return subprocess.Popen(adb_args, stdout=subprocess.PIPE)
+
+def capture_stats(adb, args, stat_subproc):
+    """Capture IPC profiling stats or stop profiling when user presses Ctrl-C."""
+    try:
+        print("%-10s %-10s %5s" % ("K_CYCLES", "K_INSTR", "IPC"))
+        cpu_cycles = 0
+        for line in io.TextIOWrapper(stat_subproc.stdout, encoding="utf-8"):
+            if 'cpu-cycles' in line:
+                if args.cpu == None:
+                    cpu_cycles = int(line.split()[0].replace(",", ""))
+                    continue
+                columns = line.split()
+                if args.cpu == int(columns[0]):
+                    cpu_cycles = int(columns[1].replace(",", ""))
+            elif 'instructions' in line:
+                if cpu_cycles == 0: cpu_cycles = 1 # PMCs are broken, or no events
+                ins = -1
+                columns = line.split()
+                if args.cpu == None:
+                    ins = int(columns[0].replace(",", ""))
+                elif args.cpu == int(columns[0]):
+                    ins = int(columns[1].replace(",", ""))
+                if ins >= 0:
+                    print("%-10d %-10d %5.2f" %
+                            (cpu_cycles / 1000, ins / 1000, ins / cpu_cycles))
+
+    except KeyboardInterrupt:
+        stop_profiling(adb)
+        stat_subproc = None
+
+def stop_profiling(adb):
+    """Stop profiling by sending SIGINT to simpleperf and wait until it exits."""
+    has_killed = False
+    while True:
+        (result, _) = adb.run_and_return_output(['shell', 'pidof', 'simpleperf'])
+        if not result:
+            break
+        if not has_killed:
+            has_killed = True
+            adb.run_and_return_output(['shell', 'pkill', '-l', '2', 'simpleperf'])
+        time.sleep(1)
+
+def capture_ipc(args):
+    # Initialize adb and verify device
+    adb = AdbHelper(enable_switch_to_root=True)
+    if not adb.is_device_available():
+        log_exit('No Android device is connected via ADB.')
+    is_root_device = adb.switch_to_root()
+    device_arch = adb.get_device_arch()
+
+    if args.pid:
+       (result, _) = adb.run_and_return_output(['shell', 'ls', '/proc/%s' % args.pid])
+       if not result:
+           log_exit("Pid '%s' does not exist" % args.pid)
+
+    target_args = []
+    if args.cpu is not None:
+        target_args += ['--per-core']
+    if args.pid:
+        target_args += ['-p', args.pid]
+    elif args.command:
+        target_args += [args.command]
+    else:
+        target_args += ['-a']
+
+    stat_subproc = start_profiling(adb, args, target_args)
+    capture_stats(adb, args, stat_subproc)
+
+def main():
+    parser = BaseArgumentParser(description=__doc__)
+    parser.add_argument('-C', '--cpu', type=int, help='Capture IPC only for this CPU core')
+    process_group = parser.add_mutually_exclusive_group()
+    process_group.add_argument('-p', '--pid', help='Capture IPC only for this PID')
+    process_group.add_argument('-c', '--command', help='Capture IPC only for this command')
+    parser.add_argument('interval', nargs='?', default=1, type=int, help='sampling interval in seconds')
+    parser.add_argument('duration', nargs='?', default=10, type=int, help='sampling duration in seconds')
+
+    args = parser.parse_args()
+    if args.interval > args.duration:
+        log_exit("interval cannot be greater than duration")
+
+    capture_ipc(args)
+
+if __name__ == '__main__':
+    main()
diff --git a/pprof_proto_generator.py b/pprof_proto_generator.py
index a22e424..70f6084 100755
--- a/pprof_proto_generator.py
+++ b/pprof_proto_generator.py
@@ -30,7 +30,7 @@
 import re
 import sys
 
-from simpleperf_report_lib import ReportLib
+from simpleperf_report_lib import GetReportLib
 from simpleperf_utils import (Addr2Nearestline, BaseArgumentParser, BinaryFinder, extant_dir,
                               flatten_arg_list, log_exit, ReadElf, ToolFinder)
 try:
@@ -292,8 +292,7 @@
         self.binary_finder = BinaryFinder(config['binary_cache_dir'], self.read_elf)
 
     def load_record_file(self, record_file):
-        self.lib = ReportLib()
-        self.lib.SetRecordFile(record_file)
+        self.lib = GetReportLib(record_file)
 
         if self.config['binary_cache_dir']:
             self.lib.SetSymfs(self.config['binary_cache_dir'])
@@ -310,8 +309,13 @@
             "Converted to pprof with:\n" + " ".join(sys.argv),
             "Architecture:\n" + self.lib.GetArch(),
         ]
+        meta_info = self.lib.MetaInfo()
+        if "app_versioncode" in meta_info:
+            comments.append("App Version Code:\n" + meta_info["app_versioncode"])
         for comment in comments:
             self.profile.comment.append(self.get_string_id(comment))
+        if "timestamp" in meta_info:
+            self.profile.time_nanos = int(meta_info["timestamp"]) * 1000 * 1000 * 1000
 
         numbers_re = re.compile(r"\d+")
 
@@ -648,6 +652,7 @@
     profile = generator.gen(args.jobs)
     store_pprof_profile(config['output_file'], profile)
     logging.info("Report is generated at '%s' successfully." % config['output_file'])
+    logging.info('Before uploading to the continuous PProf UI, use gzip to compress the file.')
 
 
 if __name__ == '__main__':
diff --git a/proto/branch_list.proto b/proto/branch_list.proto
new file mode 100644
index 0000000..6d6bfb1
--- /dev/null
+++ b/proto/branch_list.proto
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// The branch list file format is generated by the inject command. It contains
+// a single BranchList message.
+
+syntax = "proto3";
+
+package simpleperf.proto;
+
+message BranchList {
+  // Used to identify format in generated proto files.
+  // Should always be "simpleperf:EtmBranchList".
+  string magic = 1;
+  repeated ETMBinary etm_data = 2;
+  LBRData lbr_data = 3;
+}
+
+message ETMBinary {
+  string path = 1;
+  string build_id = 2;
+
+  message Address {
+    // vaddr in binary, instr addr before the first branch
+    uint64 addr = 1;
+
+    message Branch {
+      // Each bit represents a branch: 0 for not branch, 1 for branch.
+      // Bit 0 comes first, bit 7 comes last.
+      bytes branch = 1;
+      uint32 branch_size = 2;
+      uint64 count = 3;
+    }
+
+    repeated Branch branches = 2;
+  }
+
+  repeated Address addrs = 3;
+
+  enum BinaryType {
+    ELF_FILE = 0;
+    KERNEL = 1;
+    KERNEL_MODULE = 2;
+  }
+  BinaryType type = 4;
+
+  message KernelBinaryInfo {
+    // kernel_start_addr is used to convert kernel ip address to vaddr in vmlinux.
+    // If it is zero, the Address in KERNEL binary has been converted to vaddr. Otherwise,
+    // the Address in KERNEL binary is still ip address, and need to be converted later.
+    uint64 kernel_start_addr = 1;
+  }
+
+  KernelBinaryInfo kernel_info = 5;
+}
+
+message LBRData {
+  repeated Sample samples = 1;
+  repeated Binary binaries = 2;
+
+  message Sample {
+    // If binary_id >= 1, it refers to LBRData.binaries[binary_id - 1]. Otherwise, it's invalid.
+    uint32 binary_id = 1;
+    uint64 vaddr_in_file = 2;
+    repeated Branch branches = 3;
+
+    message Branch {
+      // If from_binary_id >= 1, it refers to LBRData.binaries[from_binary_id - 1]. Otherwise, it's
+      // invalid.
+      uint32 from_binary_id = 1;
+      // If to_binary_id >= 1, it refers to LBRData.binaries[to_binary_id - 1]. Otherwise, it's
+      // invalid.
+      uint32 to_binary_id = 2;
+      uint64 from_vaddr_in_file = 3;
+      uint64 to_vaddr_in_file = 4;
+    }
+  }
+
+  message Binary {
+    string path = 1;
+    string build_id = 2;
+  }
+}
diff --git a/proto/etm_branch_list.proto b/proto/etm_branch_list.proto
deleted file mode 100644
index c66b0d5..0000000
--- a/proto/etm_branch_list.proto
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-syntax = "proto3";
-
-package simpleperf.proto;
-
-message ETMBranchList {
-
-  message Binary {
-    string path = 1;
-    string build_id = 2;
-
-    message Address {
-      // vaddr in binary, instr addr before the first branch
-      uint64 addr = 1;
-
-      message Branch {
-        // Each bit represents a branch: 0 for not branch, 1 for branch.
-        // Bit 0 comes first, bit 7 comes last.
-        bytes branch = 1;
-        uint32 branch_size = 2;
-        uint64 count = 3;
-      }
-
-      repeated Branch branches = 2;
-    }
-
-    repeated Address addrs = 3;
-
-    enum BinaryType {
-      ELF_FILE = 0;
-      KERNEL = 1;
-      KERNEL_MODULE = 2;
-    }
-    BinaryType type = 4;
-
-    message KernelBinaryInfo {
-      // kernel_start_addr is used to convert kernel ip address to vaddr in vmlinux.
-      // If it is zero, the Address in KERNEL binary has been converted to vaddr. Otherwise,
-      // the Address in KERNEL binary is still ip address, and need to be converted later.
-      uint64 kernel_start_addr = 1;
-    }
-
-    KernelBinaryInfo kernel_info = 5;
-
-  }
-
-  // Used to identify format in generated proto files.
-  // Should always be "simpleperf:EtmBranchList".
-  string magic = 1;
-  repeated Binary binaries = 2;
-}
diff --git a/repo.prop b/repo.prop
index fa056c1..63f16b1 100644
--- a/repo.prop
+++ b/repo.prop
@@ -1,1269 +1,1325 @@
-device/amlogic/yukawa 4138704ba5c1b2353972a92fb680030a3715143a
-device/amlogic/yukawa-kernel 23bb70e6333fe9f2da724f20384f522d84709347
-device/common c7183550fa5b61f4941cce89f383fdf684d7d46a
-device/generic/arm64 84e36405d88c3d6e69abcd236de196e8c8c07818
-device/generic/armv7-a-neon a0ee1f09b316767ab6e655dcf670fcdf1da55ca9
-device/generic/art 932313511051bca0c5c34065ce7b3b40f2396c78
-device/generic/car 2dc6c79be74fb87e9ff41bb8277d4a7bd63676a7
-device/generic/common f2fa641d3403f386d689f737799815e8d5996153
-device/generic/goldfish 49b19504d5eeb548e60b8cfcff1e3b1f7d838113
-device/generic/goldfish-opengl bc8978dc9a4e3810f46a81f8d10a1c83504bf5d2
+device/amlogic/yukawa 97a78be1adc18e417941031214d204f8bd154ccc
+device/amlogic/yukawa-kernel ab42676cb163c20fcf244b5527621a38e51d942c
+device/common 304684f9cf7142395abe59f1680cab37e7244418
+device/generic/arm64 a3e7586444ed35d3ccd49f0023a21e803ca3c912
+device/generic/armv7-a-neon cda739178f40b27be8293358e4e631a447a8a15a
+device/generic/art 191b6ce17840d860c5df4fb7e4c51ea69eaf2560
+device/generic/car 2e75c66e216aaab595505ebce93513d23bf654ea
+device/generic/common e76439ebcb39b9e89af296c57475bafd237e492c
+device/generic/goldfish fd74d35fbccd56d47ccf2feceec2544d417f3438
+device/generic/goldfish-opengl e551af51397c8a15cf9501e8017e645f9e3a8294
 device/generic/mini-emulator-arm64 a8c0896b7b861d7b88978c39b2ff2378cfab11d4
 device/generic/mini-emulator-armv7-a-neon e601f097400b954be840190789ea50ebec3d749d
 device/generic/mini-emulator-x86 d88a605514040a77cc5a90f8c48a963c652963b4
 device/generic/mini-emulator-x86_64 ad534dd78016dbdf78c7c2140ad606aca6d02568
-device/generic/opengl-transport a7a674b7500d644399e4875bcb750285369205d7
+device/generic/opengl-transport a8e5b0e4e583a7239c454d3f577d4775ccbc827e
 device/generic/qemu 5ab1a80ca9a3edb54b8db53e20508f132aa9af8b
-device/generic/trusty 042af21cd1b3890273a9d2f9608203852bff6ce7
-device/generic/uml 0e69c9f8338883b149c52b15d7fae21bed1c5461
-device/generic/vulkan-cereal 126f9c0b213d15112bafafaf94346d54f367a257
+device/generic/trusty 6dcdbceb5f1ba98805e45ddbfde8d11c5885903a
+device/generic/uml fbe37ad13da883f9ab8acf83e6f0116fd8ca5a87
+device/generic/vulkan-cereal 2643a628b0292640f8bc27e8829ccfba3c5a3813
 device/generic/x86 817ed7bdaba24c0cf699236ba877858e7516acf6
-device/generic/x86_64 89d16e26d2325b77ada8ee2372a261229e71298d
-device/google/atv 6523588ef06d6ae5eb169e908fc3aa657c188e0d
-device/google/barbet 91dd8dd49748a9c9cb00240929a41518d1bb0247
-device/google/barbet-sepolicy 8e594e5f15268e290198041915dc286d0b3e8188
-device/google/bluejay 3e05420a0c7b9d483c7077358740ec8384d29010
-device/google/bluejay-kernel 7d186820ccbf79d4293e574ad925eb8e57cd8214
-device/google/bluejay-sepolicy e0a06456d9b5c2cc1136419aaec4740712becc62
-device/google/bramble 971a803910de7e32242f6628a27c3509e290fd79
-device/google/bramble-sepolicy 8136792ccfedd03180135392a6df8796fa3d9ae4
-device/google/contexthub 15cd088f65687a89ee6d01da5c8327b78f5af8dd
-device/google/coral f1c8c945785976609e705b6589889633a0434819
-device/google/coral-kernel 6a22401545aa828c318f45014133786d13fc2cb8
-device/google/coral-sepolicy 3c92c9893fa2d9168c52e244aa1b24aa3927e5b1
-device/google/cuttlefish 0f935921151281a75a93934c950ade3be6edcb4a
-device/google/cuttlefish_prebuilts 757cfdca4d6deef3a4f2a586f6a04640837f3359
-device/google/cuttlefish_vmm d7d53f0be3946039fb68a7c259dfe739f51c133b
-device/google/felix e6d738341d27abe27ba85c95560d14664dc52005
-device/google/felix-kernel f0e29d4ff45772d961b35e64f82b8ef3642ec933
-device/google/felix-sepolicy d335b77a0959e7e33d745e87fdd7d01e64a90d4e
-device/google/fuchsia b9521d83effcd99c30f62525437f2a164439f268
-device/google/gs-common 1d9cc7c65b58b830548c17eac03b5d70b8358971
-device/google/gs101 639f3571e9913205ec41314a4635e267c35a7450
-device/google/gs101-sepolicy 5730a11115e737e127090d5eafe53499d453bf6f
-device/google/gs201 9865cccaa5a849654d922d5195cda537f26ee40c
-device/google/gs201-sepolicy 56d67c136cb6006ccdad139ce15f829747bfb7db
-device/google/lynx cb5a5ecb001cb84173ffe58e27295402b800b379
-device/google/lynx-kernel cfadb5faee96f5c5108f0b8cf43a9a99d8902382
-device/google/lynx-sepolicy c03d408bb46b9f4405a936746f51b3a2bf42c209
-device/google/pantah ad6d56df33fe24f4acec7b79a0668d347ef69592
-device/google/pantah-kernel a15e4a07bb7265e5481ef8416e8763b6c28bb52b
-device/google/pantah-sepolicy b7806b718a0ec810bff7e69b836bab7cea146d49
-device/google/raviole 59acb56285b05089c2f55eac2cfeabc3ca09c47d
-device/google/raviole-kernel 218411092e26f635db34dbe50280928fb69bddc8
-device/google/redbull 7aca7fbca97d30aff6aad07b93ee2107c471c2bf
-device/google/redbull-kernel 3d4a6ec7bafea3059efaa2ebbc92dc38c2ebb283
-device/google/redbull-sepolicy 4320f6f8456e95436998a1092d4c29decbbdca27
-device/google/redfin c499044953ae6f7f91df2a7c3d6148dae9fa4fd7
-device/google/redfin-sepolicy 82156eb11ca324d32f49a2224b2d7c283cd0401a
-device/google/sunfish e49280cdf6ad689e68c2fafe2bc7a3560afefa60
-device/google/sunfish-kernel b8e2a23d1d9ac21de8ae8d7d3d863bcdda35478d
-device/google/sunfish-sepolicy d5257e554a266e43520d5f947e1f21d383aa4d3d
-device/google/tangorpro 16317d058ff09a10eae93019c78809e437ea2a28
-device/google/tangorpro-kernel 08327c4c808b6be1577fc233d435c7593518a0ac
-device/google/tangorpro-sepolicy c31a17278ae1963bf0962aba471bf56966cd370f
-device/google/trout a7d6ccde3b67178216549f35e3844a9699a2526e
+device/generic/x86_64 0c5fe780ef0a8e5514add3802536e4affb80a77a
+device/google/atv 388f6c98acc9491042116e78e86a6f090b7fcf72
+device/google/barbet 047c1770e609eaea8d7a4bf1cc00a2b10dc262e5
+device/google/barbet-sepolicy b110507758450fe06d05bb7b1488c704676e5632
+device/google/bluejay 2f98ea4d9504f70ad45e4c5714b7dac2cbe52dda
+device/google/bluejay-kernel b223b3c8453fbf875cbcb2bd004fef84f86055bf
+device/google/bluejay-sepolicy e355db1bf86191e4a1fe8ddd0f7945e05bc64537
+device/google/bramble 9c99a52ec659fe0f0e77f2e2fbe33184bc7020e5
+device/google/bramble-sepolicy b18bdb0cb0d88bc62506b299074317c885112ab1
+device/google/contexthub 559af0b949b78f099c6702e510674ed28400da2a
+device/google/coral 808dcef49395008beba96e44848a6c81f92ae78f
+device/google/coral-kernel ecea96f3ae41bb671e7f71db8dd750a7bfc15213
+device/google/coral-sepolicy 82e1353f5e9c66760b77bb04574a10e51470e7dd
+device/google/cuttlefish a19b6c37f9ec362703326999e4a8f5e7c2161b96
+device/google/cuttlefish_prebuilts 46b62e14af728b33303cce582e20f07696c72c61
+device/google/cuttlefish_vmm cceab5545dc6755c780ff82e9b6d392992eb727d
+device/google/felix 4714e217525243c672b00c5c682e8da3fc481b5b
+device/google/felix-kernel 866fc429b5328a8ece55c7cfad68fbc7cbf43beb
+device/google/felix-sepolicy 522a5b37202d3a8714d5777a753e0c4069e04efa
+device/google/gs-common c7fd94a92282861021b99d094c20efef03bb1e21
+device/google/gs101 e3b071ccbeb9dac29804e5f93775a75ea2fc76a7
+device/google/gs101-sepolicy c3fe6bf395f311a807d56152398c08ed1767dfe4
+device/google/gs201 a3bafc92f7824ec27f508ed2a56a48acc9b13cda
+device/google/gs201-sepolicy 3c53ee348ec9aa02bd115bbc8d9251302c47bd81
+device/google/lynx 0802adc6143f41f4264a2905109cd07bf1d55475
+device/google/lynx-kernel 228c64691edab036156a431e67491e471a30f594
+device/google/lynx-sepolicy d9a5d56661a66f04a76ee7264f9674732306f217
+device/google/pantah ec29c2c53e8c276b43ab20442abdb9a0e940071c
+device/google/pantah-kernel ae9587bf5ed826e56b2852129def2738fb106cb2
+device/google/pantah-sepolicy 3f0a42de96fed7f62976a5acd98c897c9a0a9a4c
+device/google/raviole 018594dbe4146c179d0cfc7af0427e8a27a6d680
+device/google/raviole-kernel ed5e968e9efc9a5733fedd165fb6bc28e507fc79
+device/google/redbull 3ec8380b184b4173da7fd2c08d82fd9c3f4381b6
+device/google/redbull-kernel 98275328ed7996bc690ac3ab3c938d5900a34b74
+device/google/redbull-sepolicy 9e07f6d7197607de165d60772295a02623877243
+device/google/redfin 980d7b3ff026039446713f14dbd1d0a4ecfe5b6d
+device/google/redfin-sepolicy 8c7c65aa3c1cff1d598125e771abb337a71c75be
+device/google/shusky d9a3d4d7dd4c949bdd0c5952ebe231c9012b3b26
+device/google/shusky-kernel 4416989f30976095f92e7300afafcff1a80d775b
+device/google/shusky-sepolicy bcb0118d1c4304bd2ad6ef74e7e3a47c9812fcb0
+device/google/sunfish 9922ac5def8de1ff390cf96d6344278962cf4332
+device/google/sunfish-kernel b7b74ff51b5b643604d7191936d344029c891a7a
+device/google/sunfish-sepolicy c01ef41aa85035a58a9930ee0a6f7022909d628d
+device/google/tangorpro 3bb1127c6e391dcd32dae6de3873e08083b9e044
+device/google/tangorpro-kernel 435824fe7c6f3dd51417780b51a803c3bde67907
+device/google/tangorpro-sepolicy ace461048496a8ecb67e9846f6fdd77b57bad881
+device/google/trout a4c5229a699a78d58b649e4fcd8bea68bfc4cb5e
 device/google/vrservices 1dc8a3ac019079bbff315920970c7b2628c8ff8b
-device/google_car 22d6aecde92c05b1f1e976ed9a4ab61ac030ba5a
-device/linaro/dragonboard 7cfe05f412aadcb983c5c580b6cd529c14d3cb62
-device/linaro/dragonboard-kernel 4a8eefb09f118f4961b3af2b62da502026706f94
-device/linaro/hikey 1bf3663dcff464d568e000441fa59e89e509506f
-device/linaro/hikey-kernel e5a3daf3aaf60fcc38099b35bed34695e07581d8
-device/linaro/poplar aa5b652ee80d1190d4eeef52f7d6c35a0f2facf7
+device/google/zuma ff0cc4d3f416080b1f2a7bc6dea186805aa47022
+device/google/zuma-sepolicy 0c15160cad2bdaf51a6b92bea4bc1b9b1b0265fd
+device/google_car 2258eedb485d2430884e3c78068321fe59e79e7c
+device/linaro/dragonboard c5c1a30dbca96cf679b812fa46bba9f017c6a394
+device/linaro/dragonboard-kernel a69c3d8ce67c7d3b836404f420a2c4c517ee21d7
+device/linaro/hikey a328c1e2c93887cabdfc9d2c0b9e37ea5a145fa1
+device/linaro/hikey-kernel fb11252731255823dfe6157fb281682f0c037a96
+device/linaro/poplar 5aafb5b64b92147101e761615a131cf274cc8685
 device/linaro/poplar-kernel dc5a5f37e19871ed67bb9e9209e7318bb3e6ad31
-device/sample 2470a265e00ae243ae70a72e4e8a94334d34fc85
-kernel/configs a8d5f6a2fb6ac3682b9cd4bf777d82fed3a8d07c
-kernel/prebuilts/4.19/arm64 3aaac85780e9d11c8a4637d896bf274b36ba29b8
-kernel/prebuilts/5.10/arm64 67fb0853512095f434027e25b745f95f2ce74929
-kernel/prebuilts/5.10/x86-64 9e43a8c3c57b0a9344fd3988d70ed095ee684127
-kernel/prebuilts/5.15/arm64 8c9e48719e48ff3ee0190caed6bb2a4991bd359e
-kernel/prebuilts/5.15/x86-64 178075a15e6d17a8bfd07d1a4568879e24a5cdf1
-kernel/prebuilts/5.4/arm64 c8c1e206427f3a6235bc644022b7b990d44a56e7
-kernel/prebuilts/5.4/x86-64 e73dc86a6807f743e2edbb4b794b5a91cb36c01f
-kernel/prebuilts/6.1/arm64 daed414f365c87067c98aa5e41f0fc8886fff680
-kernel/prebuilts/6.1/x86-64 304b002b7fdb887f5e12c18f29c141753419e502
+device/sample 4cad5723f55811b5b18209d04975e9b75d9fd2e2
+kernel/configs 03c0f9647e6a1c3e4b32b27a21f65d7d99e12cec
+kernel/prebuilts/4.19/arm64 06ad6bdd626314e11d0ce0544c593f3222c22193
+kernel/prebuilts/5.10/arm64 04746c3cf89544bf5ab893c16eb4f5e819ea7c03
+kernel/prebuilts/5.10/x86-64 8798e6c8ec6e01b5b38a27897112be16d7637cbf
+kernel/prebuilts/5.15/arm64 50e9c57bcb8d0269abba2c4c4865e02fdc232770
+kernel/prebuilts/5.15/x86-64 ce82ff4f9e66598cd4cc4eaeba1d5e6171cfad86
+kernel/prebuilts/5.4/arm64 2b6e3f0ae12c9aedf7b1d728620f59741ed015c2
+kernel/prebuilts/5.4/x86-64 de58ce69a06ab64594994c360cc594d288afe2dc
+kernel/prebuilts/6.1/arm64 595f70ea08e9695f86228d7f59bcd57de0e1bf38
+kernel/prebuilts/6.1/x86-64 79b2aab0446c0cc8237c1f6a5e816d498285aa87
+kernel/prebuilts/6.6/arm64 407c061c16d125a4aa2d7d873a2cd29c04b17bbd
+kernel/prebuilts/6.6/x86-64 7c1f67d9a16e37a93b5175f97727b3e6af590868
 kernel/prebuilts/common-modules/virtual-device/4.19/arm64 31fa2c2d74f8b3659d8a2093f727486c4d890540
 kernel/prebuilts/common-modules/virtual-device/4.19/x86-64 396ea43be7fdb2f7fa7f5ebf3e9aa2a3491a0e68
-kernel/prebuilts/common-modules/virtual-device/5.10/arm64 bbddceaaba3e73784fb310e36c1cdd555955be36
-kernel/prebuilts/common-modules/virtual-device/5.10/x86-64 e2254836f7a0d4c8ce403abffa7728daa992ff24
-kernel/prebuilts/common-modules/virtual-device/5.15/arm64 9b89a2bffb67ea1e705b5f2b8fc4351a6b07480c
-kernel/prebuilts/common-modules/virtual-device/5.15/x86-64 af759a2b731ac09344b3e52b654cb68a2518654c
-kernel/prebuilts/common-modules/virtual-device/5.4/arm64 4f27972affa120ff4bf05d7b98c3d1ab738e1238
-kernel/prebuilts/common-modules/virtual-device/5.4/x86-64 19bb1957b2ed46e500386eafb79372891a2f4c30
-kernel/prebuilts/common-modules/virtual-device/6.1/arm64 84a4e0252ea963e7071543fe584a0a8dfbfd9f6d
-kernel/prebuilts/common-modules/virtual-device/6.1/x86-64 d4d4945f4c79884354bdccd56540e2b9d3e2ecf8
-kernel/prebuilts/common-modules/virtual-device/mainline/arm64 4dfd9286193966926179375e0e2540bf7c0b8128
-kernel/prebuilts/common-modules/virtual-device/mainline/x86-64 12392d78b08bf7299d68e0f0709bb2bfc98027a1
-kernel/prebuilts/mainline/arm64 4b94a14183712469f0fccca936e31b387761bcc1
-kernel/prebuilts/mainline/x86-64 989a3431eb6467c5364b0dab5ff0cba7814546c7
-kernel/tests 8722d490f60651c5f8f00a46b53b9e8e37671c7c
-platform/art 50494852898e640525842a9ffad1582635520c2a
-platform/bionic a95aa2296cb301737a08f60fc514cdf7c79f4212
-platform/bootable/libbootloader 8f6550180fd2d78f6a55f9f160b8ece61ef10c06
-platform/bootable/recovery c784e18a4acd96e2f59cf4bae323bc5de171034f
-platform/build da3a126287d2a030a266c3af276390b68814d151
-platform/build/bazel 8ea5601581cb4c1897ca31bf8925a5ceae5360a0
-platform/build/bazel_common_rules 0e621f4f85628cb00970bc46b8362523f7267bb5
-platform/build/blueprint fd59687a2f28e1ca90559d49d911c60d8a4a1846
-platform/build/orchestrator dda30311258a0978895fc5a1924ac9b888bcec88
+kernel/prebuilts/common-modules/virtual-device/5.10/arm64 fe4248980107e216f22018f6e938a6b94f772a3d
+kernel/prebuilts/common-modules/virtual-device/5.10/x86-64 b83770dcd0d482852017334f241e00a81df0eb70
+kernel/prebuilts/common-modules/virtual-device/5.15/arm64 319fc2f5f7c8aab672c9500fe31c6be0057ab31f
+kernel/prebuilts/common-modules/virtual-device/5.15/x86-64 024a68eb66e1b5822d350f3a533e6e4b5af648d1
+kernel/prebuilts/common-modules/virtual-device/5.4/arm64 d14f56e33ae9fa75c7c3741e3541176dae940e6f
+kernel/prebuilts/common-modules/virtual-device/5.4/x86-64 a5022fa53085218056c9f215dd5ea42d0fa80e68
+kernel/prebuilts/common-modules/virtual-device/6.1/arm64 a3c073296ff871933b2800c72c49bad5cb503104
+kernel/prebuilts/common-modules/virtual-device/6.1/x86-64 6a2b2d5d59a76f046bf24341d81ab9cf676baaa5
+kernel/prebuilts/common-modules/virtual-device/6.6/arm64 c599ab819433d1ddf02ba9f6370340b41d3ad329
+kernel/prebuilts/common-modules/virtual-device/6.6/x86-64 13dd7b617ce3ff88a6b87bb5d9ec46e76512b8eb
+kernel/prebuilts/common-modules/virtual-device/mainline/arm64 be723ad79cfc1b86306c6120ffe728ac0767ed22
+kernel/prebuilts/common-modules/virtual-device/mainline/x86-64 8ed621f9b9acc6832617a012584572283e8aadb2
+kernel/prebuilts/mainline/arm64 060a4fb9ede5c47d57633c461d39b29ec5c67c00
+kernel/prebuilts/mainline/x86-64 366de006e1587469d10706d8aacf3b8c03990248
+kernel/tests 212d8d9b2ae07070489043b8c54b8e9ffb6efe8f
+platform/art 3c576baf0a6caf71b359079cbd27c56d4036cb24
+platform/bionic 14f00977391a24100467c3c7e4247cbfa5f3f98d
+platform/bootable/libbootloader 15495747b0124237895a68603beca55bfc17a50f
+platform/bootable/recovery 46ddddd8ba31d8f2c91d8d18200c8fbb32f3165d
+platform/build 75e29db6dadeae5006f6b1c07590babab94e0344
+platform/build/bazel 8e863c7745e0f62bdd0a5a9e0eb16451eb8d5fe3
+platform/build/bazel_common_rules de359a353d123c21e67156496282f7e09718889c
+platform/build/blueprint 4023fb658d90f07d1d4bfa0b5b96cf0e6dc986e6
+platform/build/orchestrator e0edd5ca56bcde5b571e6b89a85c7a44cc26af38
 platform/build/pesto 6980c20af488be1cab45cc3ec1d56ecc1c017523
-platform/build/release f064308bcc3e7c825a297bf9a348473afb161bc5
-platform/build/soong 7cfb5e651a8851035528200d7a66391df8c9dc64
-platform/cts 2f70604e5fb498d815472dfb8b8ae6954f18a577
-platform/dalvik 90523eae3c6b989c2175a5ea751c2c58817dec0e
+platform/build/release 5284cb1eb585bf5b5a1325a902212a730a8282b8
+platform/build/soong 134307ba768e6e32778b9ac554777770e1d4e661
+platform/cts 0ca332aea9caabcaa3df3a1e83e00bf2aa939afa
+platform/dalvik f6c9136b2403e4f95a13d8a115320de29d712e2d
 platform/developers/build bf0f321f0a16d52d62ed3c499383609810845693
 platform/developers/demos 03814c35b8ee0a1284c667556260124d97466b28
 platform/developers/samples/android 3b699d3c85159a41aa6b34e4a7b9586d8721c973
-platform/development e0d827624ff14555f565444869bff7949f60d114
-platform/external/AFLplusplus 277b6249fb26fc8a7961eb84b970b35d5525ee88
-platform/external/ComputeLibrary f3d71a1c9e02a23cf9fc2a353510668d1f5236d9
-platform/external/FP16 39b08a054a8c089a52ccc842e08cb3d7f487d7b4
-platform/external/FXdiv be60de4ee8d00068488e3bdf650feb8c2d6881a6
+platform/development b6d7051450364c7e5a3a772c5d69e42101bb3002
+platform/external/AFLplusplus 7dad54b0db547edf76bab2a0335bdb13d97d54e8
+platform/external/ComputeLibrary 17ebfba6abbc158146d8d544cd36b7f1cb0c818e
+platform/external/FP16 5c2095aead545a481b24def3b29c67890fd624be
+platform/external/FXdiv 3fb9a4f50ea1e06881547abb0007915e2ff169df
 platform/external/ImageMagick 1d10a2764b5ad9622e4d9ea9cd5c141112bf4ab1
-platform/external/MPAndroidChart 8f6ed074bf663608451c1a506f1c9ff826d176d2
-platform/external/OpenCL-CTS 8ef7b47fdd0f99ec85a1167adf1a8c353028a227
-platform/external/OpenCSD 9e8779b900f130470b4c6267d91fb385f3ecdcc3
-platform/external/TestParameterInjector 21e9dae08ccce536f7caf687697952338300fedc
-platform/external/XNNPACK 5f19c6f4595cfc96db42f044655969e424ccff9e
-platform/external/aac c79abd09ea477f4f9b845f8e3df750fdf36b6575
-platform/external/abseil-cpp a4e258f61415f7ba0390f8606e231fc616725330
-platform/external/android-clat 81877db7aab99188616d462d9eddad33d8b1b0e9
-platform/external/android-key-attestation 548aae9614c56623ac1e5d4a2a79e1e4218535ab
-platform/external/android-nn-driver d8fb6306b76c84540a8952765e5a4899518c4080
+platform/external/MPAndroidChart ce82d34f1d9a3417a670d2e149f4c604b3ae20ee
+platform/external/OpenCL-CTS dc91525394866f2ea4668440b774deec8336ddff
+platform/external/OpenCSD eeee0b1825146a6565edf1d1f913f74796f9f332
+platform/external/TestParameterInjector 20f7ab1d8e82b010c110ddbf9b2ce3f9102ec916
+platform/external/XNNPACK 2b4f0e03568776a6bd5bce0e846bb92602f8176f
+platform/external/aac 37cedf2243383ec7ce761aa2a4139798794dd7f7
+platform/external/abseil-cpp e8e30e985e72dfaa0fee3a871de4cc4a2310cce3
+platform/external/android-key-attestation c04804c08327bb2a46eec360bbf5ade320cdbfab
+platform/external/android-nn-driver 691d9fa0138101e9af24c07a36054f6744c3d78f
 platform/external/androidplot 9b8347467de2bda30fefd0c5b2428c4844f327f4
-platform/external/angle 51a43db480bfc20fb43aee364b2c512fa7fdf8ac
-platform/external/ant-glob 95e51b66823c19140455380aed4cf49958f5a64d
-platform/external/antlr c4e29db728ee0bb93a6dbd2a9156cc8043b2f59c
+platform/external/angle fa5d171a90f16297f11d0587fcaad639a2d40171
+platform/external/ant-glob fbef97ec81227c563c20c14ee79d27356cf4f8ae
+platform/external/antlr d708352c23c5bb762262cdc6aa6886a983d2e138
 platform/external/apache-commons-bcel 29460e8058d5f5c44edc8c114816920416fb88bd
-platform/external/apache-commons-compress 354f8b72be434f0fa32a9947e2a101f5b9c92d55
-platform/external/apache-commons-io f6ca55358a699daa37f69999b696efadcc72af72
-platform/external/apache-commons-lang c6d4bf5decee46959b830b9e62dd56bbbe83b915
-platform/external/apache-commons-math 795ded37287df49acc7a2996046eb2c5696034a2
-platform/external/apache-harmony 108fa363df2197f1c3fbafb5c394d87fce2e5a3f
-platform/external/apache-http 0e862d3baa700afc164e60ab973e0d20d444d12c
-platform/external/apache-velocity-engine dfa3fd04ef696b88d215092c8d7cc793081ac37d
-platform/external/apache-xml c1dc6006333d4a84e596d85c0d648903e2143be7
+platform/external/apache-commons-compress 082f5e0ca5491fbff53b2e8137a4a85112bffc85
+platform/external/apache-commons-io e01b23f3ee699760415e222284752edb88f13714
+platform/external/apache-commons-lang 0e3df19134be18497c9e434f73d7a2f24acfff69
+platform/external/apache-commons-math ac362a7d8772e985b03ea869cea6dc7ab9106913
+platform/external/apache-harmony 706973ba11563a1d9d5c9d5a88e875289710f11f
+platform/external/apache-http 2a18e4ded7a8109fed060f3eece3f4b7abc4bb8c
+platform/external/apache-velocity-engine 397402905c3ed3d8342edd0c64110f43ea247b54
+platform/external/apache-xml 5e5131e27584c0408269c320f1f69b13d5491664
 platform/external/arm-neon-tests 502002a1ff353d56274d50181a04775934fae76c
-platform/external/arm-optimized-routines b4ba675073c06dea6656a59838aeafa9aee3dc9c
-platform/external/arm-trusted-firmware 6e2a077cfd0252d80419e70d52b82e1d088f59c6
-platform/external/armnn 7abb4014f78bdfcecdb9f12172f31f375a515ebe
-platform/external/auto f26a315339ca9d11b4903363ddacbb10f14f0fab
-platform/external/autotest af85cc740f39e257c2970b8b076e5d4bcce96ff4
-platform/external/avb 2872187085b746eda8e3c81bd5665d47dee648aa
-platform/external/bazel-skylib bae1cb97912499c4bc24b52b7c8763d168f08417
-platform/external/bazelbuild-kotlin-rules c9aab5b34c08ae4305da85f2544c008efe9cdf6b
-platform/external/bazelbuild-rules_android 9f6cd3dc25f853e0487b33ccf9a3043d57ca727c
-platform/external/bazelbuild-rules_cc 755aefef35c365d52d99adcb821073114df9d4d5
-platform/external/bazelbuild-rules_go 711a453236752a1786e93fbde5929b92008fc7ff
-platform/external/bazelbuild-rules_java 4ba159a9c43358f1e074edb4979ba3a5c5c590e4
-platform/external/bazelbuild-rules_license 4c952b4daca5076d515dec7e0a32371136b196ce
-platform/external/bazelbuild-rules_python b14b3520de9a1d6e38eb6cd63749ef78c28946c2
-platform/external/bazelbuild-rules_rust 6d3d2fef56d88516ff55084929e2ec506995d90d
-platform/external/bazelbuild-rules_testing 6a019acc4c96aa7a0d977b9542c4f7050e0bc39f
-platform/external/bc 54d31193bf3e38a3207c88786917fa8fb66bb68f
-platform/external/bcc b473f90a744998ab95330d6dbfcf5e3a08c6d432
+platform/external/arm-optimized-routines b34955b0bf8c6995e9d20c7bf68561f00fa5e62d
+platform/external/arm-trusted-firmware f8e8a97fdcff5c1f087cbe55beb4d314135434b9
+platform/external/armnn 58be8b2f7c6a3f34f4750c99ad1f604e4f2b0d7f
+platform/external/auto e429a0372e20aed9baa35e0b101b7f408f7c65a3
+platform/external/autotest ca4c4a14757db03dcb6cef14d5d3506b95afb0f4
+platform/external/avb 7c5fc412e814b2c5e27fca1e3db7ef9fecec6b7f
+platform/external/bazel-skylib 056c2e30d29e9477dc98d1b4101eec1818c1d977
+platform/external/bazelbuild-kotlin-rules efb95cab551ed7e739abe3423ddb64c67d74b140
+platform/external/bazelbuild-platforms b7422ea49136562f688daa9caaf7df83810fc44f
+platform/external/bazelbuild-rules_android f0fbe27b324b7b0408df6923d857166188b29538
+platform/external/bazelbuild-rules_cc 8c87ef785486d8c098d20cd5d2007786fd3a6cab
+platform/external/bazelbuild-rules_go 5e2ae9bc3617dc74cc9ebd67f2baea1a60efcf1a
+platform/external/bazelbuild-rules_java f489455d53be9ce140fb8318ecfd6a28013b0bea
+platform/external/bazelbuild-rules_license b8b4d99061a05d6d4ad6580ea52f635e493f0b5a
+platform/external/bazelbuild-rules_python 39705bdbd60ca62804261e769fa738b11278a8d3
+platform/external/bazelbuild-rules_rust ec9f56340c35a6552d18a202c1f6f89bc8b89dbf
+platform/external/bazelbuild-rules_testing 6e00ad23090a1d4262c898fa86808c0a34d58adf
+platform/external/bc 357066968623b5b1ef31ceb9ef9557e8430993ce
+platform/external/bcc a34e99603d5bee16790ce6ee20826de2166b78e1
 platform/external/blktrace 9d58d5785c1502152923376b0a6c55c2c8c84509
-platform/external/boringssl b49002ef173181a44e2e323d9011219348ff27df
-platform/external/bouncycastle 7aa379a2df8442e36e819c1a0ed537fd9e6b2c36
-platform/external/bpftool c75ba4f2fc62e6df79069e7023bd43226f78ded8
-platform/external/brotli 65a28b94db687ac3461a5bc2595a1f1a7fed9abe
-platform/external/bsdiff 5283e95834f3c00190bb3680119042f37ded5dbf
-platform/external/bzip2 30c2054978ffd069996e994efa7d712a70bf42c2
-platform/external/caliper 656c0620986d1158467fce467f9fe2d64eca2658
-platform/external/capstone fd5fe7918ecec3000e35938e33b38b13d623946c
-platform/external/catch2 ebcd91591bb8a4d35299c77b8bce50b56945357b
-platform/external/cblas cadd9db4ada6432ee13d16f48ee8ea2d5712f558
-platform/external/cbor-java 043fdf1d2127bd0be9d6346d8bb9b7173ff6cc35
-platform/external/chromium-trace 2967cc04a841af5b348bd9401f3210aa2f345a52
-platform/external/chromium-webview c205ea39c52092ef6d401d7371660a6d6a9ae821
-platform/external/clang 37ed869361f7a7af068d4c9639691ed417c26226
-platform/external/cldr f4f9d7305795637711b704abca17014f6b99c3da
-platform/external/cn-cbor f6101279aa69296d92dd0b59def24a6c7baea900
-platform/external/compiler-rt 7224d9befda7abde3ee69e368665857b94a3351d
-platform/external/connectedappssdk d2c6ffece20bf2575881499c0469380f2c39373f
-platform/external/conscrypt 301b5e4ebff492fad5dc58d7dbaf3b68834e646e
-platform/external/cpu_features 11cebdf28dc83e5d26f2f8c312e76ac85ac2b966
-platform/external/cpuinfo 0aeee4bee5091a1801b1edc6ca790883540d5f9a
+platform/external/boringssl ec1b3bc2c98d811eb1cdfbeaed00a7f0bfb16659
+platform/external/bouncycastle be15490fd076195035d61cf3d6b8be01f07b53dc
+platform/external/bpftool 23f59f3eea45390a8ea624f3f836873fdd0a0985
+platform/external/brotli 7746d50f71657c06c6311307028635c75628bd16
+platform/external/bsdiff 6c1080b5a74f9f76029b71e31571150a4b775048
+platform/external/bzip2 449c870c546d8ce8c72d6c022361fc43eaa4adb4
+platform/external/caliper a6176224f1b94fdd3c82a97df99a2976b29312f8
+platform/external/capstone 091a98e005d7a0f109a35956fb8539de8685e5df
+platform/external/catch2 689168dd1ef3b64a37353425da9f1cf0b0707af5
+platform/external/cblas 8f371b58d3cc8c036be9e7a6a78f993884b19be4
+platform/external/cbor-java edec17ad5cd41bd3b3dd23032a039dad0403fd0c
+platform/external/chromium-trace fd2a58032b41fd51c45c9e948795f13be07a8e01
+platform/external/chromium-webview 3506683857cba1c2c9f353a03d2411f8c9bdcf73
+platform/external/clang 156fa912f34d3cad47dfde740c039ec4a5c534af
+platform/external/cldr e7866b4b69684801f586f020f6686c98a9a09ec6
+platform/external/cn-cbor 033b0e22b55a3343ed19421be358cc47db7d0428
+platform/external/compiler-rt e25d5390efa17e310604084010c89cfc61bb80d8
+platform/external/connectedappssdk 4552c82182c2b241ea1bee1dcf46f36ccf29d103
+platform/external/conscrypt 1da1e3b6767ceda39054a79961f3643a175f3194
+platform/external/cpu_features 533991d173140f776ae8ee66c86272d36dc2c5cd
+platform/external/cpuinfo cfc8b18183ae47ddcf5075a8e8c2a535191f7368
 platform/external/crcalc a2330584579e3a1de604c0d703491546a39861fe
-platform/external/cronet 80274d85c2209bec7f20d6e2f5b90e7cc5428879
-platform/external/crosvm 59851e1ce9d1db97bc18eef59b930c2d114658ee
-platform/external/curl e08d66f399a5f213d736fca8b322406c37775c0d
-platform/external/dagger2 8a5e5008c54007eb36f0c30ddac9012f2037c4fa
-platform/external/deqp 67b908a2888af2d96842434b70d9f4c9cf23644a
-platform/external/deqp-deps/SPIRV-Headers 08536495f8a964cbd80110952a0cc837527165e0
-platform/external/deqp-deps/SPIRV-Tools 1ad3d2195d74e1ec84f8c3533041dfb313b65b4b
-platform/external/deqp-deps/amber 2955282d3c2d3213fe11e5c93170b8c3ff7dfabd
-platform/external/deqp-deps/glslang d9814bea6ce0434b6f0ed3f3d265288f2e4e52d5
-platform/external/desugar da47960df7ac3d468b61e4aae9b79553f57b889a
-platform/external/dexmaker 9ef3778194959419f196f7fde9adb14a66e5e878
-platform/external/dlmalloc bca4c256fdde629b82bc3220bc5df74df3378ac5
-platform/external/dng_sdk aea983095e7aacab5f8a9c350d19fdadbb72ca84
-platform/external/dnsmasq 7015b3897fa940b902d8d09518257a52194017b0
-platform/external/doclava 29ae8def33f56e19c8289b5cc5be58754331a68e
-platform/external/dokka f4a16b375c3d089a617314a473d8558e7e101878
-platform/external/double-conversion 0b207c6f56992df4a895203599d3867864095e06
-platform/external/downloader 7d424e59d16f4884dc60b4986f11d647bd75a664
-platform/external/drm_hwcomposer c097c6613146c0e35900878a945249a9ca151226
-platform/external/dtc 39f0d7f7661c52d7f7501c756f8f8e9418825baa
-platform/external/dynamic_depth 2d0f512acdf499fdf3d9fc26d4de46f20df0fd7e
-platform/external/e2fsprogs 0597519be7d78dbe35b78580ce9566392de7dba0
+platform/external/cronet f7a63d6dd5f3ed21d0d3ee62b4c4e56e32b14111
+platform/external/crosvm 646662a67e4851b0e670d58c4f107f4ba8b59cdf
+platform/external/curl e73cfcb7f7f74bf28d5b22092f1fbe4b2e7bfccf
+platform/external/dagger2 f239eb87e2f4235b47c5b32a85bb60dd0c7119dc
+platform/external/deqp 3b837744cbb2937b7f22c03ac3b96a29d7dc3e4b
+platform/external/deqp-deps/SPIRV-Headers ca17dfd1766a042c9974279d038f384f22a979cf
+platform/external/deqp-deps/SPIRV-Tools 5d9e344604cc8e3277856083703fe23d9c556ffc
+platform/external/deqp-deps/amber 470857ca64e58077fe11a70b616a66827155e1af
+platform/external/deqp-deps/glslang 78b9400d3d7e0cb76b341ffa40e6074fab7c66d8
+platform/external/desugar 2c9c39d47a5bb3b915f1d89f3be81badf694f289
+platform/external/dexmaker 214cb61470c07dbae9b3f9e61b65f32b9e25bdce
+platform/external/dlmalloc 2288eef105a42a0f4791a5999f4e64cfe3b4d979
+platform/external/dng_sdk b948d530874c6cc61d8f6b453d67eb315832820e
+platform/external/dnsmasq c8c56c42cb5cb8df51e67ef05ed040960c246d23
+platform/external/doclava 0c60d431b2f03540f05aa7677ec46ff94f59fbc1
+platform/external/dokka 0de0992e12c7ba038661fa7383d74fb0b4c211a8
+platform/external/double-conversion efbfeb073d7b21bca644b7f1daa4375a36a0be03
+platform/external/downloader d4eb13297cf4b5f2a52bf2f190c6ad8e58f6ef25
+platform/external/drm_hwcomposer 156d7912fbdbdda721a98c1a96e2712cfc05958a
+platform/external/dtc c393ed997b70add7a77f807846b044d44547469a
+platform/external/dynamic_depth cc4c71ddc2127a4a0275bc0f6f959619b702851d
+platform/external/e2fsprogs 4bdfee05e480f3c5d006a2e7f2adc95ff7af694c
 platform/external/easymock 78c20bdf92d5b8f4950f410d707dbc1cb3496612
-platform/external/eigen c406a11213b3b9ba8ad81e66281ed374e0c17dbd
-platform/external/elfutils 419368b972179181e2bea389afdbb9c5256e2f90
-platform/external/emma 8fdfe3edb6571867664fecb6c28eb74cc08aa349
-platform/external/erofs-utils f884dff29594a0f477f88f651c153d5de2c46031
-platform/external/error_prone 59857d9f3a76e196b55217d8a416c05082b0365c
+platform/external/eigen 497064b8fbbfb91207b68ed908a97704f21c62cb
+platform/external/elfutils 8369edbe3d0be0aa4e0482e3edda864cc5948b8d
+platform/external/emma 7e460f6c7f4919d0b8fa6811894668f2f1ce7ceb
+platform/external/erofs-utils 9b65e9db1bfc76acb1ffe4ebb5712c953854dba1
+platform/external/error_prone 6ed3bbceab25c0bc2da758171651a2441bd87194
 platform/external/escapevelocity 73e06735c7ee06982d6f2dfa7ab5bfae0b2d852c
-platform/external/ethtool 9e377c4eb4484c8c8540ad745fa82a9d2fad031c
-platform/external/exfatprogs a23c86b7d8dc0cce128d16904ca2604ee4985f1a
-platform/external/exoplayer 982bbd7fe732f3fcc3b9b3bb7243f45d26e7ff1b
-platform/external/expat 5f91053febcebbbb271257fad1abefab4a436e1b
-platform/external/f2fs-tools dce36c1ba4a16c77927f0a0e97065f736ad4c107
+platform/external/ethtool 30151a21d00c84b5c0c5ce45c57ffa9e96f212c1
+platform/external/exfatprogs 366afcd3e160568b349fcca3d1d9e30b82d35758
+platform/external/exoplayer 737b7ecfaf4a9a94c5e49c5489a9cc5564d6bf38
+platform/external/expat 4ac343bb552d188d01b43331e3f40fc7cca32dd2
+platform/external/f2fs-tools e7b2c9234873dfbb0defb86680fb29e6441ece43
 platform/external/fastrpc 3065a7f78ba670bff8854a4f1c2e57e8a65ccab3
-platform/external/fdlibm 5b0dddd008a606e0bf9918615375760fffeb7d1a
+platform/external/fdlibm 27f791b7d09cea8df03b57c5bcd8122a9aa5da47
 platform/external/fec a2c7619bac44104319a7af8897f793e4a4a3d4fb
-platform/external/fft2d 56d35e29b0ae513da2a0c646e13cf62c3824639e
-platform/external/firebase-messaging 3b50eee31a498f8e976cd665e9e27704c6641a83
-platform/external/flac 683578a67e565f48182c907fb98ff629a326e349
-platform/external/flatbuffers ae3ddba56474809edef52915a659f25f24756900
-platform/external/fmtlib 2be8856bd476ad20c05b0142d407e89dddc79b8a
-platform/external/fonttools cfc52f31cce98f1e7637b09787b7c6364016cdd6
-platform/external/freetype 5d1ae85aac72bdefa774ecc970ef5f4615bdeedc
+platform/external/fft2d 9d975a5598c63575705503a8dfb2b469f191295a
+platform/external/firebase-messaging cef3ca38977ae178a8c2276a4a021b97c7c1c254
+platform/external/flac 4c69313f09e883faddcdbb0974706cbca8f98ac3
+platform/external/flatbuffers cc78d94a92aeb9a3c7c3958c571825c49e1b41c5
+platform/external/fmtlib 790cbdbe85f972eada1185fcc5d2d8bbca11d673
+platform/external/fonttools efcc87e71b91f09fb530ac5682acff6e5e29ebbf
+platform/external/freetype d577c9f9793b3f84f18c4b8cf4849a76930a496b
 platform/external/fsck_msdos bc06adce6ef1d72fc9513506334e1b02cc724748
-platform/external/fsverity-utils 28f83d478835de0c202773227b8cb9bfa87a0e3c
-platform/external/gemmlowp 08f2325e053bbbf433bff49465d932301539efa2
+platform/external/fsverity-utils 95820ba0eedbc1b2fc242dd6ea61854b8bcb54f6
+platform/external/gemmlowp da80e5184739080078c16039d1a80af8f44cdf62
 platform/external/geojson-jackson 3a1013e96df5be6b33fc90ba7d758bdd99ece91d
-platform/external/geonames bef4e3a0610d6a9e8b1f0abe605f7afc9bf6e4c4
-platform/external/gflags 78c0837ae23e6d9d799783b2bff2077b4003b90a
-platform/external/giflib 1a06eb54ba65a37216ec265a47505c9891cca82c
-platform/external/glide 783bf3f7159668d379b64e6d0ce7ea319b5f3ad5
-platform/external/go-cmp 6251c118c21362a11f0ae011200e66ef1bff4867
-platform/external/golang-protobuf 07e05ca003679108fbe01a52734de060a2344945
-platform/external/google-benchmark 59680164324b2a5690fe493f5ecf55807d3987a4
-platform/external/google-breakpad 82f1b69046d5c5d8cae6c6bb6959ea1f83f75546
-platform/external/google-fonts/arbutus-slab 7c1bc453c1f2e52fc3ccf800942543e9dd499762
-platform/external/google-fonts/arvo 72bd620ed22b1e1f58db808ab7ece6a248fa0ba0
-platform/external/google-fonts/barlow 505ea0f7e069e25e2627df0e0d7e72c11c9af03a
-platform/external/google-fonts/big-shoulders-text 8474b682e66b69621b2c40939e8d1e1580174b3a
-platform/external/google-fonts/carrois-gothic-sc 0a48dbd7a2282ec953b62c9cdab59be65d258c96
-platform/external/google-fonts/coming-soon 28dda37ed44f32bb60b15efbd1959bac584cbfdd
-platform/external/google-fonts/cutive-mono e7cb80c7436d613ab3c36837d0ae978c0fd11b24
-platform/external/google-fonts/dancing-script 02281cc645f0ced8d3a527bc94d7bec8a9740997
-platform/external/google-fonts/fraunces 5bf65f1b7abf9ee0971601239b4fb856498c348d
-platform/external/google-fonts/karla 23b93903fa465d443bac5bd628009f07f60919fe
-platform/external/google-fonts/lato ce87737b67aaace8527237447ce31193b5456102
-platform/external/google-fonts/lustria 2bf6e36d5bba92911425250d96e3a05fad7fb4e7
-platform/external/google-fonts/rubik 75bd6433bdc888f1c0335235e3222048421e3364
-platform/external/google-fonts/source-sans-pro aedf68757ad3f8c5615e2e2c52f2d0b7031c0c4d
-platform/external/google-fonts/zilla-slab e2c615beaa69f9d52c458637baf32628372b886e
+platform/external/geonames 1e36b3cd7ca89824cad8b4faccdfd3315bcac99f
+platform/external/gflags 8d35c7a61d4117352245c5a3b2f83316cbf56e4a
+platform/external/giflib 26c95d106d2fbeb77b91c14efb852cb494875838
+platform/external/glide 3ef6cffc78ca68d2067f010cc3b5112b8ac9c35a
+platform/external/go-cmp 52a9879e77233408c963d4ab9a66d659a3dfdf14
+platform/external/golang-protobuf 2b6a867219131d3bbdfffb51d5db81a6c17c17d0
+platform/external/google-benchmark ad2550d62c5b4438f8a19c161df725448a6f8059
+platform/external/google-breakpad 8dec65d36f77ae79fc2c3ff0b45793e3f83eda14
+platform/external/google-fonts/arbutus-slab 5a0f1dc429c6786a417f71fa5bce1b52bf8a63a8
+platform/external/google-fonts/arvo f06fed28564b1cd209caecf163f18cec3e6f6c91
+platform/external/google-fonts/barlow af6dc4a61df2ce64284f6bd49ea02f4caa25dba8
+platform/external/google-fonts/big-shoulders-text bbe928acba5273f17dc9b007477679876c829f17
+platform/external/google-fonts/carrois-gothic-sc 0721cc75baea9b935c65d87ea54961e897c93922
+platform/external/google-fonts/coming-soon bfa5e7cd08b20686f20830474e84226037ebf836
+platform/external/google-fonts/cutive-mono df5c87a60c21b12a5d49f290c0b38d5a79f18ac3
+platform/external/google-fonts/dancing-script a07d257995264bdbf92f9777a55685be1fcdfb91
+platform/external/google-fonts/fraunces 1acf2ab5e62ce4a4574495947b118614451bd3b9
+platform/external/google-fonts/karla 46e7d161fa53270bcb039a4a08bbb0a16896cd64
+platform/external/google-fonts/lato e19110f4d7f33a2703d72001f70b0c4617181354
+platform/external/google-fonts/lustria 26237979db902a55b6a6138a67fdadd2cdb61000
+platform/external/google-fonts/rubik 567e0c48f015db4e55ad8cef07976cae04e56371
+platform/external/google-fonts/source-sans-pro 0c9a78a8dd9727f6fb26e75e29ce02ca06d0f1b9
+platform/external/google-fonts/zilla-slab 0fcbab1d36fac6498bc72598a98086ccd9543f3c
 platform/external/google-fruit 102ef33dbc86d485fb3a763e5135da673dea870e
-platform/external/google-java-format e15f40b54785bffe4909ba0cbea24749dadbed1f
-platform/external/google-smali c252464510a72830ce3b0114f730d8559e766ee6
+platform/external/google-java-format f03c0945b3241aa41c01010a63f1f8ee264bb257
+platform/external/google-smali 20cbd1aa480f86c5ef0d25fa74eab48c590f74a0
 platform/external/google-styleguide 839fa273f50bdda7830edee05e5f7fdaed4674d9
-platform/external/googletest 82f568697e54272b51b133ba100e7882f629c7bb
-platform/external/gptfdisk b8238af60f5d61764ed1d8fc4630dbe7879d8719
-platform/external/grpc-grpc 17add2a601b784caaaf72f96f670d95deaa173dd
-platform/external/grpc-grpc-java a409e03b16416b8e22860af3a620944924667804
-platform/external/gson ae7dfb454ccb6525fad8194f88f6d46d1b490f70
-platform/external/guava 06137b27ed1216517f7cbdbad36273edc8733c7b
-platform/external/guice 4dcba9d9cd48f2f01c4426854d2496d41bc30a40
-platform/external/gwp_asan 77d8ceef4d4db575b68ba28165d2e23169b4be60
-platform/external/hamcrest 66bc081b5276a1053cc1927714e2f27d63f7a86b
-platform/external/harfbuzz_ng a8ac36d137a06fff5bd82608aa39421512ae40ec
-platform/external/hyphenation-patterns 2dd6f207d16540eba9af3c3fd468b2ed91711e03
-platform/external/icing e6466c9af61daeb24ca3cb032e345a39e435e919
-platform/external/icu cf05e57d78cb605406786b8b8a97fb205028f30b
-platform/external/igt-gpu-tools 377a1a82ca1af043990a197c65f937ea0fc754d7
-platform/external/image_io 84a5e2e04d411e1bdbdd58f79c47517ed4f4f411
-platform/external/ims 10764e3dd8913449a17da552edc260a8d2f87d1b
+platform/external/googletest d035306fae6bf68034bc4de007c38d851eb36e3a
+platform/external/gptfdisk cc7c5a917da912304b9400c49b30ff0a1c09cc86
+platform/external/grpc-grpc a377879ca99d707f5b367b45b8d9c58888706871
+platform/external/grpc-grpc-java 235440469b15adc8551e626f735cced26321fb88
+platform/external/gson 9bdd998601332c33f763a6fd0c605b0a007cf0f7
+platform/external/guava f25b489aa8cf9cce098394ef0e7f81c79c634f26
+platform/external/guice 766a517416d5aa3c5e9fb3ca27d34f0696387f48
+platform/external/gwp_asan 2f3b5d3e4fb1529109a05c12daee0c2d4bf43b2c
+platform/external/hamcrest 41587c7a1934a77ce448bac2fb818bd5419cd10b
+platform/external/harfbuzz_ng 6a0740498c90969025221b43257fe8636171bc0b
+platform/external/hyphenation-patterns 9894cab86973087cf97f5e70b952dab7d178f39c
+platform/external/icing c91f6de2c9f12785377bcf51d3334225d96bc8ef
+platform/external/icu 3e5ec46a9a44da2d8a763e4707b2cef15c13f3ee
+platform/external/igt-gpu-tools 974bda752e105fac5ee236db22bb8dd547223084
+platform/external/image_io 41acf5ed9fad037fe3df8ed3a78caff073a7a975
+platform/external/ims d56feed51721cfc083d62130fd116961cf99e39c
 platform/external/iperf3 d810f388faaa558fa12fedabcc08c02a4ce835fd
-platform/external/iproute2 1713658913270df40e15a0782cb7c27f610cdc6b
-platform/external/ipsec-tools dd047f23e379fa922ddb060499b0479b573abfed
-platform/external/iptables 377dc2ebfd1e8a603714ce7790421ed891a35f41
-platform/external/iputils 1a57119bedb7fbe76cf11550de698089fed9b722
-platform/external/iw ceea43ee323730b9c575e26155c6e2a90d92a5c0
-platform/external/jackson-annotations b73fb394133048329b826e42accc351b0e73408d
-platform/external/jackson-core f694e43a471a0dfc4ae91b126dd2b2f6b6f6c1c3
-platform/external/jackson-databind 7188a442a84aa75debd737c73e45f8e1a3186f45
-platform/external/jacoco e6d5f9afc8ed1a240050ac27a0a423d10a320a6a
-platform/external/jarjar 14bc3f5b0ebb2dc485fd545d43c53ae43153407f
-platform/external/javaparser 08faaaa44878ad0d7291654e6cae0a425a10c71c
+platform/external/iproute2 45c4bdf3f00ecf0f4212a34c1210f75100589523
+platform/external/ipsec-tools 9f65ffc3c838fafe4d16e708a59887b915283c55
+platform/external/iptables 2ff9ac632e34d17d4ba109966424c619361e9eaa
+platform/external/iputils 2436347a1baaa906ee21e431f9e084c073816a18
+platform/external/iw f3954475c9100fd5aded40961269d73c5c665d2c
+platform/external/jackson-annotations c48151e34b08b6ba8bd2a4c6ae1e3dda1d011d17
+platform/external/jackson-core 2e3d0c6eada1359fe057bb5d7254940f9df24b0f
+platform/external/jackson-databind c72aa5a35cfbc74ebe5097a2fd3dd20b82edc73b
+platform/external/jacoco 16ff6865c239dde391bd32fe06c3caf43bd0ed4c
+platform/external/jarjar 22c32e43ba5b7d38b87dac6e88653a06603b856f
+platform/external/javaparser b824b80be09a745ee7c1ebff75f088e538a54ec9
 platform/external/javapoet 7d694e1d15d48ea8f1d0fb8fdf1ce70986a2b211
-platform/external/javasqlite 01bda6897394c6f3e41b1b40e6c4fe42fe984aee
-platform/external/javassist 786aeee108b83ac59045d3e13f50328291c66c17
-platform/external/jazzer-api b6f1dd907171fcceb8858fb0f00e114687d99ab4
+platform/external/javasqlite ca6bc1539b80c166087fb1dbb5781e231a851ab6
+platform/external/javassist 069e67919b079dc2038739c0f856e05d878d13ca
+platform/external/jazzer-api ef6b114e3f89f61433aeddb53a6bd25cfd6aec50
 platform/external/jcommander 0ffc853ecc79ff1d22b33525174da5904a3fa12f
-platform/external/jemalloc_new ae39186d99efe29e8773577fc35a36c49500bc23
-platform/external/jimfs 89ed7968263d45f6f90e41a57791b4884acc58e4
+platform/external/jemalloc_new 51d3c1c6a236d56d93db2c0799f1c87ea3e5fcf6
+platform/external/jimfs 8f6b84084563fc47b5fb0cb8879fc9eb5ab3a131
 platform/external/jline 1fa13171dc2b6621a8f1e6e0738c21f9815091ea
-platform/external/jsilver 8ff7ab186fd3ae54ac291b8147437326393c62b3
-platform/external/jsmn dac6344ce82d8de2dd220b564bb2a0f27d1bc8d7
-platform/external/jsoncpp 3866b49806cdba6de3af1cb9dfbe98ae648f6aac
-platform/external/jsr305 8ccb3b3ea69469ef8a485adc584b723db40325e8
-platform/external/jsr330 7d984e42cacea0fa7ef69dcb84f8b2041d29e9d6
-platform/external/junit 3e2d2c851062dea8fc50044ddcd22d79ae92f309
-platform/external/junit-params 0a50d73e815bac65df60efd42c538d52955eb2ed
-platform/external/kernel-headers 068f93d937cdb2e5af60378ffd8b8d33110deb32
-platform/external/kmod be4f7e4175709fd0e1219bb8eb5aac13c4a76c00
-platform/external/kotlinc 7f6907ba72181c804458fcd600a4de3d20b7aac2
-platform/external/kotlinpoet 59af59430298efc7fefd8280e58e52e539d12327
-platform/external/kotlinx.atomicfu a5cc21701c0a56ffc41a260aa8eca5259cb8b213
-platform/external/kotlinx.coroutines 178a92b53f8b71e5645f5321f5697f4210799ad5
-platform/external/kotlinx.metadata e43167408fbd3bf4b60acbdcf532a5f10fcb5899
-platform/external/ksoap2 19d275075332187277fe573372649104d173fdd8
-platform/external/ksp 5fbba0a9251a133514c6553625afda8d068c8550
-platform/external/ktfmt b0b1781e35d8447c36db41176dfa6894026c92c6
-platform/external/libabigail 7092b0e172c00429c5ef74666627b3cf3b9d6d4d
-platform/external/libaom 874f8e944a3204d4c39294f783eaba3233fba8ce
-platform/external/libavc bf8c9afe0201f9614ea4d1335224e87e9f0b0728
-platform/external/libbackup 7650f0321fcd692ce63c46c0e2849f99dee63330
-platform/external/libbpf bfe2247002197762949967ccafd7bb0232c5fe3f
-platform/external/libbrillo 53420514a426bc75b592969dd906a4e60b6b00e2
-platform/external/libcap c40671b04549f1ca7403788cc52a02f70d82f786
+platform/external/jsilver ce803c7f67f9b8e939b7d90a2d4821fe127935df
+platform/external/jsmn 80e7b966f7fa24921b4bf75a78c9020aad1864a8
+platform/external/jsoncpp 292d5080e2bfdbc51da107acdc9b572bbfdfdcda
+platform/external/jsr305 27dac0b3219690a30adb70cd15751b7ae04052d0
+platform/external/jsr330 6db8e8defdb7163a1057b11c6b873df10df7f2c7
+platform/external/junit e7390236ae54493bff287676abdeeea68fba5ebb
+platform/external/junit-params 7ddc80309366d26a0d081e61bcd266e409199047
+platform/external/kernel-headers 7b2855e567ddf18a09fd053438f4a68e2e167131
+platform/external/kmod 326551073ef340d168dd1f7e72f7ede576e0c4ff
+platform/external/kotlinc a587003b26fc540a3ddba00f216e352cc295b6e2
+platform/external/kotlinpoet a8cba5d35dfe400275d703022a32e6c91bc1cf73
+platform/external/kotlinx.atomicfu 4f462ef5a30ddde62afea59a33d989ecf62ee352
+platform/external/kotlinx.coroutines 9539fd4576764aefbea890a3629611e038bd223e
+platform/external/kotlinx.metadata 1559edc58eff51abf4c8c22b80bfd7b406fd0334
+platform/external/ksoap2 97f66f8a928357f8badd587b6923cf60a5c24df0
+platform/external/ksp 1b2cabe367bd5ea8ac753f6ee94e38dfc9283b95
+platform/external/ktfmt 800a69cfdf9e61b0f0221b0a046408102c9d7039
+platform/external/leveldb 29b80e11e52e248bb96caeec12428a3f71cf9966
+platform/external/libaom 9e49d764caa999e09859b9898dd728bf86bddac9
+platform/external/libavc 82bffc761eb7efed22ed32b29440f071efafd694
+platform/external/libbackup cf1ce75d3d97f693e21281e4a735c039588432c3
+platform/external/libbpf 6bdb060c45c1c84d3aa48414abc3eea44e3c2bc0
+platform/external/libbrillo a01eb2b9dabaa67fd77dae8bf9d4ca9615b2ebf3
+platform/external/libcap 73a87371731c8574a99cf87e46ed91565e8aef45
 platform/external/libcap-ng 61c4ba8efbccf1338f857846d4047aa96e87f774
-platform/external/libchrome bbafe4fa58ed5952ace8e48667bb0c0d784d1a2d
-platform/external/libchrome-gestures f0ec34a329921fd5ea0678e9ca8170f0ee9ebe5d
-platform/external/libchromeos-rs b27975d123683186505d746bcf516f8bb469da82
+platform/external/libchrome dd79c728dff7f889e810ffa14522f8ae87d2b955
+platform/external/libchrome-gestures ad4fde5e2f19c1cf1961c3b13410cd5e93a0738d
 platform/external/libconfig 24d8529c70e48df31edfc397ef8cc417d9442d89
-platform/external/libcups 56ea9e7007a6cb10a809e4a42ca3201d9cda3a0e
-platform/external/libcxx eb8c090b02a52bcafd9163511ba89e83e3575a47
-platform/external/libcxxabi 32921bcf87afa08661db67a3b289941eaa10e1ef
-platform/external/libdivsufsort f7a49e2c1487e387faee332b60191992ae9b93d4
-platform/external/libdrm 6d110343248281e74ee7f90e2390588b52705ce8
-platform/external/libepoxy 5750f73d618f0748118ed24048d11e4b9c726a1e
-platform/external/libese 84c6c51555d55af8fed5220c92a08a635b709314
-platform/external/libevent c315c9f34b37e5ae135a0b98bee83b3b6d30c68b
-platform/external/libexif e5c8fce9f581d80d4b636ffbe1680ba753b1bd63
-platform/external/libffi 5fbf1f888f308e253f55bcd81e473bd6de3c3990
-platform/external/libfuse 3c66b02520c63a25c03d8b86be529e91c869f4c2
-platform/external/libgav1 38bd58b3e5805862d8d34b0f324fa42f49fb094a
-platform/external/libgsm 715dfc1758248c0df113611768ff9b031a3e4241
-platform/external/libhevc 3ca50116db2d3538eb43014d37058af94b34d863
+platform/external/libcups 849d8e523b576aa225ed2f001dec08a9a184a141
+platform/external/libcxx e11bbbc673b01bf9ac9fa22a7026206a66300aef
+platform/external/libcxxabi 7d04870865cd957239c823cab403e230f4ddca54
+platform/external/libdav1d 5b270c69b51dcee979ba09f9ca892175eea25a9c
+platform/external/libdivsufsort 1951df59c5f214ea5623e400e17c727e9e038992
+platform/external/libdrm 33fa79bbd56581d448bd256384bee2aaaf94c424
+platform/external/libepoxy 4ca1258027c24e66734d76c9e4085ebf388a3818
+platform/external/libese 4183ead8843a712574f501d2e5d3f31dec0e65c5
+platform/external/libevent 0c609c857a6e55907f9e2485b0e9d1b7c878f794
+platform/external/libexif 254cc2da2c9f4ef4dff3a21ac255a9cb324bbdca
+platform/external/libffi d8a9381107763f37b279ee1a0c656667cc11244a
+platform/external/libfuse 87020d212aaacb6c28533f0ecae59a3143ce8c6a
+platform/external/libgav1 42ae33bf37a4e334df3598ae73d509eaf73beab4
+platform/external/libgsm 4a26554ec7cce9fbb6b8eef51f81857405f28439
+platform/external/libhevc 59ae87e6bc3415a30e41a0a8ecba23dc5cf59397
 platform/external/libiio aa30157751eac3fc66bd8d3c05f671fe22173dd3
-platform/external/libjpeg-turbo 20f746f763f5b7d3fb0944b818404448f14b5071
+platform/external/libjpeg-turbo 34fd10538e2c5ef63930cb87d7cc290e5f157f52
 platform/external/libkmsxx 88d593da1959fb8b39bc8ddd3a3f817417d71db9
-platform/external/libldac 1109e2c255614d1980db7c83009aace56e3ee66b
-platform/external/libmpeg2 18d231c8457b0c8ed55c29ce25553ba041880fff
+platform/external/liblc3 f4921f5cfca501e2961f94aa79fa438ddc8ef1f6
+platform/external/libldac 4eaeba1d6b7bb9f3dea8941f7389ebe78f1bd2cf
+platform/external/libmonet 61a7cd7edb819a5ff5d85117bf67a4ce962b9599
+platform/external/libmpeg2 33abc1cbcf8811f15c50cad9a2a4cb2e99448924
 platform/external/libnetfilter_conntrack c793c5e9d06d0d99cdde0bf4b2ca93071b22cc5b
 platform/external/libnfnetlink 36b2e95da1c45066635d4bd0d975deb129fc4dab
-platform/external/libnl bfdd340bd622321512b3c39e0d720c3b21848402
-platform/external/libogg afe11ad4187757fe40167ff35e0505847eea6ea0
-platform/external/libopus 72a456e42fb6f2342a6a20c6a9f842ddc193128c
-platform/external/libpalmrejection 9370ce3b46d3691d35c9d7fe23d6f058e1c4fab7
-platform/external/libpcap a2d0255775270c793e0c813bae1e50c4c2d4022e
-platform/external/libphonenumber ee0359ba9ec9fad833101017600a30386f04469c
-platform/external/libpng b08e31ee52e985512ba0b70c05982a2882a71079
-platform/external/libprotobuf-mutator 1f657e7b8ab2a95b3da744ca38875161804bf619
-platform/external/libsrtp2 99c0ae83c4556bf9ca3b867ee2906f59b7126c33
-platform/external/libtextclassifier 4b44652b9753598cba50dfb4d55ba189edc60bdf
-platform/external/libtraceevent a81c26ba3783c211e9518617960f3f203ed13324
-platform/external/libtracefs bde8167f854297cd771856410acccc0921261298
-platform/external/liburing 28bbf964fe4d6401c03f78f2295f4e8d24f35359
-platform/external/libusb 360583157bb9d8a11ce1d976cd9f4659db234e0a
-platform/external/libutf 6c4633be06e1ebe206150c4860f6424147968226
-platform/external/libvpx 4e59aba1ef3b3ae60f85d0e24acb51eaa66399d8
-platform/external/libwebm 705114c5e17547e9892c2c0e83c53efdb7a38a61
-platform/external/libwebsockets 1c116b9cee869955c0296a879df4c916ea1a0740
-platform/external/libxaac dbc06e62b81578335949b73eeefa913fa875f21b
-platform/external/libxkbcommon 863030e90cdfa7941048d1f14198997edeef52aa
-platform/external/libxml2 708d8a1d8390de79106be03b63c0a10398961d2c
-platform/external/libyuv ac4ba98919a3c39db7f5e4f5da14111c0f5c8304
-platform/external/licenseclassifier 7925656e0f02107add2849e95537b74fc37b2372
-platform/external/linux-kselftest ded4347cebbbb6e6177cddf5277515778a790192
-platform/external/llvm ab882123de9e4db1cb2711c52a5d05d328675bc0
+platform/external/libnl f11edfc8dba7381191c65515ae3abe186fd47c4d
+platform/external/libogg dba92f1032298ddebfe9d6ad38a8964a2c24390a
+platform/external/libopus a56788a36aa63b5e36e5aea99cecc25a0cdc771a
+platform/external/libpalmrejection 0e0f972134aaf237f7af99b38465712ff33b2b08
+platform/external/libpcap 4c3b26b9d1cce9ae6233adcc74e4db614856631b
+platform/external/libphonenumber 808c373d740f544780075b1e1afd1147e6940e85
+platform/external/libpng 9ee1e9b1930f091e4d4bc499f64d987cb38b227e
+platform/external/libprotobuf-mutator 21ffee72214b97d973f922216adfe5ac2f832e1d
+platform/external/libsrtp2 14a8b4fde891acf0b572d5d74ca0677e51753777
+platform/external/libtextclassifier 2abe333d18331e09635f444e4676a990ee9eedf9
+platform/external/libtraceevent 764de00e3fbd88b1ecdffe1a8ee15048e3203bba
+platform/external/libtracefs 919903727a74735bb47c3efdf95d394fb0e0f790
+platform/external/libultrahdr 38297ba7bd6a5adc71121bfc8e970b0424c119cf
+platform/external/liburing 6e0812cc3f54f6d968b17f01510430d4fc9b2abf
+platform/external/libusb 62660570fd3c6ad4b8b3ebf57f59f3d84b342fc3
+platform/external/libutf c2a7687b045b1afeb90811f458a4b3c4b775118c
+platform/external/libvpx 1971777eaf660d3928205f8c1d868edd437a5204
+platform/external/libwebm 0620727986a763b9c181d6c9e6519e960af8da28
+platform/external/libwebsockets acc63d404fd74cf6955cd8a0e12e14a52632c94f
+platform/external/libxaac c47c9c2f9624d7d9466735167c6798796d15d109
+platform/external/libxkbcommon 4d3c3392ee526ab14849bb4df0e9bde00bf5688d
+platform/external/libxml2 6a4a381c8e2a6ea3e7cdc72e7daa73352e9d71a3
+platform/external/libyuv a328bde3fc9443b1e1ac1e6008175cc373381140
+platform/external/licenseclassifier cbc4f4d8580a5f07a8e8733b7cc69bb0a1c39b6b
+platform/external/linux-kselftest 5489ffd9e895cae5a2d7bd3f90f8eb381bcfdaa9
+platform/external/llvm 6e1decea012513e8367fc732ac6ee88bc9756cba
 platform/external/lmfit d4e2f0edbf898336a4a63c79d11e6d12e3f6bc02
-platform/external/lottie b62839f78e36d41ac5208184503a28c80184ab61
-platform/external/ltp e0dd0f1c8ba1f4e199b8bd663a1ff5ef742efc43
-platform/external/lua 8e889734456b175eae12b71202f9c7c98dd605d5
-platform/external/lz4 b36ff997a854c3dc575ea436f64dceb67fba892d
-platform/external/lzma 1bf3a5d2310775f87e9a76333f9b15002867b525
+platform/external/lottie 7edaae7831d0e5b08de8cfbeef719b1ec5fe1133
+platform/external/ltp 215bb8bdef76ef57566913dc4e9fc0bc20b0d92d
+platform/external/lua 77ef82960b9a1114e63ca32538913f5d62c08b4b
+platform/external/lz4 4e59365ad527f483a06eeeaa8f17fa2a243451ae
+platform/external/lzma 96eb14d5ae3403195ecb2ba57353e8b1efbe85e2
 platform/external/marisa-trie 3b71c518b6de4e7d1fc9a18f43ee29c5f0c76c19
-platform/external/markdown 59af2b2915a9e01fb627171e4d18e98d475da870
-platform/external/mbedtls 75f36fcc6d94572cf2baf88e1a1f6c6919224917
-platform/external/mdnsresponder 509d838057446ee66ac513a2917c9c0c4f3f601f
-platform/external/mesa3d 921c4267a13c837c510d2431ec7236c2537955fa
+platform/external/mbedtls 1bd65223bb17aca21de0895ee67e5e4fa416e147
+platform/external/mdnsresponder facd9d15c3be7b5b6093d84395c2e9801ce49ae9
+platform/external/mesa3d d6c59a03524da48cbfa51b7f92425d15ffaaf96f
 platform/external/mime-support d94f12474474d1c8f706238ed82385fbd2a58550
-platform/external/minigbm 041c01fc4e6cce392a90a0f7f0b3c1b8bcf1ec8f
-platform/external/minijail 34b84f826182d45c24114d97bd6bed2836bd8c41
-platform/external/mksh 8b04971d659ab3fe798da9ab0c5fcf5ad24caf5e
-platform/external/mobile-data-download 15fb5353b53c5d52d2117da61f68bce81f32d173
-platform/external/mobly-bundled-snippets 21c39c21fddc4af42e275aa6b71fa47261502005
-platform/external/mobly-snippet-lib ea57ecc75441404f843591287e18b1b104cf581a
-platform/external/mockftpserver 00aef00dad2bf2c21ab7a46e126477f0e9306b37
-platform/external/mockito c46ed5f40edbd9aa851e79d70696ba202726ae4a
-platform/external/mockito-kotlin 178405a9c2444ea59e98f0516fd1b3a745438e8a
+platform/external/minigbm bdf524881063f21f2c2406d8b027e684960a3774
+platform/external/minijail b8f153d23e01507bf9de4a47c835402f424eb7ea
+platform/external/mksh 7ac368bb6fd1a9946481b10ec05399142e8e0289
+platform/external/mobile-data-download d6fd00e420535452ad52df77f0268150a8839cc0
+platform/external/mobly-bundled-snippets d7349ebff5d3ef532b898135e24216309cd646c2
+platform/external/mobly-snippet-lib 592f41d3db105cadd7874a6803a838d77087c08c
+platform/external/mockftpserver 7fa64006f7662faa642e264676ef4b84e5aa398d
+platform/external/mockito 63dcac2b48096ad074f6a0541bb86985431c40a3
+platform/external/mockito-kotlin 5fd7deae5340136e67db8542d48a176937c7f780
 platform/external/mockwebserver f6880ea05e1eb6e2a97951b71cbb061b3da07eb2
-platform/external/modp_b64 113a4586252c3e40bbe093cd158d95b3632a8c2a
-platform/external/mp4parser 5032af3e819cde7c17e44afe0b777427ef44cd4f
-platform/external/ms-tpm-20-ref acbc9e4a9400371c6c6f3828df7633afcda12ff9
-platform/external/mtools 13cdaa209fb89f0402b299d999c6b5dae20e43e6
-platform/external/mtpd ad88d61796ebe66944ab3c57f0c9a7914d6811e8
-platform/external/musl 641a0b36046beba0a7bd59d73e899ccb6d60787e
-platform/external/nanohttpd cab514e09edbb16ace9755be70c39bb36976de8e
-platform/external/nanopb-c d3a0ba379949ab07d6e423228c4658666fe84163
+platform/external/modp_b64 fa36245d1228bf04bf6e4798e7347ecc0490d08d
+platform/external/mp4parser 7ff82c4c17e01f4d856558a0cbef095fbe1f67bf
+platform/external/ms-tpm-20-ref 6397b91153fd0a752a6fbc5ca5676fa9dfbfd6b8
+platform/external/mtools 068daa3d65cb6e04e4a75f6168ecc549a3550f13
+platform/external/mtpd 9c6cd09e9d237436e5b9757e9c3ffd8d60b46b75
+platform/external/musl d5266f5433a1c21f6d80f63c628434550c6c1b76
+platform/external/nanohttpd 03ae51705d26b32097a96293e9971ca1e438e209
+platform/external/nanopb-c e0b84ec57740052153ed41929de2cdcc3357c3f1
 platform/external/naver-fonts be181d85b8b600bbc14fb65f6ec0d534f923dc44
 platform/external/neon_2_sse 55819c5d414d804c947dbc57922f6a3e9a15a94b
-platform/external/neven a9bfb9480869ddcc81ef7b3785c4567f79d9f918
-platform/external/newfs_msdos f4768f3615dd1319fcc3f9df3e758035a7abaac2
+platform/external/neven bf6e02cbd1716c912969e56f54bf773032ce64d8
+platform/external/newfs_msdos 2e1471e950e39ba6d95d8ecdcdf7480751431191
 platform/external/nist-pkits dd749b463ff64f12fdb4606f8ea060e84b884573
-platform/external/nist-sip 5de9f9492658a836d5d4eb3a334550cd71976fb4
-platform/external/nos/host/generic ab22111b24df407eb7127586f1d72d2174638824
-platform/external/noto-fonts b132a9f39e3f63403f58315ef3c26492864aa35a
-platform/external/nullaway 35219a8e342cd985557ed49631ff2fa604a8c65c
+platform/external/nist-sip f7cf7266182f3f6060fada8159c5e0751fef357e
+platform/external/nos/host/generic 26a915bc120b2cade7d1f8767e45c1bfae1c1ea2
+platform/external/noto-fonts dc0f7b43c8ffd3c2d754ad2715136ac20267f13e
+platform/external/nullaway 1c8db43e3b9cac5932f9e4e218a70a6088e3b0ef
 platform/external/oauth 09544024e174235981322fa7fbb7ac112cb399c7
-platform/external/obex 8db505c236be4ae377569620fbe728135ef118b7
-platform/external/objenesis fca3363bb9f0f0f4071e0b7b8b3b857332cebb3e
-platform/external/oboe ac697c74a7cac3e5c4a7239a59897a23afb32453
-platform/external/obstack d7e4270c0b4f7af1462c4d4ea19c0997d636c67b
-platform/external/oj-libjdwp cbd0bd371a93bbd85a2f64d19c904edd94c536a9
-platform/external/okhttp 440a266775a362b9268ba579f858cb6d09f6ff58
-platform/external/okio db9d40364e0ccda577fbca2c21eb2846acdcf95e
-platform/external/one-true-awk 20b5e942ab5cc681c2594e18fefc875ef6bf445a
-platform/external/open-dice b7b9866a87a701d4e73399b14e63f86ac90babbe
-platform/external/opencensus-java 98b3ff15e86dab8e0902474d60b54ee4f4b37a7f
-platform/external/openscreen ac368af39b482940267745378a5e93d8b136d71e
-platform/external/openthread d4aa31d4df5cabbce6741f81f038695c7add572a
-platform/external/openwrt-prebuilts 24b9fe17024a085078f25f7c9cf22287eb696514
-platform/external/oss-fuzz acc418f74ff1c7d439503f549704f26c2606123e
-platform/external/ot-br-posix 51904fc30f8590bd79689bec419f8f22c4e50127
-platform/external/ow2-asm 772c19ae73e77a4c83909359d10abeb18536a1de
-platform/external/owasp/java-encoder a0f8985f4d8666e599ba6a01c9abd5e120c21573
-platform/external/owasp/sanitizer 364933238830f2762654c4eb97bd543b890d1848
-platform/external/pandora/avatar 6981f6ae6daf49f0f8d372c44de45bec737807ad
-platform/external/pandora/bt-test-interfaces f057c6fb952a1ccb2e17be4f407f47a8ac90f3e5
-platform/external/pandora/mmi2grpc 3201ccc3a472bb11ee69a0bc04a7a945baa7af2a
-platform/external/parameter-framework 45018f62fb6e7a7df64e558f8505cae7f6ac5121
-platform/external/pcre d5d48aeb62970e614682acddb2fc42fba74cdaaa
-platform/external/pdfium fa272e47f9144f02f5bfada93a3c41bd984585bf
-platform/external/perfetto 00365094024b2d925813995d34aab48a68e8595b
-platform/external/perfmark 67a19738767b3cd0622ef511ca7929588204e8a0
-platform/external/pffft 38c8fded9539a747d507ddf71a0c3ba24e4d654e
-platform/external/piex 737f9cbcec1da9b9068c5ed6dd755924586b76c9
-platform/external/pigweed 2553ce1e7154dfd24357bbf89057c7dfc621b3e9
-platform/external/ply 2b44d2d74803e6772274a4af1ea327a0b21eb2bb
-platform/external/ppp 806b97dd88c9dbd81c43bd6c9391a1f453d7431c
+platform/external/obex ed95298e9ad8681d6e0652711d6505fcc0f7def3
+platform/external/objenesis 7a39d3a0bac880538e2762856c6c83f282676915
+platform/external/oboe af188a240ffc713185664329b446665bc3d17534
+platform/external/obstack f5495d1c64e2de72fdaa1ae930c7a1d24497802c
+platform/external/oj-libjdwp be244a80866a26cf1537bc5b1cabdf4c5d8b2cb6
+platform/external/okhttp c7331a925bf65b59731d4ca24e9438634e457819
+platform/external/okio 64c2294aa2c703b1878a4855cf2b2a85a2833b52
+platform/external/one-true-awk 4f19e575957db361525ec5546b52cabf436fc981
+platform/external/open-dice 18c4e4955b7e175651bb0cfc67502c80e1905032
+platform/external/opencensus-java 5c7987950f9bfa5415592b6c07f9bda6355e3ea8
+platform/external/openscreen c9a63125683be701093800ee2202a4092d2d5465
+platform/external/openthread 681fb09ad30074e5e8ff0490699614b52e702324
+platform/external/openwrt-prebuilts 048931538469000fb0c52549c0404bba3de81b4b
+platform/external/oss-fuzz 1e7a37d36111c73c49d4df1efb73a2ee31b1e7b6
+platform/external/ot-br-posix 5ef92eda0f816c022d589792bd1ac4bd070c89c1
+platform/external/ow2-asm 78f56b21f12ae6bc8e953ceba7ee393cbf33b395
+platform/external/owasp/java-encoder f9625c38c0268bfad9d70c8dd503a1f45925bd88
+platform/external/owasp/sanitizer eae8be8403364ccb474d7d45a5e8571d611eb5f9
+platform/external/pandora/avatar a8a2048b1975639625464b13a0c50d3c0c6a31da
+platform/external/pandora/bt-test-interfaces 32ba94b5ff9ec2b8d3c931f8329f7f8de111e78e
+platform/external/pandora/mmi2grpc 8662242de9fa5caff89d41d1da3a9615b332f77e
+platform/external/parameter-framework 6e5d1b88a8d9e4f49e2d90c8a513d7490a24329b
+platform/external/pcre 57c1e6d378f0ac90f11abc74b22b5456de3538da
+platform/external/pdfium 7a91dc736872321b9bd70650b0ef1f5dd819982b
+platform/external/perfetto 2bc72b0a01b7647f890b614ac5b7876a7ab7e4fb
+platform/external/perfmark 17e23eaa19a147c66d8902fddf22cc8e04f390aa
+platform/external/pffft b6296c7501ef6769c7243e769ca20efff3351869
+platform/external/piex 955d05479a034482f00f2311064b8f3647321537
+platform/external/pigweed 9be863dbb5c87f692e81a981c317246a943fce83
+platform/external/ply b98b9b3e52124eb7839700ed14c813660c2ef89a
+platform/external/ppp 435b0f05bf54837d4dc0cf4ced088bd1083999ab
 platform/external/proguard 26247a04689a6cb7778dc754e6decc98a5ef0b47
-platform/external/protobuf 702486a9f17c2ffe42fad09d4792b64310fa6551
-platform/external/psimd ab055c4348c85d289d1c059b705cde6298be00fb
-platform/external/pthreadpool ae811c2dde149770c6d1863aaebd9ba6327bc0ba
-platform/external/puffin e10572939c2b93b82d9361ed89606c5c7fe0bb1d
-platform/external/python/absl-py 7db37fa2a31e33ae833bb054df5c1a84cf91afcc
-platform/external/python/apitools 70af3004ea8ecb16388f4941a49d966ff98f4c72
-platform/external/python/asn1crypto e83c340f1581821c44806f56a15fcd216c5afe85
-platform/external/python/bumble 0cbcaba0e0e490f5eae822e54ec9c22935535de1
-platform/external/python/cachetools 6fe7e081487c903e70dcd2c64250c11d74948410
-platform/external/python/cffi d75827f45a6e3f3616b56de1e62b3fb18f136e63
-platform/external/python/cpython2 6981db38a4d8f04e7d2e4b6a01348dc2e134f12d
-platform/external/python/cpython3 bedb4ffd66ce8b8356c0c271e3b8aa48102a6b49
-platform/external/python/cryptography 8a3e655da0ef5138eef77db77f4fb58bbabd9a33
-platform/external/python/dateutil f83b1fe336f3a6cc7efa24601f035ace8c13f183
-platform/external/python/enum34 b9fe1afc806c58824c3839d8d6ee7dd5802a6f69
-platform/external/python/google-api-python-client 2cb60189370df33115b50be5382221ad3596ed63
-platform/external/python/google-auth-library-python 67b0f8112a5947b4397a23003535116ccd4ae1fb
-platform/external/python/httplib2 f9af053feb605f51109db995673e68142cbac758
-platform/external/python/ipaddress 16d3099ddda36fdc42dcf6e47d98b26da57aad51
-platform/external/python/jinja 8661806ec50e1f3cddc61349051a6db5d3997901
-platform/external/python/markupsafe 765ae2b78e0fdbd4f98067408f206ef048e4f4bc
-platform/external/python/mobly ea1b8f900872df2ca2667d128fbcd9e03db288fb
-platform/external/python/oauth2client 5dbf1c7601275d7fed24804040a0afc9516eb377
-platform/external/python/parse_type b93b876f49258eac44901930950441a9df1c6de9
-platform/external/python/portpicker e56ee7f2b1e8fc1efd002841185963481760fe3a
-platform/external/python/pyasn1 daf33c63374f7c3fc9b1190b75a6f1aa04896031
-platform/external/python/pyasn1-modules d74ee479c54c8fc8db1f4bace0074b221b95349f
-platform/external/python/pybind11 4a90cd9a1f72edb654fef995d844c19329525c01
-platform/external/python/pycparser 9ce5b7bca62a956dfcaad781eea50eefcf0dac6d
-platform/external/python/pyee 5e20d4070160b4fa7abff91ece7a61e7169319d0
-platform/external/python/pyfakefs 808f2f24f9aed23176ccffa048fd7e00e04354b7
-platform/external/python/pyserial d1a516ae36dda9d81f37e64fc06836c436df553d
-platform/external/python/python-api-core 972f4ca695f730c062a9210684c1d3b0b6c9fe0c
-platform/external/python/pyyaml b2fed93e4c267cc2add204ae5973daff0b657cfa
-platform/external/python/rsa 5282467c2ac7aaff2359a6738bc9f2c3d15349d5
-platform/external/python/setuptools 0cd129dc9f31837a11e07f69f228ac7c9e0f8bf0
-platform/external/python/six a5674e8e17bd4d76c1d163314a8f7c4aee3f05a2
-platform/external/python/timeout-decorator a1b12f3f59f2665fb12427b32d651b024eb876d9
-platform/external/python/typing ed0aba5fc5042d178027ccd8c40ef04601fcd4f9
-platform/external/python/uritemplates 53edc33171ceefecc1b0c56bcdf65385da3e3726
-platform/external/rappor cfc248265466249c4125bfc4c326ce1c8a6fde6b
-platform/external/renderscript-intrinsics-replacement-toolkit 14e47216cc12a521f7ee720b858ee696f8d9832d
-platform/external/replicaisland c25e445670c332d7ff4b16083f43d5c1af558e65
-platform/external/rmi4utils 1a61dea47dba9105522b16a5620ec2c41cc22a1d
+platform/external/protobuf 4140e0a3dcc49eb81fa7bade6110e04fe8496045
+platform/external/psimd 63c917ff6e8731077ffa1fbd9fcbbca328170e91
+platform/external/pthreadpool a0e1368e97247a8d9573637208e156fc62f7f2ad
+platform/external/puffin 422d9d46cb1aeb39740e6427940b0f8a97bbf270
+platform/external/python/absl-py fa7b044d714c58f43d01e2a60b1ca24a10f2e1c2
+platform/external/python/apitools c73f360193d8a8a2e9dc5e21e918c653b65cef5f
+platform/external/python/asn1crypto 9a12a9df5ce058e1f31c68cdea2bf4c40fe3af4c
+platform/external/python/bumble 036d0eb398deb029b8f8de4a887fbcb11b8616c5
+platform/external/python/cachetools a016b162e7f7953c33eb2544b6f7d56b3f652920
+platform/external/python/cffi a9fa1902f8514bb1c1a85ef451b463af06bbf331
+platform/external/python/cpython2 8789a06ec545f4affbd5757473daf50fdecdb2c9
+platform/external/python/cpython3 29a1202ed987cc28feaae992905bbf0bcd3b9c4a
+platform/external/python/cryptography 31e4c01b4e4a50ef12512db3fa8f58806ff4cc96
+platform/external/python/dateutil 10f28bfdf9ec7ab03e68869b5f67c7deae447ce6
+platform/external/python/enum34 320b82252f1fcd6c0a69ff933aef3b69c450be9d
+platform/external/python/google-api-python-client a48f932d13e7cf3aad9e0f275128681f4b9f587b
+platform/external/python/google-auth-library-python e2477bdb43adf45aa3d5f56fe63a0784379c92c5
+platform/external/python/httplib2 a3ea6b35fe4f3db5fd7a2e8ca2a6116413d29720
+platform/external/python/ipaddress 12296f9c3dfc4380b63451ea2aca56be47b875c0
+platform/external/python/jinja a4231d5cdcc09cba1d805459956bca49837c44fc
+platform/external/python/mako be49714f29a7595341e2702c54ebfc8a105901d3
+platform/external/python/markupsafe f243ad21f07599b5c9910311fdd296dd6d77c224
+platform/external/python/mobly 9823ff16b3968afed5cb9b8a7c1ab8e993d6bf2f
+platform/external/python/oauth2client 575acb5ef6fb6cf02006737200d582e1bd4b0880
+platform/external/python/parse_type e5b687bf3bc13bdf95eef1c9a07a821e374e2b6b
+platform/external/python/portpicker 0e9fca07440c71809a44ec4d3b06ef65ce6cdf57
+platform/external/python/pyasn1 1fe07b9eaaa71db45cd12b54a3be82a11927f9ea
+platform/external/python/pyasn1-modules 546fd4ce997824005ead05e752db2c76e417e1ee
+platform/external/python/pybind11 b1bb2bb01e13a4878db560fcc30ac45798f3e9e5
+platform/external/python/pycparser 8815a5c9ecb7b7331231df98562bc937aa61e7cc
+platform/external/python/pyee 7ed7ffd2d3e6b850f6a83cc63d7044a42e5d8309
+platform/external/python/pyfakefs 0aa0486443259d73a09f145de7674d3a063483fe
+platform/external/python/pyserial b0d0d2c05061ee83e2ef10363308e456fed74c68
+platform/external/python/python-api-core 9adba8c49693401b98ea00ba616aeff4e55e5eb5
+platform/external/python/pyyaml b511fcac9644cb64534daa35c7a450cfc86a4d66
+platform/external/python/rsa a2d0fc885cc75d60ab23f8c4b3dc7d28581804a1
+platform/external/python/setuptools f87755c1a7feeea522c8b79f7997e55711c343ff
+platform/external/python/six 26804a76e96f79433a2e04e670ac8bfa15badd69
+platform/external/python/timeout-decorator 5b3c2528533433047a99e262628ac62e4d568267
+platform/external/python/typing 371cc43808d0100e759513ed2b6c12612448670e
+platform/external/python/uritemplates 287ad9bb584e4dcc0dbc1aca9d412c4b739b1cc4
+platform/external/rappor 197f77a3e729c75e66be6e3032416a2955af8ba1
+platform/external/regex-re2 74ab214e34be6159bf43597f5add65407b57be87
+platform/external/renderscript-intrinsics-replacement-toolkit 2e5e239e1947653870c0a72c8c5ca3442daa8255
+platform/external/replicaisland 71aade1a890a86780645f38a836ffdfc2737d5cd
+platform/external/rmi4utils 3f20a434b42a88ecbe1e10db5fa86bb36a50d42f
 platform/external/rnnoise ddd1cce3c7649d9af848bafcfbfcb1818f03cf9b
-platform/external/robolectric 43496d7a2dc7d65e06272df914edb6d0321a01e1
-platform/external/robolectric-shadows 62ad1f2dfa422fef589ebb7bec46d42d82e47a3b
-platform/external/roboto-flex-fonts bb462e74f85ab7b555c0806683713223ef56ba32
-platform/external/roboto-fonts 1c4e1192c7908a1034bd0d86634fcfdef77dccf9
+platform/external/robolectric ca926c544a956134055a195c680cacb83f6439c6
+platform/external/robolectric-shadows 00b50353897b3b5b390b9b3d9c9b90655a890ee3
+platform/external/roboto-flex-fonts c40bb3bfc9edb9f1450d7dd4b8813a3c676e6065
+platform/external/roboto-fonts fe68dd1753e1e74486b30b7564b08908eb06fb60
 platform/external/rootdev a2d1e5b0999e543daa9a629f90a17a7eb022cee3
 platform/external/rust/autocxx 07cee73ed86e736981a806f6d1354935963e1529
-platform/external/rust/crates/aarch64-paging 7376d3358eabdf5db347bd21491ce5ba6466bfa4
-platform/external/rust/crates/ahash 5b5e02197b6a860714591873775f0a72388ed72c
-platform/external/rust/crates/aho-corasick ad1d7098eb1e49357389799634da423049a27915
-platform/external/rust/crates/android_log-sys 6a32b63a0e7e13f903fe39b23c88c87ec886f994
-platform/external/rust/crates/android_logger 539d8b19fc42a54121a0208027bee19c146f0a3d
-platform/external/rust/crates/anes 5cbc5f2abdb8e8145dc01b891ea7694a33254eac
-platform/external/rust/crates/annotate-snippets 82d134b0faf8b72652c5ebc1255ddf0a99347381
-platform/external/rust/crates/anyhow 7ac1b6bad35a83b524a9a41c083ce26df893a9e9
-platform/external/rust/crates/arbitrary d1f8729cb2304f2ed1df73174b9ab2047d38ac6a
-platform/external/rust/crates/argh 4b0e796277192c496f19cac51af7500d64c1e82c
-platform/external/rust/crates/argh_derive 9fba0d028d6b159703bdea00f2c3a0fe20405d5b
-platform/external/rust/crates/argh_shared fd62899c588223d617a01526423045c246242b73
-platform/external/rust/crates/ash 950a37df3a56fac32cfc3b870af4bb1d09077e83
-platform/external/rust/crates/async-stream 3bfc5353a33d47b4c7d5d498b5d3814d904aaa0d
-platform/external/rust/crates/async-stream-impl f0d113f7a907e2238c9cf90846e9c724e1bf0413
-platform/external/rust/crates/async-task d892de3c899ee709fbce9522f8f98c1d45269432
-platform/external/rust/crates/async-trait f2a28230137bf224d54c7e2ccb97dd5078e75570
-platform/external/rust/crates/atomic c0d89022a0091c494fa877624e2b6c503de840ad
-platform/external/rust/crates/atty 76a34345065351ad59ff51bdfa4b1be8d73e3839
-platform/external/rust/crates/base64 5a082b231eaa63663faca1b527a3f13ee8e8003f
-platform/external/rust/crates/bencher 1336e2346dc638e3774f0cf80d71365194dfa166
-platform/external/rust/crates/bindgen 305a03316ff9f2d8161db87f148ef170134e0035
-platform/external/rust/crates/bindgen-cli c0e30e5f85822aea37b88888316c892c7126d1b8
-platform/external/rust/crates/bitflags e22ec0cd6f9218973b13c994d16bd418ffac2252
-platform/external/rust/crates/bitreader 81429061b8edf9cb394e40d34407391ecbfb5f46
-platform/external/rust/crates/bstr b09f624f0a5794ed21e57b0956524997578312f7
-platform/external/rust/crates/buddy_system_allocator 26f28ccb286d81bbfca94ca58c0d49a0c3085364
-platform/external/rust/crates/bytemuck 01fd4cc05c58210e8ba6963ba6182b6b357c399e
-platform/external/rust/crates/bytemuck_derive 41d8c6ea235863489f04bf57d88385a675fc23d3
-platform/external/rust/crates/byteorder 17c8b8503b2e32a8e27c5ecf2854a0068c43f00f
-platform/external/rust/crates/bytes 7e10cbda518a5d27ddd2484f40885ef10c1390c1
-platform/external/rust/crates/cast f58215278334d5e7077e90f45e206ef61be263a0
-platform/external/rust/crates/cesu8 83745deaf6ba4d267c70d15b4467a7f1d32b2ceb
-platform/external/rust/crates/cexpr 96e210291bc7026cd2dabab396b0f58e22dbc3cf
-platform/external/rust/crates/cfg-if 2bd6de85d0af2ed5d0e8a83830ae51dfbba220c3
-platform/external/rust/crates/chrono c72552bb65b3f70adb58735c2a80b0cdd27e7b78
-platform/external/rust/crates/ciborium 928be4d3fb7cb07241bf35fc25561fee69bea377
-platform/external/rust/crates/ciborium-io e8c937ec1245ff18714f444fb96b8db1159e91e4
-platform/external/rust/crates/ciborium-ll f77bb54cc6df7d28861cf98c2ab4431b426d50c7
-platform/external/rust/crates/clang-sys 9efdc133ae0c6b680c5aef1980095da01a87ea2f
-platform/external/rust/crates/clap 0475f5bd56cbc5c505180b5b26b52b96975113ee
-platform/external/rust/crates/clap_derive 32eb27d8723c3b65ce58b7c7a47ca65c4374d3f9
-platform/external/rust/crates/clap_lex 954855f8025eb8992f192a4f0139152528cf3aaf
-platform/external/rust/crates/codespan-reporting 10ec7bef1e6eaa5a5b78de60ba868305adb32f79
-platform/external/rust/crates/combine 2b250ed0ee28b9652b65b51b272c83463bc87f5b
-platform/external/rust/crates/command-fds 133e40aad87abe4f82eb7c8882f866132ae97199
-platform/external/rust/crates/const-oid 6106d4206a6860a91e74c151aeb5078eb1f186b3
-platform/external/rust/crates/coset 0ecdb2459f2fdf2c48a4ac4a45e8f45d87e32bbb
-platform/external/rust/crates/crc32fast 9ca2199ac07714cf98d08d9610654b7569183077
-platform/external/rust/crates/criterion 3fd3dedc481c5b0710b31f39a2adf7c9b00febb1
-platform/external/rust/crates/criterion-plot 5336c9da86207c50eed0f38cbc4b7b3a0b9edc16
-platform/external/rust/crates/crossbeam-channel 01b5d10ed1d2d35fdb563bf9539359da4ec6aaf4
-platform/external/rust/crates/crossbeam-deque feb8da8e3ad19558ed66d1e75f2a3fed5efb0679
-platform/external/rust/crates/crossbeam-epoch 631da65d9eee028d7ae2e7f422e22d684eac1d1c
-platform/external/rust/crates/crossbeam-queue 001e2037e7efb2de818556b7afd2c5b93fc48b50
-platform/external/rust/crates/crossbeam-utils a5c97331eb1b588f431d9c6d0eb57b59f85a1c5b
-platform/external/rust/crates/csv d1554e1927c286bb73a19461f76c81099c394130
-platform/external/rust/crates/csv-core 8cf8b701064abc90287a6bda9c190e0022623f81
-platform/external/rust/crates/data-encoding 4eab34bdba1ab224eaec997af2b49c48a8217215
-platform/external/rust/crates/der 0a8f2a3106af04230e5d5c151932ff57a4ca9c9d
-platform/external/rust/crates/der-oid-macro 9dbf4db8b93c24329bda1a20c49af5869acade39
-platform/external/rust/crates/der-parser cbd80b3fdf42a357c4dc9e7b903f6493ca64d01e
-platform/external/rust/crates/der_derive e01c9e0ad7845110138d28206a142b82017958c1
-platform/external/rust/crates/derive-getters fbce922e3d570e6640bc35343c72bfcdc3b3ffca
-platform/external/rust/crates/derive_arbitrary 6e9586f9d05f27f5f9900c1cf51bcb88aaa09e84
-platform/external/rust/crates/document-features 598daa0d1400caca57b81f81b4b8522162b4ce76
-platform/external/rust/crates/downcast-rs ab164fb91be7e4caa21b885a9e515faa9f5f7528
-platform/external/rust/crates/either 136a1978275c0860eb0b83625b30e5c183091321
-platform/external/rust/crates/enumn a8d4baa2271c9db0dfa0e3d44003b77b60c1e4cb
-platform/external/rust/crates/env_logger 56dd9916160e18bf62ddd54435346325433820a2
-platform/external/rust/crates/fallible-iterator 942b1e17621542312bd69923ad0ea8389e99ce9e
-platform/external/rust/crates/fallible-streaming-iterator ff6454c70a9d359a33c847b7211ef2aa11d27b0f
-platform/external/rust/crates/fastrand 3ae7cd834bad53523ee64d2cb4cdcd94a1cda28e
-platform/external/rust/crates/flagset 58b7f8b5244f7aa76617831d09ee7e0e954f89c7
-platform/external/rust/crates/flate2 5b0b6b22c0cd299d4b4b5e83b3158ab54292e044
-platform/external/rust/crates/fnv 5efd2a29ec6481ced2458b2cf0bd9ba0c06fccf2
-platform/external/rust/crates/foreign-types 10768da163fd7f8e6781708be16da890d5005af4
-platform/external/rust/crates/foreign-types-shared 36c03027f461888a3713f973a097855ac07e3969
-platform/external/rust/crates/form_urlencoded c4c35affb1d49d2155e91dac0a3cd23c5765947a
-platform/external/rust/crates/futures 82834979006f3fb64122dadd45cd3b0c435b7845
-platform/external/rust/crates/futures-channel 7d72e8faee2bfa1f62ecccf5ed641d5969f4dff4
-platform/external/rust/crates/futures-core ee28a66eca6d7d4490be21c36f0eceedf0d39ff6
-platform/external/rust/crates/futures-executor a3c605c6131d4cf884c3396e9e11d5d85b65e0f9
-platform/external/rust/crates/futures-io d5103f8d572da11190f71dfdbbeb849fa8cfc64d
-platform/external/rust/crates/futures-macro e7ea07abfd5c6428a2f98d454d5f9302c764c5d1
-platform/external/rust/crates/futures-sink 98da8025b5c0e1338c1b84f4486f49e9cda82eed
-platform/external/rust/crates/futures-task c049361caee7372cb44fef08d3df540bb36dc2da
-platform/external/rust/crates/futures-test f5916744f4e09693141973dadadd76ae55c327d2
-platform/external/rust/crates/futures-util 5595ecc4bbfa7359d85429424c287c4c57f2f213
-platform/external/rust/crates/fxhash f5fcdba265d24974d50a8e873ffdbe0f6437a922
-platform/external/rust/crates/gdbstub 42097f6584525db99e8bcfeecdf02e5cb3e75df4
-platform/external/rust/crates/gdbstub_arch 51b606c69d11429d42e8fbe7b05c759629c9d762
-platform/external/rust/crates/getrandom c17c1296c178e7d4a963d4899813cbc34a5fd4e8
-platform/external/rust/crates/glam 0b8c5fd2bffb3807e2a291e3533f2eafa0e2fe36
-platform/external/rust/crates/glob 0c756db5acbf6d295734a54850394e88d460d87a
-platform/external/rust/crates/googletest 501a385ccace04c1f79ee7c42f546256ea8be258
-platform/external/rust/crates/grpcio b02aeba3b24574675111229c2f6d6fd32277adf8
-platform/external/rust/crates/grpcio-compiler 6df085bdd78dceacfe550a46f6886f3143ed7329
-platform/external/rust/crates/grpcio-sys 00ffd7a435213238fd04ed8f038e44c946ae83f5
-platform/external/rust/crates/half 5b3bd4878e3c038b2cb147cba25af6742b3821be
-platform/external/rust/crates/hashbrown d9c5f80dcc50a7fe812e54524b89fd6af4ac7ddf
-platform/external/rust/crates/hashlink a59a793dacc4bef6a4bf9d45277189f920761218
-platform/external/rust/crates/heck 395980a15bac05c8ef0d6f9595adc9d8120030be
-platform/external/rust/crates/hex 340e2e2098eeb714a491b736838b169e5f925bad
-platform/external/rust/crates/http ede6d2b9d7730bb67b8a743cf8f7d4132cfffa19
-platform/external/rust/crates/httparse fa02f270abb8fe3af10c86e3df1e59c58d4d36bc
-platform/external/rust/crates/idna 6532c435d6cf6223a915953bb02387c35b726199
-platform/external/rust/crates/indexmap 981de4ec3872ee056166fb5e76a7f94eeaecbf99
-platform/external/rust/crates/instant a1be63250c9e6f4171529b367eeef8fdba7d0020
-platform/external/rust/crates/intrusive-collections 6d838fbcf61b33dc5a2b7ebd45e1a52a9666dfef
-platform/external/rust/crates/itertools 1341ddc16bb29cbff7d09878ad8ab839ca2711c2
-platform/external/rust/crates/itoa 561b866ac5da4bb340ee1512812fd5aaaba40151
-platform/external/rust/crates/jni c0b220b0c07c5e97f5a3759ff45444e182e5e777
-platform/external/rust/crates/jni-sys 0c987af60d4a043951affc1012ccf042a9520c0d
-platform/external/rust/crates/kernlog 1ec7b2e7f3f8b14a8255d344e9385e89845375ba
-platform/external/rust/crates/lazy_static 09236db998932171e728191eddfc0651b15c1ee5
-platform/external/rust/crates/lazycell b22961dfd89332ebc9fd92622ab9cdb2be57ea73
-platform/external/rust/crates/libc 09af95eecd30ac6b732eee0380722ad2ced43f82
-platform/external/rust/crates/libfuzzer-sys b869147515591514bb305f166c8d211f7eb8ab46
-platform/external/rust/crates/libloading 32c094a1af4c2e06968f518bbf2b2f37ec74feca
-platform/external/rust/crates/libm 42a05d534d3530709d7da693f446795f152da880
-platform/external/rust/crates/libsqlite3-sys 55c6cb5d9e06413b8dec50d8a8cef86d634de97b
-platform/external/rust/crates/libtest-mimic 4cc98719a8ec9f9c82b94930cc7b9cd2e27a534d
-platform/external/rust/crates/libz-sys 0e03d9243b115d27c3647bc592d9f63a8ce90aeb
-platform/external/rust/crates/linked-hash-map c1705ec5d5442ea9655183ba025c196572deda33
-platform/external/rust/crates/linkme 1ed84a988da33d976e72d36afb925aa38485f31a
-platform/external/rust/crates/linkme-impl 91b911b6297ed9f5919b7330a9a974cc45bc7f59
-platform/external/rust/crates/litrs 694cfb857aac9369179c4c207ebeb6f2fda427a3
-platform/external/rust/crates/lock_api 099c639554b1fdcf3e7217c399750c3a0b6ad02a
-platform/external/rust/crates/log 51fecafdbae93aaa4911dbf76ecb3166ebd3c0cc
-platform/external/rust/crates/lru-cache 02a1ea44369c531db89e59a392a9195ade0dafdc
-platform/external/rust/crates/macaddr a670454790abcc6affe788f99c812b23bba7bc45
-platform/external/rust/crates/managed 7b183d0daa2ebae8f38aef7b1d94a44050b34f7b
-platform/external/rust/crates/memchr 82606a441880a2898ee70301b878e6d6a205f34e
-platform/external/rust/crates/memoffset 84faaaa987ca90f31ad197f3feafefbf9053f70c
-platform/external/rust/crates/merge 80495ca52aa2110ef974b28f417f88712d5c86b7
-platform/external/rust/crates/merge_derive dfacb59f473c33b101a836e895f7afe59d65e46c
-platform/external/rust/crates/miette ac399d27531b9324f59bbdac4dc8f540be0e12cf
-platform/external/rust/crates/miette-derive 0ade8ce652c24f6353923d5497cdb1f4b9f2c825
-platform/external/rust/crates/minimal-lexical 9653a0e4e88092a1f9806a33b93b8f9595f620db
-platform/external/rust/crates/mio b4b1a1454f6a4fe5fad299f67e55c008c82a4beb
-platform/external/rust/crates/moveit 775bf199a10bc8a056d743a7ec96603afd333562
-platform/external/rust/crates/named-lock 8e79b24fdc79f9573b26cbdd06a4875c2dafac9e
-platform/external/rust/crates/nix 4c097e2ff39249dcfa9d4d074b5fbf0f0b391e24
-platform/external/rust/crates/no-panic def624d2b6a70dd92b4f2f235fe53384e9922294
-platform/external/rust/crates/nom 3577d01e13ec5b52e53993f27b56567569fee10d
-platform/external/rust/crates/num-bigint 82c3aeac4840c1206be13a2451448c17481388e8
-platform/external/rust/crates/num-derive b6e2baf90e9a23dca4318cea8acdc609df38bf21
-platform/external/rust/crates/num-integer 234dbcfca3b4bb59cf4fa4b7e25903b0570aefd8
-platform/external/rust/crates/num-traits 53effbeea310ff335582c20c1c365e336d200b3f
-platform/external/rust/crates/num_cpus f4a3f6e68adc13a0a923d419252056b5e9977de8
-platform/external/rust/crates/octets 3b72b27bd6784b7c75775f3d105aae8511d098b8
-platform/external/rust/crates/oid-registry c6adc6a28a881cb7fa5912e653dcb57e8d592cb6
-platform/external/rust/crates/once_cell 3f38d082fd9a43b6c9fe33b746aa14b08253ac23
-platform/external/rust/crates/oorandom ba057e655cf7b2829d2717038a8ddef733effb48
-platform/external/rust/crates/openssl e4e41f72d77e40b876b494426796ab0c496a5a97
-platform/external/rust/crates/openssl-macros 5aa528609c21649954e191d549ff103aac027cb6
-platform/external/rust/crates/os_str_bytes 145486c401dd79d1373d0e99e7c59088338ca368
-platform/external/rust/crates/parking_lot 409e389baa683cfb3bd1575de98a6b286479f5d8
-platform/external/rust/crates/parking_lot_core f98ddf65cf30d8490f82ac870403cd16fb885974
-platform/external/rust/crates/paste c3dcd0db87fdb33bf31256935b20c91f3f65c0b8
-platform/external/rust/crates/pathdiff b031868ae8c4d416f359b11c7dd61e2c5ce526ef
-platform/external/rust/crates/pdl-compiler e75d90b1956ea561fb40f902d9b73125927a6912
-platform/external/rust/crates/peeking_take_while f06952d812fb863924ea6af627c9bb280b09b5ec
-platform/external/rust/crates/percent-encoding f9aa1b0bde445ed98ae52c810fb848fadeae6c7e
-platform/external/rust/crates/pest 56e8ed76285cb22a9a7426c54612eaf17fa5d6ac
-platform/external/rust/crates/pest_derive 1d4393d5546e3dd4c78f46e952f8e5f4f116f68a
-platform/external/rust/crates/pest_generator b09d617f8fd09b34b5801f1ba95fc4fecddae921
-platform/external/rust/crates/pest_meta 319e67cb24ba11a7675da7b679e9766955123177
-platform/external/rust/crates/pin-project a726e64fcadaf3e6364408b6971e85fac523dc26
-platform/external/rust/crates/pin-project-internal cbc823967e7838c6a2a6083ce56ee2875df5b4da
-platform/external/rust/crates/pin-project-lite a615b7d5f4ed09d3495ded42e616fd8952c55e51
-platform/external/rust/crates/pin-utils aabfe5883a4d38dead0042880cd54c5b66d7cb95
-platform/external/rust/crates/pkcs1 4fff01f0b373eb61ff47fb5fa9a64fd33d19a704
-platform/external/rust/crates/pkcs8 f043bf1ca0df25ee13dd91b1e154de8a9f5bf21a
-platform/external/rust/crates/plotters 695fd4fd14df453832e2260e215e6bbcd3380afb
-platform/external/rust/crates/plotters-backend e2b1470a1b74c96df54dddc48af0943090813610
-platform/external/rust/crates/plotters-svg 82abf94129f7c9cee2ff394a711e8911555d62d8
-platform/external/rust/crates/ppv-lite86 3dda07a7f9854532b54d1f5b64cec5ee163a372d
-platform/external/rust/crates/prettyplease b45c36a1bc164e70de091e069bf4b082fbdfc31e
-platform/external/rust/crates/proc-macro-error 015414cb256921391f8b376670601100c75e3028
-platform/external/rust/crates/proc-macro-error-attr 1fc411269296172b602e8ed35e5f2ff0f0878351
-platform/external/rust/crates/proc-macro-nested 382b30e7999bcbcfdba5a5458cbd7f77752aa140
-platform/external/rust/crates/proc-macro2 d49798f17ff44bbf57c55ae63fa4fe1a139220ea
-platform/external/rust/crates/protobuf 264b9aac4ee3c2653712fca01dde7998f51de9f0
-platform/external/rust/crates/protobuf-codegen acfbc29c8d3d0bd11f43f72cfc0ca8a49f7e2711
-platform/external/rust/crates/protobuf-json-mapping e7d5e6c768fcfef8dd1e2ee000a65b16d75f81d2
-platform/external/rust/crates/protobuf-parse 06de39988c0f63f2a7540feed0ea7f4aab748b23
-platform/external/rust/crates/protobuf-support 4698ff5911140454a42ee18ebaffb6c6c0b0337d
-platform/external/rust/crates/quiche 211a3fc5d106046c5e93a27177c6008230938a6e
-platform/external/rust/crates/quickcheck 1dede700ca565ecafa2bc7bc41d0f8ca121d5d45
-platform/external/rust/crates/quote 18eafa9f7da15a1ac64a330355b08b4349b56e65
-platform/external/rust/crates/rand 1196100d582b4bf863a122ed9a3c713090c82652
-platform/external/rust/crates/rand_chacha b284c3999a022ce7e6e433643c999cd864aa1aeb
-platform/external/rust/crates/rand_core 9b28709adf8c5481b602fe0a377f1ae6ac1d382d
-platform/external/rust/crates/rand_xorshift 9468135a2444fc739b309003d9edae21e969e1b3
-platform/external/rust/crates/rayon fb801dc8dae1ee00f759702c2e1f13fec341f6b0
-platform/external/rust/crates/rayon-core 7f884e01f320814a413cb1b56eb74c21e937a14d
-platform/external/rust/crates/regex 6dd42b98cb867f783528998f1ccdfc85c4d61514
-platform/external/rust/crates/regex-automata 13b8f27dff6a08640ce4469649d77b385ef9101b
-platform/external/rust/crates/regex-syntax c6af97e93e9e034ef94522d78c83142cbf135760
-platform/external/rust/crates/remain 4c0a61025979cd755307783e2e75c9ea52c939e5
-platform/external/rust/crates/remove_dir_all 46bf02fd56f73e89ef1011be9777c643bbdd70d5
-platform/external/rust/crates/ring 0aa7ba55f31e895a2834ca1a02e6b53c9f4a4178
-platform/external/rust/crates/rusqlite 3ee36cb7ac427fc89bde1fecbce09398d772c19e
-platform/external/rust/crates/rustc-demangle 6a8f89234c35b8f80921889e7c42a2a7780e9d45
-platform/external/rust/crates/rustc-demangle-capi ee0bbd2708e449fef10fdcc91a9fcc4c4661ed14
-platform/external/rust/crates/rustc-hash 7b4070eac2d257dd6e08b4948c43dae7f5b91604
-platform/external/rust/crates/rusticata-macros 04766c2f482dbe9cac9279d634058e809ba59e50
-platform/external/rust/crates/rustversion e8a4aae840220d6bb1560a3ea147b7adff313158
-platform/external/rust/crates/ryu 05d132866e0b85525fe6ff828ef8401b97f5f5f1
-platform/external/rust/crates/same-file b68c5d798590dfdaedd48628f8fccefdbc4207e4
-platform/external/rust/crates/scopeguard 7122eae5748d0776496bdd4506b755537beb5389
-platform/external/rust/crates/sec1 86e0ccb19140549f8fd2e7ec6abfeda8b3e88749
-platform/external/rust/crates/semver 498087cd821a6ddca7b9b212cfdbc4e706209159
-platform/external/rust/crates/serde 72a584437ac5eec86f5191a4e467c7f9368d7757
-platform/external/rust/crates/serde-xml-rs 51765bc9e0c8703dd9b1a227882346a4421de05e
-platform/external/rust/crates/serde_cbor 8cdca0cc92fb374c6c2d8537de68c3ebb89e5447
-platform/external/rust/crates/serde_derive e14c1a4dfb4a7e27acd32a47ef22ff813bedfd11
-platform/external/rust/crates/serde_json 278f0ce477263b04f0bb8d63084214d098a72239
-platform/external/rust/crates/serde_test f78fcaca753ce687f5329669247dc1e82c67db74
-platform/external/rust/crates/shared_child 17235ff711689ca8e7cbecc3a2d555dabe495776
-platform/external/rust/crates/shared_library aa321b72a8ec514d93883ae002d1ede96f95926e
-platform/external/rust/crates/shlex f0561775e018cac3ebe32850689ccf13dddce1c4
-platform/external/rust/crates/slab 460fac67ab6cef59ea5e8dfbdafd2c2eae6e1dde
-platform/external/rust/crates/smallvec e8c15ff63994ab73de3d58ffab411b2dd9efff87
-platform/external/rust/crates/smccc 4a4a2ce6ba253492cb96dbafdef07a18add5c098
-platform/external/rust/crates/socket2 3d33e48fd3bb02d3272bdbf49708f3e349267391
-platform/external/rust/crates/spin 513ac417b6ee924a4969f60d5c5281726b067da0
-platform/external/rust/crates/spki 649b212061185d016c2a36ea975304641ac7e9e4
-platform/external/rust/crates/static_assertions d5116330f1bd0a9cc4134c2b3a84060d132d5835
-platform/external/rust/crates/syn 70e5f40186fe73d6253fe06bd62df39e2708436e
-platform/external/rust/crates/syn-mid 53681de2ca7d052b2c0448aa000d904389f564a0
-platform/external/rust/crates/synstructure 3e19873d93844be1447c4ea7eb09aa76d51afa9f
-platform/external/rust/crates/tempfile 02ef48f335c7d37b421466ee4320574be5350be4
-platform/external/rust/crates/termcolor da9e5db84e11de4741f8f92494292354a252a389
-platform/external/rust/crates/textwrap 143a978b8249dca16d8bdc734b68f1f9907fb080
-platform/external/rust/crates/thiserror fa044d64cca7d079efe701b952f50f6ea9cc6b2c
-platform/external/rust/crates/thiserror-impl 8957e895e67214ea8c693eb997ebe87ddec2de7d
-platform/external/rust/crates/thread_local c32e826afe584540bf94664775057a8f3ad3144b
-platform/external/rust/crates/threadpool 1c3cb4d3b2dc355b78b240134a15fc7336738d5a
-platform/external/rust/crates/tinytemplate 858c60b6e35bb8c5ba15fd1a64e0112655a35871
-platform/external/rust/crates/tinyvec b00464bc867a82e2b223aa0d13ff93a0c0cfebac
-platform/external/rust/crates/tinyvec_macros f5e6f408afced754d2382bdce46624d1432856a2
-platform/external/rust/crates/tokio 70ef12a9bfbfa7ce2f1ddf5f59092c071f3cd1db
-platform/external/rust/crates/tokio-macros c709690cad83c9170445ffd85ae468a0cf5a6988
-platform/external/rust/crates/tokio-stream 8a475131e8beb09f6e4af57e14eb614a98533407
-platform/external/rust/crates/tokio-test 30106672a502b54d4d32da28e64df73980ad52bd
-platform/external/rust/crates/tokio-util 30c8d361ddf4adaedeff48cc3de3b7e701ae8e83
-platform/external/rust/crates/tracing 5df233ea3905bcff10badd75c44d1c26a23f2ee0
-platform/external/rust/crates/tracing-attributes 5cc631d002e1ed3ef97e99666a896c3b8cc08b29
-platform/external/rust/crates/tracing-core 4a249c950ba316aef4f6b00785d5f7d98bac6899
-platform/external/rust/crates/tungstenite 29bb71fb696e48cc0799488c9246d5ce177a55ad
-platform/external/rust/crates/ucd-trie 9a55f9e42785f462fa1855a6628212d9e63b9448
-platform/external/rust/crates/unicode-bidi 5c013537de0104bec565db9aa0e544d8fe4826ca
-platform/external/rust/crates/unicode-ident a7a16aeaf8769315ab9b79e6a5a327404fc98898
-platform/external/rust/crates/unicode-normalization d52afcafdc62201f2bbb4f607e16bccb0f6fbb66
-platform/external/rust/crates/unicode-segmentation 64cab9da2f718ce9f5353615171e3954a1e9b5ce
-platform/external/rust/crates/unicode-width 044d7af0ba8dac171de747ed848161b8bf0cc7b3
-platform/external/rust/crates/unicode-xid 1a3581d557dac31a03cbe4960762cb2cb5c004b7
-platform/external/rust/crates/untrusted 16263a7b13ae13d2890c8245958cace4494e6bd9
-platform/external/rust/crates/url 71c62a44ab040b87462fb0d4725c1046b1f396f8
-platform/external/rust/crates/userfaultfd c25051b6fca0794d60108dda399e4e7cd3708a39
-platform/external/rust/crates/userfaultfd-sys 7af463acccc68bd75bc4e63598740eb8e61bf1ba
-platform/external/rust/crates/utf-8 7ce593508b4d12a1d04e14bb0dba3d4dfe7008d9
-platform/external/rust/crates/uuid fc2cabb06f2e088f161039f853ca20842f8b6dbf
-platform/external/rust/crates/vhost-device-vsock 965a1e7d0710a300704b74c023df63c88597bfba
-platform/external/rust/crates/virtio-drivers 17b9052c196a007849abaeb12efb5314c792b298
-platform/external/rust/crates/vsock da95cf774344c126107357eacee478195a537ab9
-platform/external/rust/crates/vulkano 4eb9ca2e74eeced07b51502117296023880ae27f
-platform/external/rust/crates/walkdir 6217ea50892358dd27d3adba2979aa8e9bc18627
-platform/external/rust/crates/weak-table 60ab57b0ac8649da6eac0981b9559f53570e0426
-platform/external/rust/crates/webpki 09585a74baf7e12ecc3c4632cd53e1ad229be216
-platform/external/rust/crates/which 88fcab8b69b90cae56a5bf72e683faae715a1f84
-platform/external/rust/crates/x509-cert bd4b99ba5fa3b157db78c2a23709079e3744bdf0
-platform/external/rust/crates/x509-parser e9970e654d9144052d92f1312636c96b079773c2
-platform/external/rust/crates/xml-rs aa892d0db63443817a5df349adfaba62b5ea84b1
-platform/external/rust/crates/zerocopy 2b9ccfd9f0f6ef4ec37deea6edf2c74d09f1151a
-platform/external/rust/crates/zerocopy-derive e3b6a76bce96ceb30dd655d093c95d77828204b3
-platform/external/rust/crates/zeroize 35dae8329434073430bc0a47bda913def6b8ab9c
-platform/external/rust/crates/zeroize_derive cdc26aab473efcfcabb874cab937859af44f3402
-platform/external/rust/crates/zip eb861dd18d22584fcb5c7e8572d6b81413a3ae2e
-platform/external/rust/cxx b25c85c2d81fb0f18d09f9b8c75713a207959328
-platform/external/rust/pica 5fcce49731681e0080dce0c7b4ca2a1075ba8214
-platform/external/ruy 76e27942446f031e5c3667c23d4426a2fde860e6
-platform/external/s2-geometry-library-java 0e573d1fcc8c63db367edcf4c231376f42e00cf4
-platform/external/scapy 121e0f1846839aa3d6c1f5c596f9d4a9ebb30ff4
-platform/external/scrypt 6d720414e1bd2aebbee5bb59e7a6ccae304d94cd
-platform/external/scudo 705fb72b9316c9a42d6f90372a7af9f2ca39a940
-platform/external/seccomp-tests 6dabe3918ff9797490d62f28189ea68ee362508c
-platform/external/selinux a6a5d48a40d55a9dc23225a1cd68aed3ce208ddf
-platform/external/setfilters 4a6268aeb6e6230c56163aadb18c6b30212a9a64
-platform/external/setupcompat 345e451ade2c7299d7f4f7dd12c5d515a03f681f
-platform/external/setupdesign be14d72e0a18b13b39a527ed8b31981a782c78d3
+platform/external/rust/beto-rust e51d81bbdaeeed4543c7ef218b9bb34eeb754da5
+platform/external/rust/crates/aarch64-paging 7adef9a82eb81b441b9296cc19f4d1c9c550b160
+platform/external/rust/crates/ahash d014edcbf0bb852729c1b3393f02dcc46fcc8c19
+platform/external/rust/crates/aho-corasick ae8240f3b09bed36a69f6db98282586d24173e1a
+platform/external/rust/crates/android_log-sys 0da34b6430419ad9745fefe54ccbae0fd2f85555
+platform/external/rust/crates/android_logger b7318e48dbf1458d794cfaf601e9b5ccd386c8d9
+platform/external/rust/crates/anes 49dd7eb56b37dc4c63138566d179251538375c92
+platform/external/rust/crates/annotate-snippets b4a4f45713e8f2176a5caa463cb5f8a79fa5fb23
+platform/external/rust/crates/anyhow 63eb178fd7baf881e66e16a4965ee9bc157b42db
+platform/external/rust/crates/arbitrary b48b17d8cd9dc022ee324122a314d288ba32a073
+platform/external/rust/crates/arc-swap 4b95127900e7f3d1c7bac5f125047179a6380af0
+platform/external/rust/crates/argh 50f794ecf2b567805549a05f1b5282884b2237a0
+platform/external/rust/crates/argh_derive 5cd0fb4d0fe527547e51ae12a9efbe1cef8095c0
+platform/external/rust/crates/argh_shared dffd32ebd6129f5249b398340c9908a909c35801
+platform/external/rust/crates/ash 1162d0ac8b75fb0954a9ba28ac8d05e721525a35
+platform/external/rust/crates/async-stream 011fa001b58ed0496fa5d73d1fc4268a874ebc73
+platform/external/rust/crates/async-stream-impl 42a9d34598ace94a149055b4c4634b3fd9f1f655
+platform/external/rust/crates/async-task 2ba61c97a785083daaaa105d101a2e20a8d6eb14
+platform/external/rust/crates/async-trait 5797c705cb1ec01f6e5091834ed17bdb65ee5b8f
+platform/external/rust/crates/atomic 5cf20cc7c29efeb56bcb0a06dc9ec8ad1c64367b
+platform/external/rust/crates/atty 030c95260b0d942474b5ba7b0824a35657751788
+platform/external/rust/crates/base64 7d653f3bd3f888d745509de507a5b69f01055597
+platform/external/rust/crates/bencher 85692de220e648c7d25fb385a94a4346b20e95a6
+platform/external/rust/crates/bindgen 272c38d33276fdafbaca1c0735615f17dd33c823
+platform/external/rust/crates/bindgen-cli 6ff33345c37be2f9cfb786f5c4331b0bc627eafc
+platform/external/rust/crates/bitflags 0f7a9a8e1d84314c24bc04c9b88675a0f06f56cf
+platform/external/rust/crates/bitreader d7451677ff61eb73164190ff419f7b93be04ce28
+platform/external/rust/crates/bstr 8de05689e7d7742f1a751e7fb36307a3c4232938
+platform/external/rust/crates/buddy_system_allocator 7666ea4c601a2cd0fc31c5a4f27ea88c2dac518d
+platform/external/rust/crates/bytemuck 72b91a061372225f111a8589b675a7eeb6d7c608
+platform/external/rust/crates/bytemuck_derive 6bd1377082f11b565105e511f2d74dc4a608e0d8
+platform/external/rust/crates/byteorder e333069c6ac46857144d5299350a980ef1f9eddb
+platform/external/rust/crates/bytes d4fea133e9c0271187e4ebfc3f43625bff47fe3e
+platform/external/rust/crates/cast 8a583cf9d0b34d11b530ed5c280efba56d4e9ed2
+platform/external/rust/crates/cesu8 70e965d8077a3e61d8fe0fa932ab7432bf36dcf8
+platform/external/rust/crates/cexpr 113c51f0c8f34f52b617ee7ec99b3024e177ae5e
+platform/external/rust/crates/cfg-if fc1baa54bd9418985f2e8a895d91e4fad4f58e3a
+platform/external/rust/crates/chrono 8f1b985ea81e0e87c921dbbf3b43a4610d7d00c2
+platform/external/rust/crates/ciborium dacafe8a21c29d4fa9e2e508d08c31fcea8c21aa
+platform/external/rust/crates/ciborium-io 4ff8eb1560ec5dd9ddf3f565980ded4a9d5d8d52
+platform/external/rust/crates/ciborium-ll d0a1f648216b560ccda8c1c0f782bf1efbd63fb8
+platform/external/rust/crates/clang-sys b67f4f58c091344ea2a4593cffb2b0caae82c55c
+platform/external/rust/crates/clap 3983e81e84394cac2e5e5cda3dea5e38434ddb03
+platform/external/rust/crates/clap_complete fc66cf0e5917c166989360408d265133020fd510
+platform/external/rust/crates/clap_derive 90db76245a9ec0725fae95c87777e5d7696cee97
+platform/external/rust/crates/clap_lex 3bbda7735c478b9899caa92e90fb8803c323bb0c
+platform/external/rust/crates/codespan-reporting 6f76072bc90cf18882475bbe6b7c8cf04c3fd7e6
+platform/external/rust/crates/combine 763cdfbd60e729cbbdaba08c7d84f302c0c4398c
+platform/external/rust/crates/command-fds 0657f4be70e53609a2774b7facf3cbb5350e9c1a
+platform/external/rust/crates/config 8cee9b69df11e9366811140a0c6155a2a98d600b
+platform/external/rust/crates/configparser ead7d6b2ba96ceb838e2259b97edd734c7668fe3
+platform/external/rust/crates/const-oid cc74ef491218b95c4951bf2e4d6e5f10ab528393
+platform/external/rust/crates/coset 1e360d9cca9e9f79a5123d312429e4119d0cdf2c
+platform/external/rust/crates/crc32fast 0e02f1d8665c83231f2518d1aab57e130f7ce06d
+platform/external/rust/crates/criterion 1d5abb60d0bb6df67951bc184777c5600ca24cdf
+platform/external/rust/crates/criterion-plot 5a4b2ff6f15bba3ed423da3935b31ca6ca33d9fe
+platform/external/rust/crates/crossbeam-channel 75ac6c1ae113a9edc2f76d09b2c0804f8dda1eb9
+platform/external/rust/crates/crossbeam-deque 9e9eae483342947085d6d882cc4ecf2754314841
+platform/external/rust/crates/crossbeam-epoch 0c6730b34a90b349739dddefcbadc7429e1dfbb4
+platform/external/rust/crates/crossbeam-queue 367cb1db14f9add1d557208714577bef5f338fa1
+platform/external/rust/crates/crossbeam-utils 48d86889c905f462307d698ea6ee163653bcfb22
+platform/external/rust/crates/csv 293e0871cb5bb06d100d4696efab7a5adfcaca76
+platform/external/rust/crates/csv-core dcda5b6a12e774942e9720933e7c09bc55a1b6ac
+platform/external/rust/crates/data-encoding 9a1245d3ec655c9873d957deb776c5f39f6a76cd
+platform/external/rust/crates/der 0a6c768565ae9a3532eb047736c1f393cff9a5a8
+platform/external/rust/crates/der_derive 4eed5e39c9ca52ade52bc28f6bd21064e7efa49b
+platform/external/rust/crates/derive_arbitrary 23828a9034219abca9240c65846b4ab146312ad0
+platform/external/rust/crates/displaydoc 65408a8cd54586e2b15b19c270427956366b0e0a
+platform/external/rust/crates/document-features 9bf1da56182ab8bfdcfd1bdefc866b1e02f5aefe
+platform/external/rust/crates/downcast a2909347ec722e2b3d4dbe20a7c6ca3086981b3d
+platform/external/rust/crates/downcast-rs e21159e66bf78a0eb8b448a5de3d3e1e4a0d1767
+platform/external/rust/crates/either c26bc53519de9714f1947af5f81379156926323f
+platform/external/rust/crates/enumn fb94c4ee4cf155acee25233000412d81c3ac5734
+platform/external/rust/crates/env_logger f3012638ef5b26da7a72f111423050aa6236266d
+platform/external/rust/crates/epoll 70e12fbcbf5c21cebaac7d86c847e4643791b0fa
+platform/external/rust/crates/fallible-iterator ccbd1d76e1c5d759b08b6ab7cc40d07f6cfcd228
+platform/external/rust/crates/fallible-streaming-iterator ac49b0a9c5510a3971ee55886e18ce061ce55ebe
+platform/external/rust/crates/fastrand c8b60f78e78281d50cd6d9d404d66a2bf91a7b01
+platform/external/rust/crates/flagset ecdcf9b1a13820df053a43c0660c2a7b6377cbd2
+platform/external/rust/crates/flate2 14c2689d69ac34943f2ea87dd175f87616bd2ab3
+platform/external/rust/crates/fnv 11ca5fafc4131d644c2823221ad362f1c5b61132
+platform/external/rust/crates/foreign-types a1b8c55854ad1f80a0b1398af9d6a8140c0604e3
+platform/external/rust/crates/foreign-types-shared 18edeabad63aaba1c2dfc919848e2d27277dc442
+platform/external/rust/crates/form_urlencoded 966cd348ddc6fe807c0e46405e751807f285cfb5
+platform/external/rust/crates/fragile 68bc564c6f456f4adbc707a0336bcf266a07dc60
+platform/external/rust/crates/futures c6b505663b7bccd34654bf92964309a301ae022c
+platform/external/rust/crates/futures-channel 97275975f7344846a830c1c9edcc1e6262879104
+platform/external/rust/crates/futures-core e4249aa30cc811a62b8e960fa08ccb43f2c796c2
+platform/external/rust/crates/futures-executor 44a311c4c509ef223c2bb368ee9e513c0c06ea4a
+platform/external/rust/crates/futures-io 81c88b163e26f4c475b3609952b49f47864284c1
+platform/external/rust/crates/futures-macro 68bf4846f31394236b94661771c490a8c49d2105
+platform/external/rust/crates/futures-sink 87c54304119c70fbec2b5253460d040ad4949b7a
+platform/external/rust/crates/futures-task ff8f27befae837315a4817a11a4858d8e29de763
+platform/external/rust/crates/futures-test d600df26afbaf95e954db3255b4d6ca44a2f6d2a
+platform/external/rust/crates/futures-util dc2d8ea4e35a243e5d0142e0207252f0b17b3610
+platform/external/rust/crates/fxhash fde2e74a0397a809f42f164cefab0854da1f13ac
+platform/external/rust/crates/gdbstub 3acc08a5b5a834e68268d6e2bfd8d7c0e87f2cbb
+platform/external/rust/crates/gdbstub_arch 912971647407d9396df22c16816e9349fb8e50ff
+platform/external/rust/crates/getrandom 839af7556610f932e9a7d7de8716c97b735f029a
+platform/external/rust/crates/glam 274c25b2b4272e0085686e6932cfb71f2aef2011
+platform/external/rust/crates/glob 7d35bcdf89d6228e1a509b11163d94115f7ffa63
+platform/external/rust/crates/googletest bd89ff2a891dfb1a37aa7732a80c58637f98d71c
+platform/external/rust/crates/googletest_macro bea22aded6066d736c576a38c47fe1a661af8162
+platform/external/rust/crates/gpio-cdev 0ccd6fc43d8d057125f1261ea1a617a834a52fb3
+platform/external/rust/crates/grpcio 9fb0c0c862733519ccc46d4f32dab99724ed0dcb
+platform/external/rust/crates/grpcio-compiler 50017a90b261c3aa867df3869c29609855c0684e
+platform/external/rust/crates/grpcio-sys c662f94a79b573999741b3d43a3230a6f262cd2d
+platform/external/rust/crates/half bacacbdae37517bd5983c8019fa6cbe5520f7f7a
+platform/external/rust/crates/hashbrown 28466941273f030ff42dfd562e067cd10167d06a
+platform/external/rust/crates/hashlink 22f4c41c2cabb45fd885665279d7dea4c8a5558d
+platform/external/rust/crates/heck 3e87830b021271463edee5e97469fbe4ad0efff6
+platform/external/rust/crates/hex 08f99682eea8255d117075347548dd24891d9c2a
+platform/external/rust/crates/http 268d3691b4f812fd56c213b2c0859fcb2767d8df
+platform/external/rust/crates/httparse 0519b9cd08d8a630ee9d2b5c183e7974b24102d7
+platform/external/rust/crates/idna 0d6cce203fbc8819869c3c6e109484444db35193
+platform/external/rust/crates/indexmap 0af7e57613e90087cd7911788c1e1f2cd19ca612
+platform/external/rust/crates/ini 54f750a9806ac354a576ce6b88756ec198eb1328
+platform/external/rust/crates/instant 75f32abbb8d0d9caa1250dae5e23b7483a3c210d
+platform/external/rust/crates/intrusive-collections a82cc55de01867a16df2a23557c44aef7172e6da
+platform/external/rust/crates/itertools 2db21a5b780847b4d135354a4cd060e27809de58
+platform/external/rust/crates/itoa eed0005a43ad6e8cb53a0000a681a2747939ef3d
+platform/external/rust/crates/jni 098c5d3c46d4deed31f9c01a801cf6e3017d74ec
+platform/external/rust/crates/jni-sys 16876ddc803dd861d6ac40dc87b01bd298672f0d
+platform/external/rust/crates/json5 2f7d5a050d01e7f24f7c30ab4c410866b1088fa6
+platform/external/rust/crates/kernlog 735452b8a0e8047b29bc495ea2002db0f66737b5
+platform/external/rust/crates/lazy_static 6140574e8833a37e5e02106a2c725cb764e87f80
+platform/external/rust/crates/lazycell 2d2356b3b0773281c6485e49d47bc1ce311a84a9
+platform/external/rust/crates/libc ce92079a280d9e683f6bca3df549d1120cda0c84
+platform/external/rust/crates/libfuzzer-sys 1c042f6c29493242759ec27514814c54ebbae2ce
+platform/external/rust/crates/libloading 33b99447cf0adf93f3813afdd0b00e649f4b8887
+platform/external/rust/crates/libm 0ff259d36c614ae2b6dfa82b4e1de3cd14306b6a
+platform/external/rust/crates/libsqlite3-sys 817d8bff7627d52acfd15f4343441415abd77b1d
+platform/external/rust/crates/libtest-mimic 76e1dcbc195baf9c389a0f7eddbda4cb3cafea63
+platform/external/rust/crates/libz-sys b042dbc24c76b15e1cffb6e3a7a5c62d637b5b77
+platform/external/rust/crates/linked-hash-map bd81141da39a3a9a09903ca596f31bfc50527cc5
+platform/external/rust/crates/linkme 20918890315e00844d598153a38423fd6fbd0238
+platform/external/rust/crates/linkme-impl 5abec7ea7fd93e43619969b170722bbb44a6dfcb
+platform/external/rust/crates/litrs 64dbeb4bd8e1681b5eb638c59894f2686085c40e
+platform/external/rust/crates/lock_api 9d273378b93f938af3f3c6a75e76d206ac62abc4
+platform/external/rust/crates/log b3d249e56d019c81da52a55febf54ba76028df84
+platform/external/rust/crates/lru-cache e6b48686150757f39f0b04d068498d18e3b63ff8
+platform/external/rust/crates/lz4_flex 2f47da7d40d626900deeaa9c427747f113c4f70a
+platform/external/rust/crates/macaddr f4a9e6ea9856dbd28193b369f4c5b8083c01081e
+platform/external/rust/crates/managed b6e044d58c2dee6119f198c6631de113a5148234
+platform/external/rust/crates/memchr f58f14e50d0a1619d3f272ccc3d79a358d2f59b5
+platform/external/rust/crates/memmap2 3fba44c118ef1b7574a0227038122e45482d2c23
+platform/external/rust/crates/memoffset 3daebe681bfd990563646cf56deec657273f6034
+platform/external/rust/crates/merge 247ef57ced03e68b8955c7b72963055f4d185a3a
+platform/external/rust/crates/merge_derive da61319f1636e7df97975ae768b392c2fed52eab
+platform/external/rust/crates/miette 7da5cdaff174d28457664d484978e22e450e0d83
+platform/external/rust/crates/miette-derive 703633265baca7c2971aff08d164b1cc0b1e26bc
+platform/external/rust/crates/minimal-lexical 4e81ea9f4551b63d92516ff831241de3f9b90b8b
+platform/external/rust/crates/mio 61a35e3763b48301184fce68834f2b1f0ed1c240
+platform/external/rust/crates/mockall 89738eb64285cb3542cfd760aa94ef58515ee907
+platform/external/rust/crates/mockall_derive 34271b451c3f88f76f1bd767f4fecea46e0cfd89
+platform/external/rust/crates/moveit fc649dbff07b30c8b591947a52cf6c30e1155507
+platform/external/rust/crates/named-lock 540b10afa394e2439b2d88829d7d93a2ce5898c8
+platform/external/rust/crates/nix 211d89cd314357a8d6c0fa8d3cfdabe53b32ba56
+platform/external/rust/crates/no-panic 4f3a284486facb4b7be8163f3b6e9553655eba58
+platform/external/rust/crates/nom d12758dc948f89da800005b8713b7f6d3a14322b
+platform/external/rust/crates/num-bigint 88dd58570161e321ed7cffec78901cd89f946f93
+platform/external/rust/crates/num-derive f0f8a002d8bf305bfcc3b7aa05ae464c7dc5182d
+platform/external/rust/crates/num-integer bf366a236fa270c7983c8d7a8afeb6db091eb2d6
+platform/external/rust/crates/num-traits 2e260c500d39210dd0e8639dd0712f83dfe5d667
+platform/external/rust/crates/num_cpus 5736c81c652998e2ea99a227c982a6cba9d98e90
+platform/external/rust/crates/octets c64c41b7412049a8737cf8f9aa0bc5603f928c98
+platform/external/rust/crates/once_cell b52c3a5714726b709648a0d16da7107d6ef21282
+platform/external/rust/crates/oorandom 8eacac3623e5224e134ad15616639b3a291f5f34
+platform/external/rust/crates/openmls 2453d7b620d4304e7f36cce27044a4a17ed82a90
+platform/external/rust/crates/openmls_traits b77e2511374415d937449ba13bb97c7c3d298bc2
+platform/external/rust/crates/openssl 4fbda241ee57793390d5b0d26895f5ab4bc64c42
+platform/external/rust/crates/openssl-macros 1c86dbf86f0f4cb7922286aaba0744d92dda699b
+platform/external/rust/crates/os_str_bytes b8b9fd0bea9f3e93434afa3da671f7f523196f3c
+platform/external/rust/crates/p9 8b418a36cf4969b93cfd3c731bd2477a734b2a11
+platform/external/rust/crates/p9_wire_format_derive f88a15028b462ad73b162f1d55cdb199c6da6451
+platform/external/rust/crates/parking_lot f64e7aeac2f0e4a0de194e3bb20b629919c71d85
+platform/external/rust/crates/parking_lot_core 3b24300d42bbfda23a024bad204487959d552412
+platform/external/rust/crates/paste da433034d9a95e8759e9a4c2f5fb822b10913b44
+platform/external/rust/crates/pathdiff 7660a75196ca39bc844f31b0002464f8e4e09786
+platform/external/rust/crates/pdl-compiler 3cb3ab5bb8892426c54e0f7e321d27edb467e8a1
+platform/external/rust/crates/pdl-runtime 925a950ac205c1a3d825dd5b265378a1d9c214e1
+platform/external/rust/crates/peeking_take_while bdc3d7795f46ab1829d741ec66d3b9a53fc95179
+platform/external/rust/crates/percent-encoding 0413bb95a55d04528d7f9a1e5b731ad1fde0093f
+platform/external/rust/crates/pest 47c5bbc941b9890a073318c35f944638b04ba20f
+platform/external/rust/crates/pest_derive 5c21d799b75fb0df2a788f057cd05e68537b8990
+platform/external/rust/crates/pest_generator 66238e2f88026f8be02f9266cb85dd1b0620a65e
+platform/external/rust/crates/pest_meta 900b0b1f67835d89d310344fe414dbf075f9fd1a
+platform/external/rust/crates/pin-project 345374daecb920597d8dad3beb589a54324d0c3b
+platform/external/rust/crates/pin-project-internal 3fb7f2e81715124883fe8f05963e13fb48364d10
+platform/external/rust/crates/pin-project-lite 6d1512c67fcf64fd4a1585b6cf3c85e64e7cb505
+platform/external/rust/crates/pin-utils 47d24c24d73061ade093aeb3cb93c56f9cfb7474
+platform/external/rust/crates/pkcs1 9b095e3759d91aa9c90009810c8d930bb8d8cb7f
+platform/external/rust/crates/pkcs8 46e7d6ac43f4d0a01fd40ff211fb6c2bc4b6db7b
+platform/external/rust/crates/plotters 1e0e61a764bc0cc6f1e6b11ddd0fcf380b4e60f7
+platform/external/rust/crates/plotters-backend 0b10564b97adcefb5b5a0d810bb361287905add7
+platform/external/rust/crates/plotters-svg 0821c7ecf8f626b487e667155e6b2fa5850f6e78
+platform/external/rust/crates/ppv-lite86 750c05c264d58f7e0dc7e557d6aaa01d317ed96c
+platform/external/rust/crates/predicates c10e77266511b98314bc493226b365635a73f2c8
+platform/external/rust/crates/predicates-core fbd6d837670956a9506b240b3ccf890ef3581262
+platform/external/rust/crates/predicates-tree 17f307710ae88a1571f63fbdd32564f4d9bd0a64
+platform/external/rust/crates/prettyplease df7f27ff41f6692ada83715b4ee9e30b58accfb9
+platform/external/rust/crates/proc-macro2 ce5e3a8d56cd1a531b29d74e2b890ce899c7c621
+platform/external/rust/crates/protobuf 4114d3b0dbb25b4b5fcc83d986537311e9105394
+platform/external/rust/crates/protobuf-codegen 1be8c6a26e948f11cd3f53f6fd34876ad74d246b
+platform/external/rust/crates/protobuf-json-mapping 93e207f63515ce5fd3a4e5ae186227005b80dcfc
+platform/external/rust/crates/protobuf-parse 5ad05206393980aa2aad130d8db6bdb42fb99a58
+platform/external/rust/crates/protobuf-support 2184ff88e7cee56bd6d962d4b5efed5249e2b15e
+platform/external/rust/crates/quiche ac9d76b6073eb9294a097438c0c1aecfd07182ee
+platform/external/rust/crates/quickcheck 73b38debc4f6d63f845354864e8251e3b0530882
+platform/external/rust/crates/quote f3933a6b578a37e489e551338dd60f2bc16ab8c0
+platform/external/rust/crates/rand b5ad2164910438a7bfdd01d36781fca5aa78f3b4
+platform/external/rust/crates/rand_chacha 25bc10b677557dbe8cc057ab4b9b1cc871983c1f
+platform/external/rust/crates/rand_core 2aca241fc469f7136fca64c6ddeebfafa49c98df
+platform/external/rust/crates/rand_xorshift 64b76686facde13c2b9b9393114f94da0c90e6db
+platform/external/rust/crates/rayon 1709f94e1223aa69386a4f4632ea8e70c9a4ddcd
+platform/external/rust/crates/rayon-core eacc2dff9d1d1083dc2ec13500a0b51c323954d1
+platform/external/rust/crates/regex c0fa2ff4b83932d2b89a2e2dfc2479f60d24e5ce
+platform/external/rust/crates/regex-automata ec590db53df5c5d0607ed3a8990a686a985e25f4
+platform/external/rust/crates/regex-syntax f33946cf6cf5b26870edc726b116c794945e05ea
+platform/external/rust/crates/remain c5a7357d9921e1e6472b359f05f64afa90051c44
+platform/external/rust/crates/remove_dir_all 9b87c1ff93d407c11597a4cab7b959e6634e6dde
+platform/external/rust/crates/ring 2c1f2c76641ad80d2ee23cf30d6fc60eb257698c
+platform/external/rust/crates/ron 9d0282dceaf7789cf5560c74341e7ece03bc4664
+platform/external/rust/crates/rusqlite a0de777bf63e4ebc19e9d040dc1c38871be55656
+platform/external/rust/crates/rustc-demangle cf9f6eb18cfaedefccd0d32f9c8a117e728e0873
+platform/external/rust/crates/rustc-demangle-capi d559e1fd988256e553f4fd6cc90abb59c658f702
+platform/external/rust/crates/rustc-hash 61841a163d10e8ae66655df3856e8b0a397bf37b
+platform/external/rust/crates/rustversion fe04b3b8ed8afaf6403135e6d8453cc4e4b9f506
+platform/external/rust/crates/ryu 672a5fce5caed2966f187760c0cb52c1c5d56ed3
+platform/external/rust/crates/same-file 9fe030ec556249444bd9b2284ba02401569ef578
+platform/external/rust/crates/scopeguard 40f9b6dcec30b2cce091d8cf8013f96e9a9e5880
+platform/external/rust/crates/sec1 c36cb87808a124c0e3bbb965b7ec830373d90555
+platform/external/rust/crates/semver 5e0649cbf4e686a97f19054b7c7476d549143f86
+platform/external/rust/crates/serde 72ffbd395328c87ad8f0a59450f4cee064f30206
+platform/external/rust/crates/serde-xml-rs 893e3709eda1a823deff33ff1bb7305297301803
+platform/external/rust/crates/serde_cbor d85511ecdadba69cefd63195ea72163a2e33ed8e
+platform/external/rust/crates/serde_derive 9d7bdee66e57a69d2f7feb3d49b78127450b2df6
+platform/external/rust/crates/serde_json 32cd28bc93de9c7f941f82422ea82310ff554551
+platform/external/rust/crates/serde_spanned 0e6c223ee360dcad7240bec9ed38a6bb43c17020
+platform/external/rust/crates/serde_test 823180ed85e906aa0839fc9b39bfbd535a9df84a
+platform/external/rust/crates/serde_yaml 2eea62ca8f3bd567d0dc417581fe198617f29d1e
+platform/external/rust/crates/sharded-slab 85adba760617cbca304ac50886b96ceb60afc646
+platform/external/rust/crates/shared_child de2d264ca4b21c7792628c2ad0c522a7aac7d29a
+platform/external/rust/crates/shared_library 2fa6069889dcc7594c4ce6e15359f52a557dac1f
+platform/external/rust/crates/shlex 06e799a5ab45a7202e89146f826cd2e57f6a77de
+platform/external/rust/crates/slab fc86b23c75580dcf80077184bcabcb72742fff66
+platform/external/rust/crates/smallvec ca2daaa8d6befd8afe01f544f1c6d5c37e305fc4
+platform/external/rust/crates/smccc 00c63c48754685e79c750716b5972e7113a8015e
+platform/external/rust/crates/socket2 7af7c73b2f3337c90bfa240c7596ea2b61484809
+platform/external/rust/crates/spin b05b467d3829c03fc98d21a6d4a5e141bad39c97
+platform/external/rust/crates/spki 2c2cf5783c631c9af2b80aa0ac793878dd06039f
+platform/external/rust/crates/static_assertions 97aa8687876731b7fc5077c1327cd484af1bb315
+platform/external/rust/crates/strum abadbccd5393227b29c20b12f2d3dd7fcbfe30cd
+platform/external/rust/crates/strum_macros 4a20de7f76485b1602cd39e30067e399095cafd6
+platform/external/rust/crates/syn 0b9a9d74f2df49c25233799b6cb109ebde6a67ac
+platform/external/rust/crates/syn-mid ab47365b58bea199c61f25cbef41bb5f2242b03a
+platform/external/rust/crates/synstructure 1eab1c28bb09dfc348daa8d1df3a39d46437a2ca
+platform/external/rust/crates/tempfile 6b3c1ed29d875300c04225c9eb117b04fd19d78b
+platform/external/rust/crates/termcolor 1e4d8be4d300b3dea857f24ee2ed0b5db5839c75
+platform/external/rust/crates/termtree a81a9f45983716738fd8fe1610dca0d81cdfc763
+platform/external/rust/crates/textwrap 69ff9c6a3de25b9c9c928ceb86fd406f0a86118b
+platform/external/rust/crates/thiserror cb5f956aad9f48cf837e1fa55f59dd4b3f907789
+platform/external/rust/crates/thiserror-impl 05620baadfb0ca43dd6063100101fe33ccce86de
+platform/external/rust/crates/thread_local 8ddd3ce2bf53b255edbc2af1dd81a166c486ef4e
+platform/external/rust/crates/threadpool c683961aba794049bd44286419ce163a61346c81
+platform/external/rust/crates/tinyjson 56d45f20ab41fe80557f7a1992f013675decf0a7
+platform/external/rust/crates/tinytemplate 4c7fc97f9af5a49a68fcaab768be01409fe0ffe2
+platform/external/rust/crates/tinyvec 0b523b58651686150ba2470d00685abefb9b06ca
+platform/external/rust/crates/tinyvec_macros 2718e4d2b319bb25a1029e329b97d2c3730d4ccb
+platform/external/rust/crates/tls_codec 36d9a17954295de970d8891f695cda181a51324b
+platform/external/rust/crates/tls_codec_derive 8a646b1580779b3fc6f67a4b2a535c26de2a602c
+platform/external/rust/crates/tokio 2514666b0bb5163801538e414c11cc693b11f9ce
+platform/external/rust/crates/tokio-macros b7d3fa879364a4926fc5a940f56404df9a128b1e
+platform/external/rust/crates/tokio-stream 625ed352181d25277d0bdedba093287038b80b4b
+platform/external/rust/crates/tokio-test 423c8e3afa43299ce59440cbf18f82614d9a583b
+platform/external/rust/crates/tokio-util 82ba74c480095163f3415e978651352677c71f50
+platform/external/rust/crates/toml 5f7c7329f42d159c69798dc4cc1198506045ca4f
+platform/external/rust/crates/toml_datetime dc20bdfa1c99aedb935a2b5c1c01e411cac20acb
+platform/external/rust/crates/toml_edit f07829571446860876bb98b1d5cb1f481ab8e94d
+platform/external/rust/crates/tracing 9ece752881e0d935e921a3574b0ded44e625320b
+platform/external/rust/crates/tracing-attributes 4e9b3440159fd239f31a001ee6abd7fae986a9e6
+platform/external/rust/crates/tracing-core a3c6b48058fc1098048be918cd524a02254950e6
+platform/external/rust/crates/tracing-subscriber 4e41c6b7cf978001dbc990707aa5baea1dfda62d
+platform/external/rust/crates/tungstenite 93151827edc9ad01d1c45832daf6a5c002c571e3
+platform/external/rust/crates/twox-hash e75869baa9789a4e412e3fb54305f0331ad7d952
+platform/external/rust/crates/ucd-trie b66bab47ebbd1c7561814075c43fcc48573e4e09
+platform/external/rust/crates/unicode-bidi 2d2ed75c2ab14d1a6849b70f765b368a49111640
+platform/external/rust/crates/unicode-ident 1224235deaea5685417e4e48b5e0673d18d9ba8c
+platform/external/rust/crates/unicode-normalization 9ba3d24d8686855ca810312e9aa9d36acc305bc4
+platform/external/rust/crates/unicode-segmentation 9427ec69f9bb76a44d183509f0a406b700ff0380
+platform/external/rust/crates/unicode-width 57d88de58b79552d79ac15d8785e66d07f6a6a0c
+platform/external/rust/crates/unicode-xid e87d9d1ab4b0f91bb9579d73f1bcef26786f8388
+platform/external/rust/crates/unsafe-libyaml b049f970ed57db1d7b68308ffb6883b187db5dbf
+platform/external/rust/crates/untrusted fa510efa59b38c443db57b9fc313896126e89856
+platform/external/rust/crates/url 80a929128c30eb4690eb2b318793ca535324c314
+platform/external/rust/crates/userfaultfd 0cb17596d5f31f6d6ce2412cc156bc57fab8b305
+platform/external/rust/crates/userfaultfd-sys 7dcc6a694ce3eb80a62efd8457fe05db20234e48
+platform/external/rust/crates/utf-8 2cbd78094cb6ec6bc8a214d13563441b6650a0e3
+platform/external/rust/crates/uuid f8a781345dafca0d31b8b4c5073da71f2f0a5ac5
+platform/external/rust/crates/vhost a882a3915ef4cd6d7fb0161327eda572bce473b7
+platform/external/rust/crates/vhost-device-vsock 1a0481c511c75c97968d031c96d2425dae25598a
+platform/external/rust/crates/vhost-user-backend da3cd3008e2ea79b6db581613debbdcf18f77cfd
+platform/external/rust/crates/virtio-bindings c0290c2f80062565d1c9fc08a71fdcc0e4d41160
+platform/external/rust/crates/virtio-drivers de587d5e34a59e3d55abb267161f5e499c77aa1d
+platform/external/rust/crates/virtio-queue b50a1db34d495331f03e7f6efba6bc3485d78aad
+platform/external/rust/crates/virtio-vsock 7b3478c221269e014951f77df650328cb34a9327
+platform/external/rust/crates/vm-memory 6ab41174ce6f3aba85a6f9a1203521d0c324a52b
+platform/external/rust/crates/vmm-sys-util c93bbc19a7db1a1867e0d38dd03d96e5a49b3826
+platform/external/rust/crates/vsock 01c80164f38ce609ccb751fb8833f0c80d2d8e73
+platform/external/rust/crates/vulkano 3809101e85790d0d45f2dd6455477302864adf67
+platform/external/rust/crates/walkdir 08779eeb6440f48981f62b0ef6c17c4dd03cb38a
+platform/external/rust/crates/weak-table 8613d3a2fd3dba695764fc99a0945af1aeffa90c
+platform/external/rust/crates/webpki 991f759f90ffc67981958ca45297ed2ba5da8596
+platform/external/rust/crates/which b4de092b086d03d924b55649286c890265d47839
+platform/external/rust/crates/winnow 065ff25d23062974f764c6190d68c80a67a6bfb1
+platform/external/rust/crates/x509-cert 2d1e744b1612578d7292c66b94a3139c75c51fe1
+platform/external/rust/crates/xml-rs 67b13bb2f478d49f102744e5d21620029f930b59
+platform/external/rust/crates/yaml-rust 49da4da6c14f3934268629e4b9636eb65efcd5bd
+platform/external/rust/crates/zerocopy 10ffb6bbcf05dc0a71bbf29006b34c8a80d15bd0
+platform/external/rust/crates/zerocopy-derive 18beb9113df9678a6ddb6da7622eb0fd60aea384
+platform/external/rust/crates/zeroize 59336b6532cd4e227b566972c1f0225e734e49fc
+platform/external/rust/crates/zeroize_derive 42eabc37a3d2ba75e00319626c788613955b8c20
+platform/external/rust/crates/zip cdc53da3936ca3fae571af62aea30ff89beacc9c
+platform/external/rust/cxx c8c295f8ab1c1c14bdf93384099bd367e5d2e94c
+platform/external/rust/pica dd126a50d243f448374ca7948811878298afaeb4
+platform/external/ruy 24b98007b667e06cf5a5c102e16c49c46e045043
+platform/external/s2-geometry-library-java 7b378828f9d764b61cc56100bd20cbbeff253873
+platform/external/sandboxed-api 5e25d68ae73c8df54a81fe828274c67cd5e4f562
+platform/external/scapy c210d7078c4184a6fb70da2e69431738795ff52c
+platform/external/scrypt 862e1a02ced8464d36e8315a62b4d0e1a644b2ad
+platform/external/scudo e792d415c2e4c88c23ac648e3a6815535a5ab3fe
+platform/external/sdv/vsomeip 81688a942b6187688a532c403adf388a735f913f
+platform/external/seccomp-tests 3542b10b94ff91df876c771731dc8e06e8c86742
+platform/external/selinux 1d4013fd1e6908afb0125cc43db0a2961d72f9f7
+platform/external/setfilters fd54aff8b75e81b3a74bd6147cd9336779d6c539
+platform/external/setupcompat 80f5c4e334cbd8c51e1778f1b717c487b0abe956
+platform/external/setupdesign 1a707c68aea816f12b3e1cde886ceb6a1f6f758b
 platform/external/sfntly fe29392acf34417778604bf77ca57aa133a820bb
-platform/external/sg3_utils 9e085deab791b1fb2b4b0918acaee65487be89ec
+platform/external/sg3_utils d1e16b2e38f0bff703a4dce92b1373e263bb35f8
 platform/external/shaderc/spirv-headers a03f94d43f7dac9f54bcee8e69724ae91829bb60
-platform/external/shflags ad1ee02d5f85f1bbb068076dda521e82f2a713f9
-platform/external/skia 213454ce6e015c3d86f39015065f9a0dc3718095
-platform/external/sl4a 677c9e9eafe870520903726500c2f8d00b5b4311
-platform/external/slf4j 9366ce9cbcb4b4dcf4b4c7dcce0bc7353d2b0b65
-platform/external/smali 70958d60f32aa50cc5ebcd9d740bf463986f8213
-platform/external/snakeyaml a818d7accfaf9a2f32a9072264f55c61809046f2
-platform/external/sonic d46c84c156a7b742e8b21865c072f40888f30bb3
-platform/external/sonivox f8f43222141a8dc1407cbe3c5e15539b7e94b54a
-platform/external/spdx-tools 62fcce079818e768f32190f8a495931d17f3e764
-platform/external/speex c9a597e2213cdf923af31cb233cbcab8ad6fb131
-platform/external/sqlite 2c746395216f01be1e616a6856c849051e47357a
-platform/external/squashfs-tools 9ae994a2aab9318b221f1a6b7024da5579ad2133
-platform/external/stardoc b602f1e6a06273679058f7ad9d4f9a7ba6776e95
-platform/external/starlark-go 8d8f3ee7869d078761cb62836ce964d918f9bf97
-platform/external/stg 6bccbd25df9284f864c1854d449b1ac8ecdabfea
-platform/external/strace 596cbd8b688239bba90b3629f38aea408a4fa17a
+platform/external/shflags 5efcfb8f0d211d48c02cd95f96d1fcf961163db9
+platform/external/skia 8d5e9db39278b646ad553ca6bc65830c005c8661
+platform/external/sl4a 4bf4b527c75f3c7e7fbdafb1651a47edf080ffe6
+platform/external/slf4j d68769710ce2c372f8cb04dd43508a664cf27f1d
+platform/external/snakeyaml a4eb7296b0f467bb2a29af046713b793527ea91f
+platform/external/sonic 2ce49f166a1eec447499ddbf775b4bf7a805b0c9
+platform/external/sonivox 85b1490ca506425abd09c552b934009a889cad1a
+platform/external/spdx-tools 1646db4ffc8b3cd35835f4d501f2f08c1b399f4a
+platform/external/speex 0c8c8dbc5106ae1d1be8c510d0b44cd1bc557aac
+platform/external/sqlite 68f2a24988785d2d2969c9a7e89e64b63820648f
+platform/external/squashfs-tools 5e69a233041dddc683c0b3c67bab8dc03c3823f8
+platform/external/stardoc c704696b781c065d7164dfa757249a1494df31e3
+platform/external/starlark-go 191309c275bdc2750fd8ba3e0cc697bd864966c7
+platform/external/stg c83ae6994732498fd9161cc8f009dbf64f4bde37
+platform/external/strace 962d0a1c3054cce4e57775a05c6700f93bc64a6c
 platform/external/stressapptest e8cbf6146f67a9d3f68a771098082f32e3b0e461
 platform/external/subsampling-scale-image-view 9a0feff0f68b02798a332c4a42b1b1c02689ed58
-platform/external/swiftshader 8a5921d867eec7d64a4910d62cedf4852492c679
-platform/external/tagsoup a3f00b2e91e8cd32ca06193adac4da306e30a299
-platform/external/tcpdump 6ad31163beffaedb5471b3cfe4c62bb09ce49a14
-platform/external/tensorflow ebbc12b247cc9065517ea124c1590729df1d0253
-platform/external/testng f93ffccf9fa92e8f071ffa46a72a3111fe837a30
-platform/external/tflite-support 4d91ae300ddc9a388394b8cd20008c0f160ff306
+platform/external/swiftshader 74b3f82c9a716983af4f393fef17603e358bd119
+platform/external/tagsoup 360876dcc57722d573eb47ef71cc6d87f1f8c52f
+platform/external/tcpdump 85565d7807c846dec7f2cc7a6ae7c9bb716912b4
+platform/external/tensorflow c66804233416ff489ef826ade8c34ca415f0419b
+platform/external/testng 9156694901382979b47c8cf3162ada4cb2f1c2fe
+platform/external/tflite-support 796185b12745150fadc091adbe3c2b7c2e64dfa4
 platform/external/timezone-boundary-builder f2ff4b4b75da9aba73bb390291c5ec8158ebb28a
-platform/external/tinyalsa 70cfad656834a99435c91dcc60cdb2c521029dfb
-platform/external/tinyalsa_new 2d7bc490c71e47eac3d32269272059d2ffad0693
-platform/external/tinycompress a1cd75a4bb0b2ddffa92450c89cd972762be1a5e
-platform/external/tinyxml2 5bd4e543623434ff2d7e3ffff34b7ff8994f6999
-platform/external/toolchain-utils e44050c792ea350759be80929afcc1aa849e2afc
-platform/external/toybox e4b7d52d29a25d37d17712278ad9ab60108a0912
-platform/external/tpm2-tss f368892d50ceadf50e1c020213359381b72b1acf
-platform/external/trace-cmd 2c7791ac7fd34c0f8887a42e933e9261aa7e2e1a
-platform/external/tremolo 6263e851116cf4a1a6839b0d29f13008cabefda6
-platform/external/truth cf2950736d96be6d838c6868e6f6b148a70da3d4
-platform/external/turbine a487d902e397125e58882f453b8e97faf264217a
-platform/external/ukey2 7552efb7b5ddddfc3e55d18db7a044bf7f013f7d
-platform/external/unicode c7dedea36b1fdb507ae93872d10ad7952788c31e
+platform/external/tinyalsa f8b508e9e41e22b7aebfe9d23234b1a588d46f45
+platform/external/tinyalsa_new 3c2c922198309bbb8859b5b88db36be8cde4ad46
+platform/external/tinycompress 78b93a645adb44475e802892912d57e2da3b0a6f
+platform/external/tinyxml2 26c75a462727526748d435aa8002f5c508870ac9
+platform/external/toolchain-utils 70ae128471ed69464c0fcc335019d1d9d4bca65c
+platform/external/toybox 36b233719dc13f995b4d8794cd85b21ea032b1c0
+platform/external/tpm2-tss 6cf43dd4a581fbe356f9c41d734445459e65ece4
+platform/external/trace-cmd 8f992eab650913d8d2b0ca7675aadc6d9fae6ea2
+platform/external/tremolo bb687fb2db48f0bad4cef9c02260c6f0a97f72b7
+platform/external/truth c9eb2b85b4501eabfbb0fcd358ebf5bc32128cb8
+platform/external/turbine b1fb10b0006f771216cc8b0611e946e6595c6eb1
+platform/external/unicode 4d38217035d0a61ce438930878e59669f2a23e9b
 platform/external/universal-tween-engine 54967739025d3e6164a5124f79d43aa8c6298748
-platform/external/uwb 916812682d317bf2f25cafc63ed2e4ca03dc141b
-platform/external/v4l2_codec2 7c7114c176e80b1850bf74d30171c624e7e517f1
-platform/external/vboot_reference dce018875c57f4dbd5d46936a1d5a5f7d4f16cf0
-platform/external/virglrenderer 1c188cc3b4b7cf9d27906f6a4d73ef71ff0e72cf
-platform/external/vixl ca84991971fafae7359161306d3160fa9ef1204e
-platform/external/vogar 61fd7ad0b5048f95ff0e94120f8cfd45a217c8a9
+platform/external/uwb 11a83ab16e09582d20ea1b1885ba693ef86a50c5
+platform/external/v4l2_codec2 4634be9b201b3c43690ea8502cbf795b220a1315
+platform/external/vboot_reference 074929539fd44ee74adf31fc2fcab74c7e2ec6fb
+platform/external/virglrenderer a23554e19fe028f501293f1e61a03f3ad8dff315
+platform/external/vixl 7f9c13dae713e21ae8d6e49081ad70f5cc3500fd
+platform/external/vogar 5f349cb8a61c476adc9b36df33a180aa454aa7b9
 platform/external/volley e688e54d45f04974ec0ddbdf0915dc188e7a433d
-platform/external/vulkan-headers a789f9ba94364d09b0c5251da2a3b3201b3ec803
+platform/external/vulkan-headers a64958c0dea97a5a27f1a87dd9efbe89cde0de97
 platform/external/vulkan-validation-layers d7e61e7e290f75bc7bfa1554d0378c5e8f06b43d
 platform/external/walt ae9b4a7898b28c5fde303fd9579043eef3389f27
-platform/external/wayland 476fe6854f3d22be892f3bf612dd7f6e4f220454
-platform/external/wayland-protocols 6ebe4b3a22787288fdf0f2a526684aba725531db
-platform/external/webp 34c968f39c99e25a94460e58e984ce3c292de397
-platform/external/webrtc a46e4883410855c1c73c410458c6a76f59d07939
-platform/external/wmediumd 6118e3521936b5a6b57b38bae742811dc0c13675
-platform/external/wpa_supplicant_8 d56e79ae9b78c3595bdd2784254c1acc6494f94e
+platform/external/wayland b250193fa0f260b9be2c0e7147de2ea576efc92d
+platform/external/wayland-protocols 010063adaef74d9db61553e73542451622324346
+platform/external/webp e78b461f57a53c5cd6f0dbce6a222700b1d32fdd
+platform/external/webrtc af1576c864f060730e6f02d153b6f03c7d2b1d49
+platform/external/wmediumd c7f381c02b6ce0124135a3d5efbce0cd2d2a42e9
+platform/external/wpa_supplicant_8 de55b1f25d97004b66a8de566bb33c42db55cae0
 platform/external/wuffs-mirror-release-c c819655d679360d40468a5fd38863263d1be49cb
-platform/external/wycheproof 8ed684b6f03981fe079adffa23ae36ea0de52af9
-platform/external/xmp_toolkit d0f0fc44f62fa0720bd88dbd525e8ac3d52801c6
-platform/external/xz-embedded 6617c9f9599de6a2af4205a36cd1ac8bb2b78e90
-platform/external/xz-java 7c7ba1ab8a211a2295d88975dec84d6205370674
-platform/external/yapf 322269168fad57b17a3dbe7923efddd9a58ba8cf
-platform/external/zlib e28fc62d5655dd1dfbb94b75dfbfa7d1025b47da
-platform/external/zopfli 9d2f06a9600c4dc4ff77d639ccf2bf36be25ec61
-platform/external/zstd 3a1f8efd0665226447d1a74754ad7aa2a13b8017
+platform/external/wycheproof 9c5901e3b7e09a7cbb7a06e6b5203ec7da4d6fde
+platform/external/xmp_toolkit b8dee24aa55c4878b3788bc6c0eb083f1ba79b2e
+platform/external/xz-embedded 05ef7ab134d10cec9f33c1fbbd7624b568d83f9b
+platform/external/xz-java c55efc33c2ac89eed531963e6ace77896b7847d0
+platform/external/yapf f866745a0028839e04a9fb356f3c03ca1ab4d189
+platform/external/zlib ad56eadd4af7749614d803c48c6aaba92461011f
+platform/external/zopfli d5e23513e54238b743741ce486adc3c904b53086
+platform/external/zstd bf5d66e5db49af979e080d4a030a02f07cf84ccb
 platform/external/zucchini 0b3b142146b045f60fd63e7c98adfc9d1b961ae1
-platform/external/zxing 29b657007e78e198bef3c129293c6fbcea687e00
-platform/frameworks/av ebe828c43c87db105b186c644182f700f92a0113
-platform/frameworks/base 83a2fc72eeff4936efe730da77bf18694278ce34
-platform/frameworks/compile/libbcc 990a39e68bbc8bd9a51dd525ff43b7b5cbd97e7c
-platform/frameworks/compile/mclinker 3620992766acf27b471d41ba937a9a292fe3a100
-platform/frameworks/compile/slang ac569d5d1fffc927b0bb32983fe01e270112e372
-platform/frameworks/ex f15d7b453190ca0b4f2077234318c296e4272594
-platform/frameworks/hardware/interfaces cc9d805fb574c97c7df21a8bd3e9cf1d77ccf135
-platform/frameworks/layoutlib a1f08716ee27966ea8221faa4a68bff3ffc3d2e9
-platform/frameworks/libs/binary_translation 2b7a937338084a3fefa0d70c6be18da9f7be5273
-platform/frameworks/libs/gsma_services 5c91901bde953b66903c5c5a3567f87ba7c048d5
-platform/frameworks/libs/modules-utils 4d4c31b98d12784ce8b6c812711b2b386460df29
-platform/frameworks/libs/native_bridge_support 0ac6cacd7851d8e4bc4c5d0894e92d806e8d409b
-platform/frameworks/libs/net 13625aa81a51084d826e7ad604d0d9bf4ac05740
-platform/frameworks/libs/service_entitlement 0ca886134858df87a9e526519ac7d925910a0db2
-platform/frameworks/libs/systemui 89f6ae50dce61124a3dd2b8a8e4fa2e674d2c54e
-platform/frameworks/minikin 029bbe95e02302c26afca3a11931fe6bf8d38aae
-platform/frameworks/multidex 11c3539693eb636c5b29ae7bce95f036c1c89f4b
-platform/frameworks/native 54a1d29ec3920da189e98a14c5dd86b09981cf98
+platform/external/zxing a2efcdb3a3df9030b6ec910863f09c680535eb3d
+platform/frameworks/av 63d703076e9b2f66ac7e9cdfffe1cc3c94ca2ac7
+platform/frameworks/base 67715bdb664cba1e837445cd5794dbd2e661db94
+platform/frameworks/compile/libbcc 3e4c97d3aeb861d2f4efe2e4619e0d355c01ab95
+platform/frameworks/compile/mclinker 766b4a185934ba210d447f34de61b4f0b2f923d4
+platform/frameworks/compile/slang 47b85781e2dd358a71ec5e699314deb86a9acadd
+platform/frameworks/ex 5f05146d6b5030a7ee158ed50fc5bbd9d76184d5
+platform/frameworks/hardware/interfaces d47c049d3579723ca6435ed31c1c3f31be9819f0
+platform/frameworks/layoutlib b52a90d9e9e64ada64a44fab24d671e76f812502
+platform/frameworks/libs/binary_translation 952311f1841d3ac165d2eb8da125fc4c9eb7018c
+platform/frameworks/libs/gsma_services bc21865ea19acc2397cc4fdbb9645d709ffe5d3d
+platform/frameworks/libs/modules-utils 0297e6d17ab134e13627a09e8391e30352a3a10d
+platform/frameworks/libs/native_bridge_support dda6d554f1f20db2fc0459f549c525a839f3ec9e
+platform/frameworks/libs/service_entitlement 3aa3fcd1c43f0f1b84f300dc8f390c7e057199b4
+platform/frameworks/libs/systemui 17e3c30d2f8a1c140cb99487354f73be9ca88c58
+platform/frameworks/minikin c046f687bb901816629d4f28dd66e97b6cd88078
+platform/frameworks/multidex 78787043df7f22d6cee362848840ae9bb21352c8
+platform/frameworks/native b5510935039cae5758dae532a6c8031f3124df24
 platform/frameworks/opt/bitmap 0f6807f5ae1420dd9e6efb7ca897e75bf0768167
 platform/frameworks/opt/calendar 21f0c7b946b67f29c94230a4628baf23070e7f81
-platform/frameworks/opt/car/services 49546e46f7cc83728a1b51193325f2341a2c8b5b
-platform/frameworks/opt/car/setupwizard 750ba6dd7626d0dc1e196f0d56c81d529484fcf1
-platform/frameworks/opt/chips 6d05321be48cc6eab3cad696cdf708465c39283e
-platform/frameworks/opt/colorpicker e9063f1a6c87a55467780d2dffa0783a4aaea440
-platform/frameworks/opt/localepicker 07bc336de4d7d1c5f62e6fcc71bb5efd5ddb3a85
-platform/frameworks/opt/net/ethernet cd699555b201b37ccdf52d2f80d58a8532a673b1
-platform/frameworks/opt/net/ims 0f28a3df93e2c24c2c3acb5b7f7d3d16fb51ef03
-platform/frameworks/opt/net/voip 749184ef243224e4bdfbe7de13d236884500497c
-platform/frameworks/opt/net/wifi 5bcedf54c7b09454fbd2150936883f76d0838c94
-platform/frameworks/opt/photoviewer 325186f61f81290c65e4e3b400f15b0d6edf0e51
-platform/frameworks/opt/setupwizard 767f06b97065fe0eba6d6ef4e78a52a04bcf697c
-platform/frameworks/opt/telephony 15dd1ae780fdc6aeac9a963a2a57fc414d7d542d
-platform/frameworks/opt/timezonepicker f281bdc1c80daca47d309029b56f15e4da23e086
-platform/frameworks/opt/tv/tvsystem dccf1cf27d3471d50976b442b25a0d54e90cd256
-platform/frameworks/opt/vcard 7c9c476241fccc25879e29a9cf27529b54195bf0
-platform/frameworks/proto_logging 4c79ab4e7fcd6b9dc044df1fff42fef2dc259432
-platform/frameworks/rs 4c51503c48a03ba020d2a6a8d29b3817c7efb627
-platform/frameworks/wilhelm 5a5f15727403546481f474f899ba37418a963e56
+platform/frameworks/opt/car/services e4e909ec68ffb7577a4a96390f9b0f0bd5da12bb
+platform/frameworks/opt/car/setupwizard 97373e44eb9bb9b7ba9417bfe82cd0f0acc7aeca
+platform/frameworks/opt/chips 04b897a2137f9754b06b3effc5bae9d15e2f7dfc
+platform/frameworks/opt/colorpicker 0a3383d540cf775fd6cebf40bf4a7105144aa7aa
+platform/frameworks/opt/localepicker 9b7c385460780861d9fb601847a5286db815fc33
+platform/frameworks/opt/net/ethernet f3112fbaa0cc997059bee21c3bb0c4e1f384ddf2
+platform/frameworks/opt/net/ims 5249b4a144159444c11c58aa9f631e738033604f
+platform/frameworks/opt/net/voip 75a38052a1375e08da15f4d5d669fc2e1bf7aec2
+platform/frameworks/opt/net/wifi 6be5a5b74dec5a129e5147c14fa4d3a14ac94dbf
+platform/frameworks/opt/photoviewer c0126ef4a06d92de2671e30de97e15b53971f9c2
+platform/frameworks/opt/setupwizard 790454bb442fadb102737c3d51cb29a64ee1f2a2
+platform/frameworks/opt/telephony 047282935d5a8dfdcf927678f12a73a88672ad73
+platform/frameworks/opt/timezonepicker d1acfaf3bcde3a6c98265fb62009a82d493ffcbc
+platform/frameworks/opt/tv/tvsystem 4565598ee9dae17efb7d828e96981cd94085ac05
+platform/frameworks/opt/vcard 89396bc380680d2fe55553037c7cb1e5ac672e30
+platform/frameworks/proto_logging 44ab101c1c6f7b26cf1876892a4f5a330389d665
+platform/frameworks/rs c9de816e2e27f898a965f9c85aa4b838b16fb9d1
+platform/frameworks/wilhelm 34c28c78532ffc6f863914100a1535049f7b2a17
 platform/hardware/broadcom/libbt ffb477dd2e0b922666a290eef4266ddd31bc2550
-platform/hardware/broadcom/wlan 9ad696cade24229e8c541f20e6ae853e75b0067c
-platform/hardware/google/aemu a2cce10e3008da47dc9bf6442539c9d42e1ae47f
-platform/hardware/google/apf 9bfed9d4a65ac6795dec2f84d84d0a7c9770889b
-platform/hardware/google/av 983270dd08ae46b15796010b4728cad05a26a524
-platform/hardware/google/camera 64ca1fb0a9c5ab23253512318985f220850bd5fa
+platform/hardware/broadcom/wlan 03f4a165181b9d0761d2ab8e796a6417977eef90
+platform/hardware/google/aemu 35232936cd7c90aa55ccde5b80546fab81039979
+platform/hardware/google/apf 0f9c37d7a772681d3f99966e6765533a3de5a8af
+platform/hardware/google/av 5e5e89390c4a323431816968d82c25d6d41b2d91
+platform/hardware/google/camera 458e1d164d6a276a79cae71567abbe2fc39234ad
 platform/hardware/google/easel 9cedd8c51e2651015df54607a7b019bd7a038200
-platform/hardware/google/gchips b965d3a782dd36c954d37d6ca123f3ef63891018
-platform/hardware/google/gfxstream 9ae52c0a79d60268d63e9b31d04427e9a7910c25
-platform/hardware/google/graphics/common d89f97f3af02f913cdb0b8a2c7414f4e7527aae5
-platform/hardware/google/graphics/gs101 10e8030ba5abafe2eaaeda387bf25a480b150511
-platform/hardware/google/graphics/gs201 fe902f6ca55e5d06877e311f00b43a36616fe803
-platform/hardware/google/interfaces 8118e2b6160da3855aa4c978ee07c99782ad534b
-platform/hardware/google/pixel b8252ea9bab4703ce5b439821fc0655def45522e
-platform/hardware/google/pixel-sepolicy 4692a9014dc297d0be939a6449e1e18ec331ea71
+platform/hardware/google/gchips f3f660739db7a66f30280abde5bf89bcb515d375
+platform/hardware/google/gfxstream 0b59fc7a38643bdd88300137b0117d8c24857952
+platform/hardware/google/graphics/common 1c6174e6bdfe7f83f3fd966682b29ad91c809836
+platform/hardware/google/graphics/gs101 cc13b59b9dbccb5b5000eee723980a8e1e96fa88
+platform/hardware/google/graphics/gs201 b8a65b6c2f7cdc03f150f08f65b9fa9390b9009a
+platform/hardware/google/graphics/zuma dc44bfee58bcb707ac330bbce2cdb59745a57d66
+platform/hardware/google/interfaces 576be9294176f02acc42053f8869b881e002e40c
+platform/hardware/google/pixel 5508d331c326a9ffd1426a73698413cb7d578665
+platform/hardware/google/pixel-sepolicy fd683ee262fc296c63b2ed4708fc00990351a74a
 platform/hardware/google/trusty 4b2d77a525ce34a0ab4a81b1b2eb24cc237dbbe6
-platform/hardware/interfaces e2e9ec9ab91501b00a9ea258d92add6e59c81af2
-platform/hardware/invensense 899d1e694318198cb2b550132df3ceb918b876db
-platform/hardware/knowles/athletico/sound_trigger_hal 5b2f80ee4ae73502d2cae463ffed07431b724b59
-platform/hardware/libhardware 1324384d876cf9d5bd40b57b8d2d65c2a46a2433
-platform/hardware/libhardware_legacy 1a2f675dea4a522190834f5667f9e85a36125674
-platform/hardware/nxp/keymint dd69ac410cb3382aed8269e594acee37ce041be8
-platform/hardware/nxp/nfc 72b9989fc4b51e6dbffe64cf04149e48c22ad977
-platform/hardware/nxp/secure_element e1e541e1d1f3f2051ec5d3027de42024a2d10f33
-platform/hardware/nxp/uwb 9ed445edee93e88c63d68cae3ade7fe33b305235
-platform/hardware/nxp/weaver 8fb921434e6f58d3a11ee12418184a168b381257
-platform/hardware/qcom/audio de6b5b71f7e992486b1b5f03214baf8a9ca04fd4
-platform/hardware/qcom/bootctrl 8178637f189b29d19c3eb9b1e185e93afa626d46
+platform/hardware/interfaces 09a4770103c42ce70ee0172dafc2f7c1321ef9a1
+platform/hardware/invensense 82593d9e764116404436d8d66e6fea34830876d9
+platform/hardware/knowles/athletico/sound_trigger_hal 161e7a54b3b5284e76f77b49a8533bec690ee2b5
+platform/hardware/libhardware aed3a70fd60d6eb29b427abc36702558ba3a0a06
+platform/hardware/libhardware_legacy 9d0e7d55ff4877c0c447f371559ee4b81fcf5c5a
+platform/hardware/nxp/keymint 35bdc87d173e41397f78965301532c311f59e887
+platform/hardware/nxp/nfc 5cc1b679e6db0ab0910582190786a1b54dc8d06e
+platform/hardware/nxp/secure_element 5c07194bb5dfe8c22a87061d81b12032e7615a95
+platform/hardware/nxp/uwb fb85f064e4b2306a347a9504cf5e65ab20e4ed48
+platform/hardware/nxp/weaver 2c8a6a77027bf6aceaac1b55a57c771bf337f07f
+platform/hardware/qcom/audio 3de3fc2b1f31c6eb4557e8e2312e069936872ad3
+platform/hardware/qcom/bootctrl ee3b69c6d1c725c51bf421dba506c57051e098ff
 platform/hardware/qcom/bt 9e083335a0d870cf9936632038e324a8854e6d99
 platform/hardware/qcom/camera b6c1c75441e14d3c2e65ffb45d7d2016b126b4b0
 platform/hardware/qcom/data/ipacfg-mgr d1fe2e16542f72fd4e20e326d73830863da2ec61
-platform/hardware/qcom/display e6a4d092a84892af634c2f7e042e6a94af633e06
+platform/hardware/qcom/display 567a579090e45df76d623c6719af1520279a5375
 platform/hardware/qcom/gps 38bd8ff96a51ee33a132bce12d6895e4dea67579
 platform/hardware/qcom/keymaster 8d4640e72b7b2d66d0090e9f6f689310d1883046
 platform/hardware/qcom/media cd13d3df2f65533e12442800be830e4d52729648
-platform/hardware/qcom/msm8960 82ffc8e7b05466745807d67193156460fa250ad9
-platform/hardware/qcom/msm8994 cb309d55f41d491b27c8b5a417361e1776c2d894
-platform/hardware/qcom/msm8996 38178edd85367189b6756b2b84a0c40b17dacf57
-platform/hardware/qcom/msm8x09 84d02c03c031f7f170e1614fd0906a04e19f35b0
-platform/hardware/qcom/msm8x26 c4f26131424c7b82756e2969edc4b898a9d9979a
-platform/hardware/qcom/msm8x27 619c1a5f4950cd1c926835726671b6fdfe5a3643
-platform/hardware/qcom/msm8x84 11807702c114ba029cb5a2c2b7826604dce62996
 platform/hardware/qcom/power 063ef35767f707337ab5ad82dcad9028bc6231bd
-platform/hardware/qcom/sdm845/bt 1083dc7a45a9c8e807c227b3258caafbb4f70c4b
-platform/hardware/qcom/sdm845/data/ipacfg-mgr f7c7f21276969fbfdfc871d696258c358566f066
-platform/hardware/qcom/sdm845/display 10420b9ad1bc50bd4da7e8c1681fc0995bec386a
-platform/hardware/qcom/sdm845/gps 6106240cee4b9b47efeda1569a7e12336811d3ca
-platform/hardware/qcom/sdm845/media 3e68d531b0f8df0ef4f18ff47acf255d8bee7579
-platform/hardware/qcom/sdm845/thermal ec49f13eaf0bc280dbcaf11e7783bb95d5eb1491
-platform/hardware/qcom/sdm845/vr cbf1cf93698aba49e16ef70554dc9978cf6b3244
 platform/hardware/qcom/sm7150/gps 31e3d4c5dcd29b66f46cc10d561e89e465b2fec3
-platform/hardware/qcom/sm7250/display 074455d1fb4de17dfefbf083111e680080b6e644
-platform/hardware/qcom/sm7250/gps ea07d173de7ea6121136b5bbb25ff6baeaf890c9
-platform/hardware/qcom/sm7250/media 15327faf31ca571b42f4402dd7072f90b1f7124e
-platform/hardware/qcom/sm8150/data/ipacfg-mgr 5e98f1cfa1bdcd520398d777d64d13086d75fc34
-platform/hardware/qcom/sm8150/display ca4dcf5e0051889e54cf1e6666557b6a32ec5b51
-platform/hardware/qcom/sm8150/gps c59c5a038ca7eb39f6f7fa525fda9591a0403b24
+platform/hardware/qcom/sm7250/display 60b6c6c4b67dc04b5f45a31f48684fe4738c4a4d
+platform/hardware/qcom/sm7250/gps 243021e5193ee795121b27be5023048d950ba007
+platform/hardware/qcom/sm7250/media 7779d105e02d003c9f07df1dfa1eff071ccb28f9
+platform/hardware/qcom/sm8150/data/ipacfg-mgr 1e2ae09806f5195e25ee8e9ceab663b0c13fb8b9
+platform/hardware/qcom/sm8150/display cb76ced779c3e334ac31c488840d6242fafde6cc
+platform/hardware/qcom/sm8150/gps 5315296e2403ef5027280329ed719f65f4fc13f4
 platform/hardware/qcom/sm8150/media ac03f56055051aee0850951ffe29f61303e1c701
 platform/hardware/qcom/sm8150/thermal a83238342f9bee6bde3a869c3fe82218a076cd94
 platform/hardware/qcom/sm8150/vr 86508c8138684b2b240cfd91c7f63782b161ac54
 platform/hardware/qcom/sm8150p/gps b1f379d513b63e2ef2065b9e7f860a4eef20f383
-platform/hardware/qcom/wlan 24f925bbe6c2e34188a0eb4cb2be1906b8a79f19
-platform/hardware/ril 18cdd261b17bb69c94c7d8ae5e74576ddacb01b1
+platform/hardware/qcom/wlan 3cff8c3e7a103b8393b6ec5a9fd2bf86fa69d67c
+platform/hardware/ril de66c11e8739a0ce8afaa20bd7c7fa2fc095cc2d
 platform/hardware/samsung/nfc bb4f60ee812932569775f0db0da544c5f2af40a7
-platform/hardware/st/nfc 1d23a053ddae67783578d36454e3373c8909c82d
-platform/hardware/st/secure_element fd64f433f6914418f7a9235c5840e5d95e440522
-platform/hardware/st/secure_element2 841ffe1079bfd3fdd6eb812114c8af49f6333299
-platform/hardware/synaptics/wlan 60ab6fc1bbc1538abc015a4f688c58e034473fe0
+platform/hardware/st/nfc 90d74120780516407ca3f19a7b658e11d7662881
+platform/hardware/st/secure_element 8867b854596a9c2aafd0a47d475441e45cba2e6b
+platform/hardware/st/secure_element2 a684a1560dbe627d503ab7bff56c757d3deb3d3b
+platform/hardware/synaptics/wlan e6bcdd433e7ce8f4ccbc028852b40e1496415ff6
 platform/hardware/ti/am57x 3b9a67372dfb7e3f9697d4c8c742fa26c8fba0eb
-platform/libcore df36345c29c2d4502cdca9c65b3a7c2d8bc5dc2f
-platform/libnativehelper 34eda63398b2f1ddb8cb3e085f2d48607b5e83b2
-platform/manifest 960c02b53c4d7743a811369e7d149a2460d05369
-platform/packages/apps/BasicSmsReceiver 5285d6d15ec297d0a412e6f6bbac948da3525fe4
-platform/packages/apps/Browser2 927f361b4a93b77b19101b1bd4cf7d9428ce2a73
-platform/packages/apps/Calendar a067b3bdbc735f614c075cdd33212a83782a6c9a
-platform/packages/apps/Camera2 112601884705d3452b1ebe7bd203372f1ffbb2de
-platform/packages/apps/Car/Calendar 61e146b356da00c36a4f6c0d00f2abd316a21f11
-platform/packages/apps/Car/Cluster 5b90b8f914aee40d32e365e5bf6810f5356706ba
-platform/packages/apps/Car/DebuggingRestrictionController 1d41ecaa75a38ff966ccbd946644f2ea1f9a5859
-platform/packages/apps/Car/DialerPrebuilt c93501e99d96395c4fe956478354bbf1f07b4fa7
-platform/packages/apps/Car/Hvac 77d4667f099b4f7e50aaebde4f16d0e291b629ab
-platform/packages/apps/Car/LatinIME f335721bea4499eb83e815b59be8fb73750cea22
-platform/packages/apps/Car/Launcher ddad301a50b6adbca2885dcbd92eddbd5069a8ec
-platform/packages/apps/Car/LinkViewer 7c3f576698f5d285511bc37827dde134d91cd946
-platform/packages/apps/Car/LocalMediaPlayer 9a49478c0707011b3be270a5da53cf072592453c
-platform/packages/apps/Car/MediaPrebuilt 2cc661547c54451b3acf5450fa49d1f76ea3558e
-platform/packages/apps/Car/MessengerPrebuilt 8318fc8172d60598a1cfa2d15cd7c252833934a2
-platform/packages/apps/Car/Notification 191c1a4c2e960e20ef840c31fd0e60ed668474b2
-platform/packages/apps/Car/Provision 318c1493e4cdeeb9f835c84cc4ef41253533b15c
-platform/packages/apps/Car/Radio a4be93822900fc89c9e5d16fba21e1c565205c5f
-platform/packages/apps/Car/RotaryController 501c42ca55de52a21bb3623266d7031fb780013a
-platform/packages/apps/Car/Settings 5c44989ea54502db2dbf2dfe85638bcddebf4f4b
-platform/packages/apps/Car/SettingsIntelligence 23ae4848898642ce27089bb67c4ad5e8f4a82a70
-platform/packages/apps/Car/SystemUI a813e86c9fb5265becb0df8f416851ea96bae81e
-platform/packages/apps/Car/SystemUpdater 0de73034f24cab4846e91036d16228aae1f26f62
-platform/packages/apps/Car/systemlibs e442922a70f87cab1c5d8aa6629d7f51edc7b56a
-platform/packages/apps/CarrierConfig 4d77fb905b611864a9c243d24a0073467de8975b
-platform/packages/apps/CellBroadcastReceiver 6e684a93b2b3f8ba9db4cecaad855c00ad7d7dae
-platform/packages/apps/CertInstaller 022a347ad1b44d2c47b1225f27235a6c95e4f187
-platform/packages/apps/Contacts 2fe5f936fa680d3e208db3be38d9aba642ed5631
-platform/packages/apps/DeskClock 3ddbecc8292ba0e9232864b34c2fa2f5041e9f08
-platform/packages/apps/DevCamera 7965e16f438138eb77befa3980ab8d6978044266
-platform/packages/apps/Dialer d8afe79171a961e67bfa99740a109c2b2cc657fe
-platform/packages/apps/DocumentsUI fdc577b01799f63d31aee03bcc843d727216d501
-platform/packages/apps/EmergencyInfo fd0f18f450fa361b01e6f933904564fa6455c19b
-platform/packages/apps/Gallery 8acb85eda5f6d21db187213d9f163868c16e67e2
-platform/packages/apps/Gallery2 cf31fad006841c70cd439c722ef1a36687726036
-platform/packages/apps/HTMLViewer 9d7c79c3cb8af9617a8d5d38b1f01849e1d75c6c
-platform/packages/apps/ImsServiceEntitlement 751b6e27bd9d1e047435afe819a21ab6a2559498
-platform/packages/apps/KeyChain 273d17c7c29d4f6df8bac227eb3dd212c40def03
-platform/packages/apps/Launcher3 ac7cea9ab6fe7a1d839f0cef8b7898d22de557cc
-platform/packages/apps/LegacyCamera 26c62cd4db8377a548a835b97406122c4169dc84
-platform/packages/apps/ManagedProvisioning 0bf173e18c60510eaaa4f6318e040b00a583d5f1
-platform/packages/apps/Messaging 7fdab11970c17e0b0f02aa5b618f409df0f655af
-platform/packages/apps/Music 4c8a8d38e4d6df733f060b4b571ee414a2e1c906
-platform/packages/apps/MusicFX 3fb9f4d865813211faed7fe88677fe42b57fd920
-platform/packages/apps/Nfc a6b6bb4e03f8def5779a0a61baea33c98257f93c
+platform/libcore 80169cd84ec23dbd2bb962cafe92952799333243
+platform/libnativehelper 99d195985eb3f9b5de83b3cad6bc153de6fbdccb
+platform/manifest 73143b0efe9d3dac3a42f71c2b9a21434fb83a48
+platform/packages/apps/BasicSmsReceiver c0e837cf0369d81ffead3172b4c62613ae43b663
+platform/packages/apps/Browser2 4202cc91bd12bd90978e1c907047040c4b084b1c
+platform/packages/apps/Calendar 03b1532871cf72287889209611b55fb3f29d5341
+platform/packages/apps/Camera2 9d90b500a4303d0da6773b20508f4231e9d69ac0
+platform/packages/apps/Car/Calendar 94001bfd86fb51b950b14a8f17d0161e1d731bbe
+platform/packages/apps/Car/Cluster b0b1bb978b11c49ee3b3597c369d96575aec87e5
+platform/packages/apps/Car/DebuggingRestrictionController e8cc61230e87d49de893e8f2a94566ce7710df61
+platform/packages/apps/Car/DialerPrebuilt d70d07112da7b7be9ebc118fedbc295ccee4c89e
+platform/packages/apps/Car/LatinIME 7a7d1e6f91743b29c6064f79a30e217bc301230f
+platform/packages/apps/Car/Launcher 566d311d1195bd6c774801fa85073f74cb326b58
+platform/packages/apps/Car/LinkViewer 8329bb60faff1edcc1572d306f57768fd0df2ded
+platform/packages/apps/Car/LocalMediaPlayer dfaa7025fa78bcd590f50598f27e42f90f31b3e3
+platform/packages/apps/Car/MediaPrebuilt 5014e34f0847fdebe5322cf490789468cfec0b22
+platform/packages/apps/Car/MessengerPrebuilt cce5a1851d29323020a5413e4b726caf6acab9d7
+platform/packages/apps/Car/Notification 346b45e5ab8e7a8f2b6af229d57ebe744ced65f5
+platform/packages/apps/Car/Provision 339a5152f2e0e5d51b79c28f2a7648b95a965d99
+platform/packages/apps/Car/Radio 8c1cda703b17be9d6bc30557a0e8257fc226e85d
+platform/packages/apps/Car/RotaryController 6b9406fea307eb387f1d956e74ebfab7e7c25843
+platform/packages/apps/Car/Settings fe91c85ebc642b4d0557ddf0886492cff0163832
+platform/packages/apps/Car/SettingsIntelligence 8014bb005fcb380d466aec18be7bdf1a305f8af8
+platform/packages/apps/Car/SystemUI aa434c17374e65ff269347c61ae9111efa94d71b
+platform/packages/apps/Car/SystemUpdater 32a09e7fd400e33d6cb2e7fe92590d9193d02361
+platform/packages/apps/Car/systemlibs 1eebbf850ca818e672b44933e6ed5d4848020e37
+platform/packages/apps/CarrierConfig 5d012825c92113c0dd85cdbcc3ff47c8fd71aeaa
+platform/packages/apps/CellBroadcastReceiver e37f7241f7f3ca88dc095333c9cc214ebce4768f
+platform/packages/apps/CertInstaller 44c28381f12b7329934f99656e5bfed548b17b3d
+platform/packages/apps/Contacts 8896e20f7b550d705f3fcc6bb7289bc0a1be004c
+platform/packages/apps/DeskClock 3a6d028394517abc64c99884cd7acd7c76efcf73
+platform/packages/apps/DevCamera 7bb586c7076a6e7f097dfa7d18cc6a08ba18df8d
+platform/packages/apps/Dialer ebdf7b26fcefb7824907ecdba85de97feb2fa4d5
+platform/packages/apps/DocumentsUI f3f3976ae9e677533258e7a6f512a32f90e3160b
+platform/packages/apps/EmergencyInfo 3118fa8e612a5bc160d03db34cb1fad21ff927dd
+platform/packages/apps/Gallery 290190fbc36c83b3a0ccd486a6866170152e886f
+platform/packages/apps/Gallery2 7088df3de6c2b3e1b65b42f50f414f12ee75bb15
+platform/packages/apps/HTMLViewer 82d6315b3e088900938e7e09e956d6e6485b2ca6
+platform/packages/apps/ImsServiceEntitlement 7fb790f36b62dd77fe3c722aad5e63c5072be2f7
+platform/packages/apps/KeyChain 588aae7018b2e7769060091633e2484e885f4716
+platform/packages/apps/Launcher3 b5c5e27ab6bbbaf69203044bab7b9af61efd79dd
+platform/packages/apps/LegacyCamera 03e842d1d63719ee9cfc6a5c9987dd21e91c419d
+platform/packages/apps/ManagedProvisioning ce935cb9d8b786e36b82f53face9db4dc13464bb
+platform/packages/apps/Messaging a07e7e2b3f46ac9421f406af687976af869e1bc0
+platform/packages/apps/Music 53ea4e2f0ea1cebe9a01c46a33af90eb7934a746
+platform/packages/apps/MusicFX 294d34627b80f1718c5ad15fbe299bf8842d4998
+platform/packages/apps/Nfc aa0410da150b2bd13e28396c1aaddc2d403e32e1
 platform/packages/apps/OnDeviceAppPrediction 4253830a1f77f3418861dfb207bcf4375efa67e4
-platform/packages/apps/OneTimeInitializer 9d2ebf7eac79a62d8396df0fcb1481801d6b0e43
-platform/packages/apps/PhoneCommon e9f14017985e12e048a02a2d0dcb0e0a4a0b4308
+platform/packages/apps/PhoneCommon 0fe3e91993398556b64c1d9f312154865d25a35a
 platform/packages/apps/Protips 85fe46f8b3b9fb8bd4286fecfcff0b86301f64de
 platform/packages/apps/Provision bb1e8dd120f3d2ebb6c76b8fd370c181da8b1c75
-platform/packages/apps/QuickAccessWallet 0c28103d3922fc8315e4a6c8266508e51409cf11
-platform/packages/apps/QuickSearchBox 0c76debca03bd400738fd959051b7b41ac8e9c63
-platform/packages/apps/SafetyRegulatoryInfo dd2fdc6c9b11750511e6d5d22ca3bc29ef173db6
+platform/packages/apps/QuickAccessWallet 3ee7b439ddd085f441b45e66fa9f1d3b5ccbc75e
+platform/packages/apps/QuickSearchBox ad6e07b3f376abc6d35876d29fd5f044b1913a7a
+platform/packages/apps/SafetyRegulatoryInfo a8c6b70a74bfa6884f8a40818e7c48ef7468ca71
 platform/packages/apps/SampleLocationAttribution db4a2ec782b67953019f5be6c33c8cf7982fc4c4
-platform/packages/apps/SecureElement 3af7ecc540d3ed842ed9a0da29a0cb094e52f1c1
-platform/packages/apps/Settings 979e69c87b8bcf7d88d830d25be283da93e9bfaa
-platform/packages/apps/SettingsIntelligence 2c135431ea3e5096af376a9d9844f2901ed1314a
+platform/packages/apps/SecureElement 45c265716b18994fef5c8274109ea18137bc3dc6
+platform/packages/apps/Settings 99f0855c5922bedb79919f6ce098cd0218e5583a
+platform/packages/apps/SettingsIntelligence a71fc87bd374a9479e6fd116e9b5f32c16fefe7c
 platform/packages/apps/SpareParts a7171e8a15ab484b81a7bbae714abcbf62c10f13
-platform/packages/apps/Stk ba493d5d6b5649205e1f8673015f14c1e4564b0e
-platform/packages/apps/StorageManager ec308dd2c865ff37ff6a830dbe637b89168de4e3
-platform/packages/apps/SystemUIGo 2106a12f160245d1e8bec9b2455823b176e9668e
-platform/packages/apps/TV 9ba5daeaf51cfcb9d1a1a85b4ba0a8c3393be7a9
-platform/packages/apps/Tag b7d6314f0da92f053a665bce80fd680785acd04a
-platform/packages/apps/Test/connectivity 69dcb374f1ed16878763e5983dd83855a1a437ab
-platform/packages/apps/ThemePicker 756e53e31f5c648ac8f5ee0cf2634d5a965927a9
-platform/packages/apps/Traceur fdcbdf254036f5fa19ec8fe08d423d2726962b58
-platform/packages/apps/TvSettings 451fdc2107ef192d6ff0972ef41794fd5cc8b99e
-platform/packages/apps/UniversalMediaPlayer 2ac7dd2e45400faee37b16b437c8982e7c48568b
-platform/packages/apps/WallpaperPicker c9b1349b09616ae8fcb36e41813914534512112e
-platform/packages/apps/WallpaperPicker2 2807b3cf163e654275f2ed2550901bd745849382
-platform/packages/inputmethods/LatinIME b7a1d1671d764b6cb8c5eaa5bcaa2390aba74a7c
-platform/packages/inputmethods/LeanbackIME e35e25d9d71715f39192f8b71513a66054f3f1b2
-platform/packages/modules/AdServices 897ba81dd1ed27aad2af2f109b1343d9709bd19f
-platform/packages/modules/AppSearch 75e58cc3baaee8be8561ce42ad2b4c04e31f6f73
-platform/packages/modules/ArtPrebuilt eb905ca5a0db4b4386bc5cea26fd674608d94942
-platform/packages/modules/Bluetooth 174b8ac76a2a233df5e8ff464d15325b9cac99ab
-platform/packages/modules/CaptivePortalLogin d616a2a70bf3a993264dbb8b6d80f0ed3594f8ec
-platform/packages/modules/CellBroadcastService d34007245d10c4bde64f3cc5653805024339bfe3
-platform/packages/modules/Connectivity b7f54c163bec2fca5cbbfe87376babd623ad9bce
-platform/packages/modules/Cronet 659fdf9851d4618e1c0695038e27f96b64114f62
-platform/packages/modules/DnsResolver 90384836482e5096520e5abec0acf83839a3b442
-platform/packages/modules/ExtServices f22a15a77d414f73cb8119ce12999f1d96641d78
-platform/packages/modules/GeoTZ e42deae1285263d0c46e45ddc6cb5e7c621f29c0
-platform/packages/modules/Gki a54224ea2fe85d022436eed37eecb181bc44ccfd
-platform/packages/modules/IPsec 928a8a9f5f9af93c61f93b7772b85680c91c24ed
-platform/packages/modules/IntentResolver 6fb7253cc25f1060c13ad80d2d0ffff2423c754c
-platform/packages/modules/Media b3e57f7bb52cb494572bdeb37bd841c3617b713f
-platform/packages/modules/ModuleMetadata e27e8f50de8097c19cafc8514eaa68fd587fa954
-platform/packages/modules/NetworkPermissionConfig a1fa0e802598cf8d4c2e6df26f8d3cfa359d994d
-platform/packages/modules/NetworkStack 8e6c93ea8839597fdc9e997cd0a5e0c08c2d48a3
-platform/packages/modules/NeuralNetworks 5a43b24a2c09afcf6780f2b15acb1a3fa85c79fc
-platform/packages/modules/OnDevicePersonalization f123bc35895314dc8a8bf0ab6107f2e011236c3d
-platform/packages/modules/Permission 22e84084a4328915659c614d753bf3128c632061
-platform/packages/modules/RemoteKeyProvisioning 37af95cb96a5a9c520fa187a8f67546ceb084f73
-platform/packages/modules/RuntimeI18n eb1263e3088c4ca1101cc4106ead5b9462a1b850
-platform/packages/modules/SEPolicy 49aa80474e342adcd65a0c5d497b25dc1cee462a
-platform/packages/modules/Scheduling 5559590e28e34fdfc4c64353efed10f3bc69350d
-platform/packages/modules/SdkExtensions 73c9db54c1ccfa79312c7f71edaa85183c11b4e7
-platform/packages/modules/StatsD c42c67c0e17c15ce435cf1fc5a154269a13be3a0
+platform/packages/apps/Stk e6dfb3b30fe5e264dc51c19c9c3d841d858d6775
+platform/packages/apps/StorageManager f319604ae39373d3f940967f2ad411e1fbb56ea4
+platform/packages/apps/SystemUIGo 9be8b4617b24b5939864900b23666b6c4c3fab8c
+platform/packages/apps/TV 5f5d33865410bf02a551ed0b2491e4b696faec83
+platform/packages/apps/Tag 20c098aeedd9c13511f6bdd9513754363b017faf
+platform/packages/apps/Test/connectivity efffe00d7e610d7993832850f7a7fb16105fe0a4
+platform/packages/apps/ThemePicker df224ef3286f863b6cced0647fb2e16ed87087e5
+platform/packages/apps/Traceur ef9ef54a25794f5a46c2516e162665195fd03ce1
+platform/packages/apps/TvSettings 5d6718c7a12572d6ff6349e3892cd6441d7934f5
+platform/packages/apps/TvSystemUI f0331e93320b1151c0c253ce821eca97711fb2fb
+platform/packages/apps/UniversalMediaPlayer 9d0e4f293df0c25306d0f152bc4fc7ac0d394b83
+platform/packages/apps/WallpaperPicker 1f35b580ea87e0feddd18e8f4156654e2c2a8186
+platform/packages/apps/WallpaperPicker2 d0c026af2fc19adfe3c6dc692f1e5b6664c08232
+platform/packages/inputmethods/LatinIME dc268ee00c52c8e40b2e1de21d30340f7c302a23
+platform/packages/inputmethods/LeanbackIME 4afc9b94ba95157320ac5bbd1b90563211764845
+platform/packages/modules/AdServices dcd8003faa5b3b2eaad4c8eae27e6648a51f2439
+platform/packages/modules/AppSearch caeaa1a61a7dfb562b4e5cb7506048c549b5d948
+platform/packages/modules/ArtPrebuilt 156be2e83c6b5ac7e4b02a305145d7c5548bdf4a
+platform/packages/modules/Bluetooth 47c2107f6ac95c5f4ed65a268818aead49b4e517
+platform/packages/modules/CaptivePortalLogin 46c814e0691fd7e7e1ea6b8dea279e81c9b5c79c
+platform/packages/modules/CellBroadcastService 99301aed881bb88e7f1edb4f970e7e37f02221f2
+platform/packages/modules/ConfigInfrastructure d32e8c83237460bced2346326ed5788df91f61c7
+platform/packages/modules/Connectivity 811b74d7cef6b0dfc95b54d4c18badafc3b7d535
+platform/packages/modules/CrashRecovery 7db13fea3a009754b3594a7c6704f088e91a32b0
+platform/packages/modules/Cronet 4ad3c1df4bc997cf970aa28ec717df6a74527d25
+platform/packages/modules/DeviceLock 2a5160fb8b133b8232dd85c4cce4bd3bf1909564
+platform/packages/modules/DnsResolver f2ce7d9430525ff1fd4630063cb7e75b58093d94
+platform/packages/modules/ExtServices 3b0c5bf41de38260d32c1d9a3062099d0e2edd86
+platform/packages/modules/GeoTZ 3ca423b52231f4144dfef64f40d8509c589ad191
+platform/packages/modules/Gki ec876ea88475f687b1738cfb88497f6934cf4eac
+platform/packages/modules/HealthFitness 3565ccf6a635ce19ae6a9075ca9b57947c6e54a8
+platform/packages/modules/IPsec cdb84d36c56d70957b894411c1d5cd2f10ba8e41
+platform/packages/modules/ImsMedia e207e82c70045f71937d7ec1a36cc7c165fac362
+platform/packages/modules/IntentResolver 40dc0cab77806ffbca5fd6c3ae4da4494074966b
+platform/packages/modules/Media bd0fada7f1b9e5676298092679cdabe9f7fcabcd
+platform/packages/modules/ModuleMetadata 67c7240b5ce453f5f95d74255b325fd93ac2637d
+platform/packages/modules/NetworkPermissionConfig 99bc3c6291fc7fc2297d81291c9e0f90d8ff27b3
+platform/packages/modules/NetworkStack 101d9cd886e67d45388d49af546ac50431870214
+platform/packages/modules/NeuralNetworks 986695765f52015eee0244e91a509c10faf3bf1c
+platform/packages/modules/OnDevicePersonalization e448bd81a6027106a00bddc39ac380979e32fd37
+platform/packages/modules/Permission 4b03a66416f6494920c487283e7704a1b13ba9ae
+platform/packages/modules/Profiling 48a950b46d3ff05b6d8bcb03a53ba088e13d75dd
+platform/packages/modules/RemoteKeyProvisioning 0b7d54e4b210ce1d86a85410b2db000da494f5c8
+platform/packages/modules/RuntimeI18n 12d4542aadac269ddd50a90d232392d0afa849b5
+platform/packages/modules/SEPolicy e374d4211ffedd3c92c29d73bbbf268dc0353b42
+platform/packages/modules/Scheduling 8362bc8f052c79dbe7dc8f1b6bad88fe38a1c152
+platform/packages/modules/SdkExtensions 5e76f9eab937e7d324bbc5b91de3a3946eb34b83
+platform/packages/modules/StatsD 837dda77dea67c0514834d118ac644b4e66c213d
+platform/packages/modules/Telephony 5a0af5d181b14723e97cca1aebf4e2befe54291e
 platform/packages/modules/TestModule 3523a2f0f9b12d4e60374af63aae14f75a2b4c10
-platform/packages/modules/ThreadNetwork 10b0d872770e4efd8f55fbaebd7228172c9ffb98
-platform/packages/modules/Uwb b57b26f50615ba64cbb7373a6e0aa7e1d96853fb
-platform/packages/modules/Virtualization f0b4df11e9678f0c2c754a9a847938a1172cd3af
-platform/packages/modules/Wifi 7f1f50a1fb520dbd75ae07f6e586966fa69d8e5d
-platform/packages/modules/adb 5fe4599a5eaacd6984dea6653f6cb7a07445b066
-platform/packages/modules/common cea4397996a1755c924663646e79f2e1a9d2199b
-platform/packages/modules/vndk b1f66d2c5906646717afc0b6fd9d076796f33f34
-platform/packages/providers/BlockedNumberProvider 7374e951955fa0390b91e022b59e64a69e4e4b49
+platform/packages/modules/ThreadNetwork d5f72d9a11a7ba06a5c8511d8335e0030b2e6f21
+platform/packages/modules/Uwb bb8726e16bae7505f4ced58dfa8bdab707a8cadc
+platform/packages/modules/Virtualization 5e5b1d9c9aaf5879b7fd380a7363923fbc9f6fa8
+platform/packages/modules/Wifi bb2ddbfe8f1cc94fffe4a9fbb6e9ac7f83b10843
+platform/packages/modules/adb f8d37f7b7581b6734d59d56a86fd286b7685895e
+platform/packages/modules/common 9e11f4c72e24dc05a456308151719781de25c0af
+platform/packages/modules/vndk 7ab6cd039a2ae69fa94e44b6507c7a6cb0141b5a
+platform/packages/providers/BlockedNumberProvider 50745022033a079cea537f2654f6bf64733656d5
 platform/packages/providers/BookmarkProvider 07821be016e64214b475a409dd56eda913687b5e
-platform/packages/providers/CalendarProvider bd7712f360beda74e7cc93b45881f0f7ce6c3f0d
-platform/packages/providers/CallLogProvider b9e4264099e03c8c3b6477a190c21ea5acc16546
-platform/packages/providers/ContactsProvider 30a28f5e90884aa32df7f09efce9a382273ee43f
-platform/packages/providers/DownloadProvider d18400980b5bf38e490f4920ccd4f601f84a08a8
-platform/packages/providers/MediaProvider b6d562a3e88c22d3945268b5a5edba28d3d5ef45
-platform/packages/providers/PartnerBookmarksProvider 430b3545d5df17821e667a790a374a4ee430643f
-platform/packages/providers/TelephonyProvider 063157f7aab8db3bd0b369b6c05097e92722090b
-platform/packages/providers/TvProvider 2dac063db7a359e81386dc29bd6b54c7298d7645
+platform/packages/providers/CalendarProvider 4e6111459fe89a85ec4aadc41a6d1e4e53d6fbe8
+platform/packages/providers/CallLogProvider abaf1d4f5629ea68b06dabaf5d49e8bb431fe1a6
+platform/packages/providers/ContactsProvider 86e347658bd2f381e9265721b1fb1bc5a40a95ea
+platform/packages/providers/DownloadProvider 7acf94bb4edd760e5d317e5eed899674071a6034
+platform/packages/providers/MediaProvider d7ec0a06a781eb18a25782037543a68e2adb1fa4
+platform/packages/providers/PartnerBookmarksProvider 09df01829e1ca421d308f638dcd82c208957f2ae
+platform/packages/providers/TelephonyProvider 703e4d8edc832596579d83dfb0611e07bdb812ad
+platform/packages/providers/TvProvider b2d9fdc063e3bb2dd1f27cb6a372b6d77ff66c21
 platform/packages/providers/UserDictionaryProvider 459eb50e237dcddaf850ad2c1e18f2193e7ccffc
-platform/packages/screensavers/Basic bc0d13b0357e4c21723a889c8d83b3e639e5f98b
-platform/packages/screensavers/PhotoTable 97b1b899f5a1cd993f2210a18149a410f019e00c
-platform/packages/services/AlternativeNetworkAccess ba09451dc4a91744932e1e6c66db6ec96a5678f8
-platform/packages/services/BuiltInPrintService cc75b4d2126d70a3c33e6ea998e0fd5701c8af71
-platform/packages/services/Car 045147f2003d3f47242625329db1da1f9728a47f
-platform/packages/services/Iwlan 4097b593df8805783d4a1aae94649172214ada7b
-platform/packages/services/Mms fe37a8d022c98ccd4e7882ec8e4775fe3602231b
-platform/packages/services/Mtp c6112b125f585f1d18aaee16993c790e6519731f
-platform/packages/services/Telecomm 1d5c18fb7daab1793b92d3f886d356e6746de723
-platform/packages/services/Telephony 24cc1cff8545093da0488bf28aac8c0b00afc035
+platform/packages/screensavers/Basic 587d7b2eaad66ffe4e8920320faee77281fc1bca
+platform/packages/screensavers/PhotoTable a8adb1b844e6b3721907443dfc449618afac1c4d
+platform/packages/services/AlternativeNetworkAccess 01b5549c91c4882e1782cec904dd82a434e3e683
+platform/packages/services/BuiltInPrintService bf528842907ab15b44831848ee4d6ed957ed0140
+platform/packages/services/Car a0d7ac2e3d76e79c55a952bd7b19a20ebefd875d
+platform/packages/services/DeviceAsWebcam cc07aeb4aac09c7056e28a829d496b940d01d86c
+platform/packages/services/Iwlan be65dcf7412c135efdc42a1bafa23f1bc9c73eb3
+platform/packages/services/Mms 8b453bccce9ee0484bcd6d972517a8cea9f2b151
+platform/packages/services/Mtp 9a9bde6607c868c46dbe1c3f6225fd053bc905d9
+platform/packages/services/Telecomm 58208cad38eb641084cafb4e89389e5ec04367b6
+platform/packages/services/Telephony a044003c97e1f55a921bec71a4e067842d968d9b
 platform/packages/wallpapers/ImageWallpaper 0a1680f07b09889c7642a775b6bb69d1b27f9b09
-platform/packages/wallpapers/LivePicker d2df06b99a49aceb69ec95b203f7fd2d9811fec0
+platform/packages/wallpapers/LivePicker b88bd03d754cffa9728ab9b93dd4569c5e2d8f47
 platform/pdk 7ea612c8fc04753350908fb4e926fddad8fffed2
-platform/platform_testing 6650ed68933f17e23866a906a204b75448839c01
-platform/prebuilts/abi-dumps/ndk 9c5c35d622325129ae0a66d4f167c303cb1bc699
-platform/prebuilts/abi-dumps/platform 80eca4755316315324c1627a0ad02a734d13aff4
-platform/prebuilts/abi-dumps/vndk 49bf36d96c362f4ee29b8becc9ccb55acb474fc2
-platform/prebuilts/android-emulator 894bba157dc85da7bc8a3e77375ba7cd502615d1
-platform/prebuilts/asuite cc85f99dcc2951f732a77a8d7e8d8cd73dd9ee9b
-platform/prebuilts/bazel/common a1d6f533db5dc43c2921d84b03fa1e13112b2221
-platform/prebuilts/bazel/darwin-x86_64 b41fd649be419cda929be60e646698e585fdd28a
-platform/prebuilts/bazel/linux-x86_64 52cdc3214933ef7740669b6e9ac1ee2f2a7f9d5d
-platform/prebuilts/build-tools 13f93fc62f3909cdee67b1bb89f5ccce3df0de72
-platform/prebuilts/bundletool b2c1393ee0fbf7937488d8534bfc175c823f1590
+platform/platform_testing 3d5a8f6581b787483c59edfad1db78b93949fc2c
+platform/prebuilts/abi-dumps/ndk 536c832c8311e9cb698606c0dce9480206262c41
+platform/prebuilts/abi-dumps/platform 36df46473c12aad3051bd04102182e9c2ccae57f
+platform/prebuilts/abi-dumps/vndk f8ef127b9ae52e1fc284028846bfe69122b8988d
+platform/prebuilts/android-emulator 17e25758f586d64d20055000b47ca2c6b1d1170e
+platform/prebuilts/asuite 478d11805db899aed624d0a21ed9a4d027018d6e
+platform/prebuilts/bazel/common 48d7929e958ffaa0357179431fd6bb2db90b1c00
+platform/prebuilts/bazel/darwin-x86_64 9b8631d4246e5012a9830f48f0bdbd798d9e4286
+platform/prebuilts/bazel/linux-x86_64 03c384913246dbfc6dbdb38a9385ac08a990efec
+platform/prebuilts/build-tools af74bfe1e1748786c749b0a1c01c343b7858187b
+platform/prebuilts/bundletool d030b639a240b8d7ecdf798016b1e00e84b0209c
 platform/prebuilts/checkcolor aff84131e56dd337d20778ec936a049f23e114fc
-platform/prebuilts/checkstyle 61db7afe91e6c5cb5bb90f8a64cc5b4c3aff21a1
-platform/prebuilts/clang-tools c8bd4b671ad5b8b412c749992fce774197f7f20b
-platform/prebuilts/clang/host/darwin-x86 7148acc3a71662baf4aad582241cb69f7e53a7a2
-platform/prebuilts/clang/host/linux-x86 5ce32d226812213b19b85045d56df30ac4c10b98
-platform/prebuilts/cmdline-tools 0c4bb2b784a4c88c6e5a7b656b6bdda388259ef7
+platform/prebuilts/checkstyle 0a17ccba3148e5a894c1437d4ad5e4e8558a8365
+platform/prebuilts/clang-tools 7be7dd729899fc87f5b8bc52783a637d52abad28
+platform/prebuilts/clang/host/darwin-x86 4f90c5dffd0161762b1de7091cc893edec0174dd
+platform/prebuilts/clang/host/linux-x86 dda3ae1fb44ecb0f9be5ad32b9dd9efade4456d3
+platform/prebuilts/cmdline-tools bf630da0b338a6f3194f408eec943f5f13f07366
 platform/prebuilts/devtools e60e2ac20eeaa2eac82da9ed75579e12d91a527d
-platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.17-4.8 76ec2f63e8fd4c74402e516fdce83a6d45fceaa4
-platform/prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8 9bfe1c60f5ce94e803561654dfbaba58dac9070f
-platform/prebuilts/go/darwin-x86 e1c31e91209b1f99dc0f3074146fe771e2c9cac1
-platform/prebuilts/go/linux-x86 6b48e64a11785859afd5f4a3087f94f8014c3258
-platform/prebuilts/gradle-plugin fbe19fdb0c1652cfa31a2d323cfbe48c6b030e15
-platform/prebuilts/jdk/jdk11 2f72813ae6813e39b6dea161a85ad6068f9be264
-platform/prebuilts/jdk/jdk17 86b80b416b8d6b9c765655d52d4ad10d4b6e78dd
-platform/prebuilts/jdk/jdk8 ebff3bab14fad9aefec53f8c1efa436be119ee80
+platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.17-4.8 b548b7f20fd84a235d931416556511495e5c336f
+platform/prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8 887f1960cab964373111d675cfd64c883a01bc57
+platform/prebuilts/go/darwin-x86 257af2ebc775d1b607cfd735a0a08363c449beee
+platform/prebuilts/go/linux-x86 6bddf3f5c5ec852c3bfe499dbfc2777510de9771
+platform/prebuilts/gradle-plugin bef57f9ed84334450d2d29d0c9dc109b073b88f7
+platform/prebuilts/jdk/jdk11 93880363671051742e302bc3f27e402b57a8a65e
+platform/prebuilts/jdk/jdk17 bd2c719f045fec9b72a1e8eecb2a88833b523292
+platform/prebuilts/jdk/jdk21 6a13b42e27f59e905a89a8682d39b5b0c28905a0
+platform/prebuilts/jdk/jdk8 cfa5ad0aa720e1e9c68c56e1dd03c1ee510d7d1b
 platform/prebuilts/jdk/jdk9 3035eb193e0bbc9006ac99a89d529aa3bca6bcbe
-platform/prebuilts/ktlint 7b746140ec99151f671e15310df48b11a4e75c46
-platform/prebuilts/manifest-merger cb10cea4ee3761ecad5d2a0d178a3fe7baa04d80
-platform/prebuilts/maven_repo/bumptech dc6f0f88ec9c8445cdc86586ef4ae168c9e66612
-platform/prebuilts/misc 4f3940df983645106e767eecbf1e6979d83bc08d
-platform/prebuilts/module_sdk/AdServices 362005e0eba922cd961556a4ac7b1a757b2b6ea1
-platform/prebuilts/module_sdk/AppSearch 1d1cc441840b6016972a937acac4361bdf2b5915
-platform/prebuilts/module_sdk/Bluetooth 70376fa9e09114d6e5ef046a7e204c86fce6087f
-platform/prebuilts/module_sdk/Connectivity f2ae80983b8453b28b3fac7ae8aa387598df1e8b
-platform/prebuilts/module_sdk/IPsec 324c56fb370e4e44bc5bcf0f2aea493d1debe0d6
-platform/prebuilts/module_sdk/Media 588155b1fd5574529479e2614688536f402af03d
-platform/prebuilts/module_sdk/MediaProvider 8e3549f41ded31706d70953b51a73088d06dcb39
-platform/prebuilts/module_sdk/OnDevicePersonalization 1ce46ac613059c0619b6af427bfd15535820cd36
-platform/prebuilts/module_sdk/Permission 3681aa4802b4f029c0f332fe2f93b0967146bbd3
-platform/prebuilts/module_sdk/RemoteKeyProvisioning e1865c1733d3746aa58d5d6d1a14a0f352b03a4a
-platform/prebuilts/module_sdk/Scheduling c368b6b4c05a9acb835009e6819968320e42fa45
-platform/prebuilts/module_sdk/SdkExtensions 889a6fdaeef4c5497f5de20889109658bccaeeb2
-platform/prebuilts/module_sdk/StatsD 3ef9d7eb2fb47b3c20da8645431e474da67d94f3
-platform/prebuilts/module_sdk/Uwb 1ed6b7b4a7ffc55e0a2b77dbbc3d31bfa699e762
-platform/prebuilts/module_sdk/Wifi e66381f517393fdf584e2d92f9f2f81c261ec81d
-platform/prebuilts/module_sdk/art d56f31ff198361b537a91f4316f8909e5460c174
-platform/prebuilts/module_sdk/conscrypt 8a38698bdabd8b470ecdd5f8ad286d8300fcbd0e
-platform/prebuilts/ndk 02fd3b03a3b604ba44bbc6646f2e0a5360836fd7
+platform/prebuilts/ktlint b008c94e4917fad5a815cbc4876029997c8d9346
+platform/prebuilts/manifest-merger e57c0f9198d26ece5ebaafc365914548199a0bcc
+platform/prebuilts/maven_repo/bumptech 098760c15d7244e3bc4aac2cf5515d3a6f8b2fd8
+platform/prebuilts/misc aaef934180defae03c72eb8e399b8a38de060fe1
+platform/prebuilts/module_sdk/AdServices bb9780eddebbb10c6a43fb828124bf14c90e5625
+platform/prebuilts/module_sdk/AppSearch 9e19168eb973b6991dddd23dc30dc3f65a71a24b
+platform/prebuilts/module_sdk/Bluetooth d0a7702d8925eeefed091573c7b4786b193df4f3
+platform/prebuilts/module_sdk/ConfigInfrastructure 5fa1dc436ba304c40b258a80ed2bc4b96f4421d9
+platform/prebuilts/module_sdk/Connectivity 3bd7d1f813f2e86fe1fdd0bca9034a217c6d134d
+platform/prebuilts/module_sdk/CrashRecovery 047f8d2b063b025a32b1a65bfb077f0d68a07fdf
+platform/prebuilts/module_sdk/DeviceLock 272ce3b50af5c9c35061d34296f336d6b644ea4b
+platform/prebuilts/module_sdk/HealthFitness 8b302600e154f0d11085afcfbc12e6631c58a0da
+platform/prebuilts/module_sdk/IPsec 5437c9287b90523d91eda196c15cc08590e04f67
+platform/prebuilts/module_sdk/Media 43729d0a1cc109471314ebbc61e0912cfbcdc568
+platform/prebuilts/module_sdk/MediaProvider 4a3943e4b28d89a4dd52de1067291d1687afdc5c
+platform/prebuilts/module_sdk/OnDevicePersonalization aecf7458cbb5063cf761636f184b8c6b31936254
+platform/prebuilts/module_sdk/Permission 1163ef5440dcc302f7948448b1e427dd845daa78
+platform/prebuilts/module_sdk/Profiling 575dfb463706bb79aecf5f7f82fc9fa0fa7812b4
+platform/prebuilts/module_sdk/RemoteKeyProvisioning 9f0f94c9f0bafb814c6ee5994853c5834d1383c9
+platform/prebuilts/module_sdk/Scheduling 41f4b0b710ed6db965f7e8c4970d381664650b7c
+platform/prebuilts/module_sdk/SdkExtensions fe9d8b4aa3e6d4858c3312afac7a45ce98dfa52d
+platform/prebuilts/module_sdk/StatsD eede9b38e954cb9f285a9c60fb698d46e6e2d657
+platform/prebuilts/module_sdk/Uwb ced3d6c2e4d2bc990350e31bdd983eced689db83
+platform/prebuilts/module_sdk/Wifi e86d09d77490a78722332f9aeac3f8dcdc3b55e5
+platform/prebuilts/module_sdk/art 2d0786d63daf86d5eef360549d4fb3eafab6caf6
+platform/prebuilts/module_sdk/conscrypt 14a471e093983f36cd72bd166552241987b94fad
+platform/prebuilts/ndk 9f83177cd6c64931587280914bfe5a0c030b32e9
 platform/prebuilts/qemu-kernel 8adb819be605d1ebbc20a75fdf38f0c23f66e778
-platform/prebuilts/r8 8a9bb879d50c7ac61090ba03f79737f9c9a088fb
-platform/prebuilts/remoteexecution-client a8b433488c5a92194d2f7006e4fdb37371883dad
-platform/prebuilts/runtime f3f68740bce762cec904a218568314b379f04846
-platform/prebuilts/rust 7246f7d96a152d073f5d422d44807209b74c9210
-platform/prebuilts/sdk cf37c5fef919a2d4befa11a30b45fbb55bffbeb7
-platform/prebuilts/tools b2afc5ffb1ddb9211ba8f2404739469f15eff41f
-platform/prebuilts/vndk/v29 cdbaf8e9b7d3f478e58ab32059fce005350a5ed2
-platform/prebuilts/vndk/v30 47992d07b3aea5f1db60e4acf4608936c0b91672
-platform/prebuilts/vndk/v31 676dab1273673d10d95b453c9fa827d14754bc89
-platform/prebuilts/vndk/v32 3f3d81d661fcf26693eed5e20c75ee8159d5ce71
-platform/prebuilts/vndk/v33 4222e3ed3341bf3ebc890ae8e2c6fa1a6d38fcd1
-platform/prebuilts/vndk/v34 7750012822612d39e1ce6b267cbf65ba497955f9
-platform/sdk da990d0543b90a3a336f043af0912b9021a97d37
-platform/system/apex 3abad66fe0d6de36c7864c61834e3be7fe3296e3
-platform/system/authgraph 08b286df223ae5be5d7340c38a586c400c4ace1d
-platform/system/bpf 799450d097fa37f5796636c2800a0d77b2dafefc
-platform/system/bpfprogs a3ed4138a3eff48584a2901f02661765997e8b98
-platform/system/ca-certificates d263cad2737dea69f3849eda964a8f2b2616e79f
-platform/system/chre 9d750fc3ad899b4751b6d2ba6320bd5254a57a1a
-platform/system/connectivity/wificond 3fd8c9499bd8ceb4fccd06216cdb6f6c1a07cd8a
-platform/system/core 64fdfda3889523df0584843ae92c74d34d03b48f
-platform/system/dmesgd d71ad3d81aec7c7721179588de02bed9361c11bf
-platform/system/extras be5fd2943287b6aa642c3b1c42d4a8a08dc8d417
-platform/system/gatekeeper 92ea7e0d7b8a007dc2ce9026e4bca0657dfc2d0b
-platform/system/gsid ea9cea17472ee7b828c5d568a319da5eb445f63f
-platform/system/hardware/interfaces 1f1ace38f5a4ec5630dfdba0443027989363d23f
-platform/system/hwservicemanager 50dfec19b1ec31b4bceab61e995b1c4bad6f8cc7
-platform/system/incremental_delivery 0d9ef1c3bf56c39405876e41b8ed26a300f02bb1
-platform/system/iorap 32a984ca1684f55b92307f9e5a808d68ceb106eb
-platform/system/keymaster d676a0ca8ca4e5f2d570851b80ce808bad9c564f
-platform/system/keymint 24dcbf59a30435ffb89792ee36d208cf58d5ed6a
-platform/system/libartpalette 3346d22d10371ee4414522148897abf82c6e4844
-platform/system/libbase e36c8efadc2315b2f0131fcc125d164620a1f6a0
-platform/system/libcppbor 4e488a7d1cb42ab2942465eaccb8415b6c3c49d3
-platform/system/libfmq 47c72da5d39460f1794ef66f49f6fd426854bb41
-platform/system/libhidl eff537fd84d70ab3da3b2b3a71b0efa87a9e81e4
-platform/system/libhwbinder 09502cdf2215b600f2ebf807ca5f561b2dd87fd2
-platform/system/libprocinfo 2aae0081a9026824db63e552ac0190ab95182b17
-platform/system/librustutils 1e0bb4dab6374a9c974f337caa5784c4715ec1d9
-platform/system/libsysprop b092e65e36870b5747d025e4bc07dacdcc1af2e4
-platform/system/libufdt 31cc0a7d2ab708c71c99df4721ff744edc0ac32b
-platform/system/libvintf 4b041b283f05bffd0c50aa1486b63ed4a68d68dc
-platform/system/libziparchive f4dbdfbfa33958e11bc9a9515a432f7df9b175ca
-platform/system/linkerconfig 9e4defadbb5ae3c7c834fd99c4412b24243ad612
-platform/system/logging 80e1ec8d5cf1d1c747d2a172fde98f0bb92cc5f4
-platform/system/media 440acc884a67a90eae8703a27b780bbc1edd0355
-platform/system/memory/libdmabufheap af5df5195db316f7a198fd930f2ece72ac36b505
-platform/system/memory/libion 8d66539a69260073890e61fe8f3c8aec7746e4ce
-platform/system/memory/libmeminfo 924c2d0b551df89eda224cad69a770e95947c49c
-platform/system/memory/libmemtrack dce9cbc8f5e4cd46aeec62bc63cdbcf226d68441
-platform/system/memory/libmemunreachable adbdfe72d26d7207c354902acfbe9c49d8000546
-platform/system/memory/lmkd 7913dce84c4eac8ecf996d6f62fa10fcf1ab1a9d
-platform/system/netd 12ec2bc5816b1949908a259194e0cfebec645d4b
-platform/system/nfc 50870897dcdfccdfcbf24ecc41d5dea5adc4c3df
-platform/system/nvram 4835931928431022b21248ff594cc7980d78ec2a
-platform/system/security b323393cea49c2b1a26ce523a153393f3586e46e
-platform/system/sepolicy 60acaed0e8e280e209e361a2efdd0063f3981e40
-platform/system/server_configurable_flags 2f240f84d6a7960646f9439127c3d0c0424e1c09
-platform/system/teeui 20dd6c842e1d636118f9ff355d870c4f59101e65
-platform/system/testing/gtest_extras 16d90e94aa9c753b8a8e24fd0b2c339419b6b85a
-platform/system/timezone f4ce2505d09aa598fbc74a60ed030d6a4cc883c1
-platform/system/tools/aidl 1e26da42ee4a28b35f0fb25b94ffe19608086ea9
-platform/system/tools/hidl bc923b63a18e5f20876ae3765076a3ba43561aef
-platform/system/tools/mkbootimg f7c8d838df1712ad0527d23c8a317f15e2b19875
-platform/system/tools/sysprop f1840d1ed45a71bfa71b42cbee21c95deee4797d
-platform/system/tools/xsdc 94d033ecc644d2de0f1a98efe8c6e71d2db830a3
-platform/system/unwinding b9659763aff21913eeb9a00c36cb40a7bb034b85
-platform/system/update_engine 2023fd7069ca7304348b9474ce19b20c4af2da69
-platform/system/vold ab778f9362bdfe4fd1c567680f73b88446c39793
-platform/test/app_compat/csuite 10577ae2f139a7ff32f5f809d114f3c918ace066
-platform/test/catbox eb49c627ee6208de9e0be78b8a6740d09fbceb25
-platform/test/cts-root ab4590982ef99e0b2c8c568909feec143eccedb9
-platform/test/dittosuite f3a5d0d5a2b6926b2775609f93453b0b2c1a9dcd
-platform/test/framework 255a086da9f724180c0d8a797ab093e6e21841b3
-platform/test/mlts/benchmark e5c2e128b1f6e6f447116803ec0b558ce587ef44
-platform/test/mlts/models 59b63f4b9649abbdd89b508d51fd4a5f212dc33e
-platform/test/mts 9424610b92ba1e11e2dcc1dd819330537166cd14
-platform/test/robolectric-extensions c46fd03b9c8f844526c5fbd2af57db637ccd2158
-platform/test/suite_harness a49a9c579a39d2a626a6244462ca7f201e8883ee
-platform/test/vts da9fcf010d8bf53f00d58a10b178e8a441133160
-platform/test/vts-testcase/hal e094876cea565dbe53af42feeb3a58c1ea9f906e
+platform/prebuilts/r8 c4fb2e0d8b86b5a25d1aedd4abfedd5a09e9d249
+platform/prebuilts/remoteexecution-client 0cf093b4100113967dc6def5647ea08bf1229c70
+platform/prebuilts/runtime f60a41f81d5413f7c7156c5e732355056a6ddb57
+platform/prebuilts/rust 74d6a17aea7281134069196aa2f5b1ceefecfd95
+platform/prebuilts/sdk 5c9632a8e4c68f93f2ab892c261d9f31b431a630
+platform/prebuilts/tools 567fd5b7cf338dc0fda866058668e0507225d2db
+platform/prebuilts/vndk/v29 75cee7497e90a9bc2a3391466fec55dac55b7ee6
+platform/prebuilts/vndk/v30 e6faa3c49daf53d2fd1ba970495ff65ecf111259
+platform/prebuilts/vndk/v31 3d53a08586c9e64ede0ae2248e179b5320103aa6
+platform/prebuilts/vndk/v32 847a19465d99342a43c23a261fb830824e1fefb8
+platform/prebuilts/vndk/v33 d2a767254352859816001a23e54fd7872275f389
+platform/prebuilts/vndk/v34 68767a65517f87e99067327b1a8cedaadbabbffc
+platform/sdk 23ebdf9fab45c9f2285477c5cfd87b2b20ffae08
+platform/system/apex bc1e64a6969aa7277b016b32cab876aa26d87fc7
+platform/system/authgraph 990a65a1735bde076494b6e4019f4757c96ba043
+platform/system/bpf 56f3c3c0f5927b3c41ba2b1a56867d00c1ad03a0
+platform/system/bpfprogs 9d0a8f475247ac4fb72deb949a94eefd3430008d
+platform/system/ca-certificates 8d24745b5ed53fa6a995c9758f1e70cd6762d820
+platform/system/chre ffc45aa89f429036cabbdaeaebe3a8dd7fa47bf4
+platform/system/connectivity/wificond 60c36967d89b57531b8ceb0eac7dd852f942f972
+platform/system/core 54a6fab636390eaa771d3f776058b38ecead2a96
+platform/system/dmesgd 2545ec7e96afddee60b5f5d2dde24c79ccdf5d33
+platform/system/extras d4ef0af50486645fa372061ad2e61e4a493f0416
+platform/system/gatekeeper 4586c2988401adcb5633cfaa08e34669dd901a71
+platform/system/gsid 8f9cef72b687e88b06d61a7f18d4bd81f2e974e4
+platform/system/hardware/interfaces cfd23fa61794b168d4a160b46be3e4d3dfd1079d
+platform/system/hwservicemanager bd013c4b364527afee21f98ae9046ed80ec3892a
+platform/system/incremental_delivery d3efbc1b49db778f219ac4e699e6810cf043e75f
+platform/system/iorap 24fb24afc8a1addba7fb10054823b82298822a05
+platform/system/keymaster cd13c5bac2152986e8a0780f26a0231bcec96528
+platform/system/keymint 6755ddc41a483399ba9277c413d9063620487caa
+platform/system/libartpalette cf5fb3f361cdf751f1a916e065d72d6b3520c053
+platform/system/libbase 5b5c21131b0ac22c610e8e06e266ff80b06aec9a
+platform/system/libcppbor 6ad85d370019051dc2de40d6aab99b2e20957501
+platform/system/libfmq 71b2f2af5febaa11c07e32467fc3407a74ba7529
+platform/system/libhidl 98561ef5d76557b2b7c3364680839ac8abd11a79
+platform/system/libhwbinder 351de717173e3f11b7db2e577001117b84648b9f
+platform/system/libprocinfo f7dced08ba8d718ee8c6e64331942be468084efa
+platform/system/librustutils 01617fe4d3d37032bb704e9a9c48ea90fc991592
+platform/system/libsysprop bf09f84a7153096f6391737d99e932555c8beabd
+platform/system/libufdt 859a912458513a0e8f60e5bb38a8140ae91e22ec
+platform/system/libvintf 169bbf2cae4353d0744bd14a6ed97d05cb030ea8
+platform/system/libziparchive 0f74e0d2b5981eb3afd47e0d9f9406bdad6e5005
+platform/system/linkerconfig 0412aa340d964b917d5c973f007ec14049aa5d47
+platform/system/logging a585c3ff993e0ecf692bff3a8c3045e22da5fd21
+platform/system/media 9dc90ba1b867efbbf0748b66c1b4ea853690130d
+platform/system/memory/libdmabufheap 421d18db607af3b40de5fdc53f4c62be35ffa853
+platform/system/memory/libion 6d5b575859af54f7192f1086da5567b3abbfe7c9
+platform/system/memory/libmeminfo 0e93488b299a47cfba53292361a674823c5c7f17
+platform/system/memory/libmemtrack dbcebea7834af08199ca4c63c6b045de02ff502e
+platform/system/memory/libmemunreachable 930e5053f87caf6ee3e444576a86a5bbdb7b56b1
+platform/system/memory/lmkd 8f9163325580f8bdeb4720877fcf40e63f13d4fb
+platform/system/netd 6e00c9814d6bc46a99484976ae9b7cf199349068
+platform/system/nfc a1752db56910eb756ef1c6cddf34cd069c5e507a
+platform/system/nvram b66df144e607b094840824a9ab0b43f4beeb5efb
+platform/system/secretkeeper 8b06e4e8766845afb765536c0d8ff281a3cd92d2
+platform/system/security 35ce3a0f90d60aa8cae26cddf8b849ed2c9d7093
+platform/system/sepolicy 5dc9d836ce12cb16b5a248b40cd5cea46096d75f
+platform/system/server_configurable_flags 417d605cf65acaeaaa9c909910d41ac50e613232
+platform/system/teeui 3c372dcc4ca9935ff53182ecdd0418cc1b7adb40
+platform/system/testing/gtest_extras bb6cd3d6125ae1a4d6cef11bbbc4ccf5afdeccaf
+platform/system/timezone dd917d3658c4b1a4b508e582e223eb25ba6a435b
+platform/system/tools/aidl 363157cd5df1800f22abdcbe14860ab1f532416d
+platform/system/tools/hidl ab7b758680b8de463c835584187dbca333a952e3
+platform/system/tools/mkbootimg d29386c8a11fd786175e01d8dc8a7955115fd169
+platform/system/tools/sysprop 5b0febbf459928fd69b93e186b95bff06073e458
+platform/system/tools/xsdc 2d4ec07f28defeec5d360f3763580f45ee70134d
+platform/system/unwinding 26147ba63efcc44aedfb18dc715e806d0b08483c
+platform/system/update_engine ad620dc982675c16844996ad6c0f31ad38021c0b
+platform/system/vold fafb12b7d6500c884dbeb2bc3678ee57042d163e
+platform/test/app_compat/csuite 59700c2d937d8d6f715a4ad0b019000d6bda44ee
+platform/test/catbox 4723d219eb1225948a712c559fe879dbf8549de2
+platform/test/cts-root f087038dcac72f5fc15c067fcb86569d23e76d40
+platform/test/dittosuite b066f42deae897c90518aefde0f8cbdd575b4800
+platform/test/framework 379ab7354907c19f531a154da0460939fa2462ae
+platform/test/mlts/benchmark dc74eda751d4d215d04be95db23d7a02857a0d59
+platform/test/mlts/models b83539b972169e286179283cc6a65199fe6b174f
+platform/test/mts 62e936ec36bec9fd5afc757693c00be1d464769f
+platform/test/robolectric-extensions 77aeffbd75cd35edccc3bb9c85c4b5901efe921c
+platform/test/suite_harness 2a0e74c00de71fa005b48eb68b5ef3e817808e11
+platform/test/vts 80de7133bffbb46c85bf0dcd2e21e7e50dedafb7
+platform/test/vts-testcase/hal 3fcf61f579fffe297150b89e61f298b9745a3f07
 platform/test/vts-testcase/hal-trace 3782d14cb8ca24996b199e175525eeea47758632
-platform/test/vts-testcase/kernel bb8f042f403c8f641def9e5f0eb5507fbeaa900e
+platform/test/vts-testcase/kernel 56bc5cb1533dfa864cb653558bac0c240139d72e
 platform/test/vts-testcase/nbu 48eb5964b710b3e6a9a244b6b098e69361fcbb6e
 platform/test/vts-testcase/performance e27d02dd550c8f6fad539b32d99cc6ade245afa0
-platform/test/vts-testcase/security 74edb749506d2ed8619561ccc819a7bd055342fd
-platform/test/vts-testcase/vndk d3d17b31594ea10749a328a9a373c761f55fcfd3
-platform/tools/aadevtools e5fcc6ca8715e31526ec5b6a150338e99e0bb234
-platform/tools/acloud 417f01d100fb8b4f064d5f049ae3f226c8a3dd7e
-platform/tools/apifinder 319122b36e45bbc1bca9da4a0b7dad264899563d
-platform/tools/apksig d565f0c1ce7c458725e76b1483e4679f79ac7625
-platform/tools/apkzlib 3a1237b6e3c26849e9925d6cb96386acb1ddc7b2
-platform/tools/asuite f88cdfda2c2e9701de63e61e5e1b95dbcbe7ec5c
-platform/tools/carrier_settings 94c637f761f595a78b56d632a36ed8f9aabfc270
+platform/test/vts-testcase/security fd40e44f5c55d4397b73fa3478ab5dd07e3b64f7
+platform/test/vts-testcase/vndk 25563d5c1a11fbdde5fba0abadb2ef4da7901aea
+platform/tools/aadevtools 70e40d86a8920f3dd153cdf070728122a1f84ed2
+platform/tools/acloud 5a4342dcfd86a0bfa8d2b3e1d9b4e75c6adf07a5
+platform/tools/apifinder b642eb3fdb6307cbd5a074bcf20842c1c4dea9c9
+platform/tools/apksig 3145bb797be4a3efade3b81f6f25e244eb1b96e7
+platform/tools/apkzlib 72f37e535422183d0039f839b5db35b0066bbb40
+platform/tools/asuite 179ed0d1d6cbaf563b7233a0a0d344033524a463
+platform/tools/carrier_settings 56fb00e2e2d16ef144d1871d277b61d57fa4d334
+platform/tools/content_addressed_storage/prebuilts 61af7fedcb60a0cce7abdc8dd727bacf46133ab1
 platform/tools/currysrc 2649cdecea09c16ce766a9a0af08372e3513bd3c
-platform/tools/dexter 092b45869e797ae8e229907ff5638db89e045167
+platform/tools/deviceinfra/prebuilts b709d451f4b22b9f783b52b065c4ca60cdbb56ca
+platform/tools/dexter 23037cfeb3d3e2e219e113814a214ed9076fec83
 platform/tools/doc_generation c3c86bb2e7f650620a7ff98ade30f1291904d082
 platform/tools/external/fat32lib 9645f0b07a03dafb67d98d268db74dc6f17eca0d
-platform/tools/external_updater 9426e5f5145dc27f7db9905d76b5d66fbacc9962
+platform/tools/external_updater 3fa33152b2927b5049daf40ffd73b18a293c47cf
 platform/tools/lint_checks f9094730e3edbd99b4f6995c00ed4aec38eb8bb8
-platform/tools/loganalysis 6768fa52de4de1dcd5ac96419f730fa986c2b3df
-platform/tools/metalava e16e71e6ba1c8c1643b21ad4488ae4bcfa06f3d3
-platform/tools/ndkports 7402e90928131c52c3f8c97ab4874b9384b5803c
-platform/tools/netsim 0d0e9f16b18cfb3f983ee47fb5f50fbbf8cdbe20
-platform/tools/repohooks 081a65fd92550042997501b5f51c9091f342f1d4
-platform/tools/security 470c8a2ac7191365dc7024c49cc4b731499a4d94
-platform/tools/test/connectivity c3f1cfa4b9b42d4f46cec943d4caef370170f365
-platform/tools/test/graphicsbenchmark e9b856738e5acf311a8a098f243fc5bed0004116
-platform/tools/test/mobly_extensions da19a483cd5db5dda45bf3c93cfc95ab83414024
-platform/tools/test/mobly_snippets 06d5bfb5c85e99c4fb15c7614d1bfc1f16d3d6d7
-platform/tools/test/openhst c49e627bd0acf288fd95b61d42f13f2b630eb162
-platform/tools/tradefederation 2a39f4e6c68acb4375918b6d71a0640cee6144c2
-platform/tools/tradefederation/contrib e96b2f869ee50fa89a6fc696694e7cad23348ba1
-platform/tools/tradefederation/prebuilts 0a94fced93350dead7cb143707fe692fd1ebf253
-platform/tools/treble 82ebba8a1a0e5aac04de963bb40e4c817aac3622
-platform/tools/trebuchet e4b1e4946c8b3374986f9e981f26e5da358b8afe
+platform/tools/loganalysis 18b97af88833a5fc994ba5e1bce89e52c65393bf
+platform/tools/metalava 21e8b0f65282ff3df354bdc86b6b69a1a988cc9b
+platform/tools/ndkports 35c6e4f596b76bc404326e82ae228646b6aafee0
+platform/tools/netsim 5093fafc6523908bf3b61bb9a47b3b3c6b8a42ca
+platform/tools/repohooks 214b67a1380b28795bdadf521822ba40e3330564
+platform/tools/rr_prebuilt 9bd380eee96da9f38f69e24bc3441ecb1878ce99
+platform/tools/security 50c0f2f3d5b8cae453b84f409462431ec585c6cc
+platform/tools/test/connectivity c165d01c0c5d76b510c496f2cdc673bd540a8e16
+platform/tools/test/graphicsbenchmark c2e006288b3e73e9086c808f3f8884e3448d3abd
+platform/tools/test/mobly_extensions 9f226baeb590e3bf82c8b206aa205a6dad07bfb9
+platform/tools/test/mobly_snippets ecbcbb194e7bbf0d6b4c2c1900a2f760f888a28e
+platform/tools/test/openhst db1e8c5013f4693e3e812182dae6e3d7837bdf53
+platform/tools/tradefederation 1e1ef2dea7efb78edc26892028ee0314fb7ba99d
+platform/tools/tradefederation/contrib 15f2204806151cb392dc7774f82ea85908846b95
+platform/tools/tradefederation/prebuilts e8a11fd472cec04c5fd68356b2b4e69106b294c6
+platform/tools/treble 4a7220ccda1ce194acd0e81f9f0c7161368864c1
+platform/tools/trebuchet 5f2857f601ee5bd79b1cf3102d40f69ba2286900
 toolchain/benchmark ea08979b75076a463a75bac8c72c6ea4ddbc2d9a
-toolchain/pgo-profiles cbd4e44ef3b0cd40373e454a522ad2e364697de4
-tools/platform-compat ed78f544f94532c3b1a459811a5d63535c1ccaf3
+toolchain/pgo-profiles 09bae6a5aa502cda9a831575c6dc056d748abc6d
+tools/platform-compat 88e987a04e852cb1884366e8a4ac19e50361a1b3
diff --git a/report_html.js b/report_html.js
index b0827f4..94e8ae5 100644
--- a/report_html.js
+++ b/report_html.js
@@ -701,9 +701,13 @@
                 let table = this.tableDiv.find('table');
                 let dataTable = table.DataTable({
                     lengthMenu: [10, 20, 50, 100, -1],
-                    order: [0, 'desc'],
+                    pageLength: 100,
+                    order: [[0, 'desc'], [1, 'desc'], [2, 'desc']],
                     data: data,
                     responsive: true,
+                    columnDefs: [
+                        { orderSequence: [ 'desc' ], targets: [0, 1, 2] },
+                    ],
                 });
                 dataTable.column(7).visible(false);
 
@@ -1215,18 +1219,21 @@
         let map = new Map();
         for (let node of nodes) {
             for (let child of node.c) {
-                let subNodes = map.get(child.f);
+                let funcName = getFuncName(child.f);
+                let subNodes = map.get(funcName);
                 if (subNodes) {
                     subNodes.push(child);
                 } else {
-                    map.set(child.f, [child]);
+                    map.set(funcName, [child]);
                 }
             }
         }
+        const funcNames = [...map.keys()].sort();
         let res = [];
-        for (let subNodes of map.values()) {
+        funcNames.forEach(function (funcName) {
+            const subNodes = map.get(funcName);
             res.push(subNodes.length == 1 ? subNodes[0] : subNodes);
-        }
+        });
         return res;
     }
 
diff --git a/report_html.py b/report_html.py
index 39be325..ba143fd 100755
--- a/report_html.py
+++ b/report_html.py
@@ -28,7 +28,7 @@
 import sys
 from typing import Any, Callable, Dict, Iterator, List, Optional, Set, Tuple, Union
 
-from simpleperf_report_lib import ReportLib, SymbolStruct
+from simpleperf_report_lib import GetReportLib, SymbolStruct
 from simpleperf_utils import (
     Addr2Nearestline, AddrRange, BaseArgumentParser, BinaryFinder, Disassembly, get_script_dir,
     log_exit, Objdump, open_report_in_browser, ReadElf, ReportLibOptions, SourceFileSearcher)
@@ -246,6 +246,10 @@
         self.call_graph.merge(thread.call_graph)
         self.reverse_call_graph.merge(thread.reverse_call_graph)
 
+    def sort_call_graph_by_function_name(self, get_func_name: Callable[[int], str]) -> None:
+        self.call_graph.sort_by_function_name(get_func_name)
+        self.reverse_call_graph.sort_by_function_name(get_func_name)
+
 
 class LibScope(object):
 
@@ -408,6 +412,17 @@
             else:
                 cur_child.merge(child)
 
+    def sort_by_function_name(self, get_func_name: Callable[[int], str]) -> None:
+        if self.children:
+            child_func_ids = list(self.children.keys())
+            child_func_ids.sort(key=get_func_name)
+            new_children = collections.OrderedDict()
+            for func_id in child_func_ids:
+                new_children[func_id] = self.children[func_id]
+            self.children = new_children
+            for child in self.children.values():
+                child.sort_by_function_name(get_func_name)
+
 
 @dataclass
 class LibInfo:
@@ -467,6 +482,9 @@
             self.id_to_func[func_id] = function
         return function.func_id
 
+    def get_func_name(self, func_id: int) -> str:
+        return self.id_to_func[func_id].func_name
+
     def trim_functions(self, left_func_ids: Set[int]):
         """ Remove functions excepts those in left_func_ids. """
         for function in self.name_to_func.values():
@@ -621,8 +639,7 @@
         self.binary_finder = BinaryFinder(binary_cache_path, ReadElf(ndk_path))
 
     def load_record_file(self, record_file: str, report_lib_options: ReportLibOptions):
-        lib = ReportLib()
-        lib.SetRecordFile(record_file)
+        lib = GetReportLib(record_file)
         # If not showing ip for unknown symbols, the percent of the unknown symbol may be
         # accumulated to very big, and ranks first in the sample table.
         lib.ShowIpForUnknownSymbol()
@@ -704,6 +721,12 @@
                 del event.processes[process]
         self.functions.trim_functions(hit_func_ids)
 
+    def sort_call_graph_by_function_name(self) -> None:
+        for event in self.events.values():
+            for process in event.processes.values():
+                for thread in process.threads.values():
+                    thread.sort_call_graph_by_function_name(self.functions.get_func_name)
+
     def _get_event(self, event_name: str) -> EventScope:
         if event_name not in self.events:
             self.events[event_name] = EventScope(event_name)
@@ -778,7 +801,8 @@
         # Collect needed source code in SourceFileSet.
         self.source_files.load_source_code(source_dirs)
 
-    def add_disassembly(self, filter_lib: Callable[[str], bool], jobs: int):
+    def add_disassembly(self, filter_lib: Callable[[str], bool],
+                        jobs: int, disassemble_job_size: int):
         """ Collect disassembly information:
             1. Use objdump to collect disassembly for each function in FunctionSet.
             2. Set flag to dump addr_hit_map when generating record info.
@@ -793,6 +817,7 @@
 
         with ThreadPoolExecutor(jobs) as executor:
             futures: List[Future] = []
+            all_tasks = []
             for lib_id, functions in lib_functions.items():
                 lib = self.libs.get_lib(lib_id)
                 if not filter_lib(lib.name):
@@ -800,33 +825,45 @@
                 dso_info = objdump.get_dso_info(lib.name, lib.build_id)
                 if not dso_info:
                     continue
-                # If there are not many functions, it's faster to disassemble them one by one.
-                # Otherwise it's faster to disassemble the whole binary.
-                if len(functions) < jobs:
-                    for function in functions:
-                        futures.append(executor.submit(self._disassemble_function, objdump,
-                                                       dso_info, function))
-                else:
-                    futures.append(executor.submit(self._disassemble_binary, objdump, dso_info,
-                                                   functions))
 
-            for future in futures:
-                future.result()
+                tasks = self.split_disassembly_jobs(functions, disassemble_job_size)
+                logging.debug('create %d jobs to disassemble %d functions in %s',
+                              len(tasks), len(functions), lib.name)
+                for task in tasks:
+                    futures.append(executor.submit(
+                        self._disassemble_functions, objdump, dso_info, task))
+                    all_tasks.append(task)
+
+            for task, future in zip(all_tasks, futures):
+                result = future.result()
+                if result and len(result) == len(task):
+                    for function, disassembly in zip(task, result):
+                        function.disassembly = disassembly.lines
+
+        logging.debug('finished all disassemble jobs')
         self.gen_addr_hit_map_in_record_info = True
 
-    def _disassemble_function(self, objdump: Objdump, dso_info, function: Function):
-        result = objdump.disassemble_function(dso_info, AddrRange(function.start_addr,
-                                              function.addr_len))
-        if result:
-            function.disassembly = result.lines
-
-    def _disassemble_binary(self, objdump: Objdump, dso_info, functions: List[Function]):
+    def split_disassembly_jobs(self, functions: List[Function],
+                               disassemble_job_size: int) -> List[List[Function]]:
+        """ Decide how to split the task of dissassembly functions in one library. """
+        if not functions:
+            return []
         functions.sort(key=lambda f: f.start_addr)
+        result = []
+        job_start_addr = None
+        for function in functions:
+            if (job_start_addr is None or
+                    function.start_addr - job_start_addr > disassemble_job_size):
+                job_start_addr = function.start_addr
+                result.append([function])
+            else:
+                result[-1].append(function)
+        return result
+
+    def _disassemble_functions(self, objdump: Objdump, dso_info,
+                               functions: List[Function]) -> Optional[List[Disassembly]]:
         addr_ranges = [AddrRange(f.start_addr, f.addr_len) for f in functions]
-        result = objdump.disassemble_functions(dso_info, addr_ranges)
-        if result:
-            for i in range(len(functions)):
-                functions[i].disassembly = result[i].lines
+        return objdump.disassemble_functions(dso_info, addr_ranges)
 
     def gen_record_info(self) -> Dict[str, Any]:
         """ Return json data which will be used by report_html.js. """
@@ -987,6 +1024,8 @@
     parser.add_argument('--add_source_code', action='store_true', help='Add source code.')
     parser.add_argument('--source_dirs', nargs='+', help='Source code directories.')
     parser.add_argument('--add_disassembly', action='store_true', help='Add disassembled code.')
+    parser.add_argument('--disassemble-job-size', type=int, default=1024*1024,
+                        help='address range for one disassemble job')
     parser.add_argument('--binary_filter', nargs='+', help="""Annotate source code and disassembly
                         only for selected binaries.""")
     parser.add_argument(
@@ -1029,6 +1068,7 @@
     if args.aggregate_by_thread_name:
         record_data.aggregate_by_thread_name()
     record_data.limit_percents(args.min_func_percent, args.min_callchain_percent)
+    record_data.sort_call_graph_by_function_name()
 
     def filter_lib(lib_name: str) -> bool:
         if not args.binary_filter:
@@ -1040,7 +1080,7 @@
     if args.add_source_code:
         record_data.add_source_code(args.source_dirs, filter_lib, args.jobs)
     if args.add_disassembly:
-        record_data.add_disassembly(filter_lib, args.jobs)
+        record_data.add_disassembly(filter_lib, args.jobs, args.disassemble_job_size)
 
     # 3. Generate report html.
     report_generator = ReportGenerator(args.report_path)
diff --git a/report_sample.py b/report_sample.py
index 9b6947f..c5fc860 100755
--- a/report_sample.py
+++ b/report_sample.py
@@ -19,7 +19,7 @@
 """
 
 import sys
-from simpleperf_report_lib import ReportLib
+from simpleperf_report_lib import GetReportLib
 from simpleperf_utils import BaseArgumentParser, flatten_arg_list, ReportLibOptions
 from typing import List, Set, Optional
 
@@ -32,13 +32,11 @@
         header: bool,
         report_lib_options: ReportLibOptions):
     """ read record_file, and print each sample"""
-    lib = ReportLib()
+    lib = GetReportLib(record_file)
 
     lib.ShowIpForUnknownSymbol()
     if symfs_dir is not None:
         lib.SetSymfs(symfs_dir)
-    if record_file is not None:
-        lib.SetRecordFile(record_file)
     if kallsyms_file is not None:
         lib.SetKallsymsFile(kallsyms_file)
     lib.SetReportOptions(report_lib_options)
diff --git a/report_sample_pb2.py b/report_sample_pb2.py
new file mode 100644
index 0000000..5e9d6df
--- /dev/null
+++ b/report_sample_pb2.py
@@ -0,0 +1,46 @@
+# -*- coding: utf-8 -*-
+# Generated by the protocol buffer compiler.  DO NOT EDIT!
+# source: cmd_report_sample.proto
+"""Generated protocol buffer code."""
+from google.protobuf.internal import builder as _builder
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import descriptor_pool as _descriptor_pool
+from google.protobuf import symbol_database as _symbol_database
+# @@protoc_insertion_point(imports)
+
+_sym_db = _symbol_database.Default()
+
+
+
+
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17\x63md_report_sample.proto\x12\x17simpleperf_report_proto\"\xed\x06\n\x06Sample\x12\x0c\n\x04time\x18\x01 \x01(\x04\x12\x11\n\tthread_id\x18\x02 \x01(\x05\x12\x41\n\tcallchain\x18\x03 \x03(\x0b\x32..simpleperf_report_proto.Sample.CallChainEntry\x12\x13\n\x0b\x65vent_count\x18\x04 \x01(\x04\x12\x15\n\revent_type_id\x18\x05 \x01(\r\x12I\n\x10unwinding_result\x18\x06 \x01(\x0b\x32/.simpleperf_report_proto.Sample.UnwindingResult\x1a\x94\x02\n\x0e\x43\x61llChainEntry\x12\x15\n\rvaddr_in_file\x18\x01 \x01(\x04\x12\x0f\n\x07\x66ile_id\x18\x02 \x01(\r\x12\x11\n\tsymbol_id\x18\x03 \x01(\x05\x12\x63\n\x0e\x65xecution_type\x18\x04 \x01(\x0e\x32<.simpleperf_report_proto.Sample.CallChainEntry.ExecutionType:\rNATIVE_METHOD\"b\n\rExecutionType\x12\x11\n\rNATIVE_METHOD\x10\x00\x12\x1a\n\x16INTERPRETED_JVM_METHOD\x10\x01\x12\x12\n\x0eJIT_JVM_METHOD\x10\x02\x12\x0e\n\nART_METHOD\x10\x03\x1a\xf0\x02\n\x0fUnwindingResult\x12\x16\n\x0eraw_error_code\x18\x01 \x01(\r\x12\x12\n\nerror_addr\x18\x02 \x01(\x04\x12M\n\nerror_code\x18\x03 \x01(\x0e\x32\x39.simpleperf_report_proto.Sample.UnwindingResult.ErrorCode\"\xe1\x01\n\tErrorCode\x12\x0e\n\nERROR_NONE\x10\x00\x12\x11\n\rERROR_UNKNOWN\x10\x01\x12\x1a\n\x16\x45RROR_NOT_ENOUGH_STACK\x10\x02\x12\x18\n\x14\x45RROR_MEMORY_INVALID\x10\x03\x12\x15\n\x11\x45RROR_UNWIND_INFO\x10\x04\x12\x15\n\x11\x45RROR_INVALID_MAP\x10\x05\x12\x1c\n\x18\x45RROR_MAX_FRAME_EXCEEDED\x10\x06\x12\x18\n\x14\x45RROR_REPEATED_FRAME\x10\x07\x12\x15\n\x11\x45RROR_INVALID_ELF\x10\x08\"9\n\rLostSituation\x12\x14\n\x0csample_count\x18\x01 \x01(\x04\x12\x12\n\nlost_count\x18\x02 \x01(\x04\"H\n\x04\x46ile\x12\n\n\x02id\x18\x01 \x01(\r\x12\x0c\n\x04path\x18\x02 \x01(\t\x12\x0e\n\x06symbol\x18\x03 \x03(\t\x12\x16\n\x0emangled_symbol\x18\x04 \x03(\t\"D\n\x06Thread\x12\x11\n\tthread_id\x18\x01 \x01(\r\x12\x12\n\nprocess_id\x18\x02 \x01(\r\x12\x13\n\x0bthread_name\x18\x03 \x01(\t\"\x99\x01\n\x08MetaInfo\x12\x12\n\nevent_type\x18\x01 \x03(\t\x12\x18\n\x10\x61pp_package_name\x18\x02 \x01(\t\x12\x10\n\x08\x61pp_type\x18\x03 \x01(\t\x12\x1b\n\x13\x61ndroid_sdk_version\x18\x04 \x01(\t\x12\x1a\n\x12\x61ndroid_build_type\x18\x05 \x01(\t\x12\x14\n\x0ctrace_offcpu\x18\x06 \x01(\x08\"C\n\rContextSwitch\x12\x11\n\tswitch_on\x18\x01 \x01(\x08\x12\x0c\n\x04time\x18\x02 \x01(\x04\x12\x11\n\tthread_id\x18\x03 \x01(\r\"\xde\x02\n\x06Record\x12\x31\n\x06sample\x18\x01 \x01(\x0b\x32\x1f.simpleperf_report_proto.SampleH\x00\x12\x36\n\x04lost\x18\x02 \x01(\x0b\x32&.simpleperf_report_proto.LostSituationH\x00\x12-\n\x04\x66ile\x18\x03 \x01(\x0b\x32\x1d.simpleperf_report_proto.FileH\x00\x12\x31\n\x06thread\x18\x04 \x01(\x0b\x32\x1f.simpleperf_report_proto.ThreadH\x00\x12\x36\n\tmeta_info\x18\x05 \x01(\x0b\x32!.simpleperf_report_proto.MetaInfoH\x00\x12@\n\x0e\x63ontext_switch\x18\x06 \x01(\x0b\x32&.simpleperf_report_proto.ContextSwitchH\x00\x42\r\n\x0brecord_dataB6\n com.android.tools.profiler.protoB\x10SimpleperfReportH\x03')
+
+_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
+_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'cmd_report_sample_pb2', globals())
+if _descriptor._USE_C_DESCRIPTORS == False:
+
+  DESCRIPTOR._options = None
+  DESCRIPTOR._serialized_options = b'\n com.android.tools.profiler.protoB\020SimpleperfReportH\003'
+  _SAMPLE._serialized_start=53
+  _SAMPLE._serialized_end=930
+  _SAMPLE_CALLCHAINENTRY._serialized_start=283
+  _SAMPLE_CALLCHAINENTRY._serialized_end=559
+  _SAMPLE_CALLCHAINENTRY_EXECUTIONTYPE._serialized_start=461
+  _SAMPLE_CALLCHAINENTRY_EXECUTIONTYPE._serialized_end=559
+  _SAMPLE_UNWINDINGRESULT._serialized_start=562
+  _SAMPLE_UNWINDINGRESULT._serialized_end=930
+  _SAMPLE_UNWINDINGRESULT_ERRORCODE._serialized_start=705
+  _SAMPLE_UNWINDINGRESULT_ERRORCODE._serialized_end=930
+  _LOSTSITUATION._serialized_start=932
+  _LOSTSITUATION._serialized_end=989
+  _FILE._serialized_start=991
+  _FILE._serialized_end=1063
+  _THREAD._serialized_start=1065
+  _THREAD._serialized_end=1133
+  _METAINFO._serialized_start=1136
+  _METAINFO._serialized_end=1289
+  _CONTEXTSWITCH._serialized_start=1291
+  _CONTEXTSWITCH._serialized_end=1358
+  _RECORD._serialized_start=1361
+  _RECORD._serialized_end=1711
+# @@protoc_insertion_point(module_scope)
diff --git a/sample_filter.py b/sample_filter.py
new file mode 100755
index 0000000..c361762
--- /dev/null
+++ b/sample_filter.py
@@ -0,0 +1,130 @@
+#!/usr/bin/env python3
+#
+# Copyright (C) 2024 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+"""sample_filter.py: generate sample filter files, which can be passed in the
+    --filter-file option when reporting.
+
+Example:
+  ./sample_filter.py -i perf.data --split-time-range 2 -o sample_filter
+  ./gecko_profile_generator.py -i perf.data --filter-file sample_filter_part1 \
+    | gzip >profile-part1.json.gz
+  ./gecko_profile_generator.py -i perf.data --filter-file sample_filter_part2 \
+    | gzip >profile-part2.json.gz
+"""
+
+import logging
+from simpleperf_report_lib import ReportLib
+from simpleperf_utils import BaseArgumentParser
+from typing import Tuple
+
+
+class RecordFileReader:
+    def __init__(self, record_file: str):
+        self.record_file = record_file
+
+    def get_time_range(self) -> Tuple[int, int]:
+        """ Return a tuple of (min_timestamp, max_timestamp). """
+        min_timestamp = 0
+        max_timestamp = 0
+        lib = ReportLib()
+        lib.SetRecordFile(self.record_file)
+        while True:
+            sample = lib.GetNextSample()
+            if not sample:
+                break
+            if not min_timestamp or sample.time < min_timestamp:
+                min_timestamp = sample.time
+            if not max_timestamp or sample.time > max_timestamp:
+                max_timestamp = sample.time
+        lib.Close()
+        return (min_timestamp, max_timestamp)
+
+
+def show_time_range(record_file: str) -> None:
+    reader = RecordFileReader(record_file)
+    time_range = reader.get_time_range()
+    print('time range of samples is %.3f s' % ((time_range[1] - time_range[0]) / 1e9))
+
+
+def filter_samples(
+        record_file: str, split_time_range: int, exclude_first_seconds: int,
+        exclude_last_seconds: int, output_file_prefix: str) -> None:
+    reader = RecordFileReader(record_file)
+    min_timestamp, max_timestamp = reader.get_time_range()
+    comment = 'total time range: %d seconds' % ((max_timestamp - min_timestamp) // 1e9)
+    if exclude_first_seconds:
+        min_timestamp += int(exclude_first_seconds * 1e9)
+        comment += ', exclude first %d seconds' % exclude_first_seconds
+    if exclude_last_seconds:
+        max_timestamp -= int(exclude_last_seconds * 1e9)
+        comment += ', exclude last %d seconds' % exclude_last_seconds
+    if min_timestamp > max_timestamp:
+        logging.error('All samples are filtered out')
+        return
+    if not split_time_range:
+        output_file = output_file_prefix
+        with open(output_file, 'w') as fh:
+            fh.write('// %s\n' % comment)
+            fh.write('GLOBAL_BEGIN %d\n' % min_timestamp)
+            fh.write('GLOBAL_END %d\n' % max_timestamp)
+        print('Generate sample filter file: %s' % output_file)
+    else:
+        step = (max_timestamp - min_timestamp) // split_time_range
+        cur_timestamp = min_timestamp
+        for i in range(split_time_range):
+            output_file = output_file_prefix + '_part%s' % (i + 1)
+            with open(output_file, 'w') as fh:
+                time_range_comment = 'current range: %d to %d seconds' % (
+                    (cur_timestamp - min_timestamp) // 1e9,
+                    (cur_timestamp + step - min_timestamp) // 1e9)
+                fh.write('// %s, %s\n' % (comment, time_range_comment))
+                fh.write('GLOBAL_BEGIN %d\n' % cur_timestamp)
+                if i == split_time_range - 1:
+                    cur_timestamp = max_timestamp
+                else:
+                    cur_timestamp += step
+                fh.write('GLOBAL_END %d\n' % (cur_timestamp + 1))
+                cur_timestamp += 1
+            print('Generate sample filter file: %s' % output_file)
+
+
+def main():
+    parser = BaseArgumentParser(description=__doc__)
+    parser.add_argument('-i', '--record-file', nargs='?', default='perf.data',
+                        help='Default is perf.data.')
+    parser.add_argument('--show-time-range', action='store_true', help='show time range of samples')
+    parser.add_argument('--split-time-range', type=int,
+                        help='split time ranges of samples into several parts')
+    parser.add_argument('--exclude-first-seconds', type=int,
+                        help='exclude samples recorded in the first seconds')
+    parser.add_argument('--exclude-last-seconds', type=int,
+                        help='exclude samples recorded in the last seconds')
+    parser.add_argument(
+        '-o', '--output-file-prefix', default='sample_filter',
+        help='prefix for the generated sample filter files')
+    args = parser.parse_args()
+
+    if args.show_time_range:
+        show_time_range(args.record_file)
+
+    if args.split_time_range or args.exclude_first_seconds or args.exclude_last_seconds:
+        filter_samples(args.record_file, args.split_time_range, args.exclude_first_seconds,
+                       args.exclude_last_seconds, args.output_file_prefix)
+
+
+if __name__ == '__main__':
+    main()
diff --git a/simpleperf_report_lib.py b/simpleperf_report_lib.py
index 5f990ac..abc9a41 100644
--- a/simpleperf_report_lib.py
+++ b/simpleperf_report_lib.py
@@ -21,13 +21,14 @@
 """
 
 import collections
+from collections import namedtuple
 import ctypes as ct
 from pathlib import Path
 import struct
 from typing import Any, Dict, List, Optional, Union
 
-from simpleperf_utils import (bytes_to_str, get_host_binary_path, is_windows, str_to_bytes,
-                              ReportLibOptions)
+from simpleperf_utils import (bytes_to_str, get_host_binary_path, is_windows, log_exit,
+                              str_to_bytes, ReportLibOptions)
 
 
 def _is_null(p: Optional[ct._Pointer]) -> bool:
@@ -239,6 +240,7 @@
 
 # pylint: disable=invalid-name
 class ReportLib(object):
+    """ Read contents from perf.data. """
 
     def __init__(self, native_lib_path: Optional[str] = None):
         if native_lib_path is None:
@@ -529,3 +531,161 @@
         if self._instance is None:
             raise Exception('Instance is Closed')
         return self._instance
+
+
+ProtoSample = namedtuple('ProtoSample', ['ip', 'pid', 'tid',
+                         'thread_comm', 'time', 'in_kernel', 'cpu', 'period'])
+ProtoEvent = namedtuple('ProtoEvent', ['name', 'tracing_data_format'])
+ProtoSymbol = namedtuple(
+    'ProtoSymbol',
+    ['dso_name', 'vaddr_in_file', 'symbol_name', 'symbol_addr', 'symbol_len', 'mapping'])
+ProtoMapping = namedtuple('ProtoMapping', ['start', 'end', 'pgoff'])
+ProtoCallChain = namedtuple('ProtoCallChain', ['nr', 'entries'])
+ProtoCallChainEntry = namedtuple('ProtoCallChainEntry', ['ip', 'symbol'])
+
+
+class ProtoFileReportLib:
+    """ Read contents from profile in cmd_report_sample.proto format.
+        It is generated by `simpleperf report-sample`.
+    """
+
+    @staticmethod
+    def is_supported_format(record_file: str):
+        with open(record_file, 'rb') as fh:
+            if fh.read(10) == b'SIMPLEPERF':
+                return True
+
+    @staticmethod
+    def get_report_sample_pb2():
+        try:
+            import report_sample_pb2
+            return report_sample_pb2
+        except ImportError as e:
+            log_exit(f'{e}\nprotobuf package is missing or too old. Please install it like ' +
+                     '`pip install protobuf==4.21`.')
+
+    def __init__(self):
+        self.report_sample_pb2 = ProtoFileReportLib.get_report_sample_pb2()
+        self.samples: List[self.report_sample_pb2.Sample] = []
+        self.sample_index = -1
+        self.files: List[self.report_sample_pb2.File] = []
+        self.thread_map: Dict[int, self.report_sample_pb2.Thread] = {}
+        self.meta_info: Optional[self.report_sample_pb2.MetaInfo] = None
+        self.fake_mapping_starts = []
+
+    def Close(self):
+        pass
+
+    def SetReportOptions(self, options: ReportLibOptions):
+        pass
+
+    def SetLogSeverity(self, log_level: str = 'info'):
+        pass
+
+    def SetSymfs(self, symfs_dir: str):
+        pass
+
+    def SetRecordFile(self, record_file: str):
+        with open(record_file, 'rb') as fh:
+            data = fh.read()
+        _check(data[:10] == b'SIMPLEPERF', f'magic number mismatch: {data[:10]}')
+        version = struct.unpack('<H', data[10:12])[0]
+        _check(version == 1, f'version mismatch: {version}')
+        i = 12
+        while i < len(data):
+            _check(i + 4 <= len(data), 'data format error')
+            size = struct.unpack('<I', data[i:i + 4])[0]
+            if size == 0:
+                break
+            i += 4
+            _check(i + size <= len(data), 'data format error')
+            record = self.report_sample_pb2.Record()
+            record.ParseFromString(data[i: i + size])
+            i += size
+            if record.HasField('sample'):
+                self.samples.append(record.sample)
+            elif record.HasField('file'):
+                self.files.append(record.file)
+            elif record.HasField('thread'):
+                self.thread_map[record.thread.thread_id] = record.thread
+            elif record.HasField('meta_info'):
+                self.meta_info = record.meta_info
+        fake_mapping_start = 0
+        for file in self.files:
+            self.fake_mapping_starts.append(fake_mapping_start)
+            fake_mapping_start += len(file.symbol) + 1
+
+    def ShowIpForUnknownSymbol(self):
+        pass
+
+    def ShowArtFrames(self, show: bool = True):
+        pass
+
+    def SetSampleFilter(self, filters: List[str]):
+        raise NotImplementedError('sample filters are not implemented for report_sample profiles')
+
+    def GetNextSample(self) -> Optional[ProtoSample]:
+        self.sample_index += 1
+        return self.GetCurrentSample()
+
+    def GetCurrentSample(self) -> Optional[ProtoSample]:
+        if self.sample_index >= len(self.samples):
+            return None
+        sample = self.samples[self.sample_index]
+        thread = self.thread_map[sample.thread_id]
+        return ProtoSample(
+            ip=0, pid=thread.process_id, tid=thread.thread_id, thread_comm=thread.thread_name,
+            time=sample.time, in_kernel=False, cpu=0, period=sample.event_count)
+
+    def GetEventOfCurrentSample(self) -> ProtoEvent:
+        sample = self.samples[self.sample_index]
+        event_name = self.meta_info.event_type[sample.event_type_id]
+        return ProtoEvent(name=event_name, tracing_data_format=None)
+
+    def GetSymbolOfCurrentSample(self) -> ProtoSymbol:
+        sample = self.samples[self.sample_index]
+        node = sample.callchain[0]
+        return self._build_symbol(node)
+
+    def GetCallChainOfCurrentSample(self) -> ProtoCallChain:
+        entries = []
+        sample = self.samples[self.sample_index]
+        for node in sample.callchain[1:]:
+            symbol = self._build_symbol(node)
+            entries.append(ProtoCallChainEntry(ip=0, symbol=symbol))
+        return ProtoCallChain(nr=len(entries), entries=entries)
+
+    def _build_symbol(self, node) -> ProtoSymbol:
+        file = self.files[node.file_id]
+        if node.symbol_id == -1:
+            symbol_name = 'unknown'
+            fake_symbol_addr = self.fake_mapping_starts[node.file_id] + len(file.symbol)
+            fake_symbol_pgoff = 0
+        else:
+            symbol_name = file.symbol[node.symbol_id]
+            fake_symbol_addr = self.fake_mapping_starts[node.file_id] = node.symbol_id + 1
+            fake_symbol_pgoff = node.symbol_id + 1
+        mapping = ProtoMapping(fake_symbol_addr, 1, fake_symbol_pgoff)
+        return ProtoSymbol(dso_name=file.path, vaddr_in_file=node.vaddr_in_file,
+                           symbol_name=symbol_name, symbol_addr=0, symbol_len=1, mapping=[mapping])
+
+    def GetBuildIdForPath(self, path: str) -> str:
+        return ''
+
+    def GetRecordCmd(self) -> str:
+        return ''
+
+    def GetArch(self) -> str:
+        return ''
+
+    def MetaInfo(self) -> Dict[str, str]:
+        return {}
+
+
+def GetReportLib(record_file: str) -> Union[ReportLib, ProtoFileReportLib]:
+    if ProtoFileReportLib.is_supported_format(record_file):
+        lib = ProtoFileReportLib()
+    else:
+        lib = ReportLib()
+    lib.SetRecordFile(record_file)
+    return lib
diff --git a/simpleperf_utils.py b/simpleperf_utils.py
index d327f18..af4fca1 100644
--- a/simpleperf_utils.py
+++ b/simpleperf_utils.py
@@ -31,7 +31,7 @@
 import subprocess
 import sys
 import time
-from typing import Any, Dict, Iterator, List, Optional, Set, Tuple, Union
+from typing import Any, Dict, Iterator, List, Optional, Set, Tuple, Union, TextIO
 
 
 NDK_ERROR_MESSAGE = "Please install the Android NDK (https://developer.android.com/studio/projects/install-ndk), then set NDK path with --ndk_path option."
@@ -360,6 +360,8 @@
             return 'x86_64'
         if '86' in output:
             return 'x86'
+        if 'riscv64' in output:
+            return 'riscv64'
         log_fatal('unsupported architecture: %s' % output.strip())
         return ''
 
@@ -867,6 +869,8 @@
         """ Disassemble code for multiple addr ranges in a binary. sorted_addr_ranges should be
             sorted by addr_range.start.
         """
+        if not sorted_addr_ranges:
+            return []
         real_path, arch = dso_info
         objdump_path = self.objdump_paths.get(arch)
         if not objdump_path:
@@ -876,51 +880,62 @@
             self.objdump_paths[arch] = objdump_path
 
         # Run objdump.
-        args = [objdump_path, '-dlC', '--no-show-raw-insn', real_path]
+        start_addr = sorted_addr_ranges[0].start
+        stop_addr = max(addr_range.end for addr_range in sorted_addr_ranges)
+        args = [objdump_path, '-dlC', '--no-show-raw-insn',
+                '--start-address=0x%x' % start_addr,
+                '--stop-address=0x%x' % stop_addr,
+                real_path]
         if arch == 'arm' and 'llvm-objdump' in objdump_path:
             args += ['--print-imm-hex']
-        current_id = 0
-        in_range = False
-        result = [Disassembly() for _ in sorted_addr_ranges]
         try:
             proc = subprocess.Popen(args, stdout=subprocess.PIPE, text=True)
-            while True:
-                line = proc.stdout.readline()
-                if not line:
-                    break
-                if current_id >= len(sorted_addr_ranges):
-                    continue
-                if line[0] == ' ':
-                    # may be an instruction, like: " 24a469c: stp x29, x30, [sp, #-0x60]!"
-                    items = line.split(':', 1)
-                    try:
-                        addr = int(items[0], 16)
-                    except (ValueError, IndexError):
-                        addr = 0
-                else:
-                    # may be a function start point, like "00000000024a4698 <DoWork()>:"
-                    items = line.split(maxsplit=1)
-                    try:
-                        addr = int(items[0], 16)
-                    except (ValueError, IndexError):
-                        addr = 0
-
-                if addr != 0:
-                    if in_range and not sorted_addr_ranges[current_id].is_in_range(addr):
-                        in_range = False
-                        current_id += 1
-                        if current_id == len(sorted_addr_ranges):
-                            continue
-                    if not in_range and sorted_addr_ranges[current_id].is_in_range(addr):
-                        in_range = True
-
-                if in_range:
-                    result[current_id].lines.append((line, addr))
+            result = self._parse_disassembly_for_functions(proc.stdout, sorted_addr_ranges)
             proc.wait()
         except OSError:
             return None
         return result
 
+    def _parse_disassembly_for_functions(self, fh: TextIO, sorted_addr_ranges: List[AddrRange]) -> Optional[List[Disassembly]]:
+        current_id = 0
+        in_range = False
+        result = [Disassembly() for _ in sorted_addr_ranges]
+        while True:
+            line = fh.readline()
+            if not line:
+                break
+            line = line.rstrip()  # Remove '\r\n'.
+            addr = self._get_addr_from_disassembly_line(line)
+            if current_id >= len(sorted_addr_ranges):
+                continue
+            if addr:
+                if in_range and not sorted_addr_ranges[current_id].is_in_range(addr):
+                    in_range = False
+                if not in_range:
+                    # Skip addr ranges before the current address.
+                    while current_id < len(sorted_addr_ranges) and sorted_addr_ranges[current_id].end <= addr:
+                        current_id += 1
+                    if current_id < len(sorted_addr_ranges) and sorted_addr_ranges[current_id].is_in_range(addr):
+                        in_range = True
+            if in_range:
+                result[current_id].lines.append((line, addr))
+        return result
+
+    def _get_addr_from_disassembly_line(self, line: str) -> int:
+        # line may be an instruction, like: " 24a469c: stp x29, x30, [sp, #-0x60]!" or
+        #  "ffffffc0085d9664:      	paciasp".
+        # line may be a function start point, like "00000000024a4698 <DoWork()>:".
+        items = line.strip().split()
+        if not items:
+            return 0
+        s = items[0]
+        if s.endswith(':'):
+            s = s[:-1]
+        try:
+            return int(s, 16)
+        except ValueError:
+            return 0
+
 
 class ReadElf(object):
     """ A wrapper of readelf. """
@@ -951,6 +966,8 @@
                     return 'x86_64'
                 if output.find('80386') != -1:
                     return 'x86'
+                if output.find('RISC-V') != -1:
+                    return 'riscv64'
             except subprocess.CalledProcessError:
                 pass
         return 'unknown'
@@ -1123,6 +1140,8 @@
             self, group: Optional[Any] = None, with_pid_shortcut: bool = True):
         if not group:
             group = self.add_argument_group('Sample filter options')
+        group.add_argument('--cpu', nargs='+', help="""only include samples for the selected cpus.
+                            cpu can be a number like 1, or a range like 0-3""")
         group.add_argument('--exclude-pid', metavar='pid', nargs='+', type=int,
                            help='exclude samples for selected processes')
         group.add_argument('--exclude-tid', metavar='tid', nargs='+', type=int,
@@ -1160,6 +1179,8 @@
     def _build_sample_filter(self, args: argparse.Namespace) -> List[str]:
         """ Build sample filters, which can be passed to ReportLib.SetSampleFilter(). """
         filters = []
+        if args.cpu:
+            filters.extend(['--cpu', ','.join(args.cpu)])
         if args.exclude_pid:
             filters.extend(['--exclude-pid', ','.join(str(pid) for pid in args.exclude_pid)])
         if args.exclude_tid:
diff --git a/stackcollapse.py b/stackcollapse.py
index e0e1d86..94ffaec 100755
--- a/stackcollapse.py
+++ b/stackcollapse.py
@@ -25,7 +25,7 @@
 """
 
 from collections import defaultdict
-from simpleperf_report_lib import ReportLib
+from simpleperf_report_lib import GetReportLib
 from simpleperf_utils import BaseArgumentParser, flatten_arg_list, ReportLibOptions
 from typing import DefaultDict, List, Optional, Set
 
@@ -45,14 +45,12 @@
         include_addrs: bool,
         report_lib_options: ReportLibOptions):
     """read record_file, aggregate per-stack and print totals per-stack"""
-    lib = ReportLib()
+    lib = GetReportLib(record_file)
 
     if include_addrs:
         lib.ShowIpForUnknownSymbol()
     if symfs_dir is not None:
         lib.SetSymfs(symfs_dir)
-    if record_file is not None:
-        lib.SetRecordFile(record_file)
     if kallsyms_file is not None:
         lib.SetKallsymsFile(kallsyms_file)
     lib.SetReportOptions(report_lib_options)
diff --git a/test/app_test.py b/test/app_test.py
index a13200a..2c6835d 100644
--- a/test/app_test.py
+++ b/test/app_test.py
@@ -23,6 +23,7 @@
 import time
 from typing import List, Tuple
 
+from simpleperf_report_lib import ReportLib
 from simpleperf_utils import remove
 from . test_utils import TestBase, TestHelper, AdbHelper, INFERNO_SCRIPT
 
@@ -268,7 +269,13 @@
     def test_recording_endless_tunnel(self):
         self.install_apk(TestHelper.testdata_path(
             'EndlessTunnel.apk'), 'com.google.sample.tunnel')
-        self.start_app('shell am start -n com.google.sample.tunnel/android.app.NativeActivity -a ' +
-                       'android.intent.action.MAIN -c android.intent.category.LAUNCHER')
-        self.record_data('com.google.sample.tunnel', '-e cpu-clock -g --duration 10')
+        # Test using --launch to start the app.
+        self.run_cmd(['app_profiler.py', '--app', 'com.google.sample.tunnel',
+                     '--launch', '-r', '-e cpu-clock -g --duration 10'])
         self.check_symbol_in_record_file('PlayScene::DoFrame')
+
+        # Check app versioncode.
+        report = ReportLib()
+        meta_info = report.MetaInfo()
+        self.assertEqual(meta_info.get('app_versioncode'), '1')
+        report.Close()
diff --git a/test/do_test.py b/test/do_test.py
index 012dc62..d341c20 100755
--- a/test/do_test.py
+++ b/test/do_test.py
@@ -59,6 +59,7 @@
 from . report_lib_test import *
 from . report_sample_test import *
 from . run_simpleperf_on_device_test import *
+from . sample_filter_test import *
 from . stackcollapse_test import *
 from . tools_test import *
 from . test_utils import TestHelper
@@ -130,10 +131,12 @@
                          'TestDebugUnwindReporter',
                          'TestInferno',
                          'TestPprofProtoGenerator',
+                         'TestProtoFileReportLib',
                          'TestPurgatorio',
                          'TestReportHtml',
                          'TestReportLib',
                          'TestReportSample',
+                         'TestSampleFilter',
                          'TestStackCollapse',
                          'TestTools',
                          'TestGeckoProfileGenerator'):
diff --git a/test/pprof_proto_generator_test.py b/test/pprof_proto_generator_test.py
index 297cf14..b8db48a 100644
--- a/test/pprof_proto_generator_test.py
+++ b/test/pprof_proto_generator_test.py
@@ -96,6 +96,10 @@
         """ Test the build ids generated are not padded with zeros. """
         self.assertIn('build_id: e3e938cc9e40de2cfe1a5ac7595897de(', self.run_generator())
 
+    def test_time_nanos(self):
+        """ Test the timestamp is adjusted to be nanoseconds. """
+        self.assertIn('time_nanos: 1516268753000000000\n', self.run_generator())
+
     def test_build_id_with_binary_cache(self):
         """ Test the build ids for elf files in binary_cache are not padded with zero. """
         # Test with binary_cache.
@@ -291,3 +295,6 @@
             self.assertIn(31881, threads)
             self.assertNotIn(31850, threads)
         os.unlink(filter_file.name)
+
+    def test_report_sample_proto_file(self):
+        self.run_generator('', testdata_file='display_bitmaps.proto_data')
diff --git a/test/report_html_test.py b/test/report_html_test.py
index 7241a5e..32e5821 100644
--- a/test/report_html_test.py
+++ b/test/report_html_test.py
@@ -276,3 +276,18 @@
         self.assertEqual(thread_names['AsyncTask.*'], 19)
         self.assertNotIn('AsyncTask #3', thread_names)
         self.assertNotIn('AsyncTask #4', thread_names)
+
+    def test_sort_call_graph_by_function_name(self):
+        record_data = self.get_record_data(
+            ['-i', TestHelper.testdata_path('perf_display_bitmaps.data'),
+             '--aggregate-threads', '.*'])
+
+        def get_func_name(func_id: int) -> str:
+            return record_data['functionMap'][str(func_id)]['f']
+
+        # Test if the top functions are sorted by function names.
+        thread = record_data['sampleInfo'][0]['processes'][0]['threads'][0]
+        top_functions = [get_func_name(c['f']) for c in thread['g']['c']]
+        self.assertIn('__libc_init', top_functions)
+        self.assertIn('__start_thread', top_functions)
+        self.assertEqual(top_functions, sorted(top_functions))
diff --git a/test/report_lib_test.py b/test/report_lib_test.py
index 8e212a2..1285448 100644
--- a/test/report_lib_test.py
+++ b/test/report_lib_test.py
@@ -15,10 +15,13 @@
 # limitations under the License.
 
 import os
+from pathlib import Path
+import shutil
 import tempfile
 from typing import Dict, List, Optional, Set
 
-from simpleperf_report_lib import ReportLib
+from simpleperf_report_lib import ReportLib, ProtoFileReportLib
+from simpleperf_utils import ReadElf
 from . test_utils import TestBase, TestHelper
 
 
@@ -312,6 +315,25 @@
             self.assertNotIn(31850, threads)
         os.unlink(filter_file.name)
 
+    def test_set_sample_filter_for_cpu(self):
+        """ Test --cpu in ReportLib.SetSampleFilter(). """
+        def get_cpus_for_filter(filters: List[str]) -> Set[int]:
+            self.report_lib.Close()
+            self.report_lib = ReportLib()
+            self.report_lib.SetRecordFile(TestHelper.testdata_path('perf_display_bitmaps.data'))
+            self.report_lib.SetSampleFilter(filters)
+            cpus = set()
+            while self.report_lib.GetNextSample():
+                sample = self.report_lib.GetCurrentSample()
+                cpus.add(sample.cpu)
+            return cpus
+
+        cpus = get_cpus_for_filter(['--cpu', '0,1-2'])
+        self.assertIn(0, cpus)
+        self.assertIn(1, cpus)
+        self.assertIn(2, cpus)
+        self.assertNotIn(3, cpus)
+
     def test_aggregate_threads(self):
         """ Test using ReportLib.AggregateThreads(). """
         def get_thread_names(aggregate_regex_list: Optional[List[str]]) -> Dict[str, int]:
@@ -332,3 +354,44 @@
         self.assertEqual(thread_names['AsyncTask.*'], 19)
         self.assertNotIn('AsyncTask #3', thread_names)
         self.assertNotIn('AsyncTask #4', thread_names)
+
+    def test_use_vmlinux(self):
+        """ Test if we can use vmlinux in symfs_dir. """
+        record_file = TestHelper.testdata_path('perf_test_vmlinux.data')
+        # Create a symfs_dir.
+        symfs_dir = Path('symfs_dir')
+        symfs_dir.mkdir()
+        shutil.copy(TestHelper.testdata_path('vmlinux'), symfs_dir)
+        kernel_build_id = ReadElf(TestHelper.ndk_path).get_build_id(symfs_dir / 'vmlinux')
+        (symfs_dir / 'build_id_list').write_text('%s=vmlinux' % kernel_build_id)
+
+        # Check if vmlinux in symfs_dir is used, when we set record file before setting symfs_dir.
+        self.report_lib.SetRecordFile(record_file)
+        self.report_lib.SetSymfs(str(symfs_dir))
+        sample = self.report_lib.GetNextSample()
+        self.assertIsNotNone(sample)
+        symbol = self.report_lib.GetSymbolOfCurrentSample()
+        self.assertEqual(symbol.dso_name, "[kernel.kallsyms]")
+        # vaddr_in_file and symbol_addr are adjusted after using vmlinux.
+        self.assertEqual(symbol.vaddr_in_file, 0xffffffc008fb3e28)
+        self.assertEqual(symbol.symbol_name, "_raw_spin_unlock_irq")
+        self.assertEqual(symbol.symbol_addr, 0xffffffc008fb3e0c)
+        self.assertEqual(symbol.symbol_len, 0x4c)
+
+
+class TestProtoFileReportLib(TestBase):
+    def test_smoke(self):
+        report_lib = ProtoFileReportLib()
+        report_lib.SetRecordFile(TestHelper.testdata_path('display_bitmaps.proto_data'))
+        sample_count = 0
+        while True:
+            sample = report_lib.GetNextSample()
+            if sample is None:
+                report_lib.Close()
+                break
+            sample_count += 1
+            event = report_lib.GetEventOfCurrentSample()
+            self.assertEqual(event.name, 'cpu-clock')
+            report_lib.GetSymbolOfCurrentSample()
+            report_lib.GetCallChainOfCurrentSample()
+        self.assertEqual(sample_count, 525)
diff --git a/test/sample_filter_test.py b/test/sample_filter_test.py
new file mode 100644
index 0000000..46d51d0
--- /dev/null
+++ b/test/sample_filter_test.py
@@ -0,0 +1,42 @@
+#!/usr/bin/env python3
+#
+# Copyright (C) 2024 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import json
+import os
+from pathlib import Path
+import re
+import tempfile
+from typing import List, Optional, Set
+
+from . test_utils import TestBase, TestHelper
+
+
+class TestSampleFilter(TestBase):
+    def test_show_time_range(self):
+        testdata_file = TestHelper.testdata_path('perf_display_bitmaps.data')
+        output = self.run_cmd(['sample_filter.py', '-i', testdata_file,
+                              '--show-time-range'], return_output=True)
+        self.assertIn('0.134 s', output)
+
+    def test_split_time_range(self):
+        testdata_file = TestHelper.testdata_path('perf_display_bitmaps.data')
+        self.run_cmd(['sample_filter.py', '-i', testdata_file, '--split-time-range', '2'])
+        part1_data = Path('sample_filter_part1').read_text()
+        self.assertIn('GLOBAL_BEGIN 684943449406175', part1_data)
+        self.assertIn('GLOBAL_END 684943516618526', part1_data)
+        part2_data = Path('sample_filter_part2').read_text()
+        self.assertIn('GLOBAL_BEGIN 684943516618526', part2_data)
+        self.assertIn('GLOBAL_END 684943583830876', part2_data)
diff --git a/test/testdata/display_bitmaps.proto_data b/test/testdata/display_bitmaps.proto_data
new file mode 100644
index 0000000..6b8b269
--- /dev/null
+++ b/test/testdata/display_bitmaps.proto_data
Binary files differ
diff --git a/test/testdata/etm/etm_test_loop_small b/test/testdata/etm/etm_test_loop_small
new file mode 100644
index 0000000..600bf9e
--- /dev/null
+++ b/test/testdata/etm/etm_test_loop_small
Binary files differ
diff --git a/test/testdata/etm/perf_for_small_binary.data b/test/testdata/etm/perf_for_small_binary.data
new file mode 100644
index 0000000..9b012e5
--- /dev/null
+++ b/test/testdata/etm/perf_for_small_binary.data
Binary files differ
diff --git a/test/testdata/etm/perf_inject_small.data b/test/testdata/etm/perf_inject_small.data
new file mode 100644
index 0000000..560b492
--- /dev/null
+++ b/test/testdata/etm/perf_inject_small.data
@@ -0,0 +1,32 @@
+14
+14b4-14c4:1
+14c8-14fc:1
+150c-151c:1
+156c-1580:1
+1584-158c:1
+1590-15a4:10
+15a8-15b0:10
+15b4-15c4:2
+15c8-15dc:200
+15e0-15e0:2
+15e4-15f4:8
+15f8-160c:8000
+1610-1610:8
+1640-164c:1
+0
+12
+14c4->14c8:1
+14fc->150c:1
+151c->1640:1
+1580->15a8:1
+158c->0:1
+15a4->1584:1
+15b0->15e4:8
+15dc->15c8:198
+15e0->1590:2
+160c->15f8:7992
+1610->1590:8
+164c->0:1
+// build_id: 0xb9988f5e72de4b2580f98bef0ae8e4a000000000
+// /data/local/tmp/etm/etm_test_loop_small
+
diff --git a/test/testdata/lbr/inject_lbr.data b/test/testdata/lbr/inject_lbr.data
new file mode 100644
index 0000000..6f14164
--- /dev/null
+++ b/test/testdata/lbr/inject_lbr.data
@@ -0,0 +1,14 @@
+2
+1910-191b:31
+1940-194d:341
+4
+1914:1
+1940:3
+1944:4
+1948:11
+2
+191b->1910:32
+194d->1940:353
+// build_id: 0x0000000000000000000000000000000000000000
+// /home/yabinc/lbr_test_loop
+
diff --git a/test/testdata/lbr/perf_lbr.data b/test/testdata/lbr/perf_lbr.data
new file mode 100644
index 0000000..81fafe6
--- /dev/null
+++ b/test/testdata/lbr/perf_lbr.data
Binary files differ
diff --git a/test/testdata/perf_test_vmlinux.data b/test/testdata/perf_test_vmlinux.data
new file mode 100644
index 0000000..08de199
--- /dev/null
+++ b/test/testdata/perf_test_vmlinux.data
Binary files differ
diff --git a/test/testdata/perf_with_interpreter_frames.gecko.json b/test/testdata/perf_with_interpreter_frames.gecko.json
index 9959265..264dc44 100644
--- a/test/testdata/perf_with_interpreter_frames.gecko.json
+++ b/test/testdata/perf_with_interpreter_frames.gecko.json
@@ -2,6 +2,7 @@
   "libs": [],
   "meta": {
     "abi": "aarch64",
+    "appBuildID": null,
     "asyncstack": 1,
     "categories": [
       {
diff --git a/test/testdata/perf_with_jit_symbol.gecko.json b/test/testdata/perf_with_jit_symbol.gecko.json
index bb8940a..3988fef 100644
--- a/test/testdata/perf_with_jit_symbol.gecko.json
+++ b/test/testdata/perf_with_jit_symbol.gecko.json
@@ -2,6 +2,7 @@
   "libs": [],
   "meta": {
     "abi": "aarch64",
+    "appBuildID": null,
     "asyncstack": 1,
     "categories": [
       {
diff --git a/test/testdata/perf_with_tracepoint_event.gecko.json b/test/testdata/perf_with_tracepoint_event.gecko.json
index 2f5a926..2072b53 100644
--- a/test/testdata/perf_with_tracepoint_event.gecko.json
+++ b/test/testdata/perf_with_tracepoint_event.gecko.json
@@ -2,6 +2,7 @@
   "libs": [],
   "meta": {
     "abi": "aarch64",
+    "appBuildID": null,
     "asyncstack": 1,
     "categories": [
       {
diff --git a/test/testdata/vmlinux b/test/testdata/vmlinux
new file mode 100644
index 0000000..1239e5e
--- /dev/null
+++ b/test/testdata/vmlinux
Binary files differ
diff --git a/test/tools_test.py b/test/tools_test.py
index 5cdcbe0..2d57230 100644
--- a/test/tools_test.py
+++ b/test/tools_test.py
@@ -14,12 +14,13 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+import io
 import os
 from pathlib import Path
 
 from binary_cache_builder import BinaryCacheBuilder
-from simpleperf_utils import (Addr2Nearestline, AddrRange, BinaryFinder, Disassembly, Objdump, ReadElf,
-                              SourceFileSearcher, is_windows, remove)
+from simpleperf_utils import (Addr2Nearestline, AddrRange, BinaryFinder, Disassembly, Objdump,
+                              ReadElf, SourceFileSearcher, is_windows, remove)
 from . test_utils import TestBase, TestHelper
 
 
@@ -271,6 +272,68 @@
                 self.fail('for %s, %s:0x%x not found in disassemble code:\n%s' %
                           (dso_path, expected_line, expected_addr, s))
 
+    def test_objdump_parse_disassembly_for_functions(self):
+        # Parse kernel disassembly.
+        s = """
+ffffffc008000000 <_text>:
+; _text():
+; arch/arm64/kernel/head.S:60
+ffffffc008000000:      	ccmp	x18, #0x0, #0xd, pl
+ffffffc008000004:      	b	0xffffffc009b2a37c <primary_entry>
+
+ffffffc008000008 <$d.1>:
+ffffffc008000008: 00 00 00 00  	.word	0x00000000
+ffffffc0089bbb30 <readl>:
+; readl():
+; include/asm-generic/io.h:218
+ffffffc0089bbb30:      	paciasp
+ffffffc0089bbb34:      	stp	x29, x30, [sp, #-0x30]!
+        """
+        addr_ranges = [AddrRange(0xffffffc008000000, 8),
+                       AddrRange(0xffffffc008000010, 10),
+                       AddrRange(0xffffffc0089bbb30, 20)]
+        binary_finder = BinaryFinder(TestHelper.testdata_dir, ReadElf(TestHelper.ndk_path))
+        objdump = Objdump(TestHelper.ndk_path, binary_finder)
+        result = objdump._parse_disassembly_for_functions(io.StringIO(s), addr_ranges)
+        self.assertEqual(len(result), 3)
+        self.assertEqual(
+            result[0].lines,
+            [('ffffffc008000000 <_text>:', 0xffffffc008000000),
+             ('; _text():', 0),
+             ('; arch/arm64/kernel/head.S:60', 0),
+             ('ffffffc008000000:      	ccmp	x18, #0x0, #0xd, pl', 0xffffffc008000000),
+             ('ffffffc008000004:      	b	0xffffffc009b2a37c <primary_entry>',
+                0xffffffc008000004),
+             ('', 0)])
+        self.assertEqual(len(result[1].lines), 0)
+        self.assertEqual(result[2].lines, [
+            ('ffffffc0089bbb30 <readl>:', 0xffffffc0089bbb30),
+            ('; readl():', 0),
+            ('; include/asm-generic/io.h:218', 0),
+            ('ffffffc0089bbb30:      	paciasp', 0xffffffc0089bbb30),
+            ('ffffffc0089bbb34:      	stp	x29, x30, [sp, #-0x30]!', 0xffffffc0089bbb34),
+            ('', 0)])
+
+        # Parse user space library disassembly.
+        s = """
+0000000000200000 <art::gc::collector::ConcurrentCopying::ProcessMarkStack()>:
+; art::gc::collector::ConcurrentCopying::ProcessMarkStack():
+; art/runtime/gc/collector/concurrent_copying.cc:2121
+  200000:      	stp	x29, x30, [sp, #-0x20]!
+  200004:      	stp	x20, x19, [sp, #0x10]
+        """
+        addr_ranges = [AddrRange(0x200000, 8)]
+        result = objdump._parse_disassembly_for_functions(io.StringIO(s), addr_ranges)
+        self.assertEqual(len(result), 1)
+        self.assertEqual(result[0].lines, [
+            ('0000000000200000 <art::gc::collector::ConcurrentCopying::ProcessMarkStack()>:',
+                0x200000),
+            ('; art::gc::collector::ConcurrentCopying::ProcessMarkStack():', 0),
+            ('; art/runtime/gc/collector/concurrent_copying.cc:2121', 0),
+            ('  200000:      	stp	x29, x30, [sp, #-0x20]!', 0x200000),
+            ('  200004:      	stp	x20, x19, [sp, #0x10]', 0x200004),
+            ('', 0)])
+
     def test_readelf(self):
         test_map = {
             'simpleperf_runtest_two_functions_arm64': {