# People who have agreed to one of the CLAs and can contribute patches.
# The AUTHORS.txt file lists the copyright holders; this file
# lists people.  For example, Google employees are listed here
# but not in AUTHORS.txt, because Google holds the copyright.
#
# https://developers.google.com/open-source/cla/individual
# https://developers.google.com/open-source/cla/corporate
#
# Names should be added to this file as:
#     Name <email address>

Google:
Benoit Jacob <benoitjacob@google.com>
Pete Warden <petewarden@google.com>
Miao Wang <miaowang@google.com>
David Andersen <dga@google.com>
Maciek Chociej <maciekc@google.com>

Intel:
Sagi Marcovich <sagi.marcovich@intel.com>
Murat Efe Guney <murat.e.guney@intel.com>
Sarah Knepper <sarah.knepper@intel.com>
