# 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.

Google Inc. <*@google.com>
HyperConnect Inc. <*@hpcnt.com>
IBM Inc. <*@*.ibm.com>
Loongson Technology Corporation Limited. <*@loongson.cn>
MIPS Technologies, Inc. <*@mips.com>
NVIDIA Corporation <*@nvidia.com>
Opera Software ASA <*@opera.com>
Red Hat Inc. <*@redhat.com>
The Chromium Authors <*@chromium.org>
Vewd Software AS <*@vewd.com>
Vivaldi Technologies AS <*@vivaldi.com>
Yandex LLC <*@yandex-team.ru>

Aleksei Khoroshilov <akhoroshilov@brave.com>
Alexis Menard <alexis.menard@intel.com>
Alfredo Mazzinghi <mzz.lrd@gmail.com>
Andrew Boyarshin <andrew.boyarshin@gmail.com>
Anuj Kumar Sharma <anujk.sharma@samsung.com>
DanCraft99 <simputest@gmail.com>
Evangelos Foutras <evangelos@foutrelis.com>
Gergely Nagy <ngg@ngg.hu>
Ilia K <ki.stfu@gmail.com>
Ivan Naydonov <samogot@gmail.com>
Joe Armstrong <joearmstrong334@gmail.com>
Julien Brianceau <jbriance@cisco.com>
Kal Conley <kcconley@gmail.com>
Kamil Rytarowski <krytarowski@gmail.com>
Ma Aiguo <maaiguo@uniontech.com>
Martijn Croonen <martijn@martijnc.be>
Matej Knopp <matej.knopp@gmail.com>
Matt Jolly <kangie@gentoo.org>
Michael Gilbert <floppymaster@gmail.com>
Milko Leporis <milko.leporis@imgtec.com>
Mohan Reddy <mohan.reddy@samsung.com>
Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
Riku Voipio <riku.voipio@linaro.org>
Saikrishna Arcot <saiarcot895@gmail.com>
Stephan Hartmann <stha09@googlemail.com>
Tim Niederhausen <tim@rnc-ag.de>
Tomas Popela <tomas.popela@gmail.com>
Tripta Gupta <tripta.g@samsung.com>
Wink Saville <wink@saville.com>
Yuriy Taraday <yorik.sar@gmail.com>
Zhongwei Wang <carolwolfking@gmail.com>
Oleksandr Motsok <boramaabak@gmail.com>
Ihor Karavan <ihorkaravan96@gmail.com>
