§
    'ê[fu ã                   ó8  — d Z 	 ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlmZ ddlmZ 	 dZddlmZmZmZmZmZmZmZmZmZ ddlmZ ddlmZ dd	lm Z  n# e!$ r d
Ze"ZY nw xY wddl#m$Z$m%Z% ddl&m'Z' ddl(Z( G d„ d¦  «        Z) G d„ d¦  «        Z* G d„ d¦  «        Z+ G d„ de+¦  «        Z, G d„ de+¦  «        Z- G d„ de+¦  «        Z. G d„ de+¦  «        Z/ G d„ de+¦  «        Z0 G d„ de+¦  «        Z1 G d„ d e+¦  «        Z2 G d!„ d"e+¦  «        Z3 G d#„ d$e+¦  «        Z4 G d%„ d&e+¦  «        Z5 G d'„ d(e+¦  «        Z6 G d)„ d*e+¦  «        Z7 G d+„ d,e+¦  «        Z8 G d-„ d.¦  «        Z9 G d/„ d0¦  «        Z: G d1„ d2¦  «        Z;d3„ Z<d4„ Z=d`d5„Z>d`d6„Z?d7„ Z@dad9„ZAd:„ ZBd;„ ZCd<„ ZDd=„ ZE e9¦   «         ZFeFjG        ZGd>„ ZHd?„ ZId@„ ZJeKdAk    �rKddBlLmMZM  eM¦   «         ZNeN O                    dCdDdEdFdG¬H¦  «         eN O                    dIdJdKdLd
dM¬N¦  «         eN O                    dOdPdQdLd
dR¬N¦  «         eN O                    dSdTdUdLd
dV¬N¦  «         eN O                    dWdXdYejP         Q                    dZ¦  «        d[¬\¦  «         eN R                    ¦   «         \  ZSZT e9eSjU        ¬]¦  «        ZVeTrEeTD ]@ZWeV G                    eWeSjX        eSjY        eSjZ        eSj[        ¬^¦  «        Z\e\d
k    r
eSj[        r dS ŒAdS eV G                    eSjX        eSjY        eSjZ        eSj[        ¬_¦  «         dS dS )baH	  
The NLTK corpus and module downloader.  This module defines several
interfaces which can be used to download corpora, models, and other
data packages that can be used with NLTK.

Downloading Packages
====================
If called with no arguments, ``download()`` will display an interactive
interface which can be used to download and install new packages.
If Tkinter is available, then a graphical interface will be shown,
otherwise a simple text interface will be provided.

Individual packages can be downloaded by calling the ``download()``
function with a single argument, giving the package identifier for the
package that should be downloaded:

    >>> download('treebank') # doctest: +SKIP
    [nltk_data] Downloading package 'treebank'...
    [nltk_data]   Unzipping corpora/treebank.zip.

NLTK also provides a number of "package collections", consisting of
a group of related packages.  To download all packages in a
colleciton, simply call ``download()`` with the collection's
identifier:

    >>> download('all-corpora') # doctest: +SKIP
    [nltk_data] Downloading package 'abc'...
    [nltk_data]   Unzipping corpora/abc.zip.
    [nltk_data] Downloading package 'alpino'...
    [nltk_data]   Unzipping corpora/alpino.zip.
      ...
    [nltk_data] Downloading package 'words'...
    [nltk_data]   Unzipping corpora/words.zip.

Download Directory
==================
By default, packages are installed in either a system-wide directory
(if Python has sufficient access to write to it); or in the current
user's home directory.  However, the ``download_dir`` argument may be
used to specify a different installation target, if desired.

See ``Downloader.default_download_dir()`` for more a detailed
description of how the default download directory is chosen.

NLTK Download Server
====================
Before downloading any packages, the corpus and module downloader
contacts the NLTK download server, to retrieve an index file
describing the available packages.  By default, this index file is
loaded from ``https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/index.xml``.
If necessary, it is possible to create a new ``Downloader`` object,
specifying a different URL for the package index file.

Usage::

    python nltk/downloader.py [-d DATADIR] [-q] [-f] [-k] PACKAGE_IDS

or::

    python -m nltk.downloader [-d DATADIR] [-q] [-f] [-k] PACKAGE_IDS
é    N)Úmd5)ÚElementTreeT)	ÚButtonÚCanvasÚEntryÚFrameÚIntVarÚLabelÚMenuÚTclErrorÚTk)Ú	showerror)ÚTable)ÚShowTextF)Ú	HTTPErrorÚURLError)Úurlopenc                   óR   — e Zd ZdZ	 	 	 	 	 	 	 	 	 	 	 d
d„Zed„ ¦   «         Zd„ Zd	„ ZdS )ÚPackagea4  
    A directory entry for a downloadable package.  These entries are
    extracted from the XML index file that is downloaded by
    ``Downloader``.  Each package consists of a single file; but if
    that file is a zip file, then it can be automatically decompressed
    when the package is installed.
    NÚ ÚUnknownTc                 óD  — || _         	 |p|| _        	 || _        	 || _        	 t	          |¦  «        | _        	 t	          |¦  «        | _        	 || _        	 || _        	 |	| _	        	 |
| _
        	 || _        	 || _        	 t          j                             |                     d¦  «        d         ¦  «        d         }t          j                             |||z   ¦  «        | _        	 t'          t	          |¦  «        ¦  «        | _        	 | j                             |¦  «         d S )Nú/éÿÿÿÿé   )ÚidÚnameÚsubdirÚurlÚintÚsizeÚunzipped_sizeÚchecksumÚsvn_revisionÚ	copyrightÚcontactÚlicenseÚauthorÚosÚpathÚsplitextÚsplitÚjoinÚfilenameÚboolÚunzipÚ__dict__Úupdate)Úselfr   r   r   r   r!   r"   r#   r$   r%   r&   r'   r(   r0   ÚkwÚexts                   úC/var/www/piapp/venv/lib/python3.11/site-packages/nltk/downloader.pyÚ__init__zPackage.__init__Ð   s  € ð" ˆŒØ3à�J˜BˆŒ	Ø-àˆŒð	4ð ˆŒØEå˜‘I”IˆŒ	Ø:å  Ñ/Ô/ˆÔð	ð !ˆŒØ4à(ˆÔØ<à"ˆŒØ0àˆŒð	,ð ˆŒØ3àˆŒØ%åŒg×Ò˜sŸyšy¨™~œ~¨bÔ1Ñ2Ô2°1Ô5ˆÝœŸš V¨R°#©XÑ6Ô6ˆŒð	3õ �#˜e™*œ*Ñ%Ô%ˆŒ
ð	ð 	Œ×Ò˜RÑ Ô Ð Ð Ð ó    c                 óÎ   — t          | t          ¦  «        rt          j        | ¦  «        } | j        D ]$}t          | j        |         ¦  «        | j        |<   Œ%t          di | j        ¤ŽS )N© )Ú
isinstanceÚstrr   ÚparseÚattribr   )ÚxmlÚkeys     r6   ÚfromxmlzPackage.fromxml  sf   € å�c�3ÑÔð 	)ÝÔ# CÑ(Ô(ˆCØ”:ð 	3ð 	3ˆCÝ! #¤*¨S¤/Ñ2Ô2ˆCŒJ�s‰OˆOÝÐ$Ð$˜œÐ$Ð$Ð$r8   c                 ó"   — | j         |j         k     S ©N©r   ©r3   Úothers     r6   Ú__lt__zPackage.__lt__  ó   € ØŒw˜œÒ!Ð!r8   c                 ó   — d| j         z  S )Nz<Package %s>rD   ©r3   s    r6   Ú__repr__zPackage.__repr__   s   € Ø ¤Ñ'Ð'r8   )Nr   NNNNr   r   r   r   T©	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r7   ÚstaticmethodrA   rG   rK   r:   r8   r6   r   r   Ç   s“   € € € € € ðð ð ØØØØØØØØØØðC!ð C!ð C!ð C!ðJ ð%ð %ñ „\ð%ð"ð "ð "ð(ð (ð (ð (ð (r8   r   c                   ó<   — e Zd ZdZdd„Zed„ ¦   «         Zd„ Zd„ ZdS )Ú
Collectionz¨
    A directory entry for a collection of downloadable packages.
    These entries are extracted from the XML index file that is
    downloaded by ``Downloader``.
    Nc                 ó~   — || _         	 |p|| _        	 || _        	 d | _        	 | j                             |¦  «         d S rC   )r   r   ÚchildrenÚpackagesr1   r2   )r3   r   rU   r   r4   s        r6   r7   zCollection.__init__+  sR   € ØˆŒØ6à�J˜BˆŒ	Ø0à ˆŒð	,ð ˆŒð	3ð 	Œ×Ò˜RÑ Ô Ð Ð Ð r8   c                 ó  — t          | t          ¦  «        rt          j        | ¦  «        } | j        D ]$}t          | j        |         ¦  «        | j        |<   Œ%d„ |                      d¦  «        D ¦   «         }t          dd|i| j        ¤ŽS )Nc                 ó8   — g | ]}|                      d ¦  «        ‘ŒS )Úref©Úget)Ú.0Úchilds     r6   ú
<listcomp>z&Collection.fromxml.<locals>.<listcomp>C  s$   € ÐFÐFÐF¨�E—I’I˜eÑ$Ô$ÐFÐFÐFr8   ÚitemrU   r:   )r;   r<   r   r=   r>   ÚfindallrS   )r?   r@   rU   s      r6   rA   zCollection.fromxml=  sŠ   € å�c�3ÑÔð 	)ÝÔ# CÑ(Ô(ˆCØ”:ð 	3ð 	3ˆCÝ! #¤*¨S¤/Ñ2Ô2ˆCŒJ�s‰OˆOØFÐF°#·+²+¸fÑ2EÔ2EÐFÑFÔFˆÝÐ:Ð: 8Ð:¨s¬zÐ:Ð:Ð:r8   c                 ó"   — | j         |j         k     S rC   rD   rE   s     r6   rG   zCollection.__lt__F  rH   r8   c                 ó   — d| j         z  S )Nz<Collection %s>rD   rJ   s    r6   rK   zCollection.__repr__I  s   € Ø  4¤7Ñ*Ð*r8   rC   rL   r:   r8   r6   rS   rS   $  sk   € € € € € ðð ð!ð !ð !ð !ð$ ð;ð ;ñ „\ð;ð"ð "ð "ð+ð +ð +ð +ð +r8   rS   c                   ó   — e Zd ZdZdS )ÚDownloaderMessagezSA status message object, used by ``incr_download`` to
    communicate its progress.N)rM   rN   rO   rP   r:   r8   r6   rd   rd   R  s   € € € € € ð!ð !ð !ð !r8   rd   c                   ó   — e Zd ZdZd„ ZdS )ÚStartCollectionMessagez<Data server has started working on a collection of packages.c                 ó   — || _         d S rC   ©Ú
collection©r3   ri   s     r6   r7   zStartCollectionMessage.__init__Z  ó   € Ø$ˆŒˆˆr8   N©rM   rN   rO   rP   r7   r:   r8   r6   rf   rf   W  s)   € € € € € ØFÐFð%ð %ð %ð %ð %r8   rf   c                   ó   — e Zd ZdZd„ ZdS )ÚFinishCollectionMessagez=Data server has finished working on a collection of packages.c                 ó   — || _         d S rC   rh   rj   s     r6   r7   z FinishCollectionMessage.__init__a  rk   r8   Nrl   r:   r8   r6   rn   rn   ^  s)   € € € € € ØGÐGð%ð %ð %ð %ð %r8   rn   c                   ó   — e Zd ZdZd„ ZdS )ÚStartPackageMessagez-Data server has started working on a package.c                 ó   — || _         d S rC   ©Úpackage©r3   rt   s     r6   r7   zStartPackageMessage.__init__h  ó   € ØˆŒˆˆr8   Nrl   r:   r8   r6   rq   rq   e  ó)   € € € € € Ø7Ð7ðð ð ð ð r8   rq   c                   ó   — e Zd ZdZd„ ZdS )ÚFinishPackageMessagez.Data server has finished working on a package.c                 ó   — || _         d S rC   rs   ru   s     r6   r7   zFinishPackageMessage.__init__o  rv   r8   Nrl   r:   r8   r6   ry   ry   l  ó)   € € € € € Ø8Ð8ðð ð ð ð r8   ry   c                   ó   — e Zd ZdZd„ ZdS )ÚStartDownloadMessagez.Data server has started downloading a package.c                 ó   — || _         d S rC   rs   ru   s     r6   r7   zStartDownloadMessage.__init__v  rv   r8   Nrl   r:   r8   r6   r}   r}   s  r{   r8   r}   c                   ó   — e Zd ZdZd„ ZdS )ÚFinishDownloadMessagez/Data server has finished downloading a package.c                 ó   — || _         d S rC   rs   ru   s     r6   r7   zFinishDownloadMessage.__init__}  rv   r8   Nrl   r:   r8   r6   r€   r€   z  ó)   € € € € € Ø9Ð9ðð ð ð ð r8   r€   c                   ó   — e Zd ZdZd„ ZdS )ÚStartUnzipMessagez,Data server has started unzipping a package.c                 ó   — || _         d S rC   rs   ru   s     r6   r7   zStartUnzipMessage.__init__„  rv   r8   Nrl   r:   r8   r6   r„   r„   �  s)   € € € € € Ø6Ð6ðð ð ð ð r8   r„   c                   ó   — e Zd ZdZd„ ZdS )ÚFinishUnzipMessagez-Data server has finished unzipping a package.c                 ó   — || _         d S rC   rs   ru   s     r6   r7   zFinishUnzipMessage.__init__‹  rv   r8   Nrl   r:   r8   r6   r‡   r‡   ˆ  rw   r8   r‡   c                   ó   — e Zd ZdZd„ ZdS )ÚUpToDateMessagez/The package download file is already up-to-datec                 ó   — || _         d S rC   rs   ru   s     r6   r7   zUpToDateMessage.__init__’  rv   r8   Nrl   r:   r8   r6   rŠ   rŠ   �  r‚   r8   rŠ   c                   ó   — e Zd ZdZd„ ZdS )ÚStaleMessagez3The package download file is out-of-date or corruptc                 ó   — || _         d S rC   rs   ru   s     r6   r7   zStaleMessage.__init__™  rv   r8   Nrl   r:   r8   r6   r�   r�   –  s)   € € € € € Ø=Ð=ðð ð ð ð r8   r�   c                   ó   — e Zd ZdZd„ ZdS )ÚErrorMessagez Data server encountered an errorc                 óx   — || _         t          |t          ¦  «        rt          |¦  «        | _        d S || _        d S rC   )rt   r;   Ú	Exceptionr<   Úmessage)r3   rt   r“   s      r6   r7   zErrorMessage.__init__   s7   € ØˆŒÝ�g�yÑ)Ô)ð 	#Ý˜w™<œ<ˆDŒLˆLˆLà"ˆDŒLˆLˆLr8   Nrl   r:   r8   r6   r�   r�   �  s)   € € € € € Ø*Ð*ð#ð #ð #ð #ð #r8   r�   c                   ó   — e Zd ZdZd„ ZdS )ÚProgressMessagez4Indicates how much progress the data server has madec                 ó   — || _         d S rC   )Úprogress)r3   r—   s     r6   r7   zProgressMessage.__init__«  s   € Ø ˆŒˆˆr8   Nrl   r:   r8   r6   r•   r•   ¨  s)   € € € € € Ø>Ð>ð!ð !ð !ð !ð !r8   r•   c                   ó   — e Zd ZdZd„ ZdS )ÚSelectDownloadDirMessagez:Indicates what download directory the data server is usingc                 ó   — || _         d S rC   )Údownload_dir©r3   r›   s     r6   r7   z!SelectDownloadDirMessage.__init__²  s   € Ø(ˆÔÐÐr8   Nrl   r:   r8   r6   r™   r™   ¯  s)   € € € € € ØDÐDð)ð )ð )ð )ð )r8   r™   c                   óH  — e Zd ZdZdZ	 dZ	 dZ	 dZ	 dZ	 dZ		 d(d	„Z
	 	 	 	 	 	 d)d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd*d„Zd„ Zd„ Zd„ Zdddddd
dej        fd„Zd+d„Zd+d„Zd+d„Zd+d„Zd„ Zd,d„Zd+d„Zd„ Zd „ Z d!„ Z!d"„ Z"d#„ Z# e$e"e#¦  «        Z%d$„ Z&d%„ Z'd&„ Z( e$e'e(¦  «        Z)d'„ Z*dS )-Ú
Downloaderzy
    A class used to access the NLTK data server, which can be used to
    download corpora and other data packages.
    i  zChttps://raw.githubusercontent.com/nltk/nltk_data/gh-pages/index.xmlÚ	installedznot installedzout of dateÚpartialNc                 óØ   — |p| j         | _        	 i | _        	 i | _        	 || _        	 d | _        	 d | _        	 i | _        	 d | _        	 | j        €|  	                    ¦   «         | _        d S d S rC   )
ÚDEFAULT_URLÚ_urlÚ_collectionsÚ	_packagesÚ_download_dirÚ_indexÚ_index_timestampÚ_status_cacheÚ_errorsÚdefault_download_dir)r3   Úserver_index_urlr›   s      r6   r7   zDownloader.__init__ä  s”   € Ø$Ð8¨Ô(8ˆŒ	Ø7àˆÔØEàˆŒØ?à)ˆÔØIàˆŒØ@à $ˆÔð	Lð  ˆÔð	ð
 ˆŒØRð ÔÐ%Ø!%×!:Ò!:Ñ!<Ô!<ˆDÔÐÐð &Ð%r8   TFc                 ó  — d}|€| j         }t          d|z  ¦  «         |rjt          ddt          | j        ¦  «        z   z  ¦  «         t          d| j        z  ¦  «         t          ddt          | j        ¦  «        z   z  ¦  «         |dz  }dx}}	g }
|r|
                     d¦  «         |r|
                     d	¦  «         |
D �]�}t          d
|                     ¦   «         z  ¦  «         |dz  }t           t          | |¦  «        ¦   «         t          ¬¦  «        D �](}|  	                    ||¦  «        }|| j
        k    r|rŒ'|| j        k    rd}|| j        k    rd}	| j
        d| j        d| j        d| j        di|         }t          j        d|j        p|j        z   dd¬¦  «        dd …         }t          d                     ||j                             dd¦  «        |¦  «        ¦  «         |t          |                     d¦  «        ¦  «        z  }|r1|dk    r+t+          d¦  «        }|                     ¦   «         dv r  d S d}�Œ*t          ¦   «          �Œ’d}|r|dz  }|	r|dz  }t          t          j        |d z   dd!¬"¦  «        ¦  «         d S )#Nr   z!Using default data directory (%s)Ú=é   z Data server index for <%s>é   FrV   Úcollectionsz%s:r   ©r@   TÚ*Ú-ÚPÚ ú---------------------------éK   ú                           ©Úsubsequent_indenté   z  [{}] {} {}é   ú.Ú
zHit Enter to continue: )ÚxÚqz([*] marks installed packagesz+; [-] marks out-of-date or corrupt packagesz+; [P] marks partially installed collectionsú)éL   )r»   Úwidth)r¦   ÚprintÚlenr£   ÚappendÚ
capitalizeÚsortedÚgetattrr<   ÚstatusÚ	INSTALLEDÚSTALEÚPARTIALÚNOT_INSTALLEDÚtextwrapÚfillr   r   ÚformatÚljustr,   ÚinputÚlower)r3   r›   Úshow_packagesÚshow_collectionsÚheaderÚmore_promptÚskip_installedÚlinesÚstaler    Ú
categoriesÚcategoryÚinforË   Úprefixr   Ú
user_inputÚmsgs                     r6   ÚlistzDownloader.list	  sç  € ð ˆØÐØÔ-ˆLÝÐ5¸ÑDÑEÔEÐEØð 	Ý�#˜�c $¤)™nœnÑ,Ñ-Ñ.Ô.Ð.ÝÐ/°$´)Ñ;Ñ<Ô<Ð<Ý�#˜�c $¤)™nœnÑ,Ñ-Ñ.Ô.Ð.Ø�Q‰JˆEØÐˆ�àˆ
Øð 	*Ø×Ò˜jÑ)Ô)Ð)Øð 	-Ø×Ò˜mÑ,Ô,Ð,Ø"ð 	ñ 	ˆHÝ�%˜(×-Ò-Ñ/Ô/Ñ/Ñ0Ô0Ð0Ø�Q‰JˆEÝÐ6�w t¨XÑ6Ô6Ñ8Ô8½cÐBÑBÔBð ñ �ØŸš T¨<Ñ8Ô8�Ø˜Tœ^Ò+Ð+°Ð+ØØ˜TœZÒ'Ð'Ø �EØ˜Tœ\Ò)Ð)Ø"�Gà”N CØ”J Ø”L #ØÔ&¨ð	ð
 ô�õ  ”}Ø ¤	Ð 4¨T¬WÑ5°rÈXðñ ô à�#�#ô�õ �n×+Ò+¨F°D´G·M²MÀ"ÀcÑ4JÔ4JÈDÑQÔQÑRÔRÐRØ�˜TŸZšZ¨Ñ-Ô-Ñ.Ô.Ñ.�Øð  5¨2¢: :Ý!&Ð'@Ñ!AÔ!A�JØ!×'Ò'Ñ)Ô)¨ZÐ7Ð7Ø˜˜˜Ø�EùÝ‰GŒGˆG‰GØ-ˆØð 	AØÐ@Ñ@ˆCØð 	AØÐ@Ñ@ˆCÝ�hŒm˜C #™I¸ÀBÐGÑGÔGÑHÔHÐHÐHÐHr8   c                 ó\   — |                       ¦   «          | j                             ¦   «         S rC   )Ú_update_indexr¥   ÚvaluesrJ   s    r6   rV   zDownloader.packagesE  s(   € Ø×ÒÑÔÐØŒ~×$Ò$Ñ&Ô&Ð&r8   c                 óp   — |                       ¦   «          d„ | j                             ¦   «         D ¦   «         S )Nc                 ó.   — g | ]\  }}|j         d k    ¯|‘ŒS ©Úcorpora©r   ©r\   r   Úpkgs      r6   r^   z&Downloader.corpora.<locals>.<listcomp>K  ó(   € ÐWÐWÐW™	˜˜S¸s¼zÈYÒ?VÐ?V�Ð?VÐ?VÐ?Vr8   ©rå   r¥   ÚitemsrJ   s    r6   rê   zDownloader.corporaI  ó6   € Ø×ÒÑÔÐØWÐW T¤^×%9Ò%9Ñ%;Ô%;ÐWÑWÔWÐWr8   c                 óp   — |                       ¦   «          d„ | j                             ¦   «         D ¦   «         S )Nc                 ó.   — g | ]\  }}|j         d k    ¯|‘ŒS ré   rë   rì   s      r6   r^   z%Downloader.models.<locals>.<listcomp>O  rî   r8   rï   rJ   s    r6   ÚmodelszDownloader.modelsM  rñ   r8   c                 ó\   — |                       ¦   «          | j                             ¦   «         S rC   )rå   r¤   ræ   rJ   s    r6   r±   zDownloader.collectionsQ  s)   € Ø×ÒÑÔÐØÔ ×'Ò'Ñ)Ô)Ð)r8   c                 óZ   — t          |t          ¦  «        r|                      |¦  «        S |S rC   )r;   r<   rß   )r3   Ú
info_or_ids     r6   Ú_info_or_idzDownloader._info_or_idY  s,   € Ý�j¥#Ñ&Ô&ð 	Ø—9’9˜ZÑ(Ô(Ð(àÐr8   c              #   ó@  K  — |€| j         }t          |¦  «        V — t          |t          t          f¦  «        r|                      |||¦  «        E d {V —† d S 	 |                      |¦  «        }n7# t          t          f$ r#}t          d d|› d|› �¦  «        V — Y d }~d S d }~ww xY wt          |t          ¦  «        rFt          |¦  «        V — |                      |j        ||¦  «        E d {V —† t          |¦  «        V — d S |                      |||¦  «        E d {V —† d S )NzError loading ú: )r¦   r™   r;   rã   ÚtupleÚ_download_listrø   ÚOSErrorÚ
ValueErrorr�   rS   rf   Úincr_downloadrU   rn   Ú_download_package)r3   r÷   r›   Úforcerß   Úes         r6   rÿ   zDownloader.incr_downloadh  s‚  è è € àÐØÔ-ˆLÝ*¨<Ñ8Ô8Ð8Ð8Ð8õ �j¥4­ -Ñ0Ô0ð 	Ø×*Ò*¨:°|ÀUÑKÔKÐKÐKÐKÐKÐKÐKÐKØˆFð	Ø×#Ò# JÑ/Ô/ˆDˆDøÝ�Ð$ð 	ð 	ð 	Ý˜tÐ%G°jÐ%GÐ%GÀAÐ%GÐ%GÑHÔHÐHÐHÐHØˆFˆFˆFˆFˆFøøøøð	øøøõ
 �d�JÑ'Ô'ð 	IÝ(¨Ñ.Ô.Ð.Ð.Ð.Ø×)Ò)¨$¬-¸ÀuÑMÔMÐMÐMÐMÐMÐMÐMÐMÝ)¨$Ñ/Ô/Ð/Ð/Ð/Ð/Ð/ð ×-Ò-¨d°LÀ%ÑHÔHÐHÐHÐHÐHÐHÐHÐHÐHÐHs   ÁA/ Á/B#Â BÂB#c                 óX   — t          |t          ¦  «        rdS t          |j        ¦  «        S )Nr   )r;   r   rÆ   rV   )r3   r_   s     r6   Ú_num_packageszDownloader._num_packages„  s)   € Ý�d�GÑ$Ô$ð 	&Ø�1å�t”}Ñ%Ô%Ð%r8   c              #   óp  ‡ K  — t          t          |¦  «        ¦  «        D ]Y}	 ‰                      ||         ¦  «        ||<   Œ"# t          t          f$ r$}t          ||         |¦  «        V — Y d }~ d S d }~ww xY wt          ˆ fd„|D ¦   «         ¦  «        }d}t          |¦  «        D ]�\  }}t          |t          ¦  «        rd|z  }	nt          |j
        ¦  «        |z  }	‰                      |||¦  «        D ]8}
t          |
t          ¦  «        rt          ||
j        |	z  z   ¦  «        V — Œ4|
V — Œ9|d|	z  z  }Œ�d S )Nc              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S rC   )r  ©r\   r_   r3   s     €r6   ú	<genexpr>z,Downloader._download_list.<locals>.<genexpr>”  s1   øè è € ÐFÐF¸˜4×-Ò-¨dÑ3Ô3ÐFÐFÐFÐFÐFÐFr8   r   g      ð?éd   )ÚrangerÆ   rø   rý   rþ   r�   ÚsumÚ	enumerater;   r   rV   rÿ   r•   r—   )r3   rð   r›   r  Úir  Únum_packagesr—   r_   Údeltarâ   s   `          r6   rü   zDownloader._download_listŠ  s„  øè è € å•s˜5‘z”zÑ"Ô"ð 	ð 	ˆAðØ×+Ò+¨E°!¬HÑ5Ô5��a‘�øÝ�ZÐ(ð ð ð Ý" 5¨¤8¨QÑ/Ô/Ð/Ð/Ð/Ø������øøøøðøøøõ
 ÐFÐFÐFÐFÀÐFÑFÔFÑFÔFˆØˆÝ  Ñ'Ô'ð 	$ð 	$‰GˆAˆtÝ˜$¥Ñ(Ô(ð :Ø˜lÑ*��å˜DœMÑ*Ô*¨\Ñ9�Ø×)Ò)¨$°¸eÑDÔDð ð �Ý˜c¥?Ñ3Ô3ð Ý)¨(°S´\ÀEÑ5IÑ*IÑJÔJÐJÐJÐJÐJà�I�I�I�Ià˜˜e™Ñ#ˆHˆHð	$ð 	$s   £AÁA7ÁA2Á2A7c              #   óô  K  — t          |¦  «        V — t          d¦  «        V — |                      ||¦  «        }|s@|| j        k    r5t	          |¦  «        V — t          d¦  «        V — t          |¦  «        V — d S | j                             |j        d ¦  «         t          j
                             ||j        ¦  «        }t          j
                             |¦  «        r0|| j        k    rt          |¦  «        V — t          j        |¦  «         t          j
                             |¦  «        st          j        |¦  «         t          j
                             t          j
                             ||j        ¦  «        ¦  «        s7t          j        t          j
                             ||j        ¦  «        ¦  «         t'          |¦  «        V — t          d¦  «        V — 	 t)          |j        ¦  «        }t-          |d¦  «        5 }t/          d|j        dz  ¦  «        }t3          j        ¦   «         D ]a}	|                     d¦  «        }
|                     |
¦  «         |
s n2|	dz  dk    r(t          t;          ddd	|	|z  z  z   ¦  «        ¦  «        V — Œbd d d ¦  «         n# 1 swxY w Y   |                     ¦   «          n=# t>          $ r0}tA          |d
|j        ›d|j        ›d|›�¦  «        V — Y d }~d S d }~ww xY wtC          |¦  «        V — t          d¦  «        V — |j         "                    d¦  «        r°t          j
                             ||j        ¦  «        }|j#        sBt          j
                             t          j
                             ||j        ¦  «        ¦  «        rBtI          |¦  «        V — tK          ||d¬¦  «        D ]}||_&        |V — ŒtO          |¦  «        V — t          |¦  «        V — d S )Nr   r	  é   Úwbr   é @  é   éP   r¸   zError downloading z from <ú>:
  ú.zipF)Úverbose)(rq   r•   rË   rÌ   rŠ   ry   r©   Úpopr   r)   r*   r-   r.   ÚexistsrÍ   r�   ÚremoveÚmakedirsr   r}   r   r   ÚopenÚmaxr!   Ú	itertoolsÚcountÚreadÚwriteÚminÚcloserý   r�   r€   Úendswithr0   r„   Ú_unzip_iterrt   r‡   )r3   rß   r›   r  rË   ÚfilepathÚinfileÚoutfileÚ
num_blocksÚblockÚsr  Úzipdirrâ   s                 r6   r   zDownloader._download_package£  sL  è è € Ý! $Ñ'Ô'Ð'Ð'Ð'Ý˜aÑ Ô Ð Ð Ð ð —’˜T <Ñ0Ô0ˆØð 	˜ 4¤>Ò1Ð1Ý! $Ñ'Ô'Ð'Ð'Ð'Ý! #Ñ&Ô&Ð&Ð&Ð&Ý& tÑ,Ô,Ð,Ð,Ð,ØˆFð 	Ô×Ò˜tœw¨Ñ-Ô-Ð-õ ”7—<’< ¨d¬mÑ<Ô<ˆÝŒ7�>Š>˜(Ñ#Ô#ð 	 Ø˜œÒ#Ð#Ý" 4Ñ(Ô(Ð(Ð(Ð(ÝŒI�hÑÔÐõ Œw�~Š~˜lÑ+Ô+ð 	&ÝŒK˜Ñ%Ô%Ð%ÝŒw�~Š~�bœgŸlšl¨<¸¼ÑEÔEÑFÔFð 	AÝŒK�œŸš \°4´;Ñ?Ô?Ñ@Ô@Ð@õ # 4Ñ(Ô(Ð(Ð(Ð(Ý˜aÑ Ô Ð Ð Ð ð	Ý˜TœXÑ&Ô&ˆFÝ�h Ñ%Ô%ð V¨Ý   D¤I°Ñ$;Ñ<Ô<�
Ý&œ_Ñ.Ô.ð Vð V�EØŸš IÑ.Ô.�AØ—M’M !Ñ$Ô$Ð$Øð Ø˜Ø˜q‘y A’~�~Ý-­c°"°a¸"ÀÈ
Ñ@RÑ:SÑ6SÑ.TÔ.TÑUÔUÐUÐUÐUøðVð Vð Vñ Vô Vð Vð Vð Vð Vð Vð Vøøøð Vð Vð Vð Vð �LŠL‰NŒNˆNˆNøÝð 	ð 	ð 	ÝØ�Ø>B¼g¸g¸gÀtÄxÀxÀxÐQRÐQRÐSñô ð ð ð ð ˆFˆFˆFˆFˆFøøøøð	øøøõ $ DÑ)Ô)Ð)Ð)Ð)Ý˜bÑ!Ô!Ð!Ð!Ð!ð Œ=×!Ò! &Ñ)Ô)ð 
	/Ý”W—\’\ ,°´Ñ<Ô<ˆFð Œzð /�RœWŸ^š^­B¬G¯LªL¸ÀÄÑ,IÔ,IÑJÔJð /Ý'¨Ñ-Ô-Ð-Ð-Ð-Ý& x°ÀÐGÑGÔGð ð �Cà"&�C”KØ�I�I�I�IÝ(¨Ñ.Ô.Ð.Ð.Ð.å" 4Ñ(Ô(Ð(Ð(Ð(Ð(Ð(s=   Ç $J> ÈBJÊJ> ÊJ"Ê"J> Ê%J"Ê&J> Ê>
K8Ë%K3Ë3K8ú[nltk_data] c	           
      óÂ  ‡‡— t          j        t          |¬¦  «        Š|€|�|| _        |                      ¦   «          dS dˆˆfd„	}	|                      |||¦  «        D �] }
t          |
t          ¦  «        r“ |	|
j        ¦  «         |rt          |
j        ¦  «        ‚|r dS d| _
        |s_ ‰d¦  «         t          ¦   «                              ¦   «         }|dv r)|                      |
j        j        |||‰||¦  «        s dS n|dv r dS |�sRt          |
t           ¦  «        r) |	d	|
j        j        z  ¦  «         ‰d
z  Š ‰‰¦  «         Œìt          |
t$          ¦  «        rP ‰‰¦  «         ‰d d…         Š| j
        r |	d|
j        j        z  ¦  «         �Œ7 |	d|
j        j        z  ¦  «         �ŒQt          |
t&          ¦  «        r |	d|
j        j        ›d|›d�¦  «         �Œ„t          |
t(          ¦  «        r |	d|
j        j        z  d¦  «         �Œ´t          |
t*          ¦  «        r |	d|
j        j        z  d¦  «         �Œät          |
t.          ¦  «        r|
j        }�ŒdS )N)ÚfileTr   c                 óZ   •—  ‰t          j        | ‰|z   ‰|z   dz   ¬¦  «        ¦  «         d S )Nú    )Úinitial_indentr»   )rÐ   rÑ   )r,  Úprefix2rà   Úprint_tos     €€r6   Úshowz!Downloader.download.<locals>.show   sM   ø€ Ø�Ý”MØØ'-°Ñ'7Ø*0°7Ñ*:¸WÑ*Dðñ ô ñô ð ð ð r8   Fz(Error installing package. Retry? [n/y/e])ÚyÚY)r  ÚEúDownloading collection %rz   | éüÿÿÿz$Downloaded collection %r with errorszDone downloading collection %szDownloading package z to z...z!Package %s is already up-to-date!ú  zUnzipping %s.©r   )Ú	functoolsr    rÅ   r¦   Ú_interactive_downloadrÿ   r;   r�   r“   rþ   rª   rÔ   ÚstripÚdownloadrt   r   rf   ri   rn   rq   rŠ   r„   r.   r™   r›   )r3   r÷   r›   Úquietr  rà   Úhalt_on_errorÚraise_on_errorÚprint_error_tor6  râ   Úchoicer5  s        `      @r6   rA  zDownloader.downloadç  s  øø€ õ Ô$¥U°Ð@Ñ@Ô@ˆàÐð Ð'Ø%1�Ô"Ø×&Ò&Ñ(Ô(Ð(Ø�4ðð ð ð ð ð ð ð ×)Ò)¨*°lÀEÑJÔJð <8ñ <8�å˜c¥<Ñ0Ô0ð )Ø�D˜œÑ%Ô%Ð%Ø%ð 6Ý(¨¬Ñ5Ô5Ð5Ø$ð %Ø$˜u˜uØ#'�D”LØ ð )Ø ˜Ð!KÑLÔLÐLÝ!&¡¤§¢¡¤˜Ø! ZÐ/Ð/Ø#'§=¢=Ø #¤¤Ø ,Ø %Ø %Ø &Ø -Ø .ñ$ô $ð 	-ð (- u uð	-ð $ zÐ1Ð1Ø#( 5 5ð ñ !8å! #Õ'=Ñ>Ô>ð 8Ø˜Ð8¸3¼>Ô;LÑLÑMÔMÐMØ 'Ñ)˜Ø ˜ Ñ(Ô(Ð(Ð(Ý# CÕ)@ÑAÔAð 8Ø ˜ Ñ(Ô(Ð(Ø!'¨¨¨¤˜Øœ<ð WØ ˜DØ FØ"%¤.Ô"3ñ!4ñô ð ñ ð
 !˜DÐ!AÀCÄNÔDUÑ!UÑVÔVÐVÑVõ $ CÕ)<Ñ=Ô=ð 8Ø˜˜à"œ{œ~˜~˜~¨|¨|¨|ð=ñô ð ñ õ $ C­Ñ9Ô9ð 
8Ø˜Ð@À3Ä;Ä>ÑQÐSWÑXÔXÐXÑXõ $ CÕ):Ñ;Ô;ð 8Ø˜˜_¨s¬{Ô/CÑCÀTÑJÔJÐJÑJõ $ CÕ)AÑBÔBð 8Ø'*Ô'7˜ùØˆtr8   c                 ó@   — |                       ||¦  «        | j        k    S rC   )rË   rÍ   ©r3   r÷   r›   s      r6   Úis_stalezDownloader.is_staleH  s   € Ø�{Š{˜: |Ñ4Ô4¸¼
ÒBÐBr8   c                 ó@   — |                       ||¦  «        | j        k    S rC   )rË   rÌ   rH  s      r6   Úis_installedzDownloader.is_installedK  s   € Ø�{Š{˜: |Ñ4Ô4¸¼ÒFÐFr8   c                 óv   — |€| j                              ¦   «          d S | j                              |d ¦  «         d S rC   )r©   Úclearr  ©r3   r   s     r6   Úclear_status_cachezDownloader.clear_status_cacheN  sA   € Øˆ:ØÔ×$Ò$Ñ&Ô&Ð&Ð&Ð&àÔ×"Ò" 2 tÑ,Ô,Ð,Ð,Ð,r8   c                 óB  ‡ — |€‰ j         }‰                      |¦  «        }t          |t          ¦  «        rcˆ fd„|j        D ¦   «         }‰ j        |v r‰ j        S ‰ j        |v r‰ j        S ‰ j        |v r‰ j        |v r‰ j        S ‰ j        |v r‰ j        S ‰ j        S t          j
                             ||j        ¦  «        }|‰ j         k    r‰                      ||¦  «        S |j        ‰ j        vr#‰                      ||¦  «        ‰ j        |j        <   ‰ j        |j                 S )zÀ
        Return a constant describing the status of the given package
        or collection.  Status can be one of ``INSTALLED``,
        ``NOT_INSTALLED``, ``STALE``, or ``PARTIAL``.
        Nc                 óD   •— g | ]}‰                      |j        ¦  «        ‘ŒS r:   )rË   r   )r\   rí   r3   s     €r6   r^   z%Downloader.status.<locals>.<listcomp>`  s'   ø€ ÐGÐGÐG°#˜$Ÿ+š+ c¤fÑ-Ô-ÐGÐGÐGr8   )r¦   rø   r;   rS   rV   rÍ   rÎ   rÌ   rÏ   r)   r*   r-   r.   Ú_pkg_statusr   r©   )r3   r÷   r›   rß   Ú
pkg_statusr'  s   `     r6   rË   zDownloader.statusT  s<  ø€ ð ÐØÔ-ˆLØ×Ò 
Ñ+Ô+ˆõ �d�JÑ'Ô'ð 	3ØGÐGÐGÐG¸¼ÐGÑGÔGˆJØŒz˜ZÐ'Ð'Ø”zÐ!Ø” Ð+Ð+Ø”|Ð#Ø” :Ð-Ð-°$Ô2DÈ
Ð2RÐ2RØ”|Ð#ØÔ# zÐ1Ð1ØÔ)Ð)à”~Ð%õ ”w—|’| L°$´-Ñ@Ô@ˆHØ˜tÔ1Ò1Ð1Ø×'Ò'¨¨hÑ7Ô7Ð7à”7 $Ô"4Ð4Ð4Ø26×2BÒ2BÀ4ÈÑ2RÔ2R�DÔ& t¤wÑ/ØÔ)¨$¬'Ô2Ð2r8   c                 óŒ  — t           j                             |¦  «        s| j        S 	 t          j        |¦  «        }n# t
          $ r
 | j        cY S w xY w|j        t          |j        ¦  «        k    r| j	        S t          |¦  «        |j        k    r| j	        S |                     d¦  «        r“|d d…         }t           j                             |¦  «        s| j        S t           j                             |¦  «        s| j	        S t          d„ t          j        |¦  «        D ¦   «         ¦  «        }||j        k    r| j	        S | j        S )Nr  r;  c              3   ó–   K  — | ]D\  }}}|D ];}t          j        t           j                             ||¦  «        ¦  «        j        V — Œ<ŒEd S rC   )r)   Ústatr*   r-   Úst_size)r\   ÚdÚ_ÚfilesÚfs        r6   r  z)Downloader._pkg_status.<locals>.<genexpr>�  sp   è è € ð  ð  á�A�q˜%Øð ð  ð õ ”�œŸš Q¨Ñ*Ô*Ñ+Ô+Ô3ð ð  ð  ð  ð  ð  ð  r8   )r)   r*   r  rÏ   rV  rý   rW  r    r!   rÍ   Úmd5_hexdigestr#   r%  rÌ   Úisdirr  Úwalkr"   )r3   rß   r'  ÚfilestatÚunzipdirr"   s         r6   rR  zDownloader._pkg_statusv  sV  € ÝŒw�~Š~˜hÑ'Ô'ð 	&ØÔ%Ð%ð	&Ý”w˜xÑ(Ô(ˆHˆHøÝð 	&ð 	&ð 	&ØÔ%Ð%Ð%Ð%ð	&øøøàÔ�s 4¤9™~œ~Ò-Ð-Ø”:Ðõ ˜Ñ"Ô" d¤mÒ3Ð3Ø”:Ðð ×Ò˜VÑ$Ô$ð 	"Ø   ”}ˆHÝ”7—>’> (Ñ+Ô+ð &Ø”~Ð%Ý”7—=’= Ñ*Ô*ð "Ø”zÐ!åð  ð  å#%¤7¨8Ñ#4Ô#4ð ñ  ô  ñ ô ˆMð
  Ô 2Ò2Ð2Ø”zÐ!ð Œ~Ðs   ¨= ½AÁAc                 óÈ   — |                       ¦   «          |                      ¦   «         D ]8}|                      |¦  «        | j        k    r|                      |||¬¦  «         Œ9dS )zA
        Re-download any packages whose status is STALE.
        )rB  rà   N)rO  rV   rË   rÍ   rA  )r3   rB  rà   rí   s       r6   r2   zDownloader.updateš  si   € ð 	×ÒÑ!Ô!Ð!Ø—=’=‘?”?ð 	?ð 	?ˆCØ�{Š{˜3ÑÔ 4¤:Ò-Ð-Ø—’˜c¨°v�Ñ>Ô>Ð>øð	?ð 	?r8   c                 óÄ  — | j         �(|€&t          j        ¦   «         | j        z
  | j        k    sdS |p| j        | _        t
          j                             t          j	        t          | j        ¦  «        ¦  «                             ¦   «         ¦  «        | _         t          j        ¦   «         | _        d„ | j                              d¦  «        D ¦   «         }d„ |D ¦   «         | _        d„ | j                              d¦  «        D ¦   «         }d„ |D ¦   «         | _        | j                             ¦   «         D ]„}t!          |j        ¦  «        D ]m\  }}|| j        v r| j        |         |j        |<   Œ$|| j        v r| j        |         |j        |<   ŒCt%          d                     |¦  «        ¦  «         |j        |= ŒnŒ…| j                             ¦   «         D ]u}i }|g}|D ]R}t)          |t*          ¦  «        r|                     |j        ¦  «         Œ2t)          |t.          ¦  «        r|||j        <   ŒRŒS|                     ¦   «         |_        Œv| j                             ¦   «          dS )	z–A helper function that ensures that self._index is
        up-to-date.  If the index is older than self.INDEX_TIMEOUT,
        then download it again.Nc                 óB   — g | ]}t                                |¦  «        ‘ŒS r:   )r   rA   ©r\   Úps     r6   r^   z,Downloader._update_index.<locals>.<listcomp>½  s$   € ÐXÐXÐX¨1•G—O’O AÑ&Ô&ÐXÐXÐXr8   úpackages/packagec                 ó   — i | ]
}|j         |“ŒS r:   rD   rd  s     r6   ú
<dictcomp>z,Downloader._update_index.<locals>.<dictcomp>¾  s   € Ð4Ð4Ð4 a˜!œ$ Ð4Ð4Ð4r8   c                 óB   — g | ]}t                                |¦  «        ‘ŒS r:   )rS   rA   ©r\   Úcs     r6   r^   z,Downloader._update_index.<locals>.<listcomp>Á  s3   € ð 
ð 
ð 
Ø&'�J×Ò˜qÑ!Ô!ð
ð 
ð 
r8   úcollections/collectionc                 ó   — i | ]
}|j         |“ŒS r:   rD   rj  s     r6   rh  z,Downloader._update_index.<locals>.<dictcomp>Ä  s   € Ð:Ð:Ð:¨˜QœT 1Ð:Ð:Ð:r8   z.removing collection member with no package: {})r§   Útimer¨   ÚINDEX_TIMEOUTr£   ÚnltkÚ	internalsÚElementWrapperr   r=   r   Úgetrootr`   r¥   r¤   ræ   r  rU   rÅ   rÒ   r;   rS   Úextendr   r   rV   r©   rM  )	r3   r   rV   r±   ri   r  Úchild_idÚqueuer]   s	            r6   rå   zDownloader._update_index§  s“  € ð ŒKÐØˆÝŒy‰{Œ{˜TÔ2Ñ2°TÔ5GÒGÐGàˆFð Ð$˜4œ9ˆŒ	õ ”n×3Ò3ÝÔ�g d¤iÑ0Ô0Ñ1Ô1×9Ò9Ñ;Ô;ñ
ô 
ˆŒõ !%¤	¡¤ˆÔð YÐX°´×0CÒ0CÐDVÑ0WÔ0WÐXÑXÔXˆØ4Ð4¨8Ð4Ñ4Ô4ˆŒð
ð 
Ø+/¬;×+>Ò+>Ð?WÑ+XÔ+Xð
ñ 
ô 
ˆð ;Ð:¨kÐ:Ñ:Ô:ˆÔð Ô+×2Ò2Ñ4Ô4ð 	/ð 	/ˆJÝ(¨Ô)<Ñ=Ô=ð /ð /‘��8Ø˜tœ~Ð-Ð-Ø-1¬^¸HÔ-E�JÔ'¨Ñ*Ð*Ø Ô!2Ð2Ð2Ø-1Ô->¸xÔ-H�JÔ'¨Ñ*Ð*åØH×OÒOØ$ñô ñô ð ð
 #Ô+¨AÐ.Ð.ð/ð Ô+×2Ò2Ñ4Ô4ð 
	4ð 
	4ˆJØˆHØ�LˆEØð ð �Ý˜e¥ZÑ0Ô0ð Ø—L’L ¤Ñ0Ô0Ð0Ð0Ý ¥wÑ/Ô/ð Ø).�H˜UœXÑ&Ð&àØ"*§/¢/Ñ"3Ô"3ˆJÔÐð 	Ô× Ò Ñ"Ô"Ð"Ð"Ð"r8   c                 ó8   — |                       ¦   «          | j        S )z±
        Return the XML index describing the packages available from
        the data server.  If necessary, this index will be downloaded
        from the data server.
        )rå   r§   rJ   s    r6   ÚindexzDownloader.indexå  s   € ð 	×ÒÑÔÐØŒ{Ðr8   c                 ó¦   — |                       ¦   «          || j        v r| j        |         S || j        v r| j        |         S t          d|z  ¦  «        ‚)zKReturn the ``Package`` or ``Collection`` record for the
        given item.úPackage %r not found in index)rå   r¥   r¤   rþ   rN  s     r6   rß   zDownloader.infoî  s`   € ð 	×ÒÑÔÐØ�”ÐÐØ”> "Ô%Ð%Ø�Ô"Ð"Ð"ØÔ$ RÔ(Ð(ÝÐ8¸2Ñ=Ñ>Ô>Ð>r8   c                 ó6  — |                       ¦   «          | j                             d¦  «        D ]}|                     d¦  «        |k    r|c S Œ | j                             d¦  «        D ]}|                     d¦  «        |k    r|c S Œ t	          d|z  ¦  «        ‚)z-Return the XML info record for the given itemrf  r   rl  rz  )rå   r§   r`   r[   rþ   )r3   r   rt   ri   s       r6   ÚxmlinfozDownloader.xmlinfoø  sµ   € à×ÒÑÔÐØ”{×*Ò*Ð+=Ñ>Ô>ð 	ð 	ˆGØ�{Š{˜4Ñ Ô  BÒ&Ð&Ø���ð 'àœ+×-Ò-Ð.FÑGÔGð 	"ð 	"ˆJØ�~Š~˜dÑ#Ô# rÒ)Ð)Ø!Ð!Ð!Ð!ð *åÐ8¸2Ñ=Ñ>Ô>Ð>r8   c                 ó   — | j         S )z)The URL for the data server's index file.)r£   rJ   s    r6   Ú_get_urlzDownloader._get_url  s
   € àŒyÐr8   c                 óZ   — | j         }	 |                      |¦  «         dS #  || _         ‚ xY w)z…
        Set a new URL for the data server. If we're unable to contact
        the given url, then the original url is kept.
        N)r£   rå   )r3   r   Úoriginal_urls      r6   Ú_set_urlzDownloader._set_url  s=   € ð
 ”yˆð	Ø×Ò˜sÑ#Ô#Ð#Ð#Ð#øð	Ø$ˆDŒIØøøøs   ‰   
*c                 óØ  — dt           j        v rdS t          j        j        D ]D}t           j                             |¦  «        r#t          j                             |¦  «        r|c S ŒEt          j	        dk    r!dt           j        v rt           j        d         }n4t           j         
                    d¦  «        }|dk    rt          d¦  «        ‚t           j                             |d¦  «        S )a×  
        Return the directory to which packages will be downloaded by
        default.  This value can be overridden using the constructor,
        or on a case-by-case basis using the ``download_dir`` argument when
        calling ``download()``.

        On Windows, the default download directory is
        ``PYTHONHOME/lib/nltk``, where *PYTHONHOME* is the
        directory containing Python, e.g. ``C:\Python25``.

        On all other platforms, the default directory is the first of
        the following which exists or which can be created with write
        permission: ``/usr/share/nltk_data``, ``/usr/local/share/nltk_data``,
        ``/usr/lib/nltk_data``, ``/usr/local/lib/nltk_data``, ``~/nltk_data``.
        ÚAPPENGINE_RUNTIMENÚwin32ÚAPPDATAz~/z+Could not find a default download directoryÚ	nltk_data)r)   Úenvironrp  Údatar*   r  rq  Úis_writableÚsysÚplatformÚ
expanduserrþ   r-   )r3   ÚnltkdirÚhomedirs      r6   r«   zDownloader.default_download_dir  sÒ   € ð" ¥"¤*Ð,Ð,ØˆFõ ”y”~ð 	ð 	ˆGÝŒw�~Š~˜gÑ&Ô&ð ­4¬>×+EÒ+EÀgÑ+NÔ+Nð Ø���øõ Œ<˜7Ò"Ð" yµB´JÐ'>Ð'>Ý”j Ô+ˆGˆGõ ”g×(Ò(¨Ñ.Ô.ˆGØ˜$ŠˆÝ Ð!NÑOÔOÐOõ Œw�|Š|˜G [Ñ1Ô1Ð1r8   c                 ó   — | j         S )a  
        The default directory to which packages will be downloaded.
        This defaults to the value returned by ``default_download_dir()``.
        To override this default on a case-by-case basis, use the
        ``download_dir`` argument when calling ``download()``.
        )r¦   rJ   s    r6   Ú_get_download_dirzDownloader._get_download_dir@  s   € ð Ô!Ð!r8   c                 óF   — || _         | j                             ¦   «          d S rC   )r¦   r©   rM  rœ   s     r6   Ú_set_download_dirzDownloader._set_download_dirI  s%   € Ø)ˆÔàÔ× Ò Ñ"Ô"Ð"Ð"Ð"r8   c                 ó  — t           rV	 t          | ¦  «                             ¦   «          d S # t          $ r% t	          | ¦  «                             ¦   «          Y d S w xY wt	          | ¦  «                             ¦   «          d S rC   )ÚTKINTERÚDownloaderGUIÚmainloopr   ÚDownloaderShellÚrunrJ   s    r6   r?  z Downloader._interactive_downloadT  s‘   € õ ð 	(ð,Ý˜dÑ#Ô#×,Ò,Ñ.Ô.Ð.Ð.Ð.øÝð ,ð ,ð ,Ý Ñ%Ô%×)Ò)Ñ+Ô+Ð+Ð+Ð+Ð+ð,øøøõ ˜DÑ!Ô!×%Ò%Ñ'Ô'Ð'Ð'Ð's   ‰!, ¬+AÁA)NN)NTTTFF)NFrC   )Fr.  )+rM   rN   rO   rP   ro  r¢   rÌ   rÏ   rÍ   rÎ   r7   rã   rV   rê   rô   r±   rø   rÿ   r  rü   r   rŠ  ÚstderrrA  rI  rK  rO  rË   rR  r2   rå   rx  rß   r|  r~  r�  Úpropertyr   r«   r�  r’  r›   r?  r:   r8   r6   rž   rž   »  sµ  € € € € € ðð ð €Mðð X€Kð!ð €Ið$à#€Mðà€Eð"à€GðEð=ð =ð =ð =ðN ØØØØØð:Ið :Ið :Ið :Iðx'ð 'ð 'ðXð Xð XðXð Xð Xð*ð *ð *ðð ð ðIð Ið Ið Ið8&ð &ð &ð$ð $ð $ð2B)ð B)ð B)ðL ØØØØØØØ”zð_ð _ð _ð _ðBCð Cð Cð CðGð Gð Gð Gð-ð -ð -ð -ð 3ð  3ð  3ð  3ðD"ð "ð "ðH?ð ?ð ?ð ?ð<#ð <#ð <#ð <#ð|ð ð ð?ð ?ð ?ð	?ð 	?ð 	?ðð ð ð
ð 
ð 
ð ˆ(�8˜XÑ
&Ô
&€Cð%2ð %2ð %2ðN"ð "ð "ð#ð #ð #ð
 �8Ð-Ð/@ÑAÔA€Lð	(ð 	(ð 	(ð 	(ð 	(r8   rž   c                   ó>   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	S )
r—  c                 ó   — || _         d S rC   )Ú_ds)r3   Ú
dataservers     r6   r7   zDownloaderShell.__init__a  s   € ØˆŒˆˆr8   c                 óð   — t          d¦  «         dt          d„ |D ¦   «         ¦  «        z
  t          |¦  «        dz
  z  dz  }t          d|                     |¦  «        z   ¦  «         t          d¦  «         d S )NzK---------------------------------------------------------------------------éD   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S rC   )rÆ   )r\   Úos     r6   r  z;DownloaderShell._simple_interactive_menu.<locals>.<genexpr>f  s(   è è € Ð0Ð0 1�˜A™œÐ0Ð0Ð0Ð0Ð0Ð0r8   r   r¶   r2  )rÅ   r  rÆ   r-   )r3   ÚoptionsÚspcs      r6   Ú_simple_interactive_menuz(DownloaderShell._simple_interactive_menud  sq   € Ýˆh‰ŒˆØ•CÐ0Ð0¨Ð0Ñ0Ô0Ñ0Ô0Ñ0µc¸'±l´lÀQÑ6FÑGÈ#ÑMˆÝˆf�s—x’x Ñ(Ô(Ñ(Ñ)Ô)Ð)Ýˆh‰Œˆˆˆr8   c                 ó”  — t          d¦  «         	 |                      dddddd¦  «         t          d	¦  «                             ¦   «         }|st          ¦   «          ŒM|                     ¦   «                              ¦   «         d
         }|                     ¦   «         dd …         }	 |dk    r6t          ¦   «          | j                             | j        j        dd¬¦  «         n…|dk    r|  	                    ¦   «          nj|dk    r|  
                    ¦   «          nO|dv rd S |dk    r|                      |¦  «         n-|dk    r|                      ¦   «          nt          d|z  ¦  «         nR# t          $ r}t          d|z  ¦  «         Y d }~n1d }~wt          $ r!}t          d|j        z  ¦  «         Y d }~nd }~ww xY wt          ¦   «          �Œ¹)NúNLTK DownloaderTzd) Downloadzl) Listz
 u) Updatez	c) Configzh) Helpzq) QuitzDownloader> r   r   ÚlF)rØ   rÙ   Úhrk  )rÁ   rÀ   rX  ÚuzCommand %r unrecognizedzError reading from server: %szError connecting to server: %s)rÅ   r¥  rÔ   r@  rÕ   r,   r�  rã   r›   Ú_simple_interactive_helpÚ_simple_interactive_configÚ_simple_interactive_downloadÚ_simple_interactive_updater   r   Úreason)r3   rá   ÚcommandÚargsr  s        r6   r˜  zDownloaderShell.runj  s  € ÝÐÑ Ô Ð ð%	Ø×)Ò)ØØØØØØñô ð õ ˜~Ñ.Ô.×4Ò4Ñ6Ô6ˆJØð Ý‘”�ØØ ×&Ò&Ñ(Ô(×.Ò.Ñ0Ô0°Ô3ˆGØ×#Ò#Ñ%Ô% a b bÔ)ˆDðCØ˜c’>�>Ý‘G”G�GØ”H—M’M $¤(Ô"7ÀÐSW�MÑXÔXÐXÐXØ ’^�^Ø×1Ò1Ñ3Ô3Ð3Ð3Ø ’^�^Ø×3Ò3Ñ5Ô5Ð5Ð5Ø 
Ð*Ð*Ø�FØ ’^�^Ø×5Ò5°dÑ;Ô;Ð;Ð;Ø ’^�^Ø×3Ò3Ñ5Ô5Ð5Ð5åÐ3°jÑ@ÑAÔAÐAøøÝð ;ð ;ð ;ÝÐ5¸Ñ9Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:øøøøÝð Cð Cð CÝÐ6¸¼ÑAÑBÔBÐBÐBÐBÐBÐBÐBøøøøðCøøøõ ‰GŒGˆGñK%	s,   Â&A6E( ÄA	E( Å(
F7Å2F	Æ	F7ÆF2Æ2F7c                 ó€  — |rQ|D ]L}	 | j                              |d¬¦  «         Œ # t          t          f$ r}t	          |¦  «         Y d }~ŒEd }~ww xY wd S 	 t	          ¦   «          t	          d¦  «         t          d¦  «        }|                     ¦   «         dk    r)| j                              | j         j        ddd¬¦  «         Œn|                     ¦   «         d	v rd S |rc| 	                    ¦   «         D ]L}	 | j                              |d¬¦  «         Œ # t          t          f$ r}t	          |¦  «         Y d }~ŒEd }~ww xY wd S Œë)
Nr2  ©rà   Tz*Download which package (l=list; x=cancel)?ú  Identifier> r¨  F)rØ   rÙ   rÚ   ©rÀ   rÁ   r   )
r�  rA  rý   rþ   rÅ   rÔ   rÕ   rã   r›   r,   )r3   r±  Úargr  rá   r   s         r6   r­  z,DownloaderShell._simple_interactive_download“  s™  € Øð 	Øð ð �ðØ”H×%Ò% c°&Ð%Ñ9Ô9Ð9Ð9øÝ¥Ð,ð ð ð Ý˜!‘H”H�H�H�H�H�H�Høøøøðøøøðð ðÝ‘”�ÝÐBÑCÔCÐCÝ"Ð#3Ñ4Ô4�
Ø×#Ò#Ñ%Ô%¨Ò,Ð,Ø”H—M’MØœÔ-Ø$Ø$(Ø'+ð	 "ñ ô ð ð Ø×%Ò%Ñ'Ô'¨>Ð9Ð9Ø�FØð Ø(×.Ò.Ñ0Ô0ð %ð %˜ð%Ø œH×-Ò-¨b¸Ð-Ñ@Ô@Ð@Ð@øÝ '­Ð4ð %ð %ð %Ý! !™HœH˜H˜H˜H˜H˜H˜Høøøøð%øøøà�Eð)s,   ˆ%¥A¶A
Á
AÃ3DÄD:Ä!D5Ä5D:c           	      óv  — 	 g }dx}}t           t          | j        d¦  «        ¦   «         t          ¬¦  «        D ]K}| j                             |¦  «        | j        j        k    r!|                     |j        |j        f¦  «         ŒLt          ¦   «          |�rt          d¦  «         |D ]^\  }}t          j        d|z   dd¬	¦  «        d
d …         }t          d                     |                     dd¦  «        |¦  «        ¦  «         Œ_t          ¦   «          t          d¦  «        }|                     ¦   «         dk    rT|D ]O\  }}	 | j                             |d¬¦  «         Œ## t"          t$          f$ r}	t          |	¦  «         Y d }	~	ŒHd }	~	ww xY wd S |                     ¦   «         dv rd S nt          d¦  «         d S �Œ¹)NTFrV   r²   z/Will update following packages (o=ok; x=cancel)r·   r¸   r¹   rº   r¼   z  [ ] {} {}r½   r¾   r´  r¢  r2  r³  rµ  zNothing to update.)rÉ   rÊ   r�  r<   rË   rÍ   rÇ   r   r   rÅ   rÐ   rÑ   rÒ   rÓ   rÔ   rÕ   rA  rý   rþ   )
r3   Ústale_packagesrÜ   r    rß   ÚpidÚpnamer   rá   r  s
             r6   r®  z*DownloaderShell._simple_interactive_update±  sö  € ð	ØˆNØ#Ð#ˆE�GÝÐ<�w t¤x°Ñ<Ô<Ñ>Ô>ÅCÐHÑHÔHð @ð @�Ø”8—?’? 4Ñ(Ô(¨D¬H¬NÒ:Ð:Ø"×)Ò)¨4¬7°D´IÐ*>Ñ?Ô?Ð?øå‰GŒGˆGØñ ÝÐGÑHÔHÐHØ"0ð Jð J‘J�C˜Ý#œ=Ø  EÑ*¨BÀ(ðñ ô à�c�cô�Dõ ˜-×.Ò.¨s¯yªy¸¸SÑ/AÔ/AÀ4ÑHÔHÑIÔIÐIÐIÝ‘”�å"Ð#3Ñ4Ô4�
Ø×#Ò#Ñ%Ô%¨Ò,Ð,Ø&4ð %ð %™
˜˜Uð%Ø œH×-Ò-¨c¸&Ð-ÑAÔAÐAÐAøÝ '­Ð4ð %ð %ð %Ý! !™HœH˜H˜H˜H˜H˜H˜Høøøøð%øøøà�EØ×%Ò%Ñ'Ô'¨>Ð9Ð9Ø�Fð :õ Ð*Ñ+Ô+Ð+Ø�ñ;	s   ÅE Å F
Å1FÆF
c                 óš   — t          ¦   «          t          d¦  «         t          d¦  «         t          d¦  «         t          d¦  «         d S )Nz	Commands:zH  d) Download a package or collection     u) Update out of date packagesz1  l) List packages & collections          h) Helpz1  c) View & Modify Configuration          q) Quit)rÅ   rJ   s    r6   r«  z(DownloaderShell._simple_interactive_helpÑ  sT   € Ý‰ŒˆÝˆkÑÔÐÝØVñ	
ô 	
ð 	
õ 	ÐAÑBÔBÐBÝÐAÑBÔBÐBÐBÐBr8   c                 óÂ  — t          ¦   «          t          d¦  «         t          d| j        j        z  ¦  «         t          dt          | j                             ¦   «         ¦  «        z  ¦  «         t          dt          | j                             ¦   «         ¦  «        z  ¦  «         t          ¦   «          t          d¦  «         t          d| j        j        z  ¦  «         d S )NzData Server:z  - URL: <%s>z$  - %d Package Collections Availablez$  - %d Individual Packages AvailablezLocal Machine:z  - Data directory: %s)rÅ   r�  r   rÆ   r±   rV   r›   rJ   s    r6   Ú_show_configzDownloaderShell._show_configÚ  s»   € Ý‰ŒˆÝˆnÑÔÐÝˆo ¤¤Ñ,Ñ-Ô-Ð-ÝÐ4µs¸4¼8×;OÒ;OÑ;QÔ;QÑ7RÔ7RÑRÑSÔSÐSÝÐ4µs¸4¼8×;LÒ;LÑ;NÔ;NÑ7OÔ7OÑOÑPÔPÐPÝ‰ŒˆÝÐÑÔÐÝÐ&¨¬Ô)>Ñ>Ñ?Ô?Ð?Ð?Ð?r8   c                 ó<  — |                       ¦   «          	 t          ¦   «          |                      dddd¦  «         t          d¦  «                             ¦   «                              ¦   «         }|dk    r|                       ¦   «          �n|dk    rtt          d	¦  «                             ¦   «         }|d
v rt          d¦  «         nÖt          j                             |¦  «        r|| j	        _
        nªt          d|z  ¦  «         n—|dk    r‰t          d¦  «                             ¦   «         }|d
v rt          d¦  «         n\|                     d¦  «        sd|z   }	 || j	        _        n4# t          $ r}t          d|›d|› �¦  «         Y d }~nd }~ww xY w|dk    rd S �Œˆ)NTzs) Show Configzu) Set Server URLzd) Set Data Dirzm) Main MenuzConfig> r,  rX  z  New Directory> )r   rÀ   rÁ   ÚXÚQz  Cancelled!z)Directory %r not found!  Create it first.rª  z  New URL> )úhttp://zhttps://rÁ  zError reading <r  Úm)r½  rÅ   r¥  rÔ   r@  rÕ   r)   r*   r]  r�  r›   Ú
startswithr   r’   )r3   rá   Ú
new_dl_dirÚnew_urlr  s        r6   r¬  z*DownloaderShell._simple_interactive_configä  sâ  € Ø×ÒÑÔÐð	Ý‰GŒGˆGØ×)Ò)Ø Ð"5Ð7HÈ.ñô ð õ ˜zÑ*Ô*×0Ò0Ñ2Ô2×8Ò8Ñ:Ô:ˆJØ˜SÒ Ð Ø×!Ò!Ñ#Ô#Ð#Ñ#Ø˜sÒ"Ð"Ý"Ð#6Ñ7Ô7×=Ò=Ñ?Ô?�
ØÐ!9Ð9Ð9Ý˜.Ñ)Ô)Ð)Ð)Ý”W—]’] :Ñ.Ô.ð TØ,6�D”HÔ)Ð)åÐEÈ
ÑRÑSÔSÐSÐSØ˜sÒ"Ð"Ý Ñ.Ô.×4Ò4Ñ6Ô6�ØÐ6Ð6Ð6Ý˜.Ñ)Ô)Ð)Ð)à"×-Ò-Ð.EÑFÔFð 6Ø"+¨gÑ"5˜ðFØ'.˜œœ˜øÝ$ð Fð Fð FÝÐD°ÐDÐDÀÐDÐDÑEÔEÐEÐEÐEÐEÐEÐEøøøøðFøøøà˜sÒ"Ð"Ø�ñ9	s   ÅE( Å(
FÅ2FÆFN)rM   rN   rO   r7   r¥  r˜  r­  r®  r«  r½  r¬  r:   r8   r6   r—  r—  `  s”   € € € € € ðð ð ðð ð ð'ð 'ð 'ðRð ð ð<ð ð ð@Cð Cð Cð@ð @ð @ðð ð ð ð r8   r—  c                   ó"  — e Zd ZdZg d¢Z	 dddddœZ	 dddd	d	d
dœZ	 dZ	 g d¢Z	 eD ]Z	e	ev sJ ‚Œ	eD ]Z	e	ev sJ ‚Œ	eD ]Z	e	ev sJ ‚Œ	dZ
ej        dej        dej        dej        diZdZdZdZdZdZdCd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdDd „Zd!„ Zd"„ Zd#„ Z d$„ Z!d%„ Z"d&„ Z#d'„ Z$d(Z%dZ&d)„ Z'd*„ Z(d+„ Z)d	Z*d,„ Z+d-„ Z,d.„ Z-d/„ Z.d0„ Z/d1„ Z0d2„ Z1d3„ Z2d4„ Z3d5„ Z4d6„ Z5 e6j7        d7¦  «        Z8d8„ Z9d9„ Z:dZ;d:„ Z<d;„ Z=d<„ Z>d=„ Z?d>„ Z@ G d?„ d@eAjB        ¦  «        ZCdAZDdB„ ZEdS )Er•  zU
    Graphical interface for downloading packages from the NLTK data
    server.
    )r   Ú
IdentifierÚNameÚSizeÚStatusúUnzipped SizeÚ	CopyrightÚContactÚLicenseÚAuthorÚSubdirÚChecksumr   r  )r   rÈ  rÉ  rÊ  r   r½   é-   é
   é   )r   rÇ  rÈ  rÉ  rË  rÊ  é   )r   rÇ  rÈ  rÉ  rÊ  )z#000z#ccc)z#afaz#080)z#ffaz#880)z#faaz#800)ú#fffz#888)rÖ  z#45c)ú#aaaz#67a)z#f00r×  zhelvetica -16 boldTc                 óô  — || _         || _        t          j        ¦   «         | _        g | _        g | _        d| _        i | _        g | _	        d| _
        |                      d¦  «         t          ¦   «         x}| _        |                     d¦  «         |                     d¦  «         |                     | j        d         ¬¦  «         |                     d| j        ¦  «         |                     d	| j        ¦  «         d| _        i | _        |                      ¦   «          |                      ¦   «          	 |                      ¦   «          nN# t2          $ r}t5          d
|¦  «         Y d }~n/d }~wt6          $ r}t5          d|j        ¦  «         Y d }~nd }~ww xY w|                      ¦   «          |                      ¦   «          | j                              d¦  «         | j                             d| j!        ¦  «         d S )NFr   zNLTK Downloader Started!z+50+50r§  r   )Ú
backgroundz<Control-q>z<Control-x>úError reading from serverúError connecting to serverz	<Destroy>)"r�  Ú_use_threadsÚ	threadingÚLockÚ_download_lockÚ_download_msg_queueÚ_download_abort_queueÚ_downloadingÚ_afteridÚ_log_messagesÚ_log_indentÚ_logr   ÚtopÚgeometryÚtitleÚ	configureÚ_BACKDROP_COLORÚbindÚdestroyÚ
_destroyedÚ_column_varsÚ_init_widgetsÚ
_init_menuÚ_fill_tabler   r   r   r¯  Ú
_show_infoÚ_select_columnsÚ_tableÚselectÚ_destroy)r3   rž  Úuse_threadsrç  r  s        r6   r7   zDownloaderGUI.__init___  s
  € ØˆŒØ'ˆÔõ (œnÑ.Ô.ˆÔØ#%ˆÔ Ø%'ˆÔ"Ø!ˆÔð ˆŒð  ˆÔØˆÔØ�	Š	Ð,Ñ-Ô-Ð-õ ™œÐˆˆdŒhØ�Š�XÑÔÐØ�	Š	Ð#Ñ$Ô$Ð$Ø�Š Ô!5°aÔ!8ˆÑ9Ô9Ð9ð 	�Š� ¤Ñ-Ô-Ð-Ø�Š� ¤Ñ-Ô-Ð-ØˆŒàˆÔð 	×ÒÑÔÐØ�ŠÑÔÐð	>Ø×ÒÑÔÐÐøÝð 	6ð 	6ð 	6ÝÐ1°1Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5øøøøÝð 	>ð 	>ð 	>ÝÐ2°A´HÑ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=øøøøð	>øøøð 	�ŠÑÔÐØ×ÒÑÔÐØŒ×Ò˜1ÑÔÐð 	Œ×Ò˜ d¤mÑ4Ô4Ð4Ð4Ð4s$   Ä3E Å
FÅE'Å'FÅ4FÆFc                 ó–   — | j                              d                     t          j        ¦   «         d| j        z  |¦  «        ¦  «         d S )Nz{} {}{}z | )rä  rÇ   rÒ   rn  Úctimerå  ©r3   râ   s     r6   ræ  zDownloaderGUI._log�  sJ   € ØÔ×!Ò!Ø×Ò�TœZ™\œ\¨5°4Ô3CÑ+CÀSÑIÔIñ	
ô 	
ð 	
ð 	
ð 	
r8   c                 ó  ‡ — t          ‰ j        dddd¬¦  «        }|                     ddd¬	¦  «         |                     dd
¬¦  «         |                     dd
¬¦  «         t          |d¬¦  «                             dd¬¦  «         t          |¦  «        }|                     dd
d¬¦  «         t          |¦  «        }|                     ddd¬¦  «         t          |¦  «        }|                     ddd¬¦  «         t          |d¬¦  «                             dd¬¦  «         t          |¦  «        }|                     ddd¬¦  «         t          |d¬¦  «                             dd¬¦  «         t          ‰ j        dd‰ j        d
         ¬¦  «        }|                     dd¬¦  «         d‰ j        d<   d‰ j        d<   g d¢‰ _        i ‰ _        t          ‰ j        ¦  «        D ]s\  }}t          ||‰ j        ¬¦  «        }	|	                     d|d
z   dz  dz  ¬¦  «         |	                     d‰ j        ¦  «         |	‰ j        |                     ¦   «         <   Œtˆ fd „‰ j        D ¦   «         }
t!          |‰ j        |
dd!‰ j        ¬"¦  «        ‰ _        ‰ j                             d‰ j        d         ¬#¦  «         t          ‰ j        ¦  «        D ]A\  }}‰ j                             |‰ j        ¦  «        }‰ j                             ||¬$¦  «         ŒB‰ j                             dd¬%¦  «         ‰ j                             ¦   «          ‰ j                             d&‰ j        ¦  «         ‰ j                             d'‰ j        ¦  «         ‰ j                             d(‰ j        ¦  «         ‰ j                             d)‰ j        ¦  «         ‰ j                             d*‰ j        ¦  «         ‰ j                             d+‰ j        ¦  «         |                     d
d
¬¦  «         d,d-‰ j        fd.d/‰ j         fg}i ‰ _!        t          |¦  «        D ]ž\  }\  }}	}t          ||	¬0¦  «                             d|d1¬¦  «         tE          |d2d3d4d4¬5¦  «        }||f‰ j!        |<   |                     d(‰ j#        ¦  «         |                     d|fˆ fd6„	¦  «         |                     d
|d7¬¦  «         ŒŸ‰ j                             d‰ j#        ¦  «         tI          |d8‰ j        d¬9¦  «        ‰ _%        ‰ j%                             d¬:¦  «         tI          |d;‰ j&        d¬9¦  «        ‰ _'        ‰ j'                             d<¬:¦  «         t          |d=‰ j        d         ‰ j        d
         ¬>¦  «        ‰ _(        tS          |d?d!‰ j*        d
         d@d
¬A¦  «        ‰ _+        ‰  ,                    ¦   «          ‰ j+                             d<¬:¦  «         ‰ j(                             d¬:¦  «         d S )BNÚraisedr  é   r   )ÚreliefÚborderÚpadxÚpadyrç  TÚboth)ÚsidÚexpandrÑ   r   )Úweight)Úheight)ÚcolumnÚrowÚnews)r  r	  Ústickyr°   é   r  é   )r  r  rÙ  ÚbottomrÀ   )ÚsiderÑ   r   Úhighlightthickness)ÚCollectionsÚCorporaÚModelszAll Packages)ÚtextÚfontÚleftrÓ  )r  r  z
<Button-1>c                 óF   •— g | ]}‰j                              |d ¦  «        ‘ŒS )r   )ÚCOLUMN_WEIGHTSr[   )r\   r  r3   s     €r6   r^   z/DownloaderGUI._init_widgets.<locals>.<listcomp>»  s,   ø€ ÐXÐXÐXÀ˜$Ô-×1Ò1°&¸!Ñ<Ô<ÐXÐXÐXr8   é   )Úcolumn_weightsr  Úlistbox_heightÚreprfunc)Ú
foreground©rÄ   )r  rÑ   z<Double-Button-1>z<space>z<Return>z<Left>z<Right>z<Control-a>r   zServer Index:r›   zDownload Directory:)r  r  ÚcourierÚgroovez#007aff)r  rÿ  Údisabledforegroundr  c                 ó.   •— ‰                      |¦  «        S rC   ©Ú
_info_edit)r  r@   r3   s     €r6   ú<lambda>z-DownloaderGUI._init_widgets.<locals>.<lambda>ä  s   ø€ ¸¿ºÈÑ8LÔ8L€ r8   ÚewÚDownload)r  r°  rÄ   )r  ÚRefreshÚrightr   )r  r  rÙ  éÈ   Úsunken)rÄ   r  rÙ  rÿ  r   )-r   rç  ÚpackÚgrid_rowconfigureÚgrid_columnconfigureÚgridrë  Ú
_tab_namesÚ_tabsr  r
   Ú	_TAB_FONTrì  Ú_select_tabrÕ   ÚCOLUMNSr   Ú_table_reprfuncrõ  ÚcolumnconfigÚ_MARK_COLORÚCOLUMN_WIDTHSr[   ÚDEFAULT_COLUMN_WIDTHÚfocusÚbind_to_listboxesÚ	_downloadÚ_table_markÚ	_prev_tabÚ	_next_tabÚ	_mark_allr�  r’  Ú_infor   Ú
_info_saver   Ú_download_buttonÚ_refreshÚ_refresh_buttonÚ_progresslabelr   Ú_PROGRESS_COLORÚ_progressbarÚ_init_progressbar)r3   Úf1ÚtabframeÚ
tableframeÚbuttonframeÚ	infoframeÚprogressframer  ÚtabÚlabelr  r  rÄ   rß   r@   ÚcallbackÚentrys   `                r6   rð  zDownloaderGUI._init_widgets™  sX  ø€ å�4”8 H°Q¸QÀQÐGÑGÔGˆØ
�Š�E $¨VˆÑ4Ô4Ð4Ø
×Ò˜Q qÐÑ)Ô)Ð)Ø
×Ò ¨!ÐÑ,Ô,Ð,Ýˆb˜ÐÑÔ× Ò ¨¨qÐ Ñ1Ô1Ð1Ý˜‘9”9ˆØ�Š˜Q A¨fˆÑ5Ô5Ð5Ý˜2‘Y”Yˆ
Ø�Š˜q a°ˆÑ7Ô7Ð7Ý˜B‘i”iˆØ×Ò  q°ÐÑ8Ô8Ð8Ýˆb˜ÐÑÔ× Ò ¨¨qÐ Ñ1Ô1Ð1Ý˜"‘I”Iˆ	Ø�Š˜a Q¨vˆÑ6Ô6Ð6Ýˆb˜ÐÑÔ× Ò ¨¨qÐ Ñ1Ô1Ð1ÝØŒH˜1 1°Ô1EÀaÔ1Hð
ñ 
ô 
ˆð 	×Ò ¨sÐÑ3Ô3Ð3ØˆŒ�ÑØ)*ˆŒÐ%Ñ&ð OÐNÐNˆŒØˆŒ
Ý ¤Ñ0Ô0ð 	,ð 	,‰FˆAˆsÝ˜(¨°4´>ÐBÑBÔBˆEØ�JŠJ˜F¨1¨q©5°A©+¸Ñ);ˆJÑ<Ô<Ð<Ø�JŠJ�| TÔ%5Ñ6Ô6Ð6Ø&+ˆDŒJ�s—y’y‘{”{Ñ#Ð#ð YÐXÐXÐXÈ4Ì<ÐXÑXÔXˆÝØØŒLØ)Ø ØØÔ)ð
ñ 
ô 
ˆŒð 	Œ× Ò  ¨tÔ/?ÀÔ/BÐ ÑCÔCÐCÝ" 4¤<Ñ0Ô0ð 	5ð 	5‰IˆAˆvØÔ&×*Ò*¨6°4Ô3LÑMÔMˆEØŒK×$Ò$ Q¨eÐ$Ñ4Ô4Ð4Ð4ØŒ×Ò ¨6ÐÑ2Ô2Ð2ØŒ×ÒÑÔÐØŒ×%Ò%Ð&9¸4¼>ÑJÔJÐJØŒ×Ò˜ DÔ$4Ñ5Ô5Ð5ØŒ×Ò˜ T¤^Ñ4Ô4Ð4ØŒ×Ò˜ 4¤>Ñ2Ô2Ð2ØŒ×Ò˜ D¤NÑ3Ô3Ð3ØŒ×Ò˜¨¬Ñ7Ô7Ð7ð 	×&Ò& q°Ð&Ñ3Ô3Ð3ð �O T¤]Ð3ØÐ2°DÔ4JÐKð
ˆð ˆŒ
Ý+4°T©?¬?ð 	5ð 	5Ñ'ˆQÑ&��e˜XÝ�) %Ð(Ñ(Ô(×-Ò-°Q¸AÀcÐ-ÑJÔJÐJÝØØØØ#,Ø$ðñ ô ˆEð  % hÐ/ˆDŒJ�s‰OØ�JŠJ�z 4¤?Ñ3Ô3Ð3Ø�JŠJ�|°3Ð%LÐ%LÐ%LÐ%LÐ%LÑMÔMÐMØ�JŠJ˜a Q¨tˆJÑ4Ô4Ð4Ð4ð 	Œ�Š�l D¤OÑ4Ô4Ð4õ !'Ø˜j°$´.Èð!
ñ !
ô !
ˆÔð 	Ô×"Ò"¨Ð"Ñ/Ô/Ð/Ý%Ø˜i°´Àað 
ñ  
ô  
ˆÔð 	Ô×!Ò! wÐ!Ñ/Ô/Ð/õ $ØØØÔ+¨AÔ.ØÔ+¨AÔ.ð	
ñ 
ô 
ˆÔõ #ØØØØÔ+¨AÔ.ØØð
ñ 
ô 
ˆÔð 	×ÒÑ Ô Ð ØÔ×Ò GÐÑ,Ô,Ð,ØÔ× Ò  fÐ Ñ-Ô-Ð-Ð-Ð-r8   c                 óò  ‡ — t          ‰ j        ¦  «        }t          |d¬¦  «        }|                     dd‰ j        d¬¦  «         |                     ¦   «          |                     ddˆ fd„¬	¦  «         |                     d
dˆ fd„¬	¦  «         |                     ¦   «          |                     dd‰ j        ¬	¦  «         |                     ¦   «          |                     dd‰ j        d¬¦  «         |                     dd|¬¦  «         t          |d¬¦  «        }‰ j        j	        dd …         D ]g}t          ‰ j        ¦  «        }|‰ j        vsJ ‚|‰ j        |<   |‰ j        v r|                     d¦  «         |                     |d|‰ j        ¬¦  «         Œh|                     dd|¬¦  «         t          |d¬¦  «        }‰ j        j	        dd …         D ]!}|                     d|z  |fˆ fd„	¬¦  «         Œ"|                     ¦   «          ‰ j        j	        dd …         D ]!}|                     d|z  |fˆ fd„	¬¦  «         Œ"|                     dd|¬¦  «         t          |d¬¦  «        }|                     dd‰ j        ¬	¦  «         |                     dd‰ j        d¬¦  «         |                     dd|¬¦  «         ‰ j                             d ‰ j        ¦  «         ‰ j                             |¬!¦  «         d S )"Nr   )Útearoffr'  ÚReturn)rQ  Ú	underliner°  ÚacceleratorzChange Server Indexé   c                  ó.   •— ‰                       d¦  «        S )Nr   r#  rJ   s   €r6   r%  z*DownloaderGUI._init_menu.<locals>.<lambda>  s   ø€ ˜DŸOšO¨EÑ2Ô2€ r8   )rQ  rW  r°  zChange Download Directoryc                  ó.   •— ‰                       d¦  «        S )Nr›   r#  rJ   s   €r6   r%  z*DownloaderGUI._init_menu.<locals>.<lambda>  s   ø€ ˜DŸOšO¨NÑ;Ô;€ r8   zShow Logr  ÚExitr   zCtrl-xÚFile)rQ  rW  Úmenur  )rQ  rW  Úvariabler°  ÚViewz
Sort by %sc                 ó:   •— ‰j                              | d¦  «        S )NÚ	ascending©rõ  Úsort_by©rk  r3   s    €r6   r%  z*DownloaderGUI._init_menu.<locals>.<lambda>8  s   ø€ ¨$¬+×*=Ò*=¸aÀÑ*MÔ*M€ r8   )rQ  r°  zReverse sort by %sc                 ó:   •— ‰j                              | d¦  «        S )NÚ
descendingrc  re  s    €r6   r%  z*DownloaderGUI._init_menu.<locals>.<lambda>?  s   ø€ ¨$¬+×*=Ò*=¸aÀÑ*NÔ*N€ r8   ÚSortÚAboutÚInstructionsÚF1ÚHelpz<F1>)r^  )r   rç  Úadd_commandr<  Úadd_separatorÚ	_show_logrí  Úadd_cascaderõ  Úcolumn_namesr	   rï  ÚINITIAL_COLUMNSÚsetÚadd_checkbuttonrô  ÚaboutÚhelprì  Úconfig)r3   ÚmenubarÚfilemenuÚviewmenur  ÚvarÚsortmenuÚhelpmenus   `       r6   rñ  zDownloaderGUI._init_menu  s®  ø€ Ý�t”x‘.”.ˆå˜¨Ð+Ñ+Ô+ˆØ×ÒØ¨°4´>Èxð 	ñ 	
ô 	
ð 	
ð 	×ÒÑ Ô Ð Ø×ÒØ'ØØ2Ð2Ð2Ð2ð 	ñ 	
ô 	
ð 	
ð
 	×ÒØ-ØØ;Ð;Ð;Ð;ð 	ñ 	
ô 	
ð 	
ð
 	×ÒÑ Ô Ð Ø×Ò :¸ÀDÄNÐÑSÔSÐSØ×ÒÑ Ô Ð Ø×ÒØ A¨t¬|Èð 	ñ 	
ô 	
ð 	
ð 	×Ò &°A¸HÐÑEÔEÐEõ
 ˜¨Ð+Ñ+Ô+ˆØ”kÔ.¨q¨r¨rÔ2ð 	ð 	ˆFÝ˜œÑ"Ô"ˆCØ Ô!2Ð2Ð2Ð2Ð2Ø(+ˆDÔ˜fÑ%Ø˜Ô-Ð-Ð-Ø—’˜‘
”
�
Ø×$Ò$Ø¨°CÀÔAUð %ñ ô ð ð ð 	×Ò &°A¸HÐÑEÔEÐEõ
 ˜¨Ð+Ñ+Ô+ˆØ”kÔ.¨q¨r¨rÔ2ð 	ð 	ˆFØ× Ò Ø" VÑ+Ø"(ÐMÐMÐMÐMÐMð !ñ ô ð ð ð 	×ÒÑ Ô Ð à”kÔ.¨q¨r¨rÔ2ð 	ð 	ˆFØ× Ò Ø*¨VÑ3Ø"(ÐNÐNÐNÐNÐNð !ñ ô ð ð ð 	×Ò &°A¸HÐÑEÔEÐEå˜¨Ð+Ñ+Ô+ˆØ×Ò 7°aÀÄÐÑLÔLÐLØ×ÒØ ¨A°t´yÈdð 	ñ 	
ô 	
ð 	
ð 	×Ò &°A¸HÐÑEÔEÐEØŒ�Š�f˜dœiÑ(Ô(Ð(àŒ�Š˜WˆÑ%Ô%Ð%Ð%Ð%r8   c                 óÖ   — | j                              ¦   «         D ]N\  }}|                     ¦   «         r| j                             |¦  «         Œ4| j                             |¦  «         ŒOd S rC   )rï  rð   r[   rõ  Úshow_columnÚhide_column)r3   r  r{  s      r6   rô  zDownloaderGUI._select_columnsM  sp   € Ø!Ô.×4Ò4Ñ6Ô6ð 	0ð 	0‰MˆV�SØ�wŠw‰yŒyð 0Ø”×'Ò'¨Ñ/Ô/Ð/Ð/à”×'Ò'¨Ñ/Ô/Ð/Ð/ð		0ð 	0r8   c                 ó4  — | j                              ¦   «          	 |                      ¦   «          nN# t          $ r}t	          d|¦  «         Y d }~n/d }~wt
          $ r}t	          d|j        ¦  «         Y d }~nd }~ww xY w| j                             d¦  «         d S )NrÚ  rÛ  r   )	r�  rO  rò  r   r   r   r¯  rõ  rö  ©r3   r  s     r6   rD  zDownloaderGUI._refreshT  sÃ   € ØŒ×#Ò#Ñ%Ô%Ð%ð	>Ø×ÒÑÔÐÐøÝð 	6ð 	6ð 	6ÝÐ1°1Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5øøøøÝð 	>ð 	>ð 	>ÝÐ2°A´HÑ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=øøøøð	>øøøàŒ×Ò˜1ÑÔÐÐÐs    ›0 °
A;ºAÁA;ÁA6Á6A;c                 óŠ   — |                       ¦   «          | j        |         \  }}d|d<   d|d<   |                     ¦   «          d S )NÚnormalÚstater+  rÿ  )rB  rA  r:  )r3   Úinfo_keyrS  rR  s       r6   r$  zDownloaderGUI._info_edit^  sF   € Ø�ŠÑÔÐØ œJ xÔ0Ñˆ�Ø!ˆˆg‰Ø"ˆˆh‰Ø�Š‰Œˆˆˆr8   Nc                 ó  — | j         }| j                             ¦   «         D ]R\  }}|d         dk    rŒ|�|j        |u r|j        dk    r|}Œ+d|d<   d|d<    ||                     ¦   «         ¦  «         ŒS|                     ¦   «          d S )Nr…  ÚdisabledrV  r   rÿ  )rõ  rA  ræ   ÚwidgetÚkeysymr[   r:  )r3   r  r:  rS  rR  s        r6   rB  zDownloaderGUI._info_savee  sž   € Ø”ˆØ#œz×0Ò0Ñ2Ô2ð 	&ð 	&‰OˆE�8Ø�WŒ~ Ò+Ð+ØØˆ} ¤¨UÐ!2Ð!2°q´xÀ8Ò7KÐ7KØ��à!+��g‘Ø"*��h‘Ø�˜Ÿš™œÑ%Ô%Ð%Ð%Ø�Š‰Œˆˆˆr8   c                 óø   — | j         j        |                              d¦  «        r>t          |t          ¦  «        rd|z  S |dk     rd|dz  z  S |dk     rd|dz  z  S d	|d
z  z  S |dv rt	          |¦  «        S d|z  S )NrÉ  z  %si   z	  %.1f KBg      �@i   @z	  %.1f MBg      0Az	  %.1f GBg      ÐA)r   r   )rõ  rq  r%  r;   r<   )r3   r	  ÚcolÚvals       r6   r5  zDownloaderGUI._table_reprfuncr  s›   € ØŒ;Ô# CÔ(×1Ò1°&Ñ9Ô9ð 	7Ý˜#�sÑ#Ô#ð 7Ø ‘|Ð#Ø�w’�Ø" c¨I¡oÑ6Ð6Ø�w’�Ø" c¨I¡oÑ6Ð6à" c¨I¡oÑ6Ð6à�'ˆ>ˆ>Ý�s‘8”8ˆOà˜C‘<Ðr8   c                 óþ   — || j         j        k    rd S 	 || j         _        |                      ¦   «          n4# t          $ r'}t	          dt          |¦  «        ¦  «         Y d }~nd }~ww xY w|                      ¦   «          d S )NzError Setting Server Index)r�  r   rò  rý   r   r<   ró  )r3   r   r  s      r6   r�  zDownloaderGUI._set_url‚  s”   € Ø�$”(”,ÒÐØˆFð	<ØˆDŒHŒLØ×ÒÑÔÐÐøÝð 	<ð 	<ð 	<ÝÐ2µC¸±F´FÑ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;øøøøð	<øøøà�ŠÑÔÐÐÐs   ” 5 µ
A&¿A!Á!A&c                 ó2  — | j         j        |k    rd S || j         _        	 |                      ¦   «          nN# t          $ r}t	          d|¦  «         Y d }~n/d }~wt
          $ r}t	          d|j        ¦  «         Y d }~nd }~ww xY w|                      ¦   «          d S )NrÚ  rÛ  )r�  r›   rò  r   r   r   r¯  ró  )r3   r›   r  s      r6   r’  zDownloaderGUI._set_download_dirŒ  sÊ   € ØŒ8Ô  LÒ0Ð0ØˆFð !-ˆŒÔð	>Ø×ÒÑÔÐÐøÝð 	6ð 	6ð 	6ÝÐ1°1Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5øøøøÝð 	>ð 	>ð 	>ÝÐ2°A´HÑ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=øøøøð	>øøøà�ŠÑÔÐÐÐs     5 µ
B ¿AÁB Á!A;Á;B c                 óº  — t          d| j        j        ¦  «         | j                             ¦   «         D ] \  }}d|d<   |                     dd¦  «         Œ!| j        d         d                              d| j        j        ¦  «         | j        d         d                              d| j        j        ¦  «         | j                             ¦   «         D ]
\  }}d|d<   Œd S )	Nzshowing infor„  r…  r   Úendr   r›   rˆ  )rÅ   r�  r   rA  ræ   ÚdeleteÚinsertr›   )r3   rS  Úcbs      r6   ró  zDownloaderGUI._show_info›  sÚ   € Ýˆn˜dœhœlÑ+Ô+Ð+Øœ×*Ò*Ñ,Ô,ð 	#ð 	#‰IˆE�2Ø%ˆE�'‰NØ�LŠL˜˜EÑ"Ô"Ð"Ð"ØŒ
�5Ô˜!Ô×#Ò# A t¤x¤|Ñ4Ô4Ð4ØŒ
�>Ô" 1Ô%×,Ò,¨Q°´Ô0EÑFÔFÐFØœ×*Ò*Ñ,Ô,ð 	(ð 	(‰IˆE�2Ø'ˆE�'‰NˆNð	(ð 	(r8   c                 ó˜  — t          | j        ¦  «        D ]´\  }}|                     ¦   «         | j        k    r’|dk    rŒ| j        |dz
                                ¦   «         | _        	 |                      ¦   «         c S # t
          $ r}t          d|¦  «         Y d }~Œ…d }~wt          $ r}t          d|j        ¦  «         Y d }~Œ¬d }~ww xY wŒµd S )Nr   r   rÚ  rÛ  )	r  r0  rÕ   Ú_tabrò  r   r   r   r¯  ©r3   r  r  rP  s       r6   r>  zDownloaderGUI._prev_tab¥  s  € Ý ¤Ñ0Ô0ð 	Fð 	F‰FˆAˆsØ�yŠy‰{Œ{˜dœiÒ'Ð'¨A°ªE¨EØ œO¨A°©EÔ2×8Ò8Ñ:Ô:�”	ðFØ×+Ò+Ñ-Ô-Ð-Ð-Ð-øÝ ð >ð >ð >ÝÐ9¸1Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=øøøøÝð Fð Fð FÝÐ:¸A¼HÑEÔEÐEÐEÐEÐEÐEÐEøøøøðFøøøøð	Fð 	Fs$   Á%A;Á;
CÂBÂCÂ'CÃCc                 óÂ  — t          | j        ¦  «        D ]É\  }}|                     ¦   «         | j        k    r§|t	          | j        ¦  «        dz
  k     rŒ| j        |dz                                 ¦   «         | _        	 |                      ¦   «         c S # t          $ r}t          d|¦  «         Y d }~Œšd }~wt          $ r}t          d|j
        ¦  «         Y d }~ŒÁd }~ww xY wŒÊd S )Nr   rÚ  rÛ  )r  r0  rÕ   r–  rÆ   r1  rò  r   r   r   r¯  r—  s       r6   r?  zDownloaderGUI._next_tab°  s  € Ý ¤Ñ0Ô0ð 	Fð 	F‰FˆAˆsØ�yŠy‰{Œ{˜dœiÒ'Ð'¨Aµ°T´Z±´À1Ñ1DÒ,EÐ,EØ œO¨A°©EÔ2×8Ò8Ñ:Ô:�”	ðFØ×+Ò+Ñ-Ô-Ð-Ð-Ð-øÝ ð >ð >ð >ÝÐ9¸1Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=øøøøÝð Fð Fð FÝÐ:¸A¼HÑEÔEÐEÐEÐEÐEÐEÐEøøøøðFøøøøð	Fð 	Fs$   Á:BÂ
CÂB/Â/CÂ<CÃCc                 ó  — |j         d                              ¦   «         | _        	 |                      ¦   «          d S # t          $ r}t          d|¦  «         Y d }~d S d }~wt          $ r }t          d|j        ¦  «         Y d }~d S d }~ww xY w)Nr  rÚ  rÛ  )r‰  rÕ   r–  rò  r   r   r   r¯  )r3   Úeventr  s      r6   r3  zDownloaderGUI._select_tab»  s¶   € Ø”L Ô(×.Ò.Ñ0Ô0ˆŒ	ð	>Ø×ÒÑÔÐÐÐøÝð 	6ð 	6ð 	6ÝÐ1°1Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5øøøøÝð 	>ð 	>ð 	>ÝÐ2°A´HÑ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=øøøøð	>øøøs!   ¦< ¼
B	ÁAÁB	Á)BÂB	r±   c                 ó¢  ‡ — ‰ j                              ¦   «         }‰ j                              ¦   «          ‰ j        dk    r‰ j                             ¦   «         }n�‰ j        dk    r‰ j                             ¦   «         }n\‰ j        dk    r‰ j                             ¦   «         }n7‰ j        dk    r‰ j                             ¦   «         }nJ d‰ j        z  ¦   «         ‚ˆ fd„|D ¦   «         }‰ j          	                    |¦  «         ‰ j
                             ¦   «         D ]k\  }}|‰ j        k    r.|                     ‰ j        d         ‰ j        d         ¬	¦  «         Œ>|                     ‰ j        d         ‰ j        d         ¬	¦  «         Œl‰ j                              d
d¬¦  «         ‰                      ¦   «          ‰ j                              |¦  «          ‰ j        j        d‰ j         j        j        g‰ j         j                             ¦   «         ¢R Ž   ‰ j        j        d‰ j         j        j        g‰ j         j                             ¦   «         ¢R Ž  d S )Nzall packagesrê   rô   r±   r   zbad tab value %rc                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r:   )Ú_package_to_columnsr  s     €r6   r^   z-DownloaderGUI._fill_table.<locals>.<listcomp>Õ  s'   ø€ ÐAÐAÐA°4�×(Ò(¨Ñ.Ô.ÐAÐAÐAr8   r   ©r  rÙ  rÇ  rb  )Úorderé–   i,  )rõ  Úselected_rowrM  r–  r�  rV   rê   rô   r±   rt  r1  rð   rê  Ú_FRONT_TAB_COLORÚ_BACK_TAB_COLORrd  Ú_color_tablerö  rç  ÚafterÚ
_scrollbarrs  Ú_mlbÚyview)r3   r¡  rð   ÚrowsrP  rQ  s   `     r6   rò  zDownloaderGUI._fill_tableÈ  sN  ø€ Ø”{×/Ò/Ñ1Ô1ˆØŒ×ÒÑÔÐØŒ9˜Ò&Ð&Ø”H×%Ò%Ñ'Ô'ˆEˆEØŒY˜)Ò#Ð#Ø”H×$Ò$Ñ&Ô&ˆEˆEØŒY˜(Ò"Ð"Ø”H—O’OÑ%Ô%ˆEˆEØŒY˜-Ò'Ð'Ø”H×(Ò(Ñ*Ô*ˆEˆEà4Ð(¨4¬9Ñ4Ñ4Ô4Ð4ØAÐAÐAÐA¸5ÐAÑAÔAˆØŒ×Ò˜4Ñ Ô Ð ð œ*×*Ò*Ñ,Ô,ð 
	ð 
	‰JˆC�Ø�d”iÒÐØ—’Ø#Ô4°QÔ7Ø#Ô4°QÔ7ð  ñ ô ð ð ð
 —’Ø#Ô3°AÔ6Ø#Ô3°AÔ6ð  ñ ô ð ð ð
 	Œ×Ò˜L°ÐÑ<Ô<Ð<Ø×ÒÑÔÐØŒ×Ò˜<Ñ(Ô(Ð(ð 	ˆŒŒ�s˜DœKÔ2Ô6ÐR¸¼Ô9I×9OÒ9OÑ9QÔ9QÐRÐRÐRÐRØˆŒŒ�s˜DœKÔ2Ô6ÐR¸¼Ô9I×9OÒ9OÑ9QÔ9QÐRÐRÐRÐRÐRÐRr8   c                 óÜ   — t          t          | j        ¦  «        ¦  «        D ]5}| j                             | j        |df         ¦  «        }|| j        |df<   Œ6|                      ¦   «          d S )NrÇ  rÊ  )r
  rÆ   rõ  r�  rË   r¤  )r3   Úrow_numrË   s      r6   Ú_update_table_statusz"DownloaderGUI._update_table_statusñ  sn   € Ý�S ¤Ñ-Ô-Ñ.Ô.ð 	4ð 	4ˆGØ”X—_’_ T¤[°¸,Ð1FÔ%GÑHÔHˆFØ-3ˆDŒK˜ Ð)Ñ*Ð*Ø×ÒÑÔÐÐÐr8   c                 ób  ‡ — ‰ j         r
 ‰ j        |Ž S ˆ fd„t          t          ‰ j        ¦  «        ¦  «        D ¦   «         }‰ j                             ¦   «         }|s|�‰ j        |df         g}‰ j                             |‰ j        j        ¦  «        }d‰ _	        ‰  
                    ||¦  «         d S )Nc                 óT   •— g | ]$}‰j         |d f         dk    ¯‰j         |df         ‘Œ%S ©r   r   rÇ  ©rõ  ©r\   r	  r3   s     €r6   r^   z+DownloaderGUI._download.<locals>.<listcomp>ý  óE   ø€ ð 
ð 
ð 
àØŒ{˜3 ˜6Ô" bÒ(Ð(ð ŒK˜˜\Ð)Ô*à(Ð(Ð(r8   rÇ  r   )rÜ  Ú_download_threadedr
  rÆ   rõ  r¡  r�  rÿ   r›   rå  Ú_download_cb)r3   r  ÚmarkedÚ	selectionÚdownload_iters   `    r6   r<  zDownloaderGUI._download÷  sÐ   ø€ ð Ôð 	/Ø*�4Ô*¨AÐ.Ð.ð
ð 
ð 
ð 
å�S ¤Ñ-Ô-Ñ.Ô.ð
ñ 
ô 
ˆð
 ”K×,Ò,Ñ.Ô.ˆ	Øð 	<˜)Ð/Ø”k )¨\Ð"9Ô:Ð;ˆFàœ×.Ò.¨v°t´xÔ7LÑMÔMˆØˆÔØ×Ò˜-¨Ñ0Ô0Ð0Ð0Ð0r8   c                 ón  ‡ — 	 t          |¦  «        }nP# t          $ rC ‰                      ¦   «          ‰ j                             d‰ j        d¦  «        }|‰ j        d<   Y d S w xY wˆ fd„}t          |t          ¦  «        r‰                      |j	        ¦  «         �nët          |t          ¦  «        rM ||j        ¦  «         |j        �‰                      |j        j        ¦  «         ‰                      d ¦  «         d S t          |t          ¦  «        r* |d|j        j        z  ¦  «         ‰ xj        dz  c_        �nJt          |t$          ¦  «        r |d|j        j        z  ¦  «         �nt          |t&          ¦  «        r |d|j        j        z  ¦  «         nít          |t(          ¦  «        r |d	|j        j        z  ¦  «         n¿t          |t*          ¦  «        r |d
|j        j        z  ¦  «         n‘t          |t.          ¦  «        rH‰ xj        dz  c_         |d|j        j        z  ¦  «         ‰                      |j        j        ¦  «         n4t          |t2          ¦  «        r‰                      |j        j        ¦  «         ‰ j                             ‰ j        ‰ j        ||¦  «        }|‰ j        d<   d S )NrÓ  r   r´  c                 óF   •— | ‰j         d<   ‰                     | ¦  «         d S ©Nr  ©rF  ræ  ©r,  r3   s    €r6   r6  z(DownloaderGUI._download_cb.<locals>.show  ó#   ø€ Ø*+ˆDÔ Ñ'Ø�IŠI�a‰LŒLˆLˆLˆLr8   zDownloading collection %sr   zDownloading package %súPackage %s is up-to-date!úFinished downloading %r.úUnzipping %sú#Finished downloading collection %r.)ÚnextÚStopIterationr¬  rç  r¥  Ú_show_progressrã  r;   r•   r—   r�   r“   rt   Ú_selectr   rf   ri   rå  rq   rŠ   r€   r„   r.   rn   Ú_clear_markry   Ú	_DL_DELAYr´  )r3   r·  Úidsrâ   Úafteridr6  s   `     r6   r´  zDownloaderGUI._download_cb  sÒ  ø€ ð	Ý�}Ñ%Ô%ˆCˆCøÝð 	ð 	ð 	à×%Ò%Ñ'Ô'Ð'Ø”h—n’n R¨Ô)<¸aÑ@Ô@ˆGØ,3ˆDŒM˜.Ñ)ØˆFˆFð	øøøð	ð 	ð 	ð 	ð 	õ �c�?Ñ+Ô+ð 	-Ø×Ò ¤Ñ-Ô-Ð-Ñ-Ý˜�\Ñ*Ô*ð 	-ØˆD�”ÑÔÐØŒ{Ð&Ø—’˜Sœ[œ^Ñ,Ô,Ð,Ø×Ò Ñ%Ô%Ð%ØˆFÝ˜Õ3Ñ4Ô4ð 	-ØˆDÐ,¨s¬~Ô/@Ñ@ÑAÔAÐAØÐÔ Ñ!ÐÔÑÝ˜Õ0Ñ1Ô1ð 	-ØˆDÐ)¨C¬K¬NÑ:Ñ;Ô;Ð;Ñ;Ý˜�_Ñ-Ô-ð 	-ØˆDÐ,¨s¬{¬~Ñ=Ñ>Ô>Ð>Ð>õ ˜Õ2Ñ3Ô3ð 		-ØˆDÐ+¨c¬k¬nÑ<Ñ=Ô=Ð=Ð=Ý˜Õ.Ñ/Ô/ð 	-ØˆD� #¤+Ô"6Ñ6Ñ7Ô7Ð7Ð7Ý˜Õ4Ñ5Ô5ð 	-ØÐÔ Ñ!ÐÔØˆDÐ6¸¼Ô9JÑJÑKÔKÐKØ×Ò˜Sœ^Ô.Ñ/Ô/Ð/Ð/Ý˜Õ1Ñ2Ô2ð 	-Ø×Ò˜Sœ[œ^Ñ,Ô,Ð,Ø”(—.’. ¤°Ô1BÀMÐSVÑWÔWˆØ(/ˆŒ�nÑ%Ð%Ð%s   ƒ “A	A ÁA c                 ó®   — t          t          | j        ¦  «        ¦  «        D ]2}| j        |df         |k    r| j                             |¦  «          d S Œ3d S )NrÇ  )r
  rÆ   rõ  rö  ©r3   r   r	  s      r6   rÅ  zDownloaderGUI._select8  sf   € Ý�˜Tœ[Ñ)Ô)Ñ*Ô*ð 	ð 	ˆCØŒ{˜3 Ð,Ô-°Ò3Ð3Ø”×"Ò" 3Ñ'Ô'Ð'Ø��ð 4ð	ð 	r8   c                 ó8  — t          t          | j        ¦  «        ¦  «        D ]w}| j        | j        |df                  \  }}d\  }}| j                             |||||¬¦  «         | j                             |d| j        d         | j        d         ¬¦  «         Œxd S )NrÊ  )ÚblackÚwhite)r  ÚselectforegroundrÙ  Úselectbackgroundr   r   rž  )r
  rÆ   rõ  Ú
_ROW_COLORÚ	rowconfigÚitemconfigurer7  )r3   r	  ÚbgÚsbgÚfgÚsfgs         r6   r¤  zDownloaderGUI._color_table>  s¿   € å�˜Tœ[Ñ)Ô)Ñ*Ô*ð 	ð 	ˆCØ”o d¤k°#°x°-Ô&@ÔA‰GˆB�Ø(‰GˆB�ØŒK×!Ò!ØØØ!$ØØ!$ð "ñ ô ð ð ŒK×%Ò%Ø�Q 4Ô#3°AÔ#6À4ÔCSÐTUÔCVð &ñ ô ð ð ð	ð 	r8   c                 óŒ   — t          t          | j        ¦  «        ¦  «        D ]!}| j        |df         |k    rd| j        |df<   Œ"d S )NrÇ  r   r   ©r
  rÆ   rõ  rË  s      r6   rÆ  zDownloaderGUI._clear_markO  sU   € Ý�˜Tœ[Ñ)Ô)Ñ*Ô*ð 	)ð 	)ˆCØŒ{˜3 Ð,Ô-°Ò3Ð3Ø&(�”˜C ˜FÑ#øð	)ð 	)r8   c                 óf   — t          t          | j        ¦  «        ¦  «        D ]}d| j        |df<   Œd S )Nr¿  r   rÙ  )r3   r  r	  s      r6   r@  zDownloaderGUI._mark_allT  s@   € Ý�˜Tœ[Ñ)Ô)Ñ*Ô*ð 	&ð 	&ˆCØ"%ˆDŒK˜˜Q˜ÑÐð	&ð 	&r8   c                 óÚ   — | j                              ¦   «         }|dk    r0| j         |         d         dk    rd| j         |df<   nd| j         |df<   | j                              d¬¦  «         d S )Nr   r   r¿  r   )r  )rõ  r¡  rö  )r3   r  r¶  s      r6   r=  zDownloaderGUI._table_markX  sw   € Ø”K×,Ò,Ñ.Ô.ˆ	Ø˜Š>ˆ>ØŒ{˜9Ô% aÔ(¨BÒ.Ð.Ø,.�”˜I q˜LÑ)Ð)à,/�”˜I q˜LÑ)ØŒ×Ò ÐÑ#Ô#Ð#Ð#Ð#r8   c                 óf   — d                      | j        ¦  «        }t          | j        d|¦  «         d S )Nr¿   zNLTK Downloader Log)r-   rä  r   rç  )r3   r  s     r6   ro  zDownloaderGUI._show_loga  s1   € Ø�yŠy˜Ô+Ñ,Ô,ˆÝ�”Ð0°$Ñ7Ô7Ð7Ð7Ð7r8   c                 ó¸  — g }t          | j        ¦  «        D ]Â\  }}|dk    r|                     d¦  «         Œ!|dk    r|                     |j        ¦  «         ŒB|dk    r.|                     | j                             |¦  «        ¦  «         Œv|                     ¦   «                              dd¦  «        }|                     t          ||d¦  «        ¦  «         ŒÃ|S )z„
        Given a package, return a list of values describing that
        package, one for each column in ``self.COLUMNS``.
        r   r   rÇ  rÊ  r¶   rY  zn/a)	r  r4  rÇ   r   r�  rË   rÕ   ÚreplacerÊ   )r3   rí   r	  Úcolumn_indexÚcolumn_nameÚattrs         r6   r�  z!DownloaderGUI._package_to_columnse  sÚ   € ð
 ˆÝ)2°4´<Ñ)@Ô)@ð 		6ð 		6Ñ%ˆL˜+Ø˜qÒ Ð Ø—
’
˜2‘”��Ø Ò,Ð,Ø—
’
˜3œ6Ñ"Ô"Ð"Ð"Ø Ò(Ð(Ø—
’
˜4œ8Ÿ?š?¨3Ñ/Ô/Ñ0Ô0Ð0Ð0à"×(Ò(Ñ*Ô*×2Ò2°3¸Ñ<Ô<�Ø—
’
�7 3¨¨eÑ4Ô4Ñ5Ô5Ð5Ð5Øˆ
r8   c                 óX   — | j         rd S | j                             ¦   «          d| _         d S )NT)rî  rç  rí  r‚  s     r6   rí  zDownloaderGUI.destroy{  s0   € ØŒ?ð 	ØˆFØŒ×ÒÑÔÐØˆŒˆˆr8   c                 óö   — | j         �6| j                             ¦   «         D ]}| j                              |¦  «         Œ| j        r| j        r|                      ¦   «          | j                             ¦   «          d S rC   )	rç  rã  ræ   Úafter_cancelrâ  rÜ  Ú_abort_downloadrï  rM  )r3   r  rÉ  s      r6   r÷  zDownloaderGUI._destroy�  s†   € ØŒ8ÐØœ=×/Ò/Ñ1Ô1ð /ð /�Ø”×%Ò% gÑ.Ô.Ð.Ð.ð Ôð 	# Ô!2ð 	#Ø× Ò Ñ"Ô"Ð"ð
 	Ô×ÒÑ!Ô!Ð!Ð!Ð!r8   c                 ó*   —  | j         j        |i |¤Ž d S rC   )rç  r–  )r3   r±  Úkwargss      r6   r–  zDownloaderGUI.mainloop�  s"   € ØˆŒÔ˜4Ð* 6Ð*Ð*Ð*Ð*Ð*r8   an      This tool can be used to download a variety of corpora and models
    that can be used with NLTK.  Each corpus or model is distributed
    in a single zip file, known as a "package file."  You can
    download packages individually, or you can download pre-defined
    collections of packages.

    When you download a package, it will be saved to the "download
    directory."  A default download directory is chosen when you run

    the downloader; but you may also select a different download
    directory.  On Windows, the default download directory is


    "package."

    The NLTK downloader can be used to download a variety of corpora,
    models, and other data packages.

    Keyboard shortcuts::
      [return]	 Download
      [up]	 Select previous package
      [down]	 Select next package
      [left]	 Select previous tab
      [right]	 Select next tab
    c                 óÖ   — 	 t          | j        d| j                             ¦   «         dd¬¦  «         d S #  t          | j        d| j                             ¦   «         d¬¦  «         Y d S xY w)NzHelp: NLTK Downloaderr¸   Úfixed)rÄ   r  r  )r   rç  ÚHELPr@  r‚  s     r6   rv  zDownloaderGUI.help³  s€   € ð		UÝØ”Ø'Ø”	—’Ñ!Ô!ØØðñ ô ð ð ð øð	UÝ�T”XÐ6¸¼	¿ºÑ8IÔ8IÐQSÐTÑTÔTÐTÐTÐTÐTøøøs	   ‚04 ´1A(c                 ó¨   — d}d}	 ddl m}  |||¬¦  «                             ¦   «          d S # t          $ r t	          | j        ||¦  «         Y d S w xY w)Nz'NLTK Downloader
Written by Edward LoperzAbout: NLTK Downloaderr   )ÚMessage)r“   ré  )Útkinter.messageboxrì  r6  ÚImportErrorr   rç  )r3   r  ÚABOUTÚTITLErì  s        r6   ru  zDownloaderGUI.aboutÀ  s‚   € Ø?ˆØ(ˆð	-Ø2Ð2Ð2Ð2Ð2Ð2àˆG˜E¨Ð/Ñ/Ô/×4Ò4Ñ6Ô6Ð6Ð6Ð6øÝð 	-ð 	-ð 	-Ý�T”X˜u eÑ,Ô,Ð,Ð,Ð,Ð,ð	-øøøs   †%- ­ AÁAc                 óD  — | j         }t          |d         ¦  «        t          |d         ¦  «        }}t          dt          |d         ¦  «        dz  | j        z  ¦  «        D ]Z}|                     || j        z  dz   d|| j        z  |z
  dz
  |dz   | j        ddt          |d	z  d
z
  ¦  «        dz  z   z  ¬¦  «         Œ[|                     d¦  «         |                     dd¬¦  «         |                     d| 	                    dddd| j
        d         ¬¦  «        ¦  «         d S )NrÄ   r  r   r  r½   iìÿÿÿz	#%02x0000r  r  r°   rÔ  )rÄ   rÑ   ÚgradientÚhidden©r…  Úredbox)rÑ   )rH  r    r
  Ú_gradient_widthÚcreate_lineÚabsÚ
addtag_allÚ
itemconfigÚaddtag_withtagÚcreate_rectanglerG  )r3   rk  rÄ   r  r  s        r6   rI  zDownloaderGUI._init_progressbarÐ  sB  € ØÔˆÝ˜A˜gœJ™œ­¨Q¨x¬[Ñ)9Ô)9ˆvˆÝ�q�3˜q œz™?œ?¨QÑ.°4Ô3GÑGÑHÔHð 	ð 	ˆAØ�MŠMØ�DÔ(Ñ(¨2Ñ-ØØ�DÔ(Ñ(¨6Ñ1°BÑ6Ø˜‘ØÔ*Ø  B­¨Q°©U°Q©Y©¬¸"Ñ)<Ñ$<Ñ=ð ñ ô ð ð ð 	
�Š�ZÑ Ô Ð Ø	�Š�Z xˆÑ0Ô0Ð0ð 	
×ÒØ�a×(Ò(¨¨A¨q°!¸$Ô:NÈqÔ:QÐ(ÑRÔRñ	
ô 	
ð 	
ð 	
ð 	
r8   c                 ó8  — | j         }|€2|                     ddddd¦  «         |                     dd¬¦  «         d S t          |d         ¦  «        t          |d         ¦  «        }}|t          |¦  «        z  dz  d	z   }|                     ddd||d	z   ¦  «         d S )
Nrõ  r   rò  ró  rô  rÄ   r  r	  r   )rH  Úcoordsrú  r    )r3   Úpercentrk  rÄ   r  rÀ   s         r6   rÄ  zDownloaderGUI._show_progressä  s¢   € ØÔˆØˆ?Ø�HŠH�X˜q ! Q¨Ñ*Ô*Ð*Ø�LŠL˜¨8ˆLÑ4Ô4Ð4Ð4Ð4å  '¤
™OœO­S°°8´Ñ-=Ô-=�6ˆEØ�#˜e™*œ*Ñ$¨Ñ+¨aÑ/ˆAØ�HŠH�X˜q ! Q¨°©
Ñ3Ô3Ð3Ð3Ð3r8   c                 óŠ  — | j         }| j        s|                     dd¬¦  «         d S |                     dd¬¦  «         |                     d¦  «        \  }}}}|dk    r#|                     d| j        dz  dz
  d¦  «         n|                     dd	d¦  «         | j                             d
| j        ¦  «        }|| j	        d<   d S )Nrò  ró  rô  r„  iœÿÿÿr  r  r   r;  r*  Ú_progress_alive)
rH  râ  rú  ÚbboxÚmoverö  rç  r¥  r  rã  )r3   rk  Úx1Úy1Úx2Úy2rÉ  s          r6   r  zDownloaderGUI._progress_aliveî  sÐ   € ØÔˆØÔ ð 
	7Ø�LŠL˜¨8ˆLÑ4Ô4Ð4Ð4Ð4à�LŠL˜¨8ˆLÑ4Ô4Ð4ØŸVšV JÑ/Ô/‰NˆB��B˜Ø�TŠzˆzØ—’�z DÔ$8¸1Ñ$<ÀÑ#AÀ1ÑEÔEÐEÐEà—’�z 2 qÑ)Ô)Ð)Ø”h—n’n S¨$Ô*>Ñ?Ô?ˆGØ/6ˆDŒMÐ+Ñ,Ð,Ð,r8   c                 óf  ‡ — ‰ j         r‰                      ¦   «          d S d‰ j        d<   ˆ fd„t          t	          ‰ j        ¦  «        ¦  «        D ¦   «         }‰ j                             ¦   «         }|s|�‰ j        |df         g}t          ‰ j        j	        ‰ j        j
        ¦  «        }‰ j        g k    sJ ‚‰ j        g k    sJ ‚‰                      ||‰ j        ‰ j        ‰ j        ¦  «                             ¦   «          d‰ _        d‰ _         ‰                      ¦   «          ‰                      ¦   «          d S )NÚCancelr  c                 óT   •— g | ]$}‰j         |d f         dk    ¯‰j         |df         ‘Œ%S r¯  r°  r±  s     €r6   r^   z4DownloaderGUI._download_threaded.<locals>.<listcomp>
  r²  r8   rÇ  r   T)râ  rå  rC  r
  rÆ   rõ  r¡  rž   r�  r   r›   rà  rá  Ú_DownloadThreadrß  Ústartrå  Ú_monitor_message_queuer  )r3   r  rµ  r¶  Údss   `    r6   r³  z DownloaderGUI._download_threaded   s`  ø€ ð Ôð 	Ø× Ò Ñ"Ô"Ð"ØˆFð )1ˆÔ˜fÑ%ð
ð 
ð 
ð 
å�S ¤Ñ-Ô-Ñ.Ô.ð
ñ 
ô 
ˆð
 ”K×,Ò,Ñ.Ô.ˆ	Øð 	<˜)Ð/Ø”k )¨\Ð"9Ô:Ð;ˆFõ
 ˜œœ d¤hÔ&;Ñ<Ô<ˆð Ô'¨2Ò-Ð-Ð-Ð-ØÔ)¨RÒ/Ð/Ð/Ð/Ø×ÒØØØÔØÔ$ØÔ&ñ	
ô 	
÷ Š%‰'Œ'ˆ'ð ˆÔØ ˆÔØ×#Ò#Ñ%Ô%Ð%ð 	×ÒÑÔÐÐÐr8   c                 ó°   — | j         rN| j                             ¦   «          | j                             d¦  «         | j                             ¦   «          d S d S )NÚabort)râ  rß  Úacquirerá  rÇ   ÚreleaserJ   s    r6   rå  zDownloaderGUI._abort_download,  s^   € ØÔð 	*ØÔ×'Ò'Ñ)Ô)Ð)ØÔ&×-Ò-¨gÑ6Ô6Ð6ØÔ×'Ò'Ñ)Ô)Ð)Ð)Ð)ð	*ð 	*r8   c                   ó   — e Zd Zd„ Zd„ ZdS )úDownloaderGUI._DownloadThreadc                 óŠ   — || _         || _        || _        || _        || _        t
          j                             | ¦  «         d S rC   )Údata_serverrð   ÚlockÚmessage_queuer  rÝ  ÚThreadr7   )r3   r  rð   r  r  r  s         r6   r7   z&DownloaderGUI._DownloadThread.__init__3  sD   € Ø*ˆDÔØˆDŒJØˆDŒIØ!.ˆDÔØˆDŒJÝÔ×%Ò% dÑ+Ô+Ð+Ð+Ð+r8   c                 óô  — | j                              | j        ¦  «        D ]‹}| j                             ¦   «          | j                             |¦  «         | j        r6| j                             d¦  «         | j                             ¦   «           d S | j                             ¦   «          ŒŒ| j                             ¦   «          | j                             d¦  «         | j                             ¦   «          d S )NÚabortedÚfinished)	r  rÿ   rð   r  r  r  rÇ   r  r  rû  s     r6   r˜  z!DownloaderGUI._DownloadThread.run;  sç   € ØÔ'×5Ò5°d´jÑAÔAð $ð $�Ø”	×!Ò!Ñ#Ô#Ð#ØÔ"×)Ò)¨#Ñ.Ô.Ð.à”:ð ØÔ&×-Ò-¨iÑ8Ô8Ð8Ø”I×%Ò%Ñ'Ô'Ð'Ø�F�FØ”	×!Ò!Ñ#Ô#Ð#Ð#ØŒI×ÒÑÔÐØÔ×%Ò% jÑ1Ô1Ð1ØŒI×ÒÑÔÐÐÐr8   N)rM   rN   rO   r7   r˜  r:   r8   r6   r  r  2  s2   € € € € € ð	,ð 	,ð 	,ð	 ð 	 ð 	 ð 	 ð 	 r8   r  r	  c                 ó¨  ‡ — ˆ fd„}‰ j                              ¦   «         sd S ‰ j        D �]D}|dk    s|dk    r§‰                      ¦   «          d‰ _        d‰ j        d<   ‰ j        d d …= ‰ j        d d …= ‰ j                              ¦   «          |dk    r! |d¦  «         ‰                      d ¦  «         n+‰ j	         
                    d‰ j        d ¦  «        }|‰ j        d	<    d S t          |t          ¦  «        r‰                      |j        ¦  «         Œæt          |t          ¦  «        rU ||j        ¦  «         |j        �‰                      |j        j        ¦  «         ‰                      d ¦  «         d‰ _         d S t          |t(          ¦  «        r* |d
|j        j        z  ¦  «         ‰ xj        dz  c_        �Œ�t          |t.          ¦  «        r>‰ j                             |j        j        ¦  «          |d|j        j        z  ¦  «         �Œât          |t4          ¦  «        r |d|j        j        z  ¦  «         �Œt          |t6          ¦  «        r |d|j        j        z  ¦  «         �Œ@t          |t8          ¦  «        r |d|j        j        z  ¦  «         �Œot          |t<          ¦  «        r |d|j        j        z  ¦  «         �Œžt          |t>          ¦  «        rI‰ xj        dz  c_         |d|j        j        z  ¦  «         ‰                       |j        j        ¦  «         �Œüt          |tB          ¦  «        r3‰                      ¦   «          ‰                       |j        j        ¦  «         �ŒF‰ j        r
d‰ j"        d<   ‰ j        d d …= ‰ j                              ¦   «          ‰ j	         
                    ‰ j#        ‰ j$        ¦  «        }|‰ j        d	<   d S )Nc                 óF   •— | ‰j         d<   ‰                     | ¦  «         d S rº  r»  r¼  s    €r6   r6  z2DownloaderGUI._monitor_message_queue.<locals>.showL  r½  r8   r  r  Fr'  r  zDownload aborted!r	  r  r:  r   zDownloading package %rr¾  r¿  rÀ  zFinished installing %srÁ  zAborting download...)%rß  r  rà  r¬  râ  rC  rá  r  rÄ  rç  r¥  rã  r;   r•   r—   r�   r“   rt   rÅ  r   rf   ri   rå  rq   r�  rO  rŠ   r€   r„   r.   r‡   rn   rÆ  ry   rF  Ú_MONITOR_QUEUE_DELAYr  )r3   r6  râ   rÉ  s   `   r6   r  z$DownloaderGUI._monitor_message_queueK  s  ø€ ð	ð 	ð 	ð 	ð 	ð
 Ô"×*Ò*Ñ,Ô,ð 	ØˆFØÔ+ð 4	1ñ 4	1ˆCð �jÒ Ð  C¨9Ò$4Ð$4à×)Ò)Ñ+Ô+Ð+Ø$)�Ô!Ø0:�Ô% fÑ-ØÔ,¨Q¨Q¨QÐ/ØÔ.¨q¨q¨qÐ1ØÔ#×+Ò+Ñ-Ô-Ð-Ø˜)Ò#Ð#Ø�DÐ,Ñ-Ô-Ð-Ø×'Ò'¨Ñ-Ô-Ð-Ð-à"œhŸnšn¨S°$Ô2EÀtÑLÔL�GØ>E�D”MÐ":Ñ;Ø��õ ˜C¥Ñ1Ô1ð  1Ø×#Ò# C¤LÑ1Ô1Ð1Ð1Ý˜C¥Ñ.Ô.ð 1Ø��S”[Ñ!Ô!Ð!Ø”;Ð*Ø—L’L ¤¤Ñ0Ô0Ð0Ø×#Ò# DÑ)Ô)Ð)Ø$)�Ô!Ø��Ý˜CÕ!7Ñ8Ô8ð 1Ø�Ð0°3´>Ô3DÑDÑEÔEÐEØÐ Ô  AÑ%Ð Ô Ñ Ý˜CÕ!4Ñ5Ô5ð 1Ø”×+Ò+¨C¬K¬NÑ;Ô;Ð;Ø�Ð-°´´Ñ>Ñ?Ô?Ð?Ñ?Ý˜C¥Ñ1Ô1ð 1Ø�Ð0°3´;´>ÑAÑBÔBÐBÑBõ ˜CÕ!6Ñ7Ô7ð 1Ø�Ð/°#´+´.Ñ@ÑAÔAÐAÑAÝ˜CÕ!2Ñ3Ô3ð 
1Ø��^ c¤kÔ&:Ñ:Ñ;Ô;Ð;Ñ;Ý˜CÕ!3Ñ4Ô4ð 1Ø�Ð-°´´Ñ>Ñ?Ô?Ð?Ñ?Ý˜CÕ!8Ñ9Ô9ð 1ØÐ Ô  AÑ%Ð Ô Ø�Ð:¸S¼^Ô=NÑNÑOÔOÐOØ× Ò  ¤Ô!2Ñ3Ô3Ð3Ñ3Ý˜CÕ!5Ñ6Ô6ð 1Ø×)Ò)Ñ+Ô+Ð+Ø× Ò  ¤¤Ñ0Ô0Ð0ùð
 Ô%ð 	AØ*@ˆDÔ Ñ'ð Ô$ Q Q QÐ'ØÔ×#Ò#Ñ%Ô%Ð%ð ”(—.’. Ô!:¸DÔ<WÑXÔXˆØ29ˆŒÐ.Ñ/Ð/Ð/r8   ©TrC   )FrM   rN   rO   rP   r4  r  r8  r9  rr  rk  rë  rž   rÌ   rÎ   rÍ   rÏ   rÑ  r7  r¢  r£  rG  r2  r7   ræ  rð  rñ  rô  rD  r$  rB  r5  r�  r’  ró  r>  r?  r3  r–  Ú_rowsrò  r¬  r<  rÇ  r´  rÅ  r¤  rÆ  r@  r=  ro  r�  rí  r÷  r–  rÐ   Údedentrê  rv  ru  rö  rI  rÄ  r  r³  rå  rÝ  r  r  r  r  r:   r8   r6   r•  r•    sú  € € € € € ðð ðð ð €GðDð  Q°¸QÐ?Ð?€NðCð ØØØØØðð €Mð<ð Ðð ð CÐBÐB€OØAð ð ð ˆØ�Gˆ|ˆ|ˆ|ˆ|ˆ|Øð ð ˆØ�Gˆ|ˆ|ˆ|ˆ|ˆ|Øð ð ˆØ�Gˆ|ˆ|ˆ|ˆ|ˆ|ð '€Oð 	ÔÐ.ØÔÐ,ØÔÐ*ØÔ Ð"2ð	€Jð #€Kð (ÐØ&€Oà&€Oà$€Ið/5ð /5ð /5ð /5ðb
ð 
ð 
ðm.ð m.ð m.ð^C&ð C&ð C&ðJ0ð 0ð 0ðð ð ðð ð ðð ð ð ð ð  ð  ð ð ð ðð ð ð(ð (ð (ð	Fð 	Fð 	Fð	Fð 	Fð 	Fð>ð >ð >ð €Dà€Eð'Sð 'Sð 'SðRð ð ð1ð 1ð 1ð& €Ið*0ð *0ð *0ðXð ð ðð ð ð")ð )ð )ð
&ð &ð &ð$ð $ð $ð8ð 8ð 8ðð ð ð,ð ð ð"ð "ð "ð+ð +ð +ð ˆ8Œ?ð	ñô €Dð:Uð Uð Uð-ð -ð -ð €Oð
ð 
ð 
ð(4ð 4ð 4ð7ð 7ð 7ð$*ð *ð *ðX*ð *ð *ð ð  ð  ð  ð  ˜)Ô*ñ  ô  ð  ð. ÐðJ:ð J:ð J:ð J:ð J:r8   r•  c                 ó¸   — t          | t          ¦  «        r7t          | d¦  «        5 }t          |¦  «        cddd¦  «         S # 1 swxY w Y   t          | ¦  «        S )zz
    Calculate and return the MD5 checksum for a given file.
    ``file`` may either be a filename or an open stream.
    ÚrbN)r;   r<   r  Ú_md5_hexdigest)r0  r(  s     r6   r\  r\  ž  s–   € õ
 �$�ÑÔð *Ý�$˜ÑÔð 	* Ý! &Ñ)Ô)ð	*ð 	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*å˜$ÑÔÐs   ¦AÁAÁ	Ac                 ó¤   — t          ¦   «         }	 |                      d¦  «        }|sn|                     |¦  «         Œ.|                     ¦   «         S )NTr  )r   r!  r2   Ú	hexdigest)ÚfpÚ
md5_digestr+  s      r6   r%  r%  ©  sY   € Ý‘”€Jð!Ø—’˜	Ñ"Ô"ˆØð 	ØØ×Ò˜%Ñ Ô Ð ð	!ð
 ×ÒÑ!Ô!Ð!r8   c                 óv   — t          | ||¦  «        D ]&}t          |t          ¦  «        rt          |¦  «        ‚Œ'dS )z\
    Extract the contents of the zip file ``filename`` into the
    directory ``root``.
    N)r&  r;   r�   r’   )r.   Úrootr  r“   s       r6   r0   r0   ¶  sN   € õ
 ˜x¨¨wÑ7Ô7ð %ð %ˆÝ�g�|Ñ,Ô,ð 	%Ý˜GÑ$Ô$Ð$ð	%ð%ð %r8   c              #   óö  K  — |rct           j                             dt          j                             | ¦  «        d         z  ¦  «         t           j                             ¦   «          	 t          j        | ¦  «        }nT# t          j	        $ r}t          | d¦  «        V — Y d }~d S d }~wt          $ r}t          | |¦  «        V — Y d }~d S d }~ww xY w|                     |¦  «         |rt          ¦   «          d S d S )NrÀ  r   zError with downloaded zip file)rŠ  Ústdoutr"  r)   r*   r,   ÚflushÚzipfileÚZipFileÚerrorr�   r’   Ú
extractallrÅ   )r.   r+  r  Úzfr  s        r6   r&  r&  À  s  è è € Øð ÝŒ
×Ò˜­"¬'¯-ª-¸Ñ*AÔ*AÀ!Ô*DÑDÑEÔEÐEÝŒ
×ÒÑÔÐðÝŒ_˜XÑ&Ô&ˆˆøÝŒ=ð ð ð Ý˜8Ð%EÑFÔFÐFÐFÐFØˆˆˆˆˆøøøøÝð ð ð Ý˜8 QÑ'Ô'Ð'Ð'Ð'Øˆˆˆˆˆøøøøðøøøð ‡M‚M�$ÑÔÐàð Ý‰Œˆˆˆðð s$   Á)A> Á>CÂB%Â%CÂ2C
Ã
Cc                 óÈ  — g }t          t          j                             | d¦  «        ¦  «        D �]5\  }}}t          j        |j        ¦  «        }|› d|› dt          j                             |j        ¦  «        d         › �}t          d„ |                     ¦   «         D ¦   «         ¦  «        }| 	                    dd|z  ¦  «         | 	                    dd|j
        z  ¦  «         | 	                    ddt          |j        ¦  «        z  ¦  «         | 	                    d	|¦  «         |                     d
¦  «        s| 	                    d
|¦  «         |                     |¦  «         �Œ7t          t          t          j                             | d¦  «        ¦  «        ¦  «        }	t          ¦   «         }
||	z   D ]f}|                     d¦  «        |
v r%t!          d|                     d¦  «        z  ¦  «        ‚|
                     |                     d¦  «        ¦  «         Œgt%          j        d¦  «        }|                     t%          j        d¦  «        ¦  «         |d                              t+          |d„ ¬¦  «        ¦  «         |                     t%          j        d¦  «        ¦  «         |d                              t+          |	d„ ¬¦  «        ¦  «         t-          |¦  «         |S )a}  
    Create a new data.xml index file, by combining the xml description
    files for various packages and collections.  ``root`` should be the
    path to a directory containing the package xml and zip files; and
    the collection xml files.  The ``root`` directory is expected to
    have the following subdirectories::

      root/
        packages/ .................. subdirectory for packages
          corpora/ ................. zip & xml files for corpora
          grammars/ ................ zip & xml files for grammars
          taggers/ ................. zip & xml files for taggers
          tokenizers/ .............. zip & xml files for tokenizers
          etc.
        collections/ ............... xml files for collections

    For each package, there should be two files: ``package.zip``
    (where *package* is the package name)
    which contains the package itself as a compressed zip file; and
    ``package.xml``, which is an xml description of the package.  The
    zipfile ``package.zip`` should expand to a single subdirectory
    named ``package/``.  The base filename ``package`` must match
    the identifier given in the package's xml file.

    For each collection, there should be a single file ``collection.zip``
    describing the collection, where *collection* is the name of the collection.

    All identifiers (for both packages and collections) must be unique.
    rV   r   r   c              3   ó$   K  — | ]}|j         V — Œd S rC   )Ú	file_size)r\   Úzf_infos     r6   r  zbuild_index.<locals>.<genexpr>ý  s%   è è € ÐKÐK°'˜GÔ-ÐKÐKÐKÐKÐKÐKr8   r"   z%sr!   r#   r   r   r±   r   zDuplicate UID: %sr†  r   c                 ó,   — |                       d¦  «        S ©Nr   rZ   rs   s    r6   r%  zbuild_index.<locals>.<lambda>	  s   € ¸7¿;º;ÀtÑ;LÔ;L€ r8   r²   c                 ó,   — |                       d¦  «        S r9  rZ   rh   s    r6   r%  zbuild_index.<locals>.<lambda>	  s   € ÀÇÂÐPTÑAUÔAU€ r8   )Ú_find_packagesr)   r*   r-   rV  r.   r,   r  Úinfolistrs  rW  r\  r[   rÇ   rã   Ú_find_collectionsrþ   Úaddr   ÚElementrt  rÉ   Ú_indent_xml)r+  Úbase_urlrV   Úpkg_xmlr3  r   Úzipstatr   r"   r±   Úuidsr_   Útop_elts                r6   Úbuild_indexrF  Ú  s’  € ð> €HÝ-­b¬g¯lªl¸4ÀÑ.LÔ.LÑMÔMð !ñ !Ñˆ��VÝ”'˜"œ+Ñ&Ô&ˆØÐDÐD˜FÐDÐD¥R¤W§]¢]°2´;Ñ%?Ô%?ÀÔ%BÐDÐDˆÝÐKÐK¸R¿[º[¹]¼]ÐKÑKÔKÑKÔKˆð 	�Š�O T¨MÑ%9Ñ:Ô:Ð:Ø�Š�F˜D 7¤?Ñ2Ñ3Ô3Ð3Ø�Š�J ¥}°R´[Ñ'AÔ'AÑ AÑBÔBÐBØ�Š�H˜fÑ%Ô%Ð%à�{Š{˜5Ñ!Ô!ð 	$Ø�KŠK˜˜sÑ#Ô#Ð#ð 	�Š˜Ñ Ô Ð Ñ õ Õ(­¬¯ª°d¸MÑ)JÔ)JÑKÔKÑLÔL€Kõ ‰5Œ5€DØ˜;Ñ&ð !ð !ˆØ�8Š8�D‰>Œ>˜TÐ!Ð!ÝÐ0°4·8²8¸D±>´>ÑAÑBÔBÐBØ�Š�—’˜$‘”Ñ Ô Ð Ð õ Ô! +Ñ.Ô.€GØ‡N‚N•;Ô& zÑ2Ô2Ñ3Ô3Ð3ØˆA„J×Ò•f˜XÐ+LÐ+LÐMÑMÔMÑNÔNÐNØ‡N‚N•;Ô& }Ñ5Ô5Ñ6Ô6Ð6ØˆA„J×Ò•f˜[Ð.UÐ.UÐVÑVÔVÑWÔWÐWå�ÑÔÐØ€Nr8   r   c                 ó‚  — t          | ¦  «        dk    r«| j        pd                     ¦   «         dz   |z   dz   | _        | D ]}t          ||dz   ¦  «         Œ| dd…         D ]+}|j        pd                     ¦   «         dz   |z   dz   |_        Œ,| d         j        pd                     ¦   «         dz   |z   | d         _        dS dS )zþ
    Helper for ``build_index()``: Given an XML ``ElementTree``, modify it
    (and its descendents) ``text`` and ``tail`` attributes to generate
    an indented tree, where each nested element is indented by 2
    spaces with respect to its parent.
    r   r   r¿   r<  Nr   )rÆ   r  r@  r@  Útail)r?   rà   r]   s      r6   r@  r@   	  sÜ   € õ ˆ3�x„x�!‚|€|Ø”H�N ×)Ò)Ñ+Ô+¨dÑ2°VÑ;¸dÑBˆŒØð 	.ð 	.ˆEÝ˜˜v¨™}Ñ-Ô-Ð-Ð-Ø˜˜"˜”Xð 	Kð 	KˆEØœ*Ð*¨×1Ò1Ñ3Ô3°dÑ:¸VÑCÀdÑJˆEŒJˆJØ˜BœœÐ*¨×1Ò1Ñ3Ô3°dÑ:¸VÑCˆˆBŒŒˆˆð €|r8   c                 ó¼  ‡— t           j                             t           j                             |¦  «        d         ¦  «        d         Š|                      d¦  «        ‰k    r6t          d                     |                      d¦  «        ‰¦  «        ¦  «        ‚t          ˆfd„|                     ¦   «         D ¦   «         ¦  «        rt          d‰›d‰›d�¦  «        ‚d	S )
zr
    Helper for ``build_index()``: Perform some checks to make sure that
    the given package is consistent.
    r   r   r   z&package identifier mismatch ({} vs {})c              3   óV   •K  — | ]#}|‰k    o|                      ‰d z   ¦  «         V — Œ$dS ©r   N©rÃ  ©r\   r   Úuids     €r6   r  z!_check_package.<locals>.<genexpr>=	  s?   øè è € Ð
VÐ
VÀˆD�CŠKÐ: §¢°°c±	Ñ :Ô :Ð:Ð
VÐ
VÐ
VÐ
VÐ
VÐ
Vr8   úZipfile ú..zip does not expand to a single subdirectory r   N)	r)   r*   r+   r,   r[   rþ   rÒ   r  Únamelist)rB  Úzipfilenamer3  rN  s      @r6   Ú_check_packagerS  0	  sÙ   ø€ õ Œ'×
Ò
�2œ7Ÿ=š=¨Ñ5Ô5°aÔ8Ñ
9Ô
9¸!Ô
<€CØ‡{‚{�4ÑÔ˜CÒÐÝØ4×;Ò;¸G¿KºKÈÑ<MÔ<MÈsÑSÔSñ
ô 
ð 	
õ
 Ð
VÐ
VÐ
VÐ
VÈÏÊÉÌÐ
VÑ
VÔ
VÑVÔVð 
Ýˆjà"% # # s s sð,ñ
ô 
ð 	
ð
ð 
r8   c                 ót  — t          j        ddd| gt           j        t           j        ¬¦  «        }|                     ¦   «         \  }}|j        dk    s|s|sJt          dt          j                             | ¦  «        d         ›dt          j
        |¦  «        ›�¦  «        ‚|                     ¦   «         d	         S )
z�
    Helper for ``build_index()``: Calculate the subversion revision
    number for a given file (by using ``subprocess`` to run ``svn``).
    ÚsvnrË   z-v)r-  r™  r   z#Error determining svn_revision for r   rú   r  )Ú
subprocessÚPopenÚPIPEÚcommunicateÚ
returncoderþ   r)   r*   r,   rÐ   rÑ   )r.   re  r-  r™  s       r6   Ú_svn_revisionr[  E	  s¶   € õ
 	ÔØ	�˜$ Ð)ÝŒÝŒð	ñ 	ô 	€Að
 —}’}‘”Ñ€VˆVØ„|�qÒÐ˜FÐ¨&ÐÝˆjåŒw�}Š}˜XÑ&Ô& qÔ)Ð)Ð)­8¬=¸Ñ+@Ô+@Ð+@ðBñ
ô 
ð 	
ð �<Š<‰>Œ>˜!ÔÐr8   c              #   ó  K  — t          j        | ¦  «        D ]h\  }}}|D ]_}|                     d¦  «        rHt           j                             ||¦  «        }t          j        |¦  «                             ¦   «         V — Œ`ŒidS )zŽ
    Helper for ``build_index()``: Yield a list of ElementTree.Element
    objects, each holding the xml for a single package collection.
    ú.xmlN)r)   r^  r%  r*   r-   r   r=   rs  )r+  ÚdirnameÚ_subdirsrZ  r.   Úxmlfiles         r6   r=  r=  X	  s“   è è € õ
 %'¤G¨D¡M¤Mð ;ð ;Ñ ˆ�˜5Øð 	;ð 	;ˆHØ× Ò  Ñ(Ô(ð ;Ýœ'Ÿ,š, w°Ñ9Ô9�Ý!Ô'¨Ñ0Ô0×8Ò8Ñ:Ô:Ð:Ð:Ð:øð	;ð;ð ;r8   c           
   #   óD  ‡K  — ddl m} g }t          j        | ¦  «        D �]~\  }}}d                      || |¦  «        ¦  «        }|D �]-}|                     d¦  «        �rvt          j                             ||¦  «        }|dd…         dz   }		 t          j        |	¦  «        }
n(# t          $ r}t          d|	›d	|› �¦  «        |‚d}~ww xY w	 t          j        |¦  «                             ¦   «         }n(# t          $ r}t          d|›d	|› �¦  «        |‚d}~ww xY wt          j                             |dd…         ¦  «        d
         Š|                     d¦  «        ‰k    r)t          d|                     d¦  «        ›d‰›d�¦  «        ‚t!          ˆfd„|
                     ¦   «         D ¦   «         ¦  «        rt          d‰›d‰›d�¦  «        ‚||
|fV — �Œ�|                     d¦  «        r‰t          j                             |¦  «        d         }t          j                             ||dz   ¦  «        }t          j                             |¦  «        s"t)          j        |› d|dz   › d|› d�d¬¦  «         �Œ/	 |                     d¦  «         �Œo# t          $ r Y �Œ|w xY wdS )a‚  
    Helper for ``build_index()``: Yield a list of tuples
    ``(pkg_xml, zf, subdir)``, where:
      - ``pkg_xml`` is an ``ElementTree.Element`` holding the xml for a
        package
      - ``zf`` is a ``zipfile.ZipFile`` for the package's contents.
      - ``subdir`` is the subdirectory (relative to ``root``) where
        the package was found (e.g. 'corpora' or 'grammars').
    r   )Ú
_path_fromr   r]  Nr;  r  zError reading file z!
r   r   zpackage identifier mismatch (z vs rÂ   c              3   óV   •K  — | ]#}|‰k    o|                      ‰d z   ¦  «         V — Œ$dS rK  rL  rM  s     €r6   r  z!_find_packages.<locals>.<genexpr>‹	  sS   øè è € ð ð àð ˜S’[ÐC¨¯ª¸¸s¹Ñ)CÔ)CÐ%Cðð ð ð ð ð r8   rO  rP  z exists, but z' cannot be found! This could mean that z can not be downloaded.r  )Ú
stacklevelz.svn)Únltk.corpus.reader.utilrb  r)   r^  r-   r%  r*   r/  r0  r’   rþ   r   r=   rs  r,   r[   r  rQ  r+   r  ÚwarningsÚwarnr  )r+  rb  rV   r^  ÚsubdirsrZ  Úrelpathr.   ÚxmlfilenamerR  r3  r  rB  ÚresourcenamerN  s                 @r6   r;  r;  d	  sX  øè è € ð 3Ð2Ð2Ð2Ð2Ð2ð €HÝ#%¤7¨4¡=¤=ð 3ñ 3Ñˆ�˜%Ø—(’(˜:˜: d¨GÑ4Ô4Ñ5Ô5ˆØð +	ñ +	ˆHØ× Ò  Ñ(Ô(ñ *Ý œgŸlšl¨7°HÑ=Ô=�Ø)¨#¨2¨#Ô.°Ñ7�ðYÝ œ¨Ñ5Ô5�B�BøÝ ð Yð Yð YÝ$Ð%P¸;Ð%PÐ%PÈQÐ%PÐ%PÑQÔQÐWXÐXøøøøðYøøøðYÝ)Ô/°Ñ<Ô<×DÒDÑFÔF�G�GøÝ ð Yð Yð YÝ$Ð%P¸;Ð%PÐ%PÈQÐ%PÐ%PÑQÔQÐWXÐXøøøøðYøøøõ ”g—m’m K°°°Ô$4Ñ5Ô5°aÔ8�Ø—;’;˜tÑ$Ô$¨Ò+Ð+Ý$˜*à$+§K¢K°Ñ$5Ô$5Ð$5Ð$5°s°s°sð<ñô ð õ ð ð ð ð à "§¢¡¤ðñ ô ñ ô ð õ %˜*à58°S°S¸#¸#¸#ð?ñô ð ð
 ˜r 7Ð*Ð*Ð*Ð*Ñ*à×"Ò" 6Ñ*Ô*ð 	å!œw×/Ò/°Ñ9Ô9¸!Ô<�Ý œgŸlšl¨7°LÀ6Ñ4IÑJÔJ�Ý”w—~’~ kÑ2Ô2ð Ý”MØ#ð Vð V°,ÀÑ2Gð Vð VØ0<ðVð Vð Và#$ðñ ô ð ùð	Ø�NŠN˜6Ñ"Ô"Ð"Ñ"øÝð 	ð 	ð 	Ø‰Dð	øøøðe3ð 3sB   ÂB$Â$
C	Â.CÃC	Ã&C4Ã4
DÃ>DÄDÉ8JÊ
JÊJc                  óR   — t          t          ¦  «                             ¦   «          d S rC   )r—  Ú_downloaderr˜  r:   r8   r6   Údownload_shellrn  ³	  s"   € Ý•KÑ Ô ×$Ò$Ñ&Ô&Ð&Ð&Ð&r8   c                  óR   — t          t          ¦  «                             ¦   «          d S rC   )r•  rm  r–  r:   r8   r6   Údownload_guirp  ·	  s"   € Ý•+ÑÔ×'Ò'Ñ)Ô)Ð)Ð)Ð)r8   c                  ó8   — t                                ¦   «          d S rC   )rm  r2   r:   r8   r6   r2   r2   »	  s   € Ý×ÒÑÔÐÐÐr8   Ú__main__)ÚOptionParserz-dz--dirÚdirz!download package to directory DIRÚDIR)Údestrv  Úmetavarz-qz--quietrB  Ú
store_truezwork quietly)rv  ÚactionÚdefaultrv  z-fz--forcer  z"download even if already installedz-ez--exit-on-errorrC  zexit if an error occursz-uz--urlr¬   ÚNLTK_DOWNLOAD_URLzdownload server index url)rv  rz  rv  )r¬   )r÷   r›   rB  r  rC  )r›   rB  r  rC  r   r=  )]rP   r>  r  r)   ÚshutilrV  rŠ  rÐ   rÝ  rn  rf  r/  Úhashlibr   Ú	xml.etreer   r”  Útkinterr   r   r   r   r	   r
   r   r   r   rí  r   Únltk.draw.tabler   Únltk.draw.utilr   rî  rþ   Úurllib.errorr   r   Úurllib.requestr   rp  r   rS   rd   rf   rn   rq   ry   r}   r€   r„   r‡   rŠ   r�   r�   r•   r™   rž   r—  r•  r\  r%  r0   r&  rF  r@  rS  r[  r=  r;  rm  rA  rn  rp  r2   rM   Úoptparsers  ÚparserÚ
add_optionr‡  r[   Ú
parse_argsr£  r±  r¬   Ú
downloaderÚpkg_idrt  rB  r  rC  Úrvr:   r8   r6   ú<module>r‹     sÌ  ðð<ð <ð~Yðt Ð Ð Ð Ø Ð Ð Ð Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !ð	Ø€GØWÐWÐWÐWÐWÐWÐWÐWÐWÐWÐWÐWÐWÐWÐWÐWÐWÐWÐWÐWÐWÐWØ,Ð,Ð,Ð,Ð,Ð,à%Ð%Ð%Ð%Ð%Ð%Ø'Ð'Ð'Ð'Ð'Ð'Ð'øØð ð ð Ø€GØ€H€H€Hðøøøð -Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø "Ð "Ð "Ð "Ð "Ð "à €€€ðZ(ð Z(ð Z(ð Z(ð Z(ñ Z(ô Z(ð Z(ðz&+ð &+ð &+ð &+ð &+ñ &+ô &+ð &+ð\!ð !ð !ð !ð !ñ !ô !ð !ð
%ð %ð %ð %ð %Ð.ñ %ô %ð %ð%ð %ð %ð %ð %Ð/ñ %ô %ð %ðð ð ð ð Ð+ñ ô ð ðð ð ð ð Ð,ñ ô ð ðð ð ð ð Ð,ñ ô ð ðð ð ð ð Ð-ñ ô ð ðð ð ð ð Ð)ñ ô ð ðð ð ð ð Ð*ñ ô ð ðð ð ð ð Ð'ñ ô ð ðð ð ð ð Ð$ñ ô ð ð#ð #ð #ð #ð #Ð$ñ #ô #ð #ð!ð !ð !ð !ð !Ð'ñ !ô !ð !ð)ð )ð )ð )ð )Ð0ñ )ô )ð )ðb
(ð b
(ð b
(ð b
(ð b
(ñ b
(ô b
(ð b
(ðJbð bð bð bð bñ bô bð bðJP:ð P:ð P:ð P:ð P:ñ P:ô P:ð P:ðr ð  ð  ð"ð "ð "ð%ð %ð %ð %ðð ð ð ð4Cð Cð CðLDð Dð Dð Dð 
ð 
ð 
ð*ð ð ð&	;ð 	;ð 	;ðAð Að AðV ˆj‰lŒl€ØÔ€ð'ð 'ð 'ð*ð *ð *ðð ð ð ˆzÒÑØ%Ð%Ð%Ð%Ð%Ð%àˆ\‰^Œ^€FØ
×ÒØØØØ0Øð ñ ô ð ð ×ÒØØØØØØð ñ ô ð ð ×ÒØØØØØØ1ð ñ ô ð ð ×ÒØØØØØØ&ð ñ ô ð ð ×ÒØØØØ”
—’Ð2Ñ3Ô3Ø(ð ñ ô ð ð ×'Ò'Ñ)Ô)�O€Wˆdà�¨WÔ-EÐFÑFÔF€Jàð 
Øð 		ð 		ˆFØ×$Ò$Ø!Ø$œ[Ø”mØ”mØ%Ô3ð %ñ ô ˆBð �UŠ{ˆ{˜wÔ4ˆ{Ø��øð		ð 		ð 	×ÒØ œØ”-Ø”-Ø!Ô/ð	 	ñ 	
ô 	
ð 	
ð 	
ð 	
ðw Ðs   ½*A( Á(	A4Á3A4