ANTLR Project Contributors Certification of Origin and Rights

All contributors to ANTLR v3 must formally agree to abide by this
certificate of origin by signing on the bottom with their github
userid, full name, email address (you can obscure your e-mail, but it
must be computable by human), and date.

By signing this agreement, you are warranting and representing that
you have the right to release code contributions or other content free
of any obligations to third parties and are granting Terence Parr and
ANTLR project contributors, henceforth referred to as The ANTLR
Project, a license to incorporate it into The ANTLR Project tools
(such as ANTLRWorks and StringTemplate) or related works under the BSD
license. You understand that The ANTLR Project may or may not
incorporate your contribution and you warrant and represent the
following:

1. I am the creator of all my contributions. I am the author of all
   contributed work submitted and further warrant and represent that
   such work is my original creation and I have the right to license
   it to The ANTLR Project for release under the 3-clause BSD
   license. I hereby grant The ANTLR Project a nonexclusive,
   irrevocable, royalty-free, worldwide license to reproduce,
   distribute, prepare derivative works, and otherwise use this
   contribution as part of the ANTLR project, associated
   documentation, books, and tools at no cost to The ANTLR Project.

2. I have the right to submit. This submission does not violate the
   rights of any person or entity and that I have legal authority over
   this submission and to make this certification.

3. If I violate another's rights, liability lies with me. I agree to
   defend, indemnify, and hold The ANTLR Project and ANTLR users
   harmless from any claim or demand, including reasonable attorney
   fees, made by any third party due to or arising out of my violation
   of these terms and conditions or my violation of the rights of
   another person or entity.

4. I understand and agree that this project and the contribution are
   public and that a record of the contribution (including all
   personal information I submit with it, including my sign-off) is
   maintained indefinitely and may be redistributed consistent with
   this project or the open source license indicated in the file.

I have read this agreement and do so certify by adding my signoff to
the end of the following contributors list.

CONTRIBUTORS:

YYYY/MM/DD, github id, Full name, email
2013/04/17, ibre5041, Ivan Brezina, ibre5041@ibrezina.net
2013/02/19, murrayju, Justin Murray, murrayju@addpcs.com
2012/07/12, parrt, Terence Parr, parrt@antlr.org
2012/08/08, Zannick, Benjamin S Wolf, jokeserver@gmail.com
2012/09/15, martint, Martin Traverso, mtraverso@gmail.com
2012/09/16, qmx, Douglas Campos, qmx@qmx.me
2012/09/17, ksgokul, Gokulakannan Somasundaram, gokul007@gmail.com
2012/11/22, sharwell, Sam Harwell, sam@tunnelvisionlabs.com
2012/09/24, mike-lischke, Mike Lischke, mike@lischke-online.de
