ó zfc @s[dZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z yddl Z e j Z Wn ek rÅeZ ej Z nXddddddd d d g Zdefd „ƒYZd efd „ƒYZeZdd>dZdd>dZdd>dZdZdZdZdZejeƒZdZdZdZ dZ!dZ"dZ#dZ$dZ%dZ&dZ'dZ(dZ)eje(ƒZ*dZ+dZ,dZ-dZ.dZ/dZ0dZ1dZ2dZ3dZ4dZ5dZ6d Z7d!Z8d"Z9d#Z:dZ;d$Z<d%Z=d&Z>d'Z?eje>ƒZ@dZAdZBdZCdZDdZEdZFdZGdZHdZIdZJdZKdZLd(ZMd)ZNejeMƒZOd*ZPd+ZQejePƒZRdZSdZTdZUdZVdZWdZXdZYdZZdZ[dZ\d,Z]ej^d-ƒZ_d.„Z`d/„Zad0„Zbd1„Zcd2„Zddeefd3„ƒYZfd4fd5„ƒYZgid6d6d7d6d8d6d8d6d8d6d8d6d9d6d:d6d;d6d<d6d9d6d=d 6d>d"6d?d%6d@dA6dBdC6dDdE6ZhdFe jifdG„ƒYZjd eefdH„ƒYZkd ekfdI„ƒYZledJ„ZmendKkrWemƒndS(Ls Read and write ZIP files. iÿÿÿÿNt BadZipfileterrort ZIP_STOREDt ZIP_DEFLATEDt is_zipfiletZipInfotZipFilet PyZipFilet LargeZipFilecBseZRS((t__name__t __module__(((s/usr/lib64/python2.7/zipfile.pyRscBseZdZRS(su Raised when writing a zipfile, the zipfile requires ZIP64 extensions and those extensions are disabled. (R R t__doc__(((s/usr/lib64/python2.7/zipfile.pyRsiiiiis<4s4H2LHsPKiiiiiii s<4s4B4HL2L5H2LsPKi i i i iiiis <4s2B4HL2L2HsPKs<4sLQLsPKs <4sQ2H2L4QsPKiPKs         cBsJeZdZdZddd„Zdd„Zd„Zd„Zd„Z RS( s>Class with attributes describing each file in the ZIP archive.t orig_filenameR&t date_timet compress_typeRVRt create_systemR@textract_versiontreservedt flag_bitstvolumet internal_attrt external_attrt header_offsettCRCt compress_sizet file_sizet _raw_timetNoNamei¼iicCs#||_|jtdƒƒ}|dkr:|d|!}ntjdkrptj|krp|jtjdƒ}n||_||_|ddkr¡tdƒ‚nt |_ d|_ d|_ t jdkr×d|_n d|_d|_d|_d|_d|_d|_d|_d|_dS( Nit/i¼s+ZIP does not support timestamps before 1980R twin32ii(RWtfindtchrtostseptreplaceR&RXt ValueErrorRRYRVRtsystplatformRZR@R[R\R]R^R_R`(tselfR&RXt null_byte((s/usr/lib64/python2.7/zipfile.pyt__init__6s.               c CsÅ|j}|ddd>|dd>B|dB}|dd>|d d>B|ddB}|jd @rsd}}}n|j}|j}|j}|j}|dkr¾|tkp¸|tk}n|rùd } |tj | dtj | ƒd ||ƒ}n|tks|tkr_|s&t d ƒ‚nd }d }t d|j ƒ|_ t d|j ƒ|_n|jƒ\} } tj tt|j |j| |j|||||t| ƒt|ƒƒ } | | |S(s'Return the per-file header as a string.ii¼i iiiii iisZdZejdƒZde d„Z dd„Z dd„Z d „Z dd „Zd „Zd „Zd „ZRS(sZFile-like object for reading an archive member. Is returned by ZipFile.open(). iiis*^(?P[^\r\n]+)|(?P\n|\r\n?)cCsf||_||_||_|j|_|j|_|j|_|jtkrct j dƒ|_ n\|jt kr¿t j|jƒ}|r¦td|j|fƒ‚q¿td|jfƒ‚nd|_d|_d|_d|k|_d|_|jdk r|jd8_n||_|j|_t|dƒrY|j|_tdƒd @|_n d|_dS( Niñÿÿÿscompression type %d (%s)scompression type %dR itUi RbIÿÿÿÿ(t_fileobjt _decryptert_close_fileobjRYt_compress_typeRct_compress_sizet_compress_leftRtzlibt decompressobjt _decompressorRtcompressor_namestgettNotImplementedErrort _unconsumedt _readbuffert_offsett _universalRKtnewlinestmodeR&tnameR$Rbt _expected_crctcrc32t _running_crc(RqtfileobjRÃtzipinfot decryptert close_fileobjtdescr((s/usr/lib64/python2.7/zipfile.pyRss4             iÿÿÿÿcCs£|j ra|dkra|jjd|jƒd}|dkra|j|j|!}||_|Sn|js}tjj||ƒSd}x|dks¤t|ƒ|krž|jdƒ}|dkrÃ|S|j j |ƒ}|j dƒ}|dk rJ|j dkr g|_ n||j kr-|j j|ƒn|jt|ƒ7_|dS|j dƒ}|dkr|||t|ƒ }n|jt|ƒ7_||7}q†W|S( srRead and return a line from the stream. If limit is specified, at most limit bytes will be read. is iR itnewlinetchunkN(RÁR¿RiRÀtiotBufferedIOBasetreadlineRtpeektPATTERNtsearchtgroupRKRÂR(RqtlimitRtlinet readaheadtmatchRÍRÎ((s/usr/lib64/python2.7/zipfile.pyRÑBs8   !     cCs“|t|jƒ|jkr{|j|ƒ}t|ƒ|jkrc||j|j|_d|_q{|jt|ƒ8_n|j|j|jd!S(s6Returns buffered bytes without advancing the position.ii(RR¿RÀR"(RqtnRÎ((s/usr/lib64/python2.7/zipfile.pyRÒts cCstS(N(R(Rq((s/usr/lib64/python2.7/zipfile.pytreadable�scCsœd}|dkrd}nxztr—|dkrB|j|ƒ}n2|t|ƒkrp|j|t|ƒƒ}n|St|ƒdkrŠ|S||7}qWdS(s�Read and return up to n bytes. If the argument is omitted, None, or negative, data is read and returned until EOF is reached.. R iÿÿÿÿiN(RKRtread1R(RqRÚtbufR:((s/usr/lib64/python2.7/zipfile.pyR"„s    cCs^|jdkrdSt||jƒd@|_|rZ|j|jkrZtd|jƒ‚ndS(NIÿÿÿÿsBad CRC-32 for file %r(RÅRKRÆRÇRRÄ(Rqtnewdatateof((s/usr/lib64/python2.7/zipfile.pyt _update_crc–s cCsg|dks|dkr$|j}nt|jƒ|j}|jdkrW||t|jƒkrW||t|jƒ}t||jƒ}t ||jƒ}|j j |ƒ}|jt|ƒ8_|r÷|j dk r÷dj t|j |ƒƒ}n|jtkrE|j|d|jdkƒ|j|j||_d|_qW|j|7_nt|jƒdkr4||kr4|jtkr4|jj|jt|||jƒƒ}|jj|_t|jƒdkoß|jdk}|rþ||jjƒ7}n|j|d|ƒ|j|j||_d|_n|j|j|j|!}|jt|ƒ7_|S(s7Read up to n bytes with at most one read() system call.iR RßN(RKtMAX_NRR¿RÀR·R¾ROt MIN_READ_SIZEtminR²R"R³RtmapRµRRàRRºt decompresstunconsumed_tailtflush(RqRÚtlen_readbuffertnbytesR:Rß((s/usr/lib64/python2.7/zipfile.pyRÜ s> ( ! $ cCs8z|jr|jjƒnWdtt|ƒjƒXdS(N(R´R²tclosetsuperR°(Rq((s/usr/lib64/python2.7/zipfile.pyRêÔs iN(R R R RáRâtretcompileRÓRKRRsRÑRÒRÛR"RàRÜRê(((s/usr/lib64/python2.7/zipfile.pyR° s  ' 2   4cBseZdZdZdeed„Zd„Zd„Z d„Z d„Z d„Z d„Z d „Zd „Zd „Zed „ƒZejd „ƒZdd„Zddd„Zddd„Zdddd„Zd„Zd„Zddd„Zdd„Zd„Zd„ZRS(sd Class with methods to open, read, write, close, list zip files. z = ZipFile(file, mode="r", compression=ZIP_STORED, allowZip64=False) file: Either the path to the file, or a file-like object. If it is a path, the file will be opened and closed by ZipFile. mode: The mode can be either read "r", write "w" or append "a". compression: ZIP_STORED (no compression) or ZIP_DEFLATED (requires zlib). allowZip64: if True ZipFile will create files with ZIP64 extensions when needed, otherwise it will raise an exception when this would be necessary. trcCs\|dkrtdƒ‚n|tkr*n*|tkrKtsTtd‚qTn td‚||_t|_d|_i|_g|_ ||_ |j dd ƒd|_ }d|_d |_t|tƒrXd|_||_id d6d d6d d6}yt|||ƒ|_Wqtk rT|dkrNd}}t|||ƒ|_qU‚qXn'd |_||_t|ddƒ|_y¤|dkr›|jƒn‡|dkr³t|_no|dkry$|jƒ|jj|jdƒWq"tk r|jjddƒt|_q"Xn tdƒ‚Wn2|j}d|_|jsQ|jƒn‚nXdS(s>Open the ZIP file with mode read "r", write "w" or append "a".Rîtwtas(ZipFile() requires mode "r", "w", or "a"s.Compression requires the (missing) zlib modules(That compression method is not supporteditbR R#twbsr+biRÄisMode must be "r", "w" or "a"N(RîRïRð(RˆRRR¸t _allowZip64Rt _didModifytdebugt NameToInfotfilelistt compressionRmRÃRKRžt_commentR‚t basestringt _filePassedR&R%R Rtgetattrt_RealGetContentsRR(t start_dirRRê(RqtfileRÃRøt allowZip64tkeytmodeDictR ((s/usr/lib64/python2.7/zipfile.pyRsísf                                cCs|S(N((Rq((s/usr/lib64/python2.7/zipfile.pyt __enter__4scCs|jƒdS(N(Rê(Rqttypetvaluet traceback((s/usr/lib64/python2.7/zipfile.pyt__exit__7sc CsH|j}yt|ƒ}Wntk r8tdƒ‚nX|sKtd‚n|jdkrb|GHn|t}|t}|t|_|t ||}|t t kr¶|t t 8}n|jdkrã||}dG|G|G|GHn|||_|j|jdƒ|j|ƒ}tj|ƒ}d}x||krC|jtƒ} t| ƒtkrftdƒ‚ntjt| ƒ} | ttkr—tdƒ‚n|jdkr®| GHn|j| tƒ} t| ƒ} |j| tƒ| _|j| tƒ| _| t | _!| dd!\ | _"| _#| _$| _%| _&| _'} } | _(| _)| _*| d d !\| _+| _,| _-| | _.| d ?d | d ?d @| d@| d?| d ?d@| d@df| _/| j0ƒ| j!|| _!| j1ƒ| _2|j3j4| ƒ| |j5| j2<|t| t| t| t}|jdkr*dG|GHq*q*WdS(s/Read in the table of contents for the ZIP file.sFile is not a zip fileiisgiven, inferred, offsetisTruncated central directorys&Bad magic number for central directoryi iii i¼iii i?ttotalN(6R RRRRõR5R6t _ECD_COMMENTRùt _ECD_LOCATIONR0R/R-R)RþR(R"t cStringIOtStringIOtsizeCentralDirRR*RtstructCentralDirt _CD_SIGNATUREtstringCentralDirt_CD_FILENAME_LENGTHRt_CD_EXTRA_FIELD_LENGTHRt_CD_COMMENT_LENGTHRVt_CD_LOCAL_HEADER_OFFSETRaR@RZR[R\R]RYRbRcRdR^R_R`ReRXRŽR‡R&R÷RRö(RqR R9tsize_cdt offset_cdtconcattinferredR:RtcentdirR&txtttd((s/usr/lib64/python2.7/zipfile.pyRý:sd          I & "cCs.g}x!|jD]}|j|jƒqW|S(s+Return a list of file names in the archive.(R÷RR&(RqtlR:((s/usr/lib64/python2.7/zipfile.pytnamelistscCs|jS(sJReturn a list of class ZipInfo instances for files in the archive.(R÷(Rq((s/usr/lib64/python2.7/zipfile.pytinfolist†scCsJdd GHx:|jD]/}d|jd }d|j||jfGHqWdS( s+Print a table of contents for the zip file.s%-46s %19s %12ss File Names Modified tSizes%d-%02d-%02d %02d:%02d:%02dis %-46s %s %12dN(s File Names Modified R (R÷RXR&Rd(Rqtzinfotdate((s/usr/lib64/python2.7/zipfile.pytprintdir‹s cCsnd}xa|jD]V}y8|j|jdƒ�}x|j|ƒrFq4WWdQXWqtk re|jSXqWdS(s%Read all the files and check the CRC.iiRîNi(R÷R%R&R"R(Rqt chunk_sizeR!tf((s/usr/lib64/python2.7/zipfile.pyttestzip’s cCs5|jj|ƒ}|dkr1td|ƒ‚n|S(s,Return the instance of ZipInfo given 'name'.s(There is no item named %r in the archiveN(RöR¼RKtKeyError(RqRÄtinfo((s/usr/lib64/python2.7/zipfile.pytgetinfoŸs  cCs ||_dS(s)Set default password for encrypted files.N(Rž(RqRž((s/usr/lib64/python2.7/zipfile.pyt setpassword¨scCs|jS(s.The comment text associated with the ZIP file.(Rù(Rq((s/usr/lib64/python2.7/zipfile.pyRV¬scCsXt|ƒtkrBddl}|jdtddƒ|t }n||_t|_dS(Niÿÿÿÿs3Archive comment is too long; truncating to %d bytest stackleveli(RtZIP_MAX_COMMENTtwarningstwarnRùRRô(RqRVR-((s/usr/lib64/python2.7/zipfile.pyRV±s    cCs|j|d|ƒjƒS(s)Return file bytes (as a string) for name.Rî(R%R"(RqRÄRž((s/usr/lib64/python2.7/zipfile.pyR"¼scCsd|dkrtd‚n|js-td‚n|jrH|j}t}nt|jdƒ}t}yàt|tƒr{|}n|j |ƒ}|j |j dƒ|j t ƒ}t|ƒt krÍtdƒ‚ntjt|ƒ}|ttkrþtd ƒ‚n|j |tƒ}|tr/|j |tƒn||jkrWtd |j|f‚n|jd @} d} | r&|s‚|j}n|s˜td |‚nt|ƒ} |j d ƒ} t| | dd !ƒ} |jd@rê|jd?d@} n|jd?d@} t| dƒ| kr&td|ƒ‚q&nt |||| d|ƒSWn|rY|j!ƒn‚nXdS(s#Return file-like object for 'name'.RîR±trUs&open() requires mode "r", "U", or "rU"s3Attempt to read ZIP archive that was already closedR#isTruncated file headers Bad magic number for file headers3File name in directory "%s" and header "%s" differ.is6File %s is encrypted, password required for extractioni iiÿii sBad password for fileRËN(RîR±R/("RˆR RûRR%R&RR‚RR)R(RaR"tsizeFileHeaderRRR*RRxt _FH_SIGNATURERyt_FH_FILENAME_LENGTHt_FH_EXTRA_FIELD_LENGTHRWR]RKRžR�RäReRbR—R°Rê(RqRÄRÃRžtzef_filet should_closeR!tfheadertfnamet is_encryptedtzdtbytestht check_byte((s/usr/lib64/python2.7/zipfile.pyR%Àsd                cCsOt|tƒs!|j|ƒ}n|dkr<tjƒ}n|j|||ƒS(s#Extract a member from the archive to the current working directory, using its full name. Its file information is extracted as accurately as possible. `member' may be a filename or a ZipInfo object. You can specify a different directory using `path'. N(R‚RR)RKRktgetcwdt_extract_member(RqtmembertpathRž((s/usr/lib64/python2.7/zipfile.pytextracts  cCsC|dkr|jƒ}nx!|D]}|j|||ƒq"WdS(sõExtract all members from the archive to the current working directory. `path' specifies a different directory to extract to. `members' is optional and must be a subset of the list returned by namelist(). N(RKRRA(RqR@tmembersRžRÉ((s/usr/lib64/python2.7/zipfile.pyt extractalls  c Cs|jjdtjjƒ}tjjrH|jtjjtjjƒ}ntjj|ƒd}tjjjd„|jtjjƒDƒƒ}tjjdkr2d}t |t ƒrÆd„|Dƒ}nt j |dt |ƒƒ}|j|ƒ}d„|jtjjƒDƒ}tjjjd „|Dƒƒ}ntjj||ƒ}tjj|ƒ}tjj|ƒ}|r”tjj|ƒ r”tj|ƒn|jd dkrÍtjj|ƒsÉtj|ƒn|S|j|d |ƒ�/}t|d ƒ�} tj|| ƒWd QXWd QX|S(sbExtract the ZipInfo object 'member' to a physical file on the path targetpath. Rgicss6|],}|dtjjtjjfkr|VqdS(R N(RkR@tcurdirtpardir(t.0R((s/usr/lib64/python2.7/zipfile.pys 6ss\s:<>|"?*cSs%i|]}tdƒt|ƒ“qS(t_(R—(RFR ((s/usr/lib64/python2.7/zipfile.pys <s RGcss|]}|jdƒVqdS(t.N(trstrip(RFR((s/usr/lib64/python2.7/zipfile.pys Ascss|]}|r|VqdS(N((RFR((s/usr/lib64/python2.7/zipfile.pys BsiÿÿÿÿRžRòN(R&RmRkR@Rltaltsept splitdriveRtsplitR‚Rƒtstringt maketransRt translatetnormpathtdirnametexiststmakedirstisdirtmkdirR%Rÿtshutilt copyfileobj( RqR?t targetpathRžtarcnametillegalR“t upperdirstsourcettarget((s/usr/lib64/python2.7/zipfile.pyR>)s4 !."cCs+|j|jkr;ddl}|jd|jddƒn|jdkrVtd‚n|jsktd ‚n|jtkr�t r�td ‚n|jt tfkr®td ‚n|j s'd}t |jƒtkrÛd }n0|jtkród }n|jtkr d}n|r't|dƒ‚q'ndS(s6Check for errors before writing a file to the archive.iÿÿÿÿNsDuplicate name: %rR+iRïRðs write() requires mode "w" or "a"s4Attempt to write ZIP archive that was already closeds.Compression requires the (missing) zlib modules(That compression method is not supporteds Files counttFilesizes Zipfile sizes would require ZIP64 extensions(RïRð(R&RöR-R.RÃRˆR RYRR¸RRóRKRR÷tZIP_FILECOUNT_LIMITRdRtRaR(RqR!R-trequires_zip64((s/usr/lib64/python2.7/zipfile.pyt _writecheckWs2          cCs|jstdƒ‚ntj|ƒ}tj|jƒ}tj|jƒ}|dd!}|d krm|}ntj j tj j |ƒdƒ}x*|dtj tjfkr»|d}q’W|rÏ|d7}nt||ƒ}|dd@d>|_|rt|_n$|d kr |j|_n ||_|j|_d|_|jjƒ|_|j|ƒt|_|rÓd|_d|_d|_|jdO_|jj|ƒ||j |j!<|jj"|j#t$ƒƒd St%|d ƒ� } d|_} d|_} |j&o|jd t'k} |jj"|j#| ƒƒ|jt(krat)j*t)j+t)j,d ƒ} nd } d}xx| j-dƒ}|s‰Pn|t.|ƒ}t/|| ƒd@} | rÔ| j0|ƒ}| t.|ƒ} n|jj"|ƒqpWWd QX| r,| j1ƒ}| t.|ƒ} |jj"|ƒ| |_n ||_| |_||_| r�|j&r�|t'krrtdƒ‚n| t'kr�tdƒ‚q�n|jjƒ}|jj2|jdƒ|jj"|j#| ƒƒ|jj2|dƒ|jj|ƒ||j |j!|dd>B|d B}|d d >|d d>B|dd B}g}|jtksÆ|j tkrõ|j |jƒ|j |j ƒd }d }n|j}|j }|j tkr/|j |j ƒd} n |j } |j } |r±t | dƒ} tjddt|ƒddt|ƒ|Œ| } td|jƒ} td|jƒ} n|j} |j} y…|jƒ\} }tjtt| |j| |j||j|||j||t| ƒt| ƒt|jƒd|j|j| ƒ}WnŠtk rÔtj tt| |j| |j|j!|j|||j||t|j"ƒt| ƒt|jƒd|j|j| fIJ‚nX|jj#|ƒ|jj#| ƒ|jj#| ƒ|jj#|jƒqGW|jjƒ}t|jƒ}||}|}d}|t$kred}n*|tkrzd}n|tkr�d}n|rI|j%s±t&|dƒ‚ntjt't(ddddd||||ƒ }|jj#|ƒtjt)t*d|dƒ}|jj#|ƒt+|dƒ}t+|d ƒ}t+|d ƒ}ntjt,t-dd||||t|j.ƒƒ }|jj#|ƒ|jj#|j.ƒ|jj/ƒnWd|j}d|_|j0sØ|j1ƒnXdS(sJClose the file, and for mode "w" and "a" write the ending records.NRïRðii¼i iiiii iIÿÿÿÿlÿÿsRaRiRuRvRê(((s/usr/lib64/python2.7/zipfile.pyRÜs0 G   E     O . \ 3 cBs#eZdZdd„Zd„ZRS(sDClass to create ZIP archives with Python library files and packages.R c Csàtjj|ƒ\}}tjj|ƒr|tjj|dƒ}tjj|ƒrÊ|rjd||f}n|}|jr�dG|GdG|GHn|j|dd!|ƒ\}}|jrÁdG|GHn|j||ƒtj |ƒ}|j dƒx‰|D]Ï} tjj|| ƒ} tjj | ƒ\} } tjj| ƒrptjjtjj| dƒƒrÃ|j | |ƒqÃqô| dkrô|j| dd!|ƒ\}}|jr°dG|GHn|j||ƒqôqôWqÜ|jrßd G|GHnxútj |ƒD]†} tjj|| ƒ} tjj | ƒ\} } | dkrï|j| dd!|ƒ\}}|jrbdG|GHn|j||ƒqïqïWn`|ddkr˜t d ‚n|j|dd!|ƒ\}}|jrÌd G|GHn|j||ƒd S( s,Add all files from "pathname" to the ZIP archive. If pathname is a package directory, search the directory and all package subdirectories recursively for all *.py and enter the modules into the archive. If pathname is a plain directory, listdir *.py and enter all modules. Else, pathname must be a Python *.py file and the module will be put into the archive. Added modules are always module.pyo or module.pyc. This method will compile the module.py into module.pyc if necessary. s __init__.pys%s/%ssAdding package intasiiýÿÿÿtAddings.pysAdding files from directorys.Files added with writepy() must end with ".py"s Adding fileN(RkR@RLRTRtisfileRõt _get_codenameRitlistdirtremovetsplitexttwritepyRˆ( RqtpathnametbasenametdirRÄtinitnameR7RYtdirlistR&R@troottext((s/usr/lib64/python2.7/zipfile.pyR‹zsZ      !           c Cs8|d}|d}|d}tjj|ƒr]tj|ƒjtj|ƒjkr]|}n¢tjj|ƒ s”tj|ƒjtj|ƒjkrùddl}|jrµdG|GHny|j||dt ƒWn|j k rï}|j GHnX|}n|}tjj |ƒd} |r.d|| f} n|| fS( sReturn (filename, archivename) for the path. Given a module name path, return the correct file path and archive name, compiling if necessary. For example, given /python/lib/string, return (/python/lib/string.pyc, string). s.pys.pycs.pyoiÿÿÿÿNt Compilingis%s/%s( RkR@R†RbRgt py_compileRõRíRKRtPyCompileErrortmsgRL( RqRŒR�tfile_pytfile_pyctfile_pyoR7R”terrt archivename((s/usr/lib64/python2.7/zipfile.pyR‡»s*   $ $     (R R R R‹R‡(((s/usr/lib64/python2.7/zipfile.pyRws Ac s™ddl}|jdƒ}|dkr7tjd}n| sN|ddkrc|GHtjdƒn|ddkrÃt|ƒd krš|GHtjdƒnt|dd ƒ�}|jƒWdQXnÒ|ddkrAt|ƒd krú|GHtjdƒnt|dd ƒ�}|j ƒ}WdQX|r9d j |ƒGHnd GHnT|ddkr¨t|ƒd krx|GHtjdƒnt|dd ƒ�}|j |d ƒWdQXní|ddkr•t|ƒd krß|GHtjdƒn‡fd†‰t|dddt ƒ�‰}x|d D]s}t jj|ƒ}|sTt jjt jj|ƒƒ}n|dt jt jfkrxd}nˆ|||ƒqWWdQXndS(NiÿÿÿÿsE Usage: zipfile.py -l zipfile.zip # Show listing of a zipfile zipfile.py -t zipfile.zip # Test if a zipfile is valid zipfile.py -e zipfile.zip target # Extract zipfile into target dir zipfile.py -c zipfile.zip src ... # Create zipfile from sources iis-ls-cs-es-tiRîs.The following enclosed file is corrupted: {!r}s Done testingics¢tjj|ƒr(|j||tƒnvtjj|ƒrž|rS|j||ƒnxHtj|ƒD]4}ˆ|tjj||ƒtjj||ƒƒqcWndS(N(RkR@R†RiRRTRˆR(tzfR@tzippathtnm(taddToZip(s/usr/lib64/python2.7/zipfile.pyRŸsRïRR (s-ls-cs-es-t(ttextwraptdedentRKRotargvtexitRRR#R&tformatRCRRkR@R�RQRDRE(targsR tUSAGERœtbadfileR@R�((RŸs/usr/lib64/python2.7/zipfile.pytmainÚsT    ! t__main__(oR R*RkReRoRVtbinasciiR RbRÏRìRMR¸RÆt ImportErrorRKt__all__t ExceptionRRRRtR_R,RRRMRLRvRJR0R1R2R3R4R5R6RQR R RRR Rt_CD_CREATE_VERSIONt_CD_CREATE_SYSTEMt_CD_EXTRACT_VERSIONt_CD_EXTRACT_SYSTEMt _CD_FLAG_BITSt_CD_COMPRESS_TYPEt_CD_TIMEt_CD_DATEt_CD_CRCt_CD_COMPRESSED_SIZEt_CD_UNCOMPRESSED_SIZERRRt_CD_DISK_NUMBER_STARTt_CD_INTERNAL_FILE_ATTRIBUTESt_CD_EXTERNAL_FILE_ATTRIBUTESRRxRyR0R1t_FH_EXTRACT_VERSIONt_FH_EXTRACT_SYSTEMt_FH_GENERAL_PURPOSE_FLAG_BITSt_FH_COMPRESSION_METHODt_FH_LAST_MOD_TIMEt_FH_LAST_MOD_DATEt_FH_CRCt_FH_COMPRESSED_SIZEt_FH_UNCOMPRESSED_SIZER2R3R+R,R)R.R/R-t_CD64_SIGNATUREt_CD64_DIRECTORY_RECSIZEt_CD64_CREATE_VERSIONt_CD64_EXTRACT_VERSIONt_CD64_DISK_NUMBERt_CD64_DISK_NUMBER_STARTt_CD64_NUMBER_ENTRIES_THIS_DISKt_CD64_NUMBER_ENTRIES_TOTALt_CD64_DIRECTORY_SIZEt_CD64_OFFSET_START_CENTDIRRrtStructR RR!RRHRtobjectRR�R»RÐR°RRR¨R (((s/usr/lib64/python2.7/zipfile.pytsô<$            + =ž< Ðÿÿ�c B