# Below is a list of people and organizations that have contributed
# to the project. Names should be added to the list like so:
#
#   Name/Organization <email address>

Andrew Babin <code@andrewbab.in>
David Morgan/Google Inc. <davidmorgan@google.com>
Matan Lurey/Google Inc. <matanl@google.com>
Philipp Schiffmann <philippschiffmann93@gmail.com>
