THIS SOFTWARE LICENSE AGREEMENT (THIS "AGREEMENT") IS A LEGALLY BINDING
AGREEMENT BETWEEN THE DEVELOPER OF THE SOFTWARE (THE "DEVELOPER") AND THOMSON
MULTIMEDIA BROADBAND BELGIUM N.V. ("THOMSON"). BY USING OR INSTALLING THE
SOFTWARE (AS UPDATED BY THOMSON FROM TIME TO TIME, THE "SOFTWARE") THE DEVELOPER
IS ACCEPTING TO BE BOUND BY ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT.

1. Grant of License. The Software and all accompanying documentation, including
but not limited to the Interface Specification (the "Documentation) are licensed
to the Developer under the terms and conditions set forth in this Agreement.
Subject to such terms and conditions, Thomson hereby grants to the Developer a
non-exclusive, nontransferable right to use the Software and the Documentation
solely in combination with Thomson's line of SpeedTouch USB ADSL modem products;
which are rightfully acquired and/or used by the Developer (Licensee).

2. Limitations on Use. The Developer will not modify or translate the Software
or the Documentation without the prior written consent of Thomson. The Developer
will not reverse engineer, decompile, disassemble or otherwise attempt to
recreate the source code of the Software. The Developer will not separate from
the Software any of the component parts of the Software.

3. Limitations on Duplication. The Developer will not make any copies of the
Software or the Documentation; provided, however, that the Developer may make
one complete copy of the Software or the Documentation solely for backup
purposes if such copy of the Software or Documentation contains the notation
"Copyright Thomson". The Developer will not print any on-line or electronic
documentation other than solely for developing, servicing, operating or training
purposes.

4. Limitations on Transfer. The Developer will not sell, rent, lease or
otherwise transfer any or all of the Software, the Documentation or any copies
thereof, without the prior written consent of Thomson. The Developer will not
sublicense, assign, delegate, rent, lease or otherwise transfer any or all of
its rights under this Agreement.

5. Ownership and Copyright. The Developer has not acquired, by virtue of this
Agreement, any right of ownership in or to the Software, the Documentation or
any related patent, copyright, trademark or other intellectual property right.
By virtue of this Agreement, the Developer has acquired a right of ownership
solely in and to the physical media on which the Software and the Documentation
are recorded or fixed. Thomson, its licensors and their respective licensors
retain all right, title and interest in and to the Software, the Documentation
and any and all copies thereof, except for the rights expressly granted to the
Developer pursuant to this Agreement and as may be granted by Thomson from time
to time. Such right, title and interest of Thomson is, and such right, title and
interest of Thomson's licensors and their respective licensors may be, protected
by applicable copyright laws and international treaties.

6. Term and Termination. The term of this Agreement commences upon the first use
by the Developer of the Software and expires upon the termination of this
Agreement which shall automatically occur in case the Licensee stops using the
SpeedTouch USB ADSL modem products. If the Developer fails to comply with any of
the terms and conditions set forth in this Agreement, then (a) this Agreement
will automatically terminate, (b) in the event of such termination, the
Developer will (i) destroy or permanently erase the Software and any and all
copies thereof and (ii) destroy the Documentation and any and all copies
thereof, and (c) Thomson may exercise any or all remedies available to it under
applicable laws. In addition, the Developer may terminate this Agreement at any
time by (a) destroying or permanently erasing the Software and any and all
copies thereof and (b) destroying the Documentation and any and all copies
thereof.

7. NO WARRANTIES. THE SOFTWARE IS MADE AVAILABLE TO THE DEVELOPER ON AN "AS IS"
BASIS WITHOUT ANY EXPRESS, IMPLIED OR STATUTORY WARRANTIES WHATSOEVER, INCLUDING
WITHOUT LIMITATION ANY IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR A
PARTICULAR PURPOSE. Some jurisdictions may not permit the exclusion of implied
warranties; so the above exclusion may not apply to the Developer. The Developer
may have other rights that vary from jurisdiction to jurisdiction. Thomson may
from time to time, in its sole discretion, make available to the Developer, with
or without charge, updates to the Software or the Documentation. No such action
will create any warranty obligation on the part of Thomson.

8. LIMITATION OF REMEDIES. IN NO EVENT WILL THOMSON, ITS LICENSORS OR THEIR
RESPECTIVE LICENSORS BE LIABLE FOR ANY DAMAGES OR OTHER RELIEF WHATSOEVER
ARISING OUT OF DEVELOPER'S USE OR INABILITY TO USE THE SOFTWARE OR THE
DOCUMENTATION, INCLUDING WITHOUT LIMITATION LOST PROFITS, LOST BUSINESS OR LOST
OPPORTUNITY OR ANY SPECIAL, INCIDENTAL OR CONSEQUENTIAL OR EXEMPLARY DAMAGES OR
LEGAL FEES ARISING OUT OF SUCH USE OR INABILITY TO USE THE SOFTWARE, EVEN IF
THOMSON, ITS LICENSORS OR THEIR RESPECTIVE LICENSORS HAVE BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES. Some jurisdictions may not permit the exclusion or
limitation of incidental or consequential damages; so the above exclusion or
limitation may not apply to the Developer.

9. Governing Law. This Agreement will be governed by and construed in accordance
with the laws of Belgium, without giving effect to the conflicts of laws
principles thereof.

10. Other Terms. Additional or different terms and conditions may be applicable
to the Developer if so agreed in writing by the vendor of the Software, Thomson,
its licensors and/or their respective licensors.
