JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbro h@sdZddlZddlmZddlmZddlTzddlmZWn e y+ddZYnwgd Z ej d d d d gZ ej ddddgZddZd-ddZd-ddZd-ddZd-ddZd-ddZd-ddZd-d d!Zd-d"d#Zd-d$d%Zd.d&d'Zd.d(d)Zd*d+Zed,kredSdS)/z dyld emulation N)framework_info) dylib_info)*) _dyld_shared_cache_contains_pathcGstN)NotImplementedError)argsr ;/opt/alt/python310/lib64/python3.10/ctypes/macholib/dyld.pyr sr) dyld_findframework_findrrz~/Library/Frameworksz/Library/Frameworksz/Network/Library/Frameworksz/System/Library/Frameworksz~/libz/usr/local/libz/libz/usr/libcCs.|durtj}||}|durgS|dS)N:)osenvirongetsplit)envvarZrvalr r r dyld_env$s   rcCs|durtj}|dS)NZDYLD_IMAGE_SUFFIX)rrrrr r r dyld_image_suffix,s rcC t|dS)NZDYLD_FRAMEWORK_PATHrrr r r dyld_framework_path1 rcCr)NZDYLD_LIBRARY_PATHrrr r r dyld_library_path4rrcCr)NZDYLD_FALLBACK_FRAMEWORK_PATHrrr r r dyld_fallback_framework_path7rrcCr)NZDYLD_FALLBACK_LIBRARY_PATHrrr r r dyld_fallback_library_path:rrcCs(t|}|dur |S||fdd}|S)z>For a potential path iterator, add DYLD_IMAGE_SUFFIX semanticsNcssH|D]}|dr|dtd |dVn||V|VqdS)Nz.dylib)endswithlen)iteratorsuffixpathr r r _injectBs  z)dyld_image_suffix_search.._inject)r)r rr!r#r r r dyld_image_suffix_search=s r$ccs^t|}|durt|D] }tj||dVq t|D]}tj|tj|VqdSNname)rrrr"joinrbasename)r&r frameworkr"r r r dyld_override_searchKs  r*ccs<|dr|durtj||tddVdSdSdS)Nz@executable_path/) startswithrr"r'r)r&executable_pathr r r dyld_executable_path_search\s r-ccs|Vt|}|durt|}|D] }tj||dVqt|}|D]}tj|tj|Vq%|durI|sItD] }tj||dVq<|s\tD]}tj|tj|VqMdSdSr%) rrrr"r'rr(DEFAULT_FRAMEWORK_FALLBACKDEFAULT_LIBRARY_FALLBACK)r&rr)Zfallback_framework_pathr"Zfallback_library_pathr r r dyld_default_searchcs$ r0c Cstttt||t||t|||D] }tj|r|Sz t|r(|WSWqt y2Yqwt d|f)z: Find a library or framework using dyld semantics zdylib %s could not be found) r$chainr*r-r0rr"isfilerr ValueError)r&r,rr"r r r r ys"   r c Csd}zt|||dWSty}z|}WYd}~nd}~ww|d}|dkr0t|}|d7}tj|tj|d|}zz t|||dWWd}StyT|wd}w)z Find a framework using dyld semantics in a very loose manner. Will take input such as: Python Python.framework Python.framework/Versions/Current N)r,rz .framework)r r3rfindrrr"r'r()fnr,rerroreZ fmwk_indexr r r r s&   r cCs(i}tddks JtddksJdS)NzlibSystem.dylibz/usr/lib/libSystem.dylibzSystem.framework/Systemz2/System/Library/Frameworks/System.framework/System)r rr r r test_dyld_findsr9__main__r)NN)__doc__rZctypes.macholib.frameworkrZctypes.macholib.dylibr itertoolsZ_ctypesr ImportError__all__r" expanduserr.r/rrrrrrr$r*r-r0r r r9__name__r r r r sJ