Source
======
http://extensions.services.openoffice.org/en/project/dict_et

Table of contents
=================
README_et_EE.txt

README_et_EE.txt
================
Eesti sõnastik OpenOffice.org õigekirjakontrollile
Estonian dictionary for OpenOffice.org spellchecker
==================================================
versioon 1.0 /version 1.0
juuni 2004 / June 2004

1. Üldist / General
-------------------

Käesolev sõnastik on mõeldud OpenOffice.org myspell-il baseeruva õigekirjakontrollija
tarbeks. Sõnastik sisaldab umbes 15 miljonit sõna.
Sõnastik sisaldab kahte faili: 
et_EE.dic (sõnastik)
et_EE.aff (afiksid)
Sõnastiku paigaldamiseks võib kasutada OpenOffice.org koosseisu kuuluvat abiprogrammi
DictOOO, samuti võib ka tegutseda vastavalt OpenOffice.org käsiraamatus toodud 
juhistele.
README käesoleva versiooni on koostanud ja sõnastikud pakendanud Ain Vagula
(vagula@openoffice.org)

This dictionary is created for myspell-based OpenOffice.org spellchecker. Dictionary
contains about 15 million words.
Dictionary contais two files:
et_EE.dic (dictionary)
et_EE.aff (affixes)
To install the dicionary use the OpenOffice.org tool DictOOO or refer to the OpenOffice.org
Online Help.
Current version of README is written and packages are made by Ain Vagula
(vagula@openoffice.org)

2. Autorid ja litsentsid / Authors and licenses
-----------------------------------------------

Sõnastiku on myspelli jaoks kohandanud Jaak Pruulmann (jjpp@meso.ee,
http://www.meso.ee/~jjpp/speller/ ), kes on oma töö pannud GNU LGPL-i (GNU Vähem Üldine
Avalik Litsents) alla. 
Kasutatud on EKI (Eesti Keele Instituut, tarkvara@eki.ee) poolt välja töötatud eesti keele
sõnade loendit.
EKI tarkvara litsentsi originaal asub aadressil http://www.eki.ee/eki/litsents.html
Litsentside koopiad on lisatud käesolevale failile. Sõnade loendi kasutamisest on EKI-t teavitatud.

Dictionary is adapted to myspell by Jaak Pruulmann (jjpp@meso.ee,
http://www.meso.ee/~jjpp/speller/ ) on the base of word list created and shared by IEL
(Institute of the Estonian Language, tarkvara@eki.ee). The original
of EKI software license is available at http://www.eki.ee/eki/licence.html
The work of Jaak Pruulmann is licensed under LGPL (GNU Lesser General Public License).
The copies of licenses are added to current file. IEL is informed about the use of this word list.

-----------------------------------------------
EESTI KEELE INSTITUUDI TARKVARA LITSENTSILEPING

Autoriõigus © Eesti Keele Instituut. 

e-post: tarkvara@eki.ee 

URL: http://www.eki.ee/tarkvara/ 

Käesoleva litsentsilepinguga on selle tarkvaratoote kasutajail õigus tarkvara kasutada
mistahes eesmärgil, sh levitada, kopeerida, muuta, kasutada muu tarkvara koosseisus ja müüa
järgnevatel tingimustel:
Käesolev litsentsileping tuleb muutmata kujul säilitada kõigi selle tarkvara koopiate juures. 
Ei Eesti Keele Instituut ega tarkvara autor(id) ei vastuta mistahes otseste või kaudsete
kahjude eest, mis võivad johtuda selle tarkvaratoote kasutamisest. 
EKI jagab tarkvara sooviga edendada eesti keele uuringuid ja soodustada eesti keele kasutust
kiiresti arenevas infotehnoloogias, kuid ei võta sellega endale lisakohustusi – EKI ei taga
tarkvara sobivust konkreetseks otstarbeks, ei kohustu programmi täiustama või põhjalikumalt
kirjeldama kasutatud algoritme. (Mis muidugi ei tähenda, et me seda ei tee). 
Tarkvara kasutamisel palume sellest teada anda ülaltoodud elektronposti aadressil. 

---------- litsentsilepingu lõpp ----------

Software Licence Agreement
Institute of the Estonian Language 

Copyright © Institute of the Estonian Language 

E-mail: tarkvara@eki.ee 

URL: http://www.eki.ee/tarkvara/ 

The present Licence Agreement gives the user of this Software Product (hereinafter: Product)
the right to use the Product for whatever purpose (incl. distribution, copying, altering,
inclusion in other software, and selling) on the following conditions:
The present Licence Agreement should belong unaltered to each copy ever made of this Product;
Neither the Institute of the Estonian Language (hereinafter: IEL) nor the author(s) of the Product will take responsibility for any detriment, direct or indirect, possibly ensuing from the application of the Product; 
The IEL is ready to share the Product with other users as we wish to advance research on the Estonian language and to promote the use of Estonian in IT-technology now rapidly developing, yet we refuse to bind ourselves to any further obligation, which means that the IEL is not obliged either to warrant the suitability of the Product for a concrete use, to improve the program, or to provide a more detailed description of the underlying algorithms. (Which does not mean, though, that we may not do it.) 
Whenever you use the Product, we request that you inform us by writing to the e-mail address tarkvara@eki.ee or to street address listed below. 

Institute of the Estonian Language
 Roosikrantsi 6
 EE-10119 Tallinn
 ESTONIA 

E-mail: eki@eki.ee
Phone & Fax: +372-6411443
---------- end of Licence Agreement ----------



GNU Vähem Üldine Avalik Litsents

Versioon number 2.1, Veebruar 1999 

Autoriõigus (C) 1991, 1999 Free Software Foundation, Inc.

59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

Igaüks võib käesolevast dokumendist valmistada koopiaid ning valmistatud koopiaid levitada tingimusel, et need koopiad vastavad originaaldokumendile sõnasõnalt.

[See on GNU Vähem Üldise Avaliku Litsentsi esimene avaldatud versioon. See on ka GNU Üldise Avaliku Litsentsi versiooni 2 järeltulija, seega on versiooni number 2.1.]

Eessõna

Enamik tarkvara litsentse on loodud selleks, et võtta Teilt õigus tarkvara jagada ja muuta. 

Vastukaaluks on GNU Üldine Avalik Litsents mõeldud selleks, et tagada Teile vabadus jagada ja muuta vaba tarkvara - kindlustada, et tarkvara oleks vaba kõigile selle kasutajatele. 

Käesolev, Vähem Üldine Avalik Litsents, kehtib mõnele spetsiaalse suunitlusega Free Software Foundation'i ja teiste autorite, kes otsustavad seda kasutada, poolt loodud tarkvara pakettidele - tavaliselt teekidele. Ka Teie võite käesolevat litsentsi kasutada, kuid soovitame Teil allpool toodud selgitustele tuginedes igal üksikjuhul enne hoolega mõelda, kas strateegiliselt on parem kasutada käesolevat litsentsi või tavalist Üldist Avalikku Litsentsi.

Rääkides vabast tarkvarast peame silmas vabadust, mitte hinda. Üldised Avalikud Litsentsid on loodud selleks, et tagada Teile järgnevat: õigust levitada koopiaid vabast tarkvarast (soovi korral ka levitamise eest tasu võttes), tarkvara lähtetekstide kättesaadavust, õigust tarkvara muuta või kasutada tarkvara osi uute vaba tarkvaratoodete loomisel ning kindlustada, et Te olete teadlik eelpoolnimetatud õigustest.

Teie õiguste tagamiseks on vaja rakendada mõningaid piiranguid, et levitajad ei saaks Teilt neid õigusi ära võtta või nõuda nendest loobumist. Tarkvara muutmisel või selle koopiate levitamisel kätkevad need piirangud Teie jaoks teatud kohustusi. 

Näiteks levitades teegi koopiaid, kas tasuta või levitamise eest tasu võttes, peate Te saajatele andma kõik need õigused, mis meie Teile andsime. Te peate kindlustama, et ka nemad saavad või võivad soovi korral saada lähteteksti. 

Kui Te lingite teegiga muud koodi, peate andma saajatele ka täielikud objektfailid, et nad saaksid pärast muudatuste tegemist teegis ja selle uuesti kompileerimist neid uuesti teegiga linkida. Ning Te peate neid teavitama käesoleva Litsentsi tingimustest, et nad teaksid oma õigusi.

Me kaitseme Teie õigusi kaheastmeliselt:

1. anname teegile autoriõiguse, ja

2. pakume Teile käesolevat litsentsi, mis annab Teile seadusliku õiguse kopeerida, levitada ja/või muuta teeki.

Iga levitaja kaitsmiseks tahame me teha väga selgeks, et vabal teegil pole garantiid. Kui keegi teeki muudab ja edasi levitab, peavad selle saajad teadma, et nende omanduses pole originaal vältimaks teiste poolt põhjustatud probleemide mõju originaali autori mainele.

Lõpuks, tarkvara patendid kujutavad pidevat ohtu mistahes vaba programmi olemasolule. Me soovime kindlustada, et ükski firma ei saaks efektiivselt piirata vaba programmi kasutajaid saades patendi omanikult piirava litsentsi. Seega - me nõuame, et mistahes patendi litsents, mis on saadud teegi versioonile, peab olema kooskõlas käesolevas litsentsis sätestatud täieliku kasutamisvabadusega.

Enamus GNU tarkvara, kaasaarvatud mõned teegid, on kaitstud tavalise GNU Üldise Avaliku Litsentsiga. Käesolev litsents, GNU Vähem Üldine Avalik Litsents, kehtib teatud kindlatele teekidele ja on tavalisest Üldisest Avalikust Litsentsist küllaltki erinev. Me kasutame käesolevat litsentsi, et lubada mitte-vabade programmide linkimist nende teekidega. 

Kui programm on lingitud teegiga, kas staatiliselt või kasutades jagatud teeki, on nende kombinatsioon juriidilises mõistes ühendatud töö, algsest teegist tulenev. Tavaline Üldine Avalik Litsents lubab seega sellist linkimist ainult kui kogu kombinatsioon vastab selle vabaduse nõudele. Vähem Üldine Avalik Litsents lubab vabamalt muud koodi teegiga siduda. 

Me nimetame käesolevat litsentsi "Vähem" Üldiseks Avalikuks Litsentsiks, sest see teeb kasutaja vabaduse kaitsmiseks vähem kui tavaline Üldine Avalik Litsents. See annab teistele vaba tarkvara arendajatele ka vähem eeliseid konkureerimaks mitte-vabade programmidega. Nende puuduste tõttu kasutame me paljude teekide puhul tavalist Üldist Avalikku Litsentsi. Siiski annab Vähem Üldine Avalik Litsents teatud kindlates olukordades eeliseid. 

Näiteks võib harvadel juhtudel olla eriline vajadus julgustada teatud teegi võimalikult laia kasutamist, et see muutuks de-facto standardiks. Selle saavutamiseks peab mitte-vabadele programmidele lubama teegi kasutamist. Sagedamini juhtub, et vaba teek teeb ära sama töö kui laialdaselt kasutatavad mitte-vabad teegid. Sel juhul on vähe kasu vaba teegi kasutamise piiramisest ainult vabale tarkvarale ning me kasutame Vähem Üldist Avalikku Litsentsi .

Teistel juhtudel võimaldab luba kasutada teatud teeki mitte-vabades programmides suuremal hulgal inimestel kasutada suurt hulka vaba tarkvara. Näiteks, luba kasutada GNU C teeki mitte-vabades programmides võimaldab suuremal hulgal inimestel kasutada kogu GNU operatsioonisüsteemi ning ka selle varianti, GNU/Linux operatsioonisüsteemi. 

Kuigi Vähem Üldine Avalik Litsents kaitseb vähem kasutaja vabadust, kindlustab see, et teegiga lingitud programmi kasutajal on vabadus ja vajalikud vahendid töötamaks programmiga kasutades teegi muudetud versiooni.

Järgnevad kopeerimise, levitamise ja muutmise täpsed terminid ning tingimused.

Pöörake tähelepanu erinevusele "teegil põhinev teos " ja "teeki kasutav teos" vahel. Esimene sisaldab teegist tuletatud koodi, teise peab teegiga ühendama, et töötada. 

Kopeerimise, levitamise ja muutmise terminid ja tingimused.

0. Käesolev Litsentsileping kehtib iga tarkvara teegi või muu programmi puhul, mis sisaldab autoriõiguse omaniku või muu pädeva poole märget selle kohta, et antud programmi võib levitada vastavalt käesoleva Vähem Üldise Avaliku Litsentsi (edaspidi: käesolev Litsents) tingimustele. Iga litsentsiaat on edaspidi "Teie".

"Teek" tähendab tarkvara funktsioonide kogumit ja/või andmeid, mis on ette valmistatud mugavaks linkimiseks rakendusprogrammidega (mis kasutavad neid funktsioone või andmeid), et luua käivitatavaid teoseid.

Allpool viitab "Teek" igasugusele tarkvara teegile või teosele, mida levitatakse nende tingimuste kohaselt. "Teegil põhinev teos" tähendab kas Teeki või igasugust autoriõiguse kohaselt tuletatud teost: see tähendab, teost, mis sisaldab Teeki või osa sellest, kas originaalis või muudetuna ja/või otse teise keelde tõlgituna. (Nüüd ja edaspidi, tõlge kuulub piiranguteta mõiste "muutmine" alla.)

Teose "Lähtekood" tähendab teose eelistatumat vormi, millesse muudatusi teha. Teegi täielik lähtekood tähendab kõikide moodulite, mida ta sisaldab, lähtekoode ja kõiki sellega seotud liidese definitsioonifaile ning skripte, mida kasutatakse teegi kompileerimise ja paigaldamise kontrollimiseks.

Litsents ei laiene muudele tegevustele kui kopeerimine, levitamine ja muutmine; need ei ole Litsentsiga kaetud. Teeki kasutava programmiga töötamisel pole kitsendusi ja Programmi väljund on kaitstud vaid siis, kui selles sisaldub teos, mis põhineb Teegil (sõltumatuna sellest, et see on kirjutatud Teegi abil). Kas see on tõene, sõltub sellest mida Teek teeb ja mida Teeki kasutav programm teeb.

1. Te võite kopeerida ja levitada sõnasõnalisi koopiaid Teegi täielikust lähtekoodist nii, nagu olete selle saanud, igas vormis, eeldusel, et Te avaldate arusaadavalt ja sobivalt igal koopial vastava autoriõiguse märke ja garantii välistamise märke: hoiate puutumatuna kõik märked, mis viitavad käesolevale Litsentsile ja igasugusele garantii puudumisele ning levitate Teeki koos käesoleva Litsentsi koopiaga. 

Te võite võtta tasu koopia füüsilise kättetoimetamise akti eest ning võite oma valiku kohaselt pakkuda tasu eest omapoolset garantiikaitset.

2. Te võite muuta Teegi koopiat või koopiaid või ükskõik millist selle osa, luues nii Teegil põhineva teose ning kopeerida ja levitada selliseid muudatusi või teoseid vastavalt punkti 1 tingimustele, eeldades, et Te täidate kõik järgnevad tingimused:

a) muudetud teos peab ise olema tarkvara teek.

b) Te peate kaasama muudetud failile silmatorkavad märked, mis teatavad Teie poolt tehtud muudatused failides ja iga muudatuse kuupäeva.

c) Te peate koge teose tasuta litsenseerima kõigile kolmandatele isikutele vastavalt käesoleva Litsentsi tingimustele. 

d) Kui muudetud teegi poolt pakutav teenus kasutab funktsiooni või andmeid, mille peab pakkuma rakendus, mis kasutab teenust, kuid mis ei ole selle teenuse väljakutsumise argumendiks, siis peate Te tegema kõik, et tagada teenuse töö ka juhul, kui rakendus vajalikku funktsiooni või andmeid ei paku ja teostab ükskõik millise osa oma otstarbest ning mis ka mõtet omab. 

(Näiteks teegis olev funktsioon ruutjuure arvutamiseks omab otstarvet, mis on täiesti sõltumatu rakendusest. Seega, alapunkt 2d nõuab, et iga rakenduse poolt pakutav funktsioon või andmekogum, mida see funktsioon kasutaks, poleks kohustuslik: kui rakendus neid funktsioone või andmeid ei paku, peab ruutjuure funktsioon ikkagi arvutama ruutjuurt.)

Need nõuded kehtivad nii muudetud teosele kui ka tervikule. Kui eristatavad osad teosest ei ole tuletatud Teegist ja neid võib mõistlikult pidada iseseisvateks ja eraldi teosteks, siis käesolev Litsents ja selle tingimused ei kehti nende osade suhtes kui Te levitate neid kui eraldi teoseid. Aga kui Te levitate samu osasid osana tervikust, mis on Teegil põhinev teos, peab levitamine toimuma vastavalt käesoleva Litsentsi tingimustele, mille lubadused teistele litsensiaatidele laienevad kogu teosele ja seega igale osale, olenemata sellest, kes selle kirjutas. Seega pole käesoleva punkti eesmärk nõuda õigusi või vaidlustada Teie õigusi teosele, mille Te olete tervikuna loonud; pigem on eesmärk kasutada õigust suunata Teegil põhinevate teoste või ühisteoste levitamist.

Lisaks, ainuüksi asjaolu, et ühtsesse levitamis- või säilitusvormi on liidetud teine teos, mis ei põhine Teegil, Teegiga (või Teegil põhineva teosega), ei muuda nimetatud teost käesoleva Litsentsi alla kuuluvaks.

3. Te võite valida, et teatud Teegi koopiale kehtivad käesoleva Litsentsi asemel tavalise GNU Üldise Avaliku Litsentsi tingimused. Selleks peate Te muutma kõiki märkeid, mis viitavad käesolevale Litsentsile, nii et need viitaksid selle asemel tavalisele GNU Üldise Avaliku Litsentsi versioonile 2. (Kui ilmub uuem GNU Üldise Avaliku Litsentsi versioon kui praegune versioon 2, võite täpsustada selle versiooni kui soovite.) Ärge tehke neis märgetes muid muudatusi.

Kui teatud koopiale on nimetatud muudatus tehtud, on see selle koopia suhtes pöördumatu, nii et tavaline GNU Üldine Avalik Litsents kehtib kõigi sellest koopiast tulenevate teoste ja järgnevate koopiate suhtes.

See võimalus on kasulik, kui Te soovite kopeerida osa Teegi koodist programmi, mis pole Teek.

4. Te võite Teeki kopeerida ja levitada (või punkti 2 kohaselt Teegi osa või Teegil põhinevat teost) objektkoodina või käivitataval kujul vastavalt punktide 1 ja 2 kohaselt eeldusel, et Te lisate sellele täieliku vastava masinloetava lähteteksti, mida peab levitama vastavalt punktides 1 ja 2 toodud tingimustele, vormis, mida kasutatakse valdavalt tarkvara vahendustegevuses.

Kui objektkoodi levitamine toimub ligipääsu pakkumisega kopeerimiseks määratud kohas, siis ligipääsu pakkumine lähteteksti kopeerimiseks samast kohast loetakse võrdseks lähteteksti levitamisega, kuigi kolmandad osapooled pole kohustatud koos objektkoodiga lähteteksti kopeerima.

5. Programmi, mis ei sisalda Teegi osa ega Teegist tuletatud teost, aga on loodud töötama koos Teegiga kompileerimise kaudu või lingitud sellega, kutsutakse "Teeki kasutavaks teoseks". Selline teos ei ole eraldiseisvana Teegist tuletatud teos ja ei ole seega käesoleva Litsentsiga kaetud.

Siiski, "Teeki kasutava teose" Teegiga linkimine loob käivitatava vormi, mis on Teegist tuletatud (sest see sisaldab Teegi osi), mitte "Teeki kasutava teose". Käivitatav vorm on seega käesoleva Litsentsiga kaetud. Punktis 6 sätestatakse selliste käivitatavate vormide levitamise tingimused.

Kui "Teeki kasutav teos" kasutab materjali Teegi osaks olevast päisefailist, võib teose objektkood olla Teegist tuletatud teos kuigi lähtekood seda pole. Kas see on tõene, on eriti tähtis, kui teost saab linkida ilma Teegita, või teos ise on Teek. Kas see on tõene, ei ole täpselt seadusega sätestatud.

Kui selline objektfail kasutab ainult arvparameetreid, andmete struktuuri paigutust ja lisandeid, väikseid makrosid ja väikseid inline funktsioone (kümme märki või vähem pikad), siis pole objektfaili kasutamine piiratud, vaatamata sellele, et see on juriidiliselt tuletatud teos. (Käivitatavad failid, mis sisaldavad seda objektkoodi ja osi Teegist on ikkagi kaetud punktiga 6.) 

Vastasel juhul, kui teos tuleneb Teegist, võite Te levitada teose objektkoodi vastavalt punktis 6 toodud tingimustele. Iga käivitatav vorm, mis sisaldab teost, käib samuti punkti 6 alla, vaatamata sellele kas need on otseselt Teegiga seotud. 

6. Ülaltoodud punktide erandina võite Te kombineerida või linkida "Teeki kasutava teose" Teegiga, et luua teost, mis sisaldab Teegi osi, ning levitada seda teost vastavalt oma tingimustele, eeldusel, et tingimused lubavad teose muutmist kliendi soovil ning pöördprojekteerimist (reverse engineering) selliste muudatuste silumiseks.

Te peate andma silmatorkavad märked igale Teeki kasutava teose koopiale, et selles on kasutatud Teeki ning et Teegi kasutamine on kaetud käesoleva Litsentsiga. Te peate pakkuma käesoleva Litsentsi koopiat. Kui teos kuvab käivitamisel autoriõiguse märked, peate Te lisama neile ka Teegi autoriõiguse märke ja viite, mis juhatab kasutaja käesoleva Litsentsi koopia juurde. Samuti peate Te tegema ühe järgmistest asjadest:

a) Lisama teosele täieliku vastava masinloetava Teegi lähteteksti, kaasa arvatud muudatused, mida kasutati teoses (mida peab levitama vastavalt Punktidele 1 ja 2); ja, kui teos on Teegiga lingitud käivitatav vorm, koos täieliku masinloetava "Teeki kasutava teose" objektkoodiga ja/või lähtekoodiga, et kasutaja saaks muuta Teeki ja uuesti linkida, et valmistada muudetud käivitatavat vormi, mis sisaldab muudetud Teeki. (On arusaadav, et kasutaja, kes muudab Teegi definitsioonifailide sisu, ei ole tingimata võimeline rakendust uuesti kompileerima, et muudetud definitsioone kasutada.) 

b) Kasutama Teegiga linkimiseks sobivat jagatud mehanismi. Mehanism on sobiv kui see (1) kasutab käitusajal koopiat Teegist, mis juba on kasutaja arvutisüsteemis, mitte ei kopeeri teegi funktsioone käivitatavasse vormi, ja (2) töötab korralikult teegi muudetud variandiga, kui kasutaja selle installeerib, tingimusel, et muudetud variant on liides-ühilduv variandiga, millega teos tehti. 

c) Lisama teosele kirjaliku pakkumise, mis kehtib vähemalt 3 aastat, et anda samale kasutajale alapunktis 6a nimetatud materjalid, mitte kallimalt kui levitamise hinnaga.

d) Kui teost levitatakse ligipääsu pakkumise teel koopiale määratud kohas, võrdub pakkumine ligipääsuga kopeerida ülalnimetatud materjalid samast kohast.

e) Kontrollima, et kasutaja on juba saanud koopia nii nendest materjalidest või sa oled juba saatnud sellel kasutajale koopia.

Käivitatava vormi jaoks peab "Teeki kasutava teose" nõutud vorm sisaldama andmeid ja utiliite, mis on vajalikud käivitatava vormi taasloomiseks. Siiski, erilise erandina, ei pea levitatavad materjalid sisaldama midagi (ei lähte- ega kahendvormis), mida tavaliselt levitatakse koos operatsioonisüsteemi põhiliste osadega (kompilaator, kernel jne.), millel käivitatav vorm töötab, välja arvatud juhul kui see osa käib käivitatava vormiga kaasas.

Võib juhtuda, et see nõue läheb vastuollu teiste kaitstud teekide litsentsi piirangutega, mis tavaliselt ei käi operatsioonisüsteemiga kaasas. Selline vastuolu tähendab, et Te ei saa kasutada käivitatavas vormis, mida Te levitate, neid ja Teeki koos.

7. Te võite panna teegi teenused, mis on Teegil põhinevad teosed, kõrvuti ühte teeki koos teiste teegi teenustega, mis ei ole kaetud käesoleva Litsentsiga, ja levitada sellist ühendatud teeki, tingimusel, et Teegil põhineva teose ja teiste teegi vahendite eraldi levitamine on lubatud ja et Te teete järgmised asjad: 

a) lisate ühendatud teegile koopia samast teosest, mis põhineb Teegil, mis ei ole ühendatud teiste Teegi vahenditega. Seda peab levitama vastavalt ülaltoodud punktidele.

b) annate koos ühendatud teegiga silmatorkavad märked asjaolust, et osa sellest on Teegil põhinev teos, ja seletate kust leida sama teose mitte ühendatud vorm.

8. Te ei tohi kopeerida, muuta, edasi litsentseerida, linkida või levitada Teeki teisiti kui käesolevas Litsentsis väljendatud. Iga katse kopeerida, muuta, edasi litsentseerida, linkida või levitada Teeki teisiti, on kehtetu ja lõpetab automaatselt Teie õigused vastavalt käesolevale Litsentsile. Siiski, osapoolte litsentse, kes on saanud koopiad või õigused Teilt vastavalt käesolevale Litsentsile, ei lõpetata nii kaua kui kõik osapooled täidavad täielikult kehtestatud tingimusi.

9. Te ei pea käesolevat Litsentsi arvestama, kuna Te pole sellele alla kirjutanud. Siiski, miski muu ei anna Teile luba muuta või levitada Teeki või sellest tulenevaid teoseid. Need tegevused on keelatud seadusega kui Te käesoleva Litsentsiga ei arvesta. Seega, muutes või levitades Teeki (või teegil põhinevat teost) näitate Te seda tehes oma nõusolekut käesoleva Litsentsiga ning kõigi selle Teegi või teegil põhineva teose kopeerimise, levitamise või muutmise terminite ja tingimustega. 

10. Iga kord kui Te Teeki (või Teegil põhinevat teost) edasi levitate, saab vastuvõtja automaatselt originaallitsenstiaarilt litsentsi kopeerida, levitada, linkida või muuta Teeki vastavalt nendele terminitele ja tingimustele. Te ei tohi kohustada vastuvõtjat rohkem millekski temale siin antud õiguste kasutamisel. Te ei ole vastutav kolmandate poolte poolt kehtestatud tingimuste täitmise eest. 

11. Kui kohtulahendi või väidetava patendiõiguse rikkumise tagajärjel või mõnel muul põhjusel (mis ei piirdu patendiga seotud küsimustega) on Teile pandud kohustusi, mis on vastuolus käesoleva Litsentsi tingimustega, siis ei vabasta need Teid käesoleva Litsentsi tingimuste täitmisest. Kui Te ei suuda Teeki levitada, täites samaaegselt käesoleva Litsentsi tingimusi ja teisi kohustusi, siis ei tohi Te Teeki üldse levitada. Näiteks kui patendilitsents ei luba Teil litsentsitasuta Teeki edasi levitada neile, kes on saanud Teilt või Teie kaudu Teegi koopia, siis ainus võimalus täita nimetatud patendilitsentsi ja käesoleva Litsentsi tingimusi on loobuda Teegi levitamisest.

Kui käesoleva punkti mõni osa osutub mingil asjaolul kehtetuks või mitterakendatavaks, siis käesoleva punkti ülejäänud osa loetakse rakendatavaks ja punkt tervikuna loetakse rakendatavaks ülejäänud tingimustel.

Käesoleva punkti eesmärk ei ole kellegi ajendamine patendi- või muude õiguste rikkumiseks või nende kehtivuse vaidlustamiseks; käesoleva punkti ainus eesmärk on vaba tarkvara levitamise süsteemi terviklikkuse kaitsmine, mida kasutavad avalike litsentside kasutajad. Paljud isikud on andnud suure panuse tarkvara laiale sektorile, mida levitatakse läbi nimetatud süsteemi usaldades järjekindlat süsteemi rakendumist; autor/annetaja on otsustaja, kas ta soovib tarkvara levitada mõne teise süsteemi kaudu ja litsenstiaat ei saa seda valikut mõjutada.

Selle punkti eesmärk on täpselt selgitada, mida soovitakse käesoleva Litsentsi ülejäänud osaga saavutada.

12. Kui Teegi levitamist ja/või kasutamist piiratakse mõnedes riikides kas patentide või autoriõigusega, võib autoriõiguse omanik, kes on Teegi litsenseerinud, lisada kindla geograafilise piirangu, jättes nimekirjast välja mainitud riigid, et levitamine oleks lubatud vaid nimekirjas toodud riikides või riikide vahel. Nimetatud juhul Litsents liitub piiranguga, nagu see on ära toodud käesoleva Litsentsi põhiosas.

13. Free Software Foundation võib aeg-ajalt välja anda ümbertöötatud ja/või uusi versioone Vähem Üldisest Avalikust Litsentsist. Need uued versioonid on käesoleva Litsentsi versiooniga sarnase sisuga, kuid võivad erineda detailides, osundades uusi probleeme või huviobjekte.

Igale versioonile antakse unikaalne versiooninumber. Kui Teegis tuuakse ära selle kohta kehtiva käesoleva litsentsi versiooninumber ja lisatakse märge "kõik hilisemad versioonid", siis on Teil võimalik valida, kas järgida selle või ükskõik millise hilisema Free Software Foundation'i poolt avaldatava versiooni tingimusi. Kui Teek ei täpsusta käesoleva litsentsi versiooninumbrit, on Teil võimalus valida ükskõik milline Free Software Foundation'i poolt avaldatud käesoleva Litsentsi versioon.

14. Kui Te soovite Teegi osi liita teiste vabade teekidega, mille levitamise tingimused on erinevad, siis kirjutage loa saamiseks autorile. Tarkvara puhul, mis on autoriõigusega kaitstud Free Software Foundation'i poolt, kontakteeruge Free Software Foundation'iga, mõnikord me teeme erandeid. Meie otsuse määravad kaks eesmärki: säilitada vaba staatus meie vaba tarkvara igasugustele derivaatidele ja edendada tarkvara jagamist ning taaskasutamist üldiselt.

GARANTII PUUDUMINE

15. KUNA PROGRAMM ON LITSENSEERITUD TASUTA, PUUDUB TEEGIL IGASUGUNE GARANTII ULATUSENI, MIDA LUBAB RAKENDATAV SEADUS. KUI KIRJALIKULT POLE TEISITI SÄTESTATUD, SIIS AUTORIÕIGUSE OMANIKUD JA/VÕI MUUD OSAPOOLED PAKUVAD TEEKI "NII, NAGU TA ON" ILMA IGASUGUSE VÄLJENDATUD VÕI OLETATAVA GARANTIITA, KAASA ARVATUD, KUID MITTE AINULT, KESKMISE/TAVALISE KVALITEEDI JA MINGILE KINDLALE EESMÄRGILE SOBIVUSE GARANTIITA. KOGU TEEGI KVALITEEDI JA TOIMIMISE RISK LANGEB TEILE. KUI TEEK ON PUUDULIK, KANNATE TEIE KÕIK TEENINDUSE, PARANDUSE VÕI TAASTAMISE KULUD.

16. MITTE MINGIL JUHUL, VÄLJA ARVATUD SIIS, KUI SEDA NÕUAB RAKENDATAV SEADUS VÕI KIRJALIKULT ON TEISITI KOKKU LEPITUD, POLE ÜKSKI AUTORIÕIGUSE OMANIK VÕI KOLMAS OSAPOOL, KES VÕIB MUUTA JA/VÕI LEVITADA TEEKI VASTAVALT ÜLALPOOL TOODUD TINGIMUSTELE, TEIE EES VASTUTAV KAHJUSTUSTE EEST, KAASA ARVATUD IGASUGUSED ÜLDISED, SPETSIIFILISED, JUHUSLIKUD VÕI TAGAJÄRJEL TEKKINUD KAHJUD, MIS TULENEVAD KAS TEEGI KASUTAMISEST VÕI VÕIMATUSEST TEEKI KASUTADA (KAASA ARVATUD, KUID MITTE AINULT, TEIE VÕI KOLMANDATE OSAPOOLTE ANDMETE KADUMINE VÕI ANDMETE MUUTMINE VÕI TEEGI VÕIMETUS TÖÖTADA KOOS MISTAHES MUU TARKVARAGA), ISEGI SIIS, KUI VALDAJAT VÕI MUUD OSAPOOLT ON TEAVITATUD SELLISTE KAHJUDE VÕIMALIKKUSEST.

TERMINITE JA TINGIMUSTE LÕPP.

Kuidas rakendada oma uutele teekidele neid termineid ja tingimusi?

Kui Te loote uue teegi ja soovite, et see olekas avalikkusele võimalikult kasulik, soovitame selle muuta vabaks tarkvaraks, et igaüks saaks seda edasi levitada ja muuta. Te võite seda teha lubades edasi levitamist vastavalt käesolevatele tingimustele (või vastavalt tavalise Üldise Avaliku Litsentsi tingimustele). 

Et rakendada neid tingimusi, lisage teegile järgmised märkused. Kõige kindlam on lisada need märked iga lähtefaili algusse, et võimalikult efektiivselt teatada garantii puudumisest: igal failil peaks olema vähemalt üks "autoriõiguse" rida ja viide kohale, kust võib leida tervikliku märkuse.

üks rida teegi nime jaoks ja mida see teeb

Copyright (C) aasta autori nimi

Käesolev teek on vaba tarkvara. Te võite seda edasi levitada ja/või muuta vastavalt GNU Vähem Üldise Avaliku Litsentsi tingimustele, nagu need on Vaba Tarkvara Fondi poolt avaldatud; kas Litsentsi versioon number 2.1 või (vastavalt Teie valikule) ükskõik milline hilisem versioon.

Seda teeki levitatakse lootuses, et see on kasulik, kuid ILMA IGASUGUSE GARANTIITA; isegi KESKMISE/TAVALISE KVALITEEDI GARANTIITA või SOBIVUSELE TEATUD KINDLAKS EESMÄRGIKS. Üksikasjalise info saamiseks vaata GNU Üldist Vähem Avalikku Litsentsi.

Te peaks olema saanud GNU Üldise Vähem Avaliku Litsentsi koopia koos selle teegiga, kui ei, siis kontakteeruge Free Software Foundation'iga, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA 

Samuti lisage informatsioon, kuidas Teiega kontakteeruda kas posti või meili teel.

Te peaksite laskma oma tööandjal (kui te töötate programmeerijana), või koolil alla kirjutada autoriõiguslike pretensioonide loobumise kohta käivale dokumendile. Siin on näidis, muutke ise nimed:

Yoyodyne, Inc., loobub kõigist autoriõigustest teegile "Frob", mille on kirjutanud James Random Hacker.

allkiri, 1 April 1990

Ty Coon, President of Vice

----------------------------------------------

GNU LESSER GENERAL PUBLIC LICENSE

Version 2.1, February 1999 


Copyright (C) 1991, 1999 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.

[This is the first released version of the Lesser GPL.  It also counts
 as the successor of the GNU Library Public License, version 2, hence
 the version number 2.1.]
Preamble

The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. 

This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. 

When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. 

To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. 

For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. 

We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. 

To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. 

Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. 

Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. 

When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. 

We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. 

For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. 

In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. 

Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. 

The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. 

TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". 

A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. 

The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) 

"Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. 

Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 

1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. 

You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 

2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: 

a) The modified work must itself be a software library. 
b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. 
c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. 
d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. 

(For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) 

These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. 

Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. 

In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 

3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. 

Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. 

This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 

4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. 

If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 

5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. 

However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. 

When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. 

If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) 

Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 

6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. 

You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: 

a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) 
b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. 
c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. 
d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. 
e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. 

For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. 

It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 

7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: 

a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. 
b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 

8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 

9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 

10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 

11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. 

If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. 

It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. 

This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 

12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 

13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. 

Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 

14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. 

NO WARRANTY 

15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 

16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 

END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Libraries

If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). 

To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. 


one line to give the library's name and an idea of what it does.
Copyright (C) year  name of author

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

Also add information on how to contact you by electronic and paper mail. 

You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: 


Yoyodyne, Inc., hereby disclaims all copyright interest in
the library `Frob' (a library for tweaking knobs) written
by James Random Hacker.

signature of Ty Coon, 1 April 1990
Ty Coon, President of Vice

That's all there is to it!
