# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

Anita Fronczak <afronczak@google.com> <akarbow@gmail.com>
Antony Mayi <antonymayi@users.noreply.github.com>
Arthur Wiedmer <arthur@apache.org> <arthur_wiedmer@arthur-wiedmer.local>
Arthur Wiedmer <arthur@apache.org> <arthur.wiedmer@airbnb.com>
Arthur Wiedmer <arthur@apache.org> <arthur.wiedmer@gmail.com>
Bolke de Bruin <bolke@xs4all.nl> <bolke@Bolkes-MacBook-Pro.local>
Bolke de Bruin <bolke@xs4all.nl> <bolkedebruin@users.noreply.github.com>
Benjamin Grenier <52801483+benjamingrenier@users.noreply.github.com>
Chip Myers Jr. <chip.myersjr@gmail.com>
Chris Riccomini <criccomini@apache.org> <chrisr@wepay.com>
Chris Riccomini <criccomini@apache.org> <criccomini@users.noreply.github.com>
Dan Davydov <ddavydov@twitter.com> <dan.davydov@airbnb.com>
Daniel Imberman <daniel.imberman@gmail.com> <daniel@astronomer.io>
Daniel Imberman <daniel.imberman@gmail.com> <danielryan2430@gmail.com>
Daniel Standish <dstandish@users.noreply.github.com>
Dependabot [bot] <49699333+dependabot[bot]@users.noreply.github.com>
Ephraim Anierobi <splendidzigy24@gmail.com> <4122866+ephraimbuddy@users.noreply.github.com>
Felix Uellendall <feluelle@users.noreply.github.com> <feluelle@users.noreply.github.com>
Feng Lu <fenglu@fengcloud.hot.corp.google.com> <fenglu@google.com>
Fokko Driesprong <fokko@apache.org> <fokko@driesprong.frl>
Fokko Driesprong <fokko@apache.org> <fokkodriesprong@godatadriven.com>
Gerard Toonstra <gtoonstra@gmail.com>
Greg Neiheisel <greg@astronomer.io>
Hossein Torabi <hossein.torabi@alopeyk.com> <blcksrx@gmail.com>
James Timmins <james@astronomer.io> <jameshtimmins@gmail.com>
Jarek Potiuk <jarek.potiuk@polidea.com> <jarek@potiuk.com>
Jeremiah Lowin <jlowin@apache.org>
Jeremiah Lowin <jlowin@apache.org> <jlowin@gmail.com>
Jeremiah Lowin <jlowin@apache.org> <jlowin@iHal.local>
Jeremiah Lowin <jlowin@apache.org> <jlowin@Jeremiahs-MacBook-Air.local>
Jeremiah Lowin <jlowin@apache.org> <jlowin@jlowin.local>
Jeremiah Lowin <jlowin@apache.org> <jlowin@users.noreply.github.com>
Jiajie Zhong <zhongjiajie955@hotmail.com>
Jorge Machado <jorge.w.machado@hotmail.com>
Joseph Yen <joseph.yen@gmail.com>
Joy Gao <Joygao@apache.org> <joyg@wepay.com>
Kamil Breguła <mik-laj@users.noreply.github.com> <kamil.bregula@polidea.com>
Kaveri Sharma <kaverisharma09@gmail.com>
Kaxil Naik <kaxilnaik@apache.org>
Kaxil Naik <kaxilnaik@apache.org> <kaxilnaik@gmail.com>
Kousuke Saruta <sarutak@oss.nttdata.co.jp>
Kousuke Saruta <sarutak@oss.nttdata.co.jp> <sarutak@oss.nttdata.com>
Marcin Szymański <ms32035@gmail.com>
Martijn Pieters <mj@zopatista.com>
Martijn Pieters <mj@zopatista.com> <github.com@zopatista.com>
Matthew Bruce <matthew.bruce@shopify.com> <matthew.robert.bruce@gmail.com>
Maxime Beauchemin <maxime.beauchemin@apache.org> <maxime_beauchemin@i-0963e1d9.inst.aws.airbnb.com>
Maxime Beauchemin <maxime.beauchemin@apache.org> <maxime_beauchemin@i-a94af485.inst.aws.airbnb.com>
Maxime Beauchemin <maxime.beauchemin@apache.org> <maxime.beauchemin@airbnb.com>
Maxime Beauchemin <maxime.beauchemin@apache.org> <maximebeauchemin@gmail.com>
Maxime Beauchemin <maxime.beauchemin@apache.org> <maxime_beauchemin@maxime-beauchemin.local>
Michael Chirico <michaelchirico4@gmail.com>
Michael Chirico <michaelchirico4@gmail.com> <michael.chirico@grabtaxi.com>
Michał Słowikowski <michalslowikowski00@gmail.com>
Mustafa Gök <sd.mustafagok@gmail.com>
Mustafa Gök <sd.mustafagok@gmail.com> <gokmust@itu.edu.tr>
Niels Zeilemaker <niels@zeilemaker.nl>
Niels Zeilemaker <niels@zeilemaker.nl> <nielszeilemaker@godatadriven.com>
Nikolay Kolev <nikolays@wepay.com>
Patrick McKenna <patrick.b.mckenna@gmail.com>
Patrick McKenna <patrick.b.mckenna@gmail.com> <patrickmckenna@github.com>
Patrick Leo Tardif <plt@rdif.me>
Patrick Leo Tardif <plt@rdif.me> <patrick_tardif@unassigned0391.local>
Peng Chen <pengchen@xiaohongshu.com> <348707924@qq.com>
Pradeep Bhadani <pradeep.bhadani@gmail.com>
Rafael Bottega <rbottega@worldremit.com> <boittega@gmail.com>
Sergio Kefalas <sergiokef@gmail.com>
Sevak Avetisyan <sevak.avet@gmail.com>
Sid Anand <r39132@gmail.com> <sanand@agari.com>
Sid Anand <r39132@gmail.com> <sianand@paypal.com>
Sid Anand <r39132@gmail.com> <siddharthanand@yahoo.com>
Sumit Maheshwari <sumeet.manit@gmail.com> <smaheshwari@twitter.com>
Sumit Maheshwari <sumeet.manit@gmail.com> <sumitm@qubole.com>
Tao Feng <fengtao04@gmail.com> <tfeng@lyft.com>
Tobiasz Kedzierski <tobiasz.kedzierski@polidea.com>
Tomek Kzukowski <tomek@tomekzukowski.com>
Tomek Urbaszek <turbaszek@apache.org> <turbaszek@gmail.com>
Tomek Urbaszek <turbaszek@apache.org> <tomasz.urbaszek@polidea.com>
Xiaodong Deng <xd_deng@hotmail.com>
Xiaodong Deng <xd_deng@hotmail.com> <11539188+XD-DENG@users.noreply.github.com>
Xiaodong Deng <xd_deng@hotmail.com> <xd.deng.r@gmail.com>
Yuen-Kuei Hsueh <ph.study@gmail.com>
Zikun Zhu <33176974+zikun@users.noreply.github.com>
