U
    9%eS                     @   sB  d Z ddlmZmZmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z? ddl@mAZA ddlBmCZCmDZD ddlEmFZF ddlGmHZH ddlImJZJ ddlKmLZL d	d
 eA D \ZMZNZOZPZQZRZSdd ZTdd ZUdd ZVdd ZWdd ZXdd ZYdd ZZdd Z[dd Z\dd Z]dd  Z^d!d" Z_d#d$ Z`d%d& Zad'd( Zbd)d* Zcd+d, Zdd-d. Zed/d0 Zfd1d2 Zgd3d4 Zhd5d6 Zid7d8 Zjd9d: Zkd;d< Zld=d> Zmd?d@ ZndAdB ZodCdD ZpdEdF ZqdGdH ZrdIdJ ZsdKdL ZtdMdN ZudOdP ZvdQdR ZwdSdT ZxdUdV ZydWdX ZzdYdZ Z{d[d\ Z|d]d^ Z}d_d` Z~dadb Zdcdd Zdedf Zdgdh Zdidj Zdkdl Zdmdn Zdodp Zdqdr Zdsdt Zdudv Zdwdx Zdydz Zd{d| Zd}d~ ZdS )z4Tests for dense recursive polynomials' basic tools.     )>dup_LCdmp_LCdup_TCdmp_TCdmp_ground_LCdmp_ground_TCdmp_true_LT
dup_degree
dmp_degreedmp_degree_indmp_degree_list	dup_strip	dmp_stripdmp_validatedup_reversedup_copydmp_copy
dup_normal
dmp_normaldup_convertdmp_convertdup_from_sympydmp_from_sympydup_nthdmp_nthdmp_ground_nth
dmp_zero_pdmp_zero	dmp_one_pdmp_onedmp_ground_p
dmp_grounddmp_negative_pdmp_positive_p	dmp_zerosdmp_groundsdup_from_dictdup_from_raw_dictdup_to_dictdup_to_raw_dictdmp_from_dictdmp_to_dictdmp_swapdmp_permutedmp_nest	dmp_raisedup_deflatedmp_deflatedup_multi_deflatedmp_multi_deflatedup_inflatedmp_inflatedmp_excludedmp_include
dmp_inject	dmp_ejectdup_terms_gcddmp_terms_gcddmp_list_termsdmp_apply_pairs	dup_slice
dup_random)f_polys)ZZQQ)ring)S)raises)ooc                 C   s   g | ]}|  qS  )Zto_dense).0frG   rG   `/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/sympy/polys/tests/test_densebasic.py
<listcomp>0   s     rK   c                   C   s0   t g tdkstt ddddgtdks,td S Nr               )r   rA   AssertionErrorrG   rG   rG   rJ   test_dup_LC2   s    rR   c                   C   s0   t g tdkstt ddddgtdks,td S rL   )r   rA   rQ   rG   rG   rG   rJ   test_dup_TC7   s    rS   c                   C   s   t g gtg kstt dddgdggtdddgks8tt g ggtg gksPtt dgddggdgggtdgddggks~td S NrM   rN   rO   rP   )r   rA   rQ   rG   rG   rG   rJ   test_dmp_LC<   s    $rU   c                   C   sx   t g gtg kstt dddgdggtdgks4tt g ggtg gksLtt dgddggdgggtdggksttd S rT   )r   rA   rQ   rG   rG   rG   rJ   test_dmp_TCC   s     rV   c                   C   sx   t g gdtdkstt dddgdggdtdks6tt g ggdtdksNtt dgddggdgggdtdksttd S N   r   rM   rN   rO   rP   )r   rA   rQ   rG   rG   rG   rJ   test_dmp_ground_LCJ   s     rY   c                   C   sx   t g gdtdkstt dddgdggdtdks6tt g ggdtdksNtt dgddggdgggdtdksttd S rW   )r   rA   rQ   rG   rG   rG   rJ   test_dmp_ground_TCQ   s     rZ   c                   C   s   t g gdtdkstt dggdtdks.tt ddggdtdksHtt dgg gdtdksbtt ddgg gdtdks~td S )	NrX   )r   r   r      )r[   r\   r   )r   rX   rX   )rX   r   rX   )rX   rX   rX   )r   rA   rQ   rG   rG   rG   rJ   test_dmp_true_LTX   s
    r`   c                   C   sV   t g t kstt dgdks$tt ddgdks8tt dddddgdksRtd S )NrX   r   rO   )r	   rF   rQ   rG   rG   rG   rJ   test_dup_degreea   s    ra   c                   C   sb   t g gdt kstt g ggdt ks.tt dggddksDtt dgdggddks^td S NrX   rM   r   )r
   rF   rQ   rG   rG   rG   rJ   test_dmp_degreeh   s    rc   c                   C   s@  t g ggddt kstt g ggddt ks4tt g ggddt ksNtt dgggdddkshtt dgggdddkstt dgggdddkstt tdddkstt tdddkstt tdddkstt tdddkstt tdddkstt tdddkstt td	d	d	ks.tttd
d  d S )Nr   rM   rX   	         rO      rN   c                   S   s   t dggddS )NrX   )r   rG   rG   rG   rJ   <lambda>       z$test_dmp_degree_in.<locals>.<lambda>)r   rF   rQ   f_4f_6rE   
IndexErrorrG   rG   rG   rJ   test_dmp_degree_inp   s    rn   c                   C   s   t g gggdt t t t fks(tt dggggddksBtt tddksTtt tddksftt tddksxtt tddkstt tdd	kstt tddkstt t	dd
kstd S )NrN   rX   )r   r   r   r   rM   )rM   rM   rM   )rN   rN   rN   )rP   rN   rN   )rP   rO   r\   )rd   re   rf   )rO   rO   rg   rN   )
r   rF   rQ   f_0f_1f_2f_3rk   f_5rl   rG   rG   rG   rJ   test_dmp_degree_list   s    (rt   c                   C   s   t g g kstt dgg ks"tt dddgg ks8tt dgdgksLtt ddgdgksbtt ddddgdgks|tt dddgdddgkstt ddddgdddgkstt ddddddgdddgkstd S Nr   rX   rM   )r   rQ   rG   rG   rG   rJ   test_dup_strip   s    rv   c                   C   s.  t dddgdddgkstt g gdg gks2tt g g gdg gksJtt g g g gdg gksdtt g ggdg ggks~tt g gg ggdg ggkstt g gg gg ggdg ggkstt dgggddgggkstt g gdgggddgggkstt g gdggg ggddggg ggks*td S ru   )r   rQ   rG   rG   rG   rJ   test_dmp_strip   s    ""rw   c                   C   s   t g g dfkstt dddddgddgdfks6tt g ggg ggdfksRtt dgg dgdgdggdgg gdfks~tttdd  d S )Nr   rX   rM   c                   S   s   t dgddgdgdggS Nr   rX   )r   rG   rG   rG   rJ   ri      rj   z#test_dmp_validate.<locals>.<lambda>)r   rQ   rE   
ValueErrorrG   rG   rG   rJ   test_dmp_validate   s
    ",rz   c                   C   sB   t ddddgddddgks tt ddddgdddgks>td S )NrX   rM   r   rN   )r   rQ   rG   rG   rG   rJ   test_dup_reverse   s     r{   c                  C   sH   t dt dt dg} t| }t dt d |d< |d< | |ksDtd S )NrX   r   rM   r\   )rA   r   rQ   rI   grG   rG   rJ   test_dup_copy   s    r~   c                  C   sV   t dgt dt dgg} t| d}t dt d |d d< |d d< | |ksRtd S )NrX   rM   r   r\   )rA   r   rQ   r|   rG   rG   rJ   test_dmp_copy   s    
"r   c                   C   sB   t dddddddgttdtdtdtdtdgks>td S Nr   rM   rX      )r   rA   rQ   rG   rG   rG   rJ   test_dup_normal   s     r   c                   C   sJ   t dgg dddgdgdgg gdttdtdgg tdgg gksFtd S r   )r   rA   rQ   rG   rG   rG   rJ   test_dmp_normal   s    "r   c                  C   sZ   t d t  } }| d| d| d| dg}t|| |t dt dt dt dgksVtd S )NxrX   rM   r   rN   )rA   r   rQ   ZK0ZK1rI   rG   rG   rJ   test_dup_convert   s
    
r   c                  C   s`   t d t  } }| dg| dgg | dgg}t|d| |t dgt dgg t dggks\td S )Nr   rX   rM   rN   )rA   r   rQ   r   rG   rG   rJ   test_dmp_convert   s
    r   c                   C   sX   t tjtdgttdtdgks(tt tjtdgttddtddgksTtd S )NrM   rX   rN   )r   rD   OnerA   rQ   HalfrB   rG   rG   rG   rJ   test_dup_from_sympy   s    r   c                   C   sl   t tjtdgtjggdttdtdgg gks6tt tjtdggdttddtddggkshtd S )NrM   rX   )r   rD   r   ZZerorA   rQ   r   rB   rG   rG   rG   rJ   test_dmp_from_sympy   s    r   c                   C   sz   t dddgdtdkstt dddgdtdks4tt dddgdtdksNtt dddgdtdkshtttdd  d S )NrX   rM   rN   r   rd   c                   S   s   t dddgdtS )NrN   rO   rP   )r   rA   rG   rG   rG   rJ   ri     rj   ztest_dup_nth.<locals>.<lambda>)r   rA   rQ   rE   rm   rG   rG   rG   rJ   test_dup_nth   s
    r   c                   C   s   t dgdgdggddtdgks$tt dgdgdggddtdgksHtt dgdgdggddtdgksltt dgdgdggddtg kstttdd  d S )NrX   rM   rN   r   rd   c                   S   s   t dgdgdggddtS )NrN   rO   rP   r   rX   )r   rA   rG   rG   rG   rJ   ri     rj   ztest_dmp_nth.<locals>.<lambda>)r   rA   rQ   rE   rm   rG   rG   rG   rJ   test_dmp_nth  s
    $$$"r   c                   C   s   t g gddtdkstt dgdgdggddtdks:tt dgdgdggddtdks\tt dgdgdggddtdks~tt dgdgdggddtdkstt dgdgdggd	dtdkstttd
d  d S )Nr[   rX   r   rM   rN   r^   rM   r   rM   rX   )rN   r   c                   S   s   t dgdgdggddtS )NrN   rO   rP   )rM   r   rX   )r   rA   rG   rG   rG   rJ   ri     rj   z%test_dmp_ground_nth.<locals>.<lambda>)r   rA   rQ   rE   rm   rG   rG   rG   rJ   test_dmp_ground_nth  s    """""r   c                   C   sX   t g ddkstt g gddks&tt g ggddks<tt dgggddksTtd S )Nr   TrX   rM   F)r   rQ   rG   rG   rG   rJ   test_dmp_zero_p  s    r   c                   C   s(   t dg kstt dg ggks$td S )Nr   rM   )r   rQ   rG   rG   rG   rJ   test_dmp_zero#  s    r   c                   C   sf   t dgdtdkstt dggdtdks.tt dgggdtdksHtt dgggdtdksbtd S )NrX   r   TrM   re   F)r   rA   rQ   rG   rG   rG   rJ   test_dmp_one_p(  s    r   c                   C   s8   t dttdgkstt dttdgggks4td S ru   )r   rA   rQ   rG   rG   rG   rJ   test_dmp_one/  s    r   c                   C   sB  t g dddkstt g gdddks*tt g gdddks@tt tdggdddks\tt tdgggdddksztt tdgggdddkstt tdgg ggdddkstt g d ddkstt g gd ddkstt tdgd ddkstt tdgggd ddkstt tdgg ggd ddks>td S )Nr   TrX   FrM   rN   )r    rQ   rA   rG   rG   rG   rJ   test_dmp_ground_p4  s      r   c                   C   st   t tddg ggkstt tddtdks4tt tddtdgksPtt tddtdgggksptd S )Nr   rM   r\   r   )r!   rA   rQ   rG   rG   rG   rJ   test_dmp_groundH  s    r   c                   C   s   t ddtg g g g gkstt ddtg ks0tt ddtg gggksJtt ddtg ggg gggksjtt ddtg ggg ggg gggkstt ddtdddgkstd S )NrO   r   rM   rX   rN   r   )r$   rA   rQ   rG   rG   rG   rJ   test_dmp_zerosP  s     &r   c                   C   s   t tdddg kstt tddddggggks8tt tddddgggdggggks`tt tddddgggdgggdggggkstt tddddddgkstd S )Nr\   r   rM   rX   rN   r   )r%   rA   rQ   rG   rG   rG   rJ   test_dmp_grounds[  s
     (0r   c                   C   sX   t g ggdtdkstt dgdgggdtdks6tt dgdgggdtdksTtd S )NrM   FrX   r   T)r"   rA   rQ   rG   rG   rG   rJ   test_dmp_negative_pe  s    r   c                   C   sX   t g ggdtdkstt dgdgggdtdks6tt dgdgggdtdksTtd S )NrM   FrX   Tr   )r#   rA   rQ   rG   rG   rG   rJ   test_dmp_positive_pk  s    r   c               	   C   s  t i tg kstti tg ks$ttg i ks4ttg i ksDttg tdddtdiksbttg tdddtdikstdddddddddg	} dddd}dddd	}t |t| kstt|t| kstt| |kstt| |ksttd
t\}}}| }|d|d|d|d|d|dg} |d|d|dd}|d|d|dd}t ||| ksvtt||| kstt| |kstt| |kstd S )NTzeror   r   rN   rM   rf   )rf   rP   r   ))rf   rP   r   x,y)rP   rN   r   )r   rN   r   )r'   rA   rQ   r&   r)   r(   rC   	to_domain)rI   r}   hRr   yKrG   rG   rJ   test_dup_from_to_dictq  s,    (r   c               	   C   s   t i dtg gksttg gdi ks*ttg dtdddtdiksJttg gdtdddtdiksltdgg g dgg g g g d	gg	} ddd	d
}t |dt| kstt| d|kstd S )NrX   r   Tr   r   r[   rN   rM   rf   ))rf   r   )rP   r   r[   )r*   rA   rQ   r+   r|   rG   rG   rJ   test_dmp_from_to_dict  s     "r   c                     s   t dddgg ddgg dggdt t dddddgdddgdggdt} t dddt ks^tt dddt| ksvtt| dddt ksttt fdd d S )NrX   r   c                      s   t  dddtS )Nr   irX   )r,   rA   rG   rI   rG   rJ   ri     rj   ztest_dmp_swap.<locals>.<lambda>)r   rA   r,   rQ   rE   rm   )r}   rG   r   rJ   test_dmp_swap  s    "$r   c                  C   s   t dddgg ddgg dggdt} t dddddgdddgdggdt}t| ddgdt| ks`tt|ddgdt|ksztt| ddgdt|kstt|ddgdt| kstd S )NrX   r   )r   rA   r-   rQ   r|   rG   rG   rJ   test_dmp_permute  s    "$r   c                   C   s|   t tddtdgggkstt dggdtdggks:tt dggdtdgggksXtt dggdtdggggksxtd S rb   )r.   rA   rQ   rG   rG   rG   rJ   test_dmp_nest  s    r   c                   C   s   t g ddtg ggkstt dggddtdggks8tt dddgg ddggddtdggdggdgggg ggdggdggggkstd S )NrM   r   rX   rN   )r/   rA   rQ   rG   rG   rG   rJ   test_dmp_raise  s
    *r   c                
   C   s  t g tdg fkstt dgtddgfks0tt dddgtddddgfksRtt dddddgtddddgfksxtt tdddttdddddddddgfkstt tdddttdddgfkstt tdddttdddddddddgfkstt tddd	ttdddddddddgfks8tt tddd
ttddddgfksbtt tddittdddgfkstt tddittdddgfkstt tddittdddgfkstd S )NrX   rM   rN   r   )r\   rX   )r\   r   r\   )r\   rN   )r\   rO   )rf   rO   rO   rf   )r0   rA   rQ   r'   rG   rG   rG   rJ   test_dup_deflate  s8    "&








r   c                  C   s   t g gdtdg gfkstt dggdtddggfks<tdddgg ddgg dgg} t | dtddddgddgdggfkstd S )NrX   r_   rM   r   r   )r1   rA   rQ   r   rG   rG   rJ   test_dmp_deflate  s     r   c                   C   s  t dgftddgffkstt g g ftdg g ffks<tt dddgftddddgffksbtt dddddgftddddgffkstt dddddgdddgftddddgddgffkstt dddddgdddgftddddddgdddgffkstd S )NrM   rX   rN   r   )r2   rA   rQ   rG   rG   rG   rJ   test_dup_multi_deflate  s    &*r   c                  C   sh  t g gfdtdg gffks tt g gg gfdtdg gg gffksHtt dggg gfdtddggg gffksttt dggdggfdtddggdggffkstt dggddggfdtddggddggffkstt ddggddggfdtdddggddggffkstt dggdddggfdtddggddggffksJtt dddggdddggfdtdddggddggffkstt dddgdddddgfdtdddgdddgffkstdddgg ddgg dgg} ddddgg dgg}t | fdtddddgddgdggffks"tt | |fdtddddgddgdggddddgdggffksdtd S )	NrX   r_   rM   r   rX   rM   rO   rM   r   )r3   rA   rQ   r|   rG   rG   rJ   test_dmp_multi_deflate  sZ    

  
  


r   c                
   C   s   t g dtg kstt dddgdtdddgks4tt dddgdtdddddgksXtt dddgdtdddddddgkstt dddgdtdddddddddg	kstttdd  d S )	N   rX   rM   rN   r   rO   c                   S   s   t dddgdtS NrX   rM   rN   r   )r4   rA   rG   rG   rG   rJ   ri   #  rj   z"test_dup_inflate.<locals>.<lambda>)r4   rA   rQ   rE   rm   rG   rG   rG   rJ   test_dup_inflate  s     $(,r   c                   C   s  t dgddtdgkstt g gddtg gks4tt dggddtdggksRtt ddggddtddggksttt ddggddtdddggkstt ddggddtddddggkstt dddgdgddggd	dtdddgg dgg ddggkstttd
d  d S )NrX   r   r   )rN   r\   rM   r   r_   )rX   rN   r   c                   S   s   t g gddtS )N)r\   rX   )r5   rA   rG   rG   rG   rJ   ri   3  rj   z"test_dmp_inflate.<locals>.<lambda>)r5   rA   rQ   rE   rm   rG   rG   rG   rJ   test_dmp_inflate&  s    "$&r   c                   C   s`  t g ggdtg g ggdfks"tt dgggdtg dgggdfksHtt dddgdtg dddgdfksntt dgddggdtg dgddggdfkstt dddggdtdgdddgdfkstt dgdgdggdtdgdddgdfkstt dddgggdtddgdddgdfks$tt dggdggdgggdtddgdddgdfks\td S )NrM   r\   rX   rN   r   )r6   rA   rQ   rG   rG   rG   rJ   test_dmp_exclude6  s    "&&.*.0r   c                   C   s   t dddgg dtdddgks"tt dddgdgdtdddggksHtt dddgdgdtdgdgdggksrtt dddgddgdtdddgggkstt dddgddgdtdggdggdgggkstd S r   )r7   rA   rQ   rG   rG   rG   rJ   test_dmp_includeD  s
    "&**r   c                  C   sr  t dt\} }}|  }tg d|g ggdfks4ttg gd|g gggdfksTtt| dgd|dgggdfksxtt| dggd|dggggdfkstt| dd| d|  d gd|dggdgddgggdfkstd|d  d| |  d|d   d| | d||d  d	 g}dgddgdddggdgg gg gdddgd	ggg}t|d||dfksntd S )
Nr   r   rM   rX   rN   rO   r\   rP   r   )rC   rA   r   r8   rQ   r   r   r   r   rI   r}   rG   rG   rJ   test_dmp_injectN  s     $(B@2r   c                  C   sZ  t dt\} }}|  }tg ggd|g ks0ttg gggd|g gksLttdgggd|| dgkslttdggggd|| dggksttdggdgddgggd|| dd| d|  d gkstd|d  d| |  d|d   d| | d||d  d	 g}dgddgdddggdgg gg gdddgd	ggg}t|d||ksVtd S )
Nr   rM   rN   rX   rO   r\   rP   r   r   )rC   rA   r   r9   rQ   r   rG   rG   rJ   test_dmp_eject`  s     $>@2r   c                   C   s`   t g tdg fkstt dddgtddddgfks8tt ddddgtddddgfks\td S rx   )r:   rA   rQ   rG   rG   rG   rJ   test_dup_terms_gcdr  s    "r   c                   C   s   t g gdtdg gfkstt ddddgdtddddgfksBtt dgg dgg gdtddgg dggfksptt ddgg dggdtdddgg dggfkstt ddgdddgg g gdtddgddggfkstd S )NrX   r[   r   rX   r^   r   )r;   rA   rQ   rG   rG   rG   rJ   test_dmp_terms_gcdx  s"    &.    r   c                  C   s<  t g ggdtdgkstt dgggdtdgks6tt dddddgdtd	d
dddgks^tt dgddgdddggdtdddddgkstddddgdddgg g} t | dtddddgkstt | dtddddgkstddddgddddddgg g} t | dtddddgkstt | dtddddgks8td S )NrM   )r   r   r   r   rX   )r   rX   rO   rN   rP   r   ))rO   rX   )r   rM   )r   rO   )r   rN   )r   rP   )r   rX   )r_   rM   )r^   rO   ))r   rM   rN   )r]   rP   lex)order))rM   rN   rM   )r   rX   Zgrlex))rX   rP   rX   )r<   rA   rQ   r   rG   rG   rJ   test_dmp_list_terms  s8          r   c                  C   s.  dd } t dddgdddg| g d	tdd
dgks4tt ddgdddg| g d	td
dgks\tt dddgddg| g d	td
dgkstt ddgdggddgdgg| g dtdd
gdggkstt ddgdggdgddgg| g dtdgdggkstt dgddggddgdgg| g dtdgdggks*td S )Nc                 S   s   | | S )NrG   )abrG   rG   rJ   ri     rj   z&test_dmp_apply_pairs.<locals>.<lambda>rX   rM   rN   rO   rP   rg   r   
      rf   )r=   rA   rQ   )r   rG   rG   rJ   test_dmp_apply_pairs  sD    ,((          
     
r   c                  C   sd  ddddg} t | ddtg ks"tt | ddtdgks:tt | ddtddgksTtt | ddtdddgksptt | ddtddddgkstt | ddt| kstt | ddt| kstt | ddtg kstt | ddtg kstt | ddtddgkstt | ddtdddgks tt | ddtddddgks@tt ddgddtddgks`td S )NrX   rM   rN   rO   r   rd   )r>   rA   rQ   r   rG   rG   rJ   test_dup_slice  s     r   c                  C   s   t dddt} t| dksttdd | D s4tt dddt} t| dksRttd	d | D shtt d
ddt} t| d
ksttdd | D stt dddt} t| dksttdd | D std S )Nr   r   c                 s   s&   | ]}d |  kodkn  V  qdS )r   r   NrG   rH   crG   rG   rJ   	<genexpr>  s     z"test_dup_random.<locals>.<genexpr>rX      c                 s   s&   | ]}d |  kodkn  V  qdS )r   r   NrG   r   rG   rG   rJ   r     s     rM      c                 s   s&   | ]}d |  kodkn  V  qdS )r   r   NrG   r   rG   rG   rJ   r     s     rN   (   c                 s   s&   | ]}d |  kodkn  V  qdS )r   r   NrG   r   rG   rG   rJ   r     s     )r?   rA   r	   rQ   allr   rG   rG   rJ   test_dup_random  s    r   N)__doc__Zsympy.polys.densebasicr   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   Zsympy.polys.specialpolysr@   Zsympy.polys.domainsrA   rB   Zsympy.polys.ringsrC   Zsympy.core.singletonrD   Zsympy.testing.pytestrE   Zsympy.core.numbersrF   ro   rp   rq   rr   rk   rs   rl   rR   rS   rU   rV   rY   rZ   r`   ra   rc   rn   rt   rv   rw   rz   r{   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rG   rG   rG   rJ   <module>   s    $	
				


"	#
