License Agreement


License Grant. Subject to the terms and conditions of this agreement, Geospiza grants the user "the Customer" a perpetual, nontransferable, nonexclusive license to use FinchTV "the Software". The Customer may not sell unauthorized copies of the Software without Geospiza's permission. This agreement does not obligate Geospiza to provide the Customer with updates or enhancements to the Software or future versions of the Software. 
                
Title. Geospiza retains ownership of all of Geospiza's existing copyright, trade secret, patent, trademark, and any other proprietary rights (collectively "Geospiza intellectual property rights") in and to the Software, including all modifications or improvements. Customer acknowledges that it receives only a license to use the Server and Software under this agreement.

Additional Restrictions. Customer will not modify or change the Software without Geospiza's prior written consent. Customer will not decompile, disassemble, or otherwise reverse engineer the Software. Customer agrees that it will not use, disclose, or otherwise communicate any information with respect to the Software that might reasonably be expected to enable copying of all or any portions of the Software. Customer agrees to take reasonable actions to prevent the disclosure to third parties of any information identified by Geospiza as Geospiza confidential or proprietary information.

Warranties, Limitation of Liability, and Indemnification. The Software will be delivered to the Customer "as is."  GEOSPIZA MAKES NO WARRANTIES, EXPRESSED OR IMPLIED, INCLUDING WARRANTIES AS TO MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Geospiza will not be liable for special, punitive, indirect, incidental or consequential damages under this agreement whether arising from contract or negligence. In no event will Geospiza's liability to Customer under any claim exceed the total amount paid to Geospiza by Customer under this agreement. No claim or action relating to this agreement may be instituted more than two (2) years after the event giving rise to such action or claim.
                
General Provisions. Washington state law will govern this agreement. A determination that any provision of this Agreement is invalid, illegal, or unenforceable will not affect the enforceability of any other provision. Neither party will be deemed an agent of the other party for any purpose and the relationship between the parties will only be that of independent contractors. Customer agrees that it will comply with all applicable United States export regulations. Customer further acknowledges that portions of the Software may have been developed using funding from the United States Government. This Agreement is subject to the limited rights granted to the Government in the funding agreement. Any Software supplied directly to the United States Government is classified as "restricted computer software" as defined by section 52.227-19 of the FAR and section 252.227-7013 of the DFARS. All notices and other communications required under this agreement will be in writing and deemed to have been received when personally delivered or when deposited in the United States mail sent registered mail by first-class postage prepaid, addressed as set forth at the beginning of this agreement.
