grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026+ q9Wã ó€RtRtRtRt^RIHt^RIt^RIt^RI t ^RI t ^RI t ^RI t ^RI t ^RIt^RIt^RIt^RIt]]]3t.ReOtRtRt]^,tRtRt^dt^dt^›tRt Rt!Rt"Rt#Rt$Rt%Rt&Rt'R t(R!t)R"t*R#t+R$t,R%t-R&t.^t/^t0^t1]1t2] ]!]"]#]&]'](]$]%])]*]+3 t3] ]!](]+3t4])]*]+3t5Rft60Rgmt7R+]8R,]8R(]8R)]9R*]9R']9/t:]PvR-8XdR.tR0t?R1t@^]23R2ltAR3tBR]R3R4ltCRhtDR5tER6tF!R7R]G4tH!R8R ]H4tI!R9R ]H4tJ!R:R ]H4tK!R;R ]H4tL!R<R ]H4tM!R=R>]M4tN!R?R@]M4tO!RARB]M4tP!RCRD]M4tQ!RERF]M4tR!RGRH4tS!RIRJ4tT!RKRL]U4tV!RMRN]U4tW!RORP] P°4tY!RQR]H4tZ!RRR]Z4t[!RSR]Z4t\!RTR]Z4t]!RUR]Z4t^!RVR]Z4t_!RWR]Z4t`]Z]]I3taRiRXltbRYtcRZtdR[teR\]cR]]dR^]e/tf]U!4tg]PÐ!R_4ti!R`R]U4tj!RaR]U4tkRbtl]kP tRctm]nRd8Xd ]m!4R#R# ]dRtEL?i;i ]dRtELJi;i)jz,Read from and write to tar format archives. z0.9.0u"Lars Gustäbel (lars@gustaebel.de)u4Gustavo Niemeyer, Niels Gustäbel, Richard Townsend.)ÚopenNÚTarFileÚTarInfoÚTarErrorÚ ReadErrorÚCompressionErrorÚ StreamErrorÚ ExtractErrorÚ HeaderErrorÚ FilterErrorÚAbsoluteLinkErrorÚOutsideDestinationErrorÚSpecialFileErrorÚAbsolutePathErrorÚLinkOutsideDestinationErrorÚLinkFallbackErroróisustar sustar00ó0ó1ó2ó3ó4ó5ó6ó7óLóKóSóxógóXÚsizeÚmtimeÚuidÚgidÚatimeÚctimeÚntúutf-8có�€Vf \R4hVPW#4pVRVV\V4, \,,#)z8Convert a string to a null-terminated bytes object. Nzmetadata cannot contain None)Ú ValueErrorÚencodeÚlenÚNUL)ÚsÚlengthÚencodingÚerrorss&&&&Ú./opt/alt/python314/lib64/python3.14/tarfile.pyÚstnr3�sA€ð ‚yÜÐ7Ó8Ð8Ø �‰�Ó"€AØ ˆWˆfˆ:˜¤# a£&�¬CÕ/Õ /Ð/ócó^€VPR4pVR8wdVRVpVPW4#)z8Convert a null-terminated bytes object to a string. rNéÿÿÿÿ)ÚfindÚdecode)r.r0r1Úps&&& r2Úntsr:¥s2€ð �‰ˆu‹ €A؈B„wØ ˆbˆqˆEˆØ �8‰8�HÓ %Ð%r4có¢€V^,R9du^p\\V4^, 4F"pV^,pWV^,,, pK$ V^,^ÿ8Xd"R\V4^, ,V, )pV#\VRR4p\VP 4;'gR^4pV# \ d \ R4hi;i)z/Convert a number field to a python number. éÚasciiÚstrictÚ0úinvalid header)é€éÿ)Úranger,r:ÚintÚstripr*ÚInvalidHeaderError)r.ÚnÚis& r2ÚntirI­sÀð  ˆ…tˆ~ÔØ ˆÜ”s˜1“v •zÖ"ˆAØ �!�GˆAØ �1�q•5•�MŠAñ#ð ˆQ�4�5Œ=Øœ#˜a›& 1�*Õ%¨Õ)Ð*ˆAð €Hð  7Ü�A�w Ó)ˆAÜ�A—G‘G“I×$Ð$  aÓ(ˆAð €Høôô 7Ü$Ð%5Ó6Ð 6ð 7úsÂ(B7Â-B7Â7Ccó€Tp\V4p^Tu;8:d^V^, ,8d-MM)\RV^, V3,R4\,pV#V\8Xd�RV^, ,)Tu;8:dRV^, ,8dqMMmV^8¼d\ ^€.4pM\ ^ÿ.4pRV,V,p\ V^, 4F%pVP ^V^ÿ,4V^,pK' V#\R4h)z/Convert a python number to a number field. z%0*or=r<zoverflow in number field)rDÚbytesr-Ú GNU_FORMATÚ bytearrayrCÚinsertr*)rGÚdigitsÚformatÚ original_nr.rHs&&& r2ÚitnrRÁsè€ð€JÜ ˆA‹€A؈AÖ!��f˜q•jÕ!×!Ü �&˜F Q�J¨˜?Õ*¨GÓ 4´sÕ :ˆð €Hð ”:Ô  3¨6°A­:Õ#6Ð"6¸!Ö"Q¸cÀfÈqÅjÕ>Q×"QØ �Œ6ܘ5˜'Ó"‰Aä˜5˜'Ó"ˆAØ�v•  Õ!ˆAä�v •zÖ"ˆAØ �H‰H�Q˜˜E� Ô "Ø �!�GŠAñ#ð €HôÐ3Ó4Ð4r4có¤€R\\P!RV44,pR\\P!RV44,pW3#)azCalculate the checksum for a member's header by summing up all characters except for the chksum field which is treated as if it was filled with spaces. According to the GNU tar sources, some tars (Sun and NeXT) calculate chksum with signed char, which will be different if there are chars in the buffer with the high bit set. So we calculate two checksums, unsigned and signed. r<Ú 148B8x356BÚ 148b8x356b)ÚsumÚstructÚ unpack_from)ÚbufÚunsigned_chksumÚ signed_chksums& r2Ú calc_chksumsr\ßsE€ðœC¤× 2Ò 2°<ÀÓ EÓFÕF€OØœ#œf×0Ò0°¸sÓCÓDÕD€MØ Ð )Ð)r4cóž€T;'gRpV^8XdR#Vf\P!WV4R#\W$4wrV\V4F=pVP V4p\ V4V8d V!R4hVP V4K? V^8wd;VP V4p\ V4V8d V!R4hVP V4R#)z_Copy length bytes from fileobj src to fileobj dst. If length is None, copy the entire content. Núunexpected end of datai@)ÚshutilÚ copyfileobjÚdivmodrCÚreadr,Úwrite) ÚsrcÚdstr/Ú exceptionÚbufsizeÚblocksÚ remainderÚbrYs &&&&& r2r`r`ìs¼€ð×"Ð"˜€GØ �„{ÙØ ‚~Ü×Ò˜3 WÔ-Ùä˜vÓ/Ñ€FÜ �6Ž]ˆØ�h‰h�wÓˆÜ ˆs‹8�gÔ ÙÐ4Ó5Ð 5Ø � ‰ �#Žñ ð �A„~Ø�h‰h�yÓ!ˆÜ ˆs‹8�iÔ ÙÐ4Ó5Ð 5Ø � ‰ �#ŒÙ r4có€V\8:dVPV4#.pV^8”dNVP\V\44pV'gM%VPV4V\ V4,pKTRP V4#)aRead up to *size* bytes from *fileobj* in bounded chunks. Returns the same bytes as ``fileobj.read(size)`` would (including a short result at end of file), but limits pre-allocation, so an oversized size field in a crafted header cannot force a huge allocation. r4)Ú_EXTHEADER_READ_CHUNKrbÚminÚappendr,Újoin)Úfileobjr!ÚchunksÚchunks&& r2Ú _safe_readrs sm€ð Ô$Ô$Ø�|‰|˜DÓ!Ð!Ø €FØ �Œ(Ø— ‘ œS Ô'<Ó=Ó>ˆßØ Ø� ‰ �eÔØ ”�E“ ÕŠØ �8‰8�FÓ Ðr4có €\\PRR4pVe"VPVR4P V4p\ VRR7R#)r0NÚbackslashreplaceÚ )Úend)ÚgetattrÚsysÚstdoutr+r8Úprint)r.r0s& r2Ú _safe_printr|s@€Ü”s—z‘z :¨tÓ4€HØÒØ �H‰H�XÐ1Ó 2× 9Ñ 9¸(Ó CˆÜ ˆ!�×r4có€]tRtRtRtRtR#)ri&zBase exception.©N©Ú__name__Ú __module__Ú __qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__r~r4r2rr&s†ÙÛr4có€]tRtRtRtRtR#)r i)z%General exception for extract errors.r~Nrr~r4r2r r )s†Ù/Ûr4có€]tRtRtRtRtR#)ri,z&Exception for unreadable tar archives.r~Nrr~r4r2rr,s†Ù0Ûr4có€]tRtRtRtRtR#)ri/z.Exception for unavailable compression methods.r~Nrr~r4r2rr/s†Ù8Ûr4có€]tRtRtRtRtR#)ri2z=Exception for unsupported operations on stream-like TarFiles.r~Nrr~r4r2rr2s†ÙGÛr4có€]tRtRtRtRtR#)r i5z!Base exception for header errors.r~Nrr~r4r2r r 5s†Ù+Ûr4có€]tRtRtRtRtR#)ÚEmptyHeaderErrori8zException for empty headers.r~Nrr~r4r2rŒrŒ8s†Ù&Ûr4rŒcó€]tRtRtRtRtR#)ÚTruncatedHeaderErrori;z Exception for truncated headers.r~Nrr~r4r2rŽrŽ;s†Ù*Ûr4rŽcó€]tRtRtRtRtR#)ÚEOFHeaderErrori>z"Exception for end of file headers.r~Nrr~r4r2r�r�>s†Ù,Ûr4r�có€]tRtRtRtRtR#)rFiAzException for invalid headers.r~Nrr~r4r2rFrFAs†Ù(Ûr4rFcó€]tRtRtRtRtR#)ÚSubsequentHeaderErroriDz3Exception for missing and invalid extended headers.r~Nrr~r4r2r“r“Ds†Ù=Ûr4r“có<a€]tRtRtoRtRtRtRtRtRt Vt R#) Ú _LowLevelFileiKzwLow-level file object. Supports reading and writing. It is used instead of a regular file object for streaming access. có>€R\PR\P\P,\P,/V,p\ \R4'dV\P ,p\P!WR4VnR#)ÚrÚwÚO_BINARYi¶N) ÚosÚO_RDONLYÚO_WRONLYÚO_CREATÚO_TRUNCÚhasattrr™rÚfd)ÚselfÚnameÚmodes&&&r2Ú__init__Ú_LowLevelFile.__init__Qsf€à ”—‘Ø ”—‘œrŸz™zÕ)¬B¯J©JÕ6ð ð õˆô ”2�z× "Ò "Ø ”B—K‘KÕ ˆDÜ—'’'˜$ eÓ,ˆŽr4cóF€\P!VP4R#©N)ršÚcloser ©r¡s&r2r¨Ú_LowLevelFile.closeZs€Ü �Š�—‘Ör4cóD€\P!VPV4#r§)ršrbr ©r¡r!s&&r2rbÚ_LowLevelFile.read]s€Ü�wŠw�t—w‘w Ó%Ð%r4cóH€\P!VPV4R#r§)ršrcr ©r¡r.s&&r2rcÚ_LowLevelFile.write`s€Ü �Š�—‘˜!Ör4)r N) r€r�r‚rƒr„r¤r¨rbrcr…Ú__classdictcell__©Ú __classdict__s@r2r•r•Ks#ø‡€ñò -òò&÷ðr4r•cópa€]tRtRtoRtRtRtRtRtRt Rt R t R t RR lt R tR tRtRtVtR#)Ú_Streamica™Class that serves as an adapter between TarFile and a stream-like object. The stream-like object only needs to have a read() or write() method that works with bytes, and the method is accessed blockwise. Use of gzip or bzip2 compression is possible. A stream-like object could be for example: sys.stdin.buffer, sys.stdout.buffer, a socket, a tape device etc. _Stream is intended to be used only internally. c ó|€RVnVf\W4pRVnVR8Xd\V4pVP4pVe\P !V4MRVnW nW0nW@n WPn RVn ^Vn RVn VR8Xd_^RIpY€nTP#R4TnTR 8Xd$TP&TnTP+4R#TP-T4R#VR 8XdN^RIp TR 8Xd*RTnT P34Tn\6TnR#T P9T4TnR#VR 8XdU^RIp TR 8Xd0RTnT P=4TnT P>TnR#T PATR7TnR#VR8XdU^RI!H"p TR 8Xd0RTnT PG4TnT PHTnR#T PK4TnR#VR8wd\!RV,4hR# \d\!R4Rhi;i \d\!R 4Rhi;i \d\!R 4Rhi;i \d\!R4Rhi;i TP'gTPPM4RTn h;i)z$Construct a _Stream object. TNFÚ*Úr4Úgzzzlib module is not availabler—Úbz2úbz2 module is not availableÚxzúlzma module is not available©ÚpresetÚzst)Úzstdú(compression.zstd module is not availableÚtarúunknown compression type %r)'Ú _extfileobjr•Ú _StreamProxyÚ getcomptyperšÚfspathr¢r£ÚcomptyperprgrYÚposÚclosedÚzlibÚ ImportErrorrÚcrc32ÚcrcÚerrorrfÚ _init_read_gzÚ_init_write_gzrºÚdbufÚBZ2DecompressorÚcmpÚOSErrorÚ BZ2CompressorÚlzmaÚLZMADecompressorÚ LZMAErrorÚLZMACompressorÚ compressionrÁÚZstdDecompressorÚ ZstdErrorÚZstdCompressorr¨) r¡r¢r£rÉrprgÚ compresslevelr¿rÌrºrØrÁs &&&&&&&& r2r¤Ú_Stream.__init__os‘€ð ˆÔØ Š?Ü# DÓ/ˆGØ$ˆDÔ à �sŒ?ô# 7Ó+ˆGØ×*Ñ*Ó,ˆHà+/Ò+;œŸ š  $œÀˆŒ ØŒ Ø Œ ØŒ ØŒ ؈ŒØˆŒØˆŒ ð7 ؘ4ÔðUÛð!” ØŸ:™: c›?�”ؘ3”;Ø%)§Z¡Z�D”NØ×&Ñ&Ö(à×'Ñ'¨ Ö6à˜UÔ"ðTÛð˜3”;Ø #�D”IØ"×2Ñ2Ó4�D”HÜ%,�D–Nà"×0Ñ0°Ó?�D–Hà˜TÔ!ðUÛð˜3”;Ø #�D”IØ#×4Ñ4Ó6�D”HØ%)§^¡^�D–Nà#×2Ñ2¸&Ð2ÓA�D–HؘUÔ"ðaÝ0ð˜3”;Ø #�D”IØ#×4Ñ4Ó6�D”HØ%)§^¡^�D–Nà#×2Ñ2Ó4�D–HؘUÔ"Ü&Ð'DÀxÕ'OÓPÐPñ#øôY#ôUÜ*Ð+IÓJÐPTÐTðUûô#ôTÜ*Ð+HÓIÈtÐSðTûô#ôUÜ*Ð+IÓJÐPTÐTðUûô#ôaÜ*Ð+UÓVÐ\`Ð`ðaûð Ø×#×#Ð#Ø— ‘ ×"Ñ"Ô$؈DŒKØ ús�ÂJÂHÂAJÃ!JÃ4JÃ<H4Ä.JÄ0JÅJÅIÅ4JÆ JÆ#JÆ+I*Æ14JÇ'JÇ>JÈH1È1JÈ4I É JÉI'É'JÉ*JÊJÊ6J;cóv€\VR4'd'VP'gVP4R#R#R#)rËN)rŸrËr¨r©s&r2Ú__del__Ú_Stream.__del__Às(€Ü �4˜× "Ò "¨4¯;¯;¨;Ø �J‰JŽLñ,7Ñ "r4c óž€VPPVVPPVPP)VPP^4Vn\ P!R\\P!444pVPRV,R,4VPPR4'dVPRRVn \PPVP4Vn VPVPP!RR4\",4R#) z6Initialize for writing with gzip compression. úÄÕDÖEr4c ó:€VPR8Xd+VPPWP4VnV;P\ V4, unVPR8wdVP PV4pVPV4R#)z&Write string s to the stream. r¹rÃN) rÉrÌrÎrÏrÊr,rÕÚcompressrðr¯s&&r2rcÚ _Stream.writeÕse€ð �=‰=˜DÔ Ø—y‘y—‘ q¯(©(Ó3ˆDŒHØ �Š”C˜“FÕ�Ø �=‰=˜EÔ !Ø—‘×!Ñ! !Ó$ˆAØ � ‰ �QŽr4c ó$€V;PV, un\VP4VP8”dSVPP VPRVP4VPVPRVnKvR#)zJWrite string s to the stream if a whole new block is ready to be written. N)rYr,rgrprcr¯s&&r2Ú__writeÚ_Stream.__writeßsa€ð �Š�A� �Ü�$—(‘(‹m˜dŸl™lÔ*Ø �L‰L× Ñ ˜tŸx™x¨ ¨¯©Ð6Ô 7Ø—x‘x § ¡   Ð.ˆDŽHñ+r4c óZ€VP'dR#RVnVPR8XdCVPR8wd2V;PVPP 4, unVPR8XdËVP'd¹VP PVP4RVnVPR8Xd|VP P\P!RVP44VP P\P!RVPR,44VP'gVP P4R#R# TP'gTP P4ii;i) zHClose the _Stream object. No operation should be done on it afterwards. NTr˜rÃr4r¹rælÿÿ)rËr£rÉrYrÕÚflushrprcrWrîrÏrÊrÅr¨r©s&r2r¨Ú _Stream.closeès€ð �;�;ˆ;Ù àˆŒ ð %Ø�y‰y˜CÔ D§M¡M°UÔ$:Ø—’˜DŸH™HŸN™NÓ,Õ,•à�y‰y˜CÔ D§H§H HØ— ‘ ×"Ñ" 4§8¡8Ô,Ø�”Ø—=‘= DÔ(Ø—L‘L×&Ñ&¤v§{¢{°4¸¿¹Ó'BÔCØ—L‘L×&Ñ&¤v§{¢{°4¸¿¹ÀJÕ9NÓ'OÔPà×#×#Ð#Ø— ‘ ×"Ñ"Ö$ñ$ø�4×#×#Ð#Ø— ‘ ×"Ñ"Õ$ð$ús�A5E;ÂB8E;Å;/F*c ó8€VPPVPP)4VnRVnVP ^4R8wd \ R4hVP ^4R8wd \R4h\VP ^44pVP ^4V^,'dR\VP ^44R\VP ^44,,pVP V4V^,'d)VP ^4pV'dV\8XgK'V^,'d)VP ^4pV'dV\8XgK'V^,'dVP ^4R#R#)z:Initialize for reading a gzip compressed fileobj. r4s‹únot a gzip fileózunsupported compression methodr<N) rÌÚ decompressobjrìrÕrÓÚ _Stream__readrrÚordr-)r¡ÚflagÚxlenr.s& r2rÑÚ_Stream._init_read_gzþs&€ð—9‘9×*Ñ*¨D¯I©I×,?Ñ,?Ð+?Ó@ˆŒØˆŒ ð �;‰;�q‹>˜[Ô (ÜÐ-Ó.Ð .Ø �;‰;�q‹>˜WÔ $Ü"Ð#CÓDÐ Dä�4—;‘;˜q“>Ó"ˆØ � ‰ �AŒà �!�8Œ8Ü�t—{‘{ 1“~Ó&¨¬s°4·;±;¸q³>Ó/BÕ)BÕBˆDØ �K‰K˜Ô Ø �!�8Œ8ØØ—K‘K “N�ߘA¤žHØØ �"�9Œ9ØØ—K‘K “N�ߘA¤žHØØ �!�8Œ8Ø �K‰K˜ŽNñ r4c ó€VP#)z3Return the stream's file pointer position. )rÊr©s&r2ÚtellÚ _Stream.tells €ð�x‰xˆr4c ó>€WP, ^8¼d}\WP, VP4wr#\V4F(pVP VP4pV'dK(M VP V4VP#\ R4h)zESet the stream's file pointer to pos. Negative seeking is forbidden. z seeking backwards is not allowed)rÊrargrCrbr)r¡rÊrhrirHÚdatas&& r2ÚseekÚ _Stream.seek"sz€ð —‘�>˜QÔ Ü & s¯X©X¥~°t·|±|Ó DÑ ˆFܘ6–]�Ø—y‘y §¡Ó.�ß‘tÙñ#ð �I‰I�iÔ ð�x‰xˆôÐ@ÓAÐ Ar4c óx€VfQhVPV4pV;P\V4, unV#)z5Return the next size number of bytes from the stream.)Ú_readrÊr,)r¡r!rYs&& r2rbÚ _Stream.read1s3€àÒÐÐØ�j‰j˜ÓˆØ �Š”C˜“HÕ�؈ r4c óH€VPR8XdVPV4#\VP4pVP.pW!8d–VP'dVPpRVnM.VP P VP4pV'gMAVPPV4pTPT4T\T4, pK›RPV4pW1RVnVRV# TPdp\R4ThRp?ii;i)z+Return size bytes from the stream. rÃr4zinvalid compressed dataN)rÉrr,rÓrYrprbrgrÕÚ decompressrfrrnro)r¡r!ÚcÚtrYÚes&& r2rÚ _Stream._read8sð€ð �=‰=˜EÔ !Ø—;‘;˜tÓ$Ð $ä �— ‘ ‹NˆØ �Y‰YˆKˆØŒhà�x�xˆxØ—h‘h�Ø�•à—l‘l×'Ñ'¨¯ © Ó5�ߨð BØ—h‘h×)Ñ)¨#Ó.�ð �H‰H�SŒMØ ”�S“�MŠAØ �H‰H�Q‹KˆØ�e�HˆŒ Ø��$ˆxˆøð —>‘>ô BÜÐ 9Ó:ÀÐAûð Bús C?Ã?D!Ä DÄD!c ó6€\VP4pVP.pW!8dTVPPVP4pV'gM%VP V4V\V4, pKYRP V4pW1RVnVRV#)z`Return size bytes from stream. If internal buffer is empty, read another block from the stream. r4N)r,rYrprbrgrnro)r¡r!rrrYs&& r2Ú__readÚ_Stream.__readSsz€ô �—‘‹MˆØ �X‰XˆJˆØŒhØ—,‘,×#Ñ# D§L¡LÓ1ˆCßØØ �H‰H�SŒMØ ”�S“�MŠAØ �H‰H�Q‹KˆØ�U�8ˆŒØ��$ˆxˆr4)rÅrYrgrËrÕrÉrÏrÓrfrpr£r¢rÊrÌN)é)r€r�r‚rƒr„r¤rãrÒrcrðr¨rÑr r rbrrr…r±r²s@r2rµrµcsNø‡€ñ òOòbòFò"ò/ò%ò,ò>ô òò÷6ðr4rµcó<a€]tRtRtoRtRtRtRtRtRt Vt R#) rÆidzhSmall proxy class that enables transparent compression detection for the Stream interface (mode 'r|*'). cóZ€WnVPP\4VnR#r§)rprbÚ BLOCKSIZErY)r¡rps&&r2r¤Ú_StreamProxy.__init__is€ØŒ Ø—<‘<×$Ñ$¤YÓ/ˆŽr4cóP€VPPVnVP#r§)rprbrYr¬s&&r2rbÚ_StreamProxy.readms€Ø—L‘L×%Ñ%ˆŒ Ø�x‰xˆr4có<€VPPR4'dR#VPR,R8XdVPR,R8XdR#VPPR 4'dR#VPPR4'dR #R #) s‹r¹:réNsBZh:éé Ns1AY&SYrºr¼s(µ/ýrÀrÃ)s]€sý7zXZ)rYÚ startswithr©s&r2rÇÚ_StreamProxy.getcomptypeqsq€Ø �8‰8× Ñ ˜× /Ò /ÙØ �X‰X�c�]˜fÔ $¨¯©°$­¸9Ô)DÙØ �X‰X× Ñ Ð!C× DÒ DÙØ �X‰X× Ñ Ð!4× 5Ò 5Ùár4có:€VPP4R#r§)rpr¨r©s&r2r¨Ú_StreamProxy.close}s€Ø � ‰ ×ÑÖr4)rYrprbN) r€r�r‚rƒr„r¤rbrÇr¨r…r±r²s@r2rÆrÆds#ø‡€ñò0òò ÷ðr4rÆcó’a€]tRtRtoRtRRltRt]R4tRt Rt R t R t ] P3R ltRR ltR tRtRtVtR#)Ú _FileInFilei„zmA thin wrapper around an existing file object that provides a part of its data as an individual file object. NcóØ€WnW nW0n^VnW@nRVnVf^V3.p^Vn.Vn^pVPpVF^wr#W&8”dVPPRWbR34VPPRW"V,V34Ws, pW#,pK` W`P8d+VPPRW`PR34R#R#)rFNT) rpÚoffsetr!Úpositionr¢rËÚ map_indexÚmaprn)r¡rpr-r!r¢Ú blockinfoÚlastposÚrealposs&&&&&& r2r¤Ú_FileInFile.__init__Šsр، ØŒ ØŒ ؈Œ ØŒ ؈Œ à Ò Ø˜T˜˜ ˆIðˆŒØˆŒØˆØ—+‘+ˆÛ%‰LˆFØÔØ—‘—‘ ¨¸Ð >Ô?Ø �H‰H�O‰O˜T 6°D­=¸'ÐBÔ CØ �OˆGØ•mŠGñ &ð —Y‘YÔ Ø �H‰H�O‰O˜U G¯Y©Y¸Ð=Ö >ñ r4có€R#r§r~r©s&r2rýÚ_FileInFile.flush£s€Ù r4có€R#)Úrbr~r©s&r2r£Ú_FileInFile.mode¦s€ár4có€R#©Tr~r©s&r2ÚreadableÚ_FileInFile.readableªs€Ùr4có€R#)Fr~r©s&r2ÚwritableÚ_FileInFile.writable­s€Ùr4có6€VPP4#r§)rpÚseekabler©s&r2rBÚ_FileInFile.seekable°s€Ø�|‰|×$Ñ$Ó&Ð&r4c ó€VP#)z*Return the current file position. )r.r©s&r2r Ú_FileInFile.tell³ó€ð�}‰}Ðr4c óX€V\P8Xd2\\V^4VP4VnVP #V\P 8XdoV^8d/\VP V,^4VnVP #\VP V,VP4VnVP #V\P8XdC\\VPV,VP4^4VnVP #\R4h)z(Seek to a position in the file. zInvalid argument) ÚioÚSEEK_SETrmÚmaxr!r.ÚSEEK_CURÚSEEK_ENDr*)r¡r.Úwhences&&&r2r Ú_FileInFile.seek¸sà€ð ”R—[‘[Ô Ü¤ H¨aÓ 0°$·)±)Ó<ˆDŒMð�}‰}Ðð”r—{‘{Ô "ؘ!Œ|Ü # D§M¡M°HÕ$<¸aÓ @�” ð�}‰}Ðô !$ D§M¡M°HÕ$<¸d¿i¹iÓ H�• ð �}‰}Ðð ”r—{‘{Ô "ܤ D§I¡I°Õ$8¸$¿)¹)Ó DÀaÓHˆDŒMð�}‰}ÐôÐ/Ó0Ð 0r4c óN€VfVPVP, pM&\WPVP, 4pRpV^8”EdSVPVP,wr4rVW@Pu;8:dV8dMMMHV;P^, unVP\ VP48XgK|^VnK…\WVP, 4pV'drVP PW`PV, ,4VP PV4p\ V4V8wd \R4hW(, pMV\V,, pW,pV;PV, unEKZV#)z!Read data from the file. r4r^) r!r.rmr0r/r,rpr rbrr-) r¡r!rYr ÚstartÚstopr-r/rjs && r2rbÚ_FileInFile.readÈs$€ð Š<Ø—9‘9˜tŸ}™}Õ,‰Dä�tŸY™Y¨¯©Õ6Ó7ˆDàˆØ�Q�hØØ,0¯H©H°T·^±^Õ,DÑ)�˜TØŸM™MÖ0¨D×0Øà—N’N aÕ'•NØ—~‘~¬¨T¯X©X«Ö6Ø)*˜žÜ˜ d§m¡mÕ3Ó4ˆFߨ— ‘ ×!Ñ! &¯M©M¸EÕ,AÕ"BÔCØ—L‘L×%Ñ% fÓ-�Ü�q“6˜VÔ#Ü#Ð$<Ó=Ð=Ø•‘à”s˜V•|Õ#�Ø �NˆDØ �MŠM˜VÕ #�MˆM؈ r4cóf€VP\V44pW!R\V4%\V4#r§)rbr,)r¡rjrYs&& r2ÚreadintoÚ_FileInFile.readintoçs*€Ø�i‰iœ˜A›ÓˆØˆ)Œ3ˆs‹8ˆ Ü�3‹xˆr4có€RVnR#)TN)rËr©s&r2r¨Ú_FileInFile.closeìs €ØˆŽ r4)rËrpr0r/r¢r-r.r!r§)r€r�r‚rƒr„r¤rýÚpropertyr£r<r?rBr rHrIr rbrTr¨r…r±r²s@r2r+r+„s^ø‡€ñô ?ò2 ðñóðòòò'òð %'§K¡Kôô ò>÷ ðr4r+có2aa€]tRtRtoV3RltRtVtV;t#)Ú ExFileObjectiðcó¨<€\VPVPVPVPVP 4p\ SV`V4R#r§)r+rpÚ offset_datar!r¢ÚsparseÚsuperr¤)r¡ÚtarfileÚtarinforpÚ __class__s&&& €r2r¤ÚExFileObject.__init__òs;ø€Ü˜gŸo™o¨w×/BÑ/BØ— ‘ ˜gŸl™l¨G¯N©Nó<ˆä ‰Ñ˜Ö!r4r~©r€r�r‚rƒr¤r…r±Ú __classcell__©rar³s@@r2rZrZðsù‡€÷"õ"r4rZcó€]tRtRtRtR#)r iýr~N)r€r�r‚rƒr…r~r4r2r r ýs†Ûr4có2aa€]tRtRtoV3RltRtVtV;t#)ricóP<€Wn\SV` RVP: R24R#)zmember z has an absolute pathN©r`r^r¤r¢©r¡r`ras&&€r2r¤ÚAbsolutePathError.__init__s$ø€ØŒ Ü ‰Ñ˜7 7§<¡<Ñ"2Ð2GÐHÖIr4©r`rcres@@r2rrsù‡€÷JõJr4có2aa€]tRtRtoV3RltRtVtV;t#)r icóp<€WnW n\SV` VP: RV: R2R,4R#)z would be extracted to ú, ú which is outside the destinationN©r`Ú_pathr^r¤r¢©r¡r`ròras&&&€r2r¤Ú OutsideDestinationError.__init__s7ø€ØŒ ØŒ Ü ‰Ñ˜GŸL™LÑ+Ð+BÀ4Á(È"ÐMØ=õ>ö ?r4©rrr`rcres@@r2r r óù‡€÷?õ?r4có2aa€]tRtRtoV3RltRtVtV;t#)ri cóN<€Wn\SV` VP: R24R#)z is a special fileNrirjs&&€r2r¤ÚSpecialFileError.__init__ s"ø€ØŒ Ü ‰Ñ˜GŸL™LÑ+Ð+=Ð>Ö?r4rlrcres@@r2rr sù‡€÷@õ@r4có2aa€]tRtRtoV3RltRtVtV;t#)r icóN<€Wn\SV` VP: R24R#)z is a link to an absolute pathNrirjs&&€r2r¤ÚAbsoluteLinkError.__init__s"ø€ØŒ Ü ‰Ñ˜GŸL™LÑ+Ð+IÐJÖKr4rlrcres@@r2r r sù‡€÷LõLr4có2aa€]tRtRtoV3RltRtVtV;t#)ricóp<€WnW n\SV` VP: RV: R2R,4R#)z would link to rorpNrqrss&&&€r2r¤Ú$LinkOutsideDestinationError.__init__s6ø€ØŒ ØŒ Ü ‰Ñ˜GŸL™LÑ+¨?¸4¹(À"ÐEØ=õ>ö ?r4rurcres@@r2rrrvr4có2aa€]tRtRtoV3RltRtVtV;t#)ricót<€WnW n\SV` RVP: R2RV: R2,4R#)zlink z would be extracted as a zcopy of z, which was rejectedNrqrss&&&€r2r¤ÚLinkFallbackError.__init__s?ø€ØŒ ØŒ Ü ‰Ñ˜5 §¡Ñ 0Ð0IÐJØ% d¡XÐ-AÐBõCö Dr4rurcres@@r2rrsù‡€÷DõDr4cóH€/pVPp\PPV\PPR7pVP R\P 34'd5VPPR\P ,4;qCR&\PPV4'd \V4h\PP\PPW4\PPR7p\PPWQ.4V8wd \W4hVPpVe®VR,pV'd‰VP4'gVP4'd#V^@,'g VR ,pVR,pM:VP!4'gVP#4'dRpM \%V4hW`P8wdWcR&V'EdVP&eRVR&VP(eRVR&VP*eRVR &VP,eRVR &VP4'gVP#4'Ed‹\PPVP.4'd \1V4hWQ8Xd \W4h\PP3VP.4pWpP.8wdWsR &VP#4'de\PP5VP7R\P ,44p\PPWV4pM\PPW4p\PPV\PPR7p\PPWQ.4V8wd \9W4hV#) )r>Ú/r¢Niíé€r£r#r$ÚunameÚgnameÚlinknamei¶ÿÿÿ)r¢ršròÚrealpathÚ ALLOW_MISSINGr&ÚsepÚlstripÚisabsrroÚ commonpathr r£ÚisregÚislnkÚisdirÚissymrr#r$r†r‡rˆr ÚnormpathÚdirnameÚrstripr) ÚmemberÚ dest_pathÚfor_dataÚ new_attrsr¢Ú target_pathr£Ú normalizedÚlink_dirs &&& r2Ú_get_filtered_attrsr�)sâ€Ø€IØ �;‰;€DÜ—‘× Ñ  ´2·7±7×3HÑ3HÐ ÓI€Ið ‡�˜œRŸV™V�}×%Ò%Ø#)§;¡;×#5Ñ#5°c¼B¿F¹FµlÓ#CÐCˆ˜Ñ Ü ‡w�w‡}�}�T×Òô  Ó'Ð'ä—'‘'×"Ñ"¤2§7¡7§<¡<° Ó#@Ü*,¯'©'×*?Ñ*?ð#óA€Kä ‡w�w×ј;Ð2Ó3°yÔ@Ü% fÓ:Ð:à �;‰;€DØ Òà�e�|ˆß à�|‰|�~Š~ §¡§¢Ø˜e—|”|à˜F•N�Dà˜• ‘Ø—‘—’ 6§<¡<§>¢>à‘ô' vÓ.Ð.Ø —;‘;Ô Ø $�fÑ ß€xà �:‰:Ò !Ø#ˆI�eÑ Ø �:‰:Ò !Ø#ˆI�eÑ Ø �<‰<Ò #Ø!%ˆI�gÑ Ø �<‰<Ò #Ø!%ˆI�gÑ à �<‰<�>Š>˜VŸ\™\Ÿ^›^Ü�w‰w�}‰}˜VŸ_™_×-Ò-Ü'¨Ó/Ð/ðÔ'Ü-¨fÓBÐBÜŸ™×)Ñ)¨&¯/©/Ó:ˆJØŸ_™_Ô,Ø(2˜*Ñ%Ø�|‰|�~Š~ôŸ7™7Ÿ?™?¨4¯;©;°s¼R¿V¹Vµ|Ó+DÓE�Ü Ÿg™gŸl™l¨9À ÓK‘ ä Ÿg™gŸl™l¨9ÓA� ÜŸ'™'×*Ñ*¨;Ü24·'±'×2GÑ2Gð+óIˆKä�w‰w×!Ñ! ;Ð":Ó;¸yÔHÜ1°&ÓFÐFØ Ðr4có€V#r§r~)r–r—s&&r2Úfully_trusted_filterrŸss€Ø €Mr4cóZ€\WR4pV'dVP!R/VBRR/B#V#)FÚdeepr~©r�rè©r–r—r™s&& r2Ú tar_filterr¤vs-€Ü# F°uÓ=€Iߨ�~Š~Ñ6  Ñ6°Ò6Ð6Ø €Mr4cóZ€\WR4pV'dVP!R/VBRR/B#V#)Tr¡Fr~r¢r£s&& r2Ú data_filterr¦|s-€Ü# F°tÓ<€Iߨ�~Š~Ñ6  Ñ6°Ò6Ð6Ø €Mr4Ú fully_trustedrÃr s([0-9]{1,20}) cóÒa€]tRtRtoRt]!R\/RRbRRbRRbR R bR R bR RbRRbRRbRRbRRbRRbRRbRRbRRbRR bR!R"bR#R$bR%R&bR'R&bR(R&btR]R)lt]R*4t ] PR+4t ]R,4t ] PR-4t ]R.4t ] PR/4t R0t R]R ]R]R]R]R ]R]R]R1R2R3]/ R4ltR5t]]R63R7ltR8tR9tR:t]R;4tR<t]R=4t]R>4t]R?4t]R@4t]RA4t]RBR2/RCl4t ]RD4t!]RBR2/REl4t"RFt#RGt$RHt%RIt&RJt'RKt(RLt)RMt*RNt+ROt,RPt-RQt.RRt/RSt0RTt1RUt2RVt3RWt4RXt5RYt6RZt7R[t8Vt9R&#)^ri’zèInformational class which holds the details about an archive member given by a tar header block. TarInfo objects are returned by TarFile.getmember(), TarFile.getmembers() and TarFile.gettarinfo() and are usually created internally. r¢zName of the archive member.r£zPermission bits.r#z6User ID of the user who originally stored this member.r$z7Group ID of the user who originally stored this member.r!zSize in bytes.r"zTime of last modification.ÚchksumzHeader checksum.Útypez—File type. type is usually one of these constants: REGTYPE, AREGTYPE, LNKTYPE, SYMTYPE, DIRTYPE, FIFOTYPE, CONTTYPE, CHRTYPE, BLKTYPE, GNUTYPE_SPARSE.rˆzcName of the target file name, which is only present in TarInfo objects of type LNKTYPE and SYMTYPE.r†z User name.r‡z Group name.ÚdevmajorzDevice major number.ÚdevminorzDevice minor number.r-zThe tar header starts here.r\zThe file's data starts here.Ú pax_headerszMA dictionary containing key-value pairs of an associated pax extended header.r]zSparse member information.Ú_tarfileNÚ_sparse_structsÚ _link_targetc óú€WnRVn^Vn^Vn^Vn^Vn^Vn\VnRVn RVn RVn ^Vn ^Vn ^Vn^VnRVn/VnR#)zEConstruct a TarInfo object. name is the optional name of the member. i¤r¸N)r¢r£r#r$r!r"r©ÚREGTYPErªrˆr†r‡r«r¬r-r\r]r­©r¡r¢s&&r2r¤ÚTarInfo.__init__¹s{€ðŒ ؈Œ ؈ŒØˆŒØˆŒ ؈Œ ؈Œ ܈Œ ؈Œ ؈Œ ؈Œ ؈Œ ؈Œ àˆŒ ؈ÔàˆŒ ؈Ör4cóR€^RIpVPR\^R7VP#©rN)Ú stacklevelzhThe undocumented "tarfile" attribute of TarInfo objects is deprecated and will be removed in Python 3.16©ÚwarningsÚwarnÚDeprecationWarningr®)r¡r¹s& r2r_ÚTarInfo.tarfileÑs-€ãØ� ‰ ð Aä ¨1ð ô .ð�}‰}Ðr4cóJ€^RIpVPR\^R7WnR#r¶r¸)r¡r_r¹s&& r2r_r¼Ús(€ãØ� ‰ ð Aä ¨1ð ô .ð Ž r4c ó€VP#)z(In pax headers, "name" is called "path".©r¢r©s&r2ròÚ TarInfo.pathãs€ð�y‰yÐr4có€WnR#r§r¿r³s&&r2ròrÀès€àŽ r4c ó€VP#)z0In pax headers, "linkname" is called "linkpath".©rˆr©s&r2ÚlinkpathÚTarInfo.linkpathìrFr4có€WnR#r§rÃ)r¡rˆs&&r2rÄrÅñs€à Ž r4cóh€RVPPVP\V43,#)z<%s %r at %#x>)rar€r¢Úidr©s&r2Ú__repr__ÚTarInfo.__repr__õs&€Ø 4§>¡>×#:Ñ#:¸4¿9¹9ÄRÈÃXÐ"NÕNÐNr4r¡TÚ_KEEPc  ó €V 'd\P!V4p M\P!V4p WJdWnW*JdW+nW:JdW;nWJJdWKnWZJdW[nWjJdWknWzJdW{nWŠJdW‹n V #)zGReturn a deep copy of self with the given attributes replaced. ) ÚcopyÚdeepcopyr¢r"r£rˆr#r$r†r‡) r¡r¢r"r£rˆr#r$r†r‡r¡rËÚresults &$$$$$$$$$$ r2rèÚTarInfo.replaceøs€÷ Ü—]’] 4Ó(‰Fä—Y’Y˜t“_ˆFØ Ó ØŒKØ Ó Ø ŒLØ Ó ØŒKØ Ó Ø&ŒOØ Ó ØŒJØ Ó ØŒJØ Ó Ø ŒLØ Ó Ø ŒL؈ r4c ó€VPfRpMVPR,pRVPRVRVPRVPRVPRVP R VP R VPR VPR VPR VPRVPRVP/ pVR ,\8Xd4VR,PR4'gVR;;,R, uu&V#)z9Return the TarInfo's attributes as a dictionary. Néÿr¢r£r#r$r!r"r©rªrˆr†r‡r«r¬r„)r£r¢r#r$r!r"r©rªrˆr†r‡r«r¬ÚDIRTYPErñ)r¡r£Úinfos& r2Úget_infoÚTarInfo.get_infos΀ð �9‰9Ò Ø‰Dà—9‘9˜vÕ%ˆDà ˜Ÿ ™ Ø ˜Ø ˜Ÿ™Ø ˜Ÿ™Ø ˜Ÿ ™ Ø ˜Ÿ ™ Ø ˜Ÿ ™ Ø ˜Ÿ ™ Ø ˜Ÿ ™ Ø ˜Ÿ ™ Ø ˜Ÿ ™ Ø ˜Ÿ ™ Ø ˜Ÿ ™ ð ˆð ��<œ7Ô "¨4°­<×+@Ñ+@À×+EÒ+EØ ��L˜CÕ ‹Làˆ r4Úsurrogateescapec óB€VP4pVP4FwrVVeK \RV,4h V\8XdVP WBV4#V\ 8XdVP WBV4#V\8XdVPWB4#\R4h)zNÐPXÓaÕ aˆCà×(Ñ(¨¬z¸8ÓLÕLÐLr4c óÞ€\VR&VPP4pRR\3RR\3R R 3FIwrEpWS9dKW,P RR4\Y,4T8”gK?Y,Y5&KK RF‡wrGRpW,p \V \4p V 'd \V 4MT p ^T u;8:d^V^, ,8g M^W&R pMV 'dW±V&R pV'gKrWC9gKz\V 4W4&K‰ V'dVPV\V4p MR p WÀPV\RR 4,# \ dY,Y5&EK3i;i)z•Return the object as a ustar header block. If it cannot be represented this way, prepend a pax extended header sequence with supplement information. rãr¢ròrˆrÄr=r>FTr4rè)r†r†é )r‡r‡rò))r#é)r$ró)r!é )r"rô)rår­rÍrçrær+ÚUnicodeEncodeErrorr,Ú isinstanceÚfloatÚroundÚstrÚ_create_pax_generic_headerÚXHDTYPErérÚ) r¡rÔr0r­r¢Úhnamer/rOÚ needs_paxÚvalÚ val_is_floatÚval_intrYs &&& r2rÞÚTarInfo.create_pax_header\sb€ô $ˆˆW‰ Ø×&Ñ&×+Ñ+Ó-ˆ 𠘤Ð-° ¸JÌ Ð/TØ&Ð(>ó$@Ñ ˆD˜ðÔ#áð Ø• ×!Ñ! '¨8Ô4ô �4•:‹ Ö'Ø%)¥Z� Ó"ñ!$@ó(R‰LˆD؈Ià•*ˆCÜ% c¬5Ó1ˆLß$0”e˜C”j°cˆGؘÖ3 !¨°­ Õ"3Ö3à�‘ Ø ‘ ßð%�T‘ Ø � ÷‰y˜TÖ4Ü$'¨£H� Ó!ñ%R÷* Ø×1Ñ1°+¼wÈÓQ‰CàˆCà×(Ñ(¨¬|¸WÀiÓPÕPÐPøôG&ô Ø%)¥Z� Ñ"Ûð úsÁEÅE,Å+E,c ó0€VPV\R4#)zAReturn the object as a pax global header block sequence. r()rúÚXGLTYPE)Úclsr­s&&r2Úcreate_pax_global_headerÚ TarInfo.create_pax_global_header–s€ð×-Ñ-¨k¼7ÀGÓLÐLr4c óX€VPR4p\^\V44FvpRPVRV4pRPWER4p\VP W#44\ 8:gKO\VP W#44\ 8:gKtWa3# \R4h)zBSplit a name longer than 100 chars into a prefix and a name part. r„Nzname is too long)ÚsplitrCr,ror+Ú LENGTH_PREFIXrçr*)r¡r¢r0r1Ú componentsrHräs&&&& r2rèÚTarInfo._posix_split_nameœs“€ð—Z‘Z “_ˆ Ü�qœ#˜j›/Ö*ˆAØ—X‘X˜j¨¨!˜nÓ-ˆFØ—8‘8˜J r˜NÓ+ˆDÜ�6—=‘= Ó2Ó3´}ÖDܘŸ ™  HÓ5Ó6¼+ÖEØðˆ|Ðñ+ôÐ/Ó0Ð 0r4c óž€VPR4\\39pV'd<\VPR^4^V4p\VPR^4^V4pM\ R^W#4p\ R^W#4pVPR\ 4pVf \ R4h\ VPRR4^dW#4\VPR^4R ,^V4\VPR ^4^V4\VPR ^4^V4\VPR ^4^ V4\VPR ^4^ V4RV\ VPRR4^dW#4VPR\4\ VPRR4^ W#4\ VPRR4^ W#4VV\ VPRR4^›W#4.p\P!R\,RPV44p \V \)R4^,p V RR\RV ,R4,V RR,p V #)zqReturn a header block. info is a dictionary with file information, format must be one of the *_FORMAT constants. rªr«r¬r¸NzTarInfo.type must not be Noner¢r£rÒr#r$r!r"s rˆrãr†r‡räz%dsr4z%06or=i”þÿÿi›þÿÿ)ÚgetÚCHRTYPEÚBLKTYPErRr3r²r*rårWrîrror\rK) rÔrPr0r1Úhas_device_fieldsr«r¬ÚfiletypeÚpartsrYr©s &&&& r2réÚTarInfo._create_header¬s€ð !ŸH™H VÓ,´¼'Ð0BÑBÐß Ü˜4Ÿ8™8 J°Ó2°A°vÓ>ˆHܘ4Ÿ8™8 J°Ó2°A°vÓ>‰Hä˜2˜q (Ó3ˆHܘ2˜q (Ó3ˆHð—8‘8˜F¤GÓ,ˆØ Ò ÜÐ<Ó=Ð =ô �—‘˜ Ó$ c¨8Ó <Ü �—‘˜ Ó# fÕ,¨a°Ó 8Ü �—‘˜ Ó" A vÓ .Ü �—‘˜ Ó" A vÓ .Ü �—‘˜ Ó# R¨Ó 0Ü �—‘˜ !Ó$ b¨&Ó 1Ø Ø Ü �—‘˜ RÓ(¨#¨xÓ @Ø �H‰H�WœkÓ *Ü �—‘˜ "Ó% r¨8Ó <Ü �—‘˜ "Ó% r¨8Ó <Ø Ø Ü �—‘˜ 2Ó&¨¨XÓ >ð ˆô$�kŠk˜%¤)Õ+¨S¯X©X°e«_Ó=ˆÜ˜c¤9 * +Ð.Ó/°Õ2ˆØ�%�4ˆjœ5 ¨FÕ!2°GÓ<Õ<¸sÀ4À5¸zÕIˆØˆ r4c óˆ€\\V4\4wrV^8”d V\V, \,, pV#)zQReturn the string payload filled with zero bytes up to the next 512 byte border. )rar,rr-)Úpayloadrhris& r2Ú_create_payloadÚTarInfo._create_payloadÖs7€ô #¤3 w£<´Ó;ÑˆØ �qŒ=Ø œ  IÕ-´Õ4Õ 4ˆG؈r4c óØ€VPW44\,p/pRVR&W%R&\V4VR&\VR&VP V\ W44VP V4,#)zAReturn a GNUTYPE_LONGNAME or GNUTYPE_LONGLINK sequence for name. z ././@LongLinkr¢rªr!rã)r+r-r,rìrérÚr)rr¢rªr0r1rÔs&&&&& r2ríÚTarInfo._create_gnu_long_headeràsn€ð �{‰{˜8Ó,¬sÕ2ˆàˆØ&ˆˆV‰ ؈V‰ ܘ4“yˆˆV‰ Ü!ˆˆW‰ ð×!Ñ! $¬ °hÓGØ×#Ñ# DÓ)õ*ð *r4c ó€RpVP4FwrVVPRR4K RpV'd VR, pVP4FÍwrVVPR4pV'dVPVR4pMVPR4p\V4\V4,^,p^;ršV\\ V 44,p Wš8XdMT p K'V\ \ V 4R4R ,V,R ,V,R ,, pKÏ /p R V R &W+R&\V4V R&\ V R&VPV \RR4VPV4,# \d RpEKVi;i)zƒReturn a POSIX.1-2008 extended or global header sequence that contains a list of keyword, value pairs. The values must be strings. Fr(r>Tr4s21 hdrcharset=BINARY r×r=ó ó=ó z././@PaxHeaderr¢rªr!rãrè) rÙr+rõr,rùrKrårérÚr) rr­rªr0ÚbinaryÚkeywordrßÚrecordsÚlrGr9rÔs &&&& r2rúÚ"TarInfo._create_pax_generic_headerñsp€ðˆØ)×/Ñ/Ö1‰NˆGð Ø— ‘ ˜W hÖ/ñ2ðˆß à Ð0Õ 0ˆGà)×/Ñ/Ö1‰NˆGØ—n‘n WÓ-ˆGß🠙  XÐ/@ÓA‘àŸ ™  WÓ-�ä�G“ œs 5›zÕ)¨AÕ-ˆA؈IˆAØØœœC ›F› •O�Ø”6ØØ’Ø ”uœS ›V WÓ-°Õ4°wÕ>ÀÕEÈÕMÐPUÕUÕ UŠGñ!2ð(ˆØ'ˆˆV‰ ؈V‰ ܘ7“|ˆˆV‰ Ü#ˆˆW‰ ð×!Ñ! $¬ °g¸yÓIØ×#Ñ# GÓ,õ-ð -øôI&ô Ø�Üð ús™E3Å3 FÆFc ó&€VPWV4#)zªConstruct a TarInfo object from a 512 byte bytes object. To support the old v7 tar format AREGTYPE headers are transformed to DIRTYPE headers if their name ends in '/'. )Ú_frombuf)rrYr0r1s&&&&r2ÚfrombufÚTarInfo.frombuf$s€ð�|‰|˜C¨6Ó2Ð2r4Údircheckc óf€\V4^8Xd \R4h\V4\8wd \R4hVP \ 4\8Xd \ R4h\VR,4pV\V49d \R4hV!4p\VR,W#4Vn \VR,4Vn \VR,4Vn \VR ,4Vn\VR ,4Vn\VR ,4VnWVnVR ,Vn\VR ,W#4Vn\VR,W#4Vn\VR,W#4Vn\VR,4Vn\VR,4Vn\VR,W#4pV'dBVP$\08Xd-VPP3R4'd \4VnVP$\68Xd�Rp.p \9^4FNp \WV^ ,4p \W^ ,V^,4p T P=Y¼34T^, pKP \?VR,4p \VR,4pW�V3Vn VPC4'd!VPPER4Vn V'd5VP$\F9d VR,VP,Vn V# \:dK°i;i)a4Construct a TarInfo object from a 512 byte bytes object. If ``dircheck`` is set to ``True`` then ``AREGTYPE`` headers will be normalized to ``DIRTYPE`` if the name ends in a trailing slash. ``dircheck`` must be set to ``False`` if this function is called on a follow-up header such as ``GNUTYPE_LONGNAME``. z empty headerztruncated headerzend of file header:é”éœNz bad checksum:rédN:r+élN:r,étN:r-é|N:r.éˆN:r/r)N:r*é�N:r0iN:i i)N:i)iIN:iIiQN:iQiYN:iYiôNr„i‚iâ:iãiïN)$r,rŒrrŽÚcountr-r�rIr\rFr:r¢r£r#r$r!r"r©rªrˆr†r‡r«r¬ÚAREGTYPErñrÓÚGNUTYPE_SPARSErCr*rnÚboolr¯r‘r•Ú GNU_TYPES)rrYr0r1r'r©ÚobjrärÊÚstructsrHr-ÚnumbytesÚ isextendedÚorigsizes&&&&$ r2r$ÚTarInfo._frombuf-su€ô ˆs‹8�qŒ=Ü" >Ó2Ð 2Ü ˆs‹8”yÔ Ü&Ð'9Ó:Ð :Ø �9‰9”S‹>œYÔ &Ü Ð!5Ó6Ð 6ä�S˜•\Ó"ˆØ œ cÓ*Ô *Ü$ ^Ó4Ð 4á‹eˆÜ�s˜5•z 8Ó4ˆŒÜ�s˜7•|Ó$ˆŒÜ�c˜'•lÓ#ˆŒÜ�c˜'•lÓ#ˆŒÜ�s˜7•|Ó$ˆŒÜ˜˜G� Ó%ˆŒ ØŒ Ø�w•<ˆŒÜ˜3˜w�<¨Ó:ˆŒ ܘ˜G�  hÓ7ˆŒ ܘ˜G�  hÓ7ˆŒ ܘ3˜w�<Ó(ˆŒ ܘ3˜w�<Ó(ˆŒ Ü�S˜•\ 8Ó4ˆ÷ ˜Ÿ™¤HÔ,°·±×1BÑ1BÀ3×1GÒ1G܈CŒHð �8‰8”~Ô %؈C؈Gܘ1–X�ðÜ  ¨¨r­Ð!2Ó3�FÜ" 3¨R¥x°°bµÐ#9Ó:�Hð—‘ Ð1Ô2Ø�r• ’ñô˜c #�h›ˆJܘ3˜w�<Ó(ˆHØ#*¸Ð"AˆCÔ ð �9‰9�;Š;Ø—x‘x—‘ sÓ+ˆCŒH÷ �c—h‘h¤iÔ/Ø •| c§h¡hÕ.ˆCŒH؈ øô"ôÛðúsÈ1/L Ì L0Ì/L0c ó$€VPV4#)z‘> 'Ó*Ð *à×%Ñ% gÓ.Ð .r4c ó΀VPP4VnVPpVP4'gVP\ 9d"W P VP4, pW!nVPVPVPVP4VP4'd!VPPR4VnV#)zSProcess a builtin type or an unknown type which will be treated as a regular file. r„)rpr r\r�rªÚSUPPORTED_TYPESÚ_blockr!r-Ú_apply_pax_infor­r0r1r‘r¢r•)r¡r_r-s&& r2rIÚTarInfo._proc_builtinšs €ð#Ÿ?™?×/Ñ/Ó1ˆÔØ×!Ñ!ˆØ �:‰:�<Š<˜4Ÿ9™9¬OÔ;à —k‘k $§)¡)Ó,Õ ,ˆFØŒð ×јW×0Ñ0°'×2BÑ2BÀGÇNÁNÔSð �:‰:�<Š<ØŸ ™ ×(Ñ(¨Ó-ˆDŒIàˆ r4c óT€\VPVPVP44pVP VRR7pTPTnTP\8Xd'\Y!PTP4TnM:TP\8Xd&\Y!PTP4TnTP#4'd!TPP%R4TnT# \ dp\ \T44RhRp?ii;i)z@Process the blocks that hold a GNU longname or longlink member. FrANr„)rsrprMr!r=r r“rùr-rªrïr:r0r1r¢rîrˆr‘Ú removesuffix)r¡r_rYÚnextrs&& r2rEÚTarInfo._proc_gnulong°sÝ€ô˜Ÿ™¨$¯+©+°d·i±iÓ*@ÓAˆð :Ø×$Ñ$ W°uÐ$Ó=ˆDð —k‘kˆŒ Ø �9‰9Ô(Ô (ܘC×!1Ñ!1°7·>±>ÓBˆD�IØ �Y‰YÔ*Ô *Ü ×%5Ñ%5°w·~±~ÓFˆDŒMð �:‰:�<Š<ØŸ ™ ×.Ñ.¨sÓ3ˆDŒIàˆ øô!ô :Ü'¬¨A«Ó/°TÐ 9ûð :ús±DÄ D'Ä D"Ä"D'c óZ€VPwr#pV=V'd£VPP\4p^p\ ^4F^p\ WVV^ ,4p\ WV^ ,V^,4p T'dT 'dTPY‰34T^, pK` \VR,4pKªW n VPP4Vn VPVPVP4,VnW@n V# \ dK�i;i)z8Process a GNU sparse header plus extra headers. iø)r¯rprbrrCrIr*rnr4r]r r\rMr!r-) r¡r_r7r9r:rYrÊrHr-r8s && r2rFÚTarInfo._proc_sparseËsú€ð)-×(<Ñ(<Ñ%ˆ˜XØ Ð ÷Ø—/‘/×&Ñ&¤yÓ1ˆC؈Cܘ2–Y�ðÜ  ¨¨r­Ð!2Ó3�FÜ" 3¨R¥x°°bµÐ#9Ó:�H÷ŸhØ—N‘N FÐ#5Ô6Ø�r• ’ñô˜c #�h›ŠJØŒ à"Ÿ?™?×/Ñ/Ó1ˆÔØ×)Ñ)¨D¯K©K¸¿ ¹ Ó,BÕBˆŒØŒ ؈ øô"ôÛðúsÁ /DÄ D*Ä)D*c ó„€\VPVPVP44pVP\ 8XdVP pMVP P4p^pRp.p\V4V8”Ed8W$,^8wEd*\PW$4;p'g \R4h\VP^44pT^8d \R4hYH,\T48”d \R4hTP^4T,^, p Y'P!^4^,T p T P#R4wr¼p T 'dT R8wgY),^ 8wd \R4hTP%Y‹T 34T R8XdTfT R8XdTP&pMRpYH, pEKHVfRpVFywr‹p VP)V RRVP*4pV\,9d)VP)WÕVP&VP*4pMVP)V RRVP*4pWóV&K{ VP/VRR7pR T9dTP7TT4MXR T9dTP9TT4M>TP;R 4R 8Xd)TP;R 4R8XdTP=TY14TP\>\@39dŸTPCY1P&TP*4TPDTn"RT9daTPFpTPI4'gTP\J9d#TTPTP4, pTTn"T# \d \R4hi;i \0dp\3\5T44RhRp?ii;i)zCProcess an extended or global header as described in POSIX.1-2008. Nr@rs hdrcharsetsBINARYr(FrAúGNU.sparse.mapúGNU.sparse.sizezGNU.sparse.majorÚ1zGNU.sparse.minorr?r!)&rsrprMr!rªrr­rÍr,Ú_header_length_prefix_reÚmatchrFrDÚgroupr*rPrwÚ partitionrnr0Ú_decode_pax_fieldr1ÚPAX_NAME_FIELDSr=r r“rùÚ_proc_gnusparse_01Ú_proc_gnusparse_00r Ú_proc_gnusparse_10rûrGrNr-r\r�rL)r¡r_rYr­rÊr0Ú raw_headersr[r/Úheader_value_end_offsetÚkeyword_and_valueÚ raw_keywordÚequalsÚ raw_valuerrßrRrr-s&& r2rHÚTarInfo._proc_paxçsX€ô ˜Ÿ™¨$¯+©+°d·i±iÓ*@ÓAˆð �9‰9œÔ Ø!×-Ñ-‰Kà!×-Ñ-×2Ñ2Ó4ˆKð ˆØˆØˆ Ü�#‹h˜�n ¥¨TÕ!1Ü5×;Ñ;¸CÓEÐE�EÖEÜ(Ð)9Ó:Ð:ð ;ܘUŸ[™[¨›^Ó,�𠘌zÜ(Ð)9Ó:Ð:Ø�|œc #›hÔ&Ü(Ð)9Ó:Ð:à&+§k¡k°!£n°vÕ&=ÀÕ&AÐ #Ø #§I¡I¨a£L°1Õ$4Ð5LÐ MÐ Ø->×-HÑ-HÈÓ-NÑ *ˆK ÷ &¨D¤.°CÕ4PÐTXÔ4XÜ(Ð)9Ó:Ð:Ø × Ñ  °YÐ?Ô @ð˜mÔ+°Ò0@Ø  Ô)Ø&×/Ñ/‘Hà&�Hà �M‹Cð Ò ØˆHó/:Ñ *ˆF ð×,Ñ,¨[¸'À7Ø—N‘Nó$ˆGàœ/Ô)Ø×.Ñ.¨yÀG×DTÑDTØŸ™ó(‘ð×.Ñ.¨y¸'À7ØŸ™ó(�ð$)˜Ó ñ#/:ð( :Ø×$Ñ$ W°uÐ$Ó=ˆDð ˜{Ô *à × #Ñ # D¨+Õ 6à  +Ô -à × #Ñ # D¨+Õ 6à �_‰_Ð/Ó 0°CÔ 7¸K¿O¹OÐL^Ó<_ÐcfÔÑ.>ÀÇÁÔ OØŸ+™+ˆDŒKà˜Ô$ð×)Ñ)�Ø—:‘:—<’< 4§9¡9´OÔ#CؘdŸk™k¨$¯)©)Ó4Õ4�FØ!'�”àˆ øôyô ;Ü(Ð)9Ó:Ð:ð ;ûô|ô :Ü'¬¨A«Ó/°TÐ 9ûð :ús$Â:NÉNÎNÎ N?Î%N:Î:N?c óˆ€.p.pVFjwrVpVR8Xd,VP\VP444K8VR8XgKAVP\VP444Kl \ \ W444VnR# \d \ R4hi;i \d \ R4hi;i)z?Process a GNU tar extended sparse header, version 0.0. sGNU.sparse.offsetr@sGNU.sparse.numbytesN)rnrDr8r*rFÚlistÚzipr])r¡rRrcÚoffsetsr8Ú_rrßs&&& r2raÚTarInfo._proc_gnusparse_00`sµ€ðˆØˆÛ!,Ñ ˆA˜ØÐ.Ô.ð?Ø—N‘N¤3 u§|¡|£~Ó#6Ö7ðÐ2Ö2ð?Ø—O‘O¤C¨¯ © «Ó$7Ö8ñ"-ôœ3˜wÓ1Ó2ˆŽ øô"ô?Ü,Ð-=Ó>Ð>ð?ûô "ô?Ü,Ð-=Ó>Ð>ð?ús•(BÁ (B*ÂB'Â*Cc óÀ€VR,PR4Uu.uFp\V4NK pp\\VR,VR,44VnR#uupi)z?Process a GNU tar extended sparse header, version 0.1. rWÚ,ºNNéºéNrsN)rrDrkrlr])r¡rRr­Úxr]s&&& r2r`ÚTarInfo._proc_gnusparse_01tsP€ð#.Ð.>Õ"?×"EÑ"EÀcÔ"JÓKÑ"J˜Q”#�a–&Ñ"JˆÐKÜœ3˜v c�{¨F°4­LÓ9Ó:ˆŽ ùòLs›Ac óþ€Rp.pVPP\4pVPR^4wrF\ V4p\ V4V^,8d]RV9d&WcPP\4, pVPR^4wrvVP \ V44KsVPP4Vn\\VR,VR,44Vn R#)z?Process a GNU tar extended sparse header, version 1.0. Nrrrrt) rprbrrrDr,rnr r\rkrlr])r¡rRr­r_Úfieldsr]rYÚnumbers&&&& r2rbÚTarInfo._proc_gnusparse_10zs¾€ðˆØˆØ�o‰o×"Ñ"¤9Ó-ˆØ—i‘i  qÓ)‰ ˆÜ�V“ˆÜ�&‹k˜F Q�JÔ&ؘCÔØ—‘×+Ñ+¬IÓ6Õ6�ØŸ)™) E¨1Ó-‰KˆFØ �M‰Mœ#˜f›+Ö &Ø"Ÿ?™?×/Ñ/Ó1ˆÔÜœ3˜v c�{¨F°4­LÓ9Ó:ˆŽ r4c óЀVP4F©wrEVR8Xd\VRV4KVR8Xd\VR\V44K:VR8Xd\VR\V44KYV\9gKfV\9d\V,!V4pVR8XdVP R4p\WV4K« VP4VnR# \ d^pLNi;i)z\Replace fields with supplemental information from a previous pax extended or global header. zGNU.sparse.nameròrXr!zGNU.sparse.realsizer„N) rÙÚsetattrrDÚ PAX_FIELDSÚPAX_NUMBER_FIELDSr*r•rÍr­)r¡r­r0r1rrßs&&&& r2rNÚTarInfo._apply_pax_infoŠsЀð*×/Ñ/Ö1‰NˆGØÐ+Ô+ܘ˜f eÖ,ØÐ-Ô-ܘ˜f¤c¨%£jÖ1ØÐ1Ô1ܘ˜f¤c¨%£jÖ1ØœJÖ&ØÔ/Ô/ð"Ü 1°'Ö :¸5Ó A˜ð˜fÔ$Ø!ŸL™L¨Ó-�Eܘ uÖ-ñ2ð"'×+Ñ+Ó-ˆÖøô &ô"Ø !šð"úsÂCà C%Ã$C%c ól€VPVR4# \dTPY44u#i;i)z1Decode a single field from a pax record. r>)r8ÚUnicodeDecodeError)r¡rßr0Úfallback_encodingÚfallback_errorss&&&&&r2r^ÚTarInfo._decode_pax_field¡s:€ð DØ—<‘< ¨(Ó3Ð 3øÜ!ô DØ—<‘<Ð 1ÓCÒ Cð Dús ‚”3²3c ó†€V^8d \R4h\V\4wr#V'd V^, pV\,#)zLRound up a byte count by BLOCKSIZE and return it, e.g. _block(834) => 1024. zinvalid offset)rFrar)r¡r1rhris&& r2rMÚTarInfo._block©s=€ð �1Œ9Ü$Ð%5Ó6Ð 6Ü" 5¬)Ó4Ñˆß Ø �a�KˆFØœ Õ!Ð!r4c ó(€VP\9#©z4Return True if the Tarinfo object is a regular file.)rªÚ REGULAR_TYPESr©s&r2r�Ú TarInfo.isregµs€à�y‰yœMÑ)Ð)r4c ó"€VP4#r‰)r�r©s&r2ÚisfileÚTarInfo.isfile¹s€à�z‰z‹|Ðr4c ó(€VP\8H#)z!Return True if it is a directory.)rªrÓr©s&r2r‘Ú TarInfo.isdir½ó€à�y‰yœGÑ#Ð#r4c ó(€VP\8H#)z%Return True if it is a symbolic link.)rªÚSYMTYPEr©s&r2r’Ú TarInfo.issymÁr‘r4c ó(€VP\8H#)z!Return True if it is a hard link.)rªÚLNKTYPEr©s&r2r�Ú TarInfo.islnkÅr‘r4c ó(€VP\8H#)z(Return True if it is a character device.)rªrr©s&r2ÚischrÚ TarInfo.ischrÉr‘r4c ó(€VP\8H#)z$Return True if it is a block device.)rªrr©s&r2ÚisblkÚ TarInfo.isblkÍr‘r4c ó(€VP\8H#)zReturn True if it is a FIFO.)rªÚFIFOTYPEr©s&r2ÚisfifoÚTarInfo.isfifoÑs€à�y‰yœHÑ$Ð$r4có€VPRJ#r§)r]r©s&r2ÚissparseÚTarInfo.issparseÕs€Ø�{‰{ $Ð&Ð&r4c ó>€VP\\\39#)zCReturn True if it is one of character device, block device or FIFO.)rªrrrŸr©s&r2ÚisdevÚ TarInfo.isdevØs€à�y‰yœW¤g¬xÐ8Ñ8Ð8r4)r®r©r«r¬r$r‡rˆr£r"r¢r-r\r­r!r]rªr#r†r~)r¸):r€r�r‚rƒr„ÚdictÚ __slots__r¤rXr_ÚsetterròrÄrÉrËrèrÕÚDEFAULT_FORMATÚENCODINGràrÛrÜrÞÚ classmethodrrèÚ staticmethodrérrírúr%r$r>r=rBrIrErFrHrar`rbrNr^rMr�r�r‘r’r�r™rœr r£r¦r…r±r²s@r2rr’s+ø‡€ññò Ù,ð á!ð ñGð ñHð  ñ  ð  ñ -ð  ñ$ð ñ+ð ñ;ð ñ ð! ñ"ð# ñ$*ð% ñ&*ð' ñ(/ð) ñ*5ð+ ñ,*ð- ñ2.ð3 ñ4ð5 ñ6ð7 ñ8ð9 €Iô>ð0ñóðð ‡^�^ñ óð ðñóðð ‡[�[ñóððñóðð‡_�_ñ!óð!òOðØðØ"'ðØ.3ðØ>Cðàðà$ðà,1ðà9>ðððð"'ôò8ð8*°HÐEVô/ò" Iò Mò8QðtñMóðMò ð ñ'óð'ðRñóððñ*óð*ð ñ0-óð0-ðdñ3óð3ððA¸óAóðAðFñ)óð)ð ð)¨tó)óð)ò( /òò,ò6ò8wòr3ò(;ò ;ò .ò.Dò "ò*òò$ò$ò$ò$ò$ò%ò'÷9ð9r4c ó(a€]tRtRtoRt^tRtRt^t] t ] t Rt ]t]tRtRBRlt]RRR]3Rl4t]RCRl4t]RDR l4t]RDR l4t]RER l4t]RFR l4tR RRRRRRRRR/tRtRtRtRt RGRlt!RHRR/Rllt"RIRR/Rllt#RJR lt$R!t%RKR"RRR/R#llt&R$t'RLR"RRR/R%llt(R&t)RJR'lt*R(t+R)t,R*t-RMR+RR,R/R-llt.R.t/R/t0R0t1R1t2R2t3R3t4R4t5R5t6R6t7R7t8R8t9RNR9lt:R:t;RJR;ltR>t?R?t@R@tARAtBVtCR#)OriÝz=The TarFile Class provides an interface to tar archives. FNr—c ó®€RRRRRRRR/pW/9d \R 4hW nWò,VnV'gbVPR8Xd4\PP V4'gRVnRVn\ WP4pR VnMrVfE\VR 4'd3\VP\\34'd VPp\VR 4'dVPVnRVnV'd \PPV4MR Vn W0nWànVeW@nVeWPnVeW`nVeWpnVeW€nW�nV eVP \,8XdW nM/VnV eW°nV eWÀnWÐnR Vn.VnR VnVPP=4Vn/Vn /Vn!/Vn"VPR8XdR Vn#VPI4Vn#VPR8Xd`VPPKVP>4VP"PMV4pVP8POV4K_VPR9dŽRVnVP.'dsVP"PWVP.PY44pVPP[V4V;P>\]V4, unR #R #R # \Pd*TPPKTP>4KÓ\Rdp\U\T44R hR p?ii;i TP'gTPP_4RTnh;i)aŒOpen an (uncompressed) tar archive 'name'. 'mode' is either 'r' to read from an existing archive, 'a' to append data to an existing file or 'w' to create a new file overwriting an existing one. 'mode' defaults to 'r'. If 'fileobj' is given, it is used for reading or writing data. If it can be determined, 'mode' is overridden by 'fileobj's mode. 'fileobj' is not closed, when TarFile is closed. r—r8Úazr+br˜ÚwbrvÚxbú!mode must be 'r', 'a', 'w' or 'x'FNr¢r£T©r±r˜rv)0r*r£Ú_moderšròÚexistsÚ bltn_openrÅrŸrör¢rùrKÚabspathrpÚstreamrPr`Ú dereferenceÚ ignore_zerosr0r1rÝr­ÚdebugÚ errorlevelÚ copybufsizerËÚmembersÚ_loadedr r-ÚinodesÚ_unamesÚ_gnamesÚ firstmemberrRr r>rnr�r rrrÍrcr,r¨)r¡r¢r£rprPr`r»r¼r0r1r­r½r¾r¿rºÚmodesrrYs&&&&&&&&&&&&&&& r2r¤ÚTarFile.__init__ùs€ð�d˜C ¨¨T°3¸Ð=ˆØ Ô ÜÐ@ÓAÐ AØŒ Ø•[ˆŒ çØ�y‰y˜CÔ¬¯©¯©°t×(<Ò(<à�” Ø!�” Ü §j¡jÓ1ˆGØ$ˆDÕ à’ ¤¨°&×!9Ò!9ܘ7Ÿ<™<¬#¬u¨×6Ò6Ø—|‘|�Ü�w ×'Ò'Ø$Ÿ\™\�” Ø#ˆDÔ ß-1”B—G‘G—O‘O DÔ)°tˆŒ ØŒ àŒ ð Ò Ø ŒKØ Ò Ø"ŒLØ Ò "Ø*Ô Ø Ò #Ø ,Ô Ø Ò Ø$ŒMØŒ à Ò " t§{¡{´jÔ'@Ø*Õ à!ˆDÔ à Ò ØŒJØ Ò !Ø(ŒOð'ÔØˆŒ ؈Œ ؈Œ Ø—l‘l×'Ñ'Ó)ˆŒ àˆŒ àˆŒ ؈Œ ð Ø�y‰y˜CÔØ#'�Ô Ø#'§9¡9£;�Ô à�y‰y˜CÔðØ—L‘L×%Ñ% d§k¡kÔ2ð:Ø"&§,¡,×":Ñ":¸4Ó"@˜ØŸ ™ ×+Ñ+¨GÖ4ð�y‰y˜OÔ+Ø#�” à×#×#Ð#ØŸ,™,×?Ñ?À×@PÑ@P×@UÑ@UÓ@WÓX�CØ—L‘L×&Ñ& sÔ+Ø—K’K¤3 s£8Õ+—Kñ$ñ,øô *ôØŸ ™ ×)Ñ)¨$¯+©+Ô6ÚÜ&ô:Ü'¬¨A«Ó/°TÐ9ûð:ûð Ø×#×#Ð#Ø— ‘ ×"Ñ"Ô$؈DŒKØ úsJÈA$NÉ,6MÊ"+NËA0NÍ0NÍ4NÍ7NÎNÎNÎNÎNÎ6Oc óÔa€V'gV'g \R4hVR9dƒV3Rlp.p\SPVR7F@p\SSPV,4p VeVP 4p V !VRV3/VBu# RPV4p \ R V 24hR V9dxVPR ^4wrØT ;'gRp T;'gR pVSP9d\SSPV,4p M\ R V,4hV !WV3/VB#R V9d·VPR ^4wrØT ;'gRp T;'gR pV R9d \R4hRV9dVR9d \R4hRV9dVR9d \R4hVPR^ 4pVPRR4p\WWƒVWï4pS!WV3/VBpRTnT#VR9dSP!WV3/VB#\R4h \ \ 3d:p TPRT RT : 24TeTPX 4Rp ? EK Rp ? ii;i TP4h;i)a¤Open a tar archive for reading, writing or appending. Return an appropriate TarFile class. mode: 'r' or 'r:*' open for reading with transparent compression 'r:' open for reading exclusively uncompressed 'r:gz' open for reading with gzip compression 'r:bz2' open for reading with bzip2 compression 'r:xz' open for reading with lzma compression 'r:zst' open for reading with zstd compression 'a' or 'a:' open for appending, creating the file if necessary 'w' or 'w:' open for writing without compression 'w:gz' open for writing with gzip compression 'w:bz2' open for writing with bzip2 compression 'w:xz' open for writing with lzma compression 'w:zst' open for writing with zstd compression 'x' or 'x:' create a tarfile exclusively without compression, raise an exception if the file is already created 'x:gz' create a gzip compressed tarfile, raise an exception if the file is already created 'x:bz2' create a bzip2 compressed tarfile, raise an exception if the file is already created 'x:xz' create an lzma compressed tarfile, raise an exception if the file is already created 'x:zst' create a zstd compressed tarfile, raise an exception if the file is already created 'r|*' open a stream of tar blocks with transparent compression 'r|' open an uncompressed stream of tar blocks for reading 'r|gz' open a gzip compressed stream of tar blocks 'r|bz2' open a bzip2 compressed stream of tar blocks 'r|xz' open an lzma compressed stream of tar blocks 'r|zst' open a zstd compressed stream of tar blocks 'w|' open an uncompressed stream for writing 'w|gz' open a gzip compressed stream for writing 'w|bz2' open a bzip2 compressed stream for writing 'w|xz' open an lzma compressed stream for writing 'w|zst' open a zstd compressed stream for writing znothing to openr—có0<€SPV,R8H#)Útaropen)Ú OPEN_METH)rÉrs&€r2Únot_compressedÚ$TarFile.open..not_compressedœsø€Ø—}‘} XÕ.°)Ñ;Ð;r4)ÚkeyNz - method z: Ú z'file could not be opened successfully: Ú:rÃrÄÚ|zmode must be 'r' or 'w'ràz4compresslevel is only valid for w|gz and w|bz2 modesr¿z"preset is only valid for w|xz modeFzundiscernible mode)r—úr:*)r—r˜)r¹rº)r¼rµ)r*ÚsortedrËrxr rrrnr rorÚpoprµr¨rÅrÊ)rr¢r£rprgÚkwargsrÌÚ error_msgsrÉÚfuncÚ saved_posrÚerror_msgs_summaryÚfilemoderàr¿rºrsf&&&&, r2rÚ TarFile.openls{ø€÷VŸGÜÐ.Ó/Ð /à �<Ô õ <àˆJÜ" 3§=¡=°n×E�ܘs C§M¡M°(Õ$;Ó<�ØÒ&Ø '§ ¡ £�IðÙ  c¨7Ñ=°fÑ=Ò=ñ Fð"&§¡¨:Ó!6Ð ÜÐFÐGYÐFZÐ[Ó\Ð \à �DŒ[Ø!%§¡¨C°Ó!3Ñ ˆHØ—� 3ˆHØ×(Ð( 5ˆHð˜3Ÿ=™=Ô(ܘs C§M¡M°(Õ$;Ó<‘ä&Ð'DÀxÕ'OÓPÐPÙ˜¨Ñ:°6Ñ:Ð :à �DŒ[Ø!%§¡¨C°Ó!3Ñ ˆHØ—� 3ˆHØ×(Ð( 5ˆHà˜zÔ)Ü Ð!:Ó;Ð;Ø &Ô(¨X¸]Ô-JÜ ØJóðð˜6Ô! h°gÔ&=Ü Ð!EÓFÐFà"ŸJ™J ¸Ó:ˆMØ—Z‘Z ¨$Ó/ˆFܘT¨XÀØ*ó4ˆFð Ù˜¨Ñ9°&Ñ9�ð"ˆAŒM؈Hà �_Ô $Ø—;’;˜t¨7Ñ=°fÑ=Ð =äÐ-Ó.Ð.øôe"Ô#3Ð4ôØ×%Ñ%¨ °(°¸2¸a¹UÐ&CÔDØÒ*ØŸ ™  YÔ/Þûð ûðR Ø— ‘ ”Øús$Á8 HÇ IÈIÈ-I É IÉI'c ó:€VR9d \R4hV!WV3/VB#)zCOpen uncompressed tar archive name for reading or writing. r´)r—r±r˜rv)r*)rr¢r£rprÕs&&&&,r2rÊÚTarFile.taropenÙs+€ð Ð+Ô +ÜÐ@ÓAÐ AÙ�4˜wÑ1¨&Ñ1Ð1r4c ó®€VR 9d \R4h^RIHpT!YR,YC4pTP!YT3/TBpRTn T# \d\ R4Rhi;i \ dpTeTR8Xd \ R4ThhRp?ii;i \ d*pTP4TR8Xd \ R4ThhRp?iTP4h;i) zXOpen gzip compressed tar archive name for reading or writing. Appending is not allowed. r—úmode must be 'r', 'w' or 'x')ÚGzipFilezgzip module is not availableNrjrF©r—r˜rv) r*ÚgzipràrÍrrÖrrÊr¨rÅ) rr¢r£rpràrÕràrrs &&&&&, r2ÚgzopenÚTarFile.gzopenásë€ð �Ô &ÜÐ;Ó<Ð <ð MÝ %ð Ù˜t¨C¥Z°ÓHˆGð Ø— ’ ˜D¨Ñ:°6Ñ:ˆAðˆŒ Øˆøô+ô MÜ"Ð#AÓBÈÐ Lð Mûô ô ØÒ" t¨s¤{ÜÐ 1Ó2¸Ð9Ø ûð ûôô Ø �M‰MŒOØ�sŒ{ÜÐ 1Ó2¸Ð9Ø ûð Ø �M‰MŒOØ ús9”A ›A$¬BÁ A!Á$ B Á/BÂB  CÂ$B>Â>Cc ój€VR 9d \R4h^RIHpT!T;'gTY$R7pTP !YT3/TBpRTn T# \d\ R4Rhi;i \ \3d*pTP4TR8Xd \R4ThhRp?iTP4h;i) zYOpen bzip2 compressed tar archive name for reading or writing. Appending is not allowed. r—rß)ÚBZ2Filer»N)ràznot a bzip2 fileFrá) r*rºrærÍrrÊrÖÚEOFErrorr¨rrÅ) rr¢r£rpràrÕrærrs &&&&&, r2Úbz2openÚTarFile.bz2opensÁ€ð �Ô &ÜÐ;Ó<Ð <ð LÝ #ñ˜'Ÿ/˜/ T¨4ÔMˆð Ø— ’ ˜D¨Ñ:°6Ñ:ˆAðˆŒ Øˆøô!ô LÜ"Ð#@ÓAÀtÐ Kð LûôœÐ"ô Ø �M‰MŒOØ�sŒ{ÜÐ 2Ó3¸Ð:Ø ûð Ø �M‰MŒOØ ús"”A ¯A'Á A$Á'B2Á8$BÂB2c óf€VR 9d \R4h^RIHpHpT!T;'gTY$R7pTP !YT3/TBpRTn T# \d\ R4Rhi;i T\3d*p TP4TR8Xd \R4T hhRp ? iTP4h;i) zXOpen lzma compressed tar archive name for reading or writing. Appending is not allowed. r—rß)ÚLZMAFilerÚr½Nr¾znot an lzma fileFrá) r*rØrërÚrÍrrÊrçr¨rrÅ) rr¢r£rpr¿rÕrërÚrrs &&&&&, r2ÚxzopenÚTarFile.xzopensÁ€ð �Ô &ÜÐ;Ó<Ð <ð Mß 0ñ˜7Ÿ?˜? d¨DÔ@ˆð Ø— ’ ˜D¨Ñ:°6Ñ:ˆAðˆŒ Øˆøô!ô MÜ"Ð#AÓBÈÐ Lð Mûðœ8Ð$ô Ø �M‰MŒOØ�sŒ{ÜÐ 2Ó3¸Ð:Ø ûð Ø �M‰MŒOØ ús"”A±A)ÁA&Á) B0Á6$BÂB0c ó€€VR 9d \R4h^RIHpHp T!T;'gTTTTTR7pTP !YT3/TBp RT n T # \d\ R4Rhi;i T \3d*p TP4TR8Xd \R4T hhRp ? i\dTP4hi;i) zXOpen zstd compressed tar archive name for reading or writing. Appending is not allowed. r—rß)ÚZstdFilerÞrÂN)ÚlevelÚoptionsÚ zstd_dictznot a zstd fileFrá) r*Úcompression.zstdrïrÞrÍrrÊrçr¨rÚ ExceptionrÅ) rr¢r£rprðrñròrÕrïrÞrrs &&&&&&&, r2ÚzstopenÚTarFile.zstopen:s×€ð �Ô &ÜÐ;Ó<Ð <ð Yß <ñØ �OˆO�tØ ØØØô  ˆð Ø— ’ ˜D¨Ñ:°6Ñ:ˆAðˆŒ Øˆøô-ô YÜ"Ð#MÓNÐTXÐ Xð Yûðœ8Ð$ô Ø �M‰MŒOØ�sŒ{ÜÐ 1Ó2¸Ð9Ø ûÜô Ø �M‰MŒOØ ð ús(”A´A,ÁA)Á, B=Á9$B B=Â*B=rÃrÊr¹rãrºrèr¼rìrÀrõc ór€VP'dR#RVnVPR9dªVPP\\ ^,,4V;P \ ^,, un\VP \4wrV^8”d2VPP\\V, ,4VP'gVPP4R#R# TP'gTPP4ii;i)zYClose the TarFile. In write-mode, two finishing zero blocks are appended to the archive. NTrµ) rËr£rprcr-rr-raÚ RECORDSIZErÅr¨)r¡rhris& r2r¨Ú TarFile.closeisЀð �;�;ˆ;Ù àˆŒ ð %Ø�y‰y˜OÔ+Ø— ‘ ×"Ñ"¤3¬)°a­-Õ#8Ô9Ø— ’ ¤ ¨A¥ Õ.• ô%+¨4¯;©;¼ Ó$CÑ!�ؘq”=Ø—L‘L×&Ñ&¤s¬j¸9Õ.DÕ'EÔFà×#×#Ð#Ø— ‘ ×"Ñ"Ö$ñ$ø�4×#×#Ð#Ø— ‘ ×"Ñ"Õ$ð$ús �B:DÄ/D6c ór€VPVPR44pVf\RV,4hV#)zÞReturn a TarInfo object for member 'name'. If 'name' can not be found in the archive, KeyError is raised. If a member occurs more than once in the archive, its last occurrence is assumed to be the most up-to-date version. r„zfilename %r not found)Ú _getmemberr•ÚKeyError)r¡r¢r`s&& r2Ú getmemberÚTarFile.getmember~s6€ð —/‘/ $§+¡+¨cÓ"2Ó3ˆØ Š?ÜÐ2°TÕ9Ó:Ð :؈r4c ó~€VP4VP'gVP4VP#)z{Return the members of the archive as a list of TarInfo objects. The list has the same order as the members in the archive. )Ú_checkrÁÚ_loadrÀr©s&r2Ú getmembersÚTarFile.getmembers‰s)€ð � ‰ Œ Ø�|�|ˆ|Ø �J‰JŒLà�|‰|Ðr4c ó^€VP4Uu.uFqPNK up#uupi)zxReturn the members of the archive as a list of their names. It has the same order as the list returned by getmembers(). )rr¢)r¡r`s& r2ÚgetnamesÚTarFile.getnames“s'€ð-1¯O©OÔ,=Ó>Ñ,= — ” Ñ,=Ñ>Ð>ùÒ>s“*c óÌ €VPR4Ve VPpVfTp\PP V4wrBVP \P R4pVPR4pVP4pWn VfAVP'g\P!V4pM;\P!V4pM$\P!VP44pRpVPp\P !V4'd¡VP"VP$3p VP'gSVP&^8”dBW�P(9d2W P(V ,8wd\*p VP(V ,pMë\,p V ^,'dW P(V &MÇ\P.!V4'd\0p M¤\P2!V4'd\4p M�\P6!V4'd\8p \P:!V4pMH\P<!V4'd\>p M%\P@!V4'd\Bp MR#W%nW…n"VPFVn$VPJVn&V \,8XdVPNVn(M^Vn(VPRVn*W¥n+Wun,\Z'd}VPHVP\9d@\ZP^!VPH4^,VP\VPH&VP\VPH,Vn1\d'd}VPLVPf9d@\dPh!VPL4^,VPfVPL&VPfVPL,Vn5V \>\B39dw\m\R4'da\m\R4'dK\Pn!VPp4Vn9\Pt!VPp4Vn;V# \`dRTP\TPH&ELZi;i \`dRTPfTPL&Lüi;i)aˆCreate a TarInfo object from the result of os.stat or equivalent on an existing file. The file is either named by 'name', or specified as a file object 'fileobj' with a file descriptor. If given, 'arcname' specifies an alternative name for the file in the archive, otherwise, the name is taken from the 'name' attribute of 'fileobj', or the 'name' argument. The name should be a text string. ÚawxNr„r¸ÚmajorÚminor)RÎ(>R<Ò$R9Ò8R9Ò<$S#Ó"S#rÀc  óš€\\P\\P\ \P \\P\\P\\P/pVP4VfTpVEF3pV'Ed}VPf \R4MKVP!VP"^4p\\P$!WTP,44\VP&;'g VP(: RVP*;'g VP,: 24VP/4'gVP14'd1\RRVP2VP43,,4M\RVP6,4VP8f \R4M7\R\:P<!VP84R ,,4\VP>VPA4'dRMR ,4V'deVPC4'd\R VPD,4VPG4'd\R VPD,4\I4EK6 R#) zñPrint a table of contents to sys.stdout. If 'verbose' is False, only the names of the members are printed. If it is True, an 'ls -l'-like output is produced. 'members' is optional and must be a subset of the list returned by getmembers(). Nz ??????????r„z%10sz%d,%dz%10dz????-??-?? ??:??:??z%d-%02d-%02d %02d:%02d:%02d:NéNr¸z-> zlink to )%r²r ÚS_IFREGr“ÚS_IFLNKrŸÚS_IFIFOrÚS_IFCHRrÓÚS_IFDIRrÚS_IFBLKrr£r|r rªrÚr†r#r‡r$r™rœr«r¬r!r"rïÚ localtimer¢r‘r’rˆr�r{)r¡ÚverboserÀÚ type2moder`Úmodetypes&&$ r2rkÚ TarFile.list sÊ€ôœdŸl™l¬G´T·\±\ÜœtŸ|™|¬W´d·l±lÜœdŸl™l¬G´T·\±\ðCˆ ð � ‰ Œ à Š?؈G܈G߈wØ—<‘<Ò'Ü  Õ-à(Ÿ}™}¨W¯\©\¸1Ó=�Hܤ§ ¢ ¨h¿¹Õ.EÓ FÔGÜ w§}¡}×'CÐ'C¸¿ ¹ Ò'CØ'.§}¡}×'CÐ'C¸¿ ¹ Ñ'CðEôFà—=‘=—?’? g§m¡m§o¢oÜ Ø$¨×(8Ñ(8¸'×:JÑ:JÐ'KÕKõ!MõNô  ¨¯©Õ 5Ô6Ø—=‘=Ò(ÜÐ 5Õ6äÐ =Ü"&§.¢.°·±Ó"?ÀÕ"Cõ!DôEô ˜Ÿ ™ ¨w¯}©}¯ª©ÀBÕGÔ HçØ—=‘=—?’?Ü ¨×(8Ñ(8Õ 8Ô9Ø—=‘=—?’?Ü  ¨W×-=Ñ-=Õ =Ô>Ü �Gó7r4Úfilterc óà€VPR4VfTpVPeJ\PP V4VP8XdVP ^RV,4R#VP ^V4VP W4pVfVP ^RV,4R#Ve(V!V4pVfVP ^RV,4R#VP4'd1\VR4;_uu_4pVPWV4RRR4R#VP4'd’VPV4V'dw\\P!V44FQpVP\PPW4\PPW&4W4R7KS R#R#VPV4R# +'giR#;i)aÌAdd the file 'name' to the archive. 'name' may be any type of file (directory, fifo, symbolic link, etc.). If given, 'arcname' specifies an alternative name for the file in the archive. Directories are added recursively by default. This can be avoided by setting 'recursive' to False. 'filter' is a function that expects a TarInfo object argument and returns the changed TarInfo object, if it returns None the TarInfo object will be excluded from the archive. rNztarfile: Skipped %rztarfile: Unsupported type %rútarfile: Excluded %rr8)r8)rr¢ršròr¹Ú_dbgr)r�r¸Úaddfiler‘rÓÚlistdirÚaddro)r¡r¢r$Ú recursiver8r`Úfs&&&&$ r2r>Ú TarFile.add/ sq€ð � ‰ �EÔà Š?؈Gð �9‰9Ò ¤R§W¡W§_¡_°TÓ%:¸d¿i¹iÔ%GØ �I‰I�aÐ.°Õ5Ô 6Ù à � ‰ �!�TÔð—/‘/ $Ó0ˆà Š?Ø �I‰I�aÐ7¸$Õ>Ô ?Ù ð Ò Ù˜W“oˆG؊ؗ ‘ ˜!Ð3°dÕ:Ô;Ùð �=‰=�?Š?ܘ4 ×&Ô&¨!Ø— ‘ ˜WÔ(÷'Ñ&ð�]‰]�_Š_Ø �L‰L˜Ô !ßܤ§ ¢ ¨4Ó 0Ö1�AØ—H‘HœRŸW™WŸ\™\¨$Ó2´B·G±G·L±LÀÓ4LØ%ðö6ó2ñð �L‰L˜Ö !÷'×&Ð&ús ÄGÇ G- c ó8€VPR4Vf3VP4'dVP^8wd \R4h\P!V4pVP VP VPVP4pVPPV4V;P\V4, un VPpVe¤\W PVPVR7\VP\ 4wrVV^8”d;VPP\"\ V, ,4V^, pV;PV\ ,, un VP$P'V4R#)aAdd the TarInfo object 'tarinfo' to the archive. If 'tarinfo' represents a non zero-size regular file, the 'fileobj' argument should be a binary file, and tarinfo.size bytes are read from it and added to the archive. You can create TarInfo objects directly, or by using gettarinfo(). rNz3fileobj not provided for non zero-size regular file)rg)rr�r!r*rÍràrPr0r1rprcr-r,r¿r`rarr-rÀrn)r¡r`rprYrgrhris&&& r2r<ÚTarFile.addfileb s€ð � ‰ �EÔà Š?˜wŸ}™}Ÿš°7·<±<À1Ô3DÜÐRÓSÐ Sä—)’)˜GÓ$ˆà�m‰m˜DŸK™K¨¯©¸¿ ¹ ÓDˆØ � ‰ ×ј3ÔØ � Š ”s˜3“xÕ� Ø× Ñ ˆà Ò Ü ˜§¡¨w¯|©|ÀWÕ MÜ & w§|¡|´YÓ ?Ñ ˆFؘ1Œ}Ø— ‘ ×"Ñ"¤3¬)°iÕ*?Õ#@ÔAؘ!• �Ø �KŠK˜6¤IÕ-Õ -�Kà � ‰ ×јGÖ$r4cóþ€Vf:VPpVf\#\V\4'd \ R4hV#\ V4'dV#\ V,# \d\RT: R24Rhi;i)Nzfilter z not foundzrString names are not supported for TarFile.extraction_filter. Use a function such as tarfile.data_filter directly.) Úextraction_filterr¦rörùÚ TypeErrorÚcallableÚ_NAMED_FILTERSrür*)r¡r8s&&r2Ú_get_filter_functionÚTarFile._get_filter_function€ s‹€Ø Š>Ø×+Ñ+ˆFØŠ~Ü"Ð"ܘ&¤#×&Ò&Üð6ó7ð7ðˆMÜ �F× Ò ØˆMð GÜ! &Õ)Ð )øÜô Gܘw v¡j° Ð;Ó<À$Ð Fð Gús Á AÁA<Ú numeric_ownerc  ó€.pVPV4pVfTpVFlpVPWvV4wr‰VfKVP4'dVPV 4VP W�VP4'*VVR7Kn VP RRR7VFÔp V!W‘4pTfTPT R4K%\PPYP4p \P!T 4p \P !T P"4'gTPTR4KŸTP%Y‹TR 7TP'Y‹4TP)Y‹4KÖ R# \ d(p TPT \T 44Rp ? EKRp ? ii;i \dTPTR4EK0i;i \*dp TP-T 4Rp ? EKWRp ? ii;i) a-Extract all members from the archive to the current working directory and set owner, modification time and permissions on directories afterwards. 'path' specifies a different directory to extract to. 'members' is optional and must be a subset of the list returned by getmembers(). If 'numeric_owner' is True, only the numbers for user/group names are used and not the names. The 'filter' function will be called on each member just before extraction. It can return a changed TarInfo or None to skip the member. String names of common filters are accepted. N)Ú set_attrsrKÚfilter_functioncó€VP#r§r¿)r±s&r2ÚÚ$TarFile.extractall..µ s€ q§v¢vr4T)rÎÚreversezexcluded by filterÚmissingznot a directory)rK)rIÚ_get_extract_tarinfor‘rnÚ _extract_oneÚsortÚ_FILTER_ERRORSÚ_log_no_directory_fixupÚreprršròror¢r ÚFileNotFoundErrorr rrÚchownÚutimeÚchmodr Ú_handle_nonfatal_error)r¡ròrÀrKr8Ú directoriesrNr–r`Ú unfilteredÚexcÚdirpathr rs&&&$$ r2Ú extractallÚTarFile.extractall’ sÌ€ðˆ à×3Ñ3°FÓ;ˆØ Š?؈GãˆFØ"&×";Ñ";بó#/Ñ ˆGàŠÙØ�}‰}�Šð×"Ñ" :Ô.Ø × Ñ ˜g¸7¿=¹=»?Ô7JØ,9Ø.=ð ö ?ñð ×ÑÑ-°tÐÔ<ó&ˆJð /ðÙ-¨jÓ?�Gð’?Ø×0Ñ0°Ø1EôGáÜŸ'™'Ÿ,™, t¯\©\Ó:�ðÜŸHšH WÓ-�Eô—|’| E§M¡M×2Ò2ð×0Ñ0°Ð:KÔLÙØ— ‘ ˜7¸=� ÔIØ— ‘ ˜7Ô,Ø— ‘ ˜7Ö,ó5&øô &ôØ×0Ñ0°¼TÀ#»YÔGÞûðûô)ôØ×0Ñ0°¸)ÔDÛðûô ô /Ø×+Ñ+¨A×.Ó.ûð /úsrÂ'E<Â/GÃ)GÃ1F1Ä%GÄ-GÅ5GÅ< F.ÆF)Æ"GÆ)F.Æ.GÆ1GÇGÇGÇGÇ G>Ç!G9Ç9G>cóP€VP^RVP: RV: R24R#)rsz!tarfile: Not fixing up directory z (Ú)N)r;r¢)r¡r–Úreasons&&&r2rXÚTarFile._log_no_directory_fixup× s€Ø � ‰ ‘!Ø—;”;£ð(ö )r4c ó„€VPV4pVPWV4wrxVeVPWrW4VR7R#R#)aDExtract 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 TarInfo object. You can specify a different directory using 'path'. File attributes (owner, mtime, mode) are set unless 'set_attrs' is False. If 'numeric_owner' is True, only the numbers for user/group names are used and not the names. The 'filter' function will be called before extraction. It can return a changed TarInfo or None to skip the member. String names of common filters are accepted. N)rN)rIrTrU) r¡r–ròrMrKr8rNr`r`s &&&&$$ r2ÚextractÚTarFile.extractÛ sQ€ð×3Ñ3°FÓ;ˆØ"×7Ñ7Ø  Tó+шà Ò Ø × Ñ ˜g¨YØ.=ð ö ?ñ r4c ó(€\V\4'dVPV4pMTpRpV!WC4pVf&VP^RVP,4R#VP4'dE\P!V4p\PPW5P 4VnWT3# \\\ 3dpTP T4Rp?L²Rp?i\dpTPT4Rp?LÖRp?ii;i)zrGet (filtered, unfiltered) TarInfos from *member* *member* might be a string. Return (None, None) if not found. Nr:)NN)rörùrýrÖrõr Ú_handle_fatal_errorr r^r;r¢r�rÍršròrorˆr°)r¡r–rNròr`Úfilteredrs&&&& r2rTÚTarFile._get_extract_tarinfoð sä€ô �fœc× "Ò "ØŸ™¨Ó/‰JàˆJàˆð +Ù& zÓ8ˆHð Ò Ø �I‰I�aÐ/°*·/±/ÕAÔ BØÐ ð �>‰>× Ò Ü—y’y Ó*ˆHÜ$&§G¡G§L¡L°×7HÑ7HÓ$IˆHÔ !ØÐ#Ð#øôÔ+¬[Ð9ô (Ø × $Ñ $ Q× 'Ñ 'ûÜô +Ø × 'Ñ '¨× *Ñ *ûð +ús)®B<Â<DÃC(Ã( DÃ5DÃ6D Ä Dc  óP€VPR4VPV\PP W!P 4VVVVR7R# \ \3dpTPT4Rp?R#Rp?i\dpTPT4Rp?R#Rp?ii;i)z“Extract from filtered tarinfo to disk. filter_function is only used when extracting a *different* member (e.g. as fallback to creating a symlink) r—)rMrKrNÚextraction_rootN) rÚ_extract_memberršròror¢rÖrõrmr r^)r¡r`ròrMrKrNrs&&&&&& r2rUÚTarFile._extract_one sŒ€ð � ‰ �CÔð +Ø × Ñ  ¬"¯'©'¯,©,°t¿\¹\Ó*JØ+4Ø/<Ø1@Ø15ð !ö 7øô Ô+Ð,ô (Ø × $Ñ $ Q× 'Ò 'ûÜô +Ø × 'Ñ '¨× *Ò *ûð +ús)“>AÁB%Á$A;Á; B%ÂB% B  B%c ó\€VP^8”dhVP^RV,4R#)z=Handle non-fatal error (ExtractError) according to errorlevelú tarfile: %sN)r¾r;©r¡rs&&r2r^ÚTarFile._handle_nonfatal_error" s$€à �?‰?˜QÔ Ø à �I‰I�a˜¨Õ*Ö +r4c óv€VP^8”dh\V\4'ddVPf&VP ^RVP ,4R#VP ^RVP : RVP: 24R#VP ^R\ V4P: RV: 24R#)z1Handle "fatal" error according to self.errorlevelNruz tarfile: rv)r¾rörÖÚfilenamer;Ústrerrorrªr€rvs&&r2rmÚTarFile._handle_fatal_error) sw€à �?‰?˜QÔ Ø Ü ˜œ7× #Ò #Ø�z‰zÒ!Ø— ‘ ˜!˜]¨Q¯Z©ZÕ7Ö8à— ‘ ™!°·´¸Q¿Z»ZÐHÖIà �I‰I‘a¬T°!«W×-=Ô-=ºqÐAÖ Br4c óâ€VPR4\V\4'dVPV4pMTpVP 4'gVP \ 9dVPW4#VP4'gVP4'dL\VP\4'd \R4hVPVPV44#R#)a(Extract a member from the archive as a file object. 'member' may be a filename or a TarInfo object. If 'member' is a regular file or a link, an io.BufferedReader object is returned. For all other existing members, None is returned. If 'member' does not appear in the archive, KeyError is raised. r—z'cannot extract (sym)link as file objectN)rrörùrýr�rªrLÚ fileobjectr�r’rprµrÚ extractfileÚ_find_link_target)r¡r–r`s&& r2r~ÚTarFile.extractfile5 s¬€ð � ‰ �CÔä �fœc× "Ò "Ø—n‘n VÓ,‰GàˆGà �=‰=�?Š?˜gŸl™l´/ÔAà—?‘? 4Ó1Ð 1à �]‰]�_Š_ § ¡ §¢Ü˜$Ÿ,™,¬×0Ò0ô"Ð"KÓLÐLð×'Ñ'¨×(>Ñ(>¸wÓ(GÓHÐHñr4rNrqc ó(€VPR4pVPR\P4p\PP V4pV'd>\PP V4'g\P!VRR7VP4'gVP4'd/VP^VP: RVP: 24MVP^VP4VP4'dVPW4EMVP4'dVP!W4MßVP#4'dVP%W4M·VP'4'gVP)4'dVP+W4MyVP4'gVP4'dVP-WVVR7M8VP.\09dVP3W4MVPW4V'dOVP5WV4VP4'g%VP7W4VP9W4R#R#R#)z¾Extract the filtered TarInfo object tarinfo to a physical file called targetpath. filter_function is only used when extracting a *different* member (e.g. as fallback to creating a symlink) r„T)Úexist_okz -> ©rNrqN)r•rèršr‹ròr”r·Úmakedirsr�r’r;r¢rˆr�Úmakefiler‘Úmakedirr Úmakefifor™rœÚmakedevÚmakelink_with_filterrªrLÚ makeunknownr[r]r\)r¡r`Ú targetpathrMrKrNrqÚ upperdirss&&&&&$$ r2rrÚTarFile._extract_memberU s¦€ð ×&Ñ& sÓ+ˆ Ø×'Ñ'¨¬R¯V©VÓ4ˆ ô—G‘G—O‘O JÓ/ˆ ß œRŸW™WŸ^™^¨I×6Ò6ô �KŠK˜ ¨DÕ 1à �=‰=�?Š?˜gŸm™mŸošoØ �I‰I�a w§|¤|°W×5EÓ5EÐFÕ Gà �I‰I�a˜Ÿ™Ô &à �=‰=�?Š?Ø �M‰M˜'Ö .Ø �]‰]�_Š_Ø �L‰L˜Õ -Ø �^‰^× Ò Ø �M‰M˜'Õ .Ø �]‰]�_Š_ § ¡ §¢Ø �L‰L˜Õ -Ø �]‰]�_Š_ § ¡ §¢Ø × %Ñ %ØØ /Ø /ð &õ 1ð�\‰\¤Ô 0Ø × Ñ ˜WÕ 1à �M‰M˜'Ô .ç Ø �J‰J�w¨MÔ :Ø—=‘=—?’?Ø— ‘ ˜7Ô/Ø— ‘ ˜7Ö/ñ#ñ r4c óò€VPf\P!V4R#\P!VR4R# \d+\PP T4'ghR#i;i)z,Make a directory called targetpath. NiÀ)r£ršÚmkdirÚFileExistsErrorròr‘©r¡r`r‹s&&&r2r†ÚTarFile.makedir� sW€ð Ø�|‰|Ò#ä—’˜Ö$ô—’˜ UÖ+øÜô Ü—7‘7—=‘= ×,Ò,Øò-ð ús‚$A¨AÁ/A6Á1A6Á5A6c  óê€VPpVPVP4VPp\ VR4;_uu_4pVP eeVP F(wrgVPV4\ W5V\V4K* VPVP4VP4M\ W5VP\V4RRR4R# +'giR#;i)z'Make a file called targetpath. r²N) rpr r\r¿r¸r]r`rr!Útruncate)r¡r`r‹ÚsourcergÚtargetr-r!s&&& r2r…ÚTarFile.makefileœ sª€ð—‘ˆØ� ‰ �G×'Ñ'Ô(Ø×"Ñ"ˆÜ �z 4× (Ô (¨FØ�~‰~Ò)Ø$+§N¤N‘L�FØ—K‘K Ô'Ü °´iÀÖIñ%3ð— ‘ ˜GŸL™LÔ)Ø—‘Õ!ä˜F¨G¯L©L¼)ÀWÔM÷)× (× (Ò (ús ÁBC!Ã! C2 c ón€VPW4VP^RVP,4R#)zFMake a file from a TarInfo object with an unknown type at targetpath. z9tarfile: Unknown file type %r, extracted as regular file.N)r…r;rªr‘s&&&r2rŠÚTarFile.makeunknown¬ s1€ð � ‰ �gÔ*Ø � ‰ �!ð2Ø4;·L±LõAö Br4c ót€\\R4'd\P!V4R#\R4h)z'Make a fifo called targetpath. Úmkfifozfifo not supported by systemN)rŸršr›r r‘s&&&r2r‡ÚTarFile.makefifo´ s)€ô ”2�x× Ò Ü �IŠI�jÖ !äÐ=Ó>Ð >r4c ó¢€\\R4'd\\R4'g \R4hVPpVfRpVP 4'dV\ P ,pMV\ P,p\P!W#\P!VPVP44R#)zÑ.>Ó?ö Ar4có(€VPWRR4#r§)r‰r‘s&&&r2ÚmakelinkÚTarFile.makelinkÎ s€Ø×(Ñ(¨¸dÀDÓIÐIr4c ó®€RpVP4'd_\PPV4'd\P!V4\P !VP V4R#\PPVP4'd_\PPV4'd\P!V4\P!VPV4R#VPV4pTfTpM‘> '×"6Ñ"6×7Ò7Ü—w‘w—‘ z×2Ò2äŸ š  *Ô-Ü—G’G˜G×0Ñ0°*Ô=Ùð 8ð Ø×/Ñ/°Ó8ˆJð Ò "Ø!‰HàÒ&Ü"ð>ó?ð?ð MÙØ×&Ñ&¨G¯L©L¸uÐ&ÓEØ#ô%ñ+¨:ÓG�ð Ò Ø × Ñ  Ø1@Ø1@ð !ö Bñ øô5!ô ,Ø'+Ò $ð ,ûô ô ß'Ü"Ø;ó=ØBFðGðð  ûô&"ô MÜ'¨·±ÓAÀuÐLûð MúsW„E7š$E7¿7E7Á8.E7Â'$E7à 7E7ÄF Ä/,F.Å7 FÆFÆ F+ÆF+Æ. GÆ9GÇGc ó*€\\R4'Ed5\P!4^8XEdVPpVPpV'g�\ 'd:VP 'd(\ P!VP 4^,p\'d:TP'd(\P!TP4^,pVfRpVfRpVP4'd0\\R4'd\P!W%V4R#\P!W%V4R#R#R# \dLÂi;i \dL�i;i \\ 3dp\#R4ThRp?ii;i)zÇSet owner of targetpath according to tarinfo. If numeric_owner is True, use .gid/.uid instead of .gname/.uname. If numeric_owner is False, fall back to .gid/.uid when the search based on name fails. ÚgeteuidNÚlchownzcould not change ownerr6)rŸršr­r$r#r!r‡Úgetgrnamrürr†Úgetpwnamr’r®r[rÖÚ OverflowErrorr )r¡r`r‹rKÚgÚurs&&&& r2r[Ú TarFile.chown s)€ô ”2�y× !Ó !¤b§j¢j£l°aÕ&7à— ‘ ˆAØ— ‘ ˆAß ðß“s˜wŸ}Ÿ}˜}ÜŸLšL¨¯©Ó7¸Õ:˜ðß“s˜wŸ}Ÿ}˜}ÜŸLšL¨¯©Ó7¸Õ:˜ðŠyØ�ØŠyØ�ð DØ—=‘=—?’?¤w¬r°8×'<Ò'<Ü—I’I˜j¨QÖ/ä—H’H˜Z¨AÖ.ñ/'8Ñ !øô ôÙðûô  ôÙðûôœ]Ð+ô Dä"Ð#;Ó<À!ÐCûð Dús`Á EÁ EÁ2'E EÂ&EÂ8'EÃ,E0Ä-E0Ä1E0Å EÅEÅ E-Å,E-Å0FÆ F Æ Fc ó¦€VPfR#\P!W!P4R# \dp\ R4ThRp?ii;i)zASet file permissions of targetpath according to tarinfo. Nzcould not change mode)r£ršr]rÖr )r¡r`r‹rs&&& r2r]Ú TarFile.chmod+ sD€ð �<‰<Ò Ù ð ?Ü �HŠH�Z§¡Ö .øÜô ?ÜÐ6Ó7¸QÐ >ûð ?ús’ 4´ A¿ A Á Ac óÊ€VPpVfR#\\R4'gR#\P!W#V34R# \dp\ R4ThRp?ii;i)zBSet modification time of targetpath according to tarinfo. Nr\z"could not change modification time)r"rŸršr\rÖr )r¡r`r‹r"rs&&& r2r\Ú TarFile.utime5 s[€ð— ‘ ˆØ Š=Ù Ü”r˜7×#Ò#Ù ð LÜ �HŠH�Z¨ Ö 0øÜô LÜÐCÓDÈ!Ð Kûð Lús¬AÁ A"Á AÁA"c ó€VPR4VPeVPpRVnV#VPVPP 48wdlVP^8XdR#VPP VP^, 4VPP ^4'g \R4hRpVPPV4pTe0TP0'gTP2P5T4T#RTnT# \depTP'dITP^RTPT3,4T;P\, unRp?K¿Rp?L§Rp?i\d�pTP'dJTP^RTPT3,4T;P\, unRp?EK-TP^8Xd\\T44RhRp?ELr�r¼r;rrFrùrŒrŽr“rôrÌrörÐrÍrºrÀrnrÁ)r¡Úmr`rrÌs& r2rRÚ TarFile.nextC se€ð � ‰ �DÔØ × Ñ Ò 'Ø× Ñ ˆAØ#ˆDÔ ØˆHð �;‰;˜$Ÿ,™,×+Ñ+Ó-Ô -Ø�{‰{˜aÔÙØ �L‰L× Ñ ˜dŸk™k¨A�oÔ .Ø—<‘<×$Ñ$ Q×'Ò'ÜÐ 8Ó9Ð9ðˆØð ØŸ,™,×2Ñ2°4Ó8�ð< à Ò à—;—;�;Ø— ‘ ×#Ñ# GÔ,ðˆð ˆDŒLàˆøôM"ô Ø×$×$Ð$Ø—I‘I˜a ¨t¯{©{¸AÐ.>Õ!>Ô?Ø—K’K¤9Õ,•KÝô%ûô&ô 6Ø×$×$Ð$Ø—I‘I˜a ¨t¯{©{¸AÐ.>Õ!>Ô?Ø—K’K¤9Õ,•KÞØ—[‘[ AÔ%Ü#¤C¨£FÓ+°Ð5õ&ûä#ô <Ø—;‘; !Ô#Ü# LÓ1°tÐ;ò$ä'ô 6Ø—;‘; !Ô#Ü#¤C¨£FÓ+°Ð5õ$ûä(ô 2ܤ A£Ó'¨TÐ1ûÜô ðÛÜ! !§Z¡Z×0Ò0Ü'¨,°q°cÐ(:Ó;ÀÐEà˜øÜ"ôØ�Gðþð ús€Ã D%Ä% LÄ0AFÆ LÆLÆAH$Ç8&H$È$ LÈ1LÉLÉLÉ&JÊ LÊLÊJ+Ê+ LÊ8LÊ:0K*Ë*K8Ë8K;Ë;Lc óü€VP4pRpVeVPV4pVRVpV'd \PP V4p\ V4FrpV'd VPVP8XdRpK*V'd+\PP VP4pM VPpW8XgKpVu# V'd \V4hR# \dRpLÌi;i)zjFind an archive member by name from bottom to top. If tarinfo is given, it is used as the starting point. FNT) rÚindexr*ršròr“Úreversedr-r¢) r¡r¢r`Ú normalizerÀÚskippingr¾r–Ú member_names &&&& r2rûÚTarFile._getmember† sÚ€ð —/‘/Ó#ˆðˆØ Ò ð *ØŸ ™  gÓ.�ð" & 5˜/�ç Ü—7‘7×#Ñ# DÓ)ˆDä˜wÖ'ˆFߨ—>‘> V§]¡]Ô2Ø$�HÙßÜ Ÿg™g×.Ñ.¨v¯{©{Ó;‘ à$Ÿk™k� àÖ"Ø’ ñ(÷ ä˜WÓ%Ð %ñ øô1ô ð ’ð ús˜C+Ã+ C;Ã:C;c ód€VP'gVP4eKRVnR#R#)zvRead through the entire archive file and look for readable members. This should not run if the file is set to stream. NT)rºrRrÁr©s&r2rÚ TarFile._load® s(€ð�{�{ˆ{Ø—)‘)“+Ò)ÙØˆDŽLñr4c óÜ€VP'd'\RVPP,4hVe0VPV9d\RVP,4hR#R#)z[Check if TarFile is still open, and if the operation's mode corresponds to TarFile's mode. z %s is closedNzbad operation for mode %r)rËrÖrar€r£)r¡r£s&&r2rÚTarFile._check· sU€ð �;�;ˆ;ܘ.¨4¯>©>×+BÑ+BÕBÓCÐ CØ Ò  § ¡ °Ô 5ÜÐ5¸¿ ¹ ÕAÓBÐ Bñ!6Ñ r4c óB€VP4'dRRP\R\PP VP 4VP344pRpMVPpTpVPW#RR7pVf\RV,4hV#)zGFind the target member of a symlink or hardlink member in the archive. r„NT)r`rÀzlinkname %r not found) r’ror8ršròr”r¢rˆrûrü)r¡r`rˆÚlimitr–s&& r2rÚTarFile._find_link_targetÀ s„€ð �=‰=�?Š?à—x‘x¤ t¬b¯g©g¯o©o¸g¿l¹lÓ.KÈW×M]ÑM]Ð-^Ó _Ó`ˆH؉Eð×'Ñ'ˆH؈Eà—‘ ÀD�ÓIˆØ Š>ÜÐ2°XÕ=Ó>Ð >؈ r4c# ó "€VP'dVPRjx€L R#^pVPeVP4pV^, pVx€V\ VP48dVPV,pM6VP'g#VP4pV'g RVnR#MR#V^, pVx€KtL§5i)z$Provide an iterator object. NT)rÁrÀrÅrRr,)r¡r¾r`s& r2Ú__iter__ÚTarFile.__iter__Ó s®é€ð �<�<ˆ<Ø—|‘|× #Ð #Ù ðˆð × Ñ Ò 'Ø—i‘i“kˆGØ �Q�JˆEØŠMàØ”s˜4Ÿ<™<Ó(Ô(ØŸ,™, uÕ-‘Ø—\—\�\ØŸ)™)›+�ߨ#'�D”LÙðñØ �Q�JˆEØŒMñ3 $ùs‚"C¤C ¥A3CÂCÂ1Cc ó`€WP8:d\V\PR7R#R#)z.Write debugging output to sys.stderr. ©ÚfileN)r½r{ryÚstderr)r¡rðÚmsgs&&&r2r;Ú TarFile._dbgò s!€ð —J‘JÔ Ü �#œCŸJ™J× 'ñ r4có&€VP4V#r§)rr©s&r2Ú __enter__ÚTarFile.__enter__ø s€Ø � ‰ Œ ؈ r4có˜€VfVP4R#VP'gVPP4RVnR#©NT)r¨rÅrprË)r¡rªrßÚ tracebacks&&&&r2Ú__exit__ÚTarFile.__exit__ü s5€Ø Š<Ø �J‰JŽLð×#×#Ð#Ø— ‘ ×"Ñ"Ô$؈DŽKr4)rÅrÄrÁr¶rÃrËr¿r½r»r0r¾r1rprÅrPr¼rÂrÀr£r¢r-r­rºr`)Nr—NNNNNNr×NNNNF)r—N)r—Né )r—NN)r—NNNN)NNNr;rØr§)Ú.N)r¸T)TF)NF)Dr€r�r‚rƒr„r½r»r¼r¾r«rPr¬r0r1rr`rZr}rEr¤r­rørrÊrãrèrìrõrËr¨rýrrr)rkr>r<rIrcrXrjrTrUr^rmr~rrr†r…rŠr‡rˆr¡r‰r[r]r\rRrûrrrrÌr;rÕrÚr…r±r²s@r2rrÝsø‡€ñð €Eà€Kð€Lð€Jð€Fà€Hà €Fà€Gà€JàÐôfðfØ #¨t¸Zój/óðj/ðXó2óð2ðóóðð@óóðð6óóðð6ó óð ðH ˆyØ ˆxØ ˆyØ ˆxØ ˆyð €Iò%ò* òò?ô hñT*¨Dõ*ñX1"Àõ1"ôf%ò<Gñ$C/À%ðC/ØõC/òJ)ñ?Èð?Øõ?ò*$ô<+ò(,ò Còñ@10Ø@Dð10à(,õ10òp òNò Bò?òAò$Jò6Bòp DòD?ò Lò>ôF&&òP ôCòò&ò>(ò ÷ðr4cóâ€\VR4'd/VP4p\VR7pVPV4M \V4pVP 4R# \ dR#i;i)z’Return True if name points to a tar archive that we are able to handle, else return False. 'name' should be a string, file, or file-like object. rb)rpTF)rŸr rr r¨r)r¢rÊrs& r2Ú is_tarfilerß s[€ð Ü �4˜× Ò Ø—)‘)“+ˆCܘTÔ"ˆAØ �I‰I�c�Nä�T“ ˆAØ �‰Œ ÙøÜ ôÚðús‚AAÁ A.Á-A.cóî €^RIpRpVPVRR7pVPRRRRR R 7VPR R \R R7VP RR7pVPRRRRR7VPRRRRrNz3A simple command-line interface for tarfile module.T)Ú descriptionÚcolorz-vz --verboseÚ store_trueFzVerbose output)ÚactionÚdefaultÚhelpz--filterz zFilter for extraction)ÚmetavarÚchoicesræ)Úrequiredz-lz--listú zShow listing of a tarfile)rçræz-ez --extractÚ+zExtract tarfile into target dir)Únargsrçræz-cz--createzCreate tarfile from sourcesz-tz--testzTest if a tarfile is validz&--filter is only valid for extraction r—rÏz{!r} is a tar archive.z{!r} is not a tar archive. rÒ)r4)ròr8rÝz{!r} file is extracted.z+{!r} file is extracted into {!r} directory.rçr¹z.tgzz.xzr¼z.txzz.bz2rºz.tbzz.tbz2z.tb2z.zstrÀz.tzstzw:r˜z{!r} file created.)rêz )zz)ÚargparseÚArgumentParserÚ add_argumentrHÚadd_mutually_exclusive_groupÚ parse_argsr8rjÚexitÚtestrßrrr{ryrÑr4rPrkrr,ršÚcurdirÚ format_helprcÚcreaterÔròÚsplitextr>)ríráÚparserr\ÚargsrdrÃÚtfrôrÒÚtar_namernÚextÚ compressionsÚtar_modeÚ tar_filesÚ file_names r2Úmainr s€ÛàG€KØ × $Ñ $°ÀDÐ $Ó I€FØ ×ј˜k°,ÈØ-ðô/à ×ј ¨NÜ .Ø4ðô6ð × /Ñ /¸Ð /Ó >€EØ ×Ñ�t˜X¨{Ø7ðô9à ×Ñ�t˜[°Ø<Ø=ðô?ð ×Ñ�t˜Z¨sØ3Ø9ðô;ð ×Ñ�t˜X¨{Ø8ðô:ð × Ñ Ó €Dà ‡{‡{€{�t—|‘|Ò+Ø� ‰ �AÐ@ÔAà ‡y�yÒØ�i‰iˆÜ �c�?Š?Ü�c˜3—” 3Ø—‘Ô Ü�c—n‘nÓ&¬S¯Z©ZÕ8÷ ð�|�|ˆ|ÜÐ.×5Ñ5°cÓ:Ö;ñð �K‰K˜Ð9×@Ñ@ÀÓEÖ Fà �‰Ò Ø�i‰iˆÜ �c�?Š?Ü—‘˜c 5×)Ô)¨RØ—‘ § ¡ �Ô-÷*Ñ)ð �K‰K˜Ð9×@Ñ@ÀÓEÖ Fà �‰Ó !Ü ˆt�|‰|Ó  Ô !Ø—,‘,˜q•/ˆCÜ—Y‘Y‰FÜ �—‘Ó  !Ô #ØŸ,™,‰KˆC�à �K‰K˜˜6×-Ñ-Ó/Ô 0ä �c�?Š?Ü—‘˜c 5×)Ô)¨RØ— ‘  6°$·+±+� Ô>÷*à�|�|ˆ|ؘS”=Ø3×:Ñ:¸3Ó?‘Cð2ß39±6¸#Ó3Fðä�c– ñ ð �K‰K˜Ð9×@Ñ@ÀÓEÖ Fà �‰Ò Ø—;‘;—?‘? 1Ó%ˆÜ—‘×!Ñ! (Ó+‰ˆð �4Ø �Dà �4Ø �Dà �EØ �EØ �UØ �Eà �EØ �Uð ˆ ð 03Ô/B�4˜,Õ+Ö+ȈؗK‘Kˆ ä �\‰\˜(× -Ô -°Û&� Ø—‘�yÖ!ñ'÷.ð �<�<ˆ<Ü Ð&×-Ñ-¨hÓ7Ö 8ñ ñ5 !÷M —�ú÷*×)Ð)ú÷*×)Ð)ú÷D.× -ús0Ä2:R(ÈR<ÌSÑS$Ò( R9 Ò< S Ó S! Ó$ S4 Ú__main__)rrrßrrrrr r r¬rÚrLrÝr«rrŸr¦r¤r r r rrrr)ròrÄr!r"r#r$r†r‡>ròr‡r†rÄir;)or„ÚversionÚ __author__Ú __credits__Úbuiltinsrr¸ryršrHr_r rïrWrÍÚrerrÍr!ÚAttributeErrorÚNotImplementedErrorrÖr¨Ú__all__r-rrørìrårçrær r²r2r–r“rrrÓrŸÚCONTTYPErïrîr3rûrrGrÚrLrÝr«rLrŠr5r~r_r÷rDrr¢r¬Úgetfilesystemencodingr3r:rIrRr\r`rlrsr|rôrr rrrr rŒrŽr�rFr“r•rµÚobjectrÆr+ÚBufferedReaderrZr rr rr rrrWr�rŸr¤r¦rHrËÚcompilerZrrrßrr€r~r4r2ÚrsÆðñ8ð€Ø6€ ØH€ õ 'Û Û Û Û Û Û Û Û Û ðÛðÛð$Ð%8¸'ÐBÐò ?€ð €Ø € Ø ˜�^€ Ø € Ø€ à€ Ø€ Ø€ à €Ø €Ø €Ø €Ø €Ø €Ø €Ø €Ø €àÐØÐØ€à €Ø €Ø€à€ Ø € Ø € Ø€ð ˜H gؘG XؘW gØ#Ð%5Ø!ð #€ð˜(ؘ>ð+€ ðÐ/Ø ð € ð.€ ò9€ð  ˆUØ ˆUØ ˆUØ ˆ3Ø ˆ3Ø ˆCð Ðð‡7�7ˆd„?Ø�Hà×(Ò(Ó*€Hò 0ò&ò ð(˜Nô ò< *ð"&°À$ô ð>$Ðòò$ô ˆyô ô �8ô ô �ô ô �xô ô �(ô ô �(ô ô �{ô ô ˜;ô ô �[ô ô ˜ô ô ˜Kô ÷ñ÷0~ñ~ôB�6ôô@i�&ôiôX"�2×$Ñ$ô"ô �(ô ôJ˜ ôJô ?˜kô?ô@�{ô@ô L˜ ôLô ? +ô?ôD˜ ôDð˜w¨ Ð5€ôHòTòò ðÐ)Ø ˆ:Ø ˆKð€ñ ‹€ðŸ:š:Ð&8Ó9ÐôH 9ˆfôH 9ôVgˆfôgòZ)ð$‡|�|€ò`9ðD ˆzÔÙ†Fñøð]bôØ ƒCðûðôØ ƒCðús"´I+¹I;É+ I8É7I8É; JÊJ