U
    ZÊ¹jø?  ã                   @   sØ  d dl 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 d dlmZ d dlmZmZmZ d dlmZmZmZmZ d dlmZ d d	lmZmZ d d
lmZmZ d dlm Z  d dl!m"Z" d dl#m$Z$ d dlm%Z%m&Z&m'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 „ Z0d!d"„ Z1d#d$„ Z2d%d&„ Z3d'd(„ Z4d)d*„ Z5d+d,„ Z6d-d.„ Z7d/d0„ Z8d1d2„ Z9d3d4„ Z:d5d6„ Z;d7d8„ Z<d9d:„ Z=d;d<„ Z>d=d>„ Z?d?d@„ Z@dAdB„ ZAdCdD„ ZBdEdF„ ZCdGdH„ ZDdIdJ„ ZEdKdL„ ZFdMS )Né    )ÚsymbolsÚSymbolÚTupleÚooÚDummy)ÚIndexException)Úraises)Úiterable)ÚSum)ÚFunctionÚSubsÚ
Derivative)ÚStrictLessThanÚGreaterThanÚStrictGreaterThanÚLessThan)ÚS)ÚexpÚlog)ÚcosÚsin©ÚKroneckerDelta)ÚOrder)ÚRange)ÚIndexedBaseÚIdxÚIndexedc                     sô   t ddd�\‰ } }tˆ ƒtˆ dƒks(t‚tˆ | ƒtˆ d| d fƒksHt‚tˆ tƒtˆ dtfƒksdt‚t ddd�‰tt‡fdd	„ƒ ttd
d	„ ƒ tt‡ ‡fdd	„ƒ tt‡ fdd	„ƒ tt‡ ‡fdd	„ƒ tt‡ ‡fdd	„ƒ tt‡ fdd	„ƒ d S )Núi a bT©Úintegeré   r   ÚxFc                      s   t ˆ ƒS ©N©r   © ©r"   r%   ú^/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/tensor/tests/test_indexed.pyÚ<lambda>   ó    z'test_Idx_construction.<locals>.<lambda>c                   S   s   t dƒS ©Ng      à?r$   r%   r%   r%   r'   r(      r)   c                      s
   t ˆ ˆƒS r#   r$   r%   ©Úir"   r%   r'   r(      r)   c                      s
   t ˆ dƒS r*   r$   r%   ©r,   r%   r'   r(      r)   c                      s   t ˆ ˆdfƒS )Né   r$   r%   r+   r%   r'   r(      r)   c                      s   t ˆ dˆfƒS )Né   r$   r%   r+   r%   r'   r(       r)   c                      s
   t ˆ dƒS )N)r/   g      @r$   r%   r-   r%   r'   r(   !   r)   )r   r   ÚAssertionErrorr   r   Ú	TypeError)ÚaÚbr%   r+   r'   Útest_Idx_construction   s     r4   c                  C   s^   t ddd�\} }}t| ƒjs t‚t| ƒjdks2t‚t| d ƒjdksHt‚tdƒjdksZt‚d S )Nr   Tr   r,   r/   zi + 2Zfoo)r   r   Ú
is_integerr0   Úname©r,   r2   r3   r%   r%   r'   Útest_Idx_properties$   s
    r8   c                  C   sJ  t ddd�\} }}t| ƒjd ks$t‚t| ƒjd ks6t‚t| |ƒjdksJt‚t| |ƒj|d ksbt‚t| dƒjdksvt‚t| dƒjdksŠt‚t| tƒjdksžt‚t| tƒjtks²t‚t| ||fƒj|ksÊt‚t| ||fƒj|ksât‚t| dƒjdksöt‚t| dƒjdk�st‚t| t tfƒjt k�s*t‚t| t tfƒjtk�sFt‚d S )	Nr   Tr   r   r!   r.   é   ©r!   r.   ©r   r   Úlowerr0   Úupperr   r7   r%   r%   r'   Útest_Idx_bounds,   s    r>   c                  C   sL  t ddd�\} }}}t|ƒjd ks&t‚t|ƒjd ks8t‚t||ƒjdksLt‚t||ƒj|d ksdt‚t|dƒjdksxt‚t|dƒjdksŒt‚t|tƒjdks t‚t|tƒjtks´t‚t|||fƒj|ksÌt‚t|||fƒj|ksät‚t|dƒjdksøt‚t|dƒjdk�st‚t|t tfƒjt k�s,t‚t|t tfƒjtk�sHt‚d S )	Nzi a b xTr   r   r!   r.   r9   r:   r;   )r,   r2   r3   r"   r%   r%   r'   Útest_Idx_fixed_bounds>   s    r?   c                  C   s  t ddƒ} t ddƒ}t ddƒ}t ddƒ}| d	ks4t‚| d	k s@t‚| d	krLt‚| d	krXt‚d	| ksdt‚d	| kspt‚d	| kr|t‚d	| k rˆt‚t| d	ƒs–t‚t| d	ƒs¤t‚t| d	ƒr²t‚t| d	ƒrÀt‚| d
ksÌt‚t| d
k tƒsÞt‚t| d
ktƒsðt‚| d
krüt‚t| dktƒ�st‚| dk �rt‚| dk�s,t‚t| dktƒ�s@t‚| dk�rNt‚| dk �r\t‚| dk�sjt‚| dk�sxt‚ddlm} t| |k tƒ�s˜t‚t| |ktƒ�s¬t‚t| |ktƒ�sÀt‚t| |ktƒ�sÔt‚| |k �sât‚| |k�sðt‚| |k�rþt‚| |k�rt‚| |k�st‚t| |k tƒ�s.t‚t| |ktƒ�sBt‚| |k�rPt‚t| |k tƒ�sdt‚t| |ktƒ�sxt‚t| |ktƒ�sŒt‚t| |ktƒ�s t‚t dƒ}t dƒ}t||k tƒ�sÄt‚t||ktƒ�sØt‚t||ktƒ�sìt‚t||ktƒ�s t‚d S )NÚi14©r!   r9   Úi79)é   é	   Úi46)r9   é   Úi35)é   r.   r.   r9   r!   r   r&   ÚiNone1ÚiNone2)	r   r0   r   r   r   r   Ú
isinstanceZ	sympy.abcr"   )r@   rB   rE   rG   r"   rI   rJ   r%   r%   r'   Útest_Idx_inequalitiesP   sf    



rL   c                  C   sN   t ddƒ} tdƒ| kst‚tdƒ| ks*t‚tdƒ| kr:t‚tdƒ| k rJt‚d S )Nr@   rA   r.   )r   r   r0   )r@   r%   r%   r'   Ú#test_Idx_inequalities_current_fails“   s
    
rM   c                  C   sr   t ddd�\} }}t| ƒ}|j|jŽ |ks.t‚t| |ƒ}|j|jŽ |ksLt‚t| ||fƒ}|j|jŽ |ksnt‚d S )Nr   Tr   )r   r   ÚfuncÚargsr0   )r,   r2   r3   Úiir%   r%   r'   Útest_Idx_func_argsœ   s    
rQ   c                  C   sº   t ddd�\} }}t| |ƒ ||¡t| |ƒks2t‚t| |ƒ | |¡t||ƒksRt‚t| ƒ | d¡tdƒksnt‚t| |ƒ |d¡t| dƒksŽt‚t| ||fƒ | d¡td||fƒks¶t‚d S )Nr   Tr   r/   )r   r   Úsubsr0   r7   r%   r%   r'   Útest_Idx_subs¦   s       rS   c                  C   s¦   t ddd�\} }t dƒ}t|| |ƒ}t|ƒ}||| |f ks@t‚||| |f ksTt‚||| |g ksht‚||t| |ƒ ks~t‚tdd„ |d jdd … D ƒƒs¢t‚d S )	Núi jTr   r2   c                 s   s   | ]}|j V  qd S r#   )Z
is_Integer)Ú.0r2   r%   r%   r'   Ú	<genexpr>¹   s     z)test_IndexedBase_sugar.<locals>.<genexpr>)r!   r   r!   )r   r   r   r0   r   ÚallrO   )r,   Újr2   ÚA1ÚA2r%   r%   r'   Útest_IndexedBase_sugar°   s    r[   c                  C   sl   t ddd�} t dƒ\}}t|ƒ}t|ƒ}||  ||   ||¡ksDt‚ddi}|d |d  ||¡ksht‚d S )Nr,   Tr   úa br!   r/   ©r   r   rR   r0   )r,   r2   r3   ÚAÚBÚCr%   r%   r'   Útest_IndexedBase_subs¼   s    ra   c                     sJ  t ddd�\‰‰} }td| | fd�}td| |fd�‰ˆjt| |ƒksHt‚|ˆˆf ˆˆˆf ksdt‚|ˆˆf ˆˆˆf  || ¡ksˆt‚ˆjˆjŽ ˆksœt‚ˆˆˆf jˆˆˆf jŽ ˆˆˆf ksÈt‚tt	‡‡fdd„ƒ tt	‡‡‡fdd„ƒ td	| d�‰ ˆ jt| ƒk�st‚ˆ ˆ  ˆˆ¡ˆ ˆ k�s0t‚tt	‡ ‡‡fd
d„ƒ d S )Nzi j m nTr   r2   ©Úshapec                      s   ˆ ˆ S r#   r%   r%   )r3   r,   r%   r'   r(   Ï   r)   z(test_IndexedBase_shape.<locals>.<lambda>c                      s   ˆ ˆˆˆf S r#   r%   r%   )r3   r,   rX   r%   r'   r(   Ð   r)   ÚFc                      s   ˆ ˆˆf S r#   r%   r%   )rd   r,   rX   r%   r'   r(   Ô   r)   )
r   r   rc   r   r0   rR   rN   rO   r   r   )ÚmÚnr2   r%   )rd   r3   r,   rX   r'   Útest_IndexedBase_shapeÆ   s    $,rg   c                  C   sÂ   t ddd�} t dƒ}t|dd�}|||  fD ]T}|js:t‚|jsDt‚|jrNt‚|jsXt‚|jsbt‚|jslt‚t	t
|ƒƒ|ks,t‚q,|t|ƒks’t‚|t|ddd�ks¨t‚||  t|| ƒks¾t‚d S )Nr,   Tr   r2   )Úpositive)rh   Úreal)r   r   Úis_realr0   Z
is_complexZis_imaginaryZis_nonnegativeZ
is_nonzeroZis_commutativer   r   r   )r,   r2   r^   Úcr%   r%   r'   Útest_IndexedBase_assumptions×   s    





rl   c                  C   s\   t ddd�} t| ƒ}tddd�}|js*t‚|js4t‚|jjs@t‚|jjsLt‚||ksXt‚d S )NÚITr   )r   r   r5   r0   Úlabel)rm   Z	I_inheritZ
I_explicitr%   r%   r'   Ú(test_IndexedBase_assumptions_inheritanceé   s    

ro   c                  C   sV   G dd„ dt ƒ} | dƒ}t|ƒ| ks(t‚t|ƒ}t|ƒ| ks@t‚t|jƒ| ksRt‚dS )z`Regression test issue #17652.

    IndexedBase.label should not upcast subclasses of Symbol
    c                   @   s   e Zd ZdS )z"test_issue_17652.<locals>.SubClassN)Ú__name__Ú
__module__Ú__qualname__r%   r%   r%   r'   ÚSubClassú   s   rs   ÚXN)r   Útyper0   r   rn   )rs   r"   Úbaser%   r%   r'   Útest_issue_17652õ   s    rw   c                      sŽ   t ddd�\‰‰tdˆˆƒ‰ ˆ ttdƒˆˆƒks4t‚ˆ ttdƒˆˆƒksLt‚tt‡ ‡‡fdd„ƒ ttdd„ ƒ ˆ jˆ ˆ j	j
ˆˆhksŠt‚d S )NrT   Tr   r^   c                      s   t ˆ ˆˆƒS r#   ©r   r%   ©r^   r,   rX   r%   r'   r(   	  r)   z*test_Indexed_constructor.<locals>.<lambda>c                   S   s   t dƒS ©Nr^   rx   r%   r%   r%   r'   r(   
  r)   )r   r   r   r0   r   r   r1   r   Zfree_symbolsrv   rn   r%   r%   ry   r'   Útest_Indexed_constructor  s    r{   c                  C   s<   t ddd�\} }t dƒ}t|| |ƒ}||j|jŽ ks8t‚d S )NrT   Tr   r2   )r   r   rN   rO   r0   )r,   rX   r2   r^   r%   r%   r'   Útest_Indexed_func_args  s    r|   c                  C   sz   t ddd�\} }}t dƒ\}}t|ƒ}t|ƒ}|| |f || |f  ||¡ksRt‚|| |f || |f  ||¡ksvt‚d S )Nzi j kTr   r\   r]   )r,   rX   Úkr2   r3   r^   r_   r%   r%   r'   Útest_Indexed_subs  s    $r~   c                     s  t ddd�\‰‰tdˆˆƒ‰ ˆ jdks*t‚ˆ jdks8t‚ˆ jˆˆfksJt‚ˆ jtdƒks\t‚ˆ jd d gksnt‚t	t
‡ fdd„ƒ t d	dd�\} ‰tdtˆˆƒtˆ| ƒƒjtd
ˆd ƒtd
| d ƒgksÊt‚tdtˆˆƒtˆ| ƒƒjtˆ| ƒksòt‚t	t
‡‡‡fdd„ƒ d S )NrT   Tr   r^   zA[i, j]r/   c                      s   ˆ j S r#   rb   r%   )r^   r%   r'   r(   &  r)   z)test_Indexed_properties.<locals>.<lambda>ún mr   r!   c                      s   t dtˆ ˆƒtˆƒƒjS rz   )r   r   rc   r%   )r,   rX   re   r%   r'   r(   ,  r)   )r   r   r6   r0   ÚrankÚindicesrv   r   Úrangesr   r   r   r   rc   )rf   r%   )r^   r,   rX   re   r'   Útest_Indexed_properties  s&     ÿÿÿ(rƒ   c                  C   s  t ddd�\} }t ddd�\}}t ddd�\}}td||fd�}|jt||ƒksTt‚t|t| |ƒt||ƒƒjtd|d	 ƒtd|d	 ƒgksŽt‚t|t| |ƒt||ƒƒjt||ƒks¶t‚t|t| |ƒt|ƒƒjtd|d	 ƒd
gksät‚t|t| |ƒt|ƒƒjt||ƒk�st‚d S )NrT   Tr   zo pr   r2   rb   r   r!   )NN)r   r   rc   r   r0   r   r   r‚   )r,   rX   ÚoÚprf   re   r2   r%   r%   r'   Útest_Indexed_shape_precedence/  s*      ÿÿ(  ÿÿr†   c                  C   sH   t ddd�\} }td| | | ƒ}|jdks.t‚|j| | | fksDt‚d S )NrT   Tr   r^   r/   )r   r   r€   r0   r�   ©r,   rX   r^   r%   r%   r'   Útest_complex_indices=  s    rˆ   c                  C   s0   t ddd�\} }td| | | ƒ}t|ƒr,t‚d S )NrT   Tr   r^   )r   r   r	   r0   r‡   r%   r%   r'   Útest_not_interableD  s    r‰   c                  C   s|   t ddd�} | }td|d ƒ}td|fd�}d||d   ||   || ¡}|| ||d    || ¡}||ksxt‚d S )NÚNTr   r,   r!   Úyrb   )r   r   r   Zcoeffr0   )rŠ   Zlen_yr,   r‹   r2   r3   r%   r%   r'   Útest_Indexed_coeffJ  s    "rŒ   c                  C   sè  ddl m}  tdtd�\}}}}tdƒ}tdddd�\}}|jsDt‚td	td�\}}	|| ||  }
}|
}| |¡| ||ƒks‚t‚| |
¡| ||ƒksšt‚td
ƒ|
 }| |¡td
ƒ| ||ƒ ksÆt‚| |
¡td
ƒ| ||ƒ ksæt‚| |¡tj	ksút‚t
||t tfƒ |¡t
d
| ||ƒ |t tfƒk�s4t‚t
| |¡|t tfƒt
d
| ||ƒ |t tfƒk�snt‚t
||t tfƒ |¡ ¡ d
k�s”t‚t
| |
¡|t tfƒ ¡ t
d
|t tfƒ ¡ k�sÌt‚t
||t tfƒ |
¡ ¡ tk�sòt‚|| | td
ƒ }| |
¡|||  | ||ƒ k�s,t‚| |¡|| td
ƒ k�sLt‚| |d
¡tj	k�sdt‚t
||t tfƒ |
¡t
|| ||ƒ ||  |t tfƒk�s¦t‚t
| |
¡|t tfƒt
|| ||ƒ ||  |t tfƒk�sèt‚t
||t tfƒ |
¡ ¡ |||  k�st‚t
||t tfƒ |
¡t
|| ||ƒ ||  |t tfƒk�sXt‚t
| |
¡|t tfƒt
|| ||ƒ ||  |t tfƒk�sšt‚t
||t tfƒ |
¡ ¡ |||  k�sÈt‚|t|| ƒ }| |
¡d
| t|| ƒ | | ||ƒ k�s
t‚| |¡d
| t|| ƒ | k�s2t‚||	||f  ||  }| |
¡||	||f  | ||ƒ k�stt‚| |¡||	||f  k�s”t‚| |	||f ¡|||  k�s¸t‚| |	||f ¡|| ||ƒ | ||ƒ ||  k�sðt‚| |	||f ¡|| ||ƒ ||  k�st‚t
||t tfƒ |	||f ¡t
|| ||ƒ | ||ƒ ||  |t tfƒk�srt‚t
||t tfƒ |	||f ¡ ¡ || ||ƒ ||  k�s²t‚||  || ¡dk�sÎt‚||  || ¡| ||ƒk�sðt‚t
|||  |t tfƒ || ¡t
|| ||ƒ |t tfƒk�s6t‚t
|||  |t tfƒ || ¡ ¡ |k�sht‚t
|||  |t tfƒ || ¡t
|| ||ƒ |t tfƒk�s®t‚t
|||  |t tfƒ || ¡ ¡ t| k�sät‚d S )Nr   r   zi j k l©Úclsr2   zm, nT)r    Zfinitezh Lr/   r!   )Ú(sympy.functions.special.tensor_functionsr   r   r   rj   r0   r   Údiffr   ZZeror
   r   Zdoitr   r   )r   r,   rX   r}   Úlr2   re   rf   ÚhÚLÚhiZhjÚexprr%   r%   r'   Útest_differentiationT  s\    
  ::&8&& BB.BB.2(* $8.T@"F2Fr–   c                  C   sp   t dƒ} tddd�}t| | ƒ | | ¡| | | | d d  | | d d  t| | d | | ƒ kslt‚d S )	Nr^   r,   Tr   rH   rF   r.   éx   )r   r   r   Zseriesr   r0   )r^   r,   r%   r%   r'   Útest_indexed_series�  s    r˜   c                  C   s²   t dƒ} tdƒ\}}}| |  ¡ r&t‚| |  |¡s8t‚| dd|  |f  ¡ rTt‚| dd|  |f  |¡rrt‚| dd|  |f  |¡s�t‚| dd|  |f  |¡r®t‚d S )Nr^   úi,j,kr!   r/   )r   r   Zis_constantr0   )r^   r,   rX   r}   r%   r%   r'   Útest_indexed_is_constant–  s    rš   c                  C   s–   t dƒ} t tdƒƒtdddƒks$t‚| d  tdƒtdƒ¡dksDt‚| d  | tdƒ¡dks`t‚| d  | tdƒ¡dks|t‚ttdƒdƒdks’t‚d S )NÚdr.   r   r!   r/   )r   Úranger   r0   rR   r   r   )r›   r%   r%   r'   Útest_issue_12533¡  s     r�   c                      s.   t dƒ‰tddˆfƒ‰ tt‡ ‡fdd„ƒ d S )Nrf   r,   r   c                      s   ˆ   ˆd¡S )Ng      ø?)rR   r%   ©r,   rf   r%   r'   r(   ­  r)   z"test_issue_12780.<locals>.<lambda>)r   r   r   r1   r%   r%   rž   r'   Útest_issue_12780ª  s    rŸ   c                      sj   t dƒ‰ tdˆ ƒjdkst‚tdˆ ƒjdks0t‚tdˆ ƒjˆ d ksHt‚t ddd�‰ tt‡ fdd„ƒ d S )	Nre   r,   r   r!   F)ri   c                      s
   t dˆ ƒS )Nr,   r$   r%   ©re   r%   r'   r(   ¶  r)   z"test_issue_18604.<locals>.<lambda>)r   r   r6   r0   r<   r=   r   r1   r%   r%   r    r'   Útest_issue_18604°  s    r¡   c                  C   sÖ  t dƒ} tdƒ\}}}tdƒ\}}}tdƒ}t| | | | | | ƒ | | ¡dksVt‚t| | | | |ƒ | | ¡dks|t‚t| | | | |ƒ | | ¡dks¢t‚t| | | | |ƒ |¡dksÄt‚t| | | | |ƒ |¡dksæt‚t| | | | | | ƒ | | ¡t||ƒk�st‚t||| | ƒ | | ¡t||ƒk�sBt‚t|| | ƒ| | |ƒ | | ¡dk�snt‚t|| | ƒ| | | | ƒ | | ¡t|| | ƒ| | ƒt||ƒ k�sºt‚t||| | d ƒ | | ¡dt||ƒ | |  k�sôt‚t| | | | | | d ƒ | | ¡dt||ƒ | |  k�s6t‚t| | | || | ƒ | | ¡d| |  k�sjt‚t| | | || | ƒ | | ¡d| |  t||ƒ k�s¨t‚t| | | || | ƒ | | ¡| | | | t||ƒ  k�sêt‚t| | | || | ƒ | | ¡| | | | t||ƒ  k�s,t‚t| | | || | ƒ | | ¡d| |  t||ƒ k�sjt‚t| | | || | ƒ | | ¡t||ƒ| |  t||ƒ| |   k�s¶t‚t| | | | | |ƒ | | ¡dk�sât‚t| | | | | |ƒ | | ¡dk�st‚t| | | | | |ƒ | | ¡|k�s:t‚t| | | | | |ƒ | | ¡|t||ƒ k�spt‚t| | | | | |ƒ | | ¡dk�sœt‚t| | | | | |ƒ | | ¡|t||ƒ k�sÒt‚d S )Nr^   r™   zx,y,zÚfr!   r   r/   )r   r   r   r   r�   r0   r   r   )r^   r,   rX   r}   r"   r‹   Úzr¢   r%   r%   r'   Útest_Subs_with_Indexed¸  s6    *&&""2*,L:B4>BB>L,,,6,r¤   c               
   C   s   t dtd�\} }t dƒ}t dƒ\}}}t dƒ\}}}}	}
}tdƒ}|| | ||  d | ƒ}t dtd�}| | | ¡ | | ||  t||ƒ d tt||ƒ|ƒ|f| | ||  d | fƒ | ¡sÎt	‚| | | ¡ | | ¡ dt||ƒ t||ƒ tt||ƒ|ƒ|f| | ||  d | fƒ | d	| | ||  d  t||ƒ t||ƒ tt||ƒ||ƒ|f| | ||  d | fƒ |d   ¡�sœt	‚d S )
Nzx,yr�   Úsigmar™   zm0:6r¢   r/   Zxi_1r9   )
r   r   r   r   r�   Zdummy_eqr   r   r   r0   )r"   r‹   r¥   r,   rX   r}   Zm0Úm1Úm2Zm3Zm4Zm5r¢   r•   Z_xi_1r%   r%   r'   Ú(test_complicated_derivative_with_IndexedÙ  sV    ÿýÿûÿÿýÿû*ýÿûúÿr¨   c                  C   sl   t ddd�} t ddd�}t dƒ}| d |d  |d | d  ksDt‚| d |d  |d | d  ksht‚d S )NÚtF)ZcommutativeÚuÚvr   )r   r0   )r©   rª   r«   r%   r%   r'   Útest_IndexedBase_commutativeú  s
    $r¬   N)GZ
sympy.corer   r   r   r   r   Zsympy.tensor.indexedr   Zsympy.testing.pytestr   Zsympy.utilities.iterablesr	   Zsympy.concrete.summationsr
   Zsympy.core.functionr   r   r   Zsympy.core.relationalr   r   r   r   Zsympy.core.singletonr   Z&sympy.functions.elementary.exponentialr   r   Z(sympy.functions.elementary.trigonometricr   r   r�   r   Zsympy.series.orderr   Zsympy.sets.fancysetsr   r   r   r   r4   r8   r>   r?   rL   rM   rQ   rS   r[   ra   rg   rl   ro   rw   r{   r|   r~   rƒ   r†   rˆ   r‰   rŒ   r–   r˜   rš   r�   rŸ   r¡   r¤   r¨   r¬   r%   r%   r%   r'   Ú<module>   sX   C	



	
<	!!