GNU通用公共许可证
                       第三版，2007年6月29日

 版权所有 (C) 2007 自由软件基金会 <https://fsf.org/>
 允许任何人复制和发布本许可证文档的完整副本，
 但不允许对其进行任何修改。

                            前言

  GNU通用公共许可证是一份面向软件及其他类型作品的自由的、公共的许可证。

  大多数软件和其他实用作品的许可证旨在剥夺您共享和修改作品的自由。相比之下，GNU通用公共许可证旨在保证您共享和修改某程序的所有版本的自由——确保它对所有用户都是自由软件。我们，自由软件基金会，在我们的软件中使用GNU通用公共许可证；它也适用于任何其作者以这种方式发布的作品。您也可以将它应用到您的程序中。

  当我们谈论自由软件时，我们指的是自由，而不是价格。我们的通用公共许可证旨在确保您有发布自由软件副本的自由（如果您愿意，可以收取费用），确保您能收到源代码或者在您需要时能获取它，确保您能修改软件或在新的自由程序中使用其中的片段，并且确保您知道您可以做这些事情。

  为了保护您的权利，我们需要防止他人否认您的这些权利或者要求您放弃这些权利。因此，如果您发布此软件的副本或者修改它，您就承担了某些责任：尊重他人的自由的责任。

  例如，如果您发布此类程序的副本，无论是免费的还是收费的，您必须将您所享有的相同自由传递给接收者。您必须确保他们也能收到或获取源代码。并且您必须向他们展示这些条款，使他们知道自己的权利。

  使用GNU GPL的开发者通过两个步骤保护您的权利：(1) 声明软件的版权，(2) 向您提供本许可证，赋予您复制、发布和/或修改软件的法律许可。

  为了保护开发者和作者，GPL明确说明此自由软件没有任何保证。为了用户和作者的利益，GPL要求修改版被标记为已更改，以便不会将其问题误归于先前版本的作者。

  某些设备被设计为拒绝用户安装或运行其内部软件的修改版，尽管制造商可以这样做。这从根本上与保护用户修改软件的自由的目标不相容。此类滥用的系统性模式出现在个人使用的产品领域，这恰恰是最不可接受的。因此，我们设计了这版GPL来禁止这些产品的这种做法。如果此类问题在其他领域大量出现，我们准备在GPL的未来版本中将此条款扩展到那些领域，以保护用户的自由。

  最后，每个程序都不断受到软件专利的威胁。国家不应允许专利限制通用计算机上软件的开发和使用，但在那些允许的国家中，我们希望避免应用于自由程序的专利可能使其实际上变为专有的危险。为了防止这种情况，GPL确保专利不能被用来使程序非自由。

  以下是关于复制、发布和修改的精确条款和条件。

                       条款和条件

  0. 定义。

  "本许可证"指GNU通用公共许可证第三版。

  "版权"也指适用于其他类型作品的类似版权的法律，如半导体掩模。

  "本程序"指根据本许可证许可的任何受版权保护的作品。每个被许可人都被称为"您"。"被许可人"和"接收者"可以是个人或组织。

  "修改"一个作品意味着以需要版权许可的方式复制或改编该作品的全部或部分，而不是简单地制作一个精确的副本。由此产生的作品被称为先前作品的"修改版"或"基于"先前作品的作品。

  "涵盖作品"指未修改的程序或基于该程序的作品。

  "传播"一个作品意味着未经许可就会在适用的版权法下直接或间接地构成侵权的任何行为，除了在计算机上执行它或修改私人副本。传播包括复制、分发（无论是否修改）、向公众提供，在某些国家还包括其他活动。

  "传递"一个作品意味着任何使其他方能够制作或接收副本的传播行为。仅仅通过计算机网络与用户交互，而没有传输副本，不构成传递。

  交互式用户界面显示"适当的法律声明"，其中包括一个方便且醒目的特性，它(1)显示适当的版权声明，以及(2)告诉用户对作品没有保证（除非提供了保证），被许可人可以根据本许可证传递作品，以及如何查看本许可证的副本。如果界面呈现用户命令或选项的列表，如菜单，那么列表中的突出项目符合此标准。

  1. 源代码。

  作品的"源代码"指进行修改时首选的作品形式。"目标代码"指任何非源代码形式的作品。

  "标准接口"指由公认的标准机构定义的官方标准中的接口，或者为特定编程语言指定的接口，这些接口在使用该语言的开发者中被广泛使用。

  可执行作品的"系统库"不包括整个作品，而是包括(a)以通常形式与主要组件一起打包但不是该主要组件的一部分的任何内容，以及(b)仅用于与主要组件一起使用或实现标准接口的内容，这些接口的实现以源代码形式向公众提供。在这种情况下，"主要组件"指可执行作品运行的特定操作系统（如果有）的主要基本组件（内核、窗口系统等），或用于生成作品的编译器，或用于运行它的目标代码解释器。

  目标代码形式作品的"对应源代码"指生成、安装和（对于可执行作品）运行目标代码以及修改作品所需的所有源代码，包括控制这些活动的脚本。但是，它不包括作品的系统库，或在执行这些活动时未修改但使用的通用工具或普遍可用的自由程序。例如，对应源代码包括与作品源文件相关的接口定义文件，以及作品专门设计依赖的共享库和动态链接子程序的源代码，如通过密切的数据通信或这些子程序与作品其他部分之间的控制流。

  对应源代码不需要包括用户可以从对应源代码的其他部分自动再生的任何内容。

  源代码形式作品的对应源代码就是该作品本身。

  2. 基本许可。

  根据本许可证授予的所有权利在程序的版权期限内有效，并且在满足所述条件的情况下是不可撤销的。本许可证明确确认您无限制地私下运行未修改的程序。如果您的传递涵盖作品的输出仅在您将输出内容作为涵盖作品的一部分进行传递时才受本许可证约束。本许可证承认您的合理使用或等同于版权法规定的其他权利。

  只要您的许可证在其他方面仍然有效，您可以无条件地制作、运行和传播您不传递的涵盖作品。您可以将涵盖作品传递给他人，仅为了让他们专门为您进行修改，或为您提供运行这些作品的设施，前提是您在不传递的情况下遵守本许可证的条款。因此，那些为您制作或运行涵盖作品的人必须在您的指导和控制下，在您的专属使用下这样做，禁止他们在与您的关系之外制作您受版权保护材料的副本。

  在任何其他情况下，传递仅在下述条件下允许。不允许再许可；第10节使其不必要。

  3. 保护用户的合法权利免受反规避法律的影响。

  任何涵盖作品都不应被视为有效技术措施的一部分，根据任何适用法律履行1996年12月20日通过的WIPO版权条约第11条规定的义务，或类似法律禁止或限制规避此类措施。

  当您传递涵盖作品时，您放弃任何禁止规避技术措施的法律权力，但仅限于此类规避通过对涵盖作品行使本许可证下的权利而实现的范围，并且您否认任何限制操作或修改作品的意图，作为对作品用户的强制执行您或第三方禁止规避技术措施的法律权利的手段。

  4. 传递逐字副本。

  您可以以任何媒介传递程序源代码的逐字副本，只要您显著且适当地在每个副本上发布适当的版权声明；保持所有声明本许可证和根据第7节添加的任何非许可条款适用于代码的完整性；保持所有关于不提供任何保证的声明的完整性；并给所有接收者一份本许可证的副本以及程序。

  您可以为您传递的每个副本收取任何价格或不收费，您也可以提供支持或保修保护以收取费用。

  5. 传递修改版源代码。

  您可以根据第4节的条款传递基于程序的作品或从程序中产生的修改，前提是您还满足以下所有条件：

    a) 作品必须带有显著的声明，说明您修改了它，并给出相关日期。

    b) 作品必须带有显著的声明，说明它是根据本许可证和根据第7节添加的任何条件发布的。此要求修改了第4节的要求，以"保持所有声明的完整性"。

    c) 您必须根据本许可证将整个作品作为整体许可给任何拥有副本的人。因此，本许可证将与任何适用的第7节附加条款一起，适用于整个作品及其所有部分，无论它们如何打包。本许可证不允许以任何其他方式许可作品，但不会使您通过单独收到的任何此类许可无效。

    d) 如果作品有交互式用户界面，每个界面都必须显示适当的法律声明；但是，如果程序有不显示适当法律声明的交互式界面，您的作品不需要使它们显示。

  涵盖作品与其他单独且独立的作品的汇编，这些作品本身不是涵盖作品的扩展，并且不与涵盖作品组合以形成更大的程序，在存储或分发媒介上，如果汇编及其产生的版权不用于限制汇编用户的访问或法律权利超出单个作品允许的范围，则称为"聚合"。在聚合中包含涵盖作品不会使本许可证适用于聚合的其他部分。

  6. 传递非源代码形式。

  您可以根据第4和5节的条款以目标代码形式传递涵盖作品，前提是您还以下列方式之一传递机器可读的对应源代码：

    a) 在物理产品（包括物理分发媒介）中或上传递目标代码，并将对应源代码固定在通常用于软件交换的耐用物理媒介上。

    b) 在物理产品（包括物理分发媒介）中或上传递目标代码，并附带有效期至少三年且只要您为该产品型号提供备件或客户支持的书面报价，向拥有目标代码的任何人提供(1)通常用于软件交换的耐用物理媒介上的对应源代码副本，价格不超过您实际执行此源代码传递的合理成本，或(2)从网络服务器免费访问对应源代码的途径。

    c) 将目标代码的单个副本与提供对应源代码的书面报价副本一起传递。此替代方案仅偶尔且非商业性地允许，并且仅当您收到带有根据第6b节提供的报价的目标代码时。

    d) 通过提供从指定地点（免费或收费）访问目标代码来传递目标代码，并以相同方式通过相同地点提供对应源代码的同等访问，无需额外收费。您不需要要求接收者与对应源代码一起复制目标代码。如果复制目标代码的地点是网络服务器，对应源代码可能在另一个支持同等复制设施的服务器上（由您或第三方操作），前提是您在目标代码旁边保持明确的方向，指明在哪里找到对应源代码。无论对应源代码位于哪个服务器上，您都有义务确保它在满足这些要求所需的时间内可用。

    e) 使用点对点传输传递目标代码，前提是您告知其他对等体目标代码和作品的对应源代码根据第6d节向公众免费提供的位置。

  目标代码的"可分离部分"，其源代码从对应源代码中排除为系统库，不需要包含在传递目标代码作品中。

  "用户产品"是(1)"消费品"，即任何通常用于个人、家庭或家居用途的有形个人财产，或(2)为纳入住宅而设计或销售的任何物品。在确定产品是否为消费品时，有疑问的情况应解释为涵盖。对于特定用户收到的特定产品，"正常使用"指该类产品的典型或常见用途，无论特定用户的状态或特定用户实际使用、期望使用或预期使用产品的方式如何。产品是消费品，无论该产品是否有实质性商业、工业或非消费者用途，除非此类用途代表该产品的唯一重要使用模式。

  用户产品的"安装信息"指任何方法、程序和授权密钥或其他信息，这些信息是在用户产品中安装和执行涵盖作品的修改版本的对应源代码的修改版本所必需的。信息必须足以确保修改后的目标代码的继续功能在任何情况下都不会仅仅因为进行了修改而被阻止或干扰。

  如果您根据本节在用户产品中或随用户产品，或专门用于用户产品中使用，传递目标代码作品，并且传递发生作为交易的一部分，其中用户产品的拥有和使用权永久或在一定期限内转让给接收者（无论交易如何描述），根据本节传递的对应源代码必须附带安装信息。但是，如果您或任何第三方都没有保留在用户产品上安装修改目标代码的能力（例如，作品已安装在ROM中），则此要求不适用。

  提供安装信息的要求不包括继续为接收者修改或安装的作品或修改后的用户产品提供支持服务、保修或更新的要求。当修改本身对网络的运行产生重大不利影响或违反网络通信的规则和协议时，可以拒绝网络访问。

  根据本节传递的对应源代码和提供的安装信息必须采用公开记录的格式（并且以源代码形式向公众提供实现），并且不得要求特殊密码或密钥来解包、阅读或复制。

  7. 附加条款。

  "附加许可"是通过从本许可证的一个或多个条件中作出例外来补充本许可证条款的条款。适用于整个程序的附加许可应被视为包含在本许可证中，只要它们在适用法律下有效。如果附加许可仅适用于程序的一部分，则该部分可以根据这些许可单独使用，但整个程序仍受本许可证的约束，而不考虑附加许可。

  当您传递涵盖作品的副本时，您可以选择从该副本或其任何部分中删除任何附加许可。（附加许可可能要求在某些情况下修改时将其自身删除。）您可以在您添加到涵盖作品的材料上放置附加许可，对于这些材料您拥有或可以授予适当的版权许可。

  尽管本许可证有任何其他规定，对于您添加到涵盖作品的材料，您可以（如果获得该材料的版权持有人授权）用以下条款补充本许可证的条款：

    a) 拒绝提供保证或限制责任，与本许可证的第15和16节的条款不同；或

    b) 要求保留特定的合理法律声明或该材料中的作者归属，或在作品显示的适当法律声明中；或

    c) 禁止歪曲该材料的来源，或要求以合理方式标记修改版本，使其与原始版本不同；或

    d) 限制为宣传目的使用该材料的许可人或作者的名称；或

    e) 拒绝授予根据商标法使用某些商品名称、商标或服务标志的权利；或

    f) 要求任何传递该材料（或其修改版本）的人通过对接收者承担这些合同责任的许可协议向许可人和作者提供赔偿，这些责任直接强加于这些许可人和作者。

  所有其他非许可性附加条款都被视为第10节意义上的"进一步限制"。如果您收到的程序或其任何部分包含声明它受本许可证约束以及进一步限制的条款，您可以删除该条款。如果许可文件包含进一步限制但允许根据本许可证再许可或传递，您可以添加受该许可文件条款约束的涵盖作品材料，前提是进一步限制在此类再许可或传递中不存在。

  如果您根据本节向涵盖作品添加条款，您必须在相关源文件中放置适用于这些文件的附加条款的声明，或指明在哪里可以找到适用条款的通知。

  附加条款，无论是许可性的还是非许可性的，可以以单独书面许可的形式说明，或作为例外情况说明；上述要求适用于任何一种方式。

  8. 终止。

  除非在本许可证明确规定的条件下，否则您不得传播或修改涵盖作品。任何以其他方式传播或修改它的尝试都是无效的，并将自动终止您在本许可证下的权利（包括根据第11节第三段授予的任何专利许可）。

  然而，如果您停止所有违反本许可证的行为，则您从特定版权持有人获得的许可将被恢复(a)临时恢复，除非且直到版权持有人明确且最终终止您的许可，以及(b)永久恢复，如果版权持有人未能在停止违反行为后60天内通过某种合理方式通知您违反行为。

  此外，如果版权持有人通过某种合理方式通知您违反行为，这是您第一次收到该持有人关于您违反本许可证（对任何作品）的通知，并且您在收到通知后30天内纠正了违反行为，则您从该特定版权持有人获得的许可将被永久恢复。

  终止您的权利根据本节不会终止那些根据本许可证从您那里收到副本或权利的各方的许可。如果您的权利已被终止且未永久恢复，您没有资格根据第10节获得相同材料的新许可。

  9. 接受不需要拥有副本。

  您不需要接受本许可证即可接收或运行程序的副本。仅仅因使用点对点传输接收副本而发生的涵盖作品的辅助传播也不需要接受。然而，除了本许可证之外，没有其他任何东西授予您传播或修改任何涵盖作品的许可。如果您不接受本许可证，这些行为将侵犯版权。因此，通过修改或传播涵盖作品，您表明您接受本许可证这样做。

  10. 下游接收者的自动许可。

  每次您传递涵盖作品时，接收者自动从原始许可人那里获得运行、修改和传播该作品的许可，受本许可证约束。您不负责强制第三方遵守本许可证。

  "实体交易"是转让组织的控制权或实质上所有资产，或分割组织或合并组织的交易。如果涵盖作品的传播是实体交易的结果，收到作品副本的每个交易方也获得该方的前任根据前一段可能拥有或可以授予的作品的任何和所有许可，以及从前任获得或可以获得对应源代码的拥有权，如果前任拥有它或可以通过合理努力获得它。

  您不得对行使本许可证授予的权利施加任何进一步的限制。例如，您不得对行使本许可证授予的权利征收许可费、特许权使用费或其他费用，您不得发起诉讼（包括交叉索赔或在诉讼中的反诉），指控制作、使用、销售、提供销售或进口程序或其任何部分侵犯任何专利权利。

  11. 专利。

  "贡献者"是授权根据本许可证使用程序或程序基于的作品的版权持有人。因此许可的作品被称为贡献者的"贡献者版本"。

  贡献者的"基本专利权利"是贡献者拥有或控制的所有专利权利，无论是已获得的还是将来获得的，这些权利将通过某种方式，被本许可证允许的制作、使用或销售其贡献者版本所侵犯，但不包括仅因进一步修改贡献者版本而被侵犯的权利。为了本定义的目的，"控制"包括以符合本许可证要求的方式授予专利再许可的权利。

  每个贡献者根据贡献者的基本专利权利授予您非独占的、全球范围的、免版税的专利许可，以制作、使用、销售、提供销售、进口以及运行、修改和传播其贡献者版本的内容。

  在以下三段中，"专利许可"是任何明确协议或承诺，无论如何命名，不执行专利（如明确允许实践专利或不起诉专利侵权的协议）。向一方"授予"此类专利许可意味着达成此类协议或承诺，不对该方执行专利。

  如果您在知情的情况下传递涵盖作品，依赖于某个专利许可，而作品的对应源代码不能通过网络服务器或其他易于访问的方式免费供任何人根据本许可证复制，那么您必须(1)使对应源代码可以访问，或(2)安排剥夺自己对该特定作品的专利许可的利益，或(3)以符合本许可证要求的方式安排将专利许可扩展到下游接收者。"在知情的情况下依赖"意味着您实际知道，如果没有专利许可，您在某个国家传递涵盖作品，或接收者在某个国家使用涵盖作品，将侵犯该国家的一项或多项可识别专利，而您有理由相信这些专利是有效的。

  如果根据单一交易或安排或与之相关，您传递涵盖作品，或通过促成其传递而传播涵盖作品，并向接收作品的某些方授予专利许可，授权他们使用、传播、修改或传递涵盖作品的特定副本，则您授予的专利许可自动扩展到涵盖作品和基于它的所有接收者。

  专利许可是"歧视性的"，如果它不包括本许可证明确授予的一项或多项权利的范围，禁止行使这些权利，或以不行使这些权利为条件。如果您与从事软件分发业务的第三方达成协议，根据您传递涵盖作品的程度向第三方付款，并且根据该协议，第三方向任何将从您那里接收涵盖作品的方授予专利许可(a)与您传递的涵盖作品的副本（或基于这些副本制作的副本）相关，或(b)主要针对包含涵盖作品的特定产品或汇编，则除非您在2007年3月28日之前达成该协议，否则您不得传递涵盖作品。

  本许可证中的任何内容都不应被解释为排除或限制任何默示许可或其他对侵权的抗辩，否则根据适用的专利法对您可用。

  12. 不放弃他人的自由。

  如果对您施加的条件（无论是通过法院命令、协议或其他方式）与本许可证的条件相矛盾，它们不会免除您遵守本许可证的条件。如果您不能以同时满足本许可证的义务和任何其他相关义务的方式传递涵盖作品，那么您可能根本不能传递它。例如，如果您同意的条款要求您从那些您传递程序的人那里收取版税以进一步传递，那么唯一能够同时满足这些条款和本许可证的方式就是完全避免传递程序。

  13. 与GNU Affero通用公共许可证一起使用。

  尽管本许可证有任何其他规定，您有权将任何涵盖作品与根据GNU Affero通用公共许可证第3版许可的作品链接或组合成单个组合作品，并传递由此产生的作品。本许可证的条款将继续适用于涵盖作品的部分，但GNU Affero通用公共许可证第13节关于通过网络交互的要求将适用于组合作品。

  14. 本许可证的修订版。

  自由软件基金会可能会不时发布GNU通用公共许可证的修订版和/或新版本。这些新版本在精神上将类似于当前版本，但可能在细节上有所不同，以解决新的问题或关切。

  每个版本都有一个区别性的版本号。如果程序指定某个编号版本的GNU通用公共许可证"或任何更新的版本"适用于它，您可以选择遵循该版本或自由软件基金会发布的任何更新版本的条款和条件。如果程序没有指定GNU通用公共许可证的版本号，您可以选择自由软件基金会曾经发布的任何版本。

  如果程序指定代理可以决定哪些GNU通用公共许可证的未来版本可以使用，则该代理的公开接受某个版本的声明永久授权您为程序选择该版本。

  更新的许可证版本可能会给您额外或不同的许可。然而，没有额外的义务强加给任何作者或版权持有人，因为您选择遵循更新的版本。

  15. 免责声明。

  在适用法律允许的范围内，对程序没有任何保证。除非另有书面说明，版权持有人和/或其他方"按原样"提供程序，没有任何形式的保证，无论是明示的还是暗示的，包括但不限于对适销性和特定用途适用性的暗示保证。有关程序的质量和性能的全部风险由您承担。如果程序被证明有缺陷，您承担所有必要的服务、修理或更正的费用。

  16. 责任限制。

  在任何情况下，除非适用法律要求或书面同意，任何版权持有人或任何根据上述许可修改和/或传递程序的其他方都不对您的损害负责，包括任何一般的、特殊的、偶然的或后果性的损害，这些损害源于使用或无法使用程序（包括但不限于数据丢失或数据被渲染不准确或您或第三方遭受的损失或程序无法与任何其他程序一起运行），即使该持有人或其他方已被告知此类损害的可能性。

  17. 第15和16节的解释。

  如果上述免责声明和责任限制不能根据其条款在当地获得法律效力，审查法院应适用最接近于绝对放弃与程序相关的所有民事责任的当地法律，除非保证或责任承担伴随着程序的副本以换取费用。

                     条款和条件结束

            如何将这些条款应用到您的新程序

  如果您开发了一个新程序，并希望它对公众有最大可能的用处，实现这一目标的最佳方式是使其成为自由软件，每个人都可以在这些条款下重新分发和修改它。

  为此，请将以下声明附加到程序上。最安全的做法是将它们放在每个源文件的开头，以最有效地说明排除保证；每个文件至少应该有"版权"行和指向完整声明的指针。

    <一行给出程序的名称和它做什么的简短描述>
    版权所有 (C) <年份> <作者姓名>

    本程序是自由软件：您可以根据GNU通用公共许可证的条款重新分发和/或修改它，
    该许可证由自由软件基金会发布，版本为第3版或（由您选择）任何更新的版本。

    本程序的分发希望它会有用，但没有任何保证；甚至没有对适销性或特定用途适用性的暗示保证。
    详情请参阅GNU通用公共许可证。

    您应该已经收到了一份GNU通用公共许可证的副本。如果没有，请参见 <https://www.gnu.org/licenses/>。

  还要添加有关如何通过电子和纸质邮件联系您的信息。

  如果程序进行终端交互，使其在交互模式下启动时输出如下简短声明：

    <程序> 版权所有 (C) <年份> <作者姓名>
    本程序绝对没有保证；有关详情，请输入"show w"。
    这是自由软件，欢迎您在特定条件下重新分发它；有关详情，请输入"show c"。

  假设的命令"show w"和"show c"应显示通用公共许可证的相应部分。当然，您的程序的命令可能不同；对于GUI界面，您可以使用"关于框"。

  如果需要，您还应该让您的雇主（如果您是程序员）或学校（如果有）签署该程序的"版权放弃声明"。有关这方面的更多信息以及如何应用和遵循GNU GPL，请参见 <https://www.gnu.org/licenses/>。

  GNU通用公共许可证不允许将您的程序并入专有程序。如果您的程序是子例程库，您可能认为允许专有应用程序链接到您的库会更有用。如果这是您想要做的，请使用GNU宽通用公共许可证而不是本许可证。但请先阅读 <https://www.gnu.org/licenses/why-not-lgpl.html>。
