Your IP : 18.118.162.166


Current Path : /opt/alt/python35/lib64/python3.5/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/__pycache__/tarfile.cpython-35.opt-2.pyc



���]�k�@s�dZdZdZdZdZddlmZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZyddlZddlZWnek
r�dZZYnXeefZyeef7ZWnek
rYnXdd	d
dgZdZd
ZedZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/d Z0dZ1d!Z2d"Z3e2Z4e"e#e$e%e(e)e*e&e'e+e,e-fZ5e"e#e*e-fZ6e+e,e-fZ7d#d$d%d&d'd(d)d*fZ8d#d$d)d*hZ9d+e:d,e:d&e:d'e;d(e;d%e;iZ<e	j=d-d.fkr�d/Z>nej?�Z>d0d1�Z@d2d3�ZAd4d5�ZBd6e4d7d8�ZCd9d:�ZDded;d<�ZEd=d>�ZFd?d@�ZGGdAd�deH�ZIGdBdC�dCeI�ZJGdDdE�dEeI�ZKGdFdG�dGeI�ZLGdHdI�dIeI�ZMGdJdK�dKeI�ZNGdLdM�dMeN�ZOGdNdO�dOeN�ZPGdPdQ�dQeN�ZQGdRdS�dSeN�ZRGdTdU�dUeN�ZSGdVdW�dW�ZTGdXdY�dY�ZUGdZd[�d[eV�ZWGd\d]�d]eV�ZXGd^d_�d_e
jY�ZZGd`d	�d	eV�Z[Gdad�deV�Z\Gdbdc�dc�Z]ddd
�Z^e\jZdedf�Z_e`dgkr�e_�dS)hz0.9.0u"Lars Gustäbel (lars@gustaebel.de)z5$Date: 2011-02-25 17:42:01 +0200 (Fri, 25 Feb 2011) $z?$Id: tarfile.py 88586 2011-02-25 15:42:01Z marc-andre.lemburg $u4Gustavo Niemeyer, Niels Gustäbel, Richard Townsend.�)�openN�TarFile�TarInfo�
is_tarfile�TarErrorsi�sustar  sustar00�d��0�1�2�3�4�5�6�7�L�K�S�x�g�X���path�linkpath�size�mtime�uid�gid�uname�gnameZatime�ctime�ntZcezutf-8cCs2|j||�}|d|�|t|�tS)N)�encode�len�NUL)�s�length�encoding�errors�r+�,/opt/alt/python35/lib64/python3.5/tarfile.py�stn�sr-cCs;|jd�}|dkr+|d|�}|j||�S)Nsr���)�find�decode)r'r)r*�pr+r+r,�nts�sr2cCs�|ddkrd}x:tt|�d�D]"}|dK}|||d7}q-W|ddkr�dt|�d|}nRy1t|dd�}t|j�p�d	d�}Wntk
r�td
��YnX|S)Nr��r���ascii�strict�0zinvalid header)r3r4)�ranger%r2�int�strip�
ValueError�InvalidHeaderError)r'�n�ir+r+r,�nti�s

rAr5cCsd|kod|dknrNtd|dt|�fd�t}n�|tkr�d|d|ko�d|dknr�|dkr�tdg�}ntdg�}d||}xEt|d�D]$}|jd|d@�|dL}q�Wntd	��|S)
Nrr5rz%0*or7r6r3r4zoverflow in number field)�bytesr;r&�
GNU_FORMAT�	bytearrayr:�insertr=)r?�digits�formatr'r@r+r+r,�itn�s$*9rHcCsBdttjd|��}dttjd|��}||fS)Nr6Z
148B8x356BZ
148b8x356b)�sum�struct�unpack_from)�bufZunsigned_chksumZ
signed_chksumr+r+r,�calc_chksums�s	rMc	Cs�|dkrdS|dkr0tj||�dSd}t||�\}}xNt|�D]@}|j|�}t|�|kr�|d��|j|�qXW|dkr�|j|�}t|�|kr�|d��|j|�dS)Nr�izunexpected end of datai@)�shutil�copyfileobj�divmodr:�readr%�write)	�src�dstr(�	exception�BUFSIZE�blocks�	remainder�brLr+r+r,rP�s$
rPcCs,ddl}|jdtd�tj|�S)Nrz$deprecated in favor of stat.filemoder)�warnings�warn�DeprecationWarning�stat�filemode)�moder[r+r+r,r_�s	
r_cCsPttjdd�}|dk	r<|j|d�j|�}t|dd�dS)Nr)�backslashreplace�end� )�getattr�sys�stdoutr$r0�print)r'r)r+r+r,�_safe_printsrhc@seZdZdS)rN)�__name__�
__module__�__qualname__r+r+r+r,rsc@seZdZdS)�ExtractErrorN)rirjrkr+r+r+r,rlsrlc@seZdZdS)�	ReadErrorN)rirjrkr+r+r+r,rmsrmc@seZdZdS)�CompressionErrorN)rirjrkr+r+r+r,rnsrnc@seZdZdS)�StreamErrorN)rirjrkr+r+r+r,rosroc@seZdZdS)�HeaderErrorN)rirjrkr+r+r+r,rpsrpc@seZdZdS)�EmptyHeaderErrorN)rirjrkr+r+r+r,rqsrqc@seZdZdS)�TruncatedHeaderErrorN)rirjrkr+r+r+r,rr srrc@seZdZdS)�EOFHeaderErrorN)rirjrkr+r+r+r,rs#srsc@seZdZdS)r>N)rirjrkr+r+r+r,r>&sr>c@seZdZdS)�SubsequentHeaderErrorN)rirjrkr+r+r+r,rt)srtc@s@eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�
_LowLevelFilecCsbdtjdtjtjBtjBi|}ttd�rF|tjO}tj||d�|_dS)N�r�w�O_BINARYi�)	�os�O_RDONLY�O_WRONLY�O_CREAT�O_TRUNC�hasattrrxr�fd)�self�namer`r+r+r,�__init__6s	
z_LowLevelFile.__init__cCstj|j�dS)N)ry�closer)r�r+r+r,r�?sz_LowLevelFile.closecCstj|j|�S)N)ryrRr)r�rr+r+r,rRBsz_LowLevelFile.readcCstj|j|�dS)N)ryrSr)r�r'r+r+r,rSEsz_LowLevelFile.writeN)rirjrkr�r�rRrSr+r+r+r,ru0s	ruc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
ddd�Zddd�Zdd�Z
dd�ZdS)�_Streamc	Cs{d|_|dkr-t||�}d|_|dkrQt|�}|j�}|pZd|_||_||_||_||_d|_	d|_
d|_y�|dkr,yddl}Wnt
k
r�td��YnX||_|jd�|_|d	kr|j�|j|_qI|j�n|d
kr�yddl}Wnt
k
rhtd��YnX|d	kr�d|_|j�|_t|_qI|j�|_n�|dkr-yddl}Wnt
k
r�td
��YnX|d	krd|_|j�|_|j|_qI|j�|_n|dkrItd|��Wn*|jsf|jj�d|_�YnXdS)NTF�*��r�gzzzlib module is not availablerv�bz2zbz2 module is not available�xzzlzma module is not available�tarzunknown compression type %r) �_extfileobjru�_StreamProxy�getcomptyper�r`�comptype�fileobj�bufsizerL�pos�closed�zlib�ImportErrorrn�crc32�crc�
_init_read_gz�errorrV�_init_write_gzr��dbuf�BZ2Decompressor�cmp�OSError�
BZ2Compressor�lzma�LZMADecompressor�	LZMAError�LZMACompressorr�)	r�r�r`r�r�r�r�r�r�r+r+r,r�Ssl									
	


	
		
	z_Stream.__init__cCs't|d�r#|jr#|j�dS)Nr�)r~r�r�)r�r+r+r,�__del__�sz_Stream.__del__cCs�|jjd|jj|jj|jjd�|_tjdtt	j	���}|j
d|d�|jjd�r�|jdd
�|_|j
|jj
dd	�t�dS)N�	rz<Ls�s�z.gz�z
iso-8859-1�replace���)r��compressobj�DEFLATED�	MAX_WBITS�
DEF_MEM_LEVELr�rJ�packr;�time�_Stream__writer��endswithr$r&)r�Z	timestampr+r+r,r��s
	z_Stream._init_write_gzcCsq|jdkr*|jj||j�|_|jt|�7_|jdkr`|jj|�}|j|�dS)Nr�r�)	r�r�r�r�r�r%r��compressr�)r�r'r+r+r,rS�sz
_Stream.writecCsk|j|7_xUt|j�|jkrf|jj|jd|j��|j|jd�|_qWdS)N)rLr%r�r�rS)r�r'r+r+r,Z__write�s z_Stream.__writecCs�|jr
dSd|_z�|jdkrO|jdkrO|j|jj�7_|jdkr�|jr�|jj|j�d|_|jdkr�|jjtj	d|j
��|jjtj	d|jd@��Wd|js�|jj
�XdS)NTrwr�r�r�z<Ll��)r�r`r�rLr��flushr�rSrJr�r�r�r�r�)r�r+r+r,r��s			'	z
_Stream.closecCsO|jj|jj�|_d|_|jd�dkrFtd��|jd�dkrgtd��t|jd��}|jd�|d	@r�t|jd��d
t|jd��}|j	|�|d@rx'|jd�}|s�|t
kr�Pq�W|d@r4x'|jd�}|s/|t
kr
Pq
W|d@rK|jd�dS)
Nr�rs�znot a gzip filerszunsupported compression method��r6r5rN)r��
decompressobjr�r�r��
_Stream__readrmrn�ordrRr&)r��flagZxlenr'r+r+r,r��s.	

,



z_Stream._init_read_gzcCs|jS)N)r�)r�r+r+r,�tell�sz_Stream.tellrcCs|||jdkrit||j|j�\}}x$t|�D]}|j|j�q?W|j|�ntd��|jS)Nrz seeking backwards is not allowed)r�rQr�r:rRro)r�r�rXrYr@r+r+r,�seek�sz_Stream.seekNcCsy|dkrQg}x*|j|j�}|s.P|j|�qWdj|�}n|j|�}|jt|�7_|S)Nr�)�_readr��append�joinr�r%)r�r�trLr+r+r,rRsz_Stream.readcCs�|jdkr|j|�St|j�}x�||kr�|j|j�}|sSPy|jj|�}Wn!|jk
r�td��YnX|j|7_|t|�7}q.W|jd|�}|j|d�|_|S)Nr�zinvalid compressed data)	r�r�r%r�r�r��
decompressrVrm)r�r�crLr+r+r,r�s 
z
_Stream._readcCs�t|j�}xK||kr\|jj|j�}|s:P|j|7_|t|�7}qW|jd|�}|j|d�|_|S)N)r%rLr�rRr�)r�rr�rLr+r+r,Z__read,sz_Stream.__read)rirjrkr�r�r�rSr�r�r�r�r�rRr�r�r+r+r+r,r�HsF
	
r�c@s@eZdZdd�Zdd�Zdd�Zdd�Zd	S)
r�cCs"||_|jjt�|_dS)N)r�rR�	BLOCKSIZErL)r�r�r+r+r,r�As	z_StreamProxy.__init__cCs|jj|_|jS)N)r�rRrL)r�rr+r+r,rREsz_StreamProxy.readcCsj|jjd�rdS|jdd�dkrL|jdd�dkrLd	S|jjd�rbdSd
SdS)Ns�r�rr�sBZhr��
s1AY&SYr��]���7zXZr�r�)r�r�)rL�
startswith)r�r+r+r,r�Is2z_StreamProxy.getcomptypecCs|jj�dS)N)r�r�)r�r+r+r,r�Ssz_StreamProxy.closeN)rirjrkr�rRr�r�r+r+r+r,r�<s
r�c@s�eZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Ze	j
dd�Zddd�Zdd�Z
dd�ZdS)�_FileInFileNcCs#||_||_||_d|_t|dd�|_d|_|dkr]d|fg}d|_g|_d}|j}xp|D]h\}}||kr�|jj	d||df�|jj	d||||f�||7}||}q�W||jkr|jj	d||jdf�dS)Nrr�FT)
r��offsetr�positionrdr�r��	map_index�mapr�)r�r�r�rZ	blockinfoZlastposZrealposr+r+r,r�`s(								 
z_FileInFile.__init__cCsdS)Nr+)r�r+r+r,r�ysz_FileInFile.flushcCsdS)NTr+)r�r+r+r,�readable|sz_FileInFile.readablecCsdS)NFr+)r�r+r+r,�writablesz_FileInFile.writablecCs
|jj�S)N)r��seekable)r�r+r+r,r��sz_FileInFile.seekablecCs|jS)N)r�)r�r+r+r,r��sz_FileInFile.tellcCs�|tjkr0tt|d�|j�|_n�|tjkr�|dkrgt|j|d�|_q�t|j||j�|_nC|tjkr�tt|j||j�d�|_ntd��|jS)NrzInvalid argument)	�io�SEEK_SET�min�maxrr��SEEK_CUR�SEEK_ENDr=)r�r��whencer+r+r,r��s!(z_FileInFile.seekc	Csf|dkr|j|j}nt||j|j�}d}x!|dkraxs|j|j\}}}}||jko�|knr�PqP|jd7_|jt|j�krPd|_qPWt|||j�}|r7|jj||j|�|jj|�}t|�|kr*t	d��||7}n|t
|7}||8}|j|7_qAW|S)Nr�rrzunexpected end of data)rr�r�r�r�r%r�r�rRrmr&)	r�rrL�data�start�stopr�r(rZr+r+r,rR�s.


z_FileInFile.readcCs5|jt|��}||dt|��<t|�S)N)rRr%)r�rZrLr+r+r,�readinto�sz_FileInFile.readintocCs
d|_dS)NT)r�)r�r+r+r,r��sz_FileInFile.close)rirjrkr�r�r�r�r�r�r�r�r�rRr�r�r+r+r+r,r�Zsr�cs"eZdZ�fdd�Z�S)�ExFileObjectcs5t|j|j|j|j�}t�j|�dS)N)r�r��offset_datar�sparse�superr�)r��tarfile�tarinfor�)�	__class__r+r,r��szExFileObject.__init__)rirjrkr�r+r+)r�r,r��sr�c@sJeZdZdhZddd�Zdd�Zdd�Zeee�Zdd�Z	dd�Z
ee	e
�Zd d!�Zd"d#�Z
eed$d%d&�Zd'd(�Zd)d*�Zd+d,�Zed-d.��Zd/d0�Zed1d2��Zed3d4��Zed5d6��Zed7d8��Zed9d:��Zed;d<��Zd=d>�Zd?d@�ZdAdB�Z dCdD�Z!dEdF�Z"dGdH�Z#dIdJ�Z$dKdL�Z%dMdN�Z&dOdP�Z'dQdR�Z(dSdT�Z)dUdV�Z*dWdX�Z+dYdZ�Z,d[d\�Z-d]d^�Z.d_d`�Z/dadb�Z0dcdd�Z1dedf�Z2dgS)irr�r`rrrr�chksum�type�linknamer r!�devmajor�devminorr�r��pax_headersr�r��_sparse_structs�_link_targetr�cCs�||_d|_d|_d|_d|_d|_d|_t|_d|_	d|_
d|_d|_d|_
d|_d|_d|_i|_dS)Ni�rr�)r�r`rrrrr��REGTYPEr�r�r r!r�r�r�r�r�r�)r�r�r+r+r,r��s"																zTarInfo.__init__cCs|jS)N)r�)r�r+r+r,�_getpath�szTarInfo._getpathcCs
||_dS)N)r�)r�r�r+r+r,�_setpath�szTarInfo._setpathcCs|jS)N)r�)r�r+r+r,�_getlinkpath�szTarInfo._getlinkpathcCs
||_dS)N)r�)r�r�r+r+r,�_setlinkpath�szTarInfo._setlinkpathcCs d|jj|jt|�fS)Nz<%s %r at %#x>)r�rir��id)r�r+r+r,�__repr__szTarInfo.__repr__cCs�d|jd|jd@d|jd|jd|jd|jd|jd	|jd
|jd|j	d|j
d
|jd|ji
}|d	t
kr�|djd�r�|dd7<|S)Nr�r`i�rrrrr�r�r�r r!r�r��/)r�r`rrrrr�r�r�r r!r�r��DIRTYPEr�)r��infor+r+r,�get_infos 	
										$zTarInfo.get_info�surrogateescapecCsv|j�}|tkr+|j|||�S|tkrJ|j|||�S|tkrf|j||�Std��dS)Nzinvalid format)r��USTAR_FORMAT�create_ustar_headerrC�create_gnu_header�
PAX_FORMAT�create_pax_headerr=)r�rGr)r*r�r+r+r,�tobufsz
TarInfo.tobufcCs�t|d<t|dj||��tkr8td��t|dj||��tkr�|j|d||�\|d<|d<|j|t||�S)N�magicr�zlinkname is too longr��prefix)	�POSIX_MAGICr%r$�LENGTH_LINKr=�LENGTH_NAME�_posix_split_name�_create_headerr�)r�r�r)r*r+r+r,r�*s
""'zTarInfo.create_ustar_headercCs�t|d<d}t|dj||��tkrR||j|dt||�7}t|dj||��tkr�||j|dt||�7}||j|t	||�S)Nr�r�r�r�)
�	GNU_MAGICr%r$r��_create_gnu_long_header�GNUTYPE_LONGLINKr��GNUTYPE_LONGNAMErrC)r�r�r)r*rLr+r+r,r�7s
" " zTarInfo.create_gnu_headerc
Cs�t|d<|jj�}x�ddtfddtfddfD]�\}}}||kr\q>y||jd	d
�Wn#tk
r�||||<w>YnXt||�|kr>||||<q>Wx�dD]}\}}||kr�d||<q�||}d|kod|dkns,t|t	�r�t
|�||<d||<q�W|rh|j|t|�}	nd}	|	|j
|td	d�S)Nr�r�rr�rr � r!r7r8rr5rr�rrrr�r�)r r r)r!r!r�rr5�rr5�rr�rr)rrr	r
)r�r��copyr�r�r$�UnicodeEncodeErrorr%�
isinstance�float�str�_create_pax_generic_header�XHDTYPErr�)
r�r�r)r�r�Zhnamer(rF�valrLr+r+r,r�Es4



4zTarInfo.create_pax_headercCs|j|td�S)Nzutf-8)r�XGLTYPE)�clsr�r+r+r,�create_pax_global_headervsz TarInfo.create_pax_global_headercCs�|jd�}x�tdt|��D]u}dj|d|��}dj||d��}t|j||��tkr%t|j||��tkr%Pq%Wtd��||fS)Nr�rzname is too long)�splitr:r%r�r$�
LENGTH_PREFIXr�r=)r�r�r)r*Z
componentsr@r�r+r+r,r�|szTarInfo._posix_split_namecCs�t|jdd�d||�t|jdd�d@d|�t|jdd�d|�t|jd	d�d|�t|jd
d�d|�t|jdd�d|�d
|jdt�t|jdd�d||�|jdt�t|jdd�d||�t|jdd�d||�t|jdd�d|�t|jdd�d|�t|jdd�d||�g}tjdtdj|��}t	|td��d}|dd�t
d|d�|dd�}|S) Nr�r�rr`ri�r5rrrrrs        r�r�r�r rr!r�r�r�r	z%dsr�ilz%06or7iei����i����)r-�getrHr�r�rJr�r�r�rMrB)r�rGr)r*�partsrLr�r+r+r,r�s&$/zTarInfo._create_headercCs=tt|�t�\}}|dkr9|t|t7}|S)Nr)rQr%r�r&)ZpayloadrXrYr+r+r,�_create_payload�szTarInfo._create_payloadcCsm|j||�t}i}d|d<||d<t|�|d<t|d<|j|t||�|j|�S)Nz
././@LongLinkr�r�rr�)r$r&r%rrr�r)rr�r�r)r*r�r+r+r,r�s


zTarInfo._create_gnu_long_headercCs�d}xJ|j�D]<\}}y|jdd�Wqtk
rNd}PYqXqWd}|ri|d7}x�|j�D]�\}}|jd�}|r�|j|d�}n|jd�}t|�t|�d}d	}	}
x-|tt|
��}	|	|
krP|	}
q�W|tt|
�d
�d|d|d
7}qvWi}d|d<||d<t|�|d<t|d<|j|td
d�|j	|�S)NFzutf-8r8Tr�s21 hdrcharset=BINARY
r�r�rr7� �=s
z././@PaxHeaderr�r�rr�r�)
�itemsr$rr%rrBr�rr�r)rr�r�r)�binary�keyword�value�records�lr?r1r�r+r+r,r�s<




1


z"TarInfo._create_pax_generic_headercCsNt|�dkrtd��t|�tkr<td��|jt�tkr]td��t|dd��}|t|�kr�t	d��|�}t
|dd�||�|_t|dd	��|_t|d	d
��|_
t|d
d��|_t|dd��|_t|dd��|_||_|dd
�|_t
|d
d�||�|_t
|dd�||�|_t
|dd�||�|_t|dd��|_t|dd��|_t
|dd�||�}|jtkr'|jjd�r't|_|jtkrd}g}x�td�D]u}	y<t|||d��}
t||d|d��}Wntk
r�PYnX|j|
|f�|d7}qOWt|d�}t|dd��}
|||
f|_ |j!�r!|jj"d�|_|rJ|jt#krJ|d|j|_|S)Nrzempty headerztruncated headerzend of file header��zbad checksumr�l�t�|��ii	i)iIiQiYi�r�i�r�r�i�i�i�)$r%rqr�rr�countr&rsrArMr>r2r�r`rrrrr�r�r�r r!r�r��AREGTYPEr�r��GNUTYPE_SPARSEr:r=r��boolr��isdir�rstrip�	GNU_TYPES)rrLr)r*r��objr�r��structsr@r��numbytes�
isextended�origsizer+r+r,�frombuf�sZ		!	"
zTarInfo.frombufcCsP|jjt�}|j||j|j�}|jj�t|_|j|�S)N)	r�rRr�r7r)r*r�r��_proc_member)rr�rLr2r+r+r,�fromtarfile5szTarInfo.fromtarfilecCst|jttfkr"|j|�S|jtkr>|j|�S|jtttfkrc|j	|�S|j
|�SdS)N)r�rr�
_proc_gnulongr-�_proc_sparserr�SOLARIS_XHDTYPE�	_proc_pax�
_proc_builtin)r�r�r+r+r,r8Js


zTarInfo._proc_membercCsu|jj�|_|j}|j�s6|jtkrL||j|j�7}||_|j	|j
|j|j�|S)N)
r�r�r��isregr��SUPPORTED_TYPES�_blockrr��_apply_pax_infor�r)r*)r�r�r�r+r+r,r>Ws		zTarInfo._proc_builtincCs�|jj|j|j��}y|j|�}Wntk
rQtd��YnX|j|_|jt	kr�t
||j|j�|_
n*|jtkr�t
||j|j�|_|S)Nz missing or bad subsequent header)r�rRrArr9rprtr�r�rr2r)r*r�rr�)r�r�rL�nextr+r+r,r:hs
zTarInfo._proc_gnulongc
Cs#|j\}}}|`x�|r�|jjt�}d}x�td�D]�}y<t|||d��}t||d|d��}	Wntk
r�PYnX|r�|	r�|j||	f�|d7}qFWt|d�}qW||_	|jj
�|_|j|j|j
�|_||_
|S)Nr�rr*i�)r�r�rRr�r:rAr=r�r.r�r�r�rArr�)
r�r�r3r5r6rLr�r@r�r4r+r+r,r;~s(	"
		zTarInfo._proc_sparsecCs�|jj|j|j��}|jtkr9|j}n|jj�}tj	d|�}|dk	r�|j
d�jd�|d<|jd�}|dkr�|j
}nd}tjd�}d}x�|j||�}|s�P|j�\}	}
t|	�}	||jd�d|jd�|	d�}|j|
dd|j�}
|
tkrt|j|||j
|j�}n|j|dd|j�}|||
<||	7}q�Wy|j|�}Wntk
r�td	��YnXd
|kr�|j||�n_d|kr|j|||�n=|jd�d
krY|jd�dkrY|j|||�|jttfkr�|j||j
|j�|j |_ d|kr�|j!}
|j"�s�|jt#kr�|
|j|j�7}
|
|_ |S)Ns\d+ hdrcharset=([^\n]+)\nrzutf-8�
hdrcharsetZBINARYs(\d+) ([^=]+)=rrz missing or bad subsequent headerzGNU.sparse.mapzGNU.sparse.sizezGNU.sparse.major�1zGNU.sparse.minorr9r)$r�rRrArr�rr�r�re�search�groupr0rr)�compile�match�groupsr;rbr��_decode_pax_fieldr*�PAX_NAME_FIELDSr9rprt�_proc_gnusparse_01�_proc_gnusparse_00�_proc_gnusparse_10rr<rBr�r�r?r@)r�r�rLr�rKrEr)Zregexr�r(rr rCr�r+r+r,r=�s`.	

*		zTarInfo._proc_paxcCs�g}x6tjd|�D]"}|jt|jd���qWg}x6tjd|�D]"}|jt|jd���qXWtt||��|_dS)Ns\d+ GNU.sparse.offset=(\d+)\nrs\d+ GNU.sparse.numbytes=(\d+)\n)rG�finditerr�r;rI�list�zipr�)r�rCr�rLZoffsetsrKr4r+r+r,rPs  zTarInfo._proc_gnusparse_00cCsVdd�|djd�D�}tt|ddd�|ddd���|_dS)NcSsg|]}t|��qSr+)r;)�.0�xr+r+r,�
<listcomp>s	z.TarInfo._proc_gnusparse_01.<locals>.<listcomp>zGNU.sparse.map�,rr)rrSrTr�)r�rCr�r�r+r+r,rOs zTarInfo._proc_gnusparse_01cCs�d}g}|jjt�}|jdd�\}}t|�}xgt|�|dkr�d|kr}||jjt�7}|jdd�\}}|jt|��qEW|jj�|_t	t
|ddd�|ddd���|_dS)Ns
rr)r�rRr�rr;r%r�r�r�rSrTr�)r�rCr�r�Zfieldsr�rLZnumberr+r+r,rQszTarInfo._proc_gnusparse_10c
Csx�|j�D]�\}}|dkr8t|d|�q
|dkr]t|dt|��q
|dkr�t|dt|��q
|tkr
|tkr�yt||�}Wntk
r�d}YnX|dkr�|jd�}t|||�q
W|j�|_dS)NzGNU.sparse.namerzGNU.sparse.sizerzGNU.sparse.realsizerr�)	r�setattrr;�
PAX_FIELDS�PAX_NUMBER_FIELDSr=r0rr�)r�r�r)r*rr r+r+r,rB!s"
zTarInfo._apply_pax_infocCs=y|j|d�SWn"tk
r8|j||�SYnXdS)Nr8)r0�UnicodeDecodeError)r�r r)Zfallback_encodingZfallback_errorsr+r+r,rM8s
zTarInfo._decode_pax_fieldcCs-t|t�\}}|r%|d7}|tS)Nr)rQr�)r�r+rXrYr+r+r,rA@s
zTarInfo._blockcCs
|jtkS)N)r��
REGULAR_TYPES)r�r+r+r,r?Isz
TarInfo.isregcCs
|j�S)N)r?)r�r+r+r,�isfileKszTarInfo.isfilecCs
|jtkS)N)r�r�)r�r+r+r,r/Msz
TarInfo.isdircCs
|jtkS)N)r��SYMTYPE)r�r+r+r,�issymOsz
TarInfo.issymcCs
|jtkS)N)r��LNKTYPE)r�r+r+r,�islnkQsz
TarInfo.islnkcCs
|jtkS)N)r��CHRTYPE)r�r+r+r,�ischrSsz
TarInfo.ischrcCs
|jtkS)N)r��BLKTYPE)r�r+r+r,�isblkUsz
TarInfo.isblkcCs
|jtkS)N)r��FIFOTYPE)r�r+r+r,�isfifoWszTarInfo.isfifocCs
|jdk	S)N)r�)r�r+r+r,�issparseYszTarInfo.issparsecCs|jtttfkS)N)r�rcrerg)r�r+r+r,�isdev[sz
TarInfo.isdevN)r�r`rrrrr�r�r�r r!r�r�r�r�r�r�r�r�r�)3rirjrk�	__slots__r�r�r��propertyrr�r�rr�r��DEFAULT_FORMAT�ENCODINGr�r�r�r��classmethodrr��staticmethodrrrrr7r9r8r>r:r;r=rPrOrQrBrMrAr?r^r/r`rbrdrfrhrirjr+r+r+r,r�s^
1
3?
f	c@s�eZdZdZdZdZdZeZe	Z
dZeZ
eZdddddddddddddd�Zeddded	d
��Zedddd��Zeddd
dd��Zeddd
dd��Zeddddd��ZddddddddiZdd�Zdd�Zd d!�Zd"d#�Zdddd$d%�Zd&d'dd(d)�Zdd&dd*dd+d,�Zdd-d.�Z d/dd0dd1d2�Z!d3d&d0dd4d5�Z"d6d7�Z#d&dd8d9�Z$d:d;�Z%d<d=�Z&d>d?�Z'd@dA�Z(dBdC�Z)dDdE�Z*dFdG�Z+dHdI�Z,dJdK�Z-dLdM�Z.dddNdO�Z/dPdQ�Z0ddRdS�Z1dTdU�Z2dVdW�Z3dXdY�Z4dZd[�Z5d\d]�Z6dS)^rrFrNrvr�c
Cs�ddddddddi}
||
kr6td	��||_|
||_|s�|jdkr�tjj|�r�d|_d|_t||j�}d
|_n`|dkr�t|d�r�t	|j
ttf�r�|j
}t|d�r�|j|_d
|_|rtjj
|�nd|_
||_|dk	rC||_|dk	rX||_|dk	rm||_|dk	r�||_|dk	r�||_|	|_|
dk	r�|jtkr�|
|_n	i|_|dk	r�||_|dk	r�||_d
|_g|_d
|_|jj�|_i|_y:|jdkrZd|_|j �|_|jdkrx�|jj!|j�y&|jj"|�}|jj#|�Wqlt$k
r�|jj!|j�PYqlt%k
r}zt&t|���WYdd}~XqlXqlW|jdkrid
|_|jri|jj'|jj(��}|jj)|�|jt*|�7_Wn*|js�|jj+�d
|_�YnXdS)Nrv�rb�azr+brw�wbrV�xbz!mode must be 'r', 'a', 'w' or 'x'Fr�r`T)rrrwrV),r=r`�_moderyr�exists�	bltn_openr�r~r
r�rrB�abspathr�rGr��dereference�ignore_zerosr)r*r�r��debug�
errorlevelr��members�_loadedr�r��inodes�firstmemberrCr�r9r�rsrprmrrrSr%r�)r�r�r`r�rGr�ryrzr)r*r�r{r|Zmodes�erLr+r+r,r�ys�	
"				!															
)			
	zTarFile.__init__csY|r|rtd��|dkr��fdd�}x�t�jd|�D]�}t��j|�}|dk	r�|j�}	y||d||�SWqNttfk
r�}
z!|dk	r�|j|	�wNWYdd}
~
XqNXqNWtd��nSd|kr}|jdd	�\}}|p#d}|p/d
}|�jkrZt��j|�}ntd|��|||||�Sd|kr'|jdd	�\}}|p�d}|p�d
}|dkr�td��t	|||||�}y�||||�}
Wn|j
��YnXd|
_|
S|dkrI�j||||�Std��dS)Nznothing to openrv�r:*cs�j|dkS)N�taropen)�	OPEN_METH)r�)rr+r,�not_compressedsz$TarFile.open.<locals>.not_compressed�keyz%file could not be opened successfully�:rr�zunknown compression type %r�|rwzmode must be 'r' or 'w'FrrrVzundiscernible mode)rvr�)rvrw)rrrwrV)
r=�sortedr�rdr�rmrnr�rr�r�r�r�)rr�r`r�r��kwargsr�r��funcZ	saved_posr�r_�streamr�r+)rr,r�sP%

	zTarFile.opencKs+|dkrtd��|||||�S)NrvrrrwrVz!mode must be 'r', 'a', 'w' or 'x')rvrrrwrV)r=)rr�r`r�r�r+r+r,r�AszTarFile.taropenr�cKs)|d
krtd��yddl}|jWn$ttfk
rUtd��YnXy |j||d||�}Wn9tk
r�|dk	r�|dkr�td���YnXy|j||||�}WnKtk
r|j	�|dkrtd���Yn|j	��YnXd	|_
|S)NrvrwrVzmode must be 'r', 'w' or 'x'rzgzip module is not availablerZznot a gzip fileF)rvrwrV)r=�gzipZGzipFiler��AttributeErrorrnr�rmr�r�r�)rr�r`r��
compresslevelr�r�r�r+r+r,�gzopenIs2 



	zTarFile.gzopencKs�|d
krtd��yddl}Wntk
rHtd��YnX|j|pX||d|�}y|j||||�}WnQttfk
r�|j�|dkr�t	d���Yn|j��YnXd	|_
|S)NrvrwrVzmode must be 'r', 'w' or 'x'rzbz2 module is not availabler�znot a bzip2 fileF)rvrwrV)r=r�r�rn�BZ2Filer�r��EOFErrorr�rmr�)rr�r`r�r�r�r�r�r+r+r,�bz2openks(
	

	zTarFile.bz2opencKs�|d
krtd��yddl}Wntk
rHtd��YnX|j|pX||d|�}y|j||||�}WnT|jtfk
r�|j�|dkr�t	d���Yn|j��YnXd	|_
|S)NrvrwrVzmode must be 'r', 'w' or 'x'rzlzma module is not available�presetznot an lzma fileF)rvrwrV)r=r�r�rn�LZMAFiler�r�r�r�rmr�)rr�r`r�r�r�r�r�r+r+r,�xzopen�s&


	zTarFile.xzopenr�r�r�r�r�r�r�r�c
Cs�|jr
dSd|_zz|jdkr�|jjttd�|jtd7_t|jt�\}}|dkr�|jjtt|�Wd|j	s�|jj
�XdS)NTrrrwrVrr)rrrwrV)r�r`r�rSr&r�r�rQ�
RECORDSIZEr�r�)r�rXrYr+r+r,r��s			z
TarFile.closecCs/|j|�}|dkr+td|��|S)Nzfilename %r not found)�
_getmember�KeyError)r�r�r�r+r+r,�	getmember�szTarFile.getmembercCs$|j�|js|j�|jS)N)�_checkr~�_loadr})r�r+r+r,�
getmembers�s
	
zTarFile.getmemberscCsdd�|j�D�S)NcSsg|]}|j�qSr+)r�)rUr�r+r+r,rW�s	z$TarFile.getnames.<locals>.<listcomp>)r�)r�r+r+r,�getnames�szTarFile.getnamescCsI|jd�|dk	r"|j}|dkr4|}tjj|�\}}|jtjd�}|jd�}|j�}||_	|dkr�t
td�r�|jr�tj|�}q�tj
|�}ntj|j��}d}|j}t
j|�r�|j|jf}	|jrd|jdkrd|	|jkrd||j|	krdt}
|j|	}qt}
|	dr||j|	<n�t
j|�r�t}
nst
j|�r�t}
n[t
j|�r�t}
tj|�}n4t
j|�r�t }
nt
j!|�rt"}
ndS||_||_#|j$|_%|j&|_'|
tkrT|j(|_)n	d|_)|j*|_+|
|_,||_-t.r�yt.j/|j%�d|_0Wnt1k
r�YnXt2r�yt2j3|j'�d|_4Wnt1k
r�YnX|
t t"fkrEt
td�rEt
td�rEtj5|j6�|_7tj8|j6�|_9|S)	N�awxr��lstatr�rr�major�minor):r�r�ryr�
splitdriver��sep�lstripr�r�r~ryr�r^�fstat�fileno�st_mode�S_ISREG�st_ino�st_dev�st_nlinkrrar��S_ISDIRr��S_ISFIFOrg�S_ISLNKr_�readlink�S_ISCHRrc�S_ISBLKrer`�st_uidr�st_gidr�st_sizer�st_mtimerr�r��pwd�getpwuidr r��grp�getgrgidr!r��st_rdevr�r�r�)r�r��arcnamer�Zdrvr�Zstatresr�Zstmd�inoder�r+r+r,�
gettarinfo�s~	
			"
									

zTarFile.gettarinfoTr}cCsQ|j�|dkr|}x.|D]&}|r�ttj|j��td|jpZ|j|jpi|jf�|j	�s�|j
�r�tdd|j|jf�ntd|j
�tdtj|j�dd��t|j|j�r�dnd�|rB|j�r%td	|j�|j�rBtd
|j�t�q#WdS)Nz%s/%sz%10sz%d,%dz%10dz%d-%02d-%02d %02d:%02d:%02dr�r�r�z-> zlink to )r�rhr^r_r`r rr!rrdrfr�r�rr��	localtimerr�r/r`r�rbrg)r��verboser}r�r+r+r,rSCs*

#zTarFile.list�filterc	
Cs�|jd�|dkr|}|dk	rnddl}|jdtd�||�rn|jdd|�dS|jdk	r�tjj|�|jkr�|jdd|�dS|jd|�|j	||�}|dkr�|jdd|�dS|dk	r2||�}|dkr2|jdd|�dS|j
�rjt|d	��}|j||�WdQRXn�|j
�r�|j|�|r�xatj|�D]@}|jtjj||�tjj||�||d
|�q�Wn
|j|�dS)Nr�rzuse the filter argument insteadrztarfile: Excluded %rztarfile: Skipped %rrztarfile: Unsupported type %rrqr�)r�r[r\r]�_dbgr�ryrrxr�r?rw�addfiler/�listdir�addr�)	r�r�r�Z	recursiveZexcluder�r[r��fr+r+r,r�csB
	
*
*zTarFile.addcCs�|jd�tj|�}|j|j|j|j�}|jj|�|jt	|�7_|dk	r�t
||j|j�t|jt
�\}}|dkr�|jjtt
|�|d7}|j|t
7_|jj|�dS)Nr�rr)r�rr�rGr)r*r�rSr�r%rPrrQr�r&r}r�)r�r�r�rLrXrYr+r+r,r��s

zTarFile.addfile�.�
numeric_ownercCsUg}|dkr|}xb|D]Z}|j�rV|j|�tj|�}d|_|j||d|j�d|�qW|jddd��|j�x�|D]�}tjj	||j
�}y:|j||d|�|j||�|j
||�Wq�tk
rL}z.|jdkr&�n|jdd|�WYdd}~Xq�Xq�WdS)	Ni��	set_attrsr�r�cSs|jS)N)r�)rrr+r+r,�<lambda>�sz$TarFile.extractall.<locals>.<lambda>rztarfile: %s)r/r�rr`�extract�sort�reverseryrr�r��chown�utime�chmodrlr|r�)r�rr}r�Zdirectoriesr��dirpathr�r+r+r,�
extractall�s,

	

zTarFile.extractallr�cCsd|jd�t|t�r.|j|�}n|}|j�r[tjj||j�|_	y2|j
|tjj||j�d|d|�Wn�tk
r}zc|j
dkr��nI|jdkr�|jdd|j�n |jdd|j|jf�WYdd}~XnNtk
r_}z.|j
dkr9�n|jdd|�WYdd}~XnXdS)Nrvr�r�rrztarfile: %sztarfile: %s %r)r�r
rr�rbryrr�r�r��_extract_memberr�r�r|�filenamer��strerrorrl)r��memberrr�r�r�r�r+r+r,r��s(	
!2zTarFile.extractcCs�|jd�t|t�r.|j|�}n|}|j�sO|jtkr_|j||�S|j�sw|j	�r�t|j
t�r�td��q�|j
|j|��SndSdS)Nrvz'cannot extract (sym)link as file object)r�r
rr�r?r�r@�
fileobjectrbr`r�r�ro�extractfile�_find_link_target)r�r�r�r+r+r,r�s
zTarFile.extractfilecCs�|jd�}|jdtj�}tjj|�}|r\tjj|�r\tj|�|j�st|j	�r�|j
dd|j|jf�n|j
d|j�|j
�r�|j||�n�|j�r�|j||�n�|j�r|j||�n�|j�s|j�r2|j||�n]|j�sJ|j	�r]|j||�n2|jtkr|j||�n|j||�|r�|j|||�|j	�s�|j||�|j||�dS)Nr�rz%s -> %s)r0r�ryr�r�dirnamerv�makedirsrbr`r�r�r�r?�makefiler/�makedirrh�makefifordrf�makedev�makelinkr�r@�makeunknownr�r�r�)r�r��
targetpathr�r�Z	upperdirsr+r+r,r�&s4
#zTarFile._extract_membercCs-ytj|d�Wntk
r(YnXdS)Ni�)ry�mkdir�FileExistsError)r�r�r�r+r+r,r�Ws
zTarFile.makedirc
Cs�|j}|j|j�t|d���}|jdk	r�x7|jD],\}}|j|�t|||t�qDW|j|j�|j�nt|||jt�WdQRXdS)Nrs)	r�r�r�rwr�rPrmr�truncate)r�r�r��source�targetr�rr+r+r,r�as	

zTarFile.makefilecCs+|j||�|jdd|j�dS)Nrz9tarfile: Unknown file type %r, extracted as regular file.)r�r�r�)r�r�r�r+r+r,r�pszTarFile.makeunknowncCs/ttd�rtj|�ntd��dS)N�mkfifozfifo not supported by system)r~ryr�rl)r�r�r�r+r+r,r�xszTarFile.makefifocCs�ttd�s ttd�r,td��|j}|j�rQ|tjO}n
|tjO}tj||tj	|j
|j��dS)N�mknodr�z'special devices not supported by system)r~ryrlr`rfr^�S_IFBLK�S_IFCHRr�r�r�r�)r�r�r�r`r+r+r,r��s 	
zTarFile.makedevcCs�yj|j�r%tj|j|�nDtjj|j�rPtj|j|�n|j|j	|�|�WnPt
k
r�y|j|j	|�|�Wntk
r�td��YnXYnXdS)Nz%unable to resolve link inside archive)
r`ry�symlinkr�rrvr��linkr�r��symlink_exceptionr�rl)r�r�r�r+r+r,r��s

zTarFile.makelinkc Cs2tr.ttd�r.tj�dkr.|rB|j}|j}npytj|j�d}Wnt	k
ry|j}YnXytj
|j�d}Wnt	k
r�|j}YnXyH|j�r�ttd�r�tj
|||�ntj|||�Wn1tk
r-}ztd��WYdd}~XnXdS)N�geteuidrr�lchownzcould not change owner)r�r~ryr�rrr��getgrnamr!r��getpwnamr r`r�r�r�rl)r�r�r�r��g�ur�r+r+r,r��s$'	

z
TarFile.chowncCs^ttd�rZytj||j�Wn1tk
rY}ztd��WYdd}~XnXdS)Nr�zcould not change mode)r~ryr�r`r�rl)r�r�r�r�r+r+r,r��s
z
TarFile.chmodcCskttd�sdSy tj||j|jf�Wn1tk
rf}ztd��WYdd}~XnXdS)Nr�z"could not change modification time)r~ryr�rr�rl)r�r�r�r�r+r+r,r��s z
TarFile.utimecCsV|jd�|jdk	r2|j}d|_|S|j|jj�kr|jj|jd�|jjd�std��d}x�y|jj	|�}Wn�t
k
r�}z=|jr�|jdd|j|f�|jt
7_w�WYdd}~Xn(tk
r}}za|jrJ|jdd|j|f�|jt
7_w�n!|jdkrktt|���WYdd}~Xn�tk
r�|jdkr�td��Yn|tk
r�}z&|jdkr�tt|���WYdd}~Xn7tk
r$}ztt|���WYdd}~XnXPq�W|dk	rI|jj|�n	d|_|S)	NZrarzunexpected end of datarz0x%X: %srz
empty fileT)r�r�r�r�r�r�rRrmr�r9rsrzr�r�r>rrqrrrtr}r�r~)r��mr�r�r+r+r,rC�sL
				$
$%	zTarFile.nextcCs�|j�}|dk	r1|d|j|��}|rItjj|�}xKt|�D]=}|rztjj|j�}n	|j}||krV|SqVWdS)N)r��indexryr�normpath�reversedr�)r�r�r��	normalizer}r��member_namer+r+r,r�
	s	zTarFile._getmembercCs-x|j�}|dkrPqWd|_dS)NT)rCr~)r�r�r+r+r,r�!	s
z
TarFile._loadcCsQ|jrtd|jj��|dk	rM|j|krMtd|j��dS)Nz%s is closedzbad operation for mode %r)r�r�r�rir`)r�r`r+r+r,r�+	s	zTarFile._checkcCs�|j�rEdjtdtjj|j�|jf��}d}n|j}|}|j|d|dd�}|dkr�t	d|��|S)Nr�r�r�Tzlinkname %r not found)
r`r�r�ryrr�r�r�r�r�)r�r�r��limitr�r+r+r,r�4	s0		zTarFile._find_link_targetcCs$|jrt|j�St|�SdS)N)r~�iterr}�TarIter)r�r+r+r,�__iter__G	s	
zTarFile.__iter__cCs&||jkr"t|dtj�dS)N�file)r{rgre�stderr)r��level�msgr+r+r,r�O	szTarFile._dbgcCs|j�|S)N)r�)r�r+r+r,�	__enter__U	s
zTarFile.__enter__cCs<|dkr|j�n|js/|jj�d|_dS)NT)r�r�r�r�)r�r�r �	tracebackr+r+r,�__exit__Y	s

	
zTarFile.__exit__)7rirjrkr{ryrzr|rmrGrnr)r*rr�r�r�r�ror�rr�r�r�r�r�r�r�r�r�r�rSr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rCr�r�r�r�r�r�rrr+r+r+r,r_srkZ!
d =(&0
	6
	c@s4eZdZdd�Zdd�Zdd�ZdS)r�cCs||_d|_dS)Nr)r�r�)r�r�r+r+r,r�k	s	zTarIter.__init__cCs|S)Nr+)r�r+r+r,r�p	szTarIter.__iter__cCs�|jdkr3|jjdk	r3|jj�}nm|jt|jj�krd|jj|j}n<|jjs�|jj�}|s�d|j_t�nt�|jd7_|S)NrTr)r�r�r�rCr%r}r~�
StopIteration)r�r�r+r+r,�__next__t	s!	zTarIter.__next__N)rirjrkr�r�rr+r+r+r,r�d	sr�cCs;yt|�}|j�dSWntk
r6dSYnXdS)NTF)rr�r)r�r�r+r+r,r�	s

cCs�ddl}d}|jd|�}|jdddddd	d
d�|j�}|jdd
ddd
d�|jdddddd9d
d�|jdddddd:d
d�|jddddd
d�|j�}|jro|j}t|�rSt|d��*}|j�t	|j�d t
j�WdQRX|jrlt	d!j
|��q�|jd"d#j
|��n{|jr�|j}t|�r�tj|d$��}|jd%|j�WdQRXq�|jd"d#j
|��n|jr�t|j�d"kr|jd}tj}n=t|j�d&kr9|j\}}n|jd"|j��t|�r�tj|d$��}|jd'|�WdQRX|jr�|d(kr�d)j
|�}	nd*j
||�}	t	|	�q�|jd"d#j
|��n|jr�|jjd�}
tjj|
�\}}d+d,d-d,d.d/d0d/d1d2d3d2d4d2d5d2i}
||
krld6|
|nd7}|j}tj|
|��%}x|D]}|j|�q�WWdQRX|jr�t	d8j
|
��n|jd"|j��dS);Nrz3A simple command line interface for tarfile module.�descriptionz-vz	--verbose�action�
store_true�defaultF�helpzVerbose outputz-lz--list�metavar�	<tarfile>zShow listing of a tarfilez-ez	--extract�nargs�+�<output_dir>zExtract tarfile into target dirz-cz--create�<name>�<file>zCreate tarfile from sourcesz-tz--testzTest if a tarfile is validrvr�z{!r} is a tar archive.rz{!r} is not a tar archive.
zr:*r�rrr�z{!r} file is extracted.z+{!r} file is extracted into {!r} directory.z.gzr�z.tgzz.xzr�z.txzz.bz2r�z.tbzz.tbz2z.tb2zw:rwz{!r} file created.)rr)rr)�argparse�ArgumentParser�add_argument�add_mutually_exclusive_group�
parse_argsZtestrrr�rgrerr�rG�exitrSrr�r%ry�curdir�format_helpr�Zcreate�popr�splitextr�)rr�parserrI�argsrTr�ZtfrrZtar_name�_�extZcompressionsZtar_modeZ	tar_files�	file_namer+r+r,�main�	s�		
 				
	
	 	
	r#�__main__)a�version�
__author__�__date__Z	__cvsid__�__credits__�builtinsrrwreryr�rOr^r�rJrrGr�r�r�r��NotImplementedErrorr�r��	NameError�__all__r&r�r�rr�r�r�rr�r,rar_rcrer�rgZCONTTYPErrr-rrr<r�rCr�rmr@r]r1rZrNrr;r[r�rn�getfilesystemencodingr-r2rArHrMrPr_rh�	Exceptionrrlrmrnrorprqrrrsr>rtrur��objectr�r��BufferedReaderr�rrr�rr#rir+r+r+r,�<module> s�


						
�h�������	)	Z

?>