# This file doesn't do anything on its own, but serves as a group definition. It is imported into
# OWNERS.android to enforce per-file rules on certain files generated by gn/gn_to_bp.py.
# Fully-specified individuals only, in alphabetical order:
brianosman@google.com
bungeman@google.com
djsollen@google.com
hcm@google.com
jmbetancourt@google.com
nscobie@google.com
robertphillips@google.com
scroggo@google.com
