diff --git a/self-extractors/audience/LICENSE b/self-extractors/audience/LICENSE
index a41bc1d..5a947e9 100644
--- a/self-extractors/audience/LICENSE
+++ b/self-extractors/audience/LICENSE
@@ -2,14 +2,14 @@
 BINDING AGREEMENT BETWEEN Audience, Inc. ("LICENSOR") AND
 YOU OR THE LEGAL ENTITY YOU REPRESENT ("You" or its possessive, "Your"). BY
 TYPING "I ACCEPT" WHERE INDICATED YOU ACKNOWLEDGE THAT YOU HAVE READ THIS
-AGREEMENT, UNDERSTAND IT AND AGREE TO BE BOUND BY ITS TERMS AND CONDITIONS. IF
-YOU DO NOT AGREE TO THESE TERMS YOU MUST DISCONTINUE THE INSTALLATION PROCESS
-AND YOU SHALL NOT USE THE SOFTWARE OR RETAIN ANY COPIES OF THE SOFTWARE OR
-DOCUMENTATION. ANY USE OR POSSESSION OF THE SOFTWARE BY YOU IS SUBJECT TO THE
-TERMS AND CONDITIONS SET FORTH IN THIS AGREEMENT. IF THE SOFTWARE IS INSTALLED
-ON A COMPUTER OWNED BY A CORPORATION OR OTHER LEGAL ENTITY, THEN YOU REPRESENT
-AND WARRANT THAT YOU HAVE THE AUTHORITY TO BIND SUCH ENTITY TO THE TERMS AND
-CONDITIONS OF THIS AGREEMENT.
+AGREEMENT, UNDERSTAND IT AND AGREE TO BE BOUND BY ITS TERMS AND CONDITIONS.
+IF YOU DO NOT AGREE TO THESE TERMS YOU MUST DISCONTINUE THE INSTALLATION
+PROCESS AND YOU SHALL NOT USE THE SOFTWARE OR RETAIN ANY COPIES OF THE
+SOFTWARE OR DOCUMENTATION. ANY USE OR POSSESSION OF THE SOFTWARE BY YOU IS
+SUBJECT TO THE TERMS AND CONDITIONS SET FORTH IN THIS AGREEMENT. IF THE
+SOFTWARE IS INSTALLED ON A COMPUTER OWNED BY A CORPORATION OR OTHER LEGAL
+ENTITY, THEN YOU REPRESENT AND WARRANT THAT YOU HAVE THE AUTHORITY TO BIND
+SUCH ENTITY TO THE TERMS AND CONDITIONS OF THIS AGREEMENT.
 
    1.  Special Definitions
 
@@ -29,77 +29,78 @@
           Android Enabled Device.
 
       d.  The term "Authorized Android Enabled Device Software" means a
-          packaged build for Authorized Android Enabled Devices, consisting of
-          files suitable for installation on an Authorized Android Enabled
+          packaged build for Authorized Android Enabled Devices, consisting
+          of files suitable for installation on an Authorized Android Enabled
           Device using a mechanism such as fastboot mode or recovery mode.
 
    2.  License Grant
 
       a.  Subject to the terms of this Agreement, Licensor hereby grants to
           You, free of charge, a non-exclusive, non-sublicensable,
-          non-transferable, limited license, during the term of this Agreement,
-          to download, install and use the Software internally in
+          non-transferable, limited license, during the term of this
+          Agreement, to download, install and use the Software internally in
           machine-readable (i.e., object code) form and the Documentation for
           non-commercial use on an Authorized Android Enabled Device and
           non-commercial redistribution of the Authorized Android Enabled
-          Device Software (the "Limited Purpose"). You may grant your end users
-          the right to use the Software for the Limited Purpose. The license to
-          the Software granted to You hereunder is solely for the Limited
-          Purpose set forth in this section, and the Software shall not be used
-          for any other purpose.
+          Device Software (the "Limited Purpose"). You may grant your end
+          users the right to use the Software for the Limited Purpose. The
+          license to the Software granted to You hereunder is solely for the
+          Limited Purpose set forth in this section, and the Software shall
+          not be used for any other purpose.
 
    3.  Restrictions
 
       a.  Retention of Rights. The entire right, title and interest in the
-          Software shall remain with Licensor and, unless specified in writing
-          hereunder, no rights are granted to any of the Software. Except for
-          the right to use the Software for the Limited Purpose, the delivery
-          of the Software to You does not convey to You any intellectual
-          property rights in the Software, including, but not limited to any
-          rights under any patent, trademark, copyright, or trade secret.
-          Neither the delivery of the Software to You nor any terms set forth
-          herein shall be construed to grant to You, either expressly, by
-          implication or by way of estoppel, any license under any patents or
-          other intellectual property rights covering or relating to any other
-          product or invention or any combination of the Software with any
-          other product. Any rights not expressly granted to You herein are
-          reserved by Licensor.
+          Software shall remain with Licensor and, unless specified in
+          writing hereunder, no rights are granted to any of the Software.
+          Except for the right to use the Software for the Limited Purpose,
+          the delivery of the Software to You does not convey to You any
+          intellectual property rights in the Software, including, but not
+          limited to any rights under any patent, trademark, copyright, or
+          trade secret.  Neither the delivery of the Software to You nor any
+          terms set forth herein shall be construed to grant to You, either
+          expressly, by implication or by way of estoppel, any license under
+          any patents or other intellectual property rights covering or
+          relating to any other product or invention or any combination of
+          the Software with any other product. Any rights not expressly
+          granted to You herein are reserved by Licensor.
 
       b.  No Commercialization or Distribution of the Software and
           Documentation. Except as expressly provided in Section 2 of this
-          Agreement, You shall have no right to (i) copy, disclose, distribute,
-          publically perform, publically display, transfer, alter, modify,
-          translate, disassemble, decompile, reverse engineer, or adapt the
-          Software and Documentation, or any portion thereof, or create any
-          derivative works based thereon; (ii) rent, lease, assign, sublicense,
-          resell, disclose or otherwise transfer the Software and Documentation
-          in whole or in part to any third party (iii) use the Software and
-          Documentation except for the Limited Purpose, (iv) remove or alter
-          any of the copyright or proprietary notices contained in any of the
-          Software and Documentation. For the purposes of clarity, nothing in
-          this Agreement prohibits You from making and distributing Android
-          Applications under commercial or non-commercial terms, provided that
-          You shall not contain, incorporate, and/or compile the Software or
-          any of its derivative works, in whole or in part, into Your Android
-          Applications and/or any software/devices created by You or by third
-          parties acting on Your behalf. You and any such third party shall
-          comply with all of the terms and conditions of this Agreement.
+          Agreement, You shall have no right to (i) copy, disclose,
+          distribute, publically perform, publically display, transfer,
+          alter, modify, translate, disassemble, decompile, reverse engineer,
+          or adapt the Software and Documentation, or any portion thereof, or
+          create any derivative works based thereon; (ii) rent, lease,
+          assign, sublicense, resell, disclose or otherwise transfer the
+          Software and Documentation in whole or in part to any third party
+          (iii) use the Software and Documentation except for the Limited
+          Purpose, (iv) remove or alter any of the copyright or proprietary
+          notices contained in any of the Software and Documentation. For the
+          purposes of clarity, nothing in this Agreement prohibits You from
+          making and distributing Android Applications under commercial or
+          non-commercial terms, provided that You shall not contain,
+          incorporate, and/or compile the Software or any of its derivative
+          works, in whole or in part, into Your Android Applications and/or
+          any software/devices created by You or by third parties acting on
+          Your behalf. You and any such third party shall comply with all of
+          the terms and conditions of this Agreement.
 
       c.  No Reverse Engineering. Except for any portions of the Software
-          provided to You in source code format and except for any third party
-          code distributed with the Software that is licensed under contrary
-          terms, You will not reverse engineer, disassemble,
-          decompile, or translate the Software, or otherwise attempt to derive
-          the source code version of the Software, except if and to the extent
-          expressly permitted under any applicable law.
+          provided to You in source code format and except for any third
+          party code distributed with the Software that is licensed under
+          contrary terms, You will not reverse engineer, disassemble,
+          decompile, or translate the Software, or otherwise attempt to
+          derive the source code version of the Software, except if and to
+          the extent expressly permitted under any applicable law.
 
-      d.  Third Party Software. You agree that Android may contain third party
-          software. You agree that you may not distribute such third party
-          software for any purpose without appropriate licenses from the
-          applicable third party or parties.
+      d.  Third Party Software. You agree that Android may contain third
+          party software. You agree that you may not distribute such third
+          party software for any purpose without appropriate licenses from
+          the applicable third party or parties.
 
-      e.  No Transfer or Assignment. You shall not assign any of its rights or
-          obligations under this Agreement. Any attempted assignment in
+      e.  No Transfer or Assignment. You shall not assign any of its rights
+          or obligations under this Agreement. Any attempted assignment in
           contravention of this Section shall be void.
 
    4.  Indemnity
@@ -107,79 +108,81 @@
       a.  You agree to indemnify and hold harmless Licensor and its officers,
           directors, customers, employees and successors and assigns (each an
           "Indemnified Party") against any and all claims, demands, causes of
-          action, losses, liabilities, damages, costs and expenses, incurred by
-          the Indemnified Party (including but not limited to costs of defense,
-          investigation and reasonable attorney's fees) arising out of,
-          resulting from or related to (i) any software, products,
+          action, losses, liabilities, damages, costs and expenses, incurred
+          by the Indemnified Party (including but not limited to costs of
+          defense, investigation and reasonable attorney's fees) arising out
+          of, resulting from or related to (i) any software, products,
           documentation, content, materials or derivative works created or
           developed by You using the Software which causes an infringement of
           any patent, copyright, trademark, trade secret, or other property,
           publicity or privacy rights of any third parties arising in any
-          jurisdiction anywhere in the world, (ii) the download, distribution,
-          installation, storage, execution, use or transfer of such software,
-          products, documentation, content, materials or derivative works by
-          any person or entity, and/or (iii) any breach of this Agreement by
-          You. If requested by an Indemnified Party, You agree to defend such
-          Indemnified Party in connection with any third party claims, demands,
-          or causes of action resulting from, arising out of or in connection
-          with any of the foregoing.
+          jurisdiction anywhere in the world, (ii) the download,
+          distribution, installation, storage, execution, use or transfer of
+          such software, products, documentation, content, materials or
+          derivative works by any person or entity, and/or (iii) any breach
+          of this Agreement by You. If requested by an Indemnified Party, You
+          agree to defend such Indemnified Party in connection with any third
+          party claims, demands, or causes of action resulting from, arising
+          out of or in connection with any of the foregoing.
 
    5.  Limitation of Liability
 
       a.  TO THE MAXIMUM EXTENT PERMITTED UNDER APPLICABLE LAWS, UNDER NO
           CIRCUMSTANCES, INCLUDING WITHOUT LIMITATION NEGLIGENCE, SHALL
-          LICENSOR, ITS AFFILIATES AND/OR ITS DIRECTORS, OFFICERS, EMPLOYEES OR
-          AGENTS BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, PUNITIVE OR
-          CONSEQUENTIAL DAMAGES (INCLUDING BUT NOT LIMITED TO DAMAGES FOR LOSS
-          OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS
-          INFORMATION AND THE LIKE) ARISING OUT OF OR IN CONNECTION WITH THE
-          SOFTWARE OR ANY DOWNLOAD, INSTALLATION OR USE OF, OR INABILITY TO
-          USE, THE SOFTWARE, EVEN IF LICENSOR HAS BEEN ADVISED OF THE
-          POSSIBILITY OF SUCH DAMAGES. SOME JURISDICTIONS DO NOT ALLOW THE
-          LIMITATION OR EXCLUSION OF LIABILITY FOR INCIDENTAL OR CONSEQUENTIAL
-          DAMAGES SO THE ABOVE LIMITATION OR EXCLUSION MAY NOT APPLY OR MAY BE
-          LIMITED. IN NO EVENT SHALL LICENSOR'S TOTAL AGGREGATE LIABILITY TO
-          YOU FOR ANY AND ALL DAMAGES, LOSSES, CLAIMS AND CAUSES OF ACTIONS
-          (WHETHER IN CONTRACT, TORT, INCLUDING NEGLIGENCE, INDEMNIFICATION OR
-          OTHERWISE) EXCEED ONE HUNDRED U.S. DOLLARS (US$100). THE LIMITATIONS
-          SET FORTH IN THIS PARAGRAPH SHALL BE DEEMED TO APPLY TO THE MAXIMUM
-          EXTENT PERMITTED BY APPLICABLE LAW. THE PARTIES HAVE FULLY CONSIDERED
-          THE FOREGOING ALLOCATION OF RISK AND FIND IT REASONABLE, AND THAT THE
-          FOREGOING LIMITATIONS IN THIS PARAGRAPH ARE AN ESSENTIAL BASIS OF
-          THE BARGAIN BETWEEN THE PARTIES.
+          LICENSOR, ITS AFFILIATES AND/OR ITS DIRECTORS, OFFICERS,
+          EMPLOYEES OR AGENTS BE LIABLE FOR ANY INDIRECT, INCIDENTAL,
+          SPECIAL, PUNITIVE OR CONSEQUENTIAL DAMAGES (INCLUDING BUT NOT
+          LIMITED TO DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS
+          INTERRUPTION, LOSS OF BUSINESS INFORMATION AND THE LIKE) ARISING
+          OUT OF OR IN CONNECTION WITH THE SOFTWARE OR ANY DOWNLOAD,
+          INSTALLATION OR USE OF, OR INABILITY TO USE, THE SOFTWARE, EVEN IF
+          LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+          DAMAGES. SOME JURISDICTIONS DO NOT ALLOW THE LIMITATION OR
+          EXCLUSION OF LIABILITY FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES SO
+          THE ABOVE LIMITATION OR EXCLUSION MAY NOT APPLY OR MAY BE LIMITED.
+          IN NO EVENT SHALL LICENSOR'S TOTAL AGGREGATE LIABILITY TO YOU FOR
+          ANY AND ALL DAMAGES, LOSSES, CLAIMS AND CAUSES OF ACTIONS (WHETHER
+          IN CONTRACT, TORT, INCLUDING NEGLIGENCE, INDEMNIFICATION OR
+          OTHERWISE) EXCEED ONE HUNDRED U.S. DOLLARS (US$100). THE
+          LIMITATIONS SET FORTH IN THIS PARAGRAPH SHALL BE DEEMED TO APPLY TO
+          THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW. THE PARTIES HAVE
+          FULLY CONSIDERED THE FOREGOING ALLOCATION OF RISK AND FIND IT
+          REASONABLE, AND THAT THE FOREGOING LIMITATIONS IN THIS PARAGRAPH
+          ARE AN ESSENTIAL BASIS OF THE BARGAIN BETWEEN THE PARTIES.
 
    6.  No Warranty
 
-      a.  LICENSOR MAKES NO WARRANTIES, EXPRESS OR IMPLIED, WITH RESPECT TO THE
-          SOFTWARE AND DOCUMENTATION PROVIDED UNDER THIS AGREEMENT, INCLUDING
-          BUT NOT LIMITED TO ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A
-          PARTICULAR PURPOSE OR AGAINST INFRINGEMENT, OR ANY EXPRESS OR IMPLIED
-          WARRANTY ARISING OUT OF TRADE USAGE OR OUT OF A COURSE OF DEALING OR
-          COURSE OF PERFORMANCE. NOTHING CONTAINED IN THIS AGREEMENT SHALL BE
-          CONSTRUED AS A WARRANTY OR REPRESENTATION BY LICENSOR (I) AS TO THE
-          VALIDITY OR SCOPE OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL
-          PROPERTY RIGHT AND (II) THAT ANY MANUFACTURE OR USE WILL BE FREE FROM
-          INFRINGEMENT OF PATENTS, COPYRIGHTS OR OTHER INTELLECTUAL PROPERTY
-          RIGHTS OF OTHERS, AND IT SHALL BE THE SOLE RESPONSIBILITY OF YOU TO
-          MAKE SUCH DETERMINATION AS IS NECESSARY WITH RESPECT TO THE
-          ACQUISITION OF LICENSES UNDER PATENTS AND OTHER INTELLECTUAL PROPERTY
-          OF THIRD PARTIES. LICENSOR SHALL NOT HAVE ANY OBLIGATION TO PROVIDE
-          ANY TECHNICAL SUPPORT OF THE SOFTWARE UNDER THIS AGREEMENT.
+      a.  LICENSOR MAKES NO WARRANTIES, EXPRESS OR IMPLIED, WITH
+          RESPECT TO THE SOFTWARE AND DOCUMENTATION PROVIDED UNDER THIS
+          AGREEMENT, INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF
+          MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE OR AGAINST
+          INFRINGEMENT, OR ANY EXPRESS OR IMPLIED WARRANTY ARISING OUT OF
+          TRADE USAGE OR OUT OF A COURSE OF DEALING OR COURSE OF PERFORMANCE.
+          NOTHING CONTAINED IN THIS AGREEMENT SHALL BE CONSTRUED AS A
+          WARRANTY OR REPRESENTATION BY LICENSOR (I) AS TO THE VALIDITY OR
+          SCOPE OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT
+          AND (II) THAT ANY MANUFACTURE OR USE WILL BE FREE FROM INFRINGEMENT
+          OF PATENTS, COPYRIGHTS OR OTHER INTELLECTUAL PROPERTY RIGHTS OF
+          OTHERS, AND IT SHALL BE THE SOLE RESPONSIBILITY OF YOU TO MAKE SUCH
+          DETERMINATION AS IS NECESSARY WITH RESPECT TO THE ACQUISITION OF
+          LICENSES UNDER PATENTS AND OTHER INTELLECTUAL PROPERTY OF THIRD
+          PARTIES. Licensor SHALL NOT HAVE ANY OBLIGATION TO
+          PROVIDE ANY TECHNICAL SUPPORT OF THE SOFTWARE UNDER THIS AGREEMENT.
 
    7.  Term and Termination
 
       a.  This Agreement shall be effective on the date You accept this
           Agreement and shall remain in effect until terminated as provided
           herein. You may terminate the Agreement at any time by deleting and
-          destroying all copies of the Software and all related information in
-          Your possession or control. This Agreement terminates immediately and
-          automatically, with or without notice, if You fail to comply with any
-          provision hereof.  Additionally, Licensor may at any time terminate
-          this Agreement, without cause, upon notice to You. Upon termination
-          You must delete or destroy all copies of the Software in Your
-          possession, and the license granted to You in this Agreement shall
-          terminate. Sections 3, 4, 5, 6 and 8 shall survive the termination of
-          this Agreement.
+          destroying all copies of the Software and all related information
+          in Your possession or control. This Agreement terminates
+          immediately and automatically, with or without notice, if You fail
+          to comply with any provision hereof. Additionally, Licensor may at
+          any time terminate this Agreement, without cause, upon notice to
+          You. Upon termination You must delete or destroy all copies of the
+          Software in Your possession, and the license granted to You in this
+          Agreement shall terminate. Sections 3, 4, 5, 6 and 8 shall survive
+          the termination of this Agreement.
 
    8.  Miscellaneous
 
@@ -187,32 +190,33 @@
           accordance with the laws of the State of California without giving
           effect to its conflict of laws provisions. The United Nations
           Convention on Contracts for the International Sale of Goods is
-          expressly disclaimed and shall not apply. Any claim arising out of or
-          related to this Agreement must be brought exclusively in a federal or
-          state court located in Santa Clara County, California and You consent
-          to the jurisdiction and venue of such courts.
+          expressly disclaimed and shall not apply. Any claim arising out of
+          or related to this Agreement must be brought exclusively in a
+          federal or state court located in Santa Clara County, California
+          and You consent to the jurisdiction and venue of such courts.
 
       b.  Waiver and Severability. The failure of either party to require
           performance by the other party of any provision of this Agreement
           shall not affect the full right to require such performance at any
-          time thereafter; nor shall the waiver by either party of a breach of
-          any provision of this Agreement be taken or held to be a waiver of
-          the provision itself. Severability. If any provision of this
-          Agreement is unenforceable or invalid under any applicable law or is
-          so held by applicable court decision, such unenforceability or
+          time thereafter; nor shall the waiver by either party of a breach
+          of any provision of this Agreement be taken or held to be a waiver
+          of the provision itself. Severability. If any provision of this
+          Agreement is unenforceable or invalid under any applicable law or
+          is so held by applicable court decision, such unenforceability or
           invalidity shall not render this Agreement unenforceable or invalid
-          as a whole, and such provision shall be changed and interpreted so as
-          to best accomplish the objectives of such unenforceable or invalid
-          provision within the limits of applicable law or applicable court
-          decisions.
+          as a whole, and such provision shall be changed and interpreted so
+          as to best accomplish the objectives of such unenforceable or
+          invalid provision within the limits of applicable law or
+          applicable court decisions.
 
       c.  Amendment and Modification. This Agreement and any of its terms and
-          provisions may only be amended, modified, supplemented or waived in a
-          writing signed by both parties hereto.
+          provisions may only be amended, modified, supplemented or waived in
+          a writing signed by both parties hereto.
 
       d.  Compliance with Laws. You shall comply with all applicable laws,
           rules, and regulations in connection with its activities under this
           Agreement.
 
       e.  Entire Agreement. This Agreement completely and exclusively states
-          the agreement between You and Licensor regarding this subject matter.
+          the agreement between You and Licensor regarding this subject
+          matter.
diff --git a/self-extractors/broadcom/LICENSE b/self-extractors/broadcom/LICENSE
index 3f2a075..c100655 100644
--- a/self-extractors/broadcom/LICENSE
+++ b/self-extractors/broadcom/LICENSE
@@ -2,14 +2,14 @@
 BINDING AGREEMENT BETWEEN BROADCOM CORPORATION ("LICENSOR") AND
 YOU OR THE LEGAL ENTITY YOU REPRESENT ("You" or its possessive, "Your"). BY
 TYPING "I ACCEPT" WHERE INDICATED YOU ACKNOWLEDGE THAT YOU HAVE READ THIS
-AGREEMENT, UNDERSTAND IT AND AGREE TO BE BOUND BY ITS TERMS AND CONDITIONS. IF
-YOU DO NOT AGREE TO THESE TERMS YOU MUST DISCONTINUE THE INSTALLATION PROCESS
-AND YOU SHALL NOT USE THE SOFTWARE OR RETAIN ANY COPIES OF THE SOFTWARE OR
-DOCUMENTATION. ANY USE OR POSSESSION OF THE SOFTWARE BY YOU IS SUBJECT TO THE
-TERMS AND CONDITIONS SET FORTH IN THIS AGREEMENT. IF THE SOFTWARE IS INSTALLED
-ON A COMPUTER OWNED BY A CORPORATION OR OTHER LEGAL ENTITY, THEN YOU REPRESENT
-AND WARRANT THAT YOU HAVE THE AUTHORITY TO BIND SUCH ENTITY TO THE TERMS AND
-CONDITIONS OF THIS AGREEMENT.
+AGREEMENT, UNDERSTAND IT AND AGREE TO BE BOUND BY ITS TERMS AND CONDITIONS.
+IF YOU DO NOT AGREE TO THESE TERMS YOU MUST DISCONTINUE THE INSTALLATION
+PROCESS AND YOU SHALL NOT USE THE SOFTWARE OR RETAIN ANY COPIES OF THE
+SOFTWARE OR DOCUMENTATION. ANY USE OR POSSESSION OF THE SOFTWARE BY YOU IS
+SUBJECT TO THE TERMS AND CONDITIONS SET FORTH IN THIS AGREEMENT. IF THE
+SOFTWARE IS INSTALLED ON A COMPUTER OWNED BY A CORPORATION OR OTHER LEGAL
+ENTITY, THEN YOU REPRESENT AND WARRANT THAT YOU HAVE THE AUTHORITY TO BIND
+SUCH ENTITY TO THE TERMS AND CONDITIONS OF THIS AGREEMENT.
 
    1.  Special Definitions
 
@@ -29,77 +29,78 @@
           Android Enabled Device.
 
       d.  The term "Authorized Android Enabled Device Software" means a
-          packaged build for Authorized Android Enabled Devices, consisting of
-          files suitable for installation on an Authorized Android Enabled
+          packaged build for Authorized Android Enabled Devices, consisting
+          of files suitable for installation on an Authorized Android Enabled
           Device using a mechanism such as fastboot mode or recovery mode.
 
    2.  License Grant
 
       a.  Subject to the terms of this Agreement, Licensor hereby grants to
           You, free of charge, a non-exclusive, non-sublicensable,
-          non-transferable, limited license, during the term of this Agreement,
-          to download, install and use the Software internally in
+          non-transferable, limited license, during the term of this
+          Agreement, to download, install and use the Software internally in
           machine-readable (i.e., object code) form and the Documentation for
           non-commercial use on an Authorized Android Enabled Device and
           non-commercial redistribution of the Authorized Android Enabled
-          Device Software (the "Limited Purpose"). You may grant your end users
-          the right to use the Software for the Limited Purpose. The license to
-          the Software granted to You hereunder is solely for the Limited
-          Purpose set forth in this section, and the Software shall not be used
-          for any other purpose.
+          Device Software (the "Limited Purpose"). You may grant your end
+          users the right to use the Software for the Limited Purpose. The
+          license to the Software granted to You hereunder is solely for the
+          Limited Purpose set forth in this section, and the Software shall
+          not be used for any other purpose.
 
    3.  Restrictions
 
       a.  Retention of Rights. The entire right, title and interest in the
-          Software shall remain with Licensor and, unless specified in writing
-          hereunder, no rights are granted to any of the Software. Except for
-          the right to use the Software for the Limited Purpose, the delivery
-          of the Software to You does not convey to You any intellectual
-          property rights in the Software, including, but not limited to any
-          rights under any patent, trademark, copyright, or trade secret.
-          Neither the delivery of the Software to You nor any terms set forth
-          herein shall be construed to grant to You, either expressly, by
-          implication or by way of estoppel, any license under any patents or
-          other intellectual property rights covering or relating to any other
-          product or invention or any combination of the Software with any
-          other product. Any rights not expressly granted to You herein are
-          reserved by Licensor.
+          Software shall remain with Licensor and, unless specified in
+          writing hereunder, no rights are granted to any of the Software.
+          Except for the right to use the Software for the Limited Purpose,
+          the delivery of the Software to You does not convey to You any
+          intellectual property rights in the Software, including, but not
+          limited to any rights under any patent, trademark, copyright, or
+          trade secret.  Neither the delivery of the Software to You nor any
+          terms set forth herein shall be construed to grant to You, either
+          expressly, by implication or by way of estoppel, any license under
+          any patents or other intellectual property rights covering or
+          relating to any other product or invention or any combination of
+          the Software with any other product. Any rights not expressly
+          granted to You herein are reserved by Licensor.
 
       b.  No Commercialization or Distribution of the Software and
           Documentation. Except as expressly provided in Section 2 of this
-          Agreement, You shall have no right to (i) copy, disclose, distribute,
-          publically perform, publically display, transfer, alter, modify,
-          translate, disassemble, decompile, reverse engineer, or adapt the
-          Software and Documentation, or any portion thereof, or create any
-          derivative works based thereon; (ii) rent, lease, assign, sublicense,
-          resell, disclose or otherwise transfer the Software and Documentation
-          in whole or in part to any third party (iii) use the Software and
-          Documentation except for the Limited Purpose, (iv) remove or alter
-          any of the copyright or proprietary notices contained in any of the
-          Software and Documentation. For the purposes of clarity, nothing in
-          this Agreement prohibits You from making and distributing Android
-          Applications under commercial or non-commercial terms, provided that
-          You shall not contain, incorporate, and/or compile the Software or
-          any of its derivative works, in whole or in part, into Your Android
-          Applications and/or any software/devices created by You or by third
-          parties acting on Your behalf. You and any such third party shall
-          comply with all of the terms and conditions of this Agreement.
+          Agreement, You shall have no right to (i) copy, disclose,
+          distribute, publically perform, publically display, transfer,
+          alter, modify, translate, disassemble, decompile, reverse engineer,
+          or adapt the Software and Documentation, or any portion thereof, or
+          create any derivative works based thereon; (ii) rent, lease,
+          assign, sublicense, resell, disclose or otherwise transfer the
+          Software and Documentation in whole or in part to any third party
+          (iii) use the Software and Documentation except for the Limited
+          Purpose, (iv) remove or alter any of the copyright or proprietary
+          notices contained in any of the Software and Documentation. For the
+          purposes of clarity, nothing in this Agreement prohibits You from
+          making and distributing Android Applications under commercial or
+          non-commercial terms, provided that You shall not contain,
+          incorporate, and/or compile the Software or any of its derivative
+          works, in whole or in part, into Your Android Applications and/or
+          any software/devices created by You or by third parties acting on
+          Your behalf. You and any such third party shall comply with all of
+          the terms and conditions of this Agreement.
 
       c.  No Reverse Engineering. Except for any portions of the Software
-          provided to You in source code format and except for any third party
-          code distributed with the Software that is licensed under contrary
-          terms, You will not reverse engineer, disassemble,
-          decompile, or translate the Software, or otherwise attempt to derive
-          the source code version of the Software, except if and to the extent
-          expressly permitted under any applicable law.
+          provided to You in source code format and except for any third
+          party code distributed with the Software that is licensed under
+          contrary terms, You will not reverse engineer, disassemble,
+          decompile, or translate the Software, or otherwise attempt to
+          derive the source code version of the Software, except if and to
+          the extent expressly permitted under any applicable law.
 
-      d.  Third Party Software. You agree that Android may contain third party
-          software. You agree that you may not distribute such third party
-          software for any purpose without appropriate licenses from the
-          applicable third party or parties.
+      d.  Third Party Software. You agree that Android may contain third
+          party software. You agree that you may not distribute such third
+          party software for any purpose without appropriate licenses from
+          the applicable third party or parties.
 
-      e.  No Transfer or Assignment. You shall not assign any of its rights or
-          obligations under this Agreement. Any attempted assignment in
+      e.  No Transfer or Assignment. You shall not assign any of its rights
+          or obligations under this Agreement. Any attempted assignment in
           contravention of this Section shall be void.
 
    4.  Indemnity
@@ -107,79 +108,81 @@
       a.  You agree to indemnify and hold harmless Licensor and its officers,
           directors, customers, employees and successors and assigns (each an
           "Indemnified Party") against any and all claims, demands, causes of
-          action, losses, liabilities, damages, costs and expenses, incurred by
-          the Indemnified Party (including but not limited to costs of defense,
-          investigation and reasonable attorney's fees) arising out of,
-          resulting from or related to (i) any software, products,
+          action, losses, liabilities, damages, costs and expenses, incurred
+          by the Indemnified Party (including but not limited to costs of
+          defense, investigation and reasonable attorney's fees) arising out
+          of, resulting from or related to (i) any software, products,
           documentation, content, materials or derivative works created or
           developed by You using the Software which causes an infringement of
           any patent, copyright, trademark, trade secret, or other property,
           publicity or privacy rights of any third parties arising in any
-          jurisdiction anywhere in the world, (ii) the download, distribution,
-          installation, storage, execution, use or transfer of such software,
-          products, documentation, content, materials or derivative works by
-          any person or entity, and/or (iii) any breach of this Agreement by
-          You. If requested by an Indemnified Party, You agree to defend such
-          Indemnified Party in connection with any third party claims, demands,
-          or causes of action resulting from, arising out of or in connection
-          with any of the foregoing.
+          jurisdiction anywhere in the world, (ii) the download,
+          distribution, installation, storage, execution, use or transfer of
+          such software, products, documentation, content, materials or
+          derivative works by any person or entity, and/or (iii) any breach
+          of this Agreement by You. If requested by an Indemnified Party, You
+          agree to defend such Indemnified Party in connection with any third
+          party claims, demands, or causes of action resulting from, arising
+          out of or in connection with any of the foregoing.
 
    5.  Limitation of Liability
 
       a.  TO THE MAXIMUM EXTENT PERMITTED UNDER APPLICABLE LAWS, UNDER NO
           CIRCUMSTANCES, INCLUDING WITHOUT LIMITATION NEGLIGENCE, SHALL
-          LICENSOR, ITS AFFILIATES AND/OR ITS DIRECTORS, OFFICERS, EMPLOYEES OR
-          AGENTS BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, PUNITIVE OR
-          CONSEQUENTIAL DAMAGES (INCLUDING BUT NOT LIMITED TO DAMAGES FOR LOSS
-          OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS
-          INFORMATION AND THE LIKE) ARISING OUT OF OR IN CONNECTION WITH THE
-          SOFTWARE OR ANY DOWNLOAD, INSTALLATION OR USE OF, OR INABILITY TO
-          USE, THE SOFTWARE, EVEN IF LICENSOR HAS BEEN ADVISED OF THE
-          POSSIBILITY OF SUCH DAMAGES. SOME JURISDICTIONS DO NOT ALLOW THE
-          LIMITATION OR EXCLUSION OF LIABILITY FOR INCIDENTAL OR CONSEQUENTIAL
-          DAMAGES SO THE ABOVE LIMITATION OR EXCLUSION MAY NOT APPLY OR MAY BE
-          LIMITED. IN NO EVENT SHALL LICENSOR'S TOTAL AGGREGATE LIABILITY TO
-          YOU FOR ANY AND ALL DAMAGES, LOSSES, CLAIMS AND CAUSES OF ACTIONS
-          (WHETHER IN CONTRACT, TORT, INCLUDING NEGLIGENCE, INDEMNIFICATION OR
-          OTHERWISE) EXCEED ONE HUNDRED U.S. DOLLARS (US$100). THE LIMITATIONS
-          SET FORTH IN THIS PARAGRAPH SHALL BE DEEMED TO APPLY TO THE MAXIMUM
-          EXTENT PERMITTED BY APPLICABLE LAW. THE PARTIES HAVE FULLY CONSIDERED
-          THE FOREGOING ALLOCATION OF RISK AND FIND IT REASONABLE, AND THAT THE
-          FOREGOING LIMITATIONS IN THIS PARAGRAPH ARE AN ESSENTIAL BASIS OF
-          THE BARGAIN BETWEEN THE PARTIES.
+          LICENSOR, ITS AFFILIATES AND/OR ITS DIRECTORS, OFFICERS,
+          EMPLOYEES OR AGENTS BE LIABLE FOR ANY INDIRECT, INCIDENTAL,
+          SPECIAL, PUNITIVE OR CONSEQUENTIAL DAMAGES (INCLUDING BUT NOT
+          LIMITED TO DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS
+          INTERRUPTION, LOSS OF BUSINESS INFORMATION AND THE LIKE) ARISING
+          OUT OF OR IN CONNECTION WITH THE SOFTWARE OR ANY DOWNLOAD,
+          INSTALLATION OR USE OF, OR INABILITY TO USE, THE SOFTWARE, EVEN IF
+          LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+          DAMAGES. SOME JURISDICTIONS DO NOT ALLOW THE LIMITATION OR
+          EXCLUSION OF LIABILITY FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES SO
+          THE ABOVE LIMITATION OR EXCLUSION MAY NOT APPLY OR MAY BE LIMITED.
+          IN NO EVENT SHALL LICENSOR'S TOTAL AGGREGATE LIABILITY TO YOU FOR
+          ANY AND ALL DAMAGES, LOSSES, CLAIMS AND CAUSES OF ACTIONS (WHETHER
+          IN CONTRACT, TORT, INCLUDING NEGLIGENCE, INDEMNIFICATION OR
+          OTHERWISE) EXCEED ONE HUNDRED U.S. DOLLARS (US$100). THE
+          LIMITATIONS SET FORTH IN THIS PARAGRAPH SHALL BE DEEMED TO APPLY TO
+          THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW. THE PARTIES HAVE
+          FULLY CONSIDERED THE FOREGOING ALLOCATION OF RISK AND FIND IT
+          REASONABLE, AND THAT THE FOREGOING LIMITATIONS IN THIS PARAGRAPH
+          ARE AN ESSENTIAL BASIS OF THE BARGAIN BETWEEN THE PARTIES.
 
    6.  No Warranty
 
-      a.  LICENSOR MAKES NO WARRANTIES, EXPRESS OR IMPLIED, WITH RESPECT TO THE
-          SOFTWARE AND DOCUMENTATION PROVIDED UNDER THIS AGREEMENT, INCLUDING
-          BUT NOT LIMITED TO ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A
-          PARTICULAR PURPOSE OR AGAINST INFRINGEMENT, OR ANY EXPRESS OR IMPLIED
-          WARRANTY ARISING OUT OF TRADE USAGE OR OUT OF A COURSE OF DEALING OR
-          COURSE OF PERFORMANCE. NOTHING CONTAINED IN THIS AGREEMENT SHALL BE
-          CONSTRUED AS A WARRANTY OR REPRESENTATION BY LICENSOR (I) AS TO THE
-          VALIDITY OR SCOPE OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL
-          PROPERTY RIGHT AND (II) THAT ANY MANUFACTURE OR USE WILL BE FREE FROM
-          INFRINGEMENT OF PATENTS, COPYRIGHTS OR OTHER INTELLECTUAL PROPERTY
-          RIGHTS OF OTHERS, AND IT SHALL BE THE SOLE RESPONSIBILITY OF YOU TO
-          MAKE SUCH DETERMINATION AS IS NECESSARY WITH RESPECT TO THE
-          ACQUISITION OF LICENSES UNDER PATENTS AND OTHER INTELLECTUAL PROPERTY
-          OF THIRD PARTIES. LICENSOR SHALL NOT HAVE ANY OBLIGATION TO PROVIDE
-          ANY TECHNICAL SUPPORT OF THE SOFTWARE UNDER THIS AGREEMENT.
+      a.  LICENSOR MAKES NO WARRANTIES, EXPRESS OR IMPLIED, WITH
+          RESPECT TO THE SOFTWARE AND DOCUMENTATION PROVIDED UNDER THIS
+          AGREEMENT, INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF
+          MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE OR AGAINST
+          INFRINGEMENT, OR ANY EXPRESS OR IMPLIED WARRANTY ARISING OUT OF
+          TRADE USAGE OR OUT OF A COURSE OF DEALING OR COURSE OF PERFORMANCE.
+          NOTHING CONTAINED IN THIS AGREEMENT SHALL BE CONSTRUED AS A
+          WARRANTY OR REPRESENTATION BY LICENSOR (I) AS TO THE VALIDITY OR
+          SCOPE OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT
+          AND (II) THAT ANY MANUFACTURE OR USE WILL BE FREE FROM INFRINGEMENT
+          OF PATENTS, COPYRIGHTS OR OTHER INTELLECTUAL PROPERTY RIGHTS OF
+          OTHERS, AND IT SHALL BE THE SOLE RESPONSIBILITY OF YOU TO MAKE SUCH
+          DETERMINATION AS IS NECESSARY WITH RESPECT TO THE ACQUISITION OF
+          LICENSES UNDER PATENTS AND OTHER INTELLECTUAL PROPERTY OF THIRD
+          PARTIES. Licensor SHALL NOT HAVE ANY OBLIGATION TO
+          PROVIDE ANY TECHNICAL SUPPORT OF THE SOFTWARE UNDER THIS AGREEMENT.
 
    7.  Term and Termination
 
       a.  This Agreement shall be effective on the date You accept this
           Agreement and shall remain in effect until terminated as provided
           herein. You may terminate the Agreement at any time by deleting and
-          destroying all copies of the Software and all related information in
-          Your possession or control. This Agreement terminates immediately and
-          automatically, with or without notice, if You fail to comply with any
-          provision hereof.  Additionally, Licensor may at any time terminate
-          this Agreement, without cause, upon notice to You. Upon termination
-          You must delete or destroy all copies of the Software in Your
-          possession, and the license granted to You in this Agreement shall
-          terminate. Sections 3, 4, 5, 6 and 8 shall survive the termination of
-          this Agreement.
+          destroying all copies of the Software and all related information
+          in Your possession or control. This Agreement terminates
+          immediately and automatically, with or without notice, if You fail
+          to comply with any provision hereof. Additionally, Licensor may at
+          any time terminate this Agreement, without cause, upon notice to
+          You. Upon termination You must delete or destroy all copies of the
+          Software in Your possession, and the license granted to You in this
+          Agreement shall terminate. Sections 3, 4, 5, 6 and 8 shall survive
+          the termination of this Agreement.
 
    8.  Miscellaneous
 
@@ -187,32 +190,33 @@
           accordance with the laws of the State of California without giving
           effect to its conflict of laws provisions. The United Nations
           Convention on Contracts for the International Sale of Goods is
-          expressly disclaimed and shall not apply. Any claim arising out of or
-          related to this Agreement must be brought exclusively in a federal or
-          state court located in Santa Clara County, California and You consent
-          to the jurisdiction and venue of such courts.
+          expressly disclaimed and shall not apply. Any claim arising out of
+          or related to this Agreement must be brought exclusively in a
+          federal or state court located in Santa Clara County, California
+          and You consent to the jurisdiction and venue of such courts.
 
       b.  Waiver and Severability. The failure of either party to require
           performance by the other party of any provision of this Agreement
           shall not affect the full right to require such performance at any
-          time thereafter; nor shall the waiver by either party of a breach of
-          any provision of this Agreement be taken or held to be a waiver of
-          the provision itself. Severability. If any provision of this
-          Agreement is unenforceable or invalid under any applicable law or is
-          so held by applicable court decision, such unenforceability or
+          time thereafter; nor shall the waiver by either party of a breach
+          of any provision of this Agreement be taken or held to be a waiver
+          of the provision itself. Severability. If any provision of this
+          Agreement is unenforceable or invalid under any applicable law or
+          is so held by applicable court decision, such unenforceability or
           invalidity shall not render this Agreement unenforceable or invalid
-          as a whole, and such provision shall be changed and interpreted so as
-          to best accomplish the objectives of such unenforceable or invalid
-          provision within the limits of applicable law or applicable court
-          decisions.
+          as a whole, and such provision shall be changed and interpreted so
+          as to best accomplish the objectives of such unenforceable or
+          invalid provision within the limits of applicable law or
+          applicable court decisions.
 
       c.  Amendment and Modification. This Agreement and any of its terms and
-          provisions may only be amended, modified, supplemented or waived in a
-          writing signed by both parties hereto.
+          provisions may only be amended, modified, supplemented or waived in
+          a writing signed by both parties hereto.
 
       d.  Compliance with Laws. You shall comply with all applicable laws,
           rules, and regulations in connection with its activities under this
           Agreement.
 
       e.  Entire Agreement. This Agreement completely and exclusively states
-          the agreement between You and Licensor regarding this subject matter.
+          the agreement between You and Licensor regarding this subject
+          matter.
diff --git a/self-extractors/samsung/LICENSE b/self-extractors/samsung/LICENSE
index 5aaef79..f4f6db6 100644
--- a/self-extractors/samsung/LICENSE
+++ b/self-extractors/samsung/LICENSE
@@ -2,14 +2,14 @@
 BINDING AGREEMENT BETWEEN Samsumg Electronics, Co., Ltd. ("LICENSOR") AND
 YOU OR THE LEGAL ENTITY YOU REPRESENT ("You" or its possessive, "Your"). BY
 TYPING "I ACCEPT" WHERE INDICATED YOU ACKNOWLEDGE THAT YOU HAVE READ THIS
-AGREEMENT, UNDERSTAND IT AND AGREE TO BE BOUND BY ITS TERMS AND CONDITIONS. IF
-YOU DO NOT AGREE TO THESE TERMS YOU MUST DISCONTINUE THE INSTALLATION PROCESS
-AND YOU SHALL NOT USE THE SOFTWARE OR RETAIN ANY COPIES OF THE SOFTWARE OR
-DOCUMENTATION. ANY USE OR POSSESSION OF THE SOFTWARE BY YOU IS SUBJECT TO THE
-TERMS AND CONDITIONS SET FORTH IN THIS AGREEMENT. IF THE SOFTWARE IS INSTALLED
-ON A COMPUTER OWNED BY A CORPORATION OR OTHER LEGAL ENTITY, THEN YOU REPRESENT
-AND WARRANT THAT YOU HAVE THE AUTHORITY TO BIND SUCH ENTITY TO THE TERMS AND
-CONDITIONS OF THIS AGREEMENT.
+AGREEMENT, UNDERSTAND IT AND AGREE TO BE BOUND BY ITS TERMS AND CONDITIONS.
+IF YOU DO NOT AGREE TO THESE TERMS YOU MUST DISCONTINUE THE INSTALLATION
+PROCESS AND YOU SHALL NOT USE THE SOFTWARE OR RETAIN ANY COPIES OF THE
+SOFTWARE OR DOCUMENTATION. ANY USE OR POSSESSION OF THE SOFTWARE BY YOU IS
+SUBJECT TO THE TERMS AND CONDITIONS SET FORTH IN THIS AGREEMENT. IF THE
+SOFTWARE IS INSTALLED ON A COMPUTER OWNED BY A CORPORATION OR OTHER LEGAL
+ENTITY, THEN YOU REPRESENT AND WARRANT THAT YOU HAVE THE AUTHORITY TO BIND
+SUCH ENTITY TO THE TERMS AND CONDITIONS OF THIS AGREEMENT.
 
    1.  Special Definitions
 
@@ -29,77 +29,78 @@
           Android Enabled Device.
 
       d.  The term "Authorized Android Enabled Device Software" means a
-          packaged build for Authorized Android Enabled Devices, consisting of
-          file suitable for installation on an Authorized Android Enabled
+          packaged build for Authorized Android Enabled Devices, consisting
+          of file suitable for installation on an Authorized Android Enabled
           Device using a mechanism such as fastboot mode or recovery mode.
 
    2.  License Grant
 
       a.  Subject to the terms of this Agreement, Licensor hereby grants to
           You, free of charge, a non-exclusive, non-sublicensable,
-          non-transferable, limited license, during the term of this Agreement,
-          to download, install and use the Software internally in
+          non-transferable, limited license, during the term of this
+          Agreement, to download, install and use the Software internally in
           machine-readable (i.e., object code) form and the Documentation for
           non-commercial use on an Authorized Android Enabled Device and
           non-commercial redistribution of the Authorized Android Enabled
-          Device Software (the "Limited Purpose"). You may grant your end users
-          the right to use the Software for the Limited Purpose. The license to
-          the Software granted to You hereunder is solely for the Limited
-          Purpose set forth in this section, and the Software shall not be used
-          for any other purpose.
+          Device Software (the "Limited Purpose"). You may grant your end
+          users the right to use the Software for the Limited Purpose. The
+          license to the Software granted to You hereunder is solely for the
+          Limited Purpose set forth in this section, and the Software shall
+          not be used for any other purpose.
 
    3.  Restrictions
 
       a.  Retention of Rights. The entire right, title and interest in the
-          Software shall remain with Licensor and, unless specified in writing
-          hereunder, no rights are granted to any of the Software. Except for
-          the right to use the Software for the Limited Purpose, the delivery
-          of the Software to You does not convey to You any intellectual
-          property rights in the Software, including, but not limited to any
-          rights under any patent, trademark, copyright, or trade secret.
-          Neither the delivery of the Software to You nor any terms set forth
-          herein shall be construed to grant to You, either expressly, by
-          implication or by way of estoppel, any license under any patents or
-          other intellectual property rights covering or relating to any other
-          product or invention or any combination of the Software with any
-          other product. Any rights not expressly granted to You herein are
-          reserved by Licensor.
+          Software shall remain with Licensor and, unless specified in
+          writing hereunder, no rights are granted to any of the Software.
+          Except for the right to use the Software for the Limited Purpose,
+          the delivery of the Software to You does not convey to You any
+          intellectual property rights in the Software, including, but not
+          limited to any rights under any patent, trademark, copyright, or
+          trade secret.  Neither the delivery of the Software to You nor any
+          terms set forth herein shall be construed to grant to You, either
+          expressly, by implication or by way of estoppel, any license under
+          any patents or other intellectual property rights covering or
+          relating to any other product or invention or any combination of
+          the Software with any other product. Any rights not expressly
+          granted to You herein are reserved by Licensor.
 
       b.  No Commercialization or Distribution of the Software and
           Documentation. Except as expressly provided in Section 2 of this
-          Agreement, You shall have no right to (i) copy, disclose, distribute,
-          publically perform, publically display, transfer, alter, modify,
-          translate, disassemble, decompile, reverse engineer, or adapt the
-          Software and Documentation, or any portion thereof, or create any
-          derivative works based thereon; (ii) rent, lease, assign, sublicense,
-          resell, disclose or otherwise transfer the Software and Documentation
-          in whole or in part to any third party (iii) use the Software and
-          Documentation except for the Limited Purpose, (iv) remove or alter
-          any of the copyright or proprietary notices contained in any of the
-          Software and Documentation. For the purposes of clarity, nothing in
-          this Agreement prohibits You from making and distributing Android
-          Applications under commercial or non-commercial terms, provided that
-          You shall not contain, incorporate, and/or compile the Software or
-          any of its derivative works, in whole or in part, into Your Android
-          Applications and/or any software/devices created by You or by third
-          parties acting on Your behalf. You and any such third party shall
-          comply with all of the terms and conditions of this Agreement.
+          Agreement, You shall have no right to (i) copy, disclose,
+          distribute, publically perform, publically display, transfer,
+          alter, modify, translate, disassemble, decompile, reverse engineer,
+          or adapt the Software and Documentation, or any portion thereof, or
+          create any derivative works based thereon; (ii) rent, lease,
+          assign, sublicense, resell, disclose or otherwise transfer the
+          Software and Documentation in whole or in part to any third party
+          (iii) use the Software and Documentation except for the Limited
+          Purpose, (iv) remove or alter any of the copyright or proprietary
+          notices contained in any of the Software and Documentation. For the
+          purposes of clarity, nothing in this Agreement prohibits You from
+          making and distributing Android Applications under commercial or
+          non-commercial terms, provided that You shall not contain,
+          incorporate, and/or compile the Software or any of its derivative
+          works, in whole or in part, into Your Android Applications and/or
+          any software/devices created by You or by third parties acting on
+          Your behalf. You and any such third party shall comply with all of
+          the terms and conditions of this Agreement.
 
       c.  No Reverse Engineering. Except for any portions of the Software
-          provided to You in source code format and except for any third party
-          code distributed with the Software that is licensed under contrary
-          terms, You will not reverse engineer, disassemble,
-          decompile, or translate the Software, or otherwise attempt to derive
-          the source code version of the Software, except if and to the extent
-          expressly permitted under any applicable law.
+          provided to You in source code format and except for any third
+          party code distributed with the Software that is licensed under
+          contrary terms, You will not reverse engineer, disassemble,
+          decompile, or translate the Software, or otherwise attempt to
+          derive the source code version of the Software, except if and to
+          the extent expressly permitted under any applicable law.
 
-      d.  Third Party Software. You agree that Android may contain third party
-          software. You agree that you may not distribute such third party
-          software for any purpose without appropriate licenses from the
-          applicable third party or parties.
+      d.  Third Party Software. You agree that Android may contain third
+          party software. You agree that you may not distribute such third
+          party software for any purpose without appropriate licenses from
+          the applicable third party or parties.
 
-      e.  No Transfer or Assignment. You shall not assign any of its rights or
-          obligations under this Agreement. Any attempted assignment in
+      e.  No Transfer or Assignment. You shall not assign any of its rights
+          or obligations under this Agreement. Any attempted assignment in
           contravention of this Section shall be void.
 
    4.  Indemnity
@@ -107,79 +108,81 @@
       a.  You agree to indemnify and hold harmless Licensor and its officers,
           directors, customers, employees and successors and assigns (each an
           "Indemnified Party") against any and all claims, demands, causes of
-          action, losses, liabilities, damages, costs and expenses, incurred by
-          the Indemnified Party (including but not limited to costs of defense,
-          investigation and reasonable attorney's fees) arising out of,
-          resulting from or related to (i) any software, products,
+          action, losses, liabilities, damages, costs and expenses, incurred
+          by the Indemnified Party (including but not limited to costs of
+          defense, investigation and reasonable attorney's fees) arising out
+          of, resulting from or related to (i) any software, products,
           documentation, content, materials or derivative works created or
           developed by You using the Software which causes an infringement of
           any patent, copyright, trademark, trade secret, or other property,
           publicity or privacy rights of any third parties arising in any
-          jurisdiction anywhere in the world, (ii) the download, distribution,
-          installation, storage, execution, use or transfer of such software,
-          products, documentation, content, materials or derivative works by
-          any person or entity, and/or (iii) any breach of this Agreement by
-          You. If requested by an Indemnified Party, You agree to defend such
-          Indemnified Party in connection with any third party claims, demands,
-          or causes of action resulting from, arising out of or in connection
-          with any of the foregoing.
+          jurisdiction anywhere in the world, (ii) the download,
+          distribution, installation, storage, execution, use or transfer of
+          such software, products, documentation, content, materials or
+          derivative works by any person or entity, and/or (iii) any breach
+          of this Agreement by You. If requested by an Indemnified Party, You
+          agree to defend such Indemnified Party in connection with any third
+          party claims, demands, or causes of action resulting from, arising
+          out of or in connection with any of the foregoing.
 
    5.  Limitation of Liability
 
       a.  TO THE MAXIMUM EXTENT PERMITTED UNDER APPLICABLE LAWS, UNDER NO
           CIRCUMSTANCES, INCLUDING WITHOUT LIMITATION NEGLIGENCE, SHALL
-          LICENSOR, ITS AFFILIATES AND/OR ITS DIRECTORS, OFFICERS, EMPLOYEES OR
-          AGENTS BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, PUNITIVE OR
-          CONSEQUENTIAL DAMAGES (INCLUDING BUT NOT LIMITED TO DAMAGES FOR LOSS
-          OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS
-          INFORMATION AND THE LIKE) ARISING OUT OF OR IN CONNECTION WITH THE
-          SOFTWARE OR ANY DOWNLOAD, INSTALLATION OR USE OF, OR INABILITY TO
-          USE, THE SOFTWARE, EVEN IF LICENSOR HAS BEEN ADVISED OF THE
-          POSSIBILITY OF SUCH DAMAGES. SOME JURISDICTIONS DO NOT ALLOW THE
-          LIMITATION OR EXCLUSION OF LIABILITY FOR INCIDENTAL OR CONSEQUENTIAL
-          DAMAGES SO THE ABOVE LIMITATION OR EXCLUSION MAY NOT APPLY OR MAY BE
-          LIMITED. IN NO EVENT SHALL LICENSOR'S TOTAL AGGREGATE LIABILITY TO
-          YOU FOR ANY AND ALL DAMAGES, LOSSES, CLAIMS AND CAUSES OF ACTIONS
-          (WHETHER IN CONTRACT, TORT, INCLUDING NEGLIGENCE, INDEMNIFICATION OR
-          OTHERWISE) EXCEED ONE HUNDRED U.S. DOLLARS (US$100). THE LIMITATIONS
-          SET FORTH IN THIS PARAGRAPH SHALL BE DEEMED TO APPLY TO THE MAXIMUM
-          EXTENT PERMITTED BY APPLICABLE LAW. THE PARTIES HAVE FULLY CONSIDERED
-          THE FOREGOING ALLOCATION OF RISK AND FIND IT REASONABLE, AND THAT THE
-          FOREGOING LIMITATIONS IN THIS PARAGRAPH ARE AN ESSENTIAL BASIS OF
-          THE BARGAIN BETWEEN THE PARTIES.
+          LICENSOR, ITS AFFILIATES AND/OR ITS DIRECTORS, OFFICERS,
+          EMPLOYEES OR AGENTS BE LIABLE FOR ANY INDIRECT, INCIDENTAL,
+          SPECIAL, PUNITIVE OR CONSEQUENTIAL DAMAGES (INCLUDING BUT NOT
+          LIMITED TO DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS
+          INTERRUPTION, LOSS OF BUSINESS INFORMATION AND THE LIKE) ARISING
+          OUT OF OR IN CONNECTION WITH THE SOFTWARE OR ANY DOWNLOAD,
+          INSTALLATION OR USE OF, OR INABILITY TO USE, THE SOFTWARE, EVEN IF
+          LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+          DAMAGES. SOME JURISDICTIONS DO NOT ALLOW THE LIMITATION OR
+          EXCLUSION OF LIABILITY FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES SO
+          THE ABOVE LIMITATION OR EXCLUSION MAY NOT APPLY OR MAY BE LIMITED.
+          IN NO EVENT SHALL LICENSOR'S TOTAL AGGREGATE LIABILITY TO YOU FOR
+          ANY AND ALL DAMAGES, LOSSES, CLAIMS AND CAUSES OF ACTIONS (WHETHER
+          IN CONTRACT, TORT, INCLUDING NEGLIGENCE, INDEMNIFICATION OR
+          OTHERWISE) EXCEED ONE HUNDRED U.S. DOLLARS (US$100). THE
+          LIMITATIONS SET FORTH IN THIS PARAGRAPH SHALL BE DEEMED TO APPLY TO
+          THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW. THE PARTIES HAVE
+          FULLY CONSIDERED THE FOREGOING ALLOCATION OF RISK AND FIND IT
+          REASONABLE, AND THAT THE FOREGOING LIMITATIONS IN THIS PARAGRAPH
+          ARE AN ESSENTIAL BASIS OF THE BARGAIN BETWEEN THE PARTIES.
 
    6.  No Warranty
 
-      a.  LICENSOR MAKES NO WARRANTIES, EXPRESS OR IMPLIED, WITH RESPECT TO THE
-          SOFTWARE AND DOCUMENTATION PROVIDED UNDER THIS AGREEMENT, INCLUDING
-          BUT NOT LIMITED TO ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A
-          PARTICULAR PURPOSE OR AGAINST INFRINGEMENT, OR ANY EXPRESS OR IMPLIED
-          WARRANTY ARISING OUT OF TRADE USAGE OR OUT OF A COURSE OF DEALING OR
-          COURSE OF PERFORMANCE. NOTHING CONTAINED IN THIS AGREEMENT SHALL BE
-          CONSTRUED AS A WARRANTY OR REPRESENTATION BY LICENSOR (I) AS TO THE
-          VALIDITY OR SCOPE OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL
-          PROPERTY RIGHT AND (II) THAT ANY MANUFACTURE OR USE WILL BE FREE FROM
-          INFRINGEMENT OF PATENTS, COPYRIGHTS OR OTHER INTELLECTUAL PROPERTY
-          RIGHTS OF OTHERS, AND IT SHALL BE THE SOLE RESPONSIBILITY OF YOU TO
-          MAKE SUCH DETERMINATION AS IS NECESSARY WITH RESPECT TO THE
-          ACQUISITION OF LICENSES UNDER PATENTS AND OTHER INTELLECTUAL PROPERTY
-          OF THIRD PARTIES. Licensor SHALL NOT HAVE ANY OBLIGATION TO PROVIDE
-          ANY TECHNICAL SUPPORT OF THE SOFTWARE UNDER THIS AGREEMENT.
+      a.  LICENSOR MAKES NO WARRANTIES, EXPRESS OR IMPLIED, WITH
+          RESPECT TO THE SOFTWARE AND DOCUMENTATION PROVIDED UNDER THIS
+          AGREEMENT, INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF
+          MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE OR AGAINST
+          INFRINGEMENT, OR ANY EXPRESS OR IMPLIED WARRANTY ARISING OUT OF
+          TRADE USAGE OR OUT OF A COURSE OF DEALING OR COURSE OF PERFORMANCE.
+          NOTHING CONTAINED IN THIS AGREEMENT SHALL BE CONSTRUED AS A
+          WARRANTY OR REPRESENTATION BY LICENSOR (I) AS TO THE VALIDITY OR
+          SCOPE OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT
+          AND (II) THAT ANY MANUFACTURE OR USE WILL BE FREE FROM INFRINGEMENT
+          OF PATENTS, COPYRIGHTS OR OTHER INTELLECTUAL PROPERTY RIGHTS OF
+          OTHERS, AND IT SHALL BE THE SOLE RESPONSIBILITY OF YOU TO MAKE SUCH
+          DETERMINATION AS IS NECESSARY WITH RESPECT TO THE ACQUISITION OF
+          LICENSES UNDER PATENTS AND OTHER INTELLECTUAL PROPERTY OF THIRD
+          PARTIES. Licensor SHALL NOT HAVE ANY OBLIGATION TO
+          PROVIDE ANY TECHNICAL SUPPORT OF THE SOFTWARE UNDER THIS AGREEMENT.
 
    7.  Term and Termination
 
       a.  This Agreement shall be effective on the date You accept this
           Agreement and shall remain in effect until terminated as provided
           herein. You may terminate the Agreement at any time by deleting and
-          destroying all copies of the Software and all related information in
-          Your possession or control. This Agreement terminates immediately and
-          automatically, with or without notice, if You fail to comply with any
-          provision hereof. Additionally, Licensor may at any time terminate
-          this Agreement, without cause, upon notice to You. Upon termination
-          You must delete or destroy all copies of the Software in Your
-          possession, and the license granted to You in this Agreement shall
-          terminate. Sections 3, 4, 5, 6 and 8 shall survive the termination of
-          this Agreement.
+          destroying all copies of the Software and all related information
+          in Your possession or control. This Agreement terminates
+          immediately and automatically, with or without notice, if You fail
+          to comply with any provision hereof. Additionally, Licensor may at
+          any time terminate this Agreement, without cause, upon notice to
+          You. Upon termination You must delete or destroy all copies of the
+          Software in Your possession, and the license granted to You in this
+          Agreement shall terminate. Sections 3, 4, 5, 6 and 8 shall survive
+          the termination of this Agreement.
 
    8.  Miscellaneous
 
@@ -187,32 +190,33 @@
           accordance with the laws of the State of California without giving
           effect to its conflict of laws provisions. The United Nations
           Convention on Contracts for the International Sale of Goods is
-          expressly disclaimed and shall not apply. Any claim arising out of or
-          related to this Agreement must be brought exclusively in a federal or
-          state court located in Santa Clara County, California and You consent
-          to the jurisdiction and venue of such courts.
+          expressly disclaimed and shall not apply. Any claim arising out of
+          or related to this Agreement must be brought exclusively in a
+          federal or state court located in Santa Clara County, California
+          and You consent to the jurisdiction and venue of such courts.
 
       b.  Waiver and Severability. The failure of either party to require
           performance by the other party of any provision of this Agreement
           shall not affect the full right to require such performance at any
-          time thereafter; nor shall the waiver by either party of a breach of
-          any provision of this Agreement be taken or held to be a waiver of
-          the provision itself. Severability. If any provision of this
-          Agreement is unenforceable or invalid under any applicable law or is
-          so held by applicable court decision, such unenforceability or
+          time thereafter; nor shall the waiver by either party of a breach
+          of any provision of this Agreement be taken or held to be a waiver
+          of the provision itself. Severability. If any provision of this
+          Agreement is unenforceable or invalid under any applicable law or
+          is so held by applicable court decision, such unenforceability or
           invalidity shall not render this Agreement unenforceable or invalid
-          as a whole, and such provision shall be changed and interpreted so as
-          to best accomplish the objectives of such unenforceable or invalid
-          provision within the limits of applicable law or applicable court
-          decisions.
+          as a whole, and such provision shall be changed and interpreted so
+          as to best accomplish the objectives of such unenforceable or
+          invalid provision within the limits of applicable law or
+          applicable court decisions.
 
       c.  Amendment and Modification. This Agreement and any of its terms and
-          provisions may only be amended, modified, supplemented or waived in a
-          writing signed by both parties hereto.
+          provisions may only be amended, modified, supplemented or waived in
+          a writing signed by both parties hereto.
 
       d.  Compliance with Laws. You shall comply with all applicable laws,
           rules, and regulations in connection with its activities under this
           Agreement.
 
       e.  Entire Agreement. This Agreement completely and exclusively states
-          the agreement between You and Licensor regarding this subject matter.
+          the agreement between You and Licensor regarding this subject
+          matter.
