Ë
    ùÿæinR  ã            #       óv  — d dl mZ d dlZd dlm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 ddgZ G d„ de«      Zd	d
e› de› de› de› d�	z   e_        	 	 	 	 	 	 	 d$dee   dee   dee   dee   dedz  dedz  dedz  dededz  dedededededededdf"d„Zd „ Zdee   dee   dee   dee   dedz  dedz  dededededededededdfd!„Zdee   dee   dee   dee   dedz  dedz  dededededededededdfd"„Zdee   dee   dee   dee   dedz  dedz  dededededededededdfd#„Zy)%é    )ÚcastN)ÚTensoré   )Ú_default_to_fused_or_foreachÚ_device_dtype_check_for_fusedÚ_differentiable_docÚ_foreach_docÚ_get_scalar_dtypeÚ
_get_valueÚ_maximize_docÚ_params_docÚ
_to_scalarÚ_use_grad_for_differentiableÚ_view_as_realÚ	OptimizerÚParamsTÚAdagradÚadagradc                   ó    ‡ — e Zd Z	 	 	 	 	 	 dddddœdedeez  dededed	ed
edz  dedededz  ddfˆ fd„Zˆ fd„Zdd„Z	d„ Z
edd„«       Zˆ xZS )r   NF)ÚmaximizeÚdifferentiableÚfusedÚparamsÚlrÚlr_decayÚweight_decayÚinitial_accumulator_valueÚepsÚforeachr   r   r   Úreturnc          
      ó6  •— t        |t        «      r|j                  «       dk7  rt        d«      ‚d|k  st        d|› �«      ‚d|k  st        d|› �«      ‚d|k  st        d|› �«      ‚d|k  st        d|› �«      ‚d|k  st        d|› �«      ‚||||||||	|
d	œ	}t        ‰| �  ||«       |
r!|	rt        d
«      ‚|rt        d«      ‚d| _        | j                  D ]½  }|d   D ]³  }| j                  |   }|d   r/t        j                  dt        |d   ¬«      |j                  ¬«      nt        j                  dt        «       ¬«      |d<   t        j                  |«      rt!        ||«      n|}t        j"                  ||t        j$                  ¬«      |d<   Œµ Œ¿ y )Nr   zTensor lr must be 1-elementg        zInvalid learning rate: zInvalid lr_decay value: zInvalid weight_decay value: z)Invalid initial_accumulator_value value: zInvalid epsilon value: )	r   r   r   r   r   r   r   r   r   z)`fused` does not support `differentiable`z0`fused` and `foreach` cannot be `True` together.Tr   r   © ©Úis_fused)ÚdtypeÚdevice©r%   Ústep)Úmemory_formatÚsum)Ú
isinstancer   ÚnumelÚ
ValueErrorÚsuperÚ__init__ÚRuntimeErrorÚ"_need_device_dtype_check_for_fusedÚparam_groupsÚstateÚtorchÚzerosr
   r&   ÚtensorÚ
is_complexÚcomplexÚ	full_likeÚpreserve_format)Úselfr   r   r   r   r   r   r   r   r   r   ÚdefaultsÚgroupÚpr3   Ú
init_valueÚ	__class__s                   €úh/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/torch/optim/adagrad.pyr/   zAdagrad.__init__   sÎ  ø€ ô �bœ&Ô! b§h¡h£j°A¢oÜÐ:Ó;Ð;Ø�bŠyÜÐ6°r°dÐ;Ó<Ð<Ø�hŠÜÐ7¸°zÐBÓCÐCØ�lÒ"ÜÐ;¸L¸>ÐJÓKÐKØÐ/Ò/ÜØ;Ð<UÐ;VÐWóð ð �cŠzÜÐ6°s°eÐ<Ó=Ð=ð Ø ØØ(Ø)BØØ Ø,Øñ

ˆô 	‰Ñ˜ Ô*áÙÜ"Ð#NÓOÐOÙÜ"Ð#UÓVÐVØ6:ˆDÔ3à×&Ô&ˆEØ˜8”_�ØŸ
™
 1™�ð ˜W’~ô —K‘KØÜ/¸¸w¹ÔHØ Ÿx™xõô Ÿ™ cÔ1BÓ1DÔEð �f‘ô ×'Ñ'¨Ô*ô Ð5Ð7PÔQà2ð ô
  %Ÿ™Ø�z´×1FÑ1Fô ��e’ñ! %ñ 'ó    c                 óê  •— t         ‰| �  |«       d }| j                  D ]J  }|j                  dd «       |j                  dd«       |j                  dd«       |j                  dd «      }ŒL t	        | j
                  j                  «       «      }t        |«      dk7  xr t        j                  |d   d   «      }|s8|D ]2  }t        j                  t        |d   «      t        |¬«      ¬	«      |d<   Œ4 y y )
Nr   r   Fr   r   r   r(   r#   r'   )r.   Ú__setstate__r2   Ú
setdefaultÚlistr3   ÚvaluesÚlenr4   Ú	is_tensorr6   Úfloatr
   )r;   r3   r   r=   Ústate_valuesÚstep_is_tensorÚsr@   s          €rA   rD   zAdagrad.__setstate__b   sè   ø€ Ü‰Ñ˜UÔ#ð ˆØ×&Ô&ˆEØ×Ñ˜Y¨Ô-Ø×Ñ˜Z¨Ô/Ø×ÑÐ-¨uÔ5Ø×$Ñ$ W¨dÓ3‰Eð	 'ô ˜DŸJ™J×-Ñ-Ó/Ó0ˆÜ˜lÓ+¨qÑ0ò 
´e·o±oØ˜‰O˜FÑ#ó7
ˆñ Û!�Ü!ŸL™LÜ˜!˜F™)Ó$Ô,=ÀuÔ,Mô��&’	ñ "ð rB   c                 ó~   — | j                   D ].  }|d   D ]$  }| j                  |   }|d   j                  «        Œ& Œ0 y)z6Calls tensor.share_memory_() on the state sum tensors.r   r*   N)r2   r3   Úshare_memory_)r;   r=   r>   r3   s       rA   Úshare_memoryzAdagrad.share_memoryw   s=   € à×&Ô&ˆEØ˜8”_�ØŸ
™
 1™�Ø�e‘×*Ñ*Õ,ñ %ñ 'rB   c                 ó¶  — d\  }}|d   D ]É  }|j                   €Œ|d   r!t        | dd«      rt        |d¬«       d| _        ||j                   j                  z  }|t        j                  |«      z  }|j                  |«       |j                  |j                   «       | j                  |   }	|j                  |	d   «       |j                  |	d	   «       ŒË ||fS )
N)FFr   r   r1   T)Úcuda_unsupportedFr*   r(   )	ÚgradÚgetattrr   r1   Ú	is_sparser4   r7   Úappendr3   )
r;   r=   Úparams_with_gradÚgradsÚ
state_sumsÚstate_stepsÚhas_sparse_gradÚhas_complexr>   r3   s
             rA   Ú_init_groupzAdagrad._init_group~   sÔ   € Ø'3Ñ$ˆ˜Ø�x”ˆAØ�v‰vÑ!Ø˜’>¤gØØ8Øô'ô
 2°!ÀdÕKØ>C�DÔ;Ø 1§6¡6×#3Ñ#3Ñ3�Øœu×/Ñ/°Ó2Ñ2�Ø ×'Ñ'¨Ô*Ø—‘˜QŸV™VÔ$ØŸ
™
 1™�Ø×!Ñ! %¨¡,Ô/Ø×"Ñ" 5¨¡=Õ1ð !ð"  Ð+Ð+rB   c                 ób  — d}|�$t        j                  «       5   |«       }ddd«       | j                  D ]k  }g }g }g }g }| j                  |||||«      \  }}	t	        |||||d   |d   |d   |d   ||d   |d   |d   |	|d	   t        | d
d«      t        | dd«      ¬«       Œm |S # 1 sw Y   Œ…xY w)z°Perform a single optimization step.

        Args:
            closure (Callable, optional): A closure that reevaluates the model
                and returns the loss.
        Nr   r   r   r   r   r   r   r   Ú
grad_scaleÚ	found_inf)r   r   r   r   r[   r   r   r   r\   r   r_   r`   )r4   Úenable_gradr2   r]   r   rT   )
r;   ÚclosureÚlossr=   rW   rX   rY   rZ   r[   r\   s
             rA   r(   zAdagrad.step“   sò   € ð ˆàÐÜ×"Ñ"Õ$Ù“y�÷ %ð ×&Ô&ˆEØ-/ÐØ"$ˆEØ')ˆJØ(*ˆKà+/×+;Ñ+;ØÐ'¨°
¸Kó,Ñ(ˆO˜[ô Ø ØØØØ˜‘;Ø" >Ñ2Ø˜zÑ*Ø˜%‘LØ /Ø˜iÑ(Ø˜zÑ*Ø$Ð%5Ñ6Ø'Ø˜G‘nÜ" 4¨°tÓ<Ü! $¨°TÓ:ö!ð 'ð: ˆ÷A %Ð$ús   ™B%Â%B.)g{®Gáz„?r   r   r   g»½×Ùß|Û=N)r    N©N)Ú__name__Ú
__module__Ú__qualname__r   rJ   r   Úboolr/   rD   rP   r]   r   r(   Ú__classcell__)r@   s   @rA   r   r      sÕ   ø„ ð "ØØØ+,ØØ#ðDð Ø$Ø!òDàðDð �F‰NðDð ð	Dð
 ðDð $)ðDð ðDð ˜‘ðDð ðDð ðDð �d‰{ðDð 
õDôLó*-ò,ð* "ò*ó "ô*rB   a[  Implements Adagrad algorithm.

    .. math::
       \begin{aligned}
            &\rule{110mm}{0.4pt}                                                                 \\
            &\textbf{input}      : \gamma \text{ (lr)}, \: \theta_0 \text{ (params)}, \: f(\theta)
                \text{ (objective)}, \: \lambda \text{ (weight decay)},                          \\
            &\hspace{12mm}    \tau \text{ (initial accumulator value)}, \: \eta\text{ (lr decay)}\\
            &\textbf{initialize} :  state\_sum_0 \leftarrow \tau                          \\[-1.ex]
            &\rule{110mm}{0.4pt}                                                                 \\
            &\textbf{for} \: t=1 \: \textbf{to} \: \ldots \: \textbf{do}                         \\
            &\hspace{5mm}g_t           \leftarrow   \nabla_{\theta} f_t (\theta_{t-1})           \\
            &\hspace{5mm} \tilde{\gamma}    \leftarrow \gamma / (1 +(t-1) \eta)                  \\
            &\hspace{5mm} \textbf{if} \: \lambda \neq 0                                          \\
            &\hspace{10mm} g_t \leftarrow g_t + \lambda \theta_{t-1}                             \\
            &\hspace{5mm}state\_sum_t  \leftarrow  state\_sum_{t-1} + g^2_t                      \\
            &\hspace{5mm}\theta_t \leftarrow
                \theta_{t-1}- \tilde{\gamma} \frac{g_t}{\sqrt{state\_sum_t}+\epsilon}            \\
            &\rule{110mm}{0.4pt}                                                          \\[-1.ex]
            &\bf{return} \:  \theta_t                                                     \\[-1.ex]
            &\rule{110mm}{0.4pt}                                                          \\[-1.ex]
       \end{aligned}

    For further details regarding the algorithm we refer to `Adaptive Subgradient Methods for Online Learning
    and Stochastic Optimization`_.
    z
    Args:
        aÙ  
        lr (float, Tensor, optional): learning rate (default: 1e-2)
        lr_decay (float, optional): learning rate decay (default: 0)
        weight_decay (float, optional): weight decay (L2 penalty) (default: 0)
        initial_accumulator_value (float, optional): initial value of the
            sum of squares of gradients (default: 0)
        eps (float, optional): term added to the denominator to improve
            numerical stability (default: 1e-10)
        z	
        aÒ  
        fused (bool, optional): whether the fused implementation (CPU only) is used.
            Currently, `torch.float64`, `torch.float32`, `torch.float16`, and `torch.bfloat16`
            are supported. (default: None). Please note that the fused implementations does not
            support sparse or complex gradients.
    .. _Adaptive Subgradient Methods for Online Learning and Stochastic
        Optimization: http://jmlr.org/papers/v12/duchi11a.html

    r   rX   rY   rZ   r   r_   r`   r[   r   r   r\   r   r   r   r   r   r    c                óø  — t        d„ |D «       «      st        d«      ‚|€|€t        | |	d¬«      \  }}|€d}|€d}|r)t        j                  j                  «       rt        d«      ‚|r)t        j                  j                  «       rt        d«      ‚|r%t        j                  j                  «       st        }n-|r%t        j                  j                  «       st        }nt        } || ||||||||||	|
||¬«       y)	ztFunctional API that performs Adagrad algorithm computation.

    See :class:`~torch.optim.Adagrad` for details.
    c              3   óP   K  — | ]  }t        |t        j                  «      –— Œ  y ­wrd   )r+   r4   r   )Ú.0Úts     rA   Ú	<genexpr>zadagrad.<locals>.<genexpr>  s   è ø€ Ð@±K¨qŒz˜!œUŸ\™\×*±Kùs   ‚$&zPAPI has changed, `state_steps` argument must contain a list of singleton tensorsNF)Ú	use_fusedz6torch.jit.script not supported with foreach optimizersz4torch.jit.script not supported with fused optimizers©
r   r   r   r   r[   r   r   r\   r_   r`   )	Úallr0   r   r4   ÚjitÚis_scriptingÚ_fused_adagradÚ_multi_tensor_adagradÚ_single_tensor_adagrad)r   rX   rY   rZ   r   r_   r`   r[   r   r   r\   r   r   r   r   r   Ú_Úfuncs                     rA   r   r   ô   sù   € ô2 Ñ@±KÓ@Ô@ÜØ^ó
ð 	
ð €}˜˜Ü1Ø�N¨eô
‰
ˆˆ7ð €}ØˆØ€Øˆá”5—9‘9×)Ñ)Ô+ÜÐSÓTÐTÙ”—‘×'Ñ'Ô)ÜÐQÓRÐRá”U—Y‘Y×+Ñ+Ô-Ü‰Ù	œŸ™×/Ñ/Ô1Ü$‰ä%ˆáØØØØØØ!ØØØ'ØØ%ØØØörB   c                 óP   — | j                  «       }t        j                  |||«      S rd   )Úsizer4   Úsparse_coo_tensor)rS   Úgrad_indicesrG   rz   s       rA   Ú_make_sparser}   >  s"   € Ø�9‰9‹;€DÜ×"Ñ" <°¸Ó>Ð>rB   c          
      óª  — |€|�t        d«      ‚t        j                  j                  «       st	        |«      }t        | |||d¬«      D �]  \  }}}}|dz  }t        |«      }|s|n| }|dk7  r*|j                  rt        d«      ‚|j                  ||¬«      }|d|dz
  |z  z   z  }|j                  r½|j                  «       }|j                  «       }|j                  «       }|j                  t        |||j                  d«      «      «       |j!                  |«      }|j                  «       j#                  «       j                  |	«      }|j                  t        ||||z  «      | ¬«       �Œ&t        j$                  |«      }|r?t        j&                  |«      }t        j&                  |«      }t        j&                  |«      }|j)                  ||d¬	«       |r|j+                  «       |	z   }n|j+                  «       j                  |	«      }|j-                  ||| ¬	«       |s�ŒÞt        j.                  |«      }t        j.                  |«      }�Œ
 y )
Nú,Expected grad_scale and found_inf to be NoneT)Ústrictr   r   z;weight_decay option is not compatible with sparse gradients©Úalphaé   ©Úvalue)ÚAssertionErrorr4   rr   rs   r   Úzipr   rU   r0   ÚaddÚcoalesceÚ_indicesÚ_valuesÚadd_r}   ÚpowÚsparse_maskÚsqrt_r7   Úview_as_realÚaddcmul_ÚsqrtÚaddcdiv_Úview_as_complex)r   rX   rY   rZ   r_   r`   r   r   r   r   r[   r   r   r\   ÚparamrS   Ú	state_sumÚstep_tr(   Úclrr|   Úgrad_valuesÚstdÚ
std_valuesr7   s                            rA   rv   rv   C  s!  € ð" Ð Ð!6ÜÐKÓLÐLä�9‰9×!Ñ!Ô#Ü˜‹^ˆä*-Ø��z ;°t÷+ð +Ñ&ˆˆt�Y ð 	�!‰ˆÜ˜&Ó!ˆÙ#‰t¨$¨ˆà˜1ÒØ�~Š~Ü"ØQóð ð —8‘8˜E¨�8Ó6ˆDà�A˜ ™ XÑ-Ñ-Ñ.ˆà�>Š>Ø—=‘=“?ˆDØŸ=™=›?ˆLØŸ,™,›.ˆKà�N‰Nœ<¨¨l¸K¿O¹OÈAÓ<NÓOÔPØ×'Ñ'¨Ó-ˆCØŸ™›×,Ñ,Ó.×3Ñ3°CÓ8ˆJØ�J‰JÜ˜T <°¸zÑ1IÓJÐSVÐRVð ö ô ×)Ñ)¨%Ó0ˆJÙÜ×)Ñ)¨$Ó/�Ü!×.Ñ.¨yÓ9�	Ü×*Ñ*¨5Ó1�Ø×Ñ˜t T°ÐÔ3ÙØ—n‘nÓ&¨Ñ,‘à—n‘nÓ&×+Ñ+¨CÓ0�Ø�N‰N˜4 ¨S¨DˆNÔ1ÛÜ×-Ñ-¨eÓ4�Ü!×1Ñ1°)Ó<’	ñU+rB   c                ó  — |rt        d«      ‚|€|�t        d«      ‚t        | «      dk(  ry t        |«      }t        j                  | |||g«      }|j                  «       D �]  \  \  }}}}}t        t        t           |«      }t        t        t           |«      }t        t        t           |«      }t        t        t           |«      }|
xr t        d„ |D «       «      }|rt        ||||||||	d|||||¬«       Œš|rt        |||«       |rt        j                  |«      }t        j                  j                  «       s=|d   j                   r.t        j"                  |t        j$                  dd¬	«      d¬
«       nt        j"                  |d«       |dk7  r3|rt        j"                  |||¬
«       nt        j&                  |||¬
«      }|D �cg c]  }| dt)        |«      dz
  |z  z   z  ‘Œ }}t        j*                  |||d¬«       t        j,                  |«      }t        j"                  ||	«       |dk7  s|rt        j.                  ||«       |}nt        j0                  ||«      }t        j2                  |||«       �Œ! y c c}w )Nz#_foreach ops don't support autogradr   r   c              3   ó4   K  — | ]  }|j                   –— Œ y ­wrd   )rU   )rl   rS   s     rA   rn   z(_multi_tensor_adagrad.<locals>.<genexpr>±  s   è ø€ ð 9
Ù'3˜tˆD�N�N¡|ùs   ‚Trp   g      ð?Úcpu)r&   r�   r   r„   )r†   rH   r   r   Ú"_group_tensors_by_device_and_dtyperG   r   rF   r   Úanyrv   r   r4   Ú_foreach_negÚcompilerÚis_compilingÚis_cpuÚ_foreach_add_r6   Ú_foreach_addr   Ú_foreach_addcmul_Ú_foreach_sqrtÚ_foreach_mul_Ú_foreach_mulÚ_foreach_addcdiv_)r   rX   rY   rZ   r_   r`   r   r   r   r   r[   r   r   r\   Úgrouped_tensorlistsÚdevice_params_Údevice_grads_Údevice_state_sums_Údevice_state_steps_rw   Údevice_paramsÚdevice_gradsÚdevice_state_sumsÚdevice_state_stepsÚdevice_has_sparse_gradr(   Ú	minus_clrrš   Ú	numerators                                rA   ru   ru   ‡  s—  € ñ" ÜÐBÓCÐCØÐ Ð!6ÜÐKÓLÐLô ˆ6ƒ{�aÒØä	�B‹€Bä#×FÑFØ	�˜
 KÐ0óÐð  ×&Ñ&×(ñ		ñ 	ØØØØØÜœT¤&™\¨>Ó:ˆÜœD¤™L¨-Ó8ˆÜ ¤¤f¡Ð/AÓBÐÜ!¤$¤v¡,Ð0CÓDÐà!0ò "
´Sñ 9
Ù'3ó9
ó 6
Ðñ "Ü"ØØØ!Ø"ØØ)Ø!ØØ $Ø!Ø-Ø'Ø%Ø#õð  ñ Ü˜-¨Ð7HÔIáÜ ×-Ñ-¨lÓ;ˆLô �~‰~×*Ñ*Ô,Ð1CÀAÑ1F×1MÒ1MÜ×ÑØ"¤E§L¡L°¸UÔ$CÈ3öô ×ÑÐ 2°AÔ6à˜1ÒáÜ×#Ñ# L°-À|ÖTä$×1Ñ1Ø  -°|ô �ñ
 GYó
ÙFX¸dˆRˆC�1œ
 4Ó(¨1Ñ,°Ñ8Ñ8Ó9ÐFXð 	ð 
ô 	×ÑÐ 1°<ÀÐUVÕWä×!Ñ!Ð"3Ó4ˆÜ×Ñ˜C Ô%à˜1Ò¡ä×Ñ ¨iÔ8Ø$‰Iä×*Ñ*¨<¸ÓCˆIä×Ñ ¨y¸#Ö>ñQ )ùòp
s   ÇJc                ó"  — | sy |
s|rt        d«      ‚|rt        d«      ‚t        |«      }|�|j                  |ind }|�|j                  |ind }t        j                  | |||g«      }|j                  «       D �]  \  \  }}\  \  }}}}}t        t        t           |«      }t        t        t           |«      }t        t        t           |«      }t        t        t           |«      }d\  }}|�!|�||vr|j                  |d¬«      ||<   ||   }|�!|�||vr|j                  |d¬«      ||<   ||   }t        j                  |d«       t        j                  ||||||||	|||¬«       |€Œòt        j                  ||gt        |«      z  «       �Œ y )Nz5`fused` does not support sparse grad or complex paramz<adagrad with fused=True does not support differentiable=True)NNT)Únon_blockingr   )r   r   r   r   r   r_   r`   )r0   r   r&   r   rŸ   Úitemsr   rF   r   Útor4   r¥   Ú_fused_adagrad_Ú_foreach_sub_rH   )r   rX   rY   rZ   r_   r`   r   r   r   r   r[   r   r   r\   Úgrad_scale_dictÚfound_inf_dictÚgrouped_tensorsr&   rw   r­   r®   r¯   r°   r±   r²   r³   r´   Údevice_grad_scaleÚdevice_found_infs                                rA   rt   rt   ö  sç  € ñ" ØÙ™+ÜÐRÓSÐSáÜØJó
ð 	
ô 
�B‹€Bð ,6Ð+Aˆ×	Ñ	˜JÑ'Àtð ð 7@Ð6K�i×&Ñ&¨	Ñ2ÐQU€Nä×BÑBØ	�˜
 KÐ0ó€Oð 
×	Ñ	×	 ñ	‰ˆ�ñ ñ	
ØØØØà	äœT¤&™\¨>Ó:ˆÜœD¤™L¨-Ó8ˆÜ ¤¤f¡Ð/AÓBÐÜ!¤$¤v¡,Ð0CÓDÐà.8Ñ+ÐÐ+ØÐ! oÐ&AØ˜_Ñ,Ø*4¯-©-¸ÈT¨-Ó*R� Ñ'Ø /°Ñ 7ÐØÐ  ^Ð%?Ø Ñ.Ø)2¯©°fÈ4¨Ó)P�˜vÑ&Ø-¨fÑ5ÐÜ×ÑÐ.°Ô2Ü×ÑØØØØØØØ%ØØØ(Ø&õ	
ð Ñ'Ü×ÑØ"Ð%5Ð$6¼Ð=OÓ9PÑ$Pöñ= 
!rB   )NNNFNFF)Útypingr   r4   r   Ú	optimizerr   r   r   r	   r
   r   r   r   r   r   r   r   r   Ú__all__r   Ú__doc__rF   rh   rJ   r   r}   rv   ru   rt   r"   rB   rA   Ú<module>rÇ      s¿  ðå ã Ý ÷÷ ÷ õ ð" �iÐ
 €ôcˆiô cðNð4	à	ˆð 	ð 
ˆð 	Ø	ˆð 	Ø	Ðð ðñ5.ð „ðp Ø $Ø#ð "ØØ ØñGØ�‰LðGà�‰<ðGð �V‘ðGð �f‘ð	Gð
 �$‰;ðGð ˜‘ðGð ˜‰}ðGð ðGð �D‰[ðGð ðGð ðGð 	ðGð  ð!Gð" ð#Gð$ 
ð%Gð& ð'Gð( 
ó)GòT?ð
A=Ø�‰LðA=à�‰<ðA=ð �V‘ðA=ð �f‘ð	A=ð
 ˜‘ðA=ð ˜‰}ðA=ð 	ðA=ð ðA=ð ðA=ð 
ðA=ð ðA=ð ðA=ð ðA=ð ðA=ð  
ó!A=ðHl?Ø�‰Lðl?à�‰<ðl?ð �V‘ðl?ð �f‘ð	l?ð
 ˜‘ðl?ð ˜‰}ðl?ð 	ðl?ð ðl?ð ðl?ð 
ðl?ð ðl?ð ðl?ð ðl?ð ðl?ð  
ó!l?ð^MØ�‰LðMà�‰<ðMð �V‘ðMð �f‘ð	Mð
 ˜‘ðMð ˜‰}ðMð 	ðMð ðMð ðMð 
ðMð ðMð ðMð ðMð ðMð  
ô!MrB   