§
    ñyIf¯?  ã                  ó   — U d Z ddlmZ ddlZddl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 dd	lmZmZ dd
l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m Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z' ddl(m)Z)m*Z* ddhZ+h d£Z,de-d<   ddhZ.de-d<   dZ/ e0 e1edg ¦  «        ¦  «        Z2 e3d¦  «        Z4dZ5d;d„Z6	 d<d=d#„Z7d;d$„Z8	 d<d>d'„Z9d?d)„Z:	 d<d@d+„Z;	 d<dAd-„Z<dBd.„Z=dCd0„Z>	 d<dDd1„Z?dBd2„Z@	 d<dDd3„ZAdBd4„ZB	 d<dEd6„ZCd7„ ZDdFd:„ZEdS )Gz$Astroid hooks for typing.py support.é    )ÚannotationsN)ÚIterator)Úpartial)ÚFinal)ÚcontextÚextract_nodeÚinference_tip)Úregister_module_extender)ÚAstroidBuilderÚ_extract_single_node)Ú	PY39_PLUSÚ
PY312_PLUS)ÚAstroidSyntaxErrorÚAttributeInferenceErrorÚInferenceErrorÚUseInferenceDefault)ÚAstroidManager)
ÚAssignÚ
AssignNameÚ	AttributeÚCallÚConstÚ	JoinedStrÚNameÚNodeNGÚ	SubscriptÚTuple)ÚClassDefÚFunctionDefÚTypeVarÚNewType>   útyping.NewTypeútyping.TypeVarútyping_extensions.TypeVarr   ÚTYPING_TYPEVARS_QUALIFIEDztyping.TypedDictztyping_extensions.TypedDictÚTYPING_TYPEDDICT_QUALIFIEDz¦
class Meta(type):
    def __getitem__(self, item):
        return self

    @property
    def __args__(self):
        return ()

class {0}(metaclass=Meta):
    pass
Ú__all__)(ztyping.Hashableztyping.Awaitableztyping.Coroutineztyping.AsyncIterableztyping.AsyncIteratorztyping.Iterableztyping.Iteratorztyping.Reversibleztyping.Sizedztyping.Containerztyping.Collectionztyping.Callableztyping.AbstractSetztyping.MutableSetztyping.Mappingztyping.MutableMappingztyping.Sequenceztyping.MutableSequenceztyping.ByteStringztyping.Tupleztyping.Listztyping.Dequez
typing.Setztyping.FrozenSetztyping.MappingViewztyping.KeysViewztyping.ItemsViewztyping.ValuesViewztyping.ContextManagerztyping.AsyncContextManagerztyping.Dictztyping.DefaultDictztyping.OrderedDictztyping.Counterztyping.ChainMapztyping.Generatorztyping.AsyncGeneratorztyping.Typeztyping.Patternztyping.Matchz?
@classmethod
def __class_getitem__(cls, item):
    return cls
ÚreturnÚboolc                ó    — | j         }t          |t          ¦  «        r|j        t          v S t          |t
          ¦  «        r|j        t          v S dS )NF)ÚfuncÚ
isinstancer   ÚattrnameÚTYPING_TYPEVARSr   Úname)Únoder+   s     úN/var/www/piapp/venv/lib/python3.11/site-packages/astroid/brain/brain_typing.pyÚ$looks_like_typing_typevar_or_newtyper2   q   sL   € ØŒ9€DÝ�$�	Ñ"Ô"ð 0ØŒ}¥Ð/Ð/Ý�$�ÑÔð ,ØŒy�OÐ+Ð+Øˆ5ó    r0   r   Úcontext_ittonúcontext.InferenceContext | NoneúIterator[ClassDef]c                ó\  — 	 t          | j                             |¬¦  «        ¦  «        }n!# t          t          f$ r}t
          |‚d}~ww xY w|                     ¦   «         t          vrt
          ‚| j        st
          ‚t          | j        d         t          ¦  «        rt
          ‚| j        d                              ¦   «                              d¦  «        }	 t          t                               |¦  «        ¦  «        } n# t           $ r}t          |‚d}~ww xY w|                      |¬¦  «        S )z8Infer a typing.TypeVar(...) or typing.NewType(...) call.©r   Nr   ú')Únextr+   Úinferr   ÚStopIterationr   Úqnamer%   Úargsr,   r   Ú	as_stringÚstripr   ÚTYPING_TYPE_TEMPLATEÚformatr   )r0   r4   r+   ÚexcÚtypenames        r1   Úinfer_typing_typevar_or_newtyperE   z   s  € ð+Ý�D”I—O’O¨M�OÑ:Ô:Ñ;Ô;ˆˆøÝ�MÐ*ð +ð +ð +Ý! sÐ*øøøøð+øøøð ‡z‚z�|„|Õ4Ð4Ð4Ý!Ð!ØŒ9ð "Ý!Ð!å�$”)˜A”,¥	Ñ*Ô*ð "Ý!Ð!àŒy˜Œ|×%Ò%Ñ'Ô'×-Ò-¨cÑ2Ô2€Hð&ÝÕ0×7Ò7¸ÑAÔAÑBÔBˆˆøÝð &ð &ð &Ý #Ð%øøøøð&øøøà�:Š:˜mˆ:Ñ,Ô,Ð,s,   ‚(+ «A	¼AÁA	Ã'C> Ã>
DÄDÄDc                óä   — t          | t          ¦  «        r| j        t          v S t          | t          ¦  «        r| j        t          v S t          | t          ¦  «        rt          | j        ¦  «        S dS )zLTry to figure out if a Subscript node *might* be a typing-related subscript.F)	r,   r   r/   ÚTYPING_MEMBERSr   r-   r   Ú_looks_like_typing_subscriptÚvalue©r0   s    r1   rH   rH   “   sg   € å�$�ÑÔð +ØŒy�NÐ*Ð*Ý�$�	Ñ"Ô"ð /ØŒ}¥Ð.Ð.Ý�$�	Ñ"Ô"ð 8Ý+¨D¬JÑ7Ô7Ð7Øˆ5r3   r   Úctxc                ó¬  ‡— 	 t          | j                             ¦   «         ¦  «        Šn!# t          t          f$ r}t
          |‚d}~ww xY w‰                     ¦   «                              d¦  «        r‰                     ¦   «         t          v rt
          ‚t          ‰t          ¦  «        rÅ‰                     ¦   «         dv r¯t          t          ¦  «        }|g‰j        d<   t          | j        t          ¦  «        r\| | j        j        v rNt!          | j        dd¦  «        r8| j        j        }|                     | j        j        ¦  «        �|| j        j        = ˆfd„| _        t+          ‰g¦  «        S t-          t.                               ‰                     ¦   «                              d¦  «        d         ¦  «        ¦  «        } |                      |¬	¦  «        S )
z Infer a typing.X[...] subscript.Nztyping.>   útyping.Genericútyping.Annotatedútyping_extensions.AnnotatedÚ__class_getitem__Ú__cachec                ó$   •— t          ‰g¦  «        S ©N©Úiter)r0   r   rI   s     €r1   ú<lambda>z#infer_typing_attr.<locals>.<lambda>À   s   ø€ ½¸u¸g¹¼€ r3   ú.éÿÿÿÿr8   )r:   rI   r;   r   r<   r   r=   Ú
startswithÚTYPING_ALIASr,   r   r   ÚCLASS_GETITEM_TEMPLATEÚlocalsÚparentÚbasesÚgetattrrQ   ÚgetÚslotsÚ_explicit_inferencerU   r   rA   rB   Úsplit)r0   rK   rC   Úfunc_to_addÚcacherI   s        @r1   Úinfer_typing_attrrf   ž   s§  ø€ ð+Ý�T”Z×%Ò%Ñ'Ô'Ñ(Ô(ˆˆøÝ�MÐ*ð +ð +ð +Ý! sÐ*øøøøð+øøøð �;Š;‰=Œ=×#Ò# IÑ.Ô.ð "°%·+²+±-´-Å<Ð2OÐ2Oå!Ð!å�%�Ñ"Ô"ð  u§{¢{¡}¤}ð 9ð (ð (õ +Õ+AÑBÔBˆØ-8¨MˆŒÐ(Ñ)å�t”{¥HÑ-Ô-ð		-à˜œÔ)Ð)Ð)Ý˜œ Y°Ñ5Ô5ð *ð
 ”KÔ'ˆEØ�yŠy˜œÔ*Ñ+Ô+Ð7Ø˜$œ+Ô+Ð,à#FÐ#FÐ#FÐ#FˆÔ Ý�U�G‰}Œ}ÐåÕ,×3Ò3°E·K²K±M´M×4GÒ4GÈÑ4LÔ4LÈRÔ4PÑQÔQÑRÔR€DØ�:Š:˜cˆ:Ñ"Ô"Ð"s   ƒ&* ªA»AÁAúFunctionDef | ClassDefc                ó8   — |                       ¦   «         t          v S )z'Check if node is TypedDict FunctionDef.)r=   r&   rJ   s    r1   Ú_looks_like_typedDictri   Ç   s   € ð �:Š:‰<Œ<Õ5Ð5Ð5r3   r   c                óV   — t          d¦  «        }|g| j        d<   t          | g¦  «        S )NÚdictÚ__call__)r   r\   rU   )r0   rK   rd   s      r1   Úinfer_old_typedDictrm   Î   s-   € õ ' vÑ.Ô.€KØ*˜m€D„K�
ÑÝ��‰<Œ<Ðr3   r   c                óþ   — t          d| j        | j        | j        | j        | j        ¬¦  «        }|                     t          d¦  «        gg d¬¦  «         t          d¦  «        }|g|j	        d<   t          |g¦  «        S )z,Replace TypedDict FunctionDef with ClassDef.Ú	TypedDict©r/   ÚlinenoÚ
col_offsetr]   Ú
end_linenoÚend_col_offsetrk   N©r^   ÚbodyÚ
decoratorsrl   )r   rq   rr   r]   rs   rt   Úpostinitr   r   r\   rU   )r0   rK   Ú	class_defrd   s       r1   Úinfer_typedDictrz   Ö   s‰   € õ ØØŒ{Ø”?ØŒ{Ø”?ØÔ*ðñ ô €Ið ×Ò�l¨6Ñ2Ô2Ð3¸"ÈÐÑNÔNÐNÝ& vÑ.Ô.€KØ$/ =€IÔ�ZÑ Ý��ÑÔÐr3   c                ó    — t          | j        t          ¦  «        o4| j        j        dv o&t          | j        d         t
          t          f¦  «        S )z³
    Returns True if the node corresponds to a call to _alias function.

    For example :

    MutableSet = _alias(collections.abc.MutableSet, T)

    :param node: call node
    >   Ú_aliasÚ_DeprecatedGenericAliasr   )r,   r+   r   r/   r>   r   rJ   s    r1   Ú_looks_like_typing_aliasr~   è   sI   € õ 	�4”9�dÑ#Ô#ð 	
àŒIŒNÐCÐCð	
õ
 �t”y ”|¥iµÐ%6Ñ7Ô7ðr3   ÚNonec                ó’   — d„ }	 |                       d¦  «         t          || j         ¦  «        }|| _         dS # t          $ r Y dS w xY w)zJDisable the access to __class_getitem__ method for the node in parameters.c                óD   — |dk    rt          d¦  «        ‚ | |g|¢R i |¤ŽS )zŒ
        Raises an AttributeInferenceError in case of access to __class_getitem__ method.
        Otherwise, just call origin_func.
        rP   z'__class_getitem__ access is not allowed)r   )Úorigin_funcÚattrr>   Úkwargss       r1   Úfull_raiserz1_forbid_class_getitem_access.<locals>.full_raiser   s?   € ð
 Ð&Ò&Ð&Ý)Ð*SÑTÔTÐTØˆ{˜4Ð1 $Ð1Ð1Ð1¨&Ð1Ð1Ð1r3   rP   N)r_   r   r   )r0   r…   Úpartial_raisers      r1   Ú_forbid_class_getitem_accessr‡   ý   si   € ð2ð 2ð 2ð	Ø�ŠÐ(Ñ)Ô)Ð)õ
 ! ¨d¬lÑ;Ô;ˆØ%ˆŒˆˆøÝ"ð ð ð Øˆˆðøøøs   …18 ¸
AÁAc                ó®  ‡— t          | j        t          ¦  «        rBt          | j        j        ¦  «        dk    r%t          | j        j        d         t
          ¦  «        st          ‚	 t          | j        d          	                    |¬¦  «        ¦  «        }n/# t          $ r"}t          | j        d         |¬¦  «        |‚d}~ww xY w| j        j        d         }t          |j        |j        |j        | j        |j        |j        ¬¦  «        Št          |t          ¦  «        r‰                     |gg d¬¦  «         | j        d         }t&          st          |t(          ¦  «        r.|j        s't&          r@t          |t,          ¦  «        r+|j        dk    r t1          t2          ¦  «        }|g‰j        d<   nt7          ‰¦  «         ˆfd	„| _        t;          ‰g¦  «        S )
a
  
    Infers the call to _alias function
    Insert ClassDef, with same name as aliased class,
    in mro to simulate _GenericAlias.

    :param node: call node
    :param context: inference context

    # TODO: evaluate if still necessary when Py3.12 is minimum
    é   r   r8   ©r0   r   Nrp   ru   rP   c                ó$   •— t          ‰g¦  «        S rS   rT   ©r0   r   ry   s     €r1   rV   z$infer_typing_alias.<locals>.<lambda>N  ó   ø€ µT¸9¸+Ñ5FÔ5F€ r3   )r,   r]   r   ÚlenÚtargetsr   r   r:   r>   r;   r<   r   r   r/   rq   rr   rs   rt   rx   r   r   Úeltsr   rI   r   r[   r\   r‡   rb   rU   )r0   rK   ÚresÚeÚassign_nameÚmaybe_type_varrd   ry   s          @r1   Úinfer_typing_aliasr•     sð  ø€ õ �t”{¥FÑ+Ô+ð"å�4”;Ô&Ñ'Ô'¨1Ò,Ð,Ý˜$œ+Ô-¨aÔ0µ*Ñ=Ô=ð -õ "Ð!ðDÝ�4”9˜Q”<×%Ò%¨cÐ%Ñ2Ô2Ñ3Ô3ˆˆøÝð Dð Dð DÝ $¤)¨A¤,¸Ð<Ñ<Ô<À!ÐCøøøøðDøøøð ”+Ô% aÔ(€KåØÔØÔ!ØÔ)ØŒ{ØÔ)Ø"Ô1ðñ ô €Iõ �#•xÑ Ô ð Bð 	×Ò # ¨R¸DÐÑAÔAÐAà”Y˜q”\€Nåð0å˜N­EÑ2Ô2ð0à;IÔ;Nð0õ ð0õ �~¥uÑ-Ô-ð	0ð
 Ô  1Ò$Ð$õ +Õ+AÑBÔBˆØ1<°ˆ	ÔÐ,Ñ-Ð-õ
 	% YÑ/Ô/Ð/ð  GÐFÐFÐF€DÔÝ��ÑÔÐó   Á&.B Â
CÂB<Â<Cc                óš  — t          | j        t          ¦  «        �o0t           r‰| j        j        dk    ryt          | j        d         t          ¦  «        r| j        d         j        dk    pBt          | j        d         t          ¦  «        o"| j        d                              ¦   «         dk    pŸt          o˜| j        j        dk    r6t          | j        d         t          ¦  «        r| j        d         j        dk    pR| j        j        dk    oBt          | j        d         t          ¦  «        o"| j        d                              ¦   «         dk    S )aô  Return True if call is for Tuple or Callable alias.

    In PY37 and PY38 the call is to '_VariadicGenericAlias' with 'tuple' as
    first argument. In PY39+ it is replaced by a call to '_TupleType'.

    PY37: Tuple = _VariadicGenericAlias(tuple, (), inst=False, special=True)
    PY39: Tuple = _TupleType(tuple, -1, inst=False, name='Tuple')

    PY37: Callable = _VariadicGenericAlias(collections.abc.Callable, (), special=True)
    PY39: Callable = _CallableType(collections.abc.Callable, 2)
    Ú_VariadicGenericAliasr   Útuplezcollections.abc.CallableÚ
_TupleTypeÚ_CallableType)r,   r+   r   r   r/   r>   r   r?   rJ   s    r1   Ú_looks_like_special_aliasrœ   R  s5  € õ �d”i¥Ñ&Ô&ñ Ýˆð 	
ØŒIŒNÐ5Ò5ð	
õ �t”y ”|¥TÑ*Ô*ð -Ø”	˜!”Ô! WÒ,ðGå˜$œ) Aœ,­	Ñ2Ô2ð GØ”	˜!”×&Ò&Ñ(Ô(Ð,FÒFð	
õ ð 
àŒIŒN˜lÒ*ð -Ý˜4œ9 Qœ<­Ñ.Ô.ð-à”	˜!”Ô! WÒ,ðGð ŒyŒ~ Ò0ð GÝ˜4œ9 Qœ<­Ñ3Ô3ðGà”	˜!”×&Ò&Ñ(Ô(Ð,FÒFð!r3   c                ó¶  ‡— t          | j        t          ¦  «        rBt          | j        j        ¦  «        dk    r%t          | j        j        d         t
          ¦  «        st          ‚	 t          | j        d          	                    |¬¦  «        ¦  «        }n/# t          $ r"}t          | j        d         |¬¦  «        |‚d}~ww xY w| j        j        d         }t          |j        | j        |j        |j        |j        |j        ¬¦  «        Š‰                     |gg d¬¦  «         t'          t(          ¦  «        }|g‰j        d<   ˆfd	„| _        t/          ‰g¦  «        S )
zBInfer call to tuple alias as new subscriptable class typing.Tuple.r‰   r   r8   rŠ   N)r/   r]   rq   rr   rs   rt   ru   rP   c                ó$   •— t          ‰g¦  «        S rS   rT   rŒ   s     €r1   rV   z%infer_special_alias.<locals>.<lambda>�  r�   r3   )r,   r]   r   rŽ   r�   r   r   r:   r>   r;   r<   r   r   r/   rq   rr   rs   rt   rx   r   r[   r\   rb   rU   )r0   rK   r‘   r’   r“   rd   ry   s         @r1   Úinfer_special_aliasrŸ   s  se  ø€ õ
 	�4”;¥Ñ'Ô'ð"å�”Ô#Ñ$Ô$¨Ò)Ð)Ý�t”{Ô*¨1Ô-­zÑ:Ô:ð *õ "Ð!ðDÝ�4”9˜Q”<×%Ò%¨cÐ%Ñ2Ô2Ñ3Ô3ˆˆøÝð Dð Dð DÝ $¤)¨A¤,¸Ð<Ñ<Ô<À!ÐCøøøøðDøøøð ”+Ô% aÔ(€KÝØÔØŒ{ØÔ!ØÔ)ØÔ)Ø"Ô1ðñ ô €Ið ×Ò˜c˜U¨¸ÐÑ=Ô=Ð=Ý&Õ'=Ñ>Ô>€KØ-8¨M€IÔÐ(Ñ)àFÐFÐFÐF€DÔÝ��ÑÔÐr–   c                óÔ   — t          | t          ¦  «        oSt          | j        t          ¦  «        r| j        j        dk    p)t          | j        t
          ¦  «        o| j        j        dk    S )NÚcast)r,   r   r+   r   r/   r   r-   rJ   s    r1   Ú_looks_like_typing_castr¢   “  s_   € Ý�d�DÑ!Ô!ð Ý�4”9�dÑ#Ô#ð 	%ØŒIŒN˜fÒ$ð	)å�d”i¥Ñ+Ô+ð )ØŒIÔ &Ò(ð	r3   úIterator[NodeNG]c                óÂ  — t          | j        t          t          f¦  «        st          ‚	 t          | j                             |¬¦  «        ¦  «        }n!# t          t          f$ r}t          |‚d}~ww xY wt          |t          ¦  «        r0| 
                    ¦   «         dk    st          | j        ¦  «        dk    rt          ‚| j        d                              |¬¦  «        S )z<Infer call to cast() returning same type as casted-from var.r8   Nztyping.casté   r‰   )r,   r+   r   r   r   r:   r;   r   r<   r   r=   rŽ   r>   )r0   rK   r+   rC   s       r1   Úinfer_typing_castr¦   œ  sÐ   € õ �d”i¥$­	Ð!2Ñ3Ô3ð "Ý!Ð!ð+Ý�D”I—O’O¨C�OÑ0Ô0Ñ1Ô1ˆˆøÝ�MÐ*ð +ð +ð +Ý! sÐ*øøøøð+øøøõ �t�[Ñ)Ô)ð"à�:Š:‰<Œ<˜=Ò(Ð(ÝˆtŒy‰>Œ>˜QÒÐå!Ð!àŒ9�QŒ<×Ò cÐÑ*Ô*Ð*s   ª(A ÁA1Á$A,Á,A1c                 ó‚   — t          t          ¦   «         ¦  «                             t          j        d¦  «        ¦  «        S )NaH  
    class Generic:
        @classmethod
        def __class_getitem__(cls, item):  return cls
    class ParamSpec:
        @property
        def args(self):
            return ParamSpecArgs(self)
        @property
        def kwargs(self):
            return ParamSpecKwargs(self)
    class ParamSpecArgs: ...
    class ParamSpecKwargs: ...
    class TypeAlias: ...
    class Type:
        @classmethod
        def __class_getitem__(cls, item):  return cls
    class TypeVar:
        @classmethod
        def __class_getitem__(cls, item):  return cls
    class TypeVarTuple: ...
    )r   r   Ústring_buildÚtextwrapÚdedent© r3   r1   Ú_typing_transformr¬   ±  s<   € Ý�.Ñ*Ô*Ñ+Ô+×8Ò8ÝŒðñ	
ô 	
ñô ð r3   Úmanagerr   c                ó  — |                       t          t          t          ¦  «        t          ¦  «         |                       t
          t          t          ¦  «        t          ¦  «         |                       t          t          t          ¦  «        t          ¦  «         t          r4|                       t          t          t          ¦  «        t          ¦  «         n3|                       t          t          t          ¦  «        t          ¦  «         |                       t          t          t           ¦  «        t"          ¦  «         |                       t          t          t$          ¦  «        t&          ¦  «         t(          rt+          | dt,          ¦  «         d S d S )NÚtyping)Úregister_transformr   r	   rE   r2   r   rf   rH   r¦   r¢   r   r   rz   ri   r   rm   r•   r~   rŸ   rœ   r   r
   r¬   )r­   s    r1   Úregisterr±   Î  sj  € Ø×ÒÝÝÕ5Ñ6Ô6Ý,ñô ð ð
 ×ÒÝ•=Õ!2Ñ3Ô3Õ5Qñô ð ð ×ÒÝ�mÕ-Ñ.Ô.Õ0Gñô ð õ ð 
Ø×"Ò"Ý�¥Ñ7Ô7Õ9Nñ	
ô 	
ð 	
ð 	
ð 	×"Ò"Ý•mÕ$7Ñ8Ô8Õ:Oñ	
ô 	
ð 	
ð ×ÒÝ�mÕ.Ñ/Ô/Õ1Iñô ð ð ×ÒÝ�mÕ/Ñ0Ô0Õ2Kñô ð õ ð GÝ  ¨(Õ4EÑFÔFÐFÐFÐFðGð Gr3   )r(   r)   rS   )r0   r   r4   r5   r(   r6   )r0   r   rK   r5   r(   r6   )r0   rg   r(   r)   )r0   r   rK   r5   r(   r6   )r0   r   rK   r5   r(   r6   )r0   r   r(   r)   )r0   r   r(   r   )r0   r   rK   r5   r(   r6   )r0   r   rK   r5   r(   r£   )r­   r   r(   r   )FÚ__doc__Ú
__future__r   r©   r¯   Úcollections.abcr   Ú	functoolsr   r   Úastroidr   r   r	   Úastroid.brain.helpersr
   Úastroid.builderr   r   Úastroid.constr   r   Úastroid.exceptionsr   r   r   r   Úastroid.managerr   Úastroid.nodes.node_classesr   r   r   r   r   r   r   r   r   r   Úastroid.nodes.scoped_nodesr   r   r.   r%   Ú__annotations__r&   rA   Úsetr_   rG   Ú	frozensetrZ   r[   r2   rE   rH   rf   ri   rm   rz   r~   r‡   r•   rœ   rŸ   r¢   r¦   r¬   r±   r«   r3   r1   ú<module>rÁ      sÖ  ðð
 +Ð *Ð *à "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø :Ð :Ð :Ð :Ð :Ð :Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /ðð ð ð ð ð ð ð ð ð ð ð ð +Ð *Ð *Ð *Ð *Ð *ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð =Ð <Ð <Ð <Ð <Ð <Ð <Ð <à˜iÐ(€ð$ð $ð $Ð ð ð ð ñ ð
 &8Ð9VÐ$WÐ Ð WÐ WÐ WÑ WðÐ ð ��W�W˜V Y°Ñ3Ô3Ñ4Ô4€àˆyð)ñ+ô +€ðZÐ ðð ð ð ð BFð-ð -ð -ð -ð -ð2ð ð ð ð =Að&#ð &#ð &#ð &#ð &#ðR6ð 6ð 6ð 6ð <@ðð ð ð ð ð ?Cðð ð ð ð ð$ð ð ð ð*ð ð ð ð2 8<ð:ð :ð :ð :ð :ðzð ð ð ðD 8<ðð ð ð ð ð@ð ð ð ð 8<ð+ð +ð +ð +ð +ð*ð ð ð:Gð Gð Gð Gð Gð Gr3   