Google Terms of Service
Last modified: March 1, 2012

Welcome to Google!

Thanks for using our products and services (“Services”). The Services are
provided by Google Inc. (“Google”), located at 1600 Amphitheatre Parkway,
Mountain View, CA 94043, United States.

By using our Services, you are agreeing to these terms. Please read them
carefully.

Our Services are very diverse, so sometimes additional terms or product
requirements (including age requirements) may apply. Additional terms will be
available with the relevant Services, and those additional terms become part of
your agreement with us if you use those Services.

Using our Services

You must follow any policies made available to you within the Services.

Don’t misuse our Services. For example, don’t interfere with our Services
or try to access them using a method other than the interface and the
instructions that we provide. You may use our Services only as permitted by
law, including applicable export and re-export control laws and regulations. We
may suspend or stop providing our Services to you if you do not comply with our
terms or policies or if we are investigating suspected misconduct.

Using our Services does not give you ownership of any intellectual property
rights in our Services or the content you access. You may not use content from
our Services unless you obtain permission from its owner or are otherwise
permitted by law. These terms do not grant you the right to use any branding or
logos used in our Services. Don’t remove, obscure, or alter any legal notices
displayed in or along with our Services.

Our Services display some content that is not Google’s. This content is the
sole responsibility of the entity that makes it available. We may review
content to determine whether it is illegal or violates our policies, and we may
remove or refuse to display content that we reasonably believe violates our
policies or the law. But that does not necessarily mean that we review content,
so please don’t assume that we do.

In connection with your use of the Services, we may send you service
announcements, administrative messages, and other information. You may opt out
of some of those communications.

Your Google Account

You may need a Google Account in order to use some of our Services. You may
create your own Google Account, or your Google Account may be assigned to you
by an administrator, such as your employer or educational institution. If you
are using a Google Account assigned to you by an administrator, different or
additional terms may apply and your administrator may be able to access or
disable your account.

If you learn of any unauthorized use of your password or account, follow these
instructions.

Privacy and Copyright Protection

Google’s privacy policies explain how we treat your personal data and protect
your privacy when you use our Services. By using our Services, you agree that
Google can use such data in accordance with our privacy policies.

We respond to notices of alleged copyright infringement and terminate accounts
of repeat infringers according to the process set out in the U.S. Digital
Millennium Copyright Act.

We provide information to help copyright holders manage their intellectual
property online. If you think somebody is violating your copyrights and want to
notify us, you can find information about submitting notices and Google’s
policy about responding to notices in our Help Center.

Your Content in our Services

Some of our Services allow you to submit content. You retain ownership of any
intellectual property rights that you hold in that content. In short, what
belongs to you stays yours.

When you upload or otherwise submit content to our Services, you give Google
(and those we work with) a worldwide license to use, host, store, reproduce,
modify, create derivative works (such as those resulting from translations,
adaptations or other changes we make so that your content works better with our
Services), communicate, publish, publicly perform, publicly display and
distribute such content. The rights you grant in this license are for the
limited purpose of operating, promoting, and improving our Services, and to
develop new ones. This license continues even if you stop using our Services
(for example, for a business listing you have added to Google Maps). Some
Services may offer you ways to access and remove content that has been provided
to that Service. Also, in some of our Services, there are terms or settings
that narrow the scope of our use of the content submitted in those Services.
Make sure you have the necessary rights to grant us this license for any
content that you submit to our Services.

You can find more information about how Google uses and stores content in the
privacy policy or additional terms for particular Services. If you submit
feedback or suggestions about our Services, we may use your feedback or
suggestions without obligation to you.

About Software in our Services

When a Service requires or includes downloadable software, this software may
update automatically on your device once a new version or feature is available.
Some Services may let you adjust your automatic update settings.

Google gives you a personal, worldwide, royalty-free, non-assignable and
non-exclusive license to use the software provided to you by Google as part of
the Services. This license is for the sole purpose of enabling you to use and
enjoy the benefit of the Services as provided by Google, in the manner
permitted by these terms. You may not copy, modify, distribute, sell, or lease
any part of our Services or included software, nor may you reverse engineer or
attempt to extract the source code of that software, unless laws prohibit those
restrictions or you have our written permission.

Open source software is important to us. Some software used in our Services may
be offered under an open source license that we will make available to you.
There may be provisions in the open source license that expressly override some
of these terms.

Modifying and Terminating our Services

We are constantly changing and improving our Services. We may add or remove
functionalities or features, and we may suspend or stop a Service altogether.

You can stop using our Services at any time, although we’ll be sorry to see
you go. Google may also stop providing Services to you, or add or create new
limits to our Services at any time.

We believe that you own your data and preserving your access to such data is
important. If we discontinue a Service, where reasonably possible, we will give
you reasonable advance notice and a chance to get information out of that
Service.

Our Warranties and Disclaimers

We provide our Services using a commercially reasonable level of skill and care
and we hope that you will enjoy using them. But there are certain things that
we don’t promise about our Services.

OTHER THAN AS EXPRESSLY SET OUT IN THESE TERMS OR ADDITIONAL TERMS, NEITHER
GOOGLE NOR ITS SUPPLIERS OR DISTRIBUTORS MAKE ANY SPECIFIC PROMISES ABOUT THE
SERVICES. FOR EXAMPLE, WE DON’T MAKE ANY COMMITMENTS ABOUT THE CONTENT WITHIN
THE SERVICES, THE SPECIFIC FUNCTION OF THE SERVICES, OR THEIR RELIABILITY,
AVAILABILITY, OR ABILITY TO MEET YOUR NEEDS. WE PROVIDE THE SERVICES “AS
IS”.

SOME JURISDICTIONS PROVIDE FOR CERTAIN WARRANTIES, LIKE THE IMPLIED WARRANTY OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. TO THE
EXTENT PERMITTED BY LAW, WE EXCLUDE ALL WARRANTIES.

Liability for our Services

WHEN PERMITTED BY LAW, GOOGLE, AND GOOGLE’S SUPPLIERS AND DISTRIBUTORS, WILL
NOT BE RESPONSIBLE FOR LOST PROFITS, REVENUES, OR DATA, FINANCIAL LOSSES OR
INDIRECT, SPECIAL, CONSEQUENTIAL, EXEMPLARY, OR PUNITIVE DAMAGES.

TO THE EXTENT PERMITTED BY LAW, THE TOTAL LIABILITY OF GOOGLE, AND ITS
SUPPLIERS AND DISTRIBUTORS, FOR ANY CLAIM UNDER THESE TERMS, INCLUDING FOR ANY
IMPLIED WARRANTIES, IS LIMITED TO THE AMOUNT YOU PAID US TO USE THE SERVICES
(OR, IF WE CHOOSE, TO SUPPLYING YOU THE SERVICES AGAIN).

IN ALL CASES, GOOGLE, AND ITS SUPPLIERS AND DISTRIBUTORS, WILL NOT BE LIABLE
FOR ANY LOSS OR DAMAGE THAT IS NOT REASONABLY FORESEEABLE.

Business uses of our Services

If you are using our Services on behalf of a business, that business accepts
these terms. It will hold harmless and indemnify Google and its affiliates,
officers, agents, and employees from any claim, suit or action arising from or
related to the use of the Services or violation of these terms, including any
liability or expense arising from claims, losses, damages, suits, judgments,
litigation costs and attorneys’ fees.

About these Terms

We may modify these terms or any additional terms that apply to a Service to,
for example, reflect changes to the law or changes to our Services. You should
look at the terms regularly. We’ll post notice of modifications to these
terms on this page. We’ll post notice of modified additional terms in the
applicable Service. Changes will not apply retroactively and will become
effective no sooner than fourteen days after they are posted. However, changes
addressing new functions for a Service or changes made for legal reasons will
be effective immediately. If you do not agree to the modified terms for a
Service, you should discontinue your use of that Service.

If there is a conflict between these terms and the additional terms, the
additional terms will control for that conflict.

These terms control the relationship between Google and you. They do not create
any third party beneficiary rights.

If you do not comply with these terms, and we don’t take action right away,
this doesn’t mean that we are giving up any rights that we may have (such as
taking action in the future).

If it turns out that a particular term is not enforceable, this will not affect
any other terms.

The laws of California, U.S.A., excluding California’s conflict of laws
rules, will apply to any disputes arising out of or relating to these terms or
the Services. All claims arising out of or relating to these terms or the
Services will be litigated exclusively in the federal or state courts of Santa
Clara County, California, USA, and you and Google consent to personal
jurisdiction in those courts.

For information about how to contact Google, please visit our contact page.
