# Names should be added to this file with this pattern:
#
# For individuals:
#   Name <email address>
#
# For organizations:
#   Organization <fnmatch pattern>
#
# See python fnmatch module documentation for more information.

The Chromium Authors <*@chromium.org>
Google Inc. <*@google.com>
Sergiy Byelozyorov <rryk.ua@gmail.com>
Seo Sanghyeon <sanxiyn@gmail.com>
Alex Scheele <alexscheele@gmail.com>
Andrew Brampton <me@bramp.net>
Paweł Hajdan jr <phajdan.jr@gmail.com>
Jesse Miller <jesse@jmiller.biz>
Szymon Piechowicz <szymonpiechowicz@o2.pl>
James Vega <vega.james@gmail.com>
Marco Rodrigues <gothicx@gmail.com>
Matthias Reitinger <reimarvin@gmail.com>
Peter Bright <drpizza@quiscalusmexicanus.org>
Arthur Lussos <developer0420@gmail.com>
Masahiro Yado <yado.masa@gmail.com>
Yarin Kaul <yarin.kaul@gmail.com>
Gaetano Mendola <mendola@gmail.com>
Comodo CA Limited
Torchmobile Inc.
Craig Schlenter <craig.schlenter@gmail.com>
Ibrar Ahmed <ibrar.ahmad@gmail.com>
Naoki Takano <takano.naoki@gmail.com>
Fabien Tassin <fta@sofaraway.org>
Kunal Thakar <kunalt@gmail.com>
Mohamed Mansour <m0.interactive@gmail.com>
Joshua Roesslein <jroesslein@gmail.com>
Yong Shin <sy3620@gmail.com>
Laszlo Radanyi <bekkra@gmail.com>
Raman Tenneti <raman.tenneti@gmail.com>
Kyle Nahrgang <kpn24@drexel.edu>
Kim Christensen <kimworking@gmail.com>
Paul Robinson <paulrobinson85@googlemail.com>
Josué Ratelle <jorat1346@gmail.com>
Edward Crossman <tedoc2000@gmail.com>
Nikita Ofitserov <himikof@gmail.com>
Sean Bryant <sean@cyberwang.net>
Robert Sesek <rsesek@bluestatic.org>
Janwar Dinata <j.dinata@gmail.com>
Will Hirsch <chromium@willhirsch.co.uk>
Yoav Zilberberg <yoav.zilberberg@gmail.com>
Joel Stanley <joel@jms.id.au>
Jacob Mandelson <jacob@mandelson.org>
Yuri Gorobets <yuri.gorobets@gmail.com>
Paul Wicks <pwicks86@gmail.com>
Thiago Farina <thiago.farina@gmail.com>
Viet-Trung Luu <viettrungluu@gmail.com>
Pierre-Antoine LaFayette <pierre.lafayette@gmail.com>
Song YeWen <ffmpeg@gmail.com>
Philippe Beauchamp <philippe.beauchamp@gmail.com>
Vedran Šajatović <vedran.sajatovic@gmail.com>
Randy Posynick <randy.posynick@gmail.com>
Bruno Calvignac <bruno@flock.com>
Jaime Soriano Pastor <jsorianopastor@gmail.com>
Bryan Donlan <bdonlan@gmail.com>
Ramkumar Ramachandra <artagnon@gmail.com>
Dominic Jodoin <dominic.jodoin@gmail.com>
Kaspar Brand <googlecontrib@velox.ch>
Clemens Fruhwirth <clemens@endorphin.org>
Kevin Lee Helpingstine <sig11@reprehensible.net>
Bernard Cafarelli <voyageur@gentoo.org>
Vernon Tang <vt@foilhead.net>
Alexander Sulfrian <alexander@sulfrian.net>
Philippe Beaudoin <philippe.beaudoin@gmail.com>
Mark Hahnenberg <mhahnenb@andrew.cmu.edu>
Alex Gartrell <agartrell@cmu.edu>
Leith Bade <leith@leithalweapon.geek.nz>
James Choi <jchoi42@pha.jhu.edu>
Paul Kehrer <paul.l.kehrer@gmail.com>
Chamal De Silva <chamalsl@yahoo.com>
Jay Soffian <jaysoffian@gmail.com>
Brian G. Merrell <bgmerrell@gmail.com>
Matthew Willis <appamatto@gmail.com>
Brian Merrell, Novell Inc. <bgmerrell@gmail.com>
Ryan Sleevi <ryan-chromium-dev@sleevi.com>
Satoshi Matsuzaki <satoshi.matsuzaki@gmail.com>
Benjamin Jemlich <pcgod99@gmail.com>
Ningxin Hu <ningxin.hu@intel.com>
James Wei <james.wei@intel.com>
Haitao Feng <haitao.feng@intel.com>
Jared Wein <weinjared@gmail.com>
Mingmin Xie <melvinxie@gmail.com>
Michael Gilbert <floppymaster@gmail.com>
Giuseppe Iuculano <giuseppe@iuculano.it>
James Willcox <jwillcox@litl.com>
Shreyas VA <v.a.shreyas@gmail.com>
Steven Pennington <spenn@engr.uvic.ca>
Jorge Villatoro <jorge@tomatocannon.com>
Paul Nettleship <pnettleship@gmail.com>
David Benjamin <davidben@mit.edu>
Sevan Janiyan <venture37@geeklan.co.uk>
Peter Beverloo <peter@chromium.org>
Lauri Oherd <lauri.oherd@gmail.com>
Ben Karel <eschew@gmail.com>
Sam McDonald <sam@sammcd.com>
Magnus Danielsson <fuzzac@gmail.com>
Kushal Pisavadia <kushi.p@gmail.com>
Maarten Lankhorst <m.b.lankhorst@gmail.com>
Vipul Bhasin <vipul.bhasin@gmail.com>
Ryan Norton <rnorton10@gmail.com>
Dillon Sellars <dill.sellars@gmail.com>
Seshadri Mahalingam <seshadri.mahalingam@gmail.com>
Clement Scheelfeldt Skau <clementskau@gmail.com>
David Futcher <david.mike.futcher@gmail.com>
Ramkumar Gokarnesan <ramkumar.gokarnesan@gmail.com>
Matt Arpidone <mma.public@gmail.com>
ruben <chromium@hybridsource.org>
NVIDIA Corporation <*@nvidia.com>
Torsten Kurbad <google@tk-webart.de>
Max Perepelitsyn <pph34r@gmail.com>
Luke Zarko <lukezarko@gmail.com>
Felix H. Dahlke <fhd@ubercode.de>
Ali Vathi <ali.akbar@gmail.com>
Mathias Bynens <mathias@qiwi.be>
Mark Seaborn <mrs@mythic-beasts.com>
Amruth Raj <amruthraj@motorola.com>
Amruth Raj <ckqr36@motorola.com>
Gajendra Singh <wxjg68@motorola.com>
Ehsan Akhgari <ehsan.akhgari@gmail.com>
Christopher Dale <chrelad@gmail.com>
Sanjoy Pal <ncj674@motorola.com>
Mike Tilburg <mtilburg@adobe.com>
Peter Brophy <pbrophy@adobe.com>
Robert Goldberg <goldberg@adobe.com>
Don Woodward <woodward@adobe.com>
Vinay Anantharaman <vinaya@adobe.com>
Naveen Bobbili <naveenbobbili@motorola.com>
Vamshikrishna Yellenki <vamshi@motorola.com>
Robert Nagy <robert.nagy@gmail.com>
Nayan Kumar K <nayankk@motorola.com>
ShankarGanesh K <blr.bmlab@gmail.com>
Goutham Jagannatha <wrm364@motorola.com>
Rosen Dash <rosen.dash@gmail.com>
Naveen Bobbili <qghc36@motorola.com>
Ravi Phaneendra Kasibhatla <ravi.kasibhatla@motorola.com>
Rosen Dash <nqk836@motorola.com>
Parag Radke <nrqv63@motorola.com>
Ted Vessenes <tedvessenes@gmail.com>
Yair Yogev <progame@chromium.org>
Chandra Shekar Vallala <brk376@motorola.com>
Patrasciuc Sorin Cristian <cristian.patrasciuc@gmail.com>
Halton Huo <halton.huo@gmail.com>
Shiliu Wang <aofdwsl@gmail.com>
Gao Chun <gaochun.dev@gmail.com>
Clinton Staley <clintstaley@gmail.com>
Clinton Staley <clintstaley@chromium.org>
Devlin Cronin <rdevlin.cronin@gmail.com>
Junmin Zhu <junmin.zhu@intel.com>
Cem Kocagil <cem.kocagil@gmail.com>
Simon Hong <simon.hong81@gmail.com>
Lu Guanqun <guanqun.lu@gmail.com>
François Beaufort <beaufort.francois@gmail.com>
Eriq Augustine <eriq.augustine@gmail.com>
Francois Kritzinger <francoisk777@gmail.com>
Erik Hill <erikghill@gmail.com>
Mao Yujie <maojie0924@gmail.com>
Pan Deng <pan.deng@intel.com>
Aaron Leventhal <aaronlevbugs@gmail.com>
Peter Collingbourne <peter@pcc.me.uk>
Aaron Randolph <aaron.randolph@gmail.com>
Yumikiyo Osanai <yumios.art@gmail.com>
Matthew Robertson <matthewrobertson03@gmail.com>
Mao Yujie <yujie.mao@intel.com>
Xu Samuel <samuel.xu@intel.com>
Jin Yang <jin.a.yang@intel.com>
Xinchao He <hexinchao@gmail.com>
Stephen Searles <stephen.searles@gmail.com>
Arun Mankuzhi <arun.m@samsung.com>
Taylor Price <trprice@gmail.com>
Alexandru Chiculita <achicu@adobe.com>
Eric Rescorla <ekr@rtfm.com>
Alexandre Abreu <wiss1976@gmail.com>
Erik Sjölund <erik.sjolund@gmail.com>
Simon Arlott <simon.arlott@gmail.com>
Alexey Korepanov <alexkorep@gmail.com>
Mitchell Rosen <mitchellwrosen@chromium.org>
Yongsheng Zhu <yongsheng.zhu@intel.com>
Shouqun Liu <shouqun.liu@intel.com>
Jake Helfert <jake@helfert.us>
Hongbo Min <hongbo.min@intel.com>
Anastasios Cassiotis <tom.cassiotis@gmail.com>
Evangelos Foutras <evangelos@foutrelis.com>
Pavel Ivanov <paivanof@gmail.com>
Rene Bolldorf <rb@radix.io>
Petar Jovanovic <petarj@mips.com>
Sergio Carlos Morales Angeles <carloschilazo@gmail.com>
