관리-도구
편집 파일: connection.cpython-39.opt-2.pyc
a ����܅�gp|����������������������@���s��g�d��Z�ddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl mZ�ddl mZm Z �ddlmZ�ejZz$ddlZddlmZmZmZmZ�W�n"�ey����ejdkr���dZY�n0�d Zd ZdZe���ZdZdgZe ed �r�d Zed g7�Zejdk�rdZedg7�Zefdd�Z!dd��Z"dd��Z#dd��Z$dd��Z%G�dd��d�Z&e�rfG�dd��de&�Z'G�dd��de&�Z(G�dd ��d e)�Z*dQd!d"�Z+ejdk�r�dRd$d%�Z,n dSd&d%�Z,G�d'd(��d(e)�Z-d)d*��Z.ejdk�r�G�d+d,��d,e)�Z/d-d.��Z0d/Z1d0Z2d1Z3d2Z4d3d4��Z5d5d6��Z6G�d7d8��d8e)�Z7d9d:��Z8d;d<��Z9G�d=d>��d>e*�Z:d?d@��Z;ejdk�rrdAdB��Z<ej=ej>hZ?dTdCdD�Z@n,ddlAZAe eAdE��r�eAjBZCneAjDZCdUdFdD�Z@ejdk�r�dGdH��ZEdIdJ��ZFe�Ge(eE��dKdL��ZHdMdN��ZIe�Ge'eH��ndOdH��ZEdPdJ��ZFe�Ge(eE��dS�)V)�Client�Listener�Pipe�wait�����N����)�util)�AuthenticationError�BufferTooShort)� reduction)� WAIT_OBJECT_0�WAIT_ABANDONED_0�WAIT_TIMEOUT�INFINITE�win32i� ��g������4@�sha256�AF_INET�AF_UNIX�AF_PIPEc�����������������C���s���t����|��S��N��time� monotonic)�timeout��r����2/usr/lib64/python3.9/multiprocessing/connection.py� _init_timeout?���s����r���c�����������������C���s���t����|�kS�r���r���)�tr���r���r����_check_timeoutB���s����r���c�����������������C���sX���|�dkrdS�|�dkr&t�jdt���d�S�|�dkrLt�jdt���tt�f�dd�S�td ��d�S�) Nr���)� localhostr���r���z listener-)�prefix�dirr���z\\.\pipe\pyc-%d-%d-��zunrecognized family) �tempfile�mktempr����get_temp_dir�os�getpid�next� _mmap_counter� ValueError��familyr���r���r����arbitrary_addressI���s������r,���c�����������������C���sJ���t�jdkr|�dkrtd|����t�jdkrF|�dkrFtt|��sFtd|����d�S�)Nr���r���zFamily %s is not recognized.r���)�sys�platformr)����hasattr�socketr*���r���r���r����_validate_familyW���s ���� r1���c�����������������C���sT���t�|��tkrdS�t�|��tu�r*|��d�r*dS�t�|��tu�s@t�|��rDdS�td|����d�S�)Nr���z\\r���r���zaddress type of %r unrecognized)�type�tuple�str� startswithr����is_abstract_socket_namespacer)���)�addressr���r���r����address_typec���s����r8���c�������������������@���s����e�Zd�ZdZd+dd�Zdd��Zdd��Zd d ��Zdd��Zd d��Z e dd���Ze dd���Ze dd���Z dd��Zdd��Zd,dd�Zdd��Zd-dd�Zd.d d!�Zd"d#��Zd/d%d&�Zd'd(��Zd)d*��ZdS�)0�_ConnectionBaseNTc�����������������C���s>���|����}|dk�rtd��|s(|s(td��||�_||�_||�_d�S�)Nr���zinvalid handlez6at least one of `readable` and `writable` must be True)� __index__r)����_handle� _readable� _writable)�self�handle�readable�writabler���r���r����__init__y���s�����z_ConnectionBase.__init__c�����������������C���s���|�j�d�ur|�����d�S�r����r;����_close�r>���r���r���r����__del__����s���� z_ConnectionBase.__del__c�����������������C���s���|�j�d�u�rtd��d�S�)Nzhandle is closed)r;����OSErrorrE���r���r���r���� _check_closed����s���� z_ConnectionBase._check_closedc�����������������C���s���|�j�std��d�S�)Nzconnection is write-only)r<���rG���rE���r���r���r����_check_readable����s����z_ConnectionBase._check_readablec�����������������C���s���|�j�std��d�S�)Nzconnection is read-only)r=���rG���rE���r���r���r����_check_writable����s����z_ConnectionBase._check_writablec�����������������C���s"���|�j�rd|�_n|�����td��d�S�)NFzbad message length)r=���r<����closerG���rE���r���r���r����_bad_message_length����s����z#_ConnectionBase._bad_message_lengthc�����������������C���s ���|�j�d�u�S�r����r;���rE���r���r���r����closed����s����z_ConnectionBase.closedc�����������������C���s���|�j�S�r���)r<���rE���r���r���r���r@�������s����z_ConnectionBase.readablec�����������������C���s���|�j�S�r���)r=���rE���r���r���r���rA�������s����z_ConnectionBase.writablec�����������������C���s���|������|�jS�r���)rH���r;���rE���r���r���r����fileno����s����z_ConnectionBase.filenoc�����������������C���s*���|�j�d�ur&z|�����W�d�|�_�nd�|�_�0�d�S�r���rC���rE���r���r���r���rK�������s���� z_ConnectionBase.closer���c�����������������C���s����|������|�����t|�}|jdkr.tt|��}t|�}|dk�rFtd��||k�rVtd��|d�u�rh||�}n&|dk�rztd��n||�|kr�td��|��||||�����d�S�)Nr���r���zoffset is negativezbuffer length < offsetzsize is negativezbuffer length < offset + size)rH���rJ���� memoryview�itemsize�bytes�lenr)����_send_bytes)r>����buf�offset�size�m�nr���r���r���� send_bytes����s"���� z_ConnectionBase.send_bytesc�����������������C���s$���|������|�����|��t�|���d�S�r���)rH���rJ���rT����_ForkingPickler�dumps�r>����objr���r���r����send����s����z_ConnectionBase.sendc�����������������C���sJ���|������|�����|d�ur(|dk�r(td��|��|�}|d�u�rB|�����|���S�)Nr���znegative maxlength)rH���rI���r)����_recv_bytesrL����getvalue)r>���� maxlengthrU���r���r���r���� recv_bytes����s���� z_ConnectionBase.recv_bytesc�����������������C���s����|������|�����t|���}|j}|t|��}|dk�r>td��n||krNtd��|����}|���}|||�k�rvt|� ����|� d��|�|||�||�|�����|W��d�����S�1�s�0����Y��d�S�)Nr���znegative offsetzoffset too large)rH���rI���rP���rQ���rS���r)���r`����tellr ���ra����seek�readinto)r>���rU���rV���rX���rQ����bytesize�resultrW���r���r���r����recv_bytes_into����s$���� �z_ConnectionBase.recv_bytes_intoc�����������������C���s&���|������|�����|����}t�|����S�r���)rH���rI���r`���r[����loads� getbuffer)r>���rU���r���r���r����recv����s����z_ConnectionBase.recv���������c�����������������C���s���|������|�����|��|�S�r���)rH���rI����_poll�r>���r���r���r���r����poll��s����z_ConnectionBase.pollc�����������������C���s���|�S�r���r���rE���r���r���r���� __enter__��s����z_ConnectionBase.__enter__c�����������������C���s���|������d�S�r����rK����r>����exc_type� exc_value�exc_tbr���r���r����__exit__ ��s����z_ConnectionBase.__exit__)TT)r���N)N)r���)rm���)�__name__� __module__�__qualname__r;���rB���rF���rH���rI���rJ���rL����propertyrN���r@���rA���rO���rK���rZ���r_���rc���ri���rl���rp���rq���rw���r���r���r���r���r9���v���s.��� r9���c�������������������@���s@���e�Zd�ZdZejfdd�Zdd��Zd dd�Zd d ��Z dd��Z dS�)�PipeConnectionFc�����������������C���s���||�j���d�S�r���rM���)r>���Z_CloseHandler���r���r���rD�����s����zPipeConnection._closec�������������� ���C���sv���t�j|�j|dd�\}}zJz |t�jkr6t��|jgdt�}W�n���|������Y�n0�W�|�d�\}}n|�d�\}}0�d�S�)NT�� overlappedF) �_winapiZ WriteFiler;����ERROR_IO_PENDING�WaitForMultipleObjects�eventr����cancel�GetOverlappedResult)r>���rU����ov�err�waitresZnwrittenr���r���r���rT�����s���� � zPipeConnection._send_bytesNc����������� ��� ���C���s���|�j�rd|�_�t���S�|d�u�r dnt|d�}�z tj|�j|dd�\}}z�z |tjkrdt�|j gdt �}W�n���|������Y�n0�W�|�d�\}}|dkr�t���}|� |�����|W�S�|tjkr�|��||�W�S�nh|�d�\}}|dk�rt���}|� |�����|�����Y�W�S�|tjk�r2|��||������Y�W�S�0�W�n<�t�yr�}�z"|jtjk�r\t�n��W�Y�d�}~n d�}~0�0�td��d�S�)NF����Tr}���r���z.shouldn't get here; expected KeyboardInterrupt)�_got_empty_message�io�BytesIO�minr����ReadFiler;���r����r����r����r���r����r�����writerk���ZERROR_MORE_DATA�_get_more_datarG����winerror�ERROR_BROKEN_PIPE�EOFError�RuntimeError) r>����maxsizeZbsizer����r����r����Znread�f�er���r���r���r`���*��sH���� � � � zPipeConnection._recv_bytesc�����������������C���s.���|�j�st�|�j�d�dkrdS�tt|�g|��S�)Nr���T)r����r���� PeekNamedPiper;����boolr���ro���r���r���r���rn���J��s �����zPipeConnection._pollc�����������������C���s����|����}t���}|�|��t�|�j�d�}|d�urJt|�|�|krJ|�����tj |�j|dd�\}}|� d�\}}|�|������|S�)Nr���Tr}���)rk���r����r����r����r���r����r;���rS���rL���r����r����)r>���r����r����rU���r�����leftr����Zrbytesr���r���r���r����P��s���� zPipeConnection._get_more_data)N)rx���ry���rz���r����r����CloseHandlerD���rT���r`���rn���r����r���r���r���r���r|�����s��� r|���c�������������������@���sx���e�Zd�Zer(ejfdd�ZejZej Z nejfdd�Zej ZejZ efdd�Ze fdd�Zdd ��Zddd�Zd d��Zd S�)� Connectionc�����������������C���s���||�j���d�S�r���rM����r>���rD���r���r���r���rD���g��s����zConnection._closec�����������������C���s���||�j���d�S�r���rM���r����r���r���r���rD���l��s����c�����������������C���s8���t�|�}||�j|�}||8�}|dkr&q4||d���}qd�S��Nr���)rS���r;���)r>���rU���r����� remainingrY���r���r���r����_sendq��s����zConnection._sendc�����������������C���sb���t����}|�j}|}|dkr^|||�}t|�}|dkrJ||krBt�ntd��|�|��||8�}q|S�)Nr���zgot end of file during message)r����r����r;���rS���r����rG���r����)r>���rW����readrU���r?���r�����chunkrY���r���r���r����_recvz��s���� zConnection._recvc�����������������C���s����t�|�}|dkrHt�dd�}t�d|�}|��|��|��|��|��|��n8t�d|�}|dkrr|��|��|��|��n|��||���d�S�)Ni����!i����!Qi�@��)rS����struct�packr����)r>���rU���rY���� pre_header�headerr���r���r���rT������s���� zConnection._send_bytesNc�����������������C���s^���|���d�}t�d|����\}|dkr@|���d�}t�d|����\}|d�urT||krTd�S�|���|�S�)N����r����r��������r����)r����r�����unpackra���)r>���r����rU���rW���r���r���r���r`������s���� zConnection._recv_bytesc�����������������C���s���t�|�g|�}t|�S�r���)r���r����)r>���r����rr���r���r���rn������s����zConnection._poll)N)rx���ry���rz���r����_multiprocessingZclosesocketrD���r_����_writerl����_readr%���rK���r����r����r����r����rT���r`���rn���r���r���r���r���r����`��s��� r����c�������������������@���sN���e�Zd�Zddd�Zdd��Zdd��Zed d ���Zedd���Zd d��Z dd��Z dS�)r���Nr���c�����������������C���sp���|p|rt�|�pt}|pt|�}t|��|dkr>t||�|�_nt|||�|�_|d�urft|t�sft d��||�_ d�S��Nr���zauthkey should be a byte string)r8����default_familyr,���r1����PipeListener� _listener�SocketListener� isinstancerR���� TypeError�_authkey)r>���r7���r+����backlog�authkeyr���r���r���rB������s�����zListener.__init__c�����������������C���s>���|�j�d�u�rtd��|�j����}|�jr:t||�j��t||�j��|S�)Nzlistener is closed)r����rG����acceptr�����deliver_challenge�answer_challenge)r>����cr���r���r���r�������s���� zListener.acceptc�����������������C���s ���|�j�}|d�urd�|�_�|����d�S�r���)r����rK���)r>����listenerr���r���r���rK������s����zListener.closec�����������������C���s���|�j�jS�r���)r�����_addressrE���r���r���r���r7������s����zListener.addressc�����������������C���s���|�j�jS�r���)r�����_last_acceptedrE���r���r���r���� last_accepted���s����zListener.last_acceptedc�����������������C���s���|�S�r���r���rE���r���r���r���rq������s����zListener.__enter__c�����������������C���s���|������d�S�r���rr���rs���r���r���r���rw������s����zListener.__exit__)NNr���N)rx���ry���rz���rB���r����rK���r{���r7���r����rq���rw���r���r���r���r���r������s��� r���c�����������������C���sh���|p t�|��}t|��|dkr&t|��}nt|��}|d�urHt|t�sHtd��|d�urdt||��t||��|S�r����) r8���r1���� PipeClient�SocketClientr����rR���r����r����r����)r7���r+���r����r����r���r���r���r������s���� r���Tc�����������������C���sj���|�r>t����\}}|�d��|�d��t|����}t|����}n$t���\}}t|dd�}t|dd�}||fS�)NTF�rA����r@���)r0���� socketpair�setblockingr�����detachr%����pipe)�duplex�s1�s2�c1�c2�fd1�fd2r���r���r���r�����s���� r���c����������� ��� ���C���s����t�d�}|�r*tj}tjtjB�}tt�}}ntj}tj}dt�}}t�||tjB�tj B�tj tjB�tjB�d||tj tj�}t�||dtjtjtjtj�}t�|tjd�d���tj|dd�}|�d�\} } t||�d�}t||�d�}||fS�)Nr���r���r���Tr}���r����r����)r,���r����PIPE_ACCESS_DUPLEX�GENERIC_READ� GENERIC_WRITE�BUFSIZEZPIPE_ACCESS_INBOUND�CreateNamedPipe�FILE_FLAG_OVERLAPPED�FILE_FLAG_FIRST_PIPE_INSTANCE�PIPE_TYPE_MESSAGE�PIPE_READMODE_MESSAGE� PIPE_WAIT�NMPWAIT_WAIT_FOREVER�NULL� CreateFile� OPEN_EXISTING�SetNamedPipeHandleState�ConnectNamedPiper����r|���) r����r7���Zopenmode�accessZobsizeZibsizeZh1Zh2r~����_r����r����r����r���r���r���r�����s<���� � � � � �c�������������������@���s&���e�Zd�Zd dd�Zdd��Zdd��ZdS�) r����r���c�����������������C���s����t���tt�|��|�_zRtjdkr2|�j�t�jt�jd��|�j�d��|�j� |��|�j� |��|�j���|�_W�n�t y����|�j������Y�n0�||�_d�|�_|dkr�t�|�s�tj|�tj|fdd�|�_nd�|�_d�S�)N�posixr���Tr���r�����args�exitpriority)r0����getattr�_socketr%����name� setsockopt� SOL_SOCKET�SO_REUSEADDRr�����bind�listen�getsocknamer����rG���rK����_familyr����r���r6����Finalize�unlink�_unlink)r>���r7���r+���r����r���r���r���rB���K��s(���� � � zSocketListener.__init__c�����������������C���s&���|�j����\}|�_|�d��t|����S��NT)r����r����r����r����r����r�����r>����sr���r���r���r����d��s���� zSocketListener.acceptc�����������������C���sJ���z(|�j�����W�|�j}|d�urFd�|�_|���n|�j}|d�urDd�|�_|���0�d�S�r���)r����rK���r����)r>���r����r���r���r���rK���i��s�����zSocketListener.closeN)r���)rx���ry���rz���rB���r����rK���r���r���r���r���r����G��s��� r����c�����������������C���s\���t�|��}t�tt|���0}|�d��|�|���t|����W��d�����S�1�sN0����Y��d�S�r����)r8���r0���r����r�����connectr����r����)r7���r+���r����r���r���r���r����s��s ���� r����c�������������������@���s4���e�Zd�Zddd�Zddd�Zdd��Zed d ���ZdS�) r����Nc�����������������C���sL���||�_�|�jdd�g|�_d�|�_t�d|�j���tj|�tj|�j|�j�fdd�|�_ d�S�)NT)�firstz listener created with address=%rr���r����) r�����_new_handle� _handle_queuer����r���� sub_debugr����r�����_finalize_pipe_listenerrK���)r>���r7���r����r���r���r���rB������s�����zPipeListener.__init__Fc�������������� ���C���sH���t�jt�jB�}|r|t�jO�}t��|�j|t�jt�jB�t�jB�t�j t t t�jt�j�S�r���) r���r����r����r����r����r����r����r����r����ZPIPE_UNLIMITED_INSTANCESr����r����r����)r>���r�����flagsr���r���r���r�������s���� ��zPipeListener._new_handlec�������������� ���C���s����|�j��|������|�j��d�}ztj|dd�}W�n2�ty`�}�z|jtjkrL��W�Y�d�}~nfd�}~0�0�zJzt� |j gdt�}W�n ���|����t� |����Y�n0�W�|�d�\}}n|�d�\}}0�t|�S�)Nr���Tr}���F)r�����appendr�����popr���r����rG���r����Z ERROR_NO_DATAr����r����r���r����r����r����r|���)r>���r?���r����r�����resr����r����r���r���r���r�������s(���� � �zPipeListener.acceptc�����������������C���s$���t��d|��|�D�]}t�|��qd�S�)Nz closing listener with address=%r)r���r����r���r����)�queuer7���r?���r���r���r���r�������s����z$PipeListener._finalize_pipe_listener)N)F)rx���ry���rz���rB���r����r�����staticmethodr����r���r���r���r���r�������s ��� r����c�������������� ���C���s����t���}z6t�|�d��t�|�tjtjB�dtjtjtjtj�}W�q��t y|�}�z(|j tjtjfvsft |�rh��W�Y�d�}~qd�}~0�0�q�q��t�|tjd�d���t|�S�)N����r���)r���r���Z WaitNamedPiper����r����r����r����r����r����rG���r����ZERROR_SEM_TIMEOUTZERROR_PIPE_BUSYr���r����r����r|���)r7���r����hr����r���r���r���r�������s*���� ��� �r��������s���#CHALLENGE#s ���#WELCOME#s ���#FAILURE#c�����������������C���s����dd�l�}t|t�s$td�t|����t�t�}|�� t |���|�||t�� ��}|��d�}||krl|�� t��n|�� t��td��d�S�)Nr���� Authkey must be bytes, not {0!s}����zdigest received was wrong)�hmacr����rR���r)����formatr2���r%����urandom�MESSAGE_LENGTHrZ���� CHALLENGE�new�HMAC_DIGEST_NAME�digestrc����WELCOME�FAILUREr����� connectionr����r ���messager���responser���r���r���r�������s���� � r����c�����������������C���sx���dd�l�}t|t�s$td�t|����|��d�}|tt�d���}|� ||t ����}|��|��|��d�}|t krttd��d�S�)Nr���r��r��zdigest sent was rejected)r ��r����rR���r)���r ��r2���rc���rS���r ��r��r��r��rZ���r��r���r��r���r���r���r�������s���� � r����c�������������������@���s$���e�Zd�Zdd��Zdd��Zdd��ZdS�)�ConnectionWrapperc�����������������C���s6���||�_�||�_||�_dD�]}t||�}t|�||��qd�S�)N)rO���rK���rp���rc���rZ���)�_conn�_dumps�_loadsr�����setattr)r>����connr\���rj����attrr^���r���r���r���rB�����s���� zConnectionWrapper.__init__c�����������������C���s���|���|�}|�j�|��d�S�r���)r��r��rZ���)r>���r^���r����r���r���r���r_��� ��s���� zConnectionWrapper.sendc�����������������C���s���|�j����}|��|�S�r���)r��rc���r��r����r���r���r���rl�����s���� zConnectionWrapper.recvN)rx���ry���rz���rB���r_���rl���r���r���r���r���r����s���r��c�����������������C���s���t��|�fd�d�d�d��d�S�)Nr����utf-8)� xmlrpclibr\����encode)r^���r���r���r���� _xml_dumps��s����r!��c�����������������C���s���t��|��d��\\}}|S�)Nr��)r��rj����decode)r����r^����methodr���r���r���� _xml_loads��s����r$��c�������������������@���s���e�Zd�Zdd��ZdS�)�XmlListenerc�����������������C���s"���dd�l�ma�t�|��}t|tt�S�r����)� xmlrpc.client�clientr��r���r����r��r!��r$��r]���r���r���r���r������s���� zXmlListener.acceptN)rx���ry���rz���r����r���r���r���r���r%����s���r%��c������������������O���s"���dd�l�ma�tt|�i�|��tt�S�r����)r&��r'��r��r��r���r!��r$��)r�����kwdsr���r���r���� XmlClient��s����r)��c�����������������C���s����t�|��}g�}|r�t�|d|�}|tkr*q�n\t|��krFtt|��k�rTn�n |t8�}n2t|��krptt|��k�r~n�n |t8�}ntd��|�||���||d�d���}d}q|S�)NFzShould not get herer���r���) �listr���r����r ���r���rS���r���r����r����)Zhandlesr����L�readyr��r���r���r����_exhaustive_wait)��s���� r-��c����������� ���������s ��|d�u�rt�}n|dk�rd}nt|d�d��}t|��}�i��g�}t����t��}�z�|�D��](}zt|d�}W�n�ty����|�|���<�Y�qP0�zt�|��dd�\}}W�n:�t y��}�z"d�|j �}}|tvr�W�Y�d�}~n d�}~0�0�|tjkr�|� |��|�|j<�qP|�rlt���d�d��dk�rlz|�d�\} }W�n,�t �yR�}�z|j }W�Y�d�}~n d�}~0�0�|�slt|d ��rld|_���|��d}qPt����|�}W�|D�]}|�����q�|D�]�}z|�d�\} }W�n8�t �y��}�z|j }|tv�rނ�W�Y�d�}~n d�}~0�0�|tjk�r��|j�}���|��|dk�r�t|d ��r�d|_�q�n�|D�]}|�����q:|D�]�}z|�d�\} }W�n8�t �y��}�z|j }|tv�r���W�Y�d�}~n d�}~0�0�|tjk�rN�|j�}���|��|dk�rNt|d ��rNd|_�qN0�����fd d�|D������fdd �|�D��S�)Nr���r��g�������?rO���T����)����r.��Fr����c�����������������3���s���|�]}��|�V��qd�S�r���r���)�.0r��)�waithandle_to_objr���r���� <genexpr>��������zwait.<locals>.<genexpr>c��������������������s���g�|�]}|��v�r|�qS�r���r���)r0���o)� ready_objectsr���r���� <listcomp>���r3���wait.<locals>.<listcomp>)r����intr*���setr�����AttributeErrorr:���r���r����rG���r����� _ready_errorsr����r����r����r-����getwindowsversionr����r/���r�����addr-���keysr����ZERROR_OPERATION_ABORTED�update) �object_listr���Zov_listZ ready_handlesr4��rO���r����r����r����r����r���)r5��r1��r���r���?��s����� � r����PollSelectorc�����������������C���s����t�����}|�D�]}|�|tj��q|d�ur4t���|�}|�|�}|r^dd��|D��W��d�����S�|d�ur4|t����}|dk�r4|W��d�����S�q4W�d�����n1�s�0����Y��d�S�)Nc�����������������S���s���g�|�]\}}|j��qS�r���)�fileobj)r0���key�eventsr���r���r���r6�����r3��r7��r���)� _WaitSelector�register� selectors� EVENT_READr���r����select)r@��r����selectorr^����deadliner,��r���r���r���r������s���� c�����������������C���sf���|�����}t�|tjtj��8}ddlm}�|�|�}t||�j |�j ffW��d�����S�1�sX0����Y��d�S�)Nr���)�resource_sharer)rO���r0����fromfdr����SOCK_STREAMr!���rL��Z DupSocket�rebuild_connectionr@���rA���)r��r?���r����rL���dsr���r���r����reduce_connection���s ���� rQ��c�����������������C���s���|�����}t|����||�S�r����r����r����)rP��r@���rA����sockr���r���r���rO�����s����rO��c�����������������C���sB���|�j�rtjnd|�jrtjndB�}t�|����|�}t||�j�|�jffS�r����) r@���r���ZFILE_GENERIC_READrA���ZFILE_GENERIC_WRITEr ���Z DupHandlerO����rebuild_pipe_connection)r��r�����dhr���r���r����reduce_pipe_connection���s �����rV��c�����������������C���s���|�����}t|||�S�r���)r����r|���)rU��r@���rA���r?���r���r���r���rT�����s����rT��c�����������������C���s ���t��|�����}t||�j|�jffS�r���)r ����DupFdrO���rO��r@���rA���)r���dfr���r���r���rQ�����s����c�����������������C���s���|�����}t|||�S�r���rR��)rX��r@���rA����fdr���r���r���rO�����s����)NN)T)T)N)N)J�__all__r����r%���r-���r0���r����r���r"���� itertoolsr����r!���r���r���r ����contextr ����ForkingPicklerr[���r���r���r���r ���r����ImportErrorr.���r�����CONNECTION_TIMEOUTr���countr(���r�����familiesr/���r���r���r,���r1���r8���r9���r|���r�����objectr���r���r���r����r����r����r����r��r ��r��r��r����r����r��r!��r$��r%��r)��r-��r����ZERROR_NETNAME_DELETEDr;��r���rG��rA��rE���SelectSelectorrQ��rO��rF��rV��rT��r���r���r���r����<module> ���s���� �PT= ,,8 P