JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbrў 7Re4Xc @sMddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl mZmZmZddlmZmZddlmZmZmZmZmZmZmZmZmZddlmZddl m!Z!ddl"m#Z#m$Z$ddl%m&Z&dd l'm(Z(m)Z)dd l*m+Z+dd l,m-Z-m.Z.dd l/m0Z0dd l1m2Z2ddddddddddg Z3ddZ4Gddde(Z5Gddde6Z7Gddde&Z8Gd d!d!e#j9Z:ddd"dZ<ej=d#ej>Z?ej=d$ej>Z@d%dZAd&dZBej=d'ej>ZCej=d(ej>ZDd)dZEd*dZFd:d+dZHd,d-ZId.dZJd/dZKd0d1ZLd2d3ZMd4d5ZNd6d7ZOddd8dZPdd9dZQdS(;iN(uurllibuurlparseu raw_input(uInstallationErroru HashMismatch( usplitexturmtreeu format_sizeu display_pathu backup_diruask_path_existsu unpack_fileucreate_download_cache_folderucache_download(uvcs(ulogger(urequestsusix(u BaseAdapter(uAuthBaseu HTTPBasicAuth(uIncompleteRead(u InvalidURLuChunkedEncodingError(uResponse(uCaseInsensitiveDictuget_file_contentuis_urlu url_to_pathu path_to_urluis_archive_fileuunpack_vcs_linkuunpack_file_urlu is_vcs_urlu is_file_urluunpack_http_urlcCs5tj}|dkr'tj}n|dkrdtjjtjjtjjf}tjjdkrdj |tjjg}qn<|dkrtj}n!|dkrtj}nd}ytj }tj }Wnt k rd}d}YnXd j d t jd ||fd ||fgS( u,Return a string representing the user agent.uCPythonuPyPyu%s.%s.%sufinaluuJythonu IronPythonuUnknownu upip/%su%s/%s(uplatformupython_implementationupython_versionusysupypy_version_infoumajoruminorumicrou releaselevelujoinusystemureleaseuIOErrorupipu __version__(u_implementationu_implementation_versionup_systemu p_release((u%/tmp/pip-zej_zi-build/pip/download.pyu user_agent$s2           u user_agentcBsG|EeZdZd ddZddZddZddZd S( uMultiDomainBasicAuthcCs||_i|_dS(N(u promptingu passwords(uselfu prompting((u%/tmp/pip-zej_zi-build/pip/download.pyu__init__Hs uMultiDomainBasicAuth.__init__cCstj|j}|jjddd}tj|dd|f|dd|_|jj|d\}}|dkr|j|j\}}n|s|r||f|j||jddS|dfSdS(Nu@iiu:(NN(ursplitusplituNone(uselfunetlocuuserinfo((u%/tmp/pip-zej_zi-build/pip/download.pyuparse_credentialss    u&MultiDomainBasicAuth.parse_credentialsNT(u__name__u __module__u __qualname__uTrueu__init__u__call__u handle_401uparse_credentials(u __locals__((u%/tmp/pip-zej_zi-build/pip/download.pyuMultiDomainBasicAuthFs  "uMultiDomainBasicAuthcBsS|EeZdZddZddZd d d ddZeddZ d S( uLocalFSResponsecCs ||_dS(N(ufileobj(uselfufileobj((u%/tmp/pip-zej_zi-build/pip/download.pyu__init__suLocalFSResponse.__init__cCst|j|S(N(ugetattrufileobj(uselfuname((u%/tmp/pip-zej_zi-build/pip/download.pyu __getattr__suLocalFSResponse.__getattr__cCs|jj|S(N(ufileobjuread(uselfuamtudecode_contentu cache_content((u%/tmp/pip-zej_zi-build/pip/download.pyureadsuLocalFSResponse.readcs9GdddtGfdddt}|S(NcBs,|EeZdZddZddZdS(u7LocalFSResponse._original_response..FakeMessagecSsgS(N((uselfuheader((u%/tmp/pip-zej_zi-build/pip/download.pyu getheaderssuBLocalFSResponse._original_response..FakeMessage.getheaderscSsgS(N((uselfuheaderudefault((u%/tmp/pip-zej_zi-build/pip/download.pyuget_allsu?LocalFSResponse._original_response..FakeMessage.get_allN(u__name__u __module__u __qualname__u getheadersuget_all(u __locals__((u%/tmp/pip-zej_zi-build/pip/download.pyu FakeMessages u FakeMessagecs,|EeZdZefddZdS(u8LocalFSResponse._original_response..FakeResponsecsS(N((uself(u FakeMessage(u%/tmp/pip-zej_zi-build/pip/download.pyumsgsu<LocalFSResponse._original_response..FakeResponse.msgN(u__name__u __module__u __qualname__upropertyumsg(u __locals__(u FakeMessage(u%/tmp/pip-zej_zi-build/pip/download.pyu FakeResponsesu FakeResponse(uobject(uselfu FakeResponse((u FakeMessageu%/tmp/pip-zej_zi-build/pip/download.pyu_original_responsesu"LocalFSResponse._original_responseNF( u__name__u __module__u __qualname__u__init__u __getattr__uNoneuFalseureadupropertyu_original_response(u __locals__((u%/tmp/pip-zej_zi-build/pip/download.pyuLocalFSResponses  uLocalFSResponsecBs;|EeZdZdddddddZddZdS(uLocalFSAdapterc Cstj|j}|jjdkr=td|jntj|ddd|dd}t|} t} d| _|| _t j | } t j j | jdd} titj| dpd d 6| jd 6| d 6| _tt| d | _| jj| _| S(Nu localhostu)Invalid URL %r: Only localhost is allowediuiiuusegmtiu text/plainu Content-TypeuContent-Lengthu Last-Modifiedurb(uT(uurlparseuurlunetloculoweru InvalidURLu urlunparseu url_to_pathuResponseu status_codeuosustatuemailuutilsu formatdateust_mtimeuTrueuCaseInsensitiveDictu mimetypesu guess_typeust_sizeuheadersuLocalFSResponseuopenurawuclose( uselfurequestustreamutimeoutuverifyucertuproxiesu parsed_urlureal_urlupathnameurespustatsumodified((u%/tmp/pip-zej_zi-build/pip/download.pyusends$+     uLocalFSAdapter.sendcCsdS(N((uself((u%/tmp/pip-zej_zi-build/pip/download.pyuclosesuLocalFSAdapter.closeN(u__name__u __module__u __qualname__uNoneusenduclose(u __locals__((u%/tmp/pip-zej_zi-build/pip/download.pyuLocalFSAdapters uLocalFSAdaptercs>|EeZdZdZfddZfddZS(u PipSessioncsLtt|j||t|jdCs upath_to_url..ufile:///( uosupathunormpathuabspathu splitdriveusplitusepujoinulstrip(upathudriveufilepathuurl((u%/tmp/pip-zej_zi-build/pip/download.pyu path_to_url;scCs0d }t|dj}||kr,d Sd S( u9Return True if `name` is a considered as an archive file.u.zipu.tar.gzu.tar.bz2u.tgzu.taru .pybundleu.whli(u.zipu.tar.gzu.tar.bz2u.tgzu.taru .pybundleu.whlTF(usplitextuloweruTrueuFalse(unameuarchivesuext((u%/tmp/pip-zej_zi-build/pip/download.pyuis_archive_fileIs  cCs3t|}|r"|j|n |j|dS(N(u_get_used_vcs_backenduexportuunpack(ulinkulocationu only_downloadu vcs_backend((u%/tmp/pip-zej_zi-build/pip/download.pyuunpack_vcs_linkSs cCs=x6tjD]+}|j|jkr ||j}|Sq WdS(N(uvcsubackendsuschemeuschemesuurl(ulinkubackendu vcs_backend((u%/tmp/pip-zej_zi-build/pip/download.pyu_get_used_vcs_backend[su_get_used_vcs_backendcCstt|S(N(uboolu_get_used_vcs_backend(ulink((u%/tmp/pip-zej_zi-build/pip/download.pyu is_vcs_urlbscCs|jjjdS(Nufile:(uurluloweru startswith(ulink((u%/tmp/pip-zej_zi-build/pip/download.pyu is_file_urlfscCs|jtj|jjkrQtjd|j||jftd|n|j|jkrtjd||j|jftd|j|fndS(NuPHash digest size of the package %d (%s) doesn't match the expected hash name %s!u!Hash name mismatch for package %su?Hash of the package %s (%s) doesn't match the expected hash %s!uBad %s hash for package %s( u digest_sizeuhashlibunewu hash_nameuloggerufatalu HashMismatchu hexdigestuhash(u download_hashulink((u%/tmp/pip-zej_zi-build/pip/download.pyu _check_hashjs  u _check_hashc Csytj|j}Wn6ttfk rNtjd|j|fdSYnXt|d}x)|j d}|szPn|j |qa|j |S(Nu'Unsupported hash name %s for package %surbi( uhashlibunewu hash_nameu ValueErroru TypeErroruloggeruwarnuNoneuopenureaduupdateuclose(u target_fileulinku download_hashufpuchunk((u%/tmp/pip-zej_zi-build/pip/download.pyu_get_hash_from_fileus  u_get_hash_from_filec st|d}d}|jro|jroytj|j}Wqotk rktjd|j|fYqoXnyt j d}Wn!tt t fk rd}YnXd}|dkp| }|j }z |r|rtjd|t|fq tjd|ntjd |tjd |fd d } x| d D]} |t| 7}|r|stjdt|qtjdd||t|fn|dk r|j| n|j| qPW|jWd|rtjdt|nX|S(Nuwbu'Unsupported hash name %s for package %sucontent-lengthii(iuDownloading %s (%s): uDownloading %s (unknown size): uDownloading %suDownloading from URL %sc3sydy,x%jj|ddD] }|VqWWn1tk rb}zt|WYdd}~XnXWn9tk rx$jj|}|sPn|VqwYnXdS(Nudecode_contentF(urawustreamuFalseuIncompleteReaduChunkedEncodingErroruAttributeErroruread(u chunk_sizeuchunkue(uresp(u%/tmp/pip-zej_zi-build/pip/download.pyu resp_reads  # u _download_url..resp_readiu%su %3i%% %sidu %s downloadedi@(uopenuNoneuhashu hash_nameuhashlibunewu ValueErroruloggeruwarnuintuheadersuKeyErroru TypeErrorushow_urlustart_progressu format_sizeunotifyuinfoulenu show_progressuupdateuwriteucloseu end_progress( urespulinku temp_locationufpu download_hashu total_lengthu downloadedu show_progressushow_urlu resp_readuchunk((urespu%/tmp/pip-zej_zi-build/pip/download.pyu _download_urlsF "   ( u _download_urlcCsd}tjj||j}tjj|rtdt|d }|dkr^d }q|dkrt j dt|tj |q|dkrt |}t j dt|t|ft j||qn|rt j||t jdt|ndS( Nu/The file %s exists. (i)gnore, (w)ipe, (b)ackup uiuwubu Deleting %suBacking up %s to %suSaved %sT(uiuwubF(uTrueuosupathujoinufilenameuexistsuask_path_existsu display_pathuFalseuloggeruwarnuremoveu backup_dirushutilumoveucopyunotify(ufilenameulocationu content_typeulinkucopyudownload_locationuresponseu dest_file((u%/tmp/pip-zej_zi-build/pip/download.pyu _copy_files&      u _copy_filec0Cs|dkrt}ntjdd}d}|jjddd}d}d} d} d} |rtjj |t j |d} | d} tjj | otjj | }tjj |st|qnd} |rtjj ||j} tjj | sd} qn| r| }tj| d} tjd| |jrt||} yt| |Wqtk rtjd |d}tj| d} YqXqn|r| rt| }|jj} WdQX| }tjd | |jr|jrt| |} yt| |Wqtk rtjd |d}tj| tj| d}YqXqn|s-y#|j|d d}|j WnHt!j"k r}z%tj#d |j$j%|fWYdd}~XnX|j&jdd} |j}|j&jd}|r^t'j(|\}}|jdpX|}nt)|d}|stj*| }|r||7}qn| r|j|jkrtjj)|jd}|r||7}qntjj ||}t+|||} |jr-|jr-t| |q-n|rP| rPt,||| |nt-||| || r| rt.| || n|p| stj|ntj/|dS(Nu-unpackupip-u#iiuu .content-typeuFile was already downloaded %su;Previously-downloaded file %s has bad hash, re-downloading.uUsing download cache from %su,Cached file %s has bad hash, re-downloading.ustreamuHTTP error %s while getting %su content-typeucontent-dispositionufilenameFT(0uNoneu PipSessionutempfileumkdtempuurlusplituFalseuosupathujoinuurllibuquoteuexistsuisdirucreate_download_cache_folderufilenameu mimetypesu guess_typeuloggerunotifyuhashu_get_hash_from_fileu _check_hashu HashMismatchuwarnuunlinkuopenureadustripu hash_nameugetuTrueuraise_for_statusurequestsu HTTPErrorufataluresponseu status_codeuheadersucgiu parse_headerusplitextuguess_extensionu _download_urlu _copy_fileu unpack_fileucache_downloadurmdir(ulinkulocationudownload_cacheu download_dirusessionutemp_diru temp_locationu target_urlualready_cachedu cache_fileucache_content_type_fileu download_hashualready_downloadedu content_typeufpurespuexcufilenameucontent_dispositionutypeuparamsuext((u%/tmp/pip-zej_zi-build/pip/download.pyuunpack_http_urls                 c Cst|j}d}tjj|r`tjj|rFt|ntj||dddS|j rt ||}t ||n|rMtjj ||j}tjj|rMtj|d}tjd||j rAt ||}yt ||d}WqGtk r=tjd|tj|YqGXqJd}qMn|r\|} n|} tj| d}t| ||||r| rt| |||ndS(NusymlinksiuFile was already downloaded %su;Previously-downloaded file %s has bad hash, re-downloading.FT(u url_to_pathuurl_without_fragmentuFalseuosupathuisdirurmtreeushutilucopytreeuTrueuhashu_get_hash_from_fileu _check_hashujoinufilenameuexistsu mimetypesu guess_typeuloggerunotifyu HashMismatchuwarnuunlinku unpack_fileu _copy_file( ulinkulocationu download_diru link_pathualready_downloadedulink_path_hashu download_pathu content_typeu download_hashu from_path((u%/tmp/pip-zej_zi-build/pip/download.pyuunpack_file_urlRsB         F(Rucgiu email.utilsuemailuhashlibugetpassu mimetypesuosuplatformureushutilusysutempfileupipupip.backwardcompatuurllibuurlparseu raw_inputupip.exceptionsuInstallationErroru HashMismatchupip.utilusplitexturmtreeu format_sizeu display_pathu backup_diruask_path_existsu unpack_fileucreate_download_cache_folderucache_downloadupip.vcsuvcsupip.loguloggeru pip._vendorurequestsusixupip._vendor.requests.adaptersu BaseAdapterupip._vendor.requests.authuAuthBaseu HTTPBasicAuthupip._vendor.requests.compatuIncompleteReadupip._vendor.requests.exceptionsu InvalidURLuChunkedEncodingErrorupip._vendor.requests.modelsuResponseupip._vendor.requests.structuresuCaseInsensitiveDictu__all__u user_agentuMultiDomainBasicAuthuobjectuLocalFSResponseuLocalFSAdapteruSessionu PipSessionuNoneuget_file_contentucompileuIu _scheme_reu_url_slash_drive_reuis_urlu url_to_pathu _drive_reu _url_drive_reu path_to_urluis_archive_fileuFalseuunpack_vcs_linku_get_used_vcs_backendu is_vcs_urlu is_file_urlu _check_hashu_get_hash_from_fileu _download_urlu _copy_fileuunpack_http_urluunpack_file_url(((u%/tmp/pip-zej_zi-build/pip/download.pyush            @  "M#,         < y