PNG  IHDRQgAMA a cHRMz&u0`:pQ<bKGDgmIDATxwUﹻ& ^CX(J I@ "% (** BX +*i"]j(IH{~R)[~>h{}gy)I$Ij .I$I$ʊy@}x.: $I$Ii}VZPC)I$IF ^0ʐJ$I$Q^}{"r=OzI$gRZeC.IOvH eKX $IMpxsk.쒷/&r[޳<v| .I~)@$updYRa$I |M.e JaֶpSYR6j>h%IRز if&uJ)M$I vLi=H;7UJ,],X$I1AҒJ$ XY XzI@GNҥRT)E@;]K*Mw;#5_wOn~\ DC&$(A5 RRFkvIR}l!RytRl;~^ǷJj اy뷦BZJr&ӥ8Pjw~vnv X^(I;4R=P[3]J,]ȏ~:3?[ a&e)`e*P[4]T=Cq6R[ ~ޤrXR Հg(t_HZ-Hg M$ãmL5R uk*`%C-E6/%[t X.{8P9Z.vkXŐKjgKZHg(aK9ڦmKjѺm_ \#$5,)-  61eJ,5m| r'= &ڡd%-]J on Xm|{ RҞe $eڧY XYrԮ-a7RK6h>n$5AVڴi*ֆK)mѦtmr1p| q:흺,)Oi*ֺK)ܬ֦K-5r3>0ԔHjJئEZj,%re~/z%jVMڸmrt)3]J,T K֦OvԒgii*bKiNO~%PW0=dii2tJ9Jݕ{7"I P9JKTbu,%r"6RKU}Ij2HKZXJ,妝 XYrP ެ24c%i^IK|.H,%rb:XRl1X4Pe/`x&P8Pj28Mzsx2r\zRPz4J}yP[g=L) .Q[6RjWgp FIH*-`IMRaK9TXcq*I y[jE>cw%gLRԕiFCj-ďa`#e~I j,%r,)?[gp FI˨mnWX#>mʔ XA DZf9,nKҲzIZXJ,L#kiPz4JZF,I,`61%2s $,VOϚ2/UFJfy7K> X+6 STXIeJILzMfKm LRaK9%|4p9LwJI!`NsiazĔ)%- XMq>pk$-$Q2x#N ؎-QR}ᶦHZډ)J,l#i@yn3LN`;nڔ XuX5pF)m|^0(>BHF9(cզEerJI rg7 4I@z0\JIi䵙RR0s;$s6eJ,`n 䂦0a)S)A 1eJ,堌#635RIgpNHuTH_SԕqVe ` &S)>p;S$魁eKIuX`I4춒o}`m$1":PI<[v9^\pTJjriRŭ P{#{R2,`)e-`mgj~1ϣLKam7&U\j/3mJ,`F;M'䱀 .KR#)yhTq;pcK9(q!w?uRR,n.yw*UXj#\]ɱ(qv2=RqfB#iJmmL<]Y͙#$5 uTU7ӦXR+q,`I}qL'`6Kͷ6r,]0S$- [RKR3oiRE|nӦXR.(i:LDLTJjY%o:)6rxzҒqTJjh㞦I.$YR.ʼnGZ\ֿf:%55 I˼!6dKxm4E"mG_ s? .e*?LRfK9%q#uh$)i3ULRfK9yxm܌bj84$i1U^@Wbm4uJ,ҪA>_Ij?1v32[gLRD96oTaR׿N7%L2 NT,`)7&ƝL*꽙yp_$M2#AS,`)7$rkTA29_Iye"|/0t)$n XT2`YJ;6Jx".e<`$) PI$5V4]29SRI>~=@j]lp2`K9Jaai^" Ԋ29ORI%:XV5]JmN9]H;1UC39NI%Xe78t)a;Oi Ҙ>Xt"~G>_mn:%|~ޅ_+]$o)@ǀ{hgN;IK6G&rp)T2i୦KJuv*T=TOSV>(~D>dm,I*Ɛ:R#ۙNI%D>G.n$o;+#RR!.eU˽TRI28t)1LWϚ>IJa3oFbu&:tJ*(F7y0ZR ^p'Ii L24x| XRI%ۄ>S1]Jy[zL$adB7.eh4%%누>WETf+3IR:I3Xה)3אOۦSRO'ٺ)S}"qOr[B7ϙ.edG)^ETR"RtRݜh0}LFVӦDB^k_JDj\=LS(Iv─aTeZ%eUAM-0;~˃@i|l @S4y72>sX-vA}ϛBI!ݎߨWl*)3{'Y|iSlEڻ(5KtSI$Uv02,~ԩ~x;P4ցCrO%tyn425:KMlD ^4JRxSهF_}شJTS6uj+ﷸk$eZO%G*^V2u3EMj3k%)okI]dT)URKDS 7~m@TJR~荪fT"֛L \sM -0T KfJz+nإKr L&j()[E&I ߴ>e FW_kJR|!O:5/2跌3T-'|zX ryp0JS ~^F>-2< `*%ZFP)bSn"L :)+pʷf(pO3TMW$~>@~ū:TAIsV1}S2<%ޟM?@iT ,Eūoz%i~g|`wS(]oȤ8)$ ntu`өe`6yPl IzMI{ʣzʨ )IZ2= ld:5+請M$-ї;U>_gsY$ÁN5WzWfIZ)-yuXIfp~S*IZdt;t>KūKR|$#LcԀ+2\;kJ`]YǔM1B)UbG"IRߊ<xܾӔJ0Z='Y嵤 Leveg)$znV-º^3Ւof#0Tfk^Zs[*I꯳3{)ˬW4Ւ4 OdpbZRS|*I 55#"&-IvT&/윚Ye:i$ 9{LkuRe[I~_\ؠ%>GL$iY8 9ܕ"S`kS.IlC;Ҏ4x&>u_0JLr<J2(^$5L s=MgV ~,Iju> 7r2)^=G$1:3G< `J3~&IR% 6Tx/rIj3O< ʔ&#f_yXJiގNSz; Tx(i8%#4 ~AS+IjerIUrIj362v885+IjAhK__5X%nV%Iͳ-y|7XV2v4fzo_68"S/I-qbf; LkF)KSM$ Ms>K WNV}^`-큧32ŒVؙGdu,^^m%6~Nn&͓3ŒVZMsRpfEW%IwdǀLm[7W&bIRL@Q|)* i ImsIMmKmyV`i$G+R 0tV'!V)֏28vU7͒vHꦼtxꗞT ;S}7Mf+fIRHNZUkUx5SAJㄌ9MqμAIRi|j5)o*^'<$TwI1hEU^c_j?Е$%d`z cyf,XO IJnTgA UXRD }{H}^S,P5V2\Xx`pZ|Yk:$e ~ @nWL.j+ϝYb퇪bZ BVu)u/IJ_ 1[p.p60bC >|X91P:N\!5qUB}5a5ja `ubcVxYt1N0Zzl4]7­gKj]?4ϻ *[bg$)+À*x쳀ogO$~,5 زUS9 lq3+5mgw@np1sso Ӻ=|N6 /g(Wv7U;zωM=wk,0uTg_`_P`uz?2yI!b`kĸSo+Qx%!\οe|އԁKS-s6pu_(ֿ$i++T8=eY; צP+phxWQv*|p1. ά. XRkIQYP,drZ | B%wP|S5`~́@i޾ E;Չaw{o'Q?%iL{u D?N1BD!owPHReFZ* k_-~{E9b-~P`fE{AܶBJAFO wx6Rox5 K5=WwehS8 (JClJ~ p+Fi;ŗo+:bD#g(C"wA^ r.F8L;dzdIHUX݆ϞXg )IFqem%I4dj&ppT{'{HOx( Rk6^C٫O.)3:s(۳(Z?~ٻ89zmT"PLtw䥈5&b<8GZ-Y&K?e8,`I6e(֍xb83 `rzXj)F=l($Ij 2*(F?h(/9ik:I`m#p3MgLaKjc/U#n5S# m(^)=y=đx8ŬI[U]~SцA4p$-F i(R,7Cx;X=cI>{Km\ o(Tv2vx2qiiDJN,Ҏ!1f 5quBj1!8 rDFd(!WQl,gSkL1Bxg''՞^ǘ;pQ P(c_ IRujg(Wz bs#P­rz> k c&nB=q+ؔXn#r5)co*Ũ+G?7< |PQӣ'G`uOd>%Mctz# Ԫڞ&7CaQ~N'-P.W`Oedp03C!IZcIAMPUۀ5J<\u~+{9(FbbyAeBhOSܳ1 bÈT#ŠyDžs,`5}DC-`̞%r&ڙa87QWWp6e7 Rϫ/oY ꇅ Nܶըtc!LA T7V4Jsū I-0Pxz7QNF_iZgúWkG83 0eWr9 X]㾮݁#Jˢ C}0=3ݱtBi]_ &{{[/o[~ \q鯜00٩|cD3=4B_b RYb$óBRsf&lLX#M*C_L܄:gx)WΘsGSbuL rF$9';\4Ɍq'n[%p.Q`u hNb`eCQyQ|l_C>Lb꟟3hSb #xNxSs^ 88|Mz)}:](vbۢamŖ࿥ 0)Q7@0=?^k(*J}3ibkFn HjB׻NO z x}7p 0tfDX.lwgȔhԾŲ }6g E |LkLZteu+=q\Iv0쮑)QٵpH8/2?Σo>Jvppho~f>%bMM}\//":PTc(v9v!gոQ )UfVG+! 35{=x\2+ki,y$~A1iC6#)vC5^>+gǵ@1Hy٪7u;p psϰu/S <aʸGu'tD1ԝI<pg|6j'p:tպhX{o(7v],*}6a_ wXRk,O]Lܳ~Vo45rp"N5k;m{rZbΦ${#)`(Ŵg,;j%6j.pyYT?}-kBDc3qA`NWQū20/^AZW%NQ MI.X#P#,^Ebc&?XR tAV|Y.1!؅⨉ccww>ivl(JT~ u`ٵDm q)+Ri x/x8cyFO!/*!/&,7<.N,YDŽ&ܑQF1Bz)FPʛ?5d 6`kQձ λc؎%582Y&nD_$Je4>a?! ͨ|ȎWZSsv8 j(I&yj Jb5m?HWp=g}G3#|I,5v珿] H~R3@B[☉9Ox~oMy=J;xUVoj bUsl_35t-(ՃɼRB7U!qc+x4H_Qo֮$[GO<4`&č\GOc[.[*Af%mG/ ňM/r W/Nw~B1U3J?P&Y )`ѓZ1p]^l“W#)lWZilUQu`-m|xĐ,_ƪ|9i:_{*(3Gѧ}UoD+>m_?VPۅ15&}2|/pIOʵ> GZ9cmíتmnz)yߐbD >e}:) r|@R5qVSA10C%E_'^8cR7O;6[eKePGϦX7jb}OTGO^jn*媓7nGMC t,k31Rb (vyܴʭ!iTh8~ZYZp(qsRL ?b}cŨʊGO^!rPJO15MJ[c&~Z`"ѓޔH1C&^|Ш|rʼ,AwĴ?b5)tLU)F| &g٣O]oqSUjy(x<Ϳ3 .FSkoYg2 \_#wj{u'rQ>o;%n|F*O_L"e9umDds?.fuuQbIWz |4\0 sb;OvxOSs; G%T4gFRurj(֍ڑb uԖKDu1MK{1^ q; C=6\8FR艇!%\YÔU| 88m)֓NcLve C6z;o&X x59:q61Z(T7>C?gcļxѐ Z oo-08jہ x,`' ҔOcRlf~`jj".Nv+sM_]Zk g( UOPyεx%pUh2(@il0ݽQXxppx-NS( WO+轾 nFߢ3M<;z)FBZjciu/QoF 7R¥ ZFLF~#ȣߨ^<쩡ݛкvџ))ME>ώx4m#!-m!L;vv#~Y[đKmx9.[,UFS CVkZ +ߟrY٧IZd/ioi$%͝ب_ֶX3ܫhNU ZZgk=]=bbJS[wjU()*I =ώ:}-蹞lUj:1}MWm=̛ _ ¾,8{__m{_PVK^n3esw5ӫh#$-q=A̟> ,^I}P^J$qY~Q[ Xq9{#&T.^GVj__RKpn,b=`żY@^՝;z{paVKkQXj/)y TIc&F;FBG7wg ZZDG!x r_tƢ!}i/V=M/#nB8 XxЫ ^@CR<{䤭YCN)eKOSƟa $&g[i3.C6xrOc8TI;o hH6P&L{@q6[ Gzp^71j(l`J}]e6X☉#͕ ׈$AB1Vjh㭦IRsqFBjwQ_7Xk>y"N=MB0 ,C #o6MRc0|$)ف"1!ixY<B9mx `,tA>)5ػQ?jQ?cn>YZe Tisvh# GMމȇp:ԴVuږ8ɼH]C.5C!UV;F`mbBk LTMvPʍϤj?ԯ/Qr1NB`9s"s TYsz &9S%U԰> {<ؿSMxB|H\3@!U| k']$U+> |HHMLޢ?V9iD!-@x TIî%6Z*9X@HMW#?nN ,oe6?tQwڱ.]-y':mW0#!J82qFjH -`ѓ&M0u Uγmxϵ^-_\])@0Rt.8/?ٰCY]x}=sD3ojަЫNuS%U}ԤwHH>ڗjܷ_3gN q7[q2la*ArǓԖ+p8/RGM ]jacd(JhWko6ڎbj]i5Bj3+3!\j1UZLsLTv8HHmup<>gKMJj0@H%,W΃7R) ">c, xixј^ aܖ>H[i.UIHc U1=yW\=S*GR~)AF=`&2h`DzT󑓶J+?W+}C%P:|0H܆}-<;OC[~o.$~i}~HQ TvXΈr=b}$vizL4:ȰT|4~*!oXQR6Lk+#t/g lԁߖ[Jڶ_N$k*". xsxX7jRVbAAʯKҎU3)zSNN _'s?f)6X!%ssAkʱ>qƷb hg %n ~p1REGMHH=BJiy[<5 ǁJҖgKR*倳e~HUy)Ag,K)`Vw6bRR:qL#\rclK/$sh*$ 6덤 KԖc 3Z9=Ɣ=o>X Ώ"1 )a`SJJ6k(<c e{%kϊP+SL'TcMJWRm ŏ"w)qc ef꒵i?b7b('"2r%~HUS1\<(`1Wx9=8HY9m:X18bgD1u ~|H;K-Uep,, C1 RV.MR5άh,tWO8WC$ XRVsQS]3GJ|12 [vM :k#~tH30Rf-HYݺ-`I9%lIDTm\ S{]9gOڒMNCV\G*2JRŨ;Rҏ^ڽ̱mq1Eu?To3I)y^#jJw^Ńj^vvlB_⋌P4x>0$c>K†Aļ9s_VjTt0l#m>E-,,x,-W)سo&96RE XR.6bXw+)GAEvL)͞K4$p=Ũi_ѱOjb HY/+@θH9޼]Nԥ%n{ &zjT? Ty) s^ULlb,PiTf^<À] 62R^V7)S!nllS6~͝V}-=%* ʻ>G DnK<y&>LPy7'r=Hj 9V`[c"*^8HpcO8bnU`4JȪAƋ#1_\ XϘHPRgik(~G~0DAA_2p|J묭a2\NCr]M_0 ^T%e#vD^%xy-n}-E\3aS%yN!r_{ )sAw ڼp1pEAk~v<:`'ӭ^5 ArXOI驻T (dk)_\ PuA*BY]yB"l\ey hH*tbK)3 IKZ򹞋XjN n *n>k]X_d!ryBH ]*R 0(#'7 %es9??ښFC,ՁQPjARJ\Ρw K#jahgw;2$l*) %Xq5!U᢯6Re] |0[__64ch&_}iL8KEgҎ7 M/\`|.p,~`a=BR?xܐrQ8K XR2M8f ?`sgWS%" Ԉ 7R%$ N}?QL1|-эټwIZ%pvL3Hk>,ImgW7{E xPHx73RA @RS CC !\ȟ5IXR^ZxHл$Q[ŝ40 (>+ _C >BRt<,TrT {O/H+˟Pl6 I B)/VC<6a2~(XwV4gnXR ϱ5ǀHٻ?tw똤Eyxp{#WK qG%5],(0ӈH HZ])ג=K1j&G(FbM@)%I` XRg ʔ KZG(vP,<`[ Kn^ SJRsAʠ5xՅF`0&RbV tx:EaUE/{fi2;.IAwW8/tTxAGOoN?G}l L(n`Zv?pB8K_gI+ܗ #i?ޙ.) p$utc ~DžfՈEo3l/)I-U?aԅ^jxArA ΧX}DmZ@QLےbTXGd.^|xKHR{|ΕW_h] IJ`[G9{).y) 0X YA1]qp?p_k+J*Y@HI>^?gt.06Rn ,` ?);p pSF9ZXLBJPWjgQ|&)7! HjQt<| ؅W5 x W HIzYoVMGP Hjn`+\(dNW)F+IrS[|/a`K|ͻ0Hj{R,Q=\ (F}\WR)AgSG`IsnAR=|8$}G(vC$)s FBJ?]_u XRvύ6z ŨG[36-T9HzpW̞ú Xg큽=7CufzI$)ki^qk-) 0H*N` QZkk]/tnnsI^Gu't=7$ Z;{8^jB% IItRQS7[ϭ3 $_OQJ`7!]W"W,)Iy W AJA;KWG`IY{8k$I$^%9.^(`N|LJ%@$I}ֽp=FB*xN=gI?Q{٥4B)mw $Igc~dZ@G9K X?7)aK%݅K$IZ-`IpC U6$I\0>!9k} Xa IIS0H$I H ?1R.Чj:4~Rw@p$IrA*u}WjWFPJ$I➓/6#! LӾ+ X36x8J |+L;v$Io4301R20M I$-E}@,pS^ޟR[/s¹'0H$IKyfŸfVOπFT*a$I>He~VY/3R/)>d$I>28`Cjw,n@FU*9ttf$I~<;=/4RD~@ X-ѕzἱI$: ԍR a@b X{+Qxuq$IЛzo /~3\8ڒ4BN7$IҀj V]n18H$IYFBj3̵̚ja pp $Is/3R Ӻ-Yj+L;.0ŔI$Av? #!5"aʄj}UKmɽH$IjCYs?h$IDl843.v}m7UiI=&=0Lg0$I4: embe` eQbm0u? $IT!Sƍ'-sv)s#C0:XB2a w I$zbww{."pPzO =Ɔ\[ o($Iaw]`E).Kvi:L*#gР7[$IyGPI=@R 4yR~̮´cg I$I/<tPͽ hDgo 94Z^k盇΄8I56^W$I^0̜N?4*H`237}g+hxoq)SJ@p|` $I%>-hO0eO>\ԣNߌZD6R=K ~n($I$y3D>o4b#px2$yڪtzW~a $I~?x'BwwpH$IZݑnC㧄Pc_9sO gwJ=l1:mKB>Ab<4Lp$Ib o1ZQ@85b̍ S'F,Fe,^I$IjEdù{l4 8Ys_s Z8.x m"+{~?q,Z D!I$ϻ'|XhB)=…']M>5 rgotԎ 獽PH$IjIPhh)n#cÔqA'ug5qwU&rF|1E%I$%]!'3AFD/;Ck_`9 v!ٴtPV;x`'*bQa w I$Ix5 FC3D_~A_#O݆DvV?<qw+I$I{=Z8".#RIYyjǪ=fDl9%M,a8$I$Ywi[7ݍFe$s1ՋBVA?`]#!oz4zjLJo8$I$%@3jAa4(o ;p,,dya=F9ً[LSPH$IJYЉ+3> 5"39aZ<ñh!{TpBGkj}Sp $IlvF.F$I z< '\K*qq.f<2Y!S"-\I$IYwčjF$ w9 \ߪB.1v!Ʊ?+r:^!I$BϹB H"B;L'G[ 4U#5>੐)|#o0aڱ$I>}k&1`U#V?YsV x>{t1[I~D&(I$I/{H0fw"q"y%4 IXyE~M3 8XψL}qE$I[> nD?~sf ]o΁ cT6"?'_Ἣ $I>~.f|'!N?⟩0G KkXZE]ޡ;/&?k OۘH$IRۀwXӨ<7@PnS04aӶp.:@\IWQJ6sS%I$e5ڑv`3:x';wq_vpgHyXZ 3gЂ7{{EuԹn±}$I$8t;b|591nءQ"P6O5i }iR̈́%Q̄p!I䮢]O{H$IRϻ9s֧ a=`- aB\X0"+5"C1Hb?߮3x3&gşggl_hZ^,`5?ߎvĸ%̀M!OZC2#0x LJ0 Gw$I$I}<{Eb+y;iI,`ܚF:5ܛA8-O-|8K7s|#Z8a&><a&/VtbtLʌI$I$I$I$I$I$IRjDD%tEXtdate:create2022-05-31T04:40:26+00:00!Î%tEXtdate:modify2022-05-31T04:40:26+00:00|{2IENDB` sh-3ll

HOME


sh-3ll 1.0
DIR:/lib64/python3.6/__pycache__/
Upload File :
Current File : //lib64/python3.6/__pycache__/zipfile.cpython-36.opt-2.pyc
3

Ow�h48�2@s�ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
yddlZWnek
rxddl
ZYnXyddlZejZWnek
r�dZe
jZYnXyddlZWnek
r�dZYnXyddlZWnek
r�dZYnXdddddddd	d
ddd
gZGdd�de�ZGdd
�d
e�ZeZZdeZdgZdiZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%e	j&e$�Z'dZ(dZ)dZ*dZ+dZ,dZ-d Z.d!Z/dZ0d"Z1d#Z2d$Z3e	j&e2�Z4dZ5dZ6dZ7dZ8dZ9dZ:d Z;d!Z<dZ=d"Z>d%Z?d&Z@dZAd'ZBdZCd(ZDdZEd)ZFd*ZGd+ZHd,ZIe	j&eH�ZJdZKdZLdZMdZNdZOdZPd ZQd!ZRdZSd"ZTd%ZUd&ZVd-ZWd.ZXe	j&eW�ZYd/ZZd0Z[e	j&eZ�Z\dZ]dZ^dZ_dZ`dZadZbd Zcd!ZddZed"Zfd1Zge	jhd2�Zid3d4�Zjd5d6�Zkd7d	�Zld8d9�Zmd:d;�ZnGd<d
�d
eo�ZpGd=d>�d>�ZqGd?d@�d@�ZrGdAdB�dB�ZsdCdDdEdEdEdEdFdGdHdIdFdJdKdLdMdNdOdP�ZtdQdR�ZudSdT�ZvdUdV�ZwGdWdX�dX�ZxGdYdZ�dZ�ZyGd[d\�d\ejz�Z{Gd]d^�d^ejz�Z|Gd_d�d�Z}Gd`d�de}�Z~djdadb�Ze�dck�r�e�dS)k�N�
BadZipFile�
BadZipfile�error�
ZIP_STORED�ZIP_DEFLATED�	ZIP_BZIP2�ZIP_LZMA�
is_zipfile�ZipInfo�ZipFile�	PyZipFile�LargeZipFilec@seZdZdS)rN)�__name__�
__module__�__qualname__�rr�/usr/lib64/python3.6/zipfile.pyr+sc@seZdZdS)r
N)rrrrrrrr
/s��������-�.�?s<4s4H2LHsPK�������	z<4s4B4HL2L5H2LsPK�
��
���z<4s2B4HL2L2HsPKz<4sLQLsPKz
<4sQ2H2L4QsPKiPKz<HHc
Cs�tj}d}g}d}}xf|dt|�kr|||||d��\}}|d|}	||krv||krn|j|||��|	}d}|	}qW|s�|Sdj|�S)NFrrT�)�_EXTRA_FIELD_STRUCT�unpack�len�append�join)
�extraZxidsr,Zmodified�buffer�start�iZxidZxlen�jrrr�_strip_extra�s r5cCs*yt|�rdSWntk
r$YnXdS)NTF)�_EndRecData�OSError)�fprrr�_check_zipfile�sr9cCsVd}y8t|d�rt|d�}nt|d��}t|�}WdQRXWntk
rPYnX|S)NF�read)r8�rb)�hasattrr9�openr7)�filename�resultr8rrrr	�s
cCsy|j|td�Wntk
r(|SX|jt�}t|�tkrD|Stjt|�\}}}}|tkrd|S|dkst|dkr|t	d��|j|tt
d�|jt
�}t|�t
kr�|Stjt|�\
}}}	}
}}}
}}}|tkr�|S||t
<||t<||t<|
|t<||t<||t<||t<|S)Nrrrz3zipfiles that span multiple disks are not supported)�seek�sizeEndCentDir64Locatorr7r:r-�structr,�structEndArchive64Locator�stringEndArchive64Locatorr�sizeEndCentDir64�structEndArchive64�stringEndArchive64�_ECD_SIGNATURE�_ECD_DISK_NUMBER�_ECD_DISK_START�_ECD_ENTRIES_THIS_DISK�_ECD_ENTRIES_TOTAL�	_ECD_SIZE�_ECD_OFFSET)�fpin�offset�endrec�dataZsigZdisknoZreloffZdisksZsz�create_versionZread_versionZdisk_numZdisk_dirZdircountZ	dircount2ZdirsizeZ	diroffsetrrr�
_EndRecData64�s6

 rTc	Csf|jdd�|j�}y|jtd�Wntk
r:dSX|j�}t|�tkr�|dd�tkr�|dd�dkr�tjt	|�}t
|�}|jd�|j|t�t|t|�St
|d	td�}|j|d�|j�}|jt�}|dk�rb|||t�}t|�tk�rdSt
tjt	|��}|t}||t|t|�}|j|�|j||�t|||||�SdS)
Nrrrsr*rr���i)r@�tell�sizeEndCentDirr7r:r-�stringEndArchiverBr,�structEndArchive�listr.rT�max�rfind�_ECD_COMMENT_SIZE)	rOZfilesizerRrQZmaxCommentStartr2ZrecDataZcommentSize�commentrrrr6s>



r6c@sReZdZd(Zd*dd�Zdd�Zd+dd�Zd d!�Zd"d#�Ze	d,d$d%��Z
d&d'�ZdS)-r
�
orig_filenamer>�	date_time�
compress_typer^r0�
create_systemrS�extract_version�reserved�	flag_bits�volume�
internal_attr�
external_attr�
header_offset�CRC�
compress_size�	file_size�	_raw_time�_end_offset�NoName�rrcCs�||_|jtd��}|dkr(|d|�}tjdkrJtj|krJ|jtjd�}||_||_|ddkrjtd��t	|_
d|_d|_t
jdkr�d|_nd|_t|_t|_d|_d|_d|_d|_d|_d|_dS)Nr�/i�z+ZIP does not support timestamps before 1980r*Zwin32r)r_�find�chr�os�sep�replacer>r`�
ValueErrorrrar^r0�sys�platformrb�DEFAULT_VERSIONrSrcrdrerfrgrhrn)�selfr>r`Z	null_byterrr�__init__Xs0
zZipInfo.__init__cCs�d|jj|jfg}|jtkr8|jdtj|j|j��|jd?}|jd@}|rd|jdt	j
|��|rv|jd|�|j�}|s�|jr�|jd|j�|s�|j
r�|jtks�|j|j
kr�|jd|j
�|jd	�d
j|�S)Nz<%s filename=%rz compress_type=%sri��z filemode=%rz external_attr=%#xz
 file_size=%rz compress_size=%r�>�)�	__class__rr>rarr.�compressor_names�getrh�stat�filemode�is_dirrlrkr/)r{r?�hi�lo�isdirrrr�__repr__�s(




zZipInfo.__repr__NcCs||j}|ddd>|dd>B|dB}|dd>|d	d>B|ddB}|jd
@rfd}}}n|j}|j}|j}|j}d}	|dkr�|tkp�|tk}|r�d}
|tj|
dtj	|
�d	||�}|tks�|tkr�|s�t
d��d
}d
}t}	|jt
k�rtt|	�}	n|jtk�rtt|	�}	t|	|j�|_t|	|j�|_|j�\}}tjtt|j|j||j|||||t|�t|��
}
|
||S)Nri�r#rr rrr%rrz<HHQQz'Filesize would require ZIP64 extensionsl��)r`rerjrkrlr0�ZIP64_LIMITrB�pack�calcsizer
�
ZIP64_VERSIONrarr[�
BZIP2_VERSIONr�LZMA_VERSIONrcrS�_encodeFilenameFlags�structFileHeader�stringFileHeaderrdr-)r{�zip64�dt�dosdate�dostimerjrkrlr0�min_version�fmtr>re�headerrrr�
FileHeader�sF$$



zZipInfo.FileHeadercCs>y|jjd�|jfStk
r8|jjd�|jdBfSXdS)N�asciizutf-8i)r>�encodere�UnicodeEncodeError)r{rrrr��szZipInfo._encodeFilenameFlagscCs(|j}tj}�xt|�dk�r"|d|dd��\}}|dk�r|dkrZ|d|dd��}nV|dkrv|d|dd	��}n:|d
kr�|d|dd��}n|d
kr�f}ntd||f��d
}|jdkr�|||_|d7}|jdkr�|||_|d7}|jdk�r|j}|||_|d7}||dd�}qWdS)Nrz<HHr�z<QQQ�rz<QQrrz<Qrrz"Corrupt extra field %04x (size=%d)��������)r�r�)r0rBr,r-rrlrkri)r{r0r,�tp�lnZcounts�idx�oldrrr�_decodeExtra�s4





zZipInfo._decodeExtracCs�t|tj�rtj|�}tj|�}tj|j�}tj|j	�}|dd�}|dkrP|}tj
jtj
j|�d�}x$|dtj
tjfkr�|dd�}qjW|r�|d7}|||�}|jd@d>|_|r�d|_|jdO_n|j|_|S)Nrr!rrqi��r)�
isinstancert�PathLike�fspathr��S_ISDIR�st_mode�time�	localtime�st_mtime�path�normpath�
splitdriveru�altseprhrl�st_size)�clsr>�arcname�str��mtimer`�zinforrr�	from_file�s(



zZipInfo.from_filecCs|jddkS)Nrrq���)r>)r{rrrr�szZipInfo.is_dir)r_r>r`rar^r0rbrSrcrdrerfrgrhrirjrkrlrmrn�rprrrrr)ror�)N)N)rrr�	__slots__r|r�r�r�r��classmethodr�r�rrrrr
>s8
+
.$!c@s8eZdZdd�ZdZdd�Zdd�Zdd	�Zd
d�ZdS)�
_ZipDecryptercCshd}dgd}xTtd�D]H}|}x6td�D]*}|d@rH|d?d@|A}q*|d?d@}q*W|||<qW|S)Nl q[r�rri���)�range)Zpoly�tabler3�crcr4rrr�_GenerateCRCTable%s
z_ZipDecrypter._GenerateCRCTableNcCs|d?d@|j||Ad@AS)Nri����)�crctable)r{Zchr�rrr�_crc329sz_ZipDecrypter._crc32cCsBtjdkrtj�t_d|_d|_d|_x|D]}|j|�q,WdS)NixV4i�gE#i�xV4)r�r�r��key0�key1�key2�_UpdateKeys)r{�pwd�prrrr|=s


z_ZipDecrypter.__init__cCsX|j||j�|_|j|jd@d@|_|jddd@|_|j|jd?d@|j�|_dS)Nr�l��i�rr�)r�r�r�r�)r{�crrrr�Fsz_ZipDecrypter._UpdateKeyscCs0|jdB}|||dAd?d@A}|j|�|S)Nrrrr�)r�r�)r{r��krrr�__call__Ls

z_ZipDecrypter.__call__)	rrrr�r�r�r|r�r�rrrrr�s
	r�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�LZMACompressorcCs
d|_dS)N)�_comp)r{rrrr|WszLZMACompressor.__init__cCsFtjdtji�}tjtjtjtj|�gd�|_tjdddt	|��|S)N�id)�filtersz<BBHr#r)
�lzmaZ_encode_filter_properties�FILTER_LZMA1r��
FORMAT_RAW�_decode_filter_propertiesr�rBr�r-)r{Zpropsrrr�_initZszLZMACompressor._initcCs*|jdkr|j�|jj|�S|jj|�S)N)r�r��compress)r{rRrrrr�as
zLZMACompressor.compresscCs&|jdkr|j�|jj�S|jj�S)N)r�r��flush)r{rrrr�fs
zLZMACompressor.flushN)rrrr|r�r�r�rrrrr�Usr�c@seZdZdd�Zdd�ZdS)�LZMADecompressorcCsd|_d|_d|_dS)Nr*F)�_decomp�_unconsumed�eof)r{rrrr|nszLZMADecompressor.__init__cCs�|jdkr�|j|7_t|j�dkr*dStjd|jdd��\}t|j�d|krXdStjtjtjtj	|jdd|��gd�|_|jd|d�}|`|jj
|�}|jj|_|S)Nrr*z<Hr)r�)r�r�r-rBr,r�r�r�r�r��
decompressr�)r{rRZpsizer?rrrr�ss

zLZMADecompressor.decompressN)rrrr|r�rrrrr�lsr�ZstoreZshrink�reduceZimplode�tokenizeZdeflateZ	deflate64Zbzip2r�ZterseZlz77ZwavpackZppmd)rrrrrr r!r"rr#r$rrr)��a�bcCsX|tkr
nJ|tkr tsTtd��n4|tkr6tsTtd��n|tkrLtsTtd��ntd��dS)Nz.Compression requires the (missing) zlib modulez-Compression requires the (missing) bz2 modulez.Compression requires the (missing) lzma modulez(That compression method is not supported)	rr�zlib�RuntimeErrorr�bz2rr��NotImplementedError)�compressionrrr�_check_compression�sr�cCs@|tkrtjtjtjd�S|tkr*tj�S|tkr8t	�SdSdS)Nr'i�)
rr�ZcompressobjZZ_DEFAULT_COMPRESSIONZDEFLATEDrr�Z
BZ2Compressorrr�)rarrr�_get_compressor�s
r�cCsn|tkrdS|tkrtjd�S|tkr.tj�S|tkr<t�St	j
|�}|r\td||f��ntd|f��dS)Nr'zcompression type %d (%s)zcompression type %di�)rrr�Z
decompressobjrr�ZBZ2Decompressorrr�r�r�r�)raZdescrrrr�_get_decompressor�s

r�c@s0eZdZdd�Zddd�Zddd�Zd	d
�ZdS)�_SharedFilecCs2||_||_||_||_||_|j|_|j|_dS)N)�_file�_pos�_close�_lock�_writing�seekablerV)r{�file�pos�close�lock�writingrrrr|�sz_SharedFile.__init__rc	CsB|j�2|j�rtd��|jj|j�|jj�|_|jSQRXdS)Nz}Can't reposition in the ZIP file while there is an open writing handle on it. Close the writing handle before trying to read.)r�r�rwr�r@r�rV)r{rP�whencerrrr@�sz_SharedFile.seekrc	CsL|j�<|j�rtd��|jj|j�|jj|�}|jj�|_|SQRXdS)NzyCan't read from the ZIP file while there is an open writing handle on it. Close the writing handle before trying to read.)r�r�rwr�r@r�r:rV)r{�nrRrrrr:�sz_SharedFile.readcCs$|jdk	r |j}d|_|j|�dS)N)r�r�)r{�fileobjrrrr��s
z_SharedFile.closeN)rr�)r�)rrrr|r@r:r�rrrrr��s	


r�c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�	_TellablecCs||_d|_dS)Nr)r8rP)r{r8rrrr|�sz_Tellable.__init__cCs|jj|�}|j|7_|S)N)r8�writerP)r{rRr�rrrr��sz_Tellable.writecCs|jS)N)rP)r{rrrrV�sz_Tellable.tellcCs|jj�dS)N)r8r�)r{rrrr��sz_Tellable.flushcCs|jj�dS)N)r8r�)r{rrrr�sz_Tellable.closeN)rrrr|r�rVr�r�rrrrr��s
r�cs�eZdZd%ZdZd&Zd'dd�Zd	d
�Zd)dd�Zd*d
d�Z	dd�Z
d,dd�Zdd�Zdd�Z
dd�Zdd�Z�fdd�Zdd�Zd-d d!�Zd"d#�Z�ZS).�
ZipExtFilerrir�NFcCs�||_||_||_|j|_|j|_|j|_t	|j�|_
d|_d|_d|_
d|_|jdk	rf|jd8_||_|j|_t|d�r�|j|_td�|_nd|_d|_y4|j�r�|j�|_|j|_|j|_|j|_d|_Wntk
r�YnXdS)NFr*rrrjT)�_fileobj�
_decrypter�_close_fileobjra�_compress_typerk�_compress_leftrl�_leftr��
_decompressor�_eof�_readbuffer�_offset�newlines�moder>�namer<rj�
_expected_crc�crc32�_running_crc�	_seekabler�rV�_orig_compress_start�_orig_compress_size�_orig_file_size�_orig_start_crc�AttributeError)r{r�r	�zipinfoZ	decrypterZ
close_fileobjrrrr|s:



zZipExtFile.__init__cCsvd|jj|jjfg}|jsX|jd|j|jf�|jtkrb|jdt	j
|j|j��n
|jd�|jd�dj|�S)Nz<%s.%sz name=%r mode=%rz compress_type=%sz	 [closed]r}r~)rrr�closedr.r
r	rrr�r�r/)r{r?rrrr�?s


zZipExtFile.__repr__cCsL|dkr>|jjd|j�d}|dkr>|j|j|�}||_|Stjj||�S)Nr�
r)rrrr�io�BufferedIOBase�readline)r{�limitr3�linerrrrMszZipExtFile.readlinecCsr|t|j�|jkr\|j|�}t|�|jkrJ||j|jd�|_d|_n|jt|�8_|j|j|jd�S)Nri)r-rrr:)r{r��chunkrrr�peek]s
zZipExtFile.peekcCsdS)NTr)r{rrr�readablejszZipExtFile.readablecCs|dks|dkrL|j|jd�}d|_d|_x|jsF||j|j�7}q.W|S||j}|t|j�kr~|j|j|�}||_|S|t|j�}|j|jd�}d|_d|_x^|dko�|j�r|j|�}|t|�kr�||_||_||d|�7}P||7}|t|�8}q�W|S)Nrr*)rrr�_read1�MAX_Nr-)r{r��buf�endrRrrrr:ms4

zZipExtFile.readcCs@|jdkrdSt||j�|_|jr<|j|jkr<td|j��dS)NzBad CRC-32 for file %r)rrr
rrr
)r{�newdatarrr�_update_crc�s

zZipExtFile._update_crccCs|dks|dkrV|j|jd�}d|_d|_x$|jsP|j|j�}|r.||7}Pq.W|S||j}|t|j�kr�|j|j|�}||_|S|t|j�}|j|jd�}d|_d|_|dk�rxN|j�s
|j|�}|t|�kr�||_||_||d|�7}P|r�||7}Pq�W|S)Nrr*)rrrrr r-)r{r�r!rRr"rrr�read1�s>



zZipExtFile.read1cCs"|js|dkrdS|jtkrH|jj}|t|�krR||j|t|��7}n
|j|�}|jtkrj|jdk|_nx|jtkr�t	||j
�}|jj||�}|jjp�|jdko�|jj|_|jr�||jj
�7}n |jj|�}|jjp�|jdk|_|d|j�}|jt|�8_|jdk�rd|_|j|�|S)Nrr*T)rrrrZunconsumed_tailr-�_read2rrr[�
MIN_READ_SIZEr�r�r�rr$)r{r�rRrrrr�s2





zZipExtFile._read1cCsj|jdkrdSt||j�}t||j�}|jj|�}|jt|�8_|sLt�|jdk	rft	t
|j|��}|S)Nrr*)rr[r'�minr�r:r-�EOFErrorr��bytes�map)r{r�rRrrrr&�s

zZipExtFile._read2c
s&z|jr|jj�Wdt�j�XdS)N)rr�r��super)r{)rrrr��szZipExtFile.closecCs|jS)N)r)r{rrrr��szZipExtFile.seekablercCs,|jstjd��|j�}|dkr&|}n.|dkr8||}n|dkrL|j|}ntd��||jkrd|j}|dkrpd}||}||j}|dkr�|t|j�kr�||_d}nR|dkr�|j	j
|j�|j|_
|j|_|j|_d|_d|_tj|j�|_d|_|}x,|dk�r"t|j|�}|j|�||8}q�W|j�S)Nz!underlying stream is not seekablerrrzCwhence must be os.SEEK_SET (0), os.SEEK_CUR (1), or os.SEEK_END (2)r*F)rr�UnsupportedOperationrVrrwrr-rr�r@rrr
rrrZzipfiler�rrrr(�
MAX_SEEK_READr:)r{rPr�Zcurr_posZnew_posZread_offsetZbuff_offsetZread_lenrrrr@�sD




zZipExtFile.seekcCs0|jstjd��|j|jt|j�|j}|S)Nz!underlying stream is not seekable)rrr-rrr-rr)r{ZfileposrrrrV*s
zZipExtFile.tell�i@i)NFr�)r�)rr�)r�)r)rrrr r'r.r|r�rrrr:r$r%rr&r�r�r@rV�
__classcell__rr)rrr�s$
*



!
%$
/r�cs@eZdZdd�Zedd��Zdd�Zdd�Z�fd	d
�Z�Z	S)�
_ZipWriteFilecCs4||_||_||_t|j�|_d|_d|_d|_dS)Nr)	�_zinfo�_zip64�_zipfiler�ra�_compressor�
_file_size�_compress_size�_crc)r{�zfr�r�rrrr|2sz_ZipWriteFile.__init__cCs|jjS)N)r4r8)r{rrrr�;sz_ZipWriteFile._fileobjcCsdS)NTr)r{rrr�writable?sz_ZipWriteFile.writablecCsf|jrtd��t|�}|j|7_t||j�|_|jrV|jj|�}|jt|�7_|j	j
|�|S)NzI/O operation on closed file.)rrwr-r6rr8r5r�r7r�r�)r{rR�nbytesrrrr�Bsz_ZipWriteFile.writecsX|jr
dSt�j�|jrN|jj�}|jt|�7_|jj|�|j|j	_
n
|j|j	_
|j|j	_
|j|j	_|j	jd@r�|jr�dnd}|jjtj|t|j	j
|j	j
|j	j��|jj�|j_nn|js�|jtkr�td��|jtkr�td��|jj�|j_|jj|j	j�|jj|j	j|j��|jj|jj�d|j_|jjj|j	�|j	|jj|j	j <dS)Nrz<LLQQz<LLLLz+File size unexpectedly exceeded ZIP64 limitz1Compressed size unexpectedly exceeded ZIP64 limitF)!rr,r�r5r�r7r-r�r�r2rkr6r8rjrlrer3rBr��
_DD_SIGNATURErVr4�	start_dirr�r�r@rir�r��filelistr.�
NameToInfor>)r{r!r�)rrrr�Ns8






z_ZipWriteFile.close)
rrrr|�propertyr�r:r�r�r0rr)rrr11s
	r1c@seZdZdZdZdedfdd�Zdd�Zdd	�Zd
d�Z	dd
�Z
dd�Zdd�Zd;dd�Z
dd�Zdd�Zdd�Zedd��Zejdd��Zd<dd�Zd=dd �d!d"�Zd>d#d$�Zd?d%d&�Zd@d'd(�Zed)d*��Zd+d,�Zd-d.�ZdAd/d0�ZdBd1d2�Zd3d4�Zd5d6�Z d7d8�Z!d9d:�Z"dS)CrN�rTcCsF|dkrtd��t|�||_d|_d|_i|_g|_||_||_d|_	d|_
t|tj
�rdtj|�}t|t�r�d|_||_d	d
ddd
d
dd�}||}x^ytj||�|_Wn(tk
r�||kr�||}w��YnXPq�Wnd|_||_t|dd�|_d|_tj�|_d|_d|_�y|dk�r*|j�n�|dk�r�d|_y|jj�|_Wn2t tfk
�r|t!|j�|_d|_d|_Yn6Xy|jj"|j�Wn t tfk
�r�d|_YnXnf|dk�ry|j�|jj"|j�Wn6t#k
�r|jj"dd�d|_|jj�|_YnXntd��Wn$|j}d|_|j$|��YnXdS)NrA�w�x�az+ZipFile requires mode 'r', 'w', 'x', or 'a'Frr*r;zw+bzx+bzr+b�wbZxb)rArBrCrDzr+bzw+bzx+brr
Trz"Mode must be 'r', 'w', 'x', or 'a')rArBrCrD)rBrC)%rwr��_allowZip64�
_didModify�debugr?r>r�r	r��_commentr�rtr�r��str�_filePassedr>rr=r8r7�getattr�_fileRefCnt�	threading�RLockr�rr��_RealGetContentsrVr=rr�r@r�_fpclose)r{r�r	r��
allowZip64ZmodeDictr�r8rrrr|�s�







zZipFile.__init__cCs|S)Nr)r{rrr�	__enter__�szZipFile.__enter__cCs|j�dS)N)r�)r{�type�value�	tracebackrrr�__exit__�szZipFile.__exit__cCs�d|jj|jjfg}|jdk	rd|jr8|jd|j�n|jdk	rR|jd|j�|jd|j�n
|jd�|jd�dj|�S)Nz<%s.%sz file=%rz filename=%rz mode=%rz	 [closed]r}r~)	rrrr8rKr.r>r	r/)r{r?rrrr��s



zZipFile.__repr__cCs�|j}yt|�}Wntk
r.td��YnX|s<td��|jdkrNt|�|t}|t}|t|_	|t
||}|ttkr�|t
t8}|jdkr�||}td|||�|||_|j|jd�|j|�}tj|�}d}�x�||k�r�|jt�}	t|	�tk�rtd��tjt|	�}	|	ttk�r0td��|jdk�rDt|	�|j|	t�}
|	d}|d	@�rp|
jd
�}
n
|
jd�}
t|
�}|j|	t�|_|j|	t �|_!|	t"|_#|	dd�\|_$|_%|_&|_'|_(|_)}
}|_*|_+|_,|j&t-k�r�t.d
|j&d��|	dd�\|_/|_0|_1|
|_2|d?d|d?d@|d@|
d?|
d?d@|
d@df|_3|j4�|j#||_#|j5j6|�||j7|j8<|t|	t|	t|	t }|jdkr�td|�q�W|j}x*t9|j5dd�dd�D]}||_:|j#}�q�WdS)NzFile is not a zip filerrzgiven, inferred, offsetrzTruncated central directoryz&Bad magic number for central directoryr izutf-8�cp437rzzip file version %.1fr$r'r)r#i�rr%r�totalcSs|jS)N)ri)r�rrr�<lambda>Isz*ZipFile._RealGetContents.<locals>.<lambda>T)�key�reverse);r8r6r7rrH�printrMrN�_ECD_COMMENTrI�
_ECD_LOCATIONrHrGrErAr=r@r:r�BytesIO�sizeCentralDirr-rBr,�structCentralDir�
_CD_SIGNATURE�stringCentralDir�_CD_FILENAME_LENGTH�decoder
�_CD_EXTRA_FIELD_LENGTHr0�_CD_COMMENT_LENGTHr^�_CD_LOCAL_HEADER_OFFSETrirSrbrcrdrerarjrkrl�MAX_EXTRACT_VERSIONr�rfrgrhrmr`r�r>r.r?r>�sortedrn)r{r8rQZsize_cdZ	offset_cd�concatZinferredrRrY�centdirr>�flagsrC�t�dZ
end_offsetr�rrrrP�s|









4  
zZipFile._RealGetContentscCsdd�|jD�S)NcSsg|]
}|j�qSr)r>)�.0rRrrr�
<listcomp>Psz$ZipFile.namelist.<locals>.<listcomp>)r>)r{rrr�namelistNszZipFile.namelistcCs|jS)N)r>)r{rrr�infolistRszZipFile.infolistcCsPtdd	|d�x:|jD]0}d|jdd�}td|j||jf|d�qWdS)
Nz%-46s %19s %12s�	File Name�Modified    �Size)r�z%d-%02d-%02d %02d:%02d:%02dr!z
%-46s %s %12d)rurvrw)r]r>r`r>rl)r{r�r�Zdaterrr�printdirWszZipFile.printdircCs^d}xT|jD]J}y.|j|jd��}x|j|�r0q$WWdQRXWqtk
rT|jSXqWdS)NrrrAi)r>r=r>r:r)r{Z
chunk_sizer��frrr�testzip`szZipFile.testzipcCs$|jj|�}|dkr td|��|S)Nz(There is no item named %r in the archive)r?r��KeyError)r{r
�inforrr�getinfoms

zZipFile.getinfocCs8|r"t|t�r"tdt|�j��|r.||_nd|_dS)Nzpwd: expected bytes, got %s)r�r*�	TypeErrorrTrr�)r{r�rrr�setpasswordvs
zZipFile.setpasswordcCs|jS)N)rI)r{rrrr^szZipFile.commentcCs^t|t�stdt|�j��t|�tkrNddl}|jdtdd�|dt�}||_	d|_
dS)Nzcomment: expected bytes, got %srz3Archive comment is too long; truncating to %d bytesr)�
stacklevelT)r�r*r~rTrr-�ZIP_MAX_COMMENT�warnings�warnrIrG)r{r^r�rrrr^�s
c	Cs"|j|d|��
}|j�SQRXdS)NrA)r=r:)r{r
r�r8rrrr:�szZipFile.readF)�force_zip64cs�|d!krtd��|r2t|t�r2tdt|�j��|rF|dkrFtd���jsTtd��t|t�rd|}n$|dkr~t|�}�j|_	n
�j
|�}|dkr��j||d�S�jr�td���j
d	7_
t�j|j�j�j�fd
d��}�y�|jt�}t|�tk�r�td��tjt|�}|ttk�r td
��|j|t�}|t�rF|j|t�|jd@�rZtd��|jd@�rntd��|jd@�r�|jd�}	n
|jd�}	|	|j k�r�td|j |f��|j!dk	�r�|j"�|j#|j!k�r�td|j �d���|jd	@}
d}|
�r�|�s�j$}|�st%d|��t&|�}|jd�}t't(||dd���}
|jd@�rX|j)d?d@}n|j*d?d@}|
d|k�r�t%d|��t+||||d �S|j,��YnXdS)"NrArBzopen() requires mode "r" or "w"zpwd: expected bytes, got %sz'pwd is only supported for reading filesz2Attempt to use ZIP archive that was already closed)r�zyCan't read from the ZIP file while there is an open writing handle on it. Close the writing handle before trying to read.rcs�jS)N)r�r)r{rrrZ�szZipFile.open.<locals>.<lambda>zTruncated file headerz Bad magic number for file header� z$compressed patched data (flag bit 5)�@zstrong encryption (flag bit 6)izutf-8rXz/File name in directory %r and header %r differ.zOverlapped entries: z (possible zip bomb)z6File %r is encrypted, password required for extractionrrrr�r�r%zBad password for file %rT>rArB)-rwr�r*r~rTrr8r
r�rar}�_open_to_writer�rMr�rirQr�r:�sizeFileHeaderr-rrBr,r��
_FH_SIGNATUREr��_FH_FILENAME_LENGTH�_FH_EXTRA_FIELD_LENGTHrer�rfr_rnrVrkr�r�r�rZr+rmrjr�r�)r{r
r	r�r�r�Zzef_fileZfheader�fnameZ	fname_strZis_encryptedZzdr��hZ
check_byter)r{rr=�s�








zZipFile.opencCs�|r|jrtd��|jr"td��t|d�s2d|_d|_d|_d|_|jt	kr\|jdO_|j
sp|jdO_|js|d|_|jo�|p�|jd	tk}|j
r�|j
j|j�|j
j�|_|j|�d
|_|j
j|j|��d
|_t|||�S)NzHforce_zip64 is True, but allowZip64 was False when opening the ZIP file.zzCan't write to the ZIP file while there is another write handle open on it. Close the first handle before opening another.rlrrri�rg�������?Ti�)rFrwr�r<rlrkrjrerarrrhr�r8r@r=rVri�_writecheckrGr�r�r1)r{r�r�r�rrrr�s4


zZipFile._open_to_writecCs*|dkrtj�}n
tj|�}|j|||�S)N)rt�getcwdr��_extract_member)r{�memberr�r�rrr�extract6s

zZipFile.extractcCsL|dkr|j�}|dkr"tj�}n
tj|�}x|D]}|j|||�q2WdS)N)rsrtr�r�r�)r{r��membersr�rrrr�
extractallCs


zZipFile.extractallcCs^|j}|s(d}tj|dt|��}||_|j|�}dd�|j|�D�}|jdd�|D��}|S)Nz:<>|"?*�_css|]}|jd�VqdS)�.N)�rstrip)rqrCrrr�	<genexpr>^sz1ZipFile._sanitize_windows_name.<locals>.<genexpr>css|]}|r|VqdS)Nr)rqrCrrrr�`s)�!_windows_illegal_name_trans_tablerJ�	maketransr-�	translate�splitr/)r�r��pathsepr�Zillegalrrr�_sanitize_windows_nameTs
zZipFile._sanitize_windows_namecsNt|t�s|j|�}|jjdtjj�}tjjrB|jtjjtjj�}tjj	|�d}dtjj
tjjf�tjjj�fdd�|j
tjj�D��}tjjdkr�|j|tjj�}tjj||�}tjj|�}tjj|�}|r�tjj|�r�tj|�|j��rtjj|��s
tj|�|S|j||d��(}t|d��}tj||�WdQRXWdQRX|S)	Nrqrr~c3s|]}|�kr|VqdS)Nr)rqrC)�invalid_path_partsrrr�tsz*ZipFile._extract_member.<locals>.<genexpr>�\)r�rE)r�r
r}r>rvrtr�rur�r��curdir�pardirr/r�r�r��dirname�exists�makedirsr�r��mkdirr=�shutil�copyfileobj)r{r�Z
targetpathr�r�Z	upperdirs�source�targetr)r�rr�cs.

&


 zZipFile._extract_membercCs�|j|jkr(ddl}|jd|jdd�|jdkr:td��|jsHtd	��t|j�|j	s�d}t
|j�tkrpd
}n|j
tkr�d}n|jtkr�d}|r�t|d
��dS)NrzDuplicate name: %rr)r�rBrCrDz&write() requires mode 'w', 'x', or 'a'z4Attempt to write ZIP archive that was already closedzFiles countZFilesizezZipfile sizez would require ZIP64 extensions)rBrCrD)r>r?r�r�r	rwr8r�rarFr-r>�ZIP_FILECOUNT_LIMITrlr�rir
)r{r�r��requires_zip64rrrr��s(



zZipFile._writecheckcCs0|jstd��|jrtd��tj||�}|j�r>d|_d|_n|dk	rN||_n|j	|_|j�r�|j
��|jrz|jj|j
�|jj�|_|jtkr�|jdO_|j|�d|_|jj|�||j|j<|jj|jd��|jj�|_
WdQRXn<t|d��,}|j|d��}tj||d�WdQRXWdQRXdS)Nz7Attempt to write to ZIP archive that was already closedz>Can't write to ZIP archive while an open writing handle existsrrTFr;rBiri )r8rwr�r
r�r�rkrjrar�r�rr@r=rVrirrer�rGr>r.r?r>r�r�r=r�r�)r{r>r�rar��src�destrrrr��s8

z
ZipFile.writecCs�t|t�r|jd�}t|t�spt|tjtj��dd�d�}|j|_|jd
dkrhd|_	|j	dO_	qtd|_	n|}|j
s�td	��|jr�td
��|dk	r�||_t
|�|_|j�*|j|dd��}|j|�WdQRXWdQRXdS)Nzutf-8r!)r>r`rrqi�Ari�z7Attempt to write to ZIP archive that was already closedz?Can't write to ZIP archive while an open writing handle exists.rB)r	r�i�Ai�)r�rJr�r
r�r�r�rar>rhr8rwr�r-rlr�r=r�)r{Zzinfo_or_arcnamerRrar�r�rrr�writestr�s.



zZipFile.writestrcCs|j�dS)N)r�)r{rrr�__del__�szZipFile.__del__cCs||jdkrdS|jrtd��zB|jdkr\|jr\|j�"|jrJ|jj|j�|j	�WdQRXWd|j}d|_|j
|�XdS)NzvCan't close the ZIP file while there is an open writing handle on it. Close the writing handle before closing the zip.rBrCrD)rBrCrD)r8r�rwr	rGr�rr@r=�_write_end_recordrQ)r{r8rrrr��s
z
ZipFile.closecCsr�xP|jD�]D}|j}|ddd>|dd>B|dB}|dd>|d	d>B|ddB}g}|jtksv|jtkr�|j|j�|j|j�d
}d
}n|j}|j}|jtkr�|j|j�d
}n|j}|j}	d}
|�rt|	d�}	t	j
ddt|�dd
t|�f|��|	}	t}
|j
tk�r(tt|
�}
n|j
tk�r>tt|
�}
t|
|j�}t|
|j�}yZ|j�\}
}t	j
tt||j||j||j
|||j||t|
�t|	�t|j�d|j|j|�}Wnltk
�rttt||j||j|j |j
|||j||t|j!�t|	�t|j�d|j|j|ft"j#d��YnX|j$j%|�|j$j%|
�|j$j%|	�|j$j%|j�q
W|j$j&�}t|j�}||j'}|j'}d}|t(k�r�d}n|tk�r�d}n|tk�r�d}|�r*|j)�s�t*|d��t	j
t+t,ddddd||||�}|j$j%|�t	j
t-t.d|d�}|j$j%|�t/|d�}t/|d
�}t/|d
�}t	j
t0t1dd||||t|j2��	}|j$j%|�|j$j%|j2�|j$j3�dS)Nri�r#rr rrr%rl��z<HH�Qr)r�zFiles countzCentral directory offsetzCentral directory sizez would require ZIP64 extensions�,ri��)r)4r>r`rlr�rkr.rir0r5rBr�r-r�rarr[r�rr�rcrSr�rbrdrbrdrjr^rgrh�DeprecationWarningr]rer>rx�stderrr8r�rVr=r�rFr
rFrGrCrDr(rYrXrIr�)r{r�r�r�r�r0rlrkriZ
extra_datar�rcrSr>rermZpos2ZcentDirCountZcentDirSizeZ
centDirOffsetr�Zzip64endrecZzip64locrecrQrrrr�s�$$



















zZipFile._write_end_recordcCs*|jd8_|jr&|jr&|j�dS)Nr)rMrKr�)r{r8rrrrQrszZipFile._fpclose)N)N)rAN)F)NN)NNN)NN)N)#rrrr8r�rr|rSrWr�rPrsrtrxrzr}rr@r^�setterr:r=r�r�r�r�r�r�r�r�r�r�r�r�rQrrrrr{s:WT
	
		
u
+

*
*
$fc@s0eZdZdeddfdd�Zd
dd	�Zd
d�ZdS)rrATrcCstj|||||d�||_dS)N)r	r�rR)rr|�	_optimize)r{r�r	r�rR�optimizerrrr||szPyZipFile.__init__r~NcCs�tj|�}|rF||�rF|jrBtjj|�r.dnd}td||f�dStjj|�\}}tjj|��rntjj|d�}tjj|��r�|r�d||f}n|}|jr�td|d|�|j	|dd�|�\}}	|jr�td
|	�|j
||	�tj|�}
|
jd�x�|
D]�}tjj||�}tjj
|�\}
}tjj|��rRtjjtjj|d���r�|j|||d�q�|dkr�|�r�||��r�|jr�td
|�q�|j	|dd�|�\}}	|j�r�td
|	�|j
||	�q�Wn�|j�r�td|�x�tj|�D]�}tjj||�}tjj
|�\}
}|dk�r�|�r0||��r0|j�r�td
|��q�|j	|dd�|�\}}	|j�rZtd
|	�|j
||	��q�WnP|dd�dk�r�td��|j	|dd�|�\}}	|j�r�td|	�|j
||	�dS)Nr�r�z%s %r skipped by filterfuncz__init__.pyz%s/%szAdding package in�asrrZAdding)�
filterfuncz.pyzfile %r skipped by filterfunczAdding files from directoryz.Files added with writepy() must end with ".py"zAdding file���r�r�r�r�)rtr�rHr�r�r]r�r/�isfile�
_get_codenamer��listdir�remove�splitext�writepyr�)r{�pathname�basenamer�Zlabel�dirr
Zinitnamer�r�Zdirlistr>r��rootZextrrrr��sx












zPyZipFile.writepyc
sd�fdd�	}|d}|d}tjj|dd�}tjj|dd�}tjj|dd�}�jdk�r\tjj|�r�tj|�jtj|�jkr�|}	}
n�tjj|�r�tj|�jtj|�jkr�|}
|}	n�tjj|�r�tj|�jtj|�jkr�|}
|}	nvtjj|��rtj|�jtj|�jk�r|}
|}	nD||��rRt	j
jd	k�r4|}
nt	j
jdk�rH|}
n|}
|}	n|}
}	n��jd	k�rr|}
|}	n<|}	�jdk�r�|}
n&�jdk�r�|}
nd
j�j�}t
|��tjj|
��o�tj|
�jtj|�jk�s�||�jd��s�|}
}	tjj|	�d}|�rd||f}|
|fS)Nrcs^ddl}�jrtd|�y|j|d|d�Wn,|jk
rX}zt|j�dSd}~XnXdS)NrZ	CompilingT)�doraiser�F)�
py_compilerHr]�compile�PyCompileError�msg)r�r�r��err)r{rr�_compile�s

z)PyZipFile._get_codename.<locals>._compilez.pyz.pycr~)�optimizationrrz"invalid value for 'optimize': {!r})r�z%s/%sr�)r�r�)�	importlib�util�cache_from_sourcer�rtr�r�r�r�rxrnr��formatrwr�)
r{r�r�r�Zfile_pyZfile_pycZpycache_opt0Zpycache_opt1Zpycache_opt2r�r�r�Zarchivenamer)r{rr��s`


zPyZipFile._get_codenamer�)r~N)rrrrr|r�r�rrrrrys
Rcsddl}|jd�}|dkr(tjdd�}|s:|ddkrLt|�tjd�|ddkr�t|�dkrvt|�tjd�t|dd	��}|j�WdQRX�n||ddk�r
t|�dkr�t|�tjd�t|dd	��}|j	�}WdQRX|�r�td
j
|��td��n|ddk�rbt|�dk�r8t|�tjd�t|dd	��}|j|d�WdQRXn�|ddk�rt|�dk�r�t|�tjd��fd
d��t|dd��h}x`|dd�D]P}tj
j|�}|�s�tj
jtj
j|��}|dtjtjfk�r�d}�|||��q�WWdQRXdS)NraE        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
        r�-l�-c�-e�-trrAz.The following enclosed file is corrupted: {!r}zDone testingrcsptjj|�r|j||t�nPtjj|�rl|r8|j||�x2tj|�D]$}�|tjj||�tjj||��qDWdS)N)rtr�r�r�rr�r�r/)r9r��zippathZnm)�addToZiprrr�Uszmain.<locals>.addToZiprBr~)r�r�r�r�)�textwrap�dedentrx�argvr]�exitr-rrxrzr�r�rtr�r�r�r�r�)�argsr�ZUSAGEr9Zbadfiler�r�r)r�r�main'sT




r��__main__li���ii��ii��)N)�rrt�re�importlib.utilr�rxr�r�r�rBZbinasciirN�ImportErrorZdummy_threadingr�rr�r��__all__�	Exceptionrr
rrr�r�r�rrrrrzr�r�r�rjrYrXr�rWrHrIrJrKrLrMrNr]r^r_rbrdrarcZ_CD_CREATE_VERSIONZ_CD_CREATE_SYSTEMZ_CD_EXTRACT_VERSIONZ_CD_EXTRACT_SYSTEMZ
_CD_FLAG_BITSZ_CD_COMPRESS_TYPEZ_CD_TIMEZ_CD_DATEZ_CD_CRCZ_CD_COMPRESSED_SIZEZ_CD_UNCOMPRESSED_SIZErergrhZ_CD_DISK_NUMBER_STARTZ_CD_INTERNAL_FILE_ATTRIBUTESZ_CD_EXTERNAL_FILE_ATTRIBUTESrir�r�r�r�Z_FH_EXTRACT_VERSIONZ_FH_EXTRACT_SYSTEMZ_FH_GENERAL_PURPOSE_FLAG_BITSZ_FH_COMPRESSION_METHODZ_FH_LAST_MOD_TIMEZ_FH_LAST_MOD_DATEZ_FH_CRCZ_FH_COMPRESSED_SIZEZ_FH_UNCOMPRESSED_SIZEr�r�rCrDrArFrGrEZ_CD64_SIGNATUREZ_CD64_DIRECTORY_RECSIZEZ_CD64_CREATE_VERSIONZ_CD64_EXTRACT_VERSIONZ_CD64_DISK_NUMBERZ_CD64_DISK_NUMBER_STARTZ_CD64_NUMBER_ENTRIES_THIS_DISKZ_CD64_NUMBER_ENTRIES_TOTALZ_CD64_DIRECTORY_SIZEZ_CD64_OFFSET_START_CENTDIRr<ZStructr+r5r9r	rTr6�objectr
r�r�r�r�r�r�r�r�r�rr�r1rrr�rrrrr�<module>sB









+=[=&-J/
B