{%extends "base.html"%}
{%block title1%}Settings -{%endblock%}
{%block body%}
<h2>Hi!</h2>

<form name="welcome" action="{{post_url}}" method="POST">

{{form.xsrf}}
{%if form.xsrf.errors%}
<ul>
  {%for e in form.xsrf.errors%}
    <li>{{e}}</li>
  {%endfor%}
</ul>
{%endif%}

{{form.dest}}
<input type="hidden" name="step" value="3ind" />

<p>Hi, welcome to Android.  Before we can get going, we need a little bit of
information from you.</p>

<table class="settings">
<tr><th>Individual Contributor License Grant</th></tr>
<tr><td style="background-color: white; white-space: normal;">

<p
{% if form.i_agree.errors %}
    style="color: red;"
{% endif %}
>Please read the following, and agree to it by typing the words "I AGREE" in the box below.</p>


<div style="padding: 0 30px 0 30px;">


<div dir="ltr"><p style="margin:0px">In
order to clarify the intellectual property license granted with
Contributions from any person or entity, the Android Open Source
Project (the "Project") must have a Contributor License Grant ("Grant")
on file that has been signed by each Contributor, indicating agreement
to the license terms below. This license is for your protection as a
Contributor as well as the protection of the Project and the Android
Open Source Project Leads (the "Project Leads"); it does not change
your rights to use your own Contributions for any other purpose.  If
you have not already done so, please complete and send an original
signed Grant to</p><blockquote style="border:1px dashed rgb(221, 221, 221);padding:10px">Google Inc.<br />Attn: Open Source Program Office<br />1600 Amphitheatre Pkwy<br />Building 43<br />Mountain View, CA 94043<br />U.S.A.<br /></blockquote><p style="margin:0px">Scanned
agreements may also be emailed in PDF form to
cla-submissions@google.com, sent by facsimile to (650) 887-1625, or
signed electronically with the form below.</p><p style="margin:0px">Please read this document carefully before signing and keep a copy for your records.</p><pre style="border:1px solid silver;margin:2em;padding:0.5em;color:rgb(0, 112, 0);font-size:100%;background-color:rgb(245, 245, 245)"> <br /><br />Full name: ____________________________  E-Mail: ______________________<br />   <br />    <br />   <br />Mailing Address: ______________________  Telephone: ___________________<br />   <br />    <br />   <br />_______________________________________  Facsimile: ___________________<br />   <br />    <br />   <br />_______________________________________  Country:   ___________________<br />   <br />   <br /></pre><p style="margin:0px">You
accept and agree to the following terms and conditions for Your present
and future Contributions submitted to the Project. Except for the
license granted herein to the Project Leads and recipients of software
distributed by the Project Leads, You reserve all right, title, and
interest in and to Your Contributions.</p><p style="margin:0px"><br /></p><ol style="margin-top:0px;margin-bottom:0px"><li style="margin-top:0px;margin-bottom:0px"><p style="margin:0px">Definitions.
"You" (or "Your") shall mean the copyright owner or legal entity
authorized by the copyright owner that is making this Grant. For legal
entities, the entity making a Contribution and all other entities that
control, are controlled by, or are under common control with that
entity are considered to be a single Contributor. For the purposes of
this definition, "control" means (i) the power, direct or indirect, to
cause the direction or management of such entity, whether by contract
or otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"Contribution" shall mean any original work of authorship, including
any modifications or additions to an existing work, that is
intentionally submitted by You to the Project Leads for inclusion in,
or documentation of, any of the products managed or maintained by the
Project Leads (the "Work"). For the purposes of this definition,
"submitted" means any form of electronic, verbal, or written
communication sent to the Project Leads or their representatives,
including but not limited to communication on electronic mailing lists,
source code control systems, and issue tracking systems that are
managed by, or on behalf of, the Project Leads for the purpose of
discussing and improving the Work, but excluding communication that is
conspicuously marked or otherwise designated in writing by You as "Not
a Contribution."</p></li><li style="margin-top:0px;margin-bottom:0px"><p style="margin:0px">Grant
of Copyright License. Subject to the terms and conditions of this
Grant, You hereby grant to the Project Leads and to recipients of
software distributed by the Project Leads a perpetual, worldwide,
non-exclusive, no-charge, royalty-free, irrevocable copyright license
to reproduce, prepare derivative works of, publicly display, publicly
perform, sublicense, and distribute Your Contributions and such
derivative works.</p></li><li style="margin-top:0px;margin-bottom:0px"><p style="margin:0px">Grant
of Patent License. Subject to the terms and conditions of this Grant,
You hereby grant to the Project Leads and to recipients of software
distributed by the Project Leads a perpetual, worldwide, non-exclusive,
no-charge, royalty-free, irrevocable (except as stated in this section)
patent license to make, have made, use, offer to sell, sell, import,
and otherwise transfer the Work, where such license applies only to
those patent claims licensable by You that are necessarily infringed by
Your Contribution(s) alone or by combination of Your Contribution(s)
with the Work to which such Contribution(s) was submitted. If any
entity institutes patent litigation against You or any other entity
(including a cross-claim or counterclaim in a lawsuit) alleging that
your Contribution, or the Work to which you have contributed,
constitutes direct or contributory patent infringement, then any patent
licenses granted to that entity under this Grant for that Contribution
or Work shall terminate as of the date such litigation is filed.</p></li><li style="margin-top:0px;margin-bottom:0px"><p style="margin:0px">You
represent that you are legally entitled to grant the above license. If
your employer(s) has rights to intellectual property that you create
that includes your Contributions, you represent that you have received
permission to make Contributions on behalf of that employer, that your
employer has waived such rights for your Contributions to the Project
Leads, or that your employer has executed a separate Corporate
Contributor License Grant with the Project Leads.</p></li><li style="margin-top:0px;margin-bottom:0px"><p style="margin:0px">You
represent that each of Your Contributions is Your original creation
(see section 7 for submissions on behalf of others). You represent that
Your Contribution submissions include complete details of any
third-party license or other restriction (including, but not limited
to, related patents and trademarks) of which you are personally aware
and which are associated with any part of Your Contributions.</p></li><li style="margin-top:0px;margin-bottom:0px"><p style="margin:0px">You
are not expected to provide support for Your Contributions, except to
the extent You desire to provide support. You may provide support for
free, for a fee, or not at all. Unless required by applicable law or
agreed to in writing, You provide Your Contributions on an "AS IS"
BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions of
TITLE, NON- INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR
PURPOSE.</p></li><li style="margin-top:0px;margin-bottom:0px"><p style="margin:0px">Should
You wish to submit work that is not Your original creation, You may
submit it to the Project Leads separately from any Contribution,
identifying the complete details of its source and of any license or
other restriction (including, but not limited to, related patents,
trademarks, and license agreements) of which you are personally aware,
and conspicuously marking the work as "Submitted on behalf of a
third-party: [named here]".  <span style="background-color:rgb(255, 255, 0)"><br /></span></p></li><li style="margin-top:0px;margin-bottom:0px"><p style="margin:0px">You
agree to notify the Project Leads of any facts or circumstances of
which you become aware that would make these representations inaccurate
in any respect.</p></li></ol></div>


</div>

<p>I agree: {{form.i_agree}}</p>
</td></tr>
<tr><td height=10></td></tr>
</table>

<p>We need to collect the following information as well:
<table cellspacing=0 cellpadding=0>
<tr><td><b>Mailing Address</b></td>
    <td>{{form.mailing_address}}{{form.mailing_address.errors}}</td></tr>
<tr><td><b>Country</b></td>
    <td>{{form.mailing_address_country}}{{form.mailing_address_country.errors}}</td></tr>
<tr><td><b>Phone Number</b></td>
    <td>{{form.phone_number}}{{form.phone_number.errors}}</td></tr>
<tr><td><b>Fax Number (optional)</b></td>
    <td>{{form.fax_number}}{{form.fax_number.errors}}</td></tr>
</table>
</p>


<input type="button" name="back" value="Back" onclick="document.welcome.submit();">
<input type="submit" name="continue" value="Continue">

</form>

{%endblock%}

