# This is the official list of fiat-crypto authors for copyright purposes.
# This file is distinct from the CONTRIBUTORS files.
# See the latter for an explanation.

# Names should be added to this file as one of
#     Organization's name
#     Individual's name <submission email address>
#     Individual's name <submission email address> <email2> <emailN>
# See CONTRIBUTORS for the meaning of multiple email addresses.

# Please keep the list sorted.

Andres Erbsen <andreser@mit.edu>
Google Inc.
Jade Philipoom <jadep@mit.edu> <jade.philipoom@gmail.com>
Massachusetts Institute of Technology
Zoe Paraskevopoulou <zoe.paraskevopoulou@gmail.com>