JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbrў f$c@s\dZddlZdgZejdZddZddZedkrXendS( u! Generic dylib path manipulation iNu dylib_infou(?x) (?P^.*)(?:^|/) (?P (?P\w+?) (?:\.(?P[^._]+))? (?:_(?P[^._]+))? \.dylib$ ) cCs#tj|}|sdS|jS(u1 A dylib name can take one of the following four forms: Location/Name.SomeVersion_Suffix.dylib Location/Name.SomeVersion.dylib Location/Name_Suffix.dylib Location/Name.dylib returns None if not found or a mapping equivalent to: dict( location='Location', name='Name.SomeVersion_Suffix.dylib', shortname='Name', version='SomeVersion', suffix='Suffix', ) Note that SomeVersion and Suffix are optional and may be None if not present. N(uDYLIB_REumatchuNoneu groupdict(ufilenameuis_dylib((u:/opt/alt/python33/lib64/python3.3/ctypes/macholib/dylib.pyu dylib_infoscCsddddddd}tddks3ttddksKttd|dddksottd |dd dd d ksttd |ddddksttd|ddddksttd|ddddd kstdS(Nc Ss%td|d|d|d|d|S(Nulocationunameu shortnameuversionusuffix(udict(ulocationunameu shortnameuversionusuffix((u:/opt/alt/python33/lib64/python3.3/ctypes/macholib/dylib.pyud.s utest_dylib_info..ducompletely/invaliducompletely/invalide_debugu P/Foo.dylibuPu Foo.dylibuFoouP/Foo_debug.dylibuFoo_debug.dylibusuffixudebugu P/Foo.A.dylibu Foo.A.dylibuAuP/Foo_debug.A.dylibuFoo_debug.A.dylibu Foo_debuguP/Foo.A_debug.dylibuFoo.A_debug.dylib(uNoneu dylib_infouAssertionError(ud((u:/opt/alt/python33/lib64/python3.3/ctypes/macholib/dylib.pyutest_dylib_info-s$*''utest_dylib_infou__main__(u__doc__ureu__all__ucompileuDYLIB_REu dylib_infoutest_dylib_infou__name__(((u:/opt/alt/python33/lib64/python3.3/ctypes/macholib/dylib.pyus