python (3.11.7)

(root)/
lib/
python3.11/
urllib/
__pycache__/
request.cpython-311.opt-2.pyc

e؎6	ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlmZmZmZddlmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'ddl(m)Z)m*Z*	ddl+Z+dZ,n
#e-$rdZ,YnwxYwgdZ.dej/dd	zZ0da1de
j2fddddd
dZ3dZ4gZ5ded
Z6dZ7e	j8de	j9Z:dZ;GddZ<GddZ=dZ>GddZ?Gdde?Z@Gdde?ZAGdde?ZBdZCGdd e?ZDGd!d"ZEGd#d$eEZFGd%d&eFZGGd'd(ZHGd)d*eHe?ZIGd+d,eHe?ZJejKZLGd-d.ZMGd/d0e?eMZNGd1d2e?eMZOGd3d4e?ZPGd5d6ePZQeRejSd7r#Gd8d9ePZTe.Ud9Gd:d;e?ZVGd<d=e?ZWd>ZXd?ZYGd@dAe?ZZdBZ[GdCdDe?Z\GdEdFe\Z]GdGdHe?Z^dIZ_ej`dJkr	ddKlambZbmcZcndLZbdMZciZdGdNdOZeGdPdQeeZfdagdRZhdaidSZjdakdTZldamdUZnGdVdWZodXZpdfdYZqdZZrejsd[krdd\ltmuZumvZvd]Zwd^Zxd_Zyd`ZzdSej`dJkrdaZ{dbZzdcZ|ddZydSepZzeqZydS)gN)URLError	HTTPErrorContentTooShortError)urlparseurlspliturljoinunwrapquoteunquote
_splittype
_splithost
_splitport
_splituser_splitpasswd
_splitattr_splitquery_splitvalue	_splittag	_to_bytesunquote_to_bytes
urlunparse)
addinfourladdclosehookTF)!RequestOpenerDirectorBaseHandlerHTTPDefaultErrorHandlerHTTPRedirectHandlerHTTPCookieProcessorProxyHandlerHTTPPasswordMgrHTTPPasswordMgrWithDefaultRealmHTTPPasswordMgrWithPriorAuthAbstractBasicAuthHandlerHTTPBasicAuthHandlerProxyBasicAuthHandlerAbstractDigestAuthHandlerHTTPDigestAuthHandlerProxyDigestAuthHandlerHTTPHandlerFileHandler
FTPHandlerCacheFTPHandlerDataHandlerUnknownHandlerHTTPErrorProcessorurlopeninstall_openerbuild_openerpathname2urlurl2pathname
getproxiesurlretrieve
urlcleanup	URLopenerFancyURLopenerz%d.%d)cafilecapath	cadefaultcontextc	|s|s|rddl}|jdtd|tdtstdtjt
jj||}|	dgt|}t|}	nA|r t|}t|}	nttxa}	nt}	|	
|||S)	NrzJcafile, capath and cadefault are deprecated, use a custom context instead.r;zDYou can't pass both context and any of cafile, capath, and cadefaultzSSL support not available)r<r=zhttp/1.1)r?)warningswarnDeprecationWarning
ValueError	_have_sslsslcreate_default_contextPurposeSERVER_AUTHset_alpn_protocolsHTTPSHandlerr3_openeropen)
urldatatimeoutr<r=r>r?rA
https_handleropeners
          B/BuggyBox/python/3.11.7/bootstrap/lib/python3.11/urllib/request.pyr1r1s40d9
01CQ	H	H	H
	:8999,S[-D4:4:<<<	""J<000$W555
m,,	$W555
m,,	'>>)&&;;sD'***c
|adSN)rL)rRs rSr2r2sGGGrTcN	t|\}}tjt||5}|}|dkr/|s-t
j||fcdddS|rt|d}n6tj
d}|j}t
||5||f}	d}
d}d}d}
d|vrt|d	}|r
||
|
|	||
}|sn<|t!|z
}|||
dz
}
|r
||
|
|T	dddn#1swxYwYdddn#1swxYwY|dkr||krt%d||fz|	|	S)
NfilewbF)delete rcontent-lengthContent-LengthT1retrieval incomplete: got only %i out of %i bytes)r
contextlibclosingr1infoospathnormpathrMtempfileNamedTemporaryFilename_url_tempfilesappendintreadlenwriter)rNfilename
reporthookrOurl_typerefpheaderstfpresultbssizermblocknumblocks               rSr7r7s __NHd		GC..	/	/$32''))vh7##D))72
$3$3$3$3$3$3$3$3	,x&&CC-U;;;CxH!!(+++
	3	3w&FBDDH7**7#3455
/
8R...
3E

"		%   A
3JxT222
3	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3!$3$3$3$3$3$3$3$3$3$3$3$3$3$3$3LqyyTD[["?Tl
"$$	$Ms==E9AE9B
E"E9"E&	&E9)E&	*E99E=E=c	tD]'}	tj|#t$rY$wxYwtdd=trdadSdSrV)rjrdunlinkOSErrorrL)	temp_files rSr8r8su:#		Ii    			D		qqqs!
..z:\d+$c	|j}t|d}|dkr|dd}td|d}|S)Nr_Host)full_urlr
get_header_cut_port_resublower)requestrNhosts   rSrequest_hostr-sf
CC==Drzz!!&"--Ba((D::<<rTceZdZdidddfdZedZejdZejdZedZejdZejd	Zd
Z	dZ
dZd
ZdZ
dZdZdZddZdZdZdS)rNFc||_i|_i|_d|_||_d|_|D]\}}||||t|}||_	||_
|r	||_dSdSrV)rrtunredirected_hdrs_datarO_tunnel_hostitems
add_headerrorigin_req_hostunverifiablemethod)	selfrNrOrtrrrkeyvalues	         rS__init__zRequest.__init__?s
!#
	 !--//	(	(JCOOC''''"*400O.(	! DKKK	!	!rTc^|jr d|j|jS|jS)Nz{}#{})fragmentformat	_full_urlrs rSrzRequest.full_urlQs-=	A>>$.$-@@@~rTct||_t|j\|_|_|dSrV)r	rrr_parserrNs  rSrzRequest.full_urlWs: (1$.(A(A%





rTc0d|_d|_d|_dSNr)rrselectorrs rSrzRequest.full_url^s



rTc|jSrV)rrs rSrOzRequest.datads
zrTc||jkr3||_|dr|ddSdSdS)NContent-length)r
has_header
remove_header)rrOs  rSrOzRequest.datahsZ4:DJ/00
5""#344444


5
5rTcd|_dSrV)rOrs rSrOzRequest.datars
			rTct|j\|_}|jtd|jzt|\|_|_|jrt|j|_dSdS)Nzunknown url type: %r)	rrtyperDrr
rrr)rrests  rSrzRequest._parsevst$T^44	493dmCDDD#-d#3#3 	4=9	+	**DIII	+	+rTc<	|jdnd}t|d|S)NPOSTGETr)rOgetattr)rdefault_methods  rS
get_methodzRequest.get_method~s'A#'9#8etX~666rTc|jSrV)rrs rSget_full_urlzRequest.get_full_urls
}rTcx|jdkr|js
|j|_n||_|j|_||_dS)Nhttps)rrrrr)rrrs   rS	set_proxyzRequest.set_proxys?9(9 $	DDI MDM			rTc"|j|jkSrV)rrrs rS	has_proxyzRequest.has_proxys}
--rTc>||j|<dSrV)rt
capitalizerrvals   rSrzRequest.add_headers),S^^%%&&&rTc>||j|<dSrV)rrrs   rSadd_unredirected_headerzRequest.add_unredirected_headers36s~~//000rTc&||jvp||jvSrV)rtrrheader_names  rSrzRequest.has_headers!t|+6t55	7rTcj|j||j||SrV)rtgetr)rrdefaults   rSrzRequest.get_headers5|"&&{G<<>>	>rTcr|j|d|j|ddSrV)rtpoprrs  rSrzRequest.remove_headers9d+++"";55555rTcdi|j|j}t|SrV)rrtlistr)rhdrss  rSheader_itemszRequest.header_itemss,9$(9DL9DJJLL!!!rTrV)__name__
__module____qualname__rpropertyrsetterdeleterrOrrrrrrrrrrrrTrSrr=s!%r!%E!!!!$X
__
X
[55[5
\\+++777
...---777777>>>>
666"""""rTrcJeZdZdZdZdZdZdejfdZ	d	dZ
dZdS)
rctdtz}d|fg|_g|_i|_i|_i|_i|_dS)NPython-urllib/%sz
User-agent)__version__
addheadershandlershandle_openhandle_errorprocess_responseprocess_request)rclient_versions  rSrzOpenerDirector.__init__sH+k9(.9:
 "!rTcLt|dstdt|zd}t|D].}|dvr|d}|d|}||dzd}|dro|d|zdz}||dzd}	t
|}n#t$rYnwxYw|j	|i}	|	|j|<n1|dkr
|}|j
}	n!|d	kr
|}|j}	n|d
kr
|}|j}	n|	
|g}
|
rtj|
|n|
|d}0|r1tj|j|||dSdS)N
add_parentz%expected BaseHandler instance, got %rF)redirect_requestdo_open
proxy_open_r_errorrMresponserT)hasattr	TypeErrorrdirfind
startswithrlrDrrrrr
setdefaultbisectinsortrkrr)rhandleraddedmethiprotocol	conditionjkindlookuprs           rSadd_handlerzOpenerDirector.add_handlersw--	+C MM*++
+LL#	#	DDDD		#ABQBxHQqSTT
I##G,,
NN3''!+a/AaCDDzt99DD!D*..x<<.4!(++f$$)j((.i''-((r22H
)
h0000(((EE	%M$-111t$$$$$	%	%s3C
CCcdSrVrrs rSclosezOpenerDirector.closerTcr||d}|D]}t||}||}||cSdS)Nr)rr)	rchainr	meth_nameargsrrfuncrvs	         rS_call_chainzOpenerDirector._call_chains^99T2&&		G7I..DT4[F!


"		rTNct|trt||}n|}|||_||_|j}|dz}|j|gD]}t||}||}tj
d|j|j|j|
|||}	|dz}|j|gD]}t||}|||	}	|	S)N_requestzurllib.Request	_response)
isinstancestrrrOrPrrrrsysauditrrtr_openr)
rfullurlrOrPreqrr	processorrrs
          rSrMzOpenerDirector.opens"gs##	 '4((CCC8Z'	-11(B??		I9i00D$s))CC	"CL#(CKIYIYZZZ::c4(([(	.228R@@	+	+I9i00DtC**HHrTc||jdd|}|r|S|j}||j||dz|}|r|S||jdd|S)Nrdefault_openrunknownunknown_open)rrr)rr	rOrvrs     rSrzOpenerDirector._opens!!$"2I"0#77	M8!!$"2Hh")?*+.00	M 0) .55	5rTc|dvr|jd}|d}d|z}d}|}n|j}|dz}d}|||f|z}|j|}|r|S|r|dd	f|z}|j|SdS)
Nhttprrr;z
http_error_%sr__errorrrhttp_error_default)rr)rprotordictrhttp_err	orig_argsrvs        rSrzOpenerDirector.error s%%%$V,DGE'%/IHII$D(IHeY'$.!!4(	M	+)%9:YFD#4#T**	+	+rTrV)rrrrrrrsocket_GLOBAL_DEFAULT_TIMEOUTrMrrrrTrSrrs	"	"	"-%-%-%^


			"&v/M:
5
5
5
5+++++rTrc		t}ttttt
ttttg	}ttjdr|
tt}|D]g}|D]b}t!|t"r&t%||r||=t!||r||ch|D]}|||D]}|| |D]6}t!|t"r
|}||7|S)NHTTPSConnection)rr r/r*rrr,r+r0r.rrclientrkrKsetrr
issubclassaddremover)rrRdefault_classesskipklasscheckhs       rSr3r39s|

F#^[.0C!;0B"$Ot{-..-|,,,55D   	 	 E%&&
 eU++$HHUOOOE5))
 	 &&u%%%% $$5577####
a	A1MrTc$eZdZdZdZdZdZdS)rc||_dSrV)parent)rr)s  rSrzBaseHandler.add_parent`s
rTcdSrVrrs rSrzBaseHandler.closecrrTcFt|dsdS|j|jkS)N
handler_orderT)rr,)rothers  rS__lt__zBaseHandler.__lt__gs,uo..	4!E$777rTN)rrrr,rrr.rrTrSrr]sFM


88888rTrceZdZ	dZdZeZdS)r0ic|j|j|}}}d|cxkrdks!n|jd|||||}|S)N,r)codemsgrcr)r)rrrr3r4rs      rS
http_responsez HTTPErrorProcessor.http_responsetsg"-x}}4ct!!!!c!!!!{((4d<<HrTN)rrrr,r5https_responserrTrSr0r0ps,'M			#NNNrTr0ceZdZdZdS)rc2t|j||||rV)rr)rr	rsr3r4rs      rSrz*HTTPDefaultErrorHandler.http_error_defaultsdCr:::rTN)rrrrrrTrSrrs#;;;;;rTrc6eZdZdZdZdZdZexZxZxZ	Z
dZdS)r
c,		|}|dvr|dvs"|dvr|dkst|j|||||dd}d		fd|jD}t
|||jd	
S)N)-./i3i4)rHEAD)r=r>r?r z%20)r]zcontent-typecHi|]\}}|v||Sr)r).0kvCONTENT_HEADERSs   rS
<dictcomp>z8HTTPRedirectHandler.redirect_request.<locals>.<dictcomp>s;;;;tq!/99999rTT)rtrr)rrrreplacertrrr)
rr	rsr3r4rtnewurlm
newheadersrFs
         @rSrz$HTTPRedirectHandler.redirect_requests	
NN222qO7K7K&&1;;CL$WbAAAU++<;;;;s{'8'8':':;;;
v)'*':$(***	*rTcrd|vr	|d}nd|vr	|d}ndSt|}|jdvrt|||d|d|||js|jrt|}d|d<t
|}t|dtj		}t|j|}|||||||}|dSt|d
rf|jx}	|_|	|d|jkst#|	|jkr t|j||j|z||nix}	x|_|_|	|ddz|	|<|||j||j
S)Nlocationurirrftprz - Redirection to url 'z' is not allowed/r;z
iso-8859-1)encodingsafe
redirect_dictrr_rP)rschemerrenetlocrrr
stringpunctuationrrrrrTrmax_repeatsrnmax_redirectionsinf_msgrmrr)rMrP)
rr	rsr3r4rtrIurlpartsnewvisiteds
          rShttp_error_302z"HTTPRedirectHandler.http_error_302s  Z(FF
g

U^FFFF##
?">>>ADfffM

}		H~~HHQKH%%
\0BDDDv..
##CT3HH;F3((	A*-*;;Gc'FA&&$*:::G 555d $s 2GRAAA6?A@G@c'#*;!++fa0014				



{S[999rTzoThe HTTP server returned a redirect error that would lead to an infinite loop.
The last 30x error message was:
N)rrrrZr[rr`http_error_301http_error_303http_error_307http_error_308r\rrTrSrrs\K * * *L::::::xIWVNV^Vn~2GGGrTrc	t|\}}|dsd}|}n|dstd|zd|vr,|d}|d|}n|dd}|dkrd}|d|}t	|\}}|t|\}}	ndx}}	|||	|fS)NrQ//zproxy URL with no authority: %r@r;r\)rrrDrrr)
proxyrVr_scheme	authorityhost_separatorenduserinfohostportuserpasswords
          rS_parse_proxyrqs
"%((FHs##$		""4((	H>FGGG(??%]]3//N--^44CC--Q''C"99CQsUO	#I..Hh%h//hhx48++rTc eZdZdZddZdZdS)r dNc|t}||_|D]7\}}|}t	|d|z|||jfd8dS)Nz%s_openc||||SrVr)rrhrrs    rS<lambda>z'ProxyHandler.__init__.<locals>.<lambda>#sQt,,rT)r6proxiesrrsetattrr)rrxrrNs    rSrzProxyHandler.__init__s? llG 	.	.ID#::<<DD)d*$'d---
.
.
.
.	.	.rTc|j}t|\}}}}||}|jrt|jrdS|ru|rst	|dt	|}	tj|	d}
|	dd|
zt	|}|
||||ks|dkrdS|j||j
S)N:asciiProxy-authorizationBasic rrU)rrqrproxy_bypassrbase64	b64encodeencodedecoderrr)rMrP)rr	rhr	orig_type
proxy_typerorprn	user_passcredss           rSrzProxyHandler.proxy_open&sH	/;E/B/B,
D(H"J8	SX..	4	DH	D#*4====#*8#4#4#46I$Y%5%5%7%788??HHENN0(U2BCCC8$$

h
+++
""i7&:&:4;##C#===rTrV)rrrr,rrrrTrSr r s<M	.	.	.	.>>>>>rTr c.eZdZdZdZdZddZdZdS)	r!ci|_dSrV)passwdrs rSrzHTTPPasswordMgr.__init__Ds
rTct|tr|g}|jvr
ij|<dD]0tfd|D}||fj||<1dS)NTFc3DK|]}|VdSrV)
reduce_uri)rCudefault_portrs  rS	<genexpr>z/HTTPPasswordMgr.add_password.<locals>.<genexpr>NsB ? ?56<00 ? ? ? ? ? ?rT)rrrtuple)rrealmrNrorreduced_urirs`     @rSadd_passwordzHTTPPasswordMgr.add_passwordGsc3	%C##!#DK'	=	=L ? ? ? ? ?:= ? ? ???K/3VnDK{++	=	=rTc|j|i}dD]U}|||}|D](\}}|D] }|||r|cccS!)VdS)NrNN)rrrr	is_suburi)	rrauthuridomainsrreduced_authuriurisauthinforNs	         rSfind_user_passwordz"HTTPPasswordMgr.find_user_passwordRs+//%,,'	(	(L"oog|DDO")--//
(
(h((C~~c?;;('((
(zrTTc	t|}|dr|d}|d}|dpd}nd}|}d}t|\}}|r%|#|!ddd|}	|	d||	fz}||fS)	Nr_rr;rQPirz%s:%d)rrr)
rrNrpartsrVrjrerportdports
          rSrzHTTPPasswordMgr.reduce_uri\sN

8		1XFaI8?sDDFID	**
d	4DLV-?!s6{{
 #tUm3	$rTc	||krdS|d|dkrdS|d}|dddkr|dz
}|d|S)NTrFr_r\rQ)r)rbasetestprefixs    rSrzHTTPPasswordMgr.is_suburissl	4<<47d1g5a"##;#cMFAw!!&)))rTN)T)rrrrrrrrrrTrSr!r!Bsd	=	=	=.*****rTr!ceZdZdZdS)r"ct|||\}}|||fSt|d|SrV)r!r)rrrrorps     rSrz2HTTPPasswordMgrWithDefaultRealm.find_user_passwordsL(;;D%<CEEh>!11$gFFFrTN)rrrrrrTrSr"r"s(GGGGGrTr"c8eZdZfdZdfd	ZddZdZxZS)r#cHi|_tj|i|dSrV)
authenticatedsuperr)rrkwargs	__class__s   rSrz%HTTPPasswordMgrWithPriorAuth.__init__s-$)&)))))rTFc||||$td|||t||||dSrV)update_authenticatedrr)rrrNroris_authenticatedrs      rSrz)HTTPPasswordMgrWithPriorAuth.add_passwordsb!!#'7888GG  sD&999
UCv66666rTct|tr|g}dD]'}|D]"}|||}||j|<#(dSNr)rrrr)rrNrrrrs      rSrz1HTTPPasswordMgrWithPriorAuth.update_authenticatedsrc3	%C'	C	CL
C
C"ooa>>2B";//
C	C	CrTcdD]I}|||}|jD])}|||r|j|ccS*JdSr)rrr)rrrrrNs     rSrz-HTTPPasswordMgrWithPriorAuth.is_authenticatedsz'	3	3L"oog|DDO)
3
3>>#773-c2222223
3	3	3rT)F)rrrrrrr
__classcell__)rs@rSr#r#s}*****777777CCCC3333333rTr#cheZdZejdejZd	dZdZdZ	dZ
dZdZeZ
eZdS)
r$z1(?:^|,)[ 	]*([^ 	,]+)[ 	]+realm=(["']?)([^"']*)\2NcV|t}||_|jj|_dSrV)r!rr)rpassword_mgrs  rSrz!AbstractBasicAuthHandler.__init__s-*,,L" K4rTc#"Kd}tj|D]A}|\}}}|dvrt	jdtd||fVd}B|s'|r|d}nd}|dfVdSdS)NF)"'zBasic Auth Realm was unquotedTrr)r$rxfinditergroupsrArBUserWarningsplit)rheaderfound_challengemorVr
rs       rS_parse_realmz%AbstractBasicAuthHandler._parse_realms*-66v>>	#	#B#%99;; FE5J&&
=)1...5/!!!"OO	!
*4.     	!	!rTc||}|sdSd}|D]U}||D]=\}}|dkr|} |||||ccS>V|t	d|dS)Nbasicz@AbstractBasicAuthHandler does not support the following scheme: )get_allrrretry_http_basic_authrD)	rauthreqrr	rtunsupportedrrVrs	         rShttp_error_auth_reqedz.AbstractBasicAuthHandler.http_error_auth_reqeds//'**	F
	H
	HF!%!2!26!:!:	
H	
H
<<>>W,,"(K$ 55dCGGGGGGG	%	
H"* &)**
*#"rTc|j||\}}||d|}dtj|dz}||jd|krdS||j||j	
||jSdS)Nr{r~r|rU)rrrrrrrauth_headerrr)rMrP)rrr	rropwrawauths        rSrz.AbstractBasicAuthHandler.retry_http_basic_auths;11%>>b
>!TT22&Cf.szz||<<CCGLLLD~~d.55==t''(8$???;##C#===4rTct|jdr|j|js|S|ds|jd|j\}}d||}tj	|
}|dd||S)Nr
Authorizationz{0}:{1}zBasic {})
rrrrrrrrrstandard_b64encoderrstrip)rr	rorcredentialsauth_strs      rShttp_requestz%AbstractBasicAuthHandler.http_requests%788	{++CL99	J~~o..	M;99$MMLD&#**488??AAK0==DDFFH''(2(9(9(..:J:J(K(K
M
M
M
rTct|jdrVd|jcxkrdkr$nn!|j|jdn |j|jd|S)Nrr1r2TF)rrr3rr)rr	rs   rSr5z&AbstractBasicAuthHandler.http_response
sx4; 233	Fhm))))c)))))00tDDDD00uEEErTrV)rrrrecompileIrrrrrrr5
https_requestr6rrTrSr$r$s
1D

B5555!!!(***4


!M"NNNrTr$ceZdZdZdZdS)r%rcD|j}|d|||}|S)Nwww-authenticate)rr)rr	rsr3r4rtrNrs        rShttp_error_401z#HTTPBasicAuthHandler.http_error_401s-l--.@*-sG==rTN)rrrrrrrTrSr%r%s(!KrTr%ceZdZdZdZdS)r&r}cD|j}|d|||}|SNproxy-authenticate)rr)rr	rsr3r4rtrjrs        rShttp_error_407z$ProxyBasicAuthHandler.http_error_407)s1
H	--.B*3S'CCrTN)rrrrrrrTrSr&r&%s('KrTr&c@eZdZd
dZdZdZdZdZdZdZ	d	Z
dS)r'Nc|t}||_|jj|_d|_d|_d|_dSNr)r!rrretriednonce_count
last_nonce)rrs  rSrz"AbstractDigestAuthHandler.__init__Cs@>$&&F K4rTcd|_dSr)rrs rSreset_retry_countz+AbstractDigestAuthHandler.reset_retry_countLs
rTc||d}|jdkrt|jdd|d|xjdz
c_|rr|d}|dkr|||S|dkrtd|zdSdS)	Nizdigest auth failedr_rdigestrzEAbstractDigestAuthHandler does not support the following scheme: '%s')rrrrrrretry_http_digest_authrD)rrrr	rtrrVs       rSrz/AbstractDigestAuthHandler.http_error_auth_reqedOs++k400<!CL#/C#T++
+
LLALL	I]]__Q'F||~~))223@@@7** "?AG"HIII	I	I+*rTc|dd\}}ttdt|}|||}|rid|z}|j|jd|krdS||j||j	
||j}|SdS)NrAr_z	Digest %srU)rparse_keqv_listfilterparse_http_listget_authorizationrtrrrr)rMrP)rr	rtoken	challengechalauth_valresps        rSrz0AbstractDigestAuthHandler.retry_http_digest_authcs::c1--yvdOI,F,FGGHH%%c400	"T)H{t/66(BBt''(8(CCC;##C#==DK
		rTc|jd|dtjd}|dt	dz}tj|}|ddS)Nr{r|)rtimectimer_randombyteshashlibsha1	hexdigest)rnoncesbdigs     rS
get_cnoncez$AbstractDigestAuthHandler.get_cnonceosi +++UUUDJLLLLA
HHWQ/l1oo''))3B3xrTc	|d}|d}|d}|dd}|dd}n#t$rYdSwxYw||\}}	|dS|j||j\}
}|
dS|j||j|}nd}|
d|d|}
|d|j	}|$|	||
|d||}nd|
d	vrx||jkr|xjd
z
c_nd
|_||_d|jz}|
|}|d|d|ddd||	}|	||
|}ntd|zd
|
d|d|d|j	d|d}|r|d|zz
}|r|d|zz
}|d|zz
}|r|d|d|dz
}|S)Nrrqop	algorithmMD5opaquer{r,r_z%08xzqop '%s' is not supported.z
username="z
", realm="z
", nonce="z", uri="z
", response="rz
, opaque="%s"z
, digest="%s"z, algorithm="%s"z, qop=auth, nc=z
, cnonce=")rKeyErrorget_algorithm_implsrrrrOget_entity_digestrrrrrrr)rr	rrrr
rrHKDrorentdigA1A2respdigncvaluecnoncenoncebitrs                    rSrz+AbstractDigestAuthHandler.get_authorizationzs		MEME((5//Ce44IXXh--FF			44	((33294;11%FFb<48++CHd;;FFF44
+((((&
;b2555!!B%%% 899GG
syy~~
%
%''  A%   #$ "'t//G__U++F+055'''66666611R555QHb2))GG7#=>>>
#'$$uuuclll")''+	-Of,,D	-Of,,D"Y..	IDHHDsAA
A"!A"cb|dkrdn|dkrdntd|zfd}|fS)Nrcttj|dSNr|)rmd5rrxs rSrwz?AbstractDigestAuthHandler.get_algorithm_impls.<locals>.<lambda>s('+ahhw&7&788BBDDrTSHActtj|dSr )rrrrr"s rSrwz?AbstractDigestAuthHandler.get_algorithm_impls.<locals>.<lambda>s(',qxx'8'899CCEErTz.Unsupported digest authentication algorithm %rc$|d|S)Nr{r)rdrs  rSrwz?AbstractDigestAuthHandler.get_algorithm_impls.<locals>.<lambda>s!!qqq!!,--rT)rD)rrrrs   @rSrz-AbstractDigestAuthHandler.get_algorithm_implsseDDAA
%

EEAA,.7899
9
-
-
-
-"urTcdSrVr)rrOrs   rSrz+AbstractDigestAuthHandler.get_entity_digeststrTrV)rrrrrrrrrrrrrTrSr'r'8sIII(


			<<<|rTr'ceZdZ	dZdZdZdS)r(rct|jd}|d|||}||S)Nr_r)rrrrrr	rsr3r4rtrretrys        rSrz$HTTPDigestAuthHandler.http_error_401sL%%a(**+=+/g??   rTN)rrrrr,rrrTrSr(r(s4"KMrTr(ceZdZdZdZdZdS)r)Proxy-Authorizationr*cl|j}|d|||}||Sr)rrrr,s        rSrz%ProxyDigestAuthHandler.http_error_407s?x**+?+/g??   rTN)rrrrr,rrrTrSr)r)s-'KMrTr)c.eZdZddZdZdZdZdZdS)	AbstractHTTPHandlerrc||_dSrV_debuglevel)r
debuglevels  rSrzAbstractHTTPHandler.__init__s%rTc||_dSrVr4)rlevels  rSset_http_debuglevelz'AbstractHTTPHandler.set_http_debuglevels rTcztjj|j|SrV)rrHTTPConnection_get_content_lengthrOrrrs  rSr<z'AbstractHTTPHandler._get_content_lengths3{)==L  ""	"rTc`|j}|std|j|j}t|trd}t||ds|dd|dsf|dsQ||}|$|dt	|n|dd|}|	r)t|j\}}t|\}}	|ds|d||j
jD]D\}
}|
}
||
s||
|E|S)	N
no host givenz\POST data should be bytes, an iterable of bytes, or a file object. It cannot be of type str.zContent-type!application/x-www-form-urlencodedrTransfer-encodingchunkedr)rrrOrrrrrr<rrrr
r)rr)rrrrOr4content_lengthsel_hostrVselsel_pathrirs            rSdo_request_zAbstractHTTPHandler.do_request_s|	,?+++<#<D$$$
%Dnn$%%n55
9//"7999&&'788
<#../BCC
<!%!9!9'!B!B!-33,c..A.ACCCC33/<<<	1$W%566KFC!+CHh!!&))	>++FH===;1	=	=KD%??$$D%%d++
=//e<<<rTc	
	|j}|std||fd|ji|}||jt|j


fd|j	Dd
d<d
	D
|j
r2i}d}|
vr
|||<
|=||j
|		||
|j|j
|d	
n!#t"$r}t|d}~wwxYw|}	n#|xYw|jr |jd|_||	_|	j|	_|	S)Nr?rPc$i|]\}}|v	||
Srr)rCrDrErts   rSrGz/AbstractHTTPHandler.do_open.<locals>.<dictcomp>)s3---AG++1+++rTr
Connectionc>i|]\}}||Sr)title)rCrirs   rSrGz/AbstractHTTPHandler.do_open.<locals>.<dictcomp>6s&FFFs4::<<FFFrTr/rtrA)encode_chunked)rrrPset_debuglevelr5rrupdatertrr
set_tunnelrrrrOrr}getresponsersockrrNreasonr4)r
http_classr	http_conn_argsrr%tunnel_headersproxy_auth_hdrerrrvrts          @rSrzAbstractHTTPHandler.do_opens	x	,?+++
JtCCS[CNCC	)***s,------):):)<)<---	.	.	.!(FFgmmooFFF	CN2N((181H~.N+
LL)>LBBB		
$		#..**CL#(G),8K)L)LNNNN
$
$
$smm#
$

AA	
GGIII

6	
FLLNNNAF  ""s+/A	D98E/9
EEEE//FNr)rrrrr9r<rGrrrTrSr2r2sj&&&&!!!"""
$$$L@@@@@rTr2c"eZdZdZejZdS)r*cL|tjj|SrV)rrrr;rr	s  rS	http_openzHTTPHandler.http_open`s||DK6<<<rTN)rrrr^r2rGrrrTrSr*r*^s'==='2LLLrTr*rc*eZdZddZdZejZdS)rKrNcXt||||_||_dSrV)r2r_context_check_hostname)rr6r?check_hostnames    rSrzHTTPSHandler.__init__is-((z:::#DM#1D   rTcf|tjj||j|jS)N)r?rc)rrrrrarbr]s  rS
https_openzHTTPSHandler.https_openns3<< ;S
d6J LL
LrT)rNN)rrrrrer2rGrrrTrSrKrKgs>	2	2	2	2
	L	L	L,7


rTrKc*eZdZddZdZdZeZeZdS)rNcRddl}||j}||_dSr)http.cookiejar	cookiejar	CookieJar)rrirs   rSrzHTTPCookieProcessor.__init__ws20022I"rTc:|j||SrV)riadd_cookie_headerr=s  rSrz HTTPCookieProcessor.http_request}s((111rTc<|j|||SrV)riextract_cookies)rrrs   rSr5z!HTTPCookieProcessor.http_responses&&x999rTrV)rrrrrr5rr6rrTrSrrvsL####!M"NNNrTrceZdZdZdS)r/c4|j}td|z)Nzunknown url type: %s)rr)rr	rs   rSrzUnknownHandler.unknown_opensx-4555rTN)rrrrrrTrSr/r/s#66666rTr/c	i}|D]B}|dd\}}|ddkr|ddkr
|dd}|||<C|S)N=r_rrr\)r)lparsedeltrDrEs     rSrrsfH
Fyya  1Q43;;1R5C<<!B$Aq		MrTc	g}d}dx}}|D]P}|r||z
}d}|r|dkrd}|dkrd}||z
}%|dkr||d}C|dkrd}||z
}Q|r||d|DS)NrF\Trrc6g|]}|Sr)r)rCparts  rS
<listcomp>z#parse_http_list.<locals>.<listcomp>s )))TDJJLL)))rT)rk)rresryescaper
curs      rSrrs
C
DFU	CKDF	d{{CKD#::JJtD#::E

4))S))))rTc$eZdZdZdZdZdZdS)r+c|j}|dddkrL|dddkr>|jr7|jdkr,|j|vrtddS||S)Nr;rfrrQ	localhost-file:// scheme is supported only on localhost)rr	get_namesropen_local_file)rr	rNs   rS	file_openzFileHandler.file_openslrr7d??s1Q3x3CHK''8t~~////NOOO0/'',,,rTNcXtj	ttjddtjtjdzt_n4#tj$r"tjdft_YnwxYwtjS)Nrr;)r+namesrrgethostbyname_exgethostnamegaierror
gethostbynamers rSrzFileHandler.get_namess$
I$)+K88;+F,>,@,@AA!DE%F%F!!?
I
I
I%+%9+%F%F$H!!!
I  sAA,,.BBcbddl}ddl}|j}|j}t	|}	tj|}|j}|j	|j
d}	||d}
|jd|
pd||	fz}|rt|\}}|r%|sRt||vr/|r	d|z|z}
nd|z}
t!t#|d||
Sn!#t$$r}t'|d}~wwxYwt'd)	NrTusegmtz6Content-type: %s
Content-length: %d
Last-modified: %s

text/plainfile://rbzfile not on local host)email.utils	mimetypesrrr5rdstatst_sizeutils
formatdatest_mtime
guess_typemessage_from_stringr_safe_gethostbynamerrrMr}r)rr	emailrrrp	localfilestatsrxmodifiedmtypertrorigurlexps               rSrzFileHandler.open_local_filessx< **		 GI&&E=D{--enT-JJH((2215E/e/K&,h7899G
.'--
d
K
K1$774>>;K;KKK3'$.9GG'(2G!$y$"7"7'JJJ	 	 	 3--	 /000sCD
DDD)rrrrrrrrrTrSr+r+sH---
E!!!11111rTr+cX	tj|S#tj$rYdSwxYwrV)rrr)rs rSrrs<#D)))?tts))ceZdZdZdZdS)r,cddl}ddl}|j}|stdt	|\}}||j}nt
|}t|\}}|rt|\}}nd}t|}|pd}|pd}	tj|}n!#t$r}t|d}~wwxYwt|j\}	}
|	d}t!t#t|}|dd|d}}|r|ds
|dd}	|||||||j}
|rdpd}|
D]D}t)|\}}|d	kr|d
vr|}E|
||\}}d}||jd}|r|d|zz
}||dkr|d|zz
}t5j|}t9|||jS#|j$r}t||d}~wwxYw)
Nrftp error: no host givenrrQr\r_rDraArrr'rzContent-type: %s
zContent-length: %d
)ftplibrrrrFTP_PORTrlrrrrrr}rrrrmapconnect_ftprPrrupperretrfilerrrrr
all_errors)rr	rrrrrorr4reattrsdirsrXfwrattrrrsretrlenrtrrs                      rSftp_openzFTPHandler.ftp_opens


x	75666%%
d<?DDt99D %%
d	'--LD&&Ft}}zr2	 '--DD	 	 	 3--	  ..ezz#C&&''#2#YRd	Q	8D	)!!$dD#+NNB<C&3D
)
))$//e::<<6))::: ;;==D++dD11KBG((66q9E
8/%77"w!||1G;;/88Gb'3<888 	)	)	)3--S(	)s1
B""
C,B;;C8C*H##
I-H==Ic	.t||||||dS)NF)
persistent)
ftpwrapper)rrorrrrrPs       rSrzFTPHandler.connect_ftp0s($dD'%*,,,	,rTN)rrrrrrrTrSr,r,s32)2)2)h,,,,,rTr,c2eZdZdZdZdZdZdZdZdS)r-cLi|_i|_d|_d|_d|_dS)Nr<r)cacherPsoonestdelay	max_connsrs rSrzCacheFTPHandler.__init__7s)

rTc||_dSrV)r)rts  rS
setTimeoutzCacheFTPHandler.setTimeout>s



rTc||_dSrV)r)rrJs  rSsetMaxConnszCacheFTPHandler.setMaxConnsAs
rTcP|||d||f}||jvr$tj|jz|j|<n?t|||||||j|<tj|jz|j|<||j|S)NrQ)joinrrrrPrcheck_cache)rrorrrrrPrs        rSrzCacheFTPHandler.connect_ftpDsD$7$* $	dj 8DL(vtT)-w88DJsO $	dj 8DLz#rTctj}|j|krat|jD]:\}}||kr/|j||j|=|j|=;tt|j|_t|j|j
krt|jD]"\}}||jkr|j|=|j|=n#tt|j|_dSdSrV)rrrrPrrrminvaluesrnr)rrrDrEs    rSrzCacheFTPHandler.check_cacheOs8IKK<1T\//1122
(
(1q55JqM'')))
1
Q4 3 3 5 56677tz??dn,,T\//1122

1$$
1
QE%tDL$7$7$9$9::;;DLLL
-,rTc|jD]}||j|jdSrV)rrrclearrP)rconns  rSclear_cachezCacheFTPHandler.clear_cachecs\J%%''		DJJLLLL
rTN)	rrrrrrrrrrrTrSr-r-4sn			<<<(rTr-ceZdZdZdS)r.c|j}|dd\}}|dd\}}t|}|drt	j|}|dd}|sd}t
jd|t|fz}ttj|||S)Nr{r_rz;base64itext/plain;charset=US-ASCIIz$Content-type: %s
Content-length: %d
)rrrendswithrdecodebytesrrrnrioBytesIO)rr	rNrVrO	mediatyperts       rS	data_openzDataHandler.data_openjslyyQ''**S++	4 %%i((	'%d++D!#2#I	65I+,T
D		"-#$$"*T**GS999rTN)rrrrrrTrSr.r.is#:::::rTr.r;nt)r5r4c"	t|SrV)rpathnames rSr5r5s	Cx   rTc"	t|SrV)r
rs rSr4r4s	BXrTceZdZ	dZdezZddZdZdZdZ	dZ
ddZdd	Zdd
Z
ddZdZdd
ZddZdZerdZddZdZdZdZddZdS)r9Nrcldd|jjiz}tj|td|t}||_|d|_|d|_	d|j
fdg|_g|_tj|_d|_t"|_dS)	NzW%(class)s style of invoking requests is deprecated. Use newer urlopen functions/methodsclassr)
stacklevelkey_file	cert_filez
User-Agent)Acceptz*/*)rrrArBrCr6rxrrrversionr_URLopener__tempfilesrdr|_URLopener__unlink	tempcacheftpcache)rrxx509r4s    rSrzURLopener.__init__s47>@W6XY
c-!<<<<? llG,,
+..($,79JK	
!


rTc.|dSrV)rrs rS__del__zURLopener.__del__s

rTc.|dSrV)cleanuprs rSrzURLopener.closesrTc|jr:|jD](}	||#t$rY%wxYw|jdd=|jr|jdSdSrV)rrr}rr)rrXs  rSrzURLopener.cleanups	$(

MM$''''D #>	#N  """""	#	#s(
55c<	|j|dSrV)rrk)rrs  rS	addheaderzURLopener.addheaders#	5t$$$$$rTc0	tt|}t|d}|jr:||jvr1|j|\}}t	|d}t|||St
|\}}|sd}||jvr6|j|}t
|\}}	t|	\}
}|
|f}nd}d|z}||_	|
dd}t||r|dkr/|r||||S|
||S	|t|||St||||S#tt f$rt"$r}
t#d	|
|
d}
~
wwxYw)
Nz%/:=&?~#+!$,;'@()*[]|rSrrXopen_-rrzsocket error)r	rr
rrMrrrxr
rrHropen_unknown_proxyopen_unknownrrrr})rrrOrprtrsurltyperNrh	proxyhostrrrir4s              rSrMzURLopener.opensD7++,,&=>>>>	4g77 $w 7Hgh%%Bb'7333!'**	Gdl""L)E!+E!2!2GY'	22ND(/CCE 	||C%%tT""	8d.?&?&?
8..ugtDDD(($777	8|*wtT**3///*wtT**35558$				8	8	8.#..C7	8s/E$
E$$F?FFcJ	t|\}}tdd|)N	url errorzunknown url typerr})rrrOrrNs     rSrzURLopener.open_unknowns)=w''	ck#5t<<<rTcP	t|\}}tdd|z|)Nrzinvalid proxy for %sr)rrhrrOrrNs      rSrzURLopener.open_unknown_proxys.=w''	ck#9D#@%HHHrTc	tt|}|jr||jvr
|j|St|\}}|z|r|dkrr	||}|}|tt|d|fS#t$rYnwxYw|
||}	|}	|rt|d}
nt|\}}t|pd\}}t|pd\}}t|pd\}}tj|d}
t!j|
\}}|j|tj|d}
	||	f}|j
||j|<d}d}d}d}d|	vrt+|	d	}|r
||||	||}|sn<|t/|z
}|
||dz
}|r
||||T	|
n#|
wxYw	|n#|wxYw|dkr||krt3d
||fz||S)NrXr_rYrr[r\rr]r^r`)r	rrrrrcrr5r
r}rMrrrdresplitextrgmkstemprrkfdopenrlrmrnror)rrNrprqrOrurl1rsrrtrugarbageresuffixfdrvrwrxrmryrzs                     rSretrievezURLopener.retrieves	;Ys^^$$>	'cT^33>#&&__
dTTV^^
))$//wwyy


#Jt$4$4Q$788$>>




YYsD
!
!%	ggiiG

*8T** *3
 *4:2 6 6
 +DJB 7 7
g *4:2 6 6
g))$//2!)!1&!9!9X ''111iD))
!7*>-*0DN3'#w..w'7899D3JxT2227GGBKKE CJJ&DIIe$$$MH!7"
8R6667				HHJJJJBHHJJJJ199&C, &((
(
s9A B99
CC C J BI1J 1JJ  J6c>	d}d}t|tr8t|\}}|r!t|\}}t	|}|}n|\}}t|\}}t|\}	}
|
}d}|	dkrd}nBt|
\}}
|rt|\}}|r	|	d||
}t|r|}|stdd|rIt	|}tj
|d}nd}|rIt	|}tj
|d}nd}||}
i}|rd|z|d<|rd|z|d<|r||d	<d
|d<|j
D]
\}}|||<|d|d
<|
d|||n|
d||	|
}n'#t jj$rt'dwxYwd|jcxkrdkr"nnt+||jd|z|jS|||j|j|j|j|S)Nrz://z
http errorr?r|zBasic %sr/rrrrJr@zContent-TyperrrMz$http protocol error: bad status liner1r2http:)rrr
rrrrrr}rrrrrrrRrr
BadStatusLinerstatusrr4
http_errorrsrT)rconnection_factoryrNrOuser_passwdproxy_passwdrrrealhostrr
proxy_authr	http_connrtrrrs                  rS_open_generic_httpzURLopener._open_generic_httpOs?
	c3	$'__ND(
%$.t$4$4!Tt}}HH ND(!+D!1!1L$&x00MGTCK}}&((!+D!1!1$A,6x,@,@)KG.5ggxxFH))$#DA7<AAA	"<00L),*=*=*?*?@@GGPPJJJ	!+..K#K$6$6$8$899@@IIDDD&&t,,		E-7*-DG)*	:(2T(9GO$	'&GFO
!(!_	$	$MFE#GFOO&IGN#fhg>>>>eXw???	C ,,..HH{(	C	C	CABBB	C(/''''C'''''hgm&o//
/??X[(,FF
FsH$H:cP	|tjj||SrV)rrrr;rrNrOs   rS	open_httpzURLopener.open_https" &&t{'A3MMMrTc	d|z}t||r6t||}|||||||}	n|||||||}	|	r|	S||||||S)Nz
http_error_%d)rrr)
rrNrserrcodeerrmsgrtrOrirrvs
          rSrzURLopener.http_errors	E
(4	%T4((F|R&'BBR&'4HH$f}&&sBIIIrTcR	|t||||drV)rrrrNrsrrrts      rSrzURLopener.http_error_defaults(L



Wfgt<<<rTcZtj||j|jS)N)rr)rrrrr)rrs  rS_https_connectionzURLopener._https_connections0;..t48M59^/EE
ErTc<	||j||SrV)rrrs   rS
open_httpszURLopener.open_httpss %**4+A3MMMrTc	t|tstd|dddkr=|dddkr/|dddkrt	d||S)	NzEfile error: proxy support for file protocol currently not implementedr;rfrrQz
localhost/r)rrrrrDrrs  rS	open_filezURLopener.open_files=#s##	dbcccrr7d??s1Q3x33qt9??3D3D3T3TLMMM'',,,rTcP	ddl}ddl}t|\}}t|}	t	j|}n,#t$r}t|j|j	d}~wwxYw|j
}	|j|j
d}
||d}|jd|pd|	|
fz}|s4|}
|dddkrd|z}
t!t#|d	||
St%|\}}|st'j|t+ft-zvrU|}
|dddkrd|z}
n |dd
dkrt/d|zt!t#|d	||
Std
)NrTrz6Content-Type: %s
Content-Length: %d
Last-modified: %s
rr_rQrrr;z./zAlocal file url may start with / or file:. Unknown url of type: %sz#local file error: not on local host)rrr
r5rdrr}rstrerrorrprrrrrrrrMrrrrthishostrD)rrNrrrrX	localnamererxrrrturlfilers               rSrzURLopener.open_local_files__
d &&		3GI&&EE	3	3	31:qz222	3};))%.)FF$$S))!,+%+G

"lD(3
455	GGBQBx3#d*d9d33WgFFF%%
d	G#D))y{{nxzz.IJJGBQBx3#d*bqbT!! !dgj!jkkkd9d33WgFFF<===sA
A*A%%A*c	t|tstdddl}t	|\}}|stdt|\}}t
|\}}|rt|\}}nd}t|}t|pd}t|pd}tj
|}|sddl}|j}nt|}t|\}}	t|}|d}
|
dd|
d}}
|
r|
ds
|
dd}
|
r
|
dsd|
d<|||d|
f}t#|jt&krFt)|jD]1}
|
|kr)|j|
}|j|
=|2	||jvrt-|||||
|j|<|sd}nd	}|	D]D}t/|\}}|d
kr|dvr|}E|j|||\}}|d|zd}d}|r|d
|zz
}||dkr|d|zz
}t9j|}t=||d|zS#t?$r}td||d}~wwxYw)NzCftp error: proxy support for ftp protocol currently not implementedrrrrQr\r_rrrrzftp:zContent-Type: %s
zContent-Length: %d
ftp error: ) rrrrr
rrrrrrrrrlrrrrnrMAXFTPCACHErrrrrrrrrrr	ftperrors)rrNrrrerrorrrrrXrrDrErrrrsrrrtrs                       rSopen_ftpzURLopener.open_ftpsH#s##	b`aaa__
d?8$>???%%
d%%
d	T 2 2vvft}}tzr""2&&#D))	MMM?DDt99D &&et}}zz##2#YRd0Q0QRR.Q.3aD$.t}++$-((

88
a(A
a(GGIII	9$-''tVT4>>
c"
$
)
))$//e::<<6))::: ;;==D M#.77dCCMR((#66q9EG
8/%77"w!||1G;;/88Gb'6C<888{{	9	9	9...//S8	9sC7K

K3K..K3c
	t|tstd	|dd\}}n#t$rtddwxYw|sd}|d}|dkr$d	||dvr||dzd}|d|}nd
}g}|dtj	dtj
tjz|d
|z|dkr;tj|
dd}nt|}|dt!|z|d
||d|}t%j|}t)j|}t-|||S)NzEdata error: proxy support for data protocol currently not implementedrr_z
data errorzbad data URLr;rrrrzDate: %sz%a, %d %b %Y %H:%M:%S GMTzContent-type: %srr|zlatin-1zContent-Length: %d
)rrrrrDr}rfindrkrstrftimegmtimerrrrrrnrrrrStringIOr)	rrNrOrsemirRr4rtfs	         rS	open_datazURLopener.open_data1s#s##	dbccc	899S!,,LT44	8	8	8,777	8	10Dzz#199DK//DFGG}H;DDH

:dm,G,0K	,D,DFFF	G	G	G

%,---x%dkk'&:&:;;BB9MMDD4==D

'#d))3444

2

4iinn+C00K!Wc***sAArVNNN)rrrrrrrrrrrrMrrrrrrrrErrr!rr,r6rrTrSr9r9sK ;.G!!!!4###%%%"8"8"8"8H====
IIII====BZFZFZFxNNNNJJJJ ===
N	E	E	E
	N	N	N	N--->>>@898989t'+'+'+'+'+'+rTr9ceZdZ	dZdZddZdZddZddZddZ	dd	Z
		ddZ		ddZdd
Z
ddZddZddZddZdZdS)r:cZtj|g|Ri|i|_d|_d|_dS)Nrr;)r9r
auth_cachetriesmaxtries)rrrs   rSrzFancyURLopener.__init__^s<41$111&111



rTc.	t||d|z|S)Nr)rrs      rSrz!FancyURLopener.http_error_defaultdsA"gw}g>>>rTNc	|xjdz
c_	|jrE|j|jkr5t|dr|j}n|j}|||dd|d|_S|||||||}|d|_S#d|_wxYw)Nr_http_error_500r'z)Internal Server Error: Redirect Recursionr)r;r<rr?rredirect_internal)	rrNrsrrrtrOrrvs	         rSr`zFancyURLopener.http_error_302hs3

a


	}
%t}!<!<4!1223.DD2DtCSG#%%DJJ	++CWf,3T;;FDJJDJNNNNsABB	Bc$d|vr	|d}nd|vr	|d}ndS|t|jdz|z|}t|}|jdvrt|||d|zz||||S)NrMrNr{rOz( Redirection to url '%s' is not allowed.)rrrrrVrrM)	rrNrsrrrtrOrIr]s	         rSr@z FancyURLopener.redirect_internalzs  Z(FF
g

U^FFF



S3.77F##?">>>FG"FOP#R))
)
yy   rTc8	|||||||SrVr`rrNrsrrrtrOs       rSrazFancyURLopener.http_error_301s#8""3GVWdKKKrTc8	|||||||SrVrCrDs       rSrbzFancyURLopener.http_error_303s#I""3GVWdKKKrTcn	||||||||S||||||SrV)r`rrDs       rSrczFancyURLopener.http_error_307D?<&&sB$OOO**3GVWMMMrTcn	||||||||S||||||SrV)rarrDs       rSrdzFancyURLopener.http_error_308rGrTFc,	d|vrt|||||||d}tjd|}	|	st|||||||	\}
}|
dkrt|||||||st||||||d|jzdz}|t||||St|||||S)Nr![ 	]*([^ 	]+)[ 	]+realm="([^"]*)"rretry__basic_authr9rrmatchrrrr
rrNrsrrrtrOr-stuffrNrVrris
             rSrzFancyURLopener.http_error_401sQ	=W,,((sB)0&'
C
C
C*+?GG	C((sB)0&'
C
C
C
<<>>W$$((sB)0&'
C
C
C	((sB


$)#m3<%74%%c5111%74%%c5$777rTc,	d|vrt|||||||d}tjd|}	|	st|||||||	\}
}|
dkrt|||||||st||||||d|jzdz}|t||||St|||||S)NrrJrretry_proxy_rLrMrOs
             rSrzFancyURLopener.http_error_407sQ	=w..((sB)0&'
C
C
C,-?GG	C((sB)0&'
C
C
C
<<>>W$$((sB)0&'
C
C
C	((sB


	)M9<%74%%c5111%74%%c5$777rTct|\}}d|z|z}|jd}t|\}}	t|	\}	}
|	ddz}|	|d}	||	||\}}
|s|
sdSt|ddt|
dd|	}	d|	z|
z|jd<|||S|||S)Nhttp://rrgr_rrr{r
rxrrget_user_passwdr
rMrrNrrOrrrIrhrr
proxyselectorrrors              rSretry_proxy_http_basic_authz*FancyURLopener.retry_proxy_http_basic_auths#ChT!H,V$'..#-i#8#8 	=NN3!#abbM	++Iua@@f,,"'2"6"6"6"6"6"'R"8"8"8"8"8))E	(94}DV<99V$$$99VT***rTct|\}}d|z|z}|jd}t|\}}	t|	\}	}
|	ddz}|	|d}	||	||\}}
|s|
sdSt|ddt|
dd|	}	d|	z|
z|jd<|||S|||S)Nhttps://rrgr_rrr{rUrWs              rSretry_proxy_https_basic_authz+FancyURLopener.retry_proxy_https_basic_auths#Chd"X-W%'..#-i#8#8 	=NN3!#abbM	++Iua@@f,,"'2"6"6"6"6"6"'R"8"8"8"8"8))E	 *Y 6 FW<99V$$$99VT***rTcdt|\}}|ddz}||d}||||\}}|s|sdSt|ddt|dd|}d|z|z}	|||	S||	|S)Nrgr_rrr{rTr
rrVr
rM
rrNrrOrrrrorrIs
          rSrz$FancyURLopener.retry_http_basic_auth	s#ChIIcNNQABBx++D%;;f,,"4b11111"633333TT;T!H,<99V$$$99VT***rTcdt|\}}|ddz}||d}||||\}}|s|sdSt|ddt|dd|}d|z|z}	|||	S||	|S)Nrgr_rrr{r[r^r_s
          rSretry_https_basic_authz%FancyURLopener.retry_https_basic_auth	s#ChIIcNNQABBx++D%;;f,,"4b11111"633333TT;d"X-<99V$$$99VT***rTrc|dz|z}||jvr|r	|j|=n
|j|S|||\}}|s|r||f|j|<||fS)Nrg)rr:prompt_user_passwd)rrrrrrors       rSrVzFancyURLopener.get_user_passwd	sckDJJLL($/!!
,OC((s++..tU;;f@6@4.4?3/V|rTc		ddl}	td|d|d}|d|d|d|d}||fS#t$rtYdSwxYw)NrzEnter username for z at z: zEnter password for z in r)getpassinputKeyboardInterruptprint)rrrrerors      rSrcz!FancyURLopener.prompt_user_passwd)	s1	5EEE444HIID___uuuddd&$%%F< 			GGG::	s8AAArV)NFrZ)rrrrrr`r@rarbrcrdrrrYr\rrarVrcrrTrSr:r:[sgI???$!!!8LLLLLLLLNNNNNNNNFJ88882FJ88882++++$++++$++++++++				




rTr:cH	ttjdatS)Nr)
_localhostrrrrTrSrr9	s!B)+66
rTc	tv	ttjtjdan<#tj$r*ttjddaYnwxYwtS)Nr;r)	_thishostrrrrrrrTrSr$r$A	s6	Gf5f6H6J6JKKANOOII	G	G	Gf5kBB1EFFIII	Gs8A6A<;A<c6	tddl}|jatSr)
_ftperrorsrr)rs rSr+r+L	s";


&
rTcH	ttjdatSr)
_noheadersrrrrTrS	noheadersrqU	s!/.r22
rTc@eZdZ			d
dZdZdZdZdZdZd	Z	dS)rNTc||_||_||_||_||_||_d|_||_	|dS#|	xYwr)
rorrrrrPrefcount	keepaliveinitr)rrorrrrrPrs        rSrzftpwrapper.__init__b	si				
#	IIKKKKK	JJLLLsAA'cVddl}d|_||_|j|j|j|j|j|j	|j
d|j}|j
|dS)NrrQ)rbusyFTPrPconnectrrrPloginrorrrcwd)rr_targets   rSrvzftpwrapper.initr	s


	::<<DIt|<<<ty$+...((49%%WrTcDddl}||dvrd}d}nd|z}d}	|j|n>#|j$r1||j|YnwxYwd}|rk|si	d|z}|j|\}}nE#|j$r8}t|dddkrtd	||Yd}~nd}~wwxYw|s|jd|r|j
}			|j|n%#|j$r}td
|z|d}~wwxYw	|j|	n#|j|	wxYwd|z}nd}|j|\}}d|_t|d
|j}
|xjdz
c_||
|fS)Nr)r'rzTYPE Ar_zTYPE zRETR r550r)z
ftp error: %rzLIST LISTr)rendtransferrPvoidcmdrrvntransfercmd
error_permrrpwdr|rxrmakefile
file_closertr)rrXrrcmdisdirrrrTrftpobjs           rSrzftpwrapper.retrfile{	s


:XsquudNcAE	"HS!!!! 	"	"	"IIKKKHS!!!!!	"	G	G
Gn $ 5 5c : :
gg$
G
G
Gv;;rr?e++"#9#9#9::F,++++
G	7HX&&&
hllnn&MT****!,MMM&'?@@fLM+HLL%%%%DHLL%%%%n H11#66MD'	dmmD114?CC





  sSA8B?B
"B--
C/7.C**C/+EF
E(E##E((FF#c|jsdSd|_	|jdS#t$rYdSwxYwr)rxrPvoidrespr+rs rSrzftpwrapper.endtransfer	s]y	F		H{{			DD	s-AAcVd|_|jdkr|dSdS)NFr)rurt
real_closers rSrzftpwrapper.close	s4=AOOrTc||xjdzc_|jdkr|js|dSdSdS)Nr_r)rrtrurrs rSrzftpwrapper.file_close	s\



=AdnOOrTc|	|jdS#t$rYdSwxYwrV)rrPrr+rs rSrzftpwrapper.real_close	sW	HNN{{			DD	s1AA)NT)
rrrrrvrrrrrrrTrSrr_	sE?C  *!*!*!X
rTrc	i}tjD]6\}}|}|r|dddkr
|||dd<7dtjvr|ddtjD]U\}}|dddkrB|}|r|||dd<7||dddV|S)Ni_proxyREQUEST_METHODr)rdenvironrrr)rxrirs   rSgetproxies_environmentr	sGz''))''ezz||	'T"##Y(**!&GD"I
2:%%FD!!!z''))--e9  ::<<D
-%*SbS	""D"It,,,NrTc	|t}	|d}n#t$rYdSwxYw|dkrdS|}t|\}}|dD]}|}|rj|d}|}||ks||krdSd|z}||s||rdSdS)NnoF*Tr.)rrrrrrlstripr)rrxno_proxyhostonlyrris      rSproxy_bypass_environmentr	s (**4=uu3t::<<D%%NHds##		zz||	;;s##D::<<D444<<tt:D  &&
$--*=*=
tt5s
**c	ddlm}t|\}}d}d|vr
|drdSd}|ddD]}|stjd	|}||1	tj|}||}n#t$rYKwxYw||d
}	|d}
|
/d|d
	dd
zz}
nt|
d
d}
|
dks|
d
krd
|
z
}
||
z	|	|
z	krdS|||rdSdS)Nr)fnmatchc|d}ttt|}t	|dkr|gdzdd}|ddz|ddzz|dd	zz|d
zS)Nrr:)rrrrrr_rr;rr)rrrrlrn)ipAddrrs  rSip2numz,_proxy_bypass_macosx_sysconf.<locals>.ip2num
sS!!Se__%%u::??\\\)2A2.EaB58r>2eAh!mDuQxOOrTrexclude_simpleT
exceptionsrz(\d+(?:\.\d+)*)(/\d+)?r_r;r F)rrrrrNrrr}groupcountrl)rproxy_settingsrrrrhostIPrrJrmasks           rS_proxy_bypass_macosx_sysconfr
s
 %%NHdPPP$*+	4
F##L"55hH.66=~#1(;;F#VF^^FFH6!''!**%%D771::D|AGGAJJ,,S11A5648}}axx4"999D$DDL11tt2WT5
!
!	44	5s"B
BBdarwin)_get_proxy_settings_get_proxiesc>t}t||SrV)rr)rrs  rSproxy_bypass_macosx_sysconfrK
s,..+D.AAArTc 	tSrV)rrrTrSgetproxies_macosx_sysconfrO
s	
~~rTcb	t}|rt||St|SrV)rrrrrxs  rSrrY
s:	)**	5+D':::.t444rTc:tp
tSrV)rrrrTrSr6r6f
s%''F+D+F+FFrTc,	i}	ddl}n#t$r|cYSwxYw	||jd}||dd}|rt||dd}d|vrd|vrd|}|dD]J}|dd\}}tj	d	|s|d
vrd|z}n|dkrd
|z}|||<K|
drPtjdd|d}|
dp||d<|
dp||d<|n#tttf$rYnwxYw|S)Nr;Software\Microsoft\Windows\CurrentVersion\Internet SettingsProxyEnableProxyServerrrr.zhttp={0};https={0};ftp={0}r_z
(?:[^/:]+)://)rrrPrTsockszsocks://z	^socks://z	socks4://rr)winregImportErrorOpenKeyHKEY_CURRENT_USERQueryValueExrrrrrNrrCloser}rDr)rxrinternetSettingsproxyEnableproxyServerpraddresss        rSgetproxies_registryrk
s	
	MMMM			NNN	"	%~~f.FN P P --.>/<>>>?AK
G!&"5"56F7D#F#FFG#IJJk))c.D.D">"E"Ek"R"RK$**3//
0
0A()Q%Hg8OW==;#'???&/'&9GG%00&07&:G(/GH%%;;w''G f\;@PQQG&-kk&&9&9&DWGFO'.{{7';';'FwGG$""$$$$Y/			
D		
s
EE77FFc<	tp
tSrV)rrrrTrSr6r6
s!	&''@+>+@+@@rTcx	ddl}n#t$rYdSwxYw	||jd}||dd}t||dd}n#t$rYdSwxYw|r|sdSt|\}}|g}	tj	|}||kr|
|n#t$rYnwxYw	tj|}||kr|
|n#t$rYnwxYw|d}|D]z}	|	dkrd|vrdS|	
dd	}	|	
d
d}	|	
dd}	|D]&}
tj|	|
tjrdS'{dS)
Nrrr
ProxyOverrider.z<local>rr_z\.rz.*?)rrrrrrr}rrrrkgetfqdnrrHrrNr)rrrr
proxyOverriderawHostraddrfqdnrrs           rSproxy_bypass_registryr
s]	MMMM			11			%~~f.FN P P --.>/<>>>?AK 3 34D5D!F!FFG!IJJMM			11		-	1"4((
y	'00DwD!!!			D		>'**DwD!!!			D	
&++C00
!				Dy  g%%11<<U++D<<U++D<<T**D

8D#rt,,111
qsB
A A::
BB'/C
C$#C$(/D
D%$D%cb	t}|rt||St|SrV)rrrrs  rSrr
s:	)**	/+D':::(...rTr7rV)}rrrrhttp.clientrrrd	posixpathrrrXrrrgrarAurllib.errorrrrurllib.parserrrr	r
rrr
rrrrrrrrrrurllib.responserrrFrEr__all__version_inforrLrr1r2rjr7r8rASCIIrrrrr3rr0rrrqr r!r"r#r$r%r&urandomrr'r(r)r2r*rrrKrkrr/rrr+rr,r-r.r*ri
nturl2pathr5r4rr9r:rjrrlr$rnr+rprqrrrrplatform_scproxyrrrrrr6rrrrTrS<module>rs	Cf






												











CBBBBBBBBB""""""""""""""""""""""""""""""""""""""""
54444444JJJIIIII
$(!,,
F$BM+45$M+M+M+M+M+^====~rz(BH-- k"k"k"k"k"k"k"k"ZI+I+I+I+I+I+I+I+^"""H88888888&########";;;;;k;;;n2n2n2n2n2+n2n2n2b,,,B)>)>)>)>)>;)>)>)>V=*=*=*=*=*=*=*=*@GGGGGoGGG33333#B333>k#k#k#k#k#k#k#k#^3[4k zOOOOOOOOdK)B$




[*C


sssss+sssl33333%33374;)**#88888*888NN>"""#####+###$66666[666
)*)*)*V1111111111+111111f7,7,7,7,7,7,7,7,r33333j333j:::::+:::B7d??555555555!!!
z+z+z+z+z+z+z+z+z
XXXXXYXXXz

	

aaaaaaaaH>    J>>>B<8::::::::BBB555GGGGGW__///bAAA000d/////(J+LLLs=BB
B