JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr i f#@sddlZddlZddlZddlZejdkrfddZddZddZnejd krd dZnejd krejd krdd l m Z ddZnejd krddl Z ddl Z ddZejdkrddZn ddZejjd%rKddZddZqejdkrxddZdddZqdd Zd!dZnd"d#Zed$krendS)&NntcCsd}tjj|}|d kr(dS|t|}tj|djdd\}}t|dd d}t|ddd}|dkrd }n|dkr||SdS) zReturn the version of MSVC that was used to build Python. For Python 2.3 and up, the version number is included in sys.version. For earlier versions, assume the compiler is MSVC 6. zMSC v.N g$@r)sysversionfindlensplitint)prefixisrestZ majorVersionZ minorVersionr0/opt/alt/python34/lib64/python3.4/ctypes/util.py_get_build_versions %   rcCsot}|dkrdS|dkr.d}nd|d}ddl}d|jjkrg|d7}n|d S) z%Return the name of the VC runtime dllNrmsvcrtzmsvcr%d rz_d.pyddz.dll)rimportlib.machinery machineryEXTENSION_SUFFIXES)r Zclibname importlibrrr find_msvcrts      rcCs|dkrtSxtjdjtjD]l}tjj||}tjj|r^|S|jj dryq-n|d}tjj|r-|Sq-WdS)NcmPATHz.dll)rr ) rosenvironrpathseppathjoinisfilelowerendswith)nameZ directoryZfnamerrr find_library0s   r+ZcecCs|S)Nr)r*rrrr+Fsposixdarwin) dyld_findc Cs\d|d|d||fg}x4|D],}yt|SWq(tk rSw(Yq(Xq(WdS)Nz lib%s.dylibz%s.dylibz%s.framework/%s) _dyld_find ValueError)r*Zpossiblerrrr+Ks   c Csdtj|}tj\}}tj|d|d|}z3tj|}z|j}Wd|j}XWdytj|Wnt k rYnXX|dkrt dntj ||}|sdS|j dS)Nz[^\(\)\s]*lib%s\.[^\(\)\s]*zif type gcc >/dev/null 2>&1; then CC=gcc; elif type cc >/dev/null 2>&1; then CC=cc;else exit 10; fi;LANG=C LC_ALL=C $CC -Wl,-t -o z 2>&1 -lrzgcc or cc command not foundr) reescapetempfileZmkstempr"closepopenreadunlinkFileNotFoundErrorOSErrorsearchgroup) r*exprZfdoutZccoutcmdfZtracervresrrr _findLib_gccZs&   rAZsunos5c Csj|s dSd|}tjtj|}|j}WdQXtjd|}|s]dS|jdS)Nz#/usr/ccs/bin/dump -Lpv 2>/dev/null z\[.*\]\sSONAME\s+([^\s]+)r) contextlibclosingr"r5r6r1r:r;)r>r=datar@rrr _get_sonameus rEc Cs|s dSd|}tj|}z|j}Wd|j}X|dkr^tdntjd|}|szdS|jdS)NzWif ! type objdump >/dev/null 2>&1; then exit 10; fi;objdump -p -j .dynamic 2>/dev/null rzobjdump command not foundz\sSONAME\s+([^\s]+)r)r"r5r6r4r9r1r:r;)r>r=dumpr?r@rrrrEs  freebsdopenbsd dragonflyc Csg|jd}g}y-x&|r@|jdt|jqWWntk rVYnX|pftjgS)N.r)rinsertrpopr0r maxsize)ZlibnamepartsZnumsrrr _num_versions $ rOc Cstj|}d||f}tjtjd}|j}WdQXtj||}|sttt |S|j dt |dS)Nz:-l%s\.\S+ => \S*/(lib%s\.\S+)z/sbin/ldconfig -r 2>/dev/nullkeyrr) r1r2rBrCr"r5r6findallrErAsortrO)r*Zenamer<r>rDr@rrrr+sc CstjjdsdS|r%d}nd}tjtj|L}xB|jD]4}|j}|jdrS|j d}qSqSWWdQX|sdSxF|j dD]5}tjj |d|}tjj|r|SqWdS)Nz /usr/bin/crlez*env LC_ALL=C /usr/bin/crle -64 2>/dev/nullz&env LC_ALL=C /usr/bin/crle 2>/dev/nullzDefault Library Path (ELF)::zlib%s.so) r"r%existsrBrCr5 readlinesstrip startswithrr&)r*is64r=r>linepathsdirZlibfilerrr _findLib_crles"  r]FcCstt||pt|S)N)rEr]rA)r*rYrrrr+scCsHddl}|jddkr7tjjd}ntjjd}idd6dd 6dd 6dd 6d d 6}|j|d}tjdtj||f}yt j ddgdt j dt j dt j didd6dd6>}tj ||jj}|r(tj|jdSWdQXWntk rCYnXdS)NrlrSz-32z-64z libc6,x86-64z x86_64-64z libc6,64bitzppc64-64z sparc64-64zs390x-64z libc6,IA-64zia64-64Zlibc6z\s+(lib%s\.[^\s]+)\s+\(%sz/sbin/ldconfigz-pstdinstderrstdoutenvCLC_ALLZLANGr)structZcalcsizer"unamemachinegetfsencoder1r2 subprocessPopenZDEVNULLPIPEr:rar6fsdecoder;r9)r*rergZmach_mapZabi_typeZregexpr@rrr_findSoname_ldconfigs0       rocCst|ptt|S)N)rorErA)r*rrrr+scCs,ddlm}tjdkrRt|jt|jdttdntjdkr(ttdttdttdtj d krt|j d t|j d t|j d t|j d q(t|j dt|j dttdndS)Nr)cdllrrr,r rbz2r-z libm.dylibzlibcrypto.dylibzlibSystem.dylibzSystem.framework/Systemzlibm.soz libcrypt.soZcrypt) Zctypesrpr"r*printrloadr+r platformZ LoadLibrary)rprrrtests" ru__main__)rGrHrI)r r"rBrjr*rrr+rtZctypes.macholib.dyldr.r/r1r3rArErXrOr]roru__name__rrrrs8