Ë
    V.jÃ%  ã                   ó   — d Z ddlZddlZddlZddlZddlZddlZddlmZ ddl	m
Z
 ddlmZmZ ddddddœdee   d	ee   dz  d
edz  dedz  dej                   dz  dedz  dej                  fd„Z	 	 	 ddej                   deeeez        ded	ee   dz  deej                     dz  dedz  dej                  fd„Z	 ddee   dedee   fd„Zy)zBase implementation.é    N)ÚSequenceé   )Ú
_staggered)ÚAddrInfoTypeÚSocketFactoryType)Úlocal_addr_infosÚhappy_eyeballs_delayÚ
interleaveÚloopÚsocket_factoryÚ
addr_infosr   r	   r
   r   r   Úreturnc          	   ƒ   óà  ‡‡‡‡‡‡‡K  — | st        d«      ‚|xs t        j                  «       Št        | «      dk(  }|�|€d}|r|st	        | |«      } d}g Š|�|r"| D ]  }	 t        ‰‰|‰d‰«      ƒ d{  –—† } n| nzt        «       Š	 t        j                  ˆˆˆˆˆfd„| D «       |«      ƒ d{  –—† \  }}	}	‰D ]9  }
|
|usŒt        j                  t        «      5  |
j                  «        ddd«       Œ; dŠ|€ê‰D ��cg c]  }|D ]  }|‘Œ Œ }}}	 |d   }t        |«      dk(  r|‚t        |«      Št        ˆfd„|D «       «      r|‚dj!                  dj#                  d	„ |D «       «      «      }t%        |t        «      r,|j&                  Št        ˆfd
„|D «       «      r9t        ‰|«      ‚t%        |t        «      rt        d„ |D «       «      rt        |«      ‚t        |«      ‚|S 7 �Œq# t        t        f$ r Y �Œ�w xY w7 �ŒP# 1 sw Y   �ŒRxY w# ‰D ]E  }
|
|usŒt        j                  t        «      5  |
j                  «        ddd«       Œ;# 1 sw Y   ŒDxY w dŠw xY wc c}}w # d}dŠw xY w­w)aM  
    Connect to a TCP server.

    Create a socket connection to a specified destination.  The
    destination is specified as a list of AddrInfoType tuples as
    returned from getaddrinfo().

    The arguments are, in order:

    * ``family``: the address family, e.g. ``socket.AF_INET`` or
        ``socket.AF_INET6``.
    * ``type``: the socket type, e.g. ``socket.SOCK_STREAM`` or
        ``socket.SOCK_DGRAM``.
    * ``proto``: the protocol, e.g. ``socket.IPPROTO_TCP`` or
        ``socket.IPPROTO_UDP``.
    * ``canonname``: the canonical name of the address, e.g.
        ``"www.python.org"``.
    * ``sockaddr``: the socket address

    This method is a coroutine which will try to establish the connection
    in the background. When successful, the coroutine returns a
    socket.

    The expected use case is to use this method in conjunction with
    loop.create_connection() to establish a connection to a server::

            socket = await start_connection(addr_infos)
            transport, protocol = await loop.create_connection(
                MyProtocol, sock=socket, ...)
    zaddr_infos must not be emptyr   Nc           
   3   ó\   •K  — | ]#  }t        j                  t        ‰‰|‰‰‰«      –— Œ% y ­w©N)Ú	functoolsÚpartialÚ_connect_sock)Ú.0ÚaddrinfoÚcurrent_loopÚ
exceptionsr   Úopen_socketsr   s     €€€€€úWC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\aiohappyeyeballs/impl.pyÚ	<genexpr>z#start_connection.<locals>.<genexpr>Z   s=   øè ø€ ð ñ %/˜ô ×%Ñ%Ü%Ø$Ø"Ø Ø(Ø$Ø&÷ñ %/ùs   ƒ),r   c              3   ó:   •K  — | ]  }t        |«      ‰k(  –— Œ y ­wr   ©Ústr)r   ÚexcÚmodels     €r   r   z#start_connection.<locals>.<genexpr>€   s   øè ø€ ÐC±N¨S”s˜3“x 5Õ(±Nùs   ƒzMultiple exceptions: {}z, c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr   r   ©r   r   s     r   r   z#start_connection.<locals>.<genexpr>…   s   è ø€ ÐA±.¨3œc #Ÿh±.ùs   ‚c              3   ó`   •K  — | ]%  }t        |t        «      xr |j                  ‰k(  –— Œ' y ­wr   )Ú
isinstanceÚOSErrorÚerrno)r   r   Úfirst_errnos     €r   r   z#start_connection.<locals>.<genexpr>‹   s1   øè ø€ ð á#1˜Cô # 3¬Ó0ÒM°S·Y±YÀ+Ñ5MÓMÙ#1ùs   ƒ+.c              3   ó<   K  — | ]  }t        |t        «      –— Œ y ­wr   )r$   ÚRuntimeErrorr"   s     r   r   z#start_connection.<locals>.<genexpr>�   s   è ø€ ð GÙ=K°c”J˜s¤L×1¹^ùs   ‚)Ú
ValueErrorÚasyncioÚget_running_loopÚlenÚ_interleave_addrinfosr   r)   r%   Úsetr   Ústaggered_raceÚ
contextlibÚsuppressÚcloser   ÚallÚformatÚjoinr$   r&   )r   r   r	   r
   r   r   Úsingle_addr_infoÚsockr   Ú_ÚsÚsubr   Úall_exceptionsÚfirst_exceptionÚmsgr   r   r'   r    r   s    `   `          @@@@@r   Ústart_connectionr?      s�  þè ø€ ñN ÜÐ7Ó8Ð8àÒ5œ7×3Ñ3Ó5€Lä˜:“¨!Ñ+ÐàÐ'¨JÐ,>àˆ
áÑ*Ü*¨:°zÓBˆ
à!%€Dà57€JØÐ#Ñ'7ã"ˆHðÜ*Ø ØØØ$ØØ"ó÷ �ñ ñ #ô ,/«5ˆð	 Ü)×8Ñ8÷ñ %/óð %ó ÷ ‰JˆD�!�Qó0 "�Ø˜D’=Ü#×,Ñ,¬WÕ5ØŸ™œ	÷ 6Ð5ð "ð  ˆLà€|Ù)3ÔC© #»s¸š#¸s˜#¨ˆÑCð!	Ø,¨QÑ/ˆOÜ�>Ó" aÒ'Ø%Ð%ô ˜OÓ,�ÜÓC±NÓCÔCØ)Ð)ð 0×6Ñ6Ø—I‘IÑA±.ÓAÓAó�ô
 ˜o¬wÔ7Ø"1×"7Ñ"7�KÜó á#1óô ô & k°3Ó7Ð7Ü ´Ô>Ä3ñ GÙ=KóGô Dô ' sÓ+Ð+ô ˜c“lÐ"ð
 €Kðcúô !¤'Ð*ò Úðúð
ù÷4 6Ñ5ûó "�Ø˜D’=Ü#×,Ñ,¬WÕ5ØŸ™œ	÷ 6×5Ñ5úð "ð  ‰Lüó DøðB "ˆNØ‰JüsÇ   ‰AI.Á!G(Á4G%Á5G(Á9I.Â&H Â.G>Â/H Â7	I.ÃI.ÃHÃ+I.Ã>IÄI.ÄCI% Ç#I.Ç%G(Ç(G;Ç7I.Ç:G;Ç;I.Ç>H ÈH	ÈI.È
IÈIÈ2I	É	IÉIÉIÉ	I.É%I+É+I.r   Ú	addr_infor   c              ƒ   óú  K  — g }|j                  |«       |\  }}}	}
}d}	 |�	 ||«      }nt        j                  |||	¬«      }|�|j                  |«       |j                  d«       |�G|D ]!  \  }}
}
}
}||k7  rŒ	 |j	                  |«        n" |r|j                  «       ‚t        d|›d�«      ‚| j                  ||«      ƒ d{  –—†  |dx}}S # t
        $ rU}d|›d|j                  xs dj                  «       › �}t        |j                  |«      }|j                  |«       Y d}~Œ¾d}~ww xY w7 Œk# t        t
        f$ ra}|j                  |«       |�H|�|j                  |«       	 |j                  «        ‚ # t
        $ r}|j                  |«       ‚ d}~ww xY w‚ d}~w |�H|�|j                  |«       	 |j                  «        ‚ # t
        $ r}|j                  |«       ‚ d}~ww xY w‚ xY w# dx}}w xY w­w)	aq  
    Create, bind and connect one socket.

    If open_sockets is passed, add the socket to the set of open sockets.
    Any failure caught here will remove the socket from the set and close it.

    Callers can use this set to close any sockets that are not the winner
    of all staggered tasks in the result there are runner up sockets aka
    multiple winners.
    N)ÚfamilyÚtypeÚprotoFz*error while attempting to bind on address z: Ú z&no matching local address with family=z found)ÚappendÚsocketÚaddÚsetblockingÚbindr%   ÚstrerrorÚlowerr&   ÚpopÚsock_connectr)   Úremover3   )r   r   r@   r   r   r   Úmy_exceptionsrB   Útype_rD   r9   Úaddressr8   ÚlfamilyÚladdrr   r>   Úes                     r   r   r   Ÿ   sA  è ø€ ð$ 35€MØ×Ñ�mÔ$Ø'0Ñ$€FˆE�5˜!˜WØ€Dð5*ØÐ%Ù! )Ó,‰Dä—=‘=¨°UÀ%ÔHˆDØÐ#Ø×Ñ˜TÔ"Ø×Ñ˜ÔØÐ'Û+;Ñ'�˜˜A˜q %à˜fÒ$Øð
.Ø—I‘I˜eÔ$Ùð ,<ñ  !Ø'×+Ñ+Ó-Ð-ä!Ð$KÀFÀ9ÈFÐ"SÓTÐTØ×Ñ  gÓ.×.Ð.Øð. &*Ð)ˆ
‘]øôK ò .ð#Ø#( )¨2ØŸL™LÒ.¨B×5Ñ5Ó7Ð8ð:ð ô
 " #§)¡)¨SÓ1�CØ!×(Ñ(¨×-Ñ-ûð.úð 	/ùäœ'Ð"ò 
Ø×Ñ˜SÔ!ØÐØÐ'Ø×#Ñ# DÔ)ðØ—
‘
”ð 	øô ò Ø×$Ñ$ QÔ'Øûðúð 	ûð	ØÐØÐ'Ø×#Ñ# DÔ)ðØ—
‘
”ð 	øô ò Ø×$Ñ$ QÔ'Øûðúð 	ûà%)Ð)ˆ
‘]üs´   ‚G;¡AD4 Á<CÂ9D4 ÃD2ÃD4 ÃG;Ã	D/ÃAD*Ä%D4 Ä*D/Ä/D4 Ä4G/Å&FÅ*E;Å:FÅ;	FÆFÆFÆFÆG/Æ:GÇ
G/Ç	G+ÇG&Ç&G+Ç+G/Ç/G2 Ç2G8Ç8G;Ú	addrinfosÚfirst_address_family_countc                 ó”  — t        j                  «       }| D ]$  }|d   }||vrg ||<   ||   j                  |«       Œ& t        |j	                  «       «      }g }|dkD  r%|j                  |d   d|dz
   «       |d   d|dz
  …= |j                  d„ t        j                  j                  t        j                  |Ž «      D «       «       |S )z-Interleave list of addrinfo tuples by family.r   r   Nc              3   ó$   K  — | ]  }|�|–— Œ
 y ­wr   © )r   Úas     r   r   z(_interleave_addrinfos.<locals>.<genexpr>   s   è ø€ ð áWˆAØˆ=ô 	
ÙWùs   ‚)
ÚcollectionsÚOrderedDictrF   ÚlistÚvaluesÚextendÚ	itertoolsÚchainÚfrom_iterableÚzip_longest)rV   rW   Úaddrinfos_by_familyÚaddrrB   Úaddrinfos_listsÚ	reordereds          r   r.   r.   í   së   € ô 	×ÑÓ!ð ó ˆØ�a‘ˆØÐ,Ñ,Ø*,Ð Ñ'Ø˜FÑ#×*Ñ*¨4Õ0ð	 ô
 Ð.×5Ñ5Ó7Ó8€Oà$&€IØ! AÒ%Ø×Ñ˜¨Ñ+Ð,LÐ.HÈ1Ñ.LÐMÔNØ˜AÑÐ?Ð!;¸aÑ!?Ð?Ð@Ø×Ññ ä—‘×.Ñ.¬y×/DÑ/DÀoÐ/VÔWóô ð
 Ðó    )NNN)r   )Ú__doc__r+   r\   r1   r   ra   rG   Úcollections.abcr   rE   r   Útypesr   r   ÚfloatÚintÚAbstractEventLoopr?   r^   r%   r)   r/   r   r.   rZ   ri   r   Ú<module>rp      sp  ðÙ ã Û Û Û Û Û Ý $å ß 2ð 7;Ø)-Ø!Ø-1Ø/3òMØ˜Ñ&ðMð ˜|Ñ,¨tÑ3ðMð   $™,ð	Mð
 �d‘
ðMð ×
#Ñ
# dÑ
*ðMð &¨Ñ,ðMð ‡]�]óMðh 7;Ø.2Ø/3ñK*Ø
×
#Ñ
#ðK*à�T˜' LÑ0Ñ1Ñ2ðK*ð ðK*ð ˜|Ñ,¨tÑ3ð	K*ð
 �f—m‘mÑ$ tÑ+ðK*ð &¨Ñ,ðK*ð ‡]�]óK*ð^ JKñØ˜Ñ%ðØCFðà	ˆ,Ñôri   