
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3

  \3k  ã               @   sl  d dl Z d dl T d dlZd dlZd dlZd dlZd dlmZmZ yd dlZW n e	k
rd   dZY nX e
eddƒZe
eddƒZe
eddƒZd	d
dddgZejeje ƒƒ ejdedd„ ƒ ejdedd„ ƒ ejdedd„ ƒ ejdedd„ ƒ dZdZdd„ ZeZejjƒ jdƒ�rœi Zded< ded< ded< d ed!< d"ed#< d$ed%< d&ed'< d(ed)< d*ed+< d,ed-< d.ed/< d0ed1< d2ed3< d4ed5< d6ed7< ejd8ƒ G d9d:„ d:eƒZG d;d<„ d<e jƒZdLd=d	„Ze e jd>ƒ�rèd?d@„ Z!ejd@ƒ e e dAƒ�rde"d fdBdA„Z#ne$e"d fdCdA„Z#ejdAƒ dDe#_%eehZ&G dEdF„ dFej'ƒZ(dMdHd
„Z)e*ƒ Z+e+dfdId„Z,dNdJdK„Z-dS )Oé    N)Ú*)ÚIntEnumÚIntFlagÚEBADFé	   ÚEAGAINé   ÚEWOULDBLOCKÚfromfdÚgetfqdnÚcreate_connectionÚAddressFamilyÚ
SocketKindc             C   s   | j ƒ o| jdƒS )NZAF_)ÚisupperÚ
startswith)ÚC© r   ú/usr/lib64/python3.6/socket.pyÚ<lambda>L   s    r   c             C   s   | j ƒ o| jdƒS )NZSOCK_)r   r   )r   r   r   r   r   Q   s    ZMsgFlagc             C   s   | j ƒ o| jdƒS )NZMSG_)r   r   )r   r   r   r   r   V   s    ZAddressInfoc             C   s   | j ƒ o| jdƒS )NZAI_)r   r   )r   r   r   r   r   [   s    z	127.0.0.1z::1c             C   s"   y|| ƒS  t k
r   | S X d S )N)Ú
ValueError)ÚvalueZ
enum_klassr   r   r   Ú_intenum_convertera   s    r   ÚwinzThe operation was interrupted.i'  zA bad file handle was passed.i'  zPermission denied.i'  z!A fault occurred on the network??i'  z#An invalid operation was attempted.i&'  z The socket operation would blocki3'  z,A blocking operation is already in progress.i4'  zThe network address is in use.i@'  zThe connection has been reset.iF'  zThe network has been shut down.iJ'  zThe operation timed out.iL'  zConnection refused.iM'  zThe name is too long.iO'  zThe host is down.iP'  zThe host is unreachable.iQ'  ÚerrorTabc               @   s   e Zd ZdS )Ú_GiveupOnSendfileN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   ‚   s    r   c                   s0  e Zd ZdddgZeeddfdd„Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zd7ddddœdd„Zeedƒr~d8dd„Zn
d9dd„Zd:dd„Zdd„ Zd;d d!„Zd"d#„ Zejfd$d%„Zd&d'„ Z‡ fd(d)„Ze‡ fd*d+„ƒZe‡ fd,d-„ƒZejd.k�rd/d0„ Zd1d2„ Znd3d0„ Zd4d2„ Zd5e_ d6e_ ‡  Z!S )<ÚsocketÚ__weakref__Ú_io_refsÚ_closedr   Nc             C   s$   t jj| ||||ƒ d| _d| _d S )Nr   F)Ú_socketr   Ú__init__r    r!   )ÚselfÚfamilyÚtypeÚprotoÚfilenor   r   r   r#   ‹   s    zsocket.__init__c             C   s   | S )Nr   )r$   r   r   r   Ú	__enter__”   s    zsocket.__enter__c             G   s   | j s| jƒ  d S )N)r!   Úclose)r$   Úargsr   r   r   Ú__exit__—   s    zsocket.__exit__c             C   s¸   t | ddƒ}d| jj| jj|r"dnd| jƒ | j| j| jf }|s¬y | jƒ }|r^|dt	|ƒ 7 }W n t
k
rt   Y nX y | jƒ }|r”|dt	|ƒ 7 }W n t
k
rª   Y nX |d7 }|S )	Nr!   Fz,<%s.%s%s fd=%i, family=%s, type=%s, proto=%iz	 [closed]Ú z
, laddr=%sz
, raddr=%sú>)ÚgetattrÚ	__class__r   r   r(   r%   r&   r'   ÚgetsocknameÚstrÚerrorZgetpeername)r$   ÚclosedÚsZladdrZraddrr   r   r   Ú__repr__›   s0    

zsocket.__repr__c             C   s   t dƒ‚d S )NzCannot serialize socket object)Ú	TypeError)r$   r   r   r   Ú__getstate__¸   s    zsocket.__getstate__c             C   s6   t | jƒ ƒ}| j| j| j| j|d�}|j| jƒ ƒ |S )N)r(   )Údupr(   r0   r%   r&   r'   Ú
settimeoutÚ
gettimeout)r$   ÚfdÚsockr   r   r   r9   »   s    z
socket.dupc             C   sZ   | j ƒ \}}| jtƒ jddƒ @ }t| j|| j|d�}tƒ d krR| jƒ rR|j	dƒ ||fS )NZSOCK_NONBLOCKr   )r(   T)
Z_acceptr&   ÚglobalsÚgetr   r%   r'   Zgetdefaulttimeoutr;   Úsetblocking)r$   r<   Úaddrr&   r=   r   r   r   ÚacceptÆ   s    
zsocket.acceptÚr)ÚencodingÚerrorsÚnewlinec            C   sü   t |ƒdddhks td|f ƒ‚d|k}d|kp4| }d|k}d}	|rN|	d7 }	|rZ|	d7 }	t| |	ƒ}
|  jd7  _|d kr~d	}|dk rŒtj}|dkr¤|s tdƒ‚|
S |r¼|r¼tj|
|
|ƒ}n|rÎtj|
|ƒ}ntj|
|ƒ}|râ|S tj	||||ƒ}||_
|S )
NrC   ÚwÚbz&invalid mode %r (only r, w, b allowed)r-   é   r   z!unbuffered streams must be binaryéÿÿÿÿ)Úsetr   ÚSocketIOr    ÚioÚDEFAULT_BUFFER_SIZEÚBufferedRWPairÚBufferedReaderÚBufferedWriterÚTextIOWrapperÚmode)r$   rS   Ú	bufferingrD   rE   rF   ZwritingZreadingZbinaryZrawmodeÚrawÚbufferÚtextr   r   r   ÚmakefileÚ   s<    
zsocket.makefileÚsendfilec          2   C   sì  | j |||ƒ | jƒ }y|jƒ }W n0 ttjfk
rR } zt|ƒ‚W Y d d }~X nX ytj|ƒj}W n* t	k
rŽ } zt|ƒ‚W Y d d }~X nX |s˜dS |s |n|}| j
ƒ }	|	dkr¼tdƒ‚ttdƒrÐtjƒ }
ntjƒ }
|
j|tjƒ d}|
j}tj}zÎxÈ|	�r||	ƒ �rtjdƒ‚|�r0|| }|dk�r0P y|||||ƒ}W n^ tk
�rf   |	�s`|ƒ  wúY qú t	k
�r  } z|dk�rŠt|ƒ‚|d ‚W Y d d }~X qúX |dk�r®P ||7 }||7 }qúW |S |dk�ræt|dƒ�ræ|j|ƒ X d S )Nr   z&non-blocking sockets are not supportedÚPollSelectorz	timed outÚseek)Ú_check_sendfile_paramsr(   ÚAttributeErrorrM   ÚUnsupportedOperationr   ÚosÚfstatÚst_sizeÚOSErrorr;   r   ÚhasattrÚ	selectorsrZ   ZSelectSelectorÚregisterZEVENT_WRITEZselectrY   r"   ÚtimeoutÚBlockingIOErrorr[   )r$   ÚfileÚoffsetÚcountZsocknor(   ÚerrZfsizeÚ	blocksizerf   ZselectorÚ
total_sentZselector_selectZos_sendfileÚsentr   r   r   Ú_sendfile_use_sendfile  s`    





zsocket._sendfile_use_sendfilec             C   s   t dƒ‚d S )Nz,os.sendfile() not available on this platform)r   )r$   rh   ri   rj   r   r   r   ro   G  s    c       
      C   s  | j |||ƒ | jƒ dkr"tdƒ‚|r0|j|ƒ |r>t|dƒnd}d}|j}| j}z†x€|rrt|| |ƒ}|dkrrP t||ƒƒ}|s„P xLy||ƒ}	W n tk
r¨   w†Y q†X ||	7 }|	t	|ƒk rÌ||	d … }q†P q†W qVW |S |dkoêt
|dƒ� rü|j|| ƒ X d S )Nr   z&non-blocking sockets are not supportedi    r[   )r\   r;   r   r[   ÚminÚreadÚsendÚ
memoryviewrg   Úlenrc   )
r$   rh   ri   rj   rl   rm   Z	file_readZ	sock_sendÚdatarn   r   r   r   Ú_sendfile_use_sendK  s<    

zsocket._sendfile_use_sendc             C   sd   dt |ddƒkrtdƒ‚| jt@ s*tdƒ‚|d k	r`t|tƒsJtdj|ƒƒ‚|dkr`tdj|ƒƒ‚d S )NrH   rS   z$file should be opened in binary modez+only SOCK_STREAM type sockets are supportedz+count must be a positive integer (got {!r})r   )r/   r   r&   ÚSOCK_STREAMÚ
isinstanceÚintr7   Úformat)r$   rh   ri   rj   r   r   r   r\   o  s    

zsocket._check_sendfile_paramsc             C   s2   y| j |||ƒS  tk
r,   | j|||ƒS X d S )N)ro   r   rv   )r$   rh   ri   rj   r   r   r   rY   |  s    zsocket.sendfilec             C   s*   | j dkr|  j d8  _ | jr&| jƒ  d S )Nr   rI   )r    r!   r*   )r$   r   r   r   Ú_decref_socketios“  s    
zsocket._decref_socketiosc             C   s   |j | ƒ d S )N)r*   )r$   Z_ssr   r   r   Ú_real_close™  s    zsocket._real_closec             C   s   d| _ | jdkr| jƒ  d S )NTr   )r!   r    r|   )r$   r   r   r   r*   �  s    
zsocket.closec                s   d| _ tƒ jƒ S )NT)r!   ÚsuperÚdetach)r$   )r0   r   r   r~   £  s    zsocket.detachc                s   t tƒ jtƒS )N)r   r}   r%   r   )r$   )r0   r   r   r%   ­  s    zsocket.familyc                s   t tƒ jtƒS )N)r   r}   r&   r   )r$   )r0   r   r   r&   ³  s    zsocket.typeÚntc             C   s   t j| jƒ ƒS )N)r_   Zget_handle_inheritabler(   )r$   r   r   r   Úget_inheritableº  s    zsocket.get_inheritablec             C   s   t j| jƒ |ƒ d S )N)r_   Zset_handle_inheritabler(   )r$   Úinheritabler   r   r   Úset_inheritable¼  s    zsocket.set_inheritablec             C   s   t j| jƒ ƒS )N)r_   r€   r(   )r$   r   r   r   r€   ¿  s    c             C   s   t j| jƒ |ƒ d S )N)r_   r‚   r(   )r$   r�   r   r   r   r‚   Á  s    z&Get the inheritable flag of the socketz&Set the inheritable flag of the socket)rC   N)r   N)r   N)r   N)r   N)"r   r   r   Ú	__slots__ÚAF_INETrw   r#   r)   r,   r6   r8   r9   rB   rX   rc   r_   ro   rv   r\   rY   r{   r"   r   r|   r*   r~   Úpropertyr%   r&   Únamer€   r‚   Ú__doc__Ú__classcell__r   r   )r0   r   r   …   s:   
	)
A

$


r   c             C   s   t | ƒ}t||||ƒS )N)r9   r   )r<   r%   r&   r'   Znfdr   r   r   r
   Æ  s    Zsharec             C   s   t ddd| ƒS )Nr   )r   )Úinfor   r   r   Ú	fromshareÐ  s    rŠ   Ú
socketpairc             C   sh   | d kr*yt } W n tk
r(   t} Y nX tj| ||ƒ\}}t| |||jƒ ƒ}t| |||jƒ ƒ}||fS )N)ZAF_UNIXÚ	NameErrorr„   r"   r‹   r   r~   )r%   r&   r'   ÚarH   r   r   r   r‹   Û  s    
c       
      C   s  | t krt}n| tkrt}ntdƒ‚|tkr4tdƒ‚|dkrDtdƒ‚t| ||ƒ}z¢|j|dfƒ |jƒ  |j	ƒ d d… \}}t| ||ƒ}yP|j
dƒ y|j||fƒ W n ttfk
r¾   Y nX |j
dƒ |jƒ \}}	W n   |jƒ  ‚ Y nX W d |jƒ  X ||fS )Nz?Only AF_INET and AF_INET6 socket address families are supportedz)Only SOCK_STREAM socket type is supportedr   zOnly protocol zero is supportedé   FT)r„   Ú
_LOCALHOSTZAF_INET6Ú_LOCALHOST_V6r   rw   r   ÚbindZlistenr1   r@   Úconnectrg   ÚInterruptedErrorrB   r*   )
r%   r&   r'   ÚhostZlsockrA   ÚportZcsockZssockÚ_r   r   r   r‹   ð  s8    


a8  socketpair([family[, type[, proto]]]) -> (socket object, socket object)
Create a pair of socket objects from the sockets returned by the platform
socketpair() function.
The arguments are the same as for socket() except the default family is AF_UNIX
if defined on the platform; otherwise, the default is AF_INET.
c                   sl   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Z‡ fdd„Zdd„ Z	e
dd„ ƒZe
dd„ ƒZdd„ Z‡  ZS )rL   c             C   sZ   |d
krt d| ƒ‚tjj| ƒ || _d|kr6|d7 }|| _d|k| _d|k| _d	| _d S )NrC   rG   ÚrwÚrbÚwbÚrwbzinvalid mode: %rrH   F)rC   rG   r—   r˜   r™   rš   )	r   rM   Ú	RawIOBaser#   Ú_sockÚ_modeÚ_readingÚ_writingÚ_timeout_occurred)r$   r=   rS   r   r   r   r#   0  s    

zSocketIO.__init__c             C   s†   | j ƒ  | jƒ  | jrtdƒ‚xby| jj|ƒS  tk
rH   d| _‚ Y q  tk
r| } z|jd t	krjd S ‚ W Y d d }~X q X q W d S )Nz!cannot read from timed out objectTr   )
Ú_checkClosedÚ_checkReadabler    rb   rœ   Z	recv_intorf   r3   r+   Ú_blocking_errnos)r$   rH   Úer   r   r   Úreadinto<  s    zSocketIO.readintoc             C   sX   | j ƒ  | jƒ  y| jj|ƒS  tk
rR } z|jd tkr@d S ‚ W Y d d }~X nX d S )Nr   )r¡   Ú_checkWritablerœ   rr   r3   r+   r£   )r$   rH   r¤   r   r   r   ÚwriteS  s    zSocketIO.writec             C   s   | j rtdƒ‚| jS )NzI/O operation on closed socket.)r4   r   rž   )r$   r   r   r   Úreadablec  s    zSocketIO.readablec             C   s   | j rtdƒ‚| jS )NzI/O operation on closed socket.)r4   r   rŸ   )r$   r   r   r   Úwritablej  s    zSocketIO.writablec                s   | j rtdƒ‚tƒ jƒ S )NzI/O operation on closed socket.)r4   r   r}   Úseekable)r$   )r0   r   r   rª   q  s    zSocketIO.seekablec             C   s   | j ƒ  | jjƒ S )N)r¡   rœ   r(   )r$   r   r   r   r(   x  s    zSocketIO.filenoc             C   s   | j s| jƒ S dS d S )NrI   rJ   )r4   r(   )r$   r   r   r   r†   ~  s    zSocketIO.namec             C   s   | j S )N)r�   )r$   r   r   r   rS   …  s    zSocketIO.modec             C   s*   | j r
d S tjj| ƒ | jjƒ  d | _d S )N)r4   rM   r›   r*   rœ   r{   )r$   r   r   r   r*   ‰  s
    
zSocketIO.close)r   r   r   r#   r¥   r§   r¨   r©   rª   r(   r…   r†   rS   r*   rˆ   r   r   )r0   r   rL     s   rL   r-   c             C   sp   | j ƒ } |  s| dkrtƒ } yt| ƒ\}}}W n tk
rB   Y n*X |jd|ƒ x|D ]} d| krVP qVW |} | S )Nz0.0.0.0r   Ú.)ÚstripZgethostnameZgethostbyaddrr3   Úinsert)r†   ZhostnameÚaliasesZipaddrsr   r   r   r   ”  s    	
c             C   sÆ   | \}}d }xžt ||dtƒD ]Œ}|\}}}	}
}d }y>t|||	ƒ}|tk	rR|j|ƒ |r`|j|ƒ |j|ƒ d }|S  tk
r¦ } z|}|d k	r–|jƒ  W Y d d }~X qX qW |d k	rº|‚ntdƒ‚d S )Nr   z!getaddrinfo returns an empty list)	Úgetaddrinforw   r   Ú_GLOBAL_DEFAULT_TIMEOUTr:   r‘   r’   r3   r*   )Zaddressrf   Zsource_addressr”   r•   rk   ÚresÚafÚsocktyper'   Ú	canonnameÚsar=   r–   r   r   r   r   °  s*    


c             C   sT   g }xJt j| |||||ƒD ]2}|\}}	}}
}|jt|tƒt|	tƒ||
|fƒ qW |S )N)r"   r¯   Úappendr   r   r   )r”   r•   r%   r&   r'   ÚflagsZaddrlistr±   r²   r³   r´   rµ   r   r   r   r¯   Ø  s    r¯   )r   )r-   )r   r   r   r   ).r"   r_   ÚsysrM   rd   Úenumr   r   ÚerrnoÚImportErrorr/   r   r   r	   Ú__all__ÚextendÚ_get_exports_listÚ_convertr   r�   r�   r   r   Z_realsocketÚplatformÚlowerr   r   r¶   Ú	Exceptionr   r
   rc   rŠ   rw   r‹   r„   r‡   r£   r›   rL   r   Úobjectr°   r   r¯   r   r   r   r   Ú<module>1   sŽ    






  C
	
$
u
'