a
    hbòfÙ[  ã                   @   sZ  d Z ddlZddlZddlmZ ddlmZ g d¢Ze e	¡Z
G dd„ deƒZG d	d
„ d
eƒZG dd„ deƒZe d¡Zdd„ ZeZG dd„ deƒZdd„ ZG dd„ deƒZe d¡dfe d¡dfe d¡dfe d¡dfe d¡dfe d¡dfe d ¡d!fe d"¡d#fe d$¡d%fe d&¡d'ff
Ze d(¡dfe d)¡dfe d*¡d!fe d ¡d!fe d+¡dffZe d,¡Zd-d.„ Zd/d0„ Ze d1ej¡Zd2d2d3d2d4ddd5œZd6d7„ ZG d8d9„ d9eƒZ G d:d;„ d;eƒZ!e d<ej¡Z"d=d>„ Z#d?d@„ Z$G dAdB„ dBeƒZ%G dCdD„ dDeƒZ&G dEdF„ dFeƒZ'e'eeeƒe'ee!dGdH„ ƒe'e$e&eƒdIœZ(e(dJ e(dK< dLdM„ Z)dS )Nz~
Implementation of a flexible versioning scheme providing support for PEP-440,
setuptools-compatible and semantic versioning.
é    Né   )Ústring_types©Úparse_requirement)ÚNormalizedVersionÚNormalizedMatcherÚLegacyVersionÚLegacyMatcherÚSemanticVersionÚSemanticMatcherÚUnsupportedVersionErrorÚ
get_schemec                   @   s   e Zd ZdZdS )r   zThis is an unsupported version.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© r   r   úX/home/httpd/docs/test/DocsMgr/lib/python3.9/site-packages/pip/_vendor/distlib/version.pyr      s   r   c                   @   sx   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zedd„ ƒZdS )ÚVersionc                 C   s@   |  ¡  | _}|  |¡ | _}t|tƒs,J ‚t|ƒdks<J ‚d S )Nr   )ÚstripÚ_stringÚparseÚ_partsÚ
isinstanceÚtupleÚlen)ÚselfÚsÚpartsr   r   r   Ú__init__   s    zVersion.__init__c                 C   s   t dƒ‚d S )Nzplease implement in a subclass©ÚNotImplementedError©r   r   r   r   r   r   %   s    zVersion.parsec                 C   s$   t | ƒt |ƒkr td| |f ƒ‚d S )Nzcannot compare %r and %r)ÚtypeÚ	TypeError©r   Úotherr   r   r   Ú_check_compatible(   s    zVersion._check_compatiblec                 C   s   |   |¡ | j|jkS ©N©r'   r   r%   r   r   r   Ú__eq__,   s    
zVersion.__eq__c                 C   s   |   |¡ S r(   ©r*   r%   r   r   r   Ú__ne__0   s    zVersion.__ne__c                 C   s   |   |¡ | j|jk S r(   r)   r%   r   r   r   Ú__lt__3   s    
zVersion.__lt__c                 C   s   |   |¡p|  |¡ S r(   ©r-   r*   r%   r   r   r   Ú__gt__7   s    zVersion.__gt__c                 C   s   |   |¡p|  |¡S r(   r.   r%   r   r   r   Ú__le__:   s    zVersion.__le__c                 C   s   |   |¡p|  |¡S r(   )r/   r*   r%   r   r   r   Ú__ge__=   s    zVersion.__ge__c                 C   s
   t | jƒS r(   )Úhashr   ©r   r   r   r   Ú__hash__A   s    zVersion.__hash__c                 C   s   d| j j| jf S )Nz%s('%s')©Ú	__class__r   r   r3   r   r   r   Ú__repr__D   s    zVersion.__repr__c                 C   s   | j S r(   ©r   r3   r   r   r   Ú__str__G   s    zVersion.__str__c                 C   s   t dƒ‚d S )NzPlease implement in subclasses.r    r3   r   r   r   Úis_prereleaseJ   s    zVersion.is_prereleaseN)r   r   r   r   r   r'   r*   r,   r-   r/   r0   r1   r4   r7   r9   Úpropertyr:   r   r   r   r   r      s   r   c                	   @   sš   e Zd ZdZdd„ dd„ dd„ dd„ dd„ dd„ d	d„ d
d„ dœZdd„ Zdd„ Zdd„ Zedd„ ƒZ	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS ) ÚMatcherNc                 C   s   | |k S r(   r   ©ÚvÚcÚpr   r   r   Ú<lambda>T   ó    zMatcher.<lambda>c                 C   s   | |kS r(   r   r=   r   r   r   rA   U   rB   c                 C   s   | |kp| |k S r(   r   r=   r   r   r   rA   V   rB   c                 C   s   | |kp| |kS r(   r   r=   r   r   r   rA   W   rB   c                 C   s   | |kS r(   r   r=   r   r   r   rA   X   rB   c                 C   s   | |kS r(   r   r=   r   r   r   rA   Y   rB   c                 C   s   | |kp| |kS r(   r   r=   r   r   r   rA   [   rB   c                 C   s   | |kS r(   r   r=   r   r   r   rA   \   rB   )ú<ú>ú<=ú>=ú==ú===ú~=ú!=c                 C   s   t |ƒS r(   r   r"   r   r   r   r   a   s    zMatcher.parse_requirementc                 C   sÒ   | j d u rtdƒ‚| ¡  | _}|  |¡}|s:td| ƒ‚|j| _| j ¡ | _g }|jrÄ|jD ]d\}}| 	d¡r¢|dvr„td| ƒ‚|d d… d }}|   |¡ n|   |¡d }}| 
|||f¡ q^t|ƒ| _d S )	NzPlease specify a version classzNot valid: %rz.*)rG   rJ   z#'.*' not allowed for %r constraintséþÿÿÿTF)Úversion_classÚ
ValueErrorr   r   r   ÚnameÚlowerÚkeyÚconstraintsÚendswithÚappendr   r   )r   r   ÚrZclistÚopZvnÚprefixr   r   r   r   d   s*    


ÿzMatcher.__init__c                 C   sx   t |tƒr|  |¡}| jD ]X\}}}| j |¡}t |tƒrDt| |ƒ}|s`d|| jjf }t	|ƒ‚||||ƒs dS qdS )zÉ
        Check if the provided version matches the constraints.

        :param version: The version to match against this instance.
        :type version: String or :class:`Version` instance.
        z%r not implemented for %sFT)
r   r   rL   r   Ú
_operatorsÚgetÚgetattrr6   r   r!   )r   ÚversionÚoperatorÚ
constraintrV   ÚfÚmsgr   r   r   Úmatch�   s    




ÿzMatcher.matchc                 C   s6   d }t | jƒdkr2| jd d dv r2| jd d }|S )Nr   r   )rG   rH   )r   r   )r   Úresultr   r   r   Úexact_version–   s     zMatcher.exact_versionc                 C   s0   t | ƒt |ƒks| j|jkr,td| |f ƒ‚d S )Nzcannot compare %s and %s)r#   rN   r$   r%   r   r   r   r'   �   s    zMatcher._check_compatiblec                 C   s"   |   |¡ | j|jko | j|jkS r(   )r'   rP   r   r%   r   r   r   r*   ¡   s    
zMatcher.__eq__c                 C   s   |   |¡ S r(   r+   r%   r   r   r   r,   ¥   s    zMatcher.__ne__c                 C   s   t | jƒt | jƒ S r(   )r2   rP   r   r3   r   r   r   r4   ©   s    zMatcher.__hash__c                 C   s   d| j j| jf S )Nz%s(%r)r5   r3   r   r   r   r7   ¬   s    zMatcher.__repr__c                 C   s   | j S r(   r8   r3   r   r   r   r9   ¯   s    zMatcher.__str__)r   r   r   rL   rW   r   r   r_   r;   ra   r'   r*   r,   r4   r7   r9   r   r   r   r   r<   O   s*   ÷
r<   zk^v?(\d+!)?(\d+(\.\d+)*)((a|b|c|rc)(\d+))?(\.(post)(\d+))?(\.(dev)(\d+))?(\+([a-zA-Z\d]+(\.[a-zA-Z\d]+)?))?$c                 C   sº  |   ¡ } t | ¡}|s"td|  ƒ‚| ¡ }tdd„ |d  d¡D ƒƒ}t|ƒdkrl|d dkrl|d d… }qF|d szd}nt|d d d… ƒ}|dd	… }|d
d… }|dd… }|d }|dkrÈd}n|d t|d ƒf}|dkrêd}n|d t|d ƒf}|dk�rd}n|d t|d ƒf}|d u �r2d}nHg }	| d¡D ]0}
|
 	¡ �r\dt|
ƒf}
nd|
f}
|	 
|
¡ �q@t|	ƒ}|�s–|�s’|�r’d}nd}|�s d}|�sªd}||||||fS )NzNot a valid version: %sc                 s   s   | ]}t |ƒV  qd S r(   ©Úint©Ú.0r>   r   r   r   Ú	<genexpr>¾   rB   z_pep_440_key.<locals>.<genexpr>r   Ú.éÿÿÿÿr   é   é   é   é	   é
   é   é   )NNr   )Úarh   )Úz)Ú_)Úfinal)r   ÚPEP440_VERSION_REr_   r   Úgroupsr   Úsplitr   rc   ÚisdigitrS   )r   Úmru   ÚnumsÚepochÚpreÚpostÚdevÚlocalr   Úpartr   r   r   Ú_pep_440_key¸   sT    



r€   c                   @   s0   e Zd ZdZdd„ Zeg d¢ƒZedd„ ƒZdS )r   aI  A rational version.

    Good:
        1.2         # equivalent to "1.2.0"
        1.2.0
        1.2a1
        1.2.3a2
        1.2.3b1
        1.2.3c1
        1.2.3.4
        TODO: fill this out

    Bad:
        1           # minimum two numbers
        1.2a        # release level must have a release serial
        1.2.3b
    c                 C   s<   t |ƒ}t |¡}| ¡ }tdd„ |d  d¡D ƒƒ| _|S )Nc                 s   s   | ]}t |ƒV  qd S r(   rb   rd   r   r   r   rf     rB   z*NormalizedVersion.parse.<locals>.<genexpr>r   rg   )Ú_normalized_keyrt   r_   ru   r   rv   Ú_release_clause)r   r   r`   rx   ru   r   r   r   r   
  s
    
zNormalizedVersion.parse)rp   Úbr?   Úrcr}   c                    s   t ‡ fdd„ˆ jD ƒƒS )Nc                 3   s    | ]}|r|d  ˆ j v V  qdS )r   N)ÚPREREL_TAGS)re   Útr3   r   r   rf     rB   z2NormalizedVersion.is_prerelease.<locals>.<genexpr>)Úanyr   r3   r   r3   r   r:     s    zNormalizedVersion.is_prereleaseN)	r   r   r   r   r   Úsetr…   r;   r:   r   r   r   r   r   ø   s
   r   c                 C   s>   t | ƒ} t |ƒ}| |krdS |  |¡s*dS t|ƒ}| | dkS )NTFrg   )ÚstrÚ
startswithr   )ÚxÚyÚnr   r   r   Ú_match_prefix  s    
rŽ   c                	   @   sn   e Zd ZeZddddddddd	œZd
d„ Zdd„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ ZdS )r   Ú_match_compatibleÚ	_match_ltÚ	_match_gtÚ	_match_leÚ	_match_geÚ	_match_eqÚ_match_arbitraryÚ	_match_ne)rI   rC   rD   rE   rF   rG   rH   rJ   c                 C   sV   |rd|vo|j d }n|j d  o,|j d }|rN|j dd¡d }|  |¡}||fS )Nú+rh   r   r   )r   r   rv   rL   )r   rZ   r\   rV   Zstrip_localr   r   r   r   Ú_adjust_local6  s    
zNormalizedMatcher._adjust_localc                 C   sD   |   |||¡\}}||krdS |j}d dd„ |D ƒ¡}t||ƒ S )NFrg   c                 S   s   g | ]}t |ƒ‘qS r   ©r‰   ©re   Úir   r   r   Ú
<listcomp>I  rB   z/NormalizedMatcher._match_lt.<locals>.<listcomp>©r˜   r‚   ÚjoinrŽ   ©r   rZ   r\   rV   Zrelease_clauseÚpfxr   r   r   r�   D  s    zNormalizedMatcher._match_ltc                 C   sD   |   |||¡\}}||krdS |j}d dd„ |D ƒ¡}t||ƒ S )NFrg   c                 S   s   g | ]}t |ƒ‘qS r   r™   rš   r   r   r   rœ   Q  rB   z/NormalizedMatcher._match_gt.<locals>.<listcomp>r�   rŸ   r   r   r   r‘   L  s    zNormalizedMatcher._match_gtc                 C   s   |   |||¡\}}||kS r(   ©r˜   ©r   rZ   r\   rV   r   r   r   r’   T  s    zNormalizedMatcher._match_lec                 C   s   |   |||¡\}}||kS r(   r¡   r¢   r   r   r   r“   X  s    zNormalizedMatcher._match_gec                 C   s.   |   |||¡\}}|s ||k}n
t||ƒ}|S r(   ©r˜   rŽ   ©r   rZ   r\   rV   r`   r   r   r   r”   \  s
    

zNormalizedMatcher._match_eqc                 C   s   t |ƒt |ƒkS r(   r™   r¢   r   r   r   r•   d  s    z"NormalizedMatcher._match_arbitraryc                 C   s0   |   |||¡\}}|s ||k}nt||ƒ }|S r(   r£   r¤   r   r   r   r–   g  s
    
zNormalizedMatcher._match_nec                 C   sf   |   |||¡\}}||krdS ||k r*dS |j}t|ƒdkrH|d d… }d dd„ |D ƒ¡}t||ƒS )NTFr   rh   rg   c                 S   s   g | ]}t |ƒ‘qS r   r™   rš   r   r   r   rœ   z  rB   z7NormalizedMatcher._match_compatible.<locals>.<listcomp>)r˜   r‚   r   rž   rŽ   rŸ   r   r   r   r�   o  s    z#NormalizedMatcher._match_compatibleN)r   r   r   r   rL   rW   r˜   r�   r‘   r’   r“   r”   r•   r–   r�   r   r   r   r   r   '  s&   ør   z[.+-]$Ú z^[.](\d)z0.\1z^[.-]z
^\((.*)\)$ú\1z^v(ersion)?\s*(\d+)z\2z^r(ev)?\s*(\d+)z[.]{2,}rg   z\b(alfa|apha)\bÚalphaz\b(pre-alpha|prealpha)\bz	pre.alphaz	\(beta\)$Úbetaz
^[:~._+-]+z
[,*")([\]]z[~:+_ -]z\.$z(\d+(\.\d+)*)c                 C   sL  |   ¡  ¡ }tD ]\}}| ||¡}q|s.d}t |¡}|sFd}|}nª| ¡ d  d¡}dd„ |D ƒ}t|ƒdk r~| 	d¡ qft|ƒdkrœ|| 
¡ d… }n8d dd„ |dd… D ƒ¡|| 
¡ d…  }|dd… }d d	d„ |D ƒ¡}|  ¡ }|�rtD ]\}}| ||¡}qú|�s|}nd
|v �r*dnd}|| | }t|ƒ�sHd}|S )z€
    Try to suggest a semantic form for a version for which
    _suggest_normalized_version couldn't come up with anything.
    z0.0.0r   rg   c                 S   s   g | ]}t |ƒ‘qS r   rb   rš   r   r   r   rœ   ª  rB   z-_suggest_semantic_version.<locals>.<listcomp>é   Nc                 S   s   g | ]}t |ƒ‘qS r   r™   rš   r   r   r   rœ   °  rB   c                 S   s   g | ]}t |ƒ‘qS r   r™   rš   r   r   r   rœ   ²  rB   r}   ú-r—   )r   rO   Ú_REPLACEMENTSÚsubÚ_NUMERIC_PREFIXr_   ru   rv   r   rS   Úendrž   Ú_SUFFIX_REPLACEMENTSÚ	is_semver)r   r`   ÚpatÚreplrx   rV   ÚsuffixÚsepr   r   r   Ú_suggest_semantic_version–  s:    
,
rµ   c                 C   sd  zt | ƒ | W S  ty    Y n0 |  ¡ }dD ]\}}| ||¡}q.t dd|¡}t dd|¡}t dd|¡}t dd	|¡}t d
d|¡}| d¡r |dd… }t dd|¡}t dd|¡}t dd|¡}t dd|¡}t dd|¡}t dd|¡}t dd|¡}t dd|¡}t dd|¡}t dd|¡}t dd |¡}zt |ƒ W n t�y^   d}Y n0 |S )!aè  Suggest a normalized version close to the given version string.

    If you have a version string that isn't rational (i.e. NormalizedVersion
    doesn't like it) then you might be able to get an equivalent (or close)
    rational version from this function.

    This does a number of simple normalizations to the given string, based
    on observation of versions currently in use on PyPI. Given a dump of
    those version during PyCon 2009, 4287 of them:
    - 2312 (53.93%) match NormalizedVersion without change
      with the automatic suggestion
    - 3474 (81.04%) match when using this suggestion method

    @param s {str} An irrational version string.
    @returns A rational version string, or None, if couldn't determine one.
    ))z-alpharp   )z-betarƒ   )r§   rp   )r¨   rƒ   )r„   r?   )z-finalr¥   )z-prer?   )z-releaser¥   )z.releaser¥   )z-stabler¥   )r—   rg   )rr   rg   )ú r¥   )z.finalr¥   )rs   r¥   zpre$Zpre0zdev$Zdev0z([abc]|rc)[\-\.](\d+)$z\1\2z[\-\.](dev)[\-\.]?r?(\d+)$z.\1\2z[.~]?([abc])\.?r¦   r>   r   Nz\b0+(\d+)(?!\d)z(\d+[abc])$z\g<1>0z\.?(dev-r|dev\.r)\.?(\d+)$z.dev\2z-(a|b|c)(\d+)$z[\.\-](dev|devel)$z.dev0z(?![\.\-])dev$z(final|stable)$r¥   z\.?(r|-|-r)\.?(\d+)$z.post\2z\.?(dev|git|bzr)\.?(\d+)$z\.?(pre|preview|-c)(\d+)$zc\g<2>zp(\d+)$z.post\1)r�   r   rO   ÚreplaceÚrer¬   rŠ   )r   ÚrsÚorigr²   r   r   r   Ú_suggest_normalized_versionÄ  s>    
	
r»   z([a-z]+|\d+|[\.-])r?   zfinal-ú@)r{   Úpreviewrª   r„   r}   r¥   rg   c                 C   sr   dd„ }g }|| ƒD ]T}|  d¡r^|dk rD|rD|d dkrD| ¡  q*|r^|d dkr^| ¡  qD| |¡ qt|ƒS )Nc                 S   st   g }t  |  ¡ ¡D ]R}t ||¡}|rd|d d…   krBdkrRn n| d¡}nd| }| |¡ q| d¡ |S )NÚ0r   Ú9é   Ú*ú*final)Ú_VERSION_PARTrv   rO   Ú_VERSION_REPLACErX   ÚzfillrS   )r   r`   r@   r   r   r   Ú	get_partsC  s     
z_legacy_key.<locals>.get_partsrÁ   rÂ   rh   z*final-Ú00000000)rŠ   ÚpoprS   r   )r   rÆ   r`   r@   r   r   r   Ú_legacy_keyB  s    


rÉ   c                   @   s    e Zd Zdd„ Zedd„ ƒZdS )r   c                 C   s   t |ƒS r(   )rÉ   r"   r   r   r   r   ]  s    zLegacyVersion.parsec                 C   s8   d}| j D ](}t|tƒr
| d¡r
|dk r
d} q4q
|S )NFrÁ   rÂ   T)r   r   r   rŠ   )r   r`   r‹   r   r   r   r:   `  s    
ÿzLegacyVersion.is_prereleaseN©r   r   r   r   r;   r:   r   r   r   r   r   \  s   r   c                   @   s4   e Zd ZeZeejƒZded< e 	d¡Z
dd„ ZdS )r	   r�   rI   z^(\d+(\.\d+)*)c                 C   s`   ||k rdS | j  t|ƒ¡}|s2t d||¡ dS | ¡ d }d|v rV| dd¡d }t||ƒS )NFzACannot compute compatible match for version %s  and constraint %sTr   rg   r   )Ú
numeric_rer_   r‰   ÚloggerÚwarningru   ÚrsplitrŽ   )r   rZ   r\   rV   rx   r   r   r   r   r�   s  s    ÿzLegacyMatcher._match_compatibleN)r   r   r   r   rL   Údictr<   rW   r¸   ÚcompilerË   r�   r   r   r   r   r	   k  s
   

r	   zN^(\d+)\.(\d+)\.(\d+)(-[a-z0-9]+(\.[a-z0-9-]+)*)?(\+[a-z0-9]+(\.[a-z0-9-]+)*)?$c                 C   s
   t  | ¡S r(   )Ú
_SEMVER_REr_   )r   r   r   r   r°   ‰  s    r°   c           	      C   sn   dd„ }t | ƒ}|st| ƒ‚| ¡ }dd„ |d d… D ƒ\}}}||d dƒ||d dƒ }}|||f||fS )	Nc                 S   s8   | d u r|f}n$| dd …   d¡}tdd„ |D ƒƒ}|S )Nr   rg   c                 S   s"   g | ]}|  ¡ r| d ¡n|‘qS )rÀ   )rw   rÅ   )re   r@   r   r   r   rœ   •  rB   z5_semantic_key.<locals>.make_tuple.<locals>.<listcomp>)rv   r   )r   Zabsentr`   r   r   r   r   Ú
make_tupleŽ  s
    z!_semantic_key.<locals>.make_tuplec                 S   s   g | ]}t |ƒ‘qS r   rb   rš   r   r   r   rœ   œ  rB   z!_semantic_key.<locals>.<listcomp>r©   ú|é   rÁ   )r°   r   ru   )	r   rÒ   rx   ru   ÚmajorÚminorÚpatchr{   Úbuildr   r   r   Ú_semantic_key�  s    
rÙ   c                   @   s    e Zd Zdd„ Zedd„ ƒZdS )r
   c                 C   s   t |ƒS r(   )rÙ   r"   r   r   r   r   £  s    zSemanticVersion.parsec                 C   s   | j d d dkS )Nr   r   rÓ   )r   r3   r   r   r   r:   ¦  s    zSemanticVersion.is_prereleaseNrÊ   r   r   r   r   r
   ¢  s   r
   c                   @   s   e Zd ZeZdS )r   N)r   r   r   r
   rL   r   r   r   r   r   «  s   r   c                   @   s6   e Zd Zddd„Zdd„ Zdd„ Zdd	„ Zd
d„ ZdS )ÚVersionSchemeNc                 C   s   || _ || _|| _d S r(   )rP   ÚmatcherÚ	suggester)r   rP   rÛ   rÜ   r   r   r   r   °  s    zVersionScheme.__init__c                 C   s0   z| j  |¡ d}W n ty*   d}Y n0 |S ©NTF)rÛ   rL   r   ©r   r   r`   r   r   r   Úis_valid_versionµ  s    
zVersionScheme.is_valid_versionc                 C   s.   z|   |¡ d}W n ty(   d}Y n0 |S rÝ   )rÛ   r   rÞ   r   r   r   Úis_valid_matcher½  s    

zVersionScheme.is_valid_matcherc                 C   s$   |  d¡r|dd… }|  d| ¡S )z:
        Used for processing some metadata fields
        ú,Nrh   zdummy_name (%s))rR   rà   r"   r   r   r   Úis_valid_constraint_listÅ  s    
z&VersionScheme.is_valid_constraint_listc                 C   s   | j d u rd }n
|   |¡}|S r(   )rÜ   rÞ   r   r   r   ÚsuggestÎ  s    

zVersionScheme.suggest)N)r   r   r   r   rß   rà   râ   rã   r   r   r   r   rÚ   ¯  s
   
	rÚ   c                 C   s   |S r(   r   r"   r   r   r   rA   Ø  rB   rA   )Ú
normalizedÚlegacyZsemanticrä   Údefaultc                 C   s   | t vrtd|  ƒ‚t |  S )Nzunknown scheme name: %r)Ú_SCHEMESrM   )rN   r   r   r   r   à  s    r   )*r   Úloggingr¸   Úcompatr   Úutilr   Ú__all__Ú	getLoggerr   rÌ   rM   r   Úobjectr   r<   rÐ   rt   r€   r�   r   rŽ   r   r«   r¯   r­   rµ   r»   ÚIrÃ   rÄ   rÉ   r   r	   rÑ   r°   rÙ   r
   r   rÚ   rç   r   r   r   r   r   Ú<module>   s†   
1d
=$Wÿõû
.rùþ	'ÿÿü