Ë
    0Ò^jù7  ã                   óÌ  — d dl Z d dlZd dlmZmZ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 e j"                  j$                  Ze j"                  j&                  Ze j"                  j%                  dd¬«      Zd	„ Ze j"                  j-                  d
d¬«      d„ «       Zd„ Z ee«      d„ «       Zd„ Z ee«      d„ «       Z ee«      d„ «       Z ee«      d„ «       Z ee«      d„ «       Z edd¬«       ee«      d„ «       «       Z ee«      d„ «       Z  ee«      d„ «       Z! ee«      d„ «       Z" ee«      d„ «       Z# ee«      d„ «       Z$ ee«      d„ «       Z% ee«      d„ «       Z&y)é    N)Úxp_assert_closeÚxp_assert_equalÚxp_swapaxesÚis_torchÚmake_xp_test_caseÚ_xp_copy_to_numpy)Ú
convolve1d)Úsavgol_coeffsÚsavgol_filter)Ú_polyderz
dask.arrayzlinalg.lstsq is missing rcond)Úreasonc                 ó8   — t        | ||¬«      }t        ||«       y )N©Úxp)r   r   )ÚpÚmÚexpectedr   Údps        úq/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/scipy/signal/tests/test_savitzky_golay.pyÚcheck_polyderr      s   € Ü	�!�Q˜2Ô	€BÜ�B˜Õ!ó    FÚprivatec                 ó¶  — dgddgfdgddgfg d¢dg d¢fg d¢dddgfg d¢ddgfg d¢ddgfg d¢g d¢gdg d¢g d¢gfg d¢g d¢gdddgd	dggfg d¢g d¢gddgd	ggfg d¢g d¢gddgdggfg
}|D ]l  \  }}}| j                  |«      }| j                  |«      }t        |j                  dk(  r|j                  n|||j                  dk(  r|j                  n|| «       Œn y )
Né   r   é   )é   é   r   é   r   r   )r   r   é   é
   )Úasarrayr   ÚndimÚT)r   Úcasesr   r   r   ÚppÚees          r   Útest_polyderr'      s  € ð ˆˆa�!�ˆØ
ˆˆa�!�ˆÚ	�A’yÐ!Ú	�A˜˜1�vÐÚ	�A˜�sÐÚ	�A˜�sÐÚ
’YÐ	 ¢Y²	Ð$:Ð;Ú
’YÐ	  a¨ V¨b°!¨WÐ$5Ð6Ú
’YÐ	  a S¨2¨$ KÐ0Ú
’YÐ	  a S¨1¨# JÐ/ð€Eð  ò 
‰ˆˆ1ˆhØ�Z‰Z˜‹]ˆØ�Z‰Z˜Ó!ˆÜØ—G‘G˜q’LˆB�DŠD bØØ—G‘G˜a’KˆB�DŠD RØõ		
ñ
r   c                 óâ   — |€| dz  }t        j                  | «      }||k(  j                  t        «      }t        j                  t        j
                  |||«      |«      }|j                  |«      S )züThis is an alternative implementation of the SG coefficients.

    It uses numpy.polyfit and numpy.polyval. The results should be
    equivalent to those of savgol_coeffs(), but this implementation
    is slower.

    window_length should be odd.

    r   )ÚnpÚarangeÚastypeÚintÚpolyvalÚpolyfitr!   )Úwindow_lengthÚ	polyorderÚposr   ÚtÚunitÚhs          r   Úalt_sg_coeffsr5   8   s`   € ð €{Ø˜qÑ ˆÜ
�	‰	�-Ó €AØ�‰H×ÑœSÓ!€DÜ
�
‰
”2—:‘:˜a  yÓ1°1Ó5€AØ�:‰:�a‹=Ðr   c                 ó>  — t        dd| ¬«      }t        || j                  dg| j                  ¬«      «       t        dd| ¬«      }t        || j                  g d¢| j                  ¬«      d	¬
«       t        dd| ¬«      }t        || j                  g d¢| j                  ¬«      d	¬
«       t        ddd| ¬«      }t        || j                  g d¢| j                  ¬«      d	¬
«       t        dddd| ¬«      }t        || j                  g d¢| j                  ¬«      d	¬
«       y )Nr   r   r   ç      ð?©Údtyper   r   )ç        r   r   ç»½×Ùß|Û=©Úatolr   é   )r:   r   r   r   r   ©r1   r   )r:   r   r   r   r   Údot©r1   Úuser   )r:   r   r   r   r   )r
   r   r!   Úfloat64)r   r4   s     r   Útest_sg_coeffs_trivialrD   J   sä   € ô 	�a˜˜rÔ"€AÜ�A�r—z‘z 3 %¨r¯z©z�zÓ:Ô;ä�a˜˜rÔ"€AÜ�A�r—z‘z¢+°R·Z±Z�zÓ@ÀuÕMä�a˜˜rÔ"€AÜ�A�r—z‘zÒ"3¸2¿:¹:�zÓFÈUÕSä�a˜  bÔ)€AÜ�A�r—z‘zÒ"3¸2¿:¹:�zÓFÈUÕSä�a˜  u°Ô4€AÜ�A�r—z‘zÒ"3¸2¿:¹:�zÓFÈUÖSr   c                 ó¬   — d gt        t        | «      «      z   D ]9  }t        | ||d|¬«      }t        | |||¬«      }t	        ||dd| › d|› d|› �¬«       Œ; y )	Nr@   rA   r?   g»½×Ùß|ë=zwindow_length = z
, order = z, pos = )r=   Úerr_msg)ÚlistÚranger
   r5   r   )r/   Úorderr   r1   Úh1Úh2s         r   Úcompare_coeffs_to_altrL   ]   sk   € ð ˆvœœU =Ó1Ó2Ñ2ò 
ˆÜ˜=¨%°S¸eÈÔKˆÜ˜=¨%°S¸RÔ@ˆÜØ�˜Ø& } o°ZÀ¸wÀhÈsÈeÐTö	
ñ
r   c                 ód   — t        ddd«      D ]   }t        |«      D ]  }t        ||| ¬«       Œ Œ" y )Nr   é   r   r   )rH   rL   )r   r/   rI   s      r   Útest_sg_coeffs_comparerO   j   s;   € ô ˜q ! Q›ò ?ˆÜ˜=Ó)ò 	?ˆEÜ! -°¸2Ö>ñ	?ñ?r   c                 ój  — d}d}|dz  }| j                  ddd«      }|d   |d   z
  }d|d	z  z  |z
  }t        ||| ¬
«      }| j                  t        t	        |«      t	        |«      «      «      }t        |||  |||  «       d|dz  z  dz
  }	t        ||d|| ¬«      }| j                  t        t	        |«      t	        |«      «      «      }
t        |
||  |	||  «       d|z  }t        ||d|| ¬«      }| j                  t        t	        |«      t	        |«      «      «      }t        |||  |||  «       y )Nr>   é	   r   r   é   é+   r   ç      à?r   r   g      ø?)ÚderivÚdeltar   ç      @)Úlinspacer
   r!   r	   r   r   )r   r0   r/   ÚhalflenÚxrV   Úyr4   Úy0ÚdyÚy1Úd2yÚy2s                r   Útest_sg_coeffs_exactra   r   sU  € à€IØ€MØ˜qÑ €Gà
�‰�A�r˜2Ó€AØˆa‰D�1�Q‘4‰K€Eð
 	ˆa�1‰f‰�qÑ€AÜ�m Y°2Ô6€AØ	�‰”JÔ0°Ó3Ô5FÀqÓ5IÓJÓ	K€BÜ�B�w ˜xÐ(¨!¨G°W°HÐ*=Ô>ð 
ˆq�A‰v‰˜Ñ	€BÜ�m Y°a¸uÈÔL€AØ	�‰”JÔ0°Ó3Ô5FÀqÓ5IÓJÓ	K€BÜ�B�w ˜xÐ(¨"¨W°g°XÐ*>Ô?ð �‰'€CÜ�m Y°a¸uÈÔL€AØ	�‰”JÔ0°Ó3Ô5FÀqÓ5IÓJÓ	K€BÜ�B�w ˜xÐ(¨#¨g°w°hÐ*?Õ@r   c           
      óœ  — | j                  g d¢| j                  ¬«      }|dz  dz  }|dz  }| j                  |d«      }t        |j                  d   «      D ]s  }t        dd|d	d
| ¬«      }t        ||z  ||   d¬«       t        dd|d	d
d| ¬«      }t        ||z  ||   d¬«       t        dd|d	d
d| ¬«      }t        ||z  ||   d¬«       Œu y )N)g       Àr:   ç       @ç      @g      @r8   r   r>   rT   r   r   r   rc   r@   )r1   rV   rB   r   r;   r<   r   )r1   rV   rB   rU   r   )r!   rC   Ú	full_likerH   Úshaper
   r   )	r   ÚirZ   ÚdxÚd2xr1   Úcoeffs0Úcoeffs1Úcoeffs2s	            r   Útest_sg_coeffs_derivrm   �   sÛ   € ð 	�
‰
Ò-°R·Z±Zˆ
Ó@€AØ	ˆQ‰�‰
€AØ	
ˆQ‰€BØ
�,‰,�q˜#Ó
€CÜ�Q—W‘W˜Q‘ZÓ ò <ˆÜ  1¨#°S¸eÈÔKˆÜ˜ !™ Q s¡V°%Õ8Ü  1¨#°S¸eÈ1ÐQSÔTˆÜ˜ !™ R¨¡W°5Õ9Ü  1¨#°S¸eÈ1ÐQSÔTˆÜ˜ !™ c¨#¡h°UÖ;ñ<r   c                 óÜ   — t        ddd| ¬«      }t        || j                  d| j                  ¬«      «       t        ddd| ¬«      }t        || j                  d| j                  ¬«      «       y	)
zº
    If deriv > polyorder, the coefficients should be all 0.
    This is a regression test for a bug where, e.g.,
        savgol_coeffs(5, polyorder=1, deriv=2)
    raised an error.
    r   r   r   )r0   rU   r   r8   r   r>   r   N)r
   r   ÚzerosrC   )r   Úcoeffss     r   Ú!test_sg_coeffs_deriv_gt_polyorderrq   ¡   sZ   € ô ˜1¨°°rÔ:€FÜ�F˜BŸH™H Q¨b¯j©j˜HÓ9Ô:Ü˜1¨°°rÔ:€FÜ�F˜BŸH™H Q¨b¯j©j˜HÓ9Õ:r   Útorchz4torch loses precision (worse with f32 default dtype)c                 óô   — t        dd| ¬«      }t        || j                  |«      t        | «      rdnd¬«       t        ddd| ¬«      }t        || j                  |«       t        | «      rd	¬«       y d¬«       y )
Né   rQ   r   gü©ñÒMb@?gTäqs*¹>r<   r   )rU   r   gú~j¼t“ˆ?)r
   r   Úflipr   )r   rj   rk   s      r   Útest_sg_coeffs_largerv   ¯   sm   € ô ˜B  bÔ)€GÜØ�—‘˜Ó!´¸´©À&õô ˜B ¨¨rÔ2€GÜØ�"—'‘'˜'Ó"Ð"´8¸B´<¨öØEKör   c                 ó´  — g d¢}|D ]/  }t        |dd| ¬«      }t        || j                  |«      |z  «       Œ1 d„ }d„ }|D �]
  }|dz  }t        | dz   |dz   «      D �cg c]  } |||«      ‘Œ c}d d d…   }| j	                  || j
                  ¬	«      }t        |dd| ¬«      }	t        |	|«       t        |dd| ¬«      }	t        |	|«       t        | dz   |dz   «      D �cg c]  } |||«      ‘Œ c}d d d…   }| j	                  || j
                  ¬	«      }t        |dd| ¬«      }	t        |	|«       t        |d
d| ¬«      }	t        |	|«       �Œ y c c}w c c}w )N)r>   r   rN   r    é   é   é   r   r   c                 ó<   — d| dz
  z  d|z  dz   |z  d|z  dz
  z  z  S )Nr   rT   r   r   © )Úkr   s     r   Úh_p_d_closed_form_1z>test_sg_coeffs_even_window_length.<locals>.h_p_d_closed_form_1Ï   s.   € Ø�!�c‘'‰{˜Q˜q™S 1™W a™K¨¨1©¨q©Ñ1Ñ2Ð2r   c                 ó†   — dd|dz  z  dz   d| dz
  dz  z  z   z  }dd|z  dz   z  |dz   z  |z  |dz
  z  d|z  dz
  z  }||z  S )Né   éüÿÿÿr   r   rx   rT   r>   r|   )r}   r   ÚnumerÚdenoms       r   Úh_p_d_closed_form_2z>test_sg_coeffs_even_window_length.<locals>.h_p_d_closed_form_2Ó   sh   € Ø�B�q˜!‘t‘G˜a‘K " a¨#¡g°¡\¡/Ñ1Ñ2ˆØ�1�Q‘3˜‘7‘˜Q ™UÑ# AÑ% q¨1¡uÑ-¨q°©s°Q©wÑ7ˆØ�U‰{Ðr   r   r   éÿÿÿÿr8   r   )r
   r   Ú	ones_likerH   r!   rC   )
r   Úwindow_lengthsÚlengthÚh_p_dr~   r„   r   r}   Úexpected_outputÚactual_outputs
             r   Ú!test_sg_coeffs_even_window_lengthrŒ   Å   s~  € ò /€NØ ò =ˆÜ˜f a¨¨rÔ2ˆÜ˜˜rŸ|™|¨EÓ2°VÑ;Õ<ð=ò3òð
 !ó 8ˆØ�A‰Iˆä$)¨1¨"¨q©&°!°a±%Ó$8ö:Ø ñ /¨q°!Õ4ò :Ù:>¸B¸$ñ@ˆàŸ*™* _¸B¿J¹J˜*ÓGˆÜ% f¨a°°rÔ:ˆÜ˜ Ô7Ü% f¨a°°rÔ:ˆÜ˜ Ô7ô %*¨1¨"¨q©&°!°a±%Ó$8ö:Ø ñ /¨q°!Õ4ò :Ù:>¸B¸$ñ@ˆàŸ*™* _¸B¿J¹J˜*ÓGˆÜ% f¨a°°rÔ:ˆÜ˜ Ô7Ü% f¨a°°rÔ:ˆÜ˜ Ö7ñ!8ùò:ùò:s   ÁEÃ Ec                 óü  — | j                  dg«      }t        |dd«      }t        || j                  dg«      «       | j                  dg«      }t        |ddd¬«      }t        || j                  dg«      d¬	«       | j                  dg«      }t        |ddd
¬«      }t        || j                  dg«      d¬	«       | j                  dgdz  «      }t        |ddd¬«      }t        || j                  g d¢«      d¬	«       y)z2 Test some trivial edge cases for savgol_filter().r7   r   r   rW   r   Úconstant©Úmodeg [n‡Û<r<   ÚnearestÚwrap)r7   r7   r7   N)r!   r   r   r   ©r   rZ   r[   s      r   Útest_sg_filter_trivialr”   î   sà   € ð 	�
‰
�C�5Ó€AÜ�a˜˜AÓ€AÜ�A�r—z‘z 3 %Ó(Ô)ð
 	�
‰
�C�5Ó€AÜ�a˜˜A JÔ/€AÜ�A�r—z‘z 3 %Ó(¨wÕ7à
�
‰
�C�5Ó€AÜ�a˜˜A IÔ.€AÜ�A�r—z‘z 3 %Ó(¨wÕ7à
�
‰
�C�5˜1‘9Ó€AÜ�a˜˜A FÔ+€AÜ�A�r—z‘z¢/Ó2¸ÖAr   c                 ó2  — | j                  g d¢«      }t        |ddd¬«      }t        || j                  g d¢«      «       t        |ddd¬«      }t        || j                  g d¢«      «       t        |ddd	¬«      }t        || j                  g d
¢«      «       y )N©r7   rc   r7   r   r   rŽ   r�   ©r7   çUUUUUUõ?r7   Úmirror)ç«ªªªªªú?r˜   rš   r’   )r˜   r˜   r˜   )r!   r   r   r“   s      r   Útest_sg_filter_basicr›     s~   € ð 	�
‰
’?Ó#€AÜ�a˜˜A JÔ/€AÜ�A�r—z‘zÒ"5Ó6Ô7ä�a˜˜A HÔ-€AÜ�A�r—z‘zÒ"=Ó>Ô?ä�a˜˜A FÔ+€AÜ�A�r—z‘zÒ"=Ó>Õ?r   c                 óö   — | j                  g d¢g d¢g«      }| j                  g d¢g d¢g«      }t        |ddd¬«      }t        ||«       t        |j                  dddd	¬
«      }t        ||j                  «       y )Nr–   )rc   rd   rc   r—   )rc   gUUUUUU@rc   r   r   rŽ   r�   r   )r�   Úaxis)r!   r   r   r#   )r   rZ   r   r[   s       r   Útest_sg_filter_2drž     sq   € à
�
‰
’OÚ#ð%ó 	&€Aà�z‰zÒ.Ú.ð0ó 1€Hä�a˜˜A JÔ/€AÜ�A�xÔ ä�a—c‘c˜1˜a j°qÔ9€AÜ�A�x—z‘zÕ"r   c           	      ó&  — | j                  ddd| j                  ¬«      }|d   |d   z
  }| j                  |d|dz  z  |dz  |z
  g«      }| j                  | j                  |«      d	|z  d|dz  z  d
z
  g«      }| j                  | j	                  |«      | j                  |d	«      d	|z  g«      }d}t        ||ddd¬«      }t        ||d¬«       t        ||dddd|¬«      }t        ||d¬«       t        ||dddd|¬«      }	t        |	|d¬«       |j                  }|j                  }|j                  }t        ||ddd¬«      }t        ||d¬«       t        ||dddd|¬«      }t        ||d¬«       t        ||dddd|¬«      }	t        |	|d¬«       y )Néûÿÿÿr   rR   r8   r   r   r   r   r   r7   r   r…   Úinterp)r�   r�   gê-�™—q=r<   ©r�   r�   rU   rV   )	rX   rC   Ústackr†   Ú
zeros_likere   r   r   r#   )
r   r2   rV   rZ   rh   ri   r/   r[   r^   r`   s
             r   Útest_sg_filter_interp_edgesr¥      s¹  € ð 	�‰�B˜˜2 R§Z¡ZˆÓ0€AØˆa‰D�1�Q‘4‰K€Eà
�‰�!Ø�a˜1‘f‘*Ø�q‘&˜1‘*ðó 	€Að 
�‰�2—<‘< “?Ø�q‘5Ø�q˜A‘v‘: Ñ#ð%ó 
&€Bð �(‰(�B—M‘M !Ó$Ø—L‘L  AÓ&Ø˜‘Eðó €Cð €Mä�a˜¨°¸ÔB€AÜ�A�q˜uÕ%ä	�q˜-¨°¸(Ø eô
-€Bä�B˜ Õ'ä	�q˜-¨°¸(Ø eô
-€Bä�B˜ %Õ(ð 	
�‰€AØ	�‰€BØ
�%‰%€Cä�a˜¨°¸ÔA€AÜ�A�q˜uÕ%ä	�q˜-¨°¸Ø eô
-€Bä�B˜ Õ'ä	�q˜-¨°¸Ø eô
-€Bä�B˜ %Ö(r   c           	      óî  — | j                  ddd«      }|d   |d   z
  }| j                  || g«      }| j                  |dz  d|dz  z  dz   g«      }| j                  |dz  d|dz  z  |dz  z   d|z  z
  g«      }| j                  | j                  |«      | j                  |«       g«      }| j                  d|z  d	|z  g«      }| j                  d|dz  z  d	|dz  z  d|z  z   dz
  g«      }| j                  |||g«      }	| j                  |||g«      }
t        |	d
ddd|¬«      }t	        ||	d¬«       t        |	d
dddd|¬«      }t	        ||
d¬«       | j                  |j
                  |j
                  |j
                  g«      }	| j                  |j
                  |j
                  |j
                  g«      }
t        |	d
ddd|¬«      }t	        ||	d¬«       t        |	d
dddd|¬«      }t	        ||
d¬«       | j                  t        |	dd| ¬«      d¬«      }	| j                  t        |
dd| ¬«      d¬«      }
t        |	d
ddd|¬«      }t	        ||	d¬«       t        |	d
dddd|¬«      }t	        ||
d¬«       y )Nr    r   rR   r   r   r   r   rT   r   r   r…   r¡   )r�   r�   rV   r;   r<   r¢   r   T)Úcopy)rX   r£   r†   r   r   r#   r!   r   )r   r2   rV   Úx1Úx2Úx3Údx1Údx2Údx3ÚzÚdzr[   r]   s                r   Útest_sg_filter_interp_edges_3dr°   R  sp  € ð 	�‰�B˜˜2Ó€AØˆa‰D�1�Q‘4‰K€EØ	�‰�1�q�b�'Ó	€BØ	�‰�1˜‘6˜1˜q A™v™:¨™>Ð*Ó	+€BØ	�‰�1˜‘6˜1˜q A™v™:¨¨Q©Ñ.°°q±Ñ8Ð9Ó	:€BØ
�(‰(�B—L‘L “O b§l¡l°1£oÐ%5Ð6Ó
7€CØ
�(‰(�A˜‘E˜1˜q™5�>Ó
"€CØ
�(‰(�A˜˜Q™‘J  A¨¡F¡
¨Q°©UÑ 2°SÑ 8Ð9Ó
:€Cð 	�‰�"�b˜"�Ó€AØ	�‰�3˜˜S�/Ó	"€Bä�a˜˜A B¨X¸UÔC€AÜ�A�q˜uÕ%ä	�q˜!˜Q R¨h¸aÀuÔ	M€BÜ�B˜ Õ'ð 	�‰�"—$‘$˜Ÿ™˜bŸd™dÐ#Ó$€AØ	�‰�3—5‘5˜#Ÿ%™% §¡Ð'Ó	(€Bä�a˜˜A A¨H¸EÔB€AÜ�A�q˜uÕ%ä	�q˜!˜Q Q¨X¸QÀeÔ	L€BÜ�B˜ Õ'ð 	�
‰
”;˜q ! Q¨2Ô.°Tˆ
Ó:€AØ	�‰”K  A q¨RÔ0°tˆÓ	<€Bä�a˜˜A A¨H¸EÔB€AÜ�A�q˜uÕ%ä	�q˜!˜Q Q¨X¸QÀeÔ	L€BÜ�B˜ Ö'r   c                 ób  — | j                  d«      }t        |ddd¬«       t        j                  t        d¬«      5  t        |ddd¬«       d	d	d	«       t        |d
ddd¬«       t        j                  t        d¬«      5  t        |dddd¬«       d	d	d	«       y	# 1 sw Y   ŒNxY w# 1 sw Y   y	xY w)z=Tests that the window_length check is using the correct axis.)r    é   é   é   r   r¡   )r/   r0   r�   zwindow_length must be less than)Úmatchrt   NrQ   r   )r/   r0   r�   r�   é   )Úonesr   ÚpytestÚraisesÚ
ValueError)r   rZ   s     r   Ú%test_sg_filter_valid_window_length_3dr»   }  s¦   € ð 	�‰�Ó€Aä�! 2°¸ÕBä	�‰”zÐ)JÔ	Kñ Gä�a r°Q¸XÕF÷Gô �! 1°¸ÀÕIä	�‰”zÐ)JÔ	Kñ Oä�a r°Q¸QÀXÕN÷Oð O÷Gð Gú÷Oð Oús   ¼BÁ?B%ÂB"Â%B.)'r¸   Únumpyr)   Úscipy._lib._array_apir   r   r   r   r   r   Úscipy.ndimager	   Úscipy.signalr
   r   Úscipy.signal._savitzky_golayr   ÚmarkÚskip_xp_backendsÚxfail_xp_backendsÚ
pytestmarkr   Úuses_xp_capabilitiesr'   r5   rD   rL   rO   ra   rm   rq   rv   rŒ   r”   r›   rž   r¥   r°   r»   r|   r   r   ú<module>rÆ      sý  ðÛ Û ÷÷ õ
 %ç 5Ý 1à—;‘;×/Ñ/Ð Ø—K‘K×1Ñ1Ð à�[‰[×)Ñ)ØÐ8ð *ó €
ò
"ð
 ‡�×!Ñ! %°	Ð!Ó:ñ
ó ;ð
ò8ñ$ �=Ó!ñTó "ðTò$

ñ �=Ó!ñ?ó "ð?ñ �=Ó!ñAó "ðAñ: �=Ó!ñ<ó "ð<ñ  �=Ó!ñ
;ó "ð
;ñ ØÐJôñ �=Ó!ñó "óðñ$ �=Ó!ñ"8ó "ð"8ñP �=Ó!ñBó "ðBñ, �=Ó!ñ
@ó "ð
@ñ �=Ó!ñ	#ó "ð	#ñ �=Ó!ñ.)ó "ð.)ñb �=Ó!ñ'(ó "ð'(ñT �=Ó!ñOó "ñOr   