ó
    cÛ–i>1  ã                   ó²  • % S r SSKJr  SSKJr  SSKJrJr  SSKJ	r	  SSK
Jr  SSKJrJr  SSKJrJr  SS	KJrJr  S
r\\S'   \R0                  r\\S'   \R4                  r\\S'   \R8                  r\\S'   \R<                  r\\S'   Sr  " S S\5      r! " S S\5      r" " S S\#5      r$ " S S\#5      r%\ " S S5      5       r& " S S5      r' " S S5      r(g) z%Group Key Distribution Service moduleé    )ÚEnum)Útotal_ordering)ÚOptionalÚTuple)Úhashes)Ú_glue)ÚgkdiÚmisc)Úndr_packÚ
ndr_unpack)ÚNtTimeÚNtTimeDeltal   ÿÿÿÿ Ú
uint64_maxÚL1_KEY_ITERATIONÚL2_KEY_ITERATIONÚKEY_CYCLE_DURATIONÚMAX_CLOCK_SKEWé@   c                   óv   • \ rS rSrSrSrSrSrS\R                  4S jr
S\4S jr\S	\\   SS 4S
 j5       rSrg)Ú	Algorithmé+   ÚSHA1ÚSHA256ÚSHA384ÚSHA512Úreturnc                 óX  • U [         R                  L a  [        R                  " 5       $ U [         R                  L a  [        R                  " 5       $ U [         R                  L a  [        R                  " 5       $ U [         R
                  L a  [        R
                  " 5       $ [        S5      e)Nzunknown hash algorithm {self})r   r   r   r   r   r   ÚRuntimeError©Úselfs    Ú,/usr/lib/python3/dist-packages/samba/gkdi.pyÚ	algorithmÚAlgorithm.algorithm1   st   € Ø”9—>‘>Ò!Ü—;’;“=Ð à”9×#Ñ#Ò#Ü—=’=“?Ð"à”9×#Ñ#Ò#Ü—=’=“?Ð"à”9×#Ñ#Ò#Ü—=’=“?Ð"äÐ:Ó;Ð;ó    c                 ó   • [        U 5      $ ©N)Ústrr   s    r!   Ú__repr__ÚAlgorithm.__repr__@   s   € Ü�4‹yÐr$   Ú	kdf_paramc                 óŽ   • U (       d  [         R                  $ [        [        R                  U 5      n[        UR
                  5      $ r&   )r   r   r   r	   ÚKdfParametersÚhash_algorithm)r*   Úkdf_parameterss     r!   Úfrom_kdf_parametersÚAlgorithm.from_kdf_parametersC   s4   € æÜ×#Ñ#Ð#ä#¤D×$6Ñ$6¸	ÓBˆÜ˜×6Ñ6Ó7Ð7r$   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   r   r   r   ÚHashAlgorithmr"   r'   r(   Ústaticmethodr   Úbytesr/   Ú__static_attributes__r1   r$   r!   r   r   +   sZ   † Ø€DØ€FØ€FØ€Fð<˜6×/Ñ/ô <ð˜#ô ð ð8 x°¡ð 8¸;ó 8ó ó8r$   r   c                   óZ   • \ rS rSr\" 5       r\" 5       r\" 5       r\" 5       rS\	4S jr
Srg)ÚGkidTypeéL   r   c                 ó¸   • U [         R                  L a  gU [         R                  L a  gU [         R                  L a  gU [         R                  L a  g[        S5      e)Nza default GKIDzan L0 seed keyzan L1 seed keyzan L2 seed keyzunknown GKID type {self})r;   ÚDEFAULTÚL0_SEED_KEYÚL1_SEED_KEYÚL2_SEED_KEYr   r   s    r!   ÚdescriptionÚGkidType.descriptionR   sR   € Ø”8×#Ñ#Ò#Ø#à”8×'Ñ'Ò'Ø#à”8×'Ñ'Ò'Ø#à”8×'Ñ'Ò'Ø#äÐ5Ó6Ð6r$   r1   N)r2   r3   r4   r5   Úobjectr>   r?   r@   rA   r'   rB   r9   r1   r$   r!   r;   r;   L   s*   † Ù‹h€GÙ“(€KÙ“(€KÙ“(€Kð7˜S÷ 7r$   r;   c                   ó   • \ rS rSrSrg)ÚInvalidDerivationéb   r1   N©r2   r3   r4   r5   r9   r1   r$   r!   rF   rF   b   ó   † Úr$   rF   c                   ó   • \ rS rSrSrg)ÚUndefinedStartTimeéf   r1   NrH   r1   r$   r!   rK   rK   f   rI   r$   rK   c                   óÌ  • \ rS rSr/ SQrSrS\S\S\SS4S	 jr\S\4S
 j5       r	\S\4S j5       r
\S\4S j5       rS\4S jrS\4S jrS\4S jrS"S jrS"S jrS\4S jrS\4S jrS\S\4S jrS\S\4S jrS\4S jr\S"S j5       r\S\SS 4S j5       r\S\S\SS 4S j5       r\S\SS 4S j5       rS\4S jr S"S jr!S"S jr"\S \#RH                  SS 4S! j5       r%Sr&g)#ÚGkidéj   )Ú_l0_idxÚ_l1_idxÚ_l2_idxiÿÿÿÚl0_idxÚl1_idxÚl2_idxr   Nc                 ód  • SUs=::  a  [         R                  ::  d  O  [        SU S35      eSUs=::  a
  [        :  d  O  [        SU S35      eSUs=::  a
  [        :  d  O  [        SU S35      eUS:X  a  US:w  a  [        S5      eUS:X  a  US:w  a  [        S5      eXl        X l        X0l        g )Néÿÿÿÿz	L0 index ú out of rangez	L1 index z	L2 index u:   invalid combination of negative and nonâ€�negative indices)rN   Ú
max_l0_idxÚ
ValueErrorr   r   rP   rQ   rR   )r    rS   rT   rU   s       r!   Ú__init__ÚGkid.__init__t   s¬   € Ø�VÕ.œtŸ™Õ.Ü˜y¨¨°Ð>Ó?Ð?à�VÕ.Ô.Õ.Ü˜y¨¨°Ð>Ó?Ð?à�VÕ.Ô.Õ.Ü˜y¨¨°Ð>Ó?Ð?à�R‹<˜F b›LÜÐYÓZÐZà�R‹<˜F b›LÜÐYÓZÐZàŒØŒØ�r$   c                 ó   • U R                   $ r&   )rP   r   s    r!   rS   ÚGkid.l0_idxˆ   ó   € à�|‰|Ðr$   c                 ó   • U R                   $ r&   )rQ   r   s    r!   rT   ÚGkid.l1_idxŒ   r_   r$   c                 ó   • U R                   $ r&   )rR   r   s    r!   rU   ÚGkid.l2_idx�   r_   r$   c                 óâ   • U R                   S:X  a  [        R                  $ U R                  S:X  a  [        R                  $ U R
                  S:X  a  [        R                  $ [        R                  $ ©NrW   )rS   r;   r>   rT   r?   rU   r@   rA   r   s    r!   Ú	gkid_typeÚGkid.gkid_type”   sV   € Ø�;‰;˜"ÓÜ×#Ñ#Ð#à�;‰;˜"ÓÜ×'Ñ'Ð'à�;‰;˜"ÓÜ×'Ñ'Ð'ä×#Ñ#Ð#r$   c                 óF   • U R                   S:X  a  [        $ U R                   $ re   )rT   r   r   s    r!   Úwrapped_l1_idxÚGkid.wrapped_l1_idx    ó   € Ø�;‰;˜"ÓÜ#Ð#à�{‰{Ðr$   c                 óF   • U R                   S:X  a  [        $ U R                   $ re   )rU   r   r   s    r!   Úwrapped_l2_idxÚGkid.wrapped_l2_idx¦   rk   r$   c                 ó@  • U R                  5       nU[        R                  La/  U[        R                  La  [	        SUR                  5        35      eU R                  S:X  a  [	        S5      e[        U R                  U R                  5       S-
  U R                  5      $ )Nz.Invalid attempt to derive an L1 seed key from r   z1No further derivation of L1 seed keys is possibleé   )rf   r;   r?   r@   rF   rB   rT   rN   rS   ri   rU   ©r    rf   s     r!   Úderive_l1_seed_keyÚGkid.derive_l1_seed_key¬   s�   € Ø—N‘NÓ$ˆ	àœX×1Ñ1Ò1Ø¤×!5Ñ!5Ò5ä#ðØ×)Ñ)Ó+Ð,ð.óð ð
 �;‰;˜!ÓÜ#Ð$WÓXÐXä�D—K‘K ×!4Ñ!4Ó!6¸Ñ!:¸D¿K¹KÓHÐHr$   c                 ó@  • U R                  5       nU[        R                  La/  U[        R                  La  [	        SUR                  5        35      eU R                  S:X  a  [	        S5      e[        U R                  U R                  U R                  5       S-
  5      $ )Nz&Attempt to derive an L2 seed key from r   z1No further derivation of L2 seed keys is possiblerp   )rf   r;   r@   rA   rF   rB   rU   rN   rS   rT   rm   rq   s     r!   Úderive_l2_seed_keyÚGkid.derive_l2_seed_key¼   sŠ   € Ø—N‘NÓ$ˆ	àœX×1Ñ1Ò1Ø¤×!5Ñ!5Ò5ä#Ø8¸×9NÑ9NÓ9PÐ8QÐRóð ð �;‰;˜!ÓÜ#Ð$WÓXÐXä�D—K‘K §¡¨d×.AÑ.AÓ.CÀaÑ.GÓHÐHr$   c                 óV   • SU R                    SU R                   SU R                   S3$ )NzGkid(ú, Ú))rS   rT   rU   r   s    r!   Ú__str__ÚGkid.__str__Ë   s)   € Ø�t—{‘{�m 2 d§k¡k ]°"°T·[±[°MÀÐCÐCr$   c           	      óº   • [        U 5      nUR                   S[        U R                  5       S[        U R                  5       S[        U R
                  5       S3$ ©NÚ(rx   ry   )Útyper4   ÚreprrS   rT   rU   ©r    Úclss     r!   r(   ÚGkid.__repr__Î   sX   € Ü�4‹jˆà×ÑÐ  ¤$ t§{¡{Ó"3Ð!4°B´t¸D¿K¹KÓ7HÐ6Ið JÜ�T—[‘[Ó!Ð" !ð%ð	
r$   Úotherc                 óÆ   • [        U[        5      (       d  [        $ U R                  U R                  U R
                  4UR                  UR                  UR
                  4:H  $ r&   )Ú
isinstancerN   ÚNotImplementedrS   rT   rU   ©r    r„   s     r!   Ú__eq__ÚGkid.__eq__Õ   sO   € Ü˜%¤×&Ñ&Ü!Ð!à—‘˜TŸ[™[¨$¯+©+Ð6Ø�L‰LØ�L‰LØ�L‰Lð;
ñ 
ð 	
r$   c                 ó    • [        U[        5      (       d  [        $ S[        S[        [        [        [        4   4S jnU" U 5      U" U5      :  $ )NÚgkidr   c                 óÒ   • U R                   U R                  U R                  p2nU R                  5       [        R
                  La   U R                  5       nU R                  5       nXU4$ r&   )rS   rT   rU   rf   r;   r>   ri   rm   )rŒ   rS   rT   rU   s       r!   Úas_tupleÚGkid.__lt__.<locals>.as_tupleã   sY   € Ø%)§[¡[°$·+±+¸t¿{¹{˜FˆFð
 �~‰~Ó¤x×'7Ñ'7Ò7ð ×,Ñ,Ó.�Ø×,Ñ,Ó.�à 6Ð)Ð)r$   )r†   rN   r‡   r   Úint)r    r„   rŽ   s      r!   Ú__lt__ÚGkid.__lt__ß   sH   € Ü˜%¤×&Ñ&Ü!Ð!ð	*œ4ð 	*¤E¬#¬s´C¨-Ñ$8ô 	*ñ ˜‹~¡¨£Ñ/Ð/r$   c                 óZ   • [        U R                  U R                  U R                  45      $ r&   )ÚhashrS   rT   rU   r   s    r!   Ú__hash__ÚGkid.__hash__ô   s    € Ü�T—[‘[ $§+¡+¨t¯{©{Ð;Ó<Ð<r$   c                  ó   • [        SSS5      $ re   ©rN   r1   r$   r!   ÚdefaultÚGkid.default÷   s   € ä�B˜˜BÓÐr$   c                 ó   • [        U SS5      $ re   r˜   )rS   s    r!   Úl0_seed_keyÚGkid.l0_seed_keyû   s   € ä�F˜B Ó#Ð#r$   c                 ó   • [        XS5      $ re   r˜   )rS   rT   s     r!   Úl1_seed_keyÚGkid.l1_seed_keyÿ   s   € ä�F BÓ'Ð'r$   Únt_timec                 óÀ   • U [         [        -  [        -  -  nU [         [        -  [        -  -  [        [        -  -  nU [        [        -  -  [        -  n[        XU5      $ r&   )r   r   r   rN   )r¡   Úl0Úl1Úl2s       r!   Úfrom_nt_timeÚGkid.from_nt_time  sj   € àÔ)Ô,<Ñ<Ô?QÑQÑRˆàÜÔ"2Ñ2Ô5GÑGñIä Ô#5Ñ5ñ7ð 	ð
 Ô(Ô+=Ñ=Ñ>ÔBTÑTˆä�B˜BÓÐr$   c                 ó^  • U R                  5       nU[        R                  La  [        UR	                  5        S35      e[        U R                  [        -  [        -  U R                  [        -  -   U R                  -   [        -  5      nSUs=::  a
  [        ::  d  O  [        SU S35      eU$ )Nz has no defined start timer   zstart time rX   )rf   r;   rA   rK   rB   r   rS   r   r   rT   rU   r   r   ÚOverflowError)r    rf   Ú
start_times      r!   Ústart_nt_timeÚGkid.start_nt_time  s®   € Ø—N‘NÓ$ˆ	ØœH×0Ñ0Ò0Ü$Ø×(Ñ(Ó*Ð+Ð+EÐFóð ô à—‘Ô.Ñ.Ô1AÑAØ—+‘+Ô 0Ñ0ñ1à—+‘+ñô !ñ!ó
ˆ
ð �JÕ,¤*Õ,Ü +¨j¨\¸Ð GÓHÐHàÐr$   c                 óh   • [         R                  [        U R                  5       [        -
  5      5      $ r&   ©rN   r¦   r   r«   r   r   s    r!   ÚpreviousÚGkid.previous$  ó'   € Ü× Ñ ¤¨×(:Ñ(:Ó(<Ô?QÑ(QÓ!RÓSÐSr$   c                 óh   • [         R                  [        U R                  5       [        -   5      5      $ r&   r®   r   s    r!   ÚnextÚ	Gkid.next'  r±   r$   Úenvc                 óX   • [        U R                  U R                  U R                  5      $ r&   )rN   Úl0_indexÚl1_indexÚl2_index)rµ   s    r!   Úfrom_key_envelopeÚGkid.from_key_envelope*  s   € ä�C—L‘L #§,¡,°·±Ó=Ð=r$   )r   rN   )'r2   r3   r4   r5   Ú	__slots__rY   r�   r[   ÚpropertyrS   rT   rU   r;   rf   ri   rm   rr   ru   r'   rz   r(   rD   Úboolr‰   r‘   r•   r7   r™   rœ   rŸ   r   r¦   r«   r¯   r³   r	   ÚKeyEnveloperº   r9   r1   r$   r!   rN   rN   j   s½  † ò 2€Ià€Jð˜sð ¨Cð ¸ð Àô ð( ð˜ó ó ðð ð˜ó ó ðð ð˜ó ó ðð
$˜8ô 
$ð ô ð ô ôIô IðD˜ô Dð
˜#ô 
ð
˜Fð 
 tô 
ð0˜Fð 0 tô 0ð*=˜#ô =ð ó ó ð ð ð$˜Cð $ Fó $ó ð$ð ð(˜Cð (¨ð (°ó (ó ð(ð ð	 ˜fð 	 ¨ó 	 ó ð	 ð˜vô ô*TôTð ð>˜t×/Ñ/ð >°Fó >ó ó>r$   rN   c                   óš   • \ rS rSr/ SQrS\\   S\\   S\S\S\	R                  SS	4S
 jrS\4S jrS\4S jrS\S\4S jrS\4S jrSrg	)ÚSeedKeyPairi/  )Úl1_keyÚl2_keyrŒ   r-   Úroot_key_idrÂ   rÃ   rŒ   r-   rÄ   r   Nc                 ó  • Ub2  [        U5      [        :w  a  [        S[        U5       S[         S35      eUb2  [        U5      [        :w  a  [        S[        U5       S[         S35      eXl        X l        X0l        X@l        XPl        g )NzL1 key (ú
) must be ú byteszL2 key ()	ÚlenÚKEY_LEN_BYTESrZ   r€   rÂ   rÃ   rŒ   r-   rÄ   )r    rÂ   rÃ   rŒ   r-   rÄ   s         r!   r[   ÚSeedKeyPair.__init__2  s}   € ð Ñ¤# f£+´Ó">Ü˜x¬¨V« ~°ZÄ¸ÈfÐUÓVÐVØÑ¤# f£+´Ó">Ü˜x¬¨V« ~°ZÄ¸ÈfÐUÓVÐVàŒØŒØŒ	Ø,ÔØ&Õr$   c                 ó  • U R                   c  S OU R                   R                  5       nU R                  c  S OU R                  R                  5       nSU SU SU R                   SU R                   SU R
                   S3$ )NzSeedKeyPair(L1Key(z	), L2Key(ú), rx   ry   )rÂ   ÚhexrÃ   rŒ   rÄ   r-   )r    Ú
l1_key_hexÚ
l2_key_hexs      r!   rz   ÚSeedKeyPair.__str__E  s|   € Ø!Ÿ[™[Ñ0‘T°d·k±k·o±oÓ6Gˆ
Ø!Ÿ[™[Ñ0‘T°d·k±k·o±oÓ6Gˆ
ð !  ¨I°j°\ÀÀTÇYÁYÀKð PØ× Ñ Ð!  D×$7Ñ$7Ð#8¸ð;ð	
r$   c                 ó  • [        U 5      nUR                   S[        U R                  5       S[        U R                  5       S[        U R
                  5       S[        U R                  5       S[        U R                  5       S3$ r}   )r   r4   r€   rÂ   rÃ   rŒ   r-   rÄ   r�   s     r!   r(   ÚSeedKeyPair.__repr__N  s   € Ü�4‹jˆà×ÑÐ  ¤$ t§{¡{Ó"3Ð!4°B´t¸D¿K¹KÓ7HÐ6Ið JÜ�T—Y‘Y“Ð  ¤4¨×(;Ñ(;Ó#<Ð"=ð >Ü�T×%Ñ%Ó&Ð' qð*ð	
r$   r„   c                 ó  • [        U[        5      (       d  [        $ U R                  U R                  U R
                  U R                  U R                  4UR                  UR                  UR
                  UR                  UR                  4:H  $ r&   )r†   rÁ   r‡   rÂ   rÃ   rŒ   r-   rÄ   rˆ   s     r!   r‰   ÚSeedKeyPair.__eq__V  s{   € Ü˜%¤×-Ñ-Ü!Ð!ð �K‰KØ�K‰KØ�I‰IØ×ÑØ×Ñð
ð �L‰LØ�L‰LØ�J‰JØ× Ñ Ø×Ñð
ñ
ð 	
r$   c           	      ó˜   • [        U R                  U R                  U R                  U R                  [        U R                  5      45      $ r&   )r”   rÂ   rÃ   rŒ   r-   r   rÄ   r   s    r!   r•   ÚSeedKeyPair.__hash__h  s@   € Üà—‘Ø—‘Ø—	‘	Ø×#Ñ#Ü˜×)Ñ)Ó*ðó
ð 	
r$   )rŒ   r-   rÂ   rÃ   rÄ   )r2   r3   r4   r5   r¼   r   r8   rN   r   r
   ÚGUIDr[   r'   rz   r(   rD   r¾   r‰   r�   r•   r9   r1   r$   r!   rÁ   rÁ   /  s‰   † ÚM€Ið'à˜‘ð'ð ˜‘ð'ð ð	'ð
 "ð'ð —Y‘Yð'ð 
ô'ð&
˜ô 
ð
˜#ô 
ð
˜Fð 
 tô 
ð$	
˜#÷ 	
r$   rÁ   c            
       óŠ   • \ rS rSr/ SQrS\S\S\S\R                  SS4
S	 jr
S\4S
 jrS\4S jrS\S\4S jrS\4S jrSrg)ÚGroupKeyit  )rŒ   Úkeyr-   rÄ   rÚ   rŒ   r-   rÄ   r   Nc                 óž   • Ub2  [        U5      [        :w  a  [        S[        U5       S[         S35      eXl        X l        X0l        X@l        g )NzKey (rÆ   rÇ   )rÈ   rÉ   rZ   r€   rÚ   rŒ   r-   rÄ   )r    rÚ   rŒ   r-   rÄ   s        r!   r[   ÚGroupKey.__init__w  sH   € ð ‰?œs 3›x¬=Ó8Ü˜u¤T¨#£Y K¨z¼-¸ÈÐOÓPÐPàŒØŒ	Ø,ÔØ&Õr$   c           	      óŒ   • SU R                   R                  5        SU R                   SU R                   SU R                   S3	$ )NzGroupKey(Key(rÌ   rx   ry   )rÚ   rÍ   rŒ   r-   rÄ   r   s    r!   rz   ÚGroupKey.__str__‚  sI   € à˜DŸH™HŸL™L›NÐ+¨3¨t¯y©y¨k¸¸D×<OÑ<OÐ;Pð QØ× Ñ Ð! ð$ð	
r$   c                 óæ   • [        U 5      nUR                   S[        U R                  5       S[        U R                  5       S[        U R
                  5       S[        U R                  5       S3
$ r}   )r   r4   r€   rÚ   rŒ   r-   rÄ   r�   s     r!   r(   ÚGroupKey.__repr__ˆ  sk   € Ü�4‹jˆà×ÑÐ  ¤$ t§x¡x£.Ð!1°´D¸¿¹³OÐ3Dð EÜ�T×(Ñ(Ó)Ð*¨"¬T°$×2BÑ2BÓ-CÐ,DÀAðGð	
r$   r„   c                 óò   • [        U[        5      (       d  [        $ U R                  U R                  U R
                  U R                  4UR                  UR                  UR
                  UR                  4:H  $ r&   )r†   rÙ   r‡   rÚ   rŒ   r-   rÄ   rˆ   s     r!   r‰   ÚGroupKey.__eq__�  se   € Ü˜%¤×*Ñ*Ü!Ð!à—‘˜$Ÿ)™) T×%8Ñ%8¸$×:JÑ:JÐKØ�I‰IØ�J‰JØ× Ñ Ø×Ñð	P
ñ 
ð 	
r$   c                 ó‚   • [        U R                  U R                  U R                  [	        U R
                  5      45      $ r&   )r”   rÚ   rŒ   r-   r   rÄ   r   s    r!   r•   ÚGroupKey.__hash__š  s4   € ÜØ�X‰X�t—y‘y $×"5Ñ"5´xÀ×@PÑ@PÓ7QÐRó
ð 	
r$   )rŒ   r-   rÚ   rÄ   )r2   r3   r4   r5   r¼   r8   rN   r   r
   r×   r[   r'   rz   r(   rD   r¾   r‰   r�   r•   r9   r1   r$   r!   rÙ   rÙ   t  so   † Ú@€Ið	'Øð	'Ø $ð	'Ø6?ð	'ØNRÏiÉið	'à	ô	'ð
˜ô 
ð
˜#ô 
ð	
˜Fð 	
 tô 	
ð
˜#÷ 
r$   rÙ   N))Ú__doc__Úenumr   Ú	functoolsr   Útypingr   r   Úcryptography.hazmat.primitivesr   Úsambar   Úsamba.dcerpcr	   r
   Ú	samba.ndrr   r   Úsamba.nt_timer   r   r   r�   Ú__annotations__ÚGKDI_L1_KEY_ITERATIONr   ÚGKDI_L2_KEY_ITERATIONr   ÚGKDI_KEY_CYCLE_DURATIONr   ÚGKDI_MAX_CLOCK_SKEWr   rÉ   r   r;   Ú	ExceptionrF   rK   rN   rÁ   rÙ   r1   r$   r!   Ú<module>rô      sÛ   ðò& ,å Ý $ß "å 1å ß #ß *ß -ð €
ˆCÓ à×3Ñ3Ð �#Ó 3Ø×3Ñ3Ð �#Ó 3Ø"'×"?Ñ"?Ð �KÓ ?Ø#×7Ñ7€�Ó 7à€ô8�ô 8ôB7ˆtô 7ô,	˜	ô 	ô	˜ô 	ð ÷A>ð A>ó ðA>÷HB
ñ B
÷J)
ò )
r$   