END-USER LICENSE AGREEMENT OF KINGSOFT (WPS Office Linux Version)


Please read and understand all rights and limitations stated in this END-USER LICENSE AGREEMENT ("the EULA") carefully. Before first using the "Product" that accompanies the EULA, you need to read all the terms of the EULA and decide whether to agree with the terms or not. Unless you agree all the terms of the EULA, you shall uninstall the "Product" and not use the "Product" in any way.
As a reference, you may print out the text of the EULA from this page now. You may also read the copy of the EULA in the HELP part of the "Product". 

The EULA is a legal agreement entered into between you and Kingsoft regarding the "Product". The "Product" includes computer software and any associated documents and printed materials. Before first using the "Product", you shall agree to all the terms of the EULA. If there is any disagreement, please uninstall the "Product" and do not use the "Product" in any way. 

The "Product" is protected by copyright laws, international copyright treaties and other related laws and treaties. The "Product" is licensed, not sold.

1. Kingsoft grants you a nonexclusive license to the "Product" in the territorial scope of the world. You are entitled to:
1) Install, use, display and run (collectively referred as to "run") a copy of the "Product" on one computer based on Linux system;
2) Make back-up reproductions to prevent any damage to the reproductions,and you shall be responsible for destroying the back-up reproductions when you lose the ownership of the legal reproductions;; and 
3) Make necessary modifications to the "Product" in order to use it in the actual computer application environment or to improve its functions and performance. Unless otherwise agreed in the EULA, the modified Product shall not be provided to any third party without the permission of Kingsoft.
4) Distribute the "Product" in the territorial scope of the world by lawful means, but you agree to comply with all the following terms simultaneously when you distribute the "Product": 
A.Distribute the "Product" only as the status quo as Kingsoft provides, and the "Product" distributed by you shall only be the complete version (including but not limited to contain the entire contents of the EULA) provided by Kingsoft without any modification and contain all the copyright mark;
B. No modification concerning the content or the form of the EULA is allowed, you shall ensure the end user whom you distribute the "Product" to are in the acceptance of all terms of the EULA before using the" Product";
C. Shall not sell the "Product" or use the "Product" to charge (or in a disguised form) in any way.
D. If the terms mentioned above (article 1.4) ) is inconsistent with the other terms of the EULA, or in conflict with other terms of the EULA during the actual implementation process, the content of the terms mentioned above (article 1.4) ) shall prevail only.
5) Translate the language of the "Product" into other language excluding Japanese, such as translate the language of Chinese version of the "Product" into English or other languages excluding Japanese. At the same time, you also acknowledge and agree that all the translation work resulting from your translation of the language of the "Product" (the "Translation Work") can only be provided to Kingsoft free of charge, you shall not use, distribute the "Translation Work " in any form. The copyright of all the Translation Work (the copyright including but not limited to: the right of authorship, the right of publication, the right of alternation, the right of integrity, the right of reproduction, the right of distribution, the right of lease, the right of exhibition, the right of performance, the right of showing, the right of broadcast, the right of dissemination of information on networks , the right of making cinematographic work, the right of adaptation, the right of translation, the right of compilation and other rights shall be enjoyed by copyright owners), completely and separately belong to Kingsoft since the copyright has been created，Kingsoft will have the right to decide how to use the Translation Work in its sole discretion and does not need to pay reward or any payment to you. Notwithstanding the preceding provisions, you shall ensure at the same time the Translation Work that you provide to Kingsoft is the original works created independently by you. The Translation Work does not violate the provisions of relevant laws and regulations, and does not infringe upon the legitimate rights and interests of any third party, and no claim shall be raised to all or part of the Translation Work by any third party. In case of any claim to the Translation Work by a third party, or any breach to this warranty by you, you shall provide defense for Kingsoft to protect Kingsoft from any damage.

2. You shall abide by the following obligations:
1) Do not use, copy, revise and/or assign the "Product", as a whole or part, beyond the scope authorized by the EULA. 
2) Only run the "Product" on one computer based on Linux system. 
3) Run the "Product" in a multi-users circumstance or network system only under the following conditions being wholly satisfied:
a.each node and terminal has been legally granted the license; and
b.each node and terminal which has been legally granted the license is based on Linux system

4) Do not reverse engineer, de-compile, or disassemble the "Product" or attempt to gain access to the source code for the "Products" by any means. 
5) Make sure that all the copies of the "Product" comprise all the copyright marks.

3. You may make a one-time permanent assignment of the "Product" accompanied by the EULA to a third party, provided that the following conditions shall be wholly satisfied: 
1) The whole and complete "Product" (including but not limited to computer software and any associated documents and printed materials) are assigned. 
2) Any assignment comprises all former editions of the "Product", if the "Product" is an upgraded edition.
3) You retain no copies of the "Product" .
4) Your license is terminated upon the assignment. 
5) The third party receiving the "Product" agrees to all the terms of the EULA.

4. Product Support Services
1) Provided that Kingsoft expressly agrees and covenants in the user manual or in other associated documents and printed materials that Kingsoft may provide you with certain product support services related to the "Product", the "Product" support service shall be provided by Kingsoft subject to the policies and programs described in such documents.
2) Any add-on software codes provided by Kingsoft as a part of the support services (if any) shall be deemed to be a part of the "Product" and be governed by the EULA, unless separate terms are provided by Kingsoft.	
3) You express assent that, Kingsoft can use the technical information you provided (if any) for business purpose, including but not limited to product supporting and researching. At this time, Kingsoft will not mention you in an individual way, unless it is necessary to provide you with product support services.

5. Replacing, Reworking and Upgrading
1) Kingsoft reserves the rights to replace, revise and upgrade the "Product", as well as the rights to charge fees for such replaced, revised and/or upgraded edition of the "Product" by prior announcement to you (including without limitation to the client POP, the "Product" official website and the email address you provided) at any time. If you will not accept the replaced, revised and/or upgraded edition of the "Product", please contact Kingsoft’s customer services center within 10 working days after your receipt of the replaced, revised and/or upgraded edition of the "Product" so that you can continue to use the prior edition; if you do not contact Kingsoft’s customer services center within the pre-mentioned 10 working days, it shall be deemed that you wholly and completely accept the replaced, revised and/or upgraded edition of the "Product".
2) Any replaced, revised and/or upgraded edition of the "Product" provided to you will be deemed as a part of the "Product", and shall be governed by the EULA, unless the EULA is replaced by another agreement attached to the replaced, revised and/or upgraded edition of the "Product".
3) If Kingsoft provides a replaced, revised and/or upgraded edition of the "Product":
a) You shall not use the replaced, revised and/or upgraded edition of the "Product" until you fully agree with the replaced, revised and/or upgraded edition of the "Product" and the new version of EULA attached (if any); and
b) The license to the former edition shall be terminated.

6. Reservation of Rights
 Any rights not expressly and clearly granted in the EULA shall be reserved by Kingsoft.

7. Copyright
1) You shall not remove any copyright mark from the "Product", meanwhile you shall make the copyright mark exactly as is on all the copies of the "Product" to duly announce Kingsoft’s copyright.
2) Kingsoft own the copyright of the "Product" (including but not limited to any image, picture, flash, video, record, music, word and add-program), printing material attached and any copies of the "Product".
3) Copyright and any other rights in the "Product" and its documents are protected under the local and international Laws and treaties. 
4) You shall not remove or destroy any copyright mark regarding the "Product". You guarantee that you shall also copy this copyright declaration in all copies of the "Product" (whether in whole or part).
5) You agree to prevent any pirates of the "Product" and its documents. 
6) You shall not copy the printing material attached to the "Product"(if any).

8. Export Restrictions
The "Product" is subject to the export-related laws and regulations of .the mainland of the People’s Republic of China (excluding Hong Kong Special Administration Region, Macao Special Administration Region, and Taiwan Region), and you must comply with all domestic and international export-related laws and regulations that apply to the "Product", the domestic and international export-related laws and regulations abovementioned include but not limited to those restrictive provisions in respect to the scope of export destinations, the range of end users in the export destinations, the way of using the "Product" and so on. 

9. Warranties(Only applicable to the "Product" distributed with a disk): 
1) Kingsoft warrants, in the event of normal usage, that the media of the "Product" will be free from defects in materials and workmanship for a period of ninety (90) days from the purchase date. In the event that the media of the "Product" is defective which is confirmed by Kingsoft, Kingsoft’s sole and exclusive liability is to replace a new disk as the whole compensation to you.
2) If this defect is caused by accident, misuse or wrongful application, Kingsoft will not be responsible for it. 
3) There is no other after-sale assurance besides the assurances above.

10. Disclaimer Of Warranties. 
The express warranties provided for in the EULA are the only warranties made to you. To the maximum extent permitted by the applicable laws, Kingsoft and its suppliers provide the "Product" and support services (if any) AS IS AND WITH ALL FAULTS, and hereby disclaim all other assurance and warranties, whether express, implied or statutory, including, but not limited to, any (if any) implied warranties of merchantability or fitness for a particular purpose, accuracy of responses, completeness of results, free of viruses and negligence with regard to the "Product", and the provision of or failure to provide support or other services as for the "Product".

11. Limited Liability
TO THE MAXIMUM EXTENT PERMITTED BY THE APPLICABLE LAWS, IN NO EVENT WILL KINGSOFT, AFFILIATES, DIRECTORS, EMPLOYEES, DISTRIBUTORS, SUPPLIERS, AGENTS OR RESELLERS (COLLECTIVELY, THE "KINGSOFT ") BE LIABLE FOR ANY INDIRECT, INCIDENTAL, DIRECT, SPECIAL, CONSEQUENTIAL, EXEMPLARY OR ANY OTHER DAMAGES ARISING OUT OF OR IN ANY WAY RELATING TO USING OR NON-USING THE PRODUCT, INCLUDING, BUT NOT LIMITED TO DAMAGES CAUSED BY PERSONAL INJURIES OR PROPERTY LOSSES, DAMAGES CAUSED BY LOST PROFITS, LOST DATA, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION OR LOST COMMERCIAL INFORMATION, DAMAGES CUASED BY DISCLOSURE OF PRIVACY DUE TO FAILURE TO PERFORM GOOD-WILL OR PROPER CARE OR ANY OTHER LIABILITY, DAMAGES CAUSE BY NEGLIGENCE, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY HAS BEEN ADVISED OF THE POSSIBILITY THEREOF, AND REGARDLESS OF THE LEGAL OR EQUITABLE THEORY (CONTRACT, TORT OR OTHERWISE) UPON WHICH THE CLAIM IS BASED. IN ANY CASE, THE KINGSOFT’S ENTIRE COLLECTIVE LIABILITY UNDER ANY PROVISION OF THE EULA SHALL NOT EXCEED IN THE AGGREGATE THE REASONABLE SUM OF THE FEES YOU PAID FOR THE "PRODUCT" (IF ANY) AND REPLACEMENT OF DEFECTIVE MEDIA OR PROVISION OF A REASONABLY SIMILAR PRODUCT, AS DETERMINED AT KINGSOFT’S SOLE DISCRETION TO THE EXTENT APPLICABLE LAW PROHIBITS THE LIMITATION OF DAMAGES IN SUCH CASES. ADDITIONALLY, KINGSOFT SHALL NOT BE LIABLE FOR ANY CLAIMS OR DAMAGES ARISING OUT OF CONTENT PROVIDED BY LICENSEEOR A THIRD PARTY THAT IS ACCESSED THROUGH OR USED WITH THE "PRODUCT" AND/OR ANY MATERIAL LINKED THROUGH SUCH CONTENT.

12. Termination of License
1) Kingsoft is entitled to terminate the EULA at any time, if any terms or conditions in the EULA are violated. Upon the termination, you shall destroy or return to Kingsoft all the copies and all the associated documents and printed materials of the "Product".
2) Provided that Kingsoft offers you any replaced, revised and/or upgraded edition of the "Product" attached with a replacement of the EULA which stipulates that you can use the replaced, revised and/or upgraded edition of the "Product" under the condition that you accept the replacement of the EULA, Kingsoft may terminate the original EULA. 
3) Kingsoft will have the right to revise the "Product" policy and the content of the EULA by making announcement in the official website of the "Product" in advance of 15 natural days, including but not limited to increase authorization restrictions, modificate and delete of authorization usage, change geographical scope of authorization, delete of functions, set using time, and terminate authorization and so on. 

13. The execution, application, interpretation and resolution of disputes with respect to the EULA shall be governed by the laws of the mainland of the People’s Republic of China (excluding Hong Kong Special Administration Region, Macao Special Administration Region, and Taiwan Region). All disputes arising out of or in connection with the performance of the EULA shall be resolved through friendly negotiation between parties. Any dispute, if failed to be solved by the above consultation, shall be submitted to the people’s court having jurisdiction in the place where Kingosft has its domicile

14. Important Notice: 
1) In order to improve the quality of the "Product" and relevant services, the basic information about your usage of the "Product" will be collected. Accordingly, Kingsoft will provide you with feedbacks aperiodically.
The information collected does not contain any personal information, such as your name, address and contact information, and files related to information security. 
Such information shall only be used for marketing analysis, so that better functions and services of the "Product" can be provided. Kingsoft shall keep confidential of any and all information collected from you.
The criterion of the scope of the information collection in this article relies on the technical level of Kingsoft from time to time. Kingsoft will make its every endeavor to pursue the accuracy of the judgment. Provided however, that limited by the factual technical level and so on, Kingsoft could only distinguish and collect the information based on its own capability of judgment. You have been fully and clearly informed of the content mentioned above, acknowledged the operation of Kingsoft, and you are willing to bear any loss and damage caused by this.
2) The intellectual property rights of all the Founder fonts (referred to as the "Founder font") contained in the "Product" belongs to Beijing Founder Electronics Co., Ltd. (referred to as "Founder"), You acknowledge and agree that pursuant to the EULA, you only obtain the right of using Founder fonts in the "Product"for office applications (i.e. only using Founder fonts in the "Product" for the purpose of screen display and print), If you need to exceed the aforesaid Founder font mandate to use Founder fonts, you must negotiate with Founder and obtain the appropriate authorization from Founder. You acknowledge and agree that if you infringe on the intellectual property rights of Founder font, any and all legal liabilities arising therefrom to the owner of such intellectual property rights (i.e. Founder and/or other parties) shall be solely borne by you, which shall has nothing to do with Kingsoft and Kingsoft will not bear any warranty liabilities or joint liabilities.



Admission
You acknowledge that you have now read and understood the EULA and have expressly agreed to be bound by all the terms and conditions of it.
