JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrU QabJ @sHddlmZddlZddlZddlZddZddZddZd d ZdS) )absolute_importNcCsRtd}z |j}Wntk r*YdSXtj|_|}t|tsN|d}|S)z9Returns glibc version string, or None if not using glibc.Nascii) ctypesZCDLLgnu_get_libc_versionAttributeErrorZc_char_pZrestype isinstancestrdecode)Zprocess_namespacer version_strr 4/usr/lib/python3.8/site-packages/setuptools/glibc.pyglibc_version_string s    r cCsHtd|}|s$td|tdSt|d|koFt|d|kS)Nz$(?P[0-9]+)\.(?P[0-9]+)z=Expected glibc version with 2 components major.minor, got: %sFmajorminor)rematchwarningswarnRuntimeWarningintgroup)r required_major minimum_minormr r r check_glibc_version$s rcCst}|dkrdSt|||S)NF)r r)rrr r r r have_compatible_glibc4srcCst}|dkrdSd|fSdS)zTry to determine the glibc version Returns a tuple of strings (lib, version) which default to empty strings in case the lookup fails. N)rZglibc)r )Z glibc_versionr r r libc_verLsr) Z __future__rrrrr rrrr r r r s