Ë
    S²j‹Y  ã            #       ó€  — 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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ez  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Ú
DeviceDictÚ	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          
      óD  •— 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| _        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-elementç        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Ú_step_supports_amp_scalingÚ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Úpr8   Ú
init_valueÚ	__class__s                   €úR/var/www/html/ia-enhanced/venv/lib/python3.12/site-packages/torch/optim/adagrad.pyr3   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Ø.2ˆDÔ+à×&Ñ&ò 	ˆEØ˜8‘_ò �ØŸ
™
 1™�ð ˜W’~ô —K‘KØÜ/¸¸w¹ÔHØ Ÿx™xõô Ÿ™ cÔ1BÓ1DÔEð �f‘ô ×'Ñ'¨Ô*ô Ð5Ð7PÔQà2ð ô
  %Ÿ™Ø�z´×1FÑ1Fô ��e’ñ!ñ	ó    c                 óH  •— t         ‰
| �  |«       d }| j                  D ]ù  }|j                  dd «       |j                  dd«       |j                  dd«       |j                  dd «      }|d   D ]§  }| j                  j                  |g «      }t        |«      dk7  sŒ.t        j                  |d   «      rŒGt        |d   «      }|d   r,t        j                  |t        |¬	«      |j                  ¬
«      nt        j                  |t        «       ¬«      |d<   Œ© Œû 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'   r*   )r2   Ú__setstate__r7   Ú
setdefaultr8   ÚgetÚlenr9   Ú	is_tensorÚfloatr;   r
   r)   ÚlistÚvalues)r@   r8   r   rB   rC   Úp_stateÚstep_valÚstate_valuesÚstep_is_tensorÚsrE   s             €rF   rI   zAdagrad.__setstate__d   sˆ  ø€ Ü‰Ñ˜UÔ#ð ˆØ×&Ñ&ò 	ˆEØ×Ñ˜Y¨Ô-Ø×Ñ˜Z¨Ô/Ø×ÑÐ-¨uÔ5Ø×$Ñ$ W¨dÓ3ˆEà˜8‘_ò �ØŸ*™*Ÿ.™.¨¨BÓ/�Ü�w“< 1Ó$¬U¯_©_¸WÀV¹_Õ-MÜ$ W¨V¡_Ó5�Hð ! š>ô Ÿ™Ø$Ü"3¸UÔ"CØ#$§8¡8õô #Ÿ\™\¨(Ô:KÓ:MÔNð ˜F’Oñ	ð	ô( ˜DŸJ™J×-Ñ-Ó/Ó0ˆÜ˜lÓ+¨qÑ0ò 
´e·o±oØ˜‰O˜FÑ#ó7
ˆñ Ø!ò �Ü!ŸL™LÜ˜!˜F™)Ó$Ô,=ÀuÔ,Mô��&’	ñð rG   c                 ó~   — | j                   D ].  }|d   D ]$  }| j                  |   }|d   j                  «        Œ& Œ0 y)z6Calls tensor.share_memory_() on the state sum tensors.r   r.   N)r7   r8   Úshare_memory_)r@   rB   rC   r8   s       rF   Úshare_memoryzAdagrad.share_memory‡   sG   € à×&Ñ&ò 	-ˆEØ˜8‘_ò -�ØŸ
™
 1™�Ø�e‘×*Ñ*Õ,ñ-ñ	-rG   c                 óT  — d\  }}|d   D �]—  }|j                   €Œ|d   rt        | dd«      rt        |«       d| _        ||j                   j                  z  }|t        j                  |«      z  }|j                  |«       |j                  |j                   «       | j                  |   }	t        |	«      dk(  rÁ|d   rt        |«       |d   r/t        j                  dt        |d   ¬	«      |j                  ¬
«      nt        j                  dt        «       ¬«      |	d<   | j                  d   }
t        j                  |«      rt        |
|
«      n|
}t        j                   ||t
        j"                  ¬«      |	d<   |j                  |	d   «       |j                  |	d   «       �Œš ||fS )N)FFr   r   r5   TFr   r$   r%   r'   r#   r*   r+   r   r,   r.   )ÚgradÚgetattrr   r5   Ú	is_sparser9   r<   Úappendr8   rL   r:   r
   r)   r;   rA   r=   r>   r?   )r@   rB   Úparams_with_gradÚgradsÚ
state_sumsÚstate_stepsÚhas_sparse_gradÚhas_complexrC   r8   r   rD   s               rF   Ú_init_groupzAdagrad._init_groupŽ   sš  € Ø'3Ñ$ˆ˜Ø�x‘ó (	2ˆAØ�v‰vÑ!Ø˜’>¤gØØ8Øô'ô
 2°!Ô4Ø>C�DÔ;Ø 1§6¡6×#3Ñ#3Ñ3�Øœu×/Ñ/°Ó2Ñ2�Ø ×'Ñ'¨Ô*Ø—‘˜QŸV™VÔ$ØŸ
™
 1™�Ü�u“: ’?Ø˜W’~Ü5°aÔ8ð ! š>ô Ÿ™ØÜ"3¸UÀ7¹^Ô"LØ#$§8¡8õô #Ÿ\™\¨#Ô5FÓ5HÔIð ˜&‘Mð 15·±Ø3ñ1Ð-ô
 !×+Ñ+¨AÔ.ô  Ð 9Ð;TÔUà6ð ô
 $)§?¡?Ø˜:´U×5JÑ5Jô$�E˜%‘Lð ×!Ñ! %¨¡,Ô/Ø×"Ñ" 5¨¡=Ö1ðQ(	2ðT  Ð+Ð+rG   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   rb   r    r   r   rc   r   rf   rg   )r9   Úenable_gradr7   rd   r   r[   )
r@   ÚclosureÚlossrB   r^   r_   r`   ra   rb   rc   s
             rF   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   rN   r   Úboolr3   rI   rX   rd   r   r+   Ú__classcell__)rE   s   @rF   r   r      s×   ø„ ð "ØØØ+,ØØ#ðEð Ø$Ø!òEàðEð �F‰NðEð ð	Eð
 ðEð $)ðEð ðEð ˜‘ðEð ðEð ðEð �d‰{ðEð 
õEôN!óF-ò,,ð\ "ò*ó "ô*rG   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 and CUDA 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   r_   r`   ra   r   rf   rg   rb   r    r   rc   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rk   )r/   r9   r   )Ú.0Úts     rF   ú	<genexpr>zadagrad.<locals>.<genexpr>6  s   è ø€ Ò@¨qŒz˜!œUŸ\™\×*Ñ@ù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   rb   r   r   rc   rf   rg   )	Úallr4   r   r9   ÚjitÚis_scriptingÚ_fused_adagradÚ_multi_tensor_adagradÚ_single_tensor_adagrad)r   r_   r`   ra   r   rf   rg   rb   r    r   rc   r   r   r   r   r   Ú_Úfuncs                     rF   r   r     sù   € ô2 Ñ@°KÔ@Ô@ÜØ^ó
ð 	
ð €}˜˜Ü1Ø�N¨eô
‰
ˆˆ7ð €}ØˆØ€Øˆá”5—9‘9×)Ñ)Ô+ÜÐSÓTÐTÙ”—‘×'Ñ'Ô)ÜÐQÓRÐRá”U—Y‘Y×+Ñ+Ô-Ü‰Ù	œŸ™×/Ñ/Ô1Ü$‰ä%ˆáØØØØØØ!ØØØ'ØØ%ØØØörG   c                 óP   — | j                  «       }t        j                  |||«      S rk   )Úsizer9   Úsparse_coo_tensor)rZ   Úgrad_indicesrP   r�   s       rF   Ú_make_sparser„   g  s"   € Ø�9‰9‹;€DÜ×"Ñ" <°¸Ó>Ð>rG   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)ÚAssertionErrorr9   ry   rz   r   Úzipr   r\   r4   ÚaddÚcoalesceÚ_indicesÚ_valuesÚadd_r„   ÚpowÚsparse_maskÚsqrt_r<   Úview_as_realÚaddcmul_ÚsqrtÚaddcdiv_Úview_as_complex)r   r_   r`   ra   rf   rg   r   r   r   r   rb   r   r   rc   ÚparamrZ   Ú	state_sumÚstep_tr+   Úclrrƒ   Úgrad_valuesÚstdÚ
std_valuesr<   s                            rF   r}   r}   l  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*=rG   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rk   )r\   )rs   rZ   s     rF   ru   z(_multi_tensor_adagrad.<locals>.<genexpr>Ú  s   è ø€ ò 9
Ø#ˆD�N�Nñ9
ùs   ‚Trw   g      ð?Úcpu)r)   rˆ   r   r‹   )r�   rL   r   r   Ú"_group_tensors_by_device_and_dtyperP   r   rO   r   Úanyr}   r   r9   Ú_foreach_negÚcompilerÚis_compilingÚis_cpuÚ_foreach_add_r;   Ú_foreach_addr   Ú_foreach_addcmul_Ú_foreach_sqrtÚ_foreach_mul_Ú_foreach_mulÚ_foreach_addcdiv_)r   r_   r`   ra   rf   rg   r   r   r   r   rb   r   r   rc   Úgrouped_tensorlistsÚdevice_params_Údevice_grads_Údevice_state_sums_Údevice_state_steps_r~   Údevice_paramsÚdevice_gradsÚdevice_state_sumsÚdevice_state_stepsÚdevice_has_sparse_gradr+   Ú	minus_clrr¡   Ú	numerators                                rF   r|   r|   °  s›  € ñ" ÜÐBÓCÐCØÐ Ð!6ÜÐKÓLÐLô ˆ6ƒ{�aÒØä	�B‹€Bä#×FÑFØ	�˜
 KÐ0óÐð  ×&Ñ&Ó(óM?ñ 		ñ 	ØØØØØÜœ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ö
Ø>BˆRˆC�1œ
 4Ó(¨1Ñ,°Ñ8Ñ8Ó9ð
ˆ	ð 
ô 	×ÑÐ 1°<ÀÐUVÕWä×!Ñ!Ð"3Ó4ˆÜ×Ñ˜C Ô%à˜1Ò¡ä×Ñ ¨iÔ8Ø$‰Iä×*Ñ*¨<¸ÓCˆIä×Ñ ¨y¸#Ö>ñ[M?ùòz
s   ÇJc                óÈ  — | sy |
s|rt        d«      ‚|rt        d«      ‚|�|j                  |ini }|�|j                  |ini }t        |t        «      r&t	        |j                  «      dk7  r|j                  |ind }t        j                  | |||g«      }|j                  «       D �]:  \  \  }}\  \  }}}}}t        t        t           |«      }t        t        t           |«      }t        t        t           |«      }t        t        t           |«      }d\  }}|�#|j                  ||j                  |d¬«      «      }|�#|j                  ||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=Truer¥   )NNT)Únon_blocking)r)   rÀ   r   )r   r   r   r   r   rf   rg   )r4   r)   r/   r   Ústrr   r¦   Úitemsr   rO   rJ   Útor9   r¬   Ú_fused_adagrad_Ú_foreach_sub_rL   )r   r_   r`   ra   rf   rg   r   r   r   r   rb   r   r   rc   Úgrad_scale_dictÚfound_inf_dictÚlr_dictÚgrouped_tensorsr)   r~   r´   rµ   r¶   r·   r¸   r¹   rº   r»   Údevice_grad_scaleÚdevice_found_infs                                 rF   r{   r{     s*  € ñ" ØÙ™+ÜÐRÓSÐSáÜØJó
ð 	
ð
 ,6Ð+Aˆ×	Ñ	˜JÑ'Àrð ð *3Ð)>ˆ×	Ñ	˜9Ñ%ÀBð ô & b¬&Ô1´c¸"¿)¹)³nÈÒ6Mˆ�‰�B‰ÐSWð ô  ×BÑBØ	�˜
 KÐ0ó€Oð 
×	Ñ	Ó	 ó+ñ 	‰ˆ�ñ ñ	
ØØØØà	äœT¤&™\¨>Ó:ˆÜœD¤™L¨-Ó8ˆÜ ¤¤f¡Ð/AÓBÐÜ!¤$¤v¡,Ð0CÓDÐà.8Ñ+ÐÐ+ØÐ!Ø /× :Ñ :Ø˜
Ÿ™ f¸4˜Ó@ó!Ðð Ð Ø-×8Ñ8Ø˜	Ÿ™ V¸$˜Ó?ó Ðð Ð 6°Ñ#8Ø Ÿe™e¨6À˜eÓEˆG�F‰OØ˜‘ˆBÜ×ÑÐ.°Ô2Ü×ÑØØØØØØØ%ØØØ(Ø&õ	
ð Ò'Ü×ÑØ"Ð%5Ð$6¼Ð=OÓ9PÑ$PöñS+rG   )NNNFNFF)Útypingr   r9   r   Ú	optimizerr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   Ú__all__r   Ú__doc__rO   ro   rN   r   r„   r}   r|   r{   r$   rG   rF   ú<module>rÐ      sÃ  ðå ã Ý ÷÷ ÷ ÷ ð$ �iÐ
 €ôKˆiô Kð^ð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?ð^SØ�‰LðSà�‰<ðSð �V‘ðSð �f‘ð	Sð
 ˜‘ðSð ˜‰}ðSð 	�‰ðSð ðSð ðSð 
ðSð ðSð ðSð ðSð ðSð  
ô!SrG   