ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙ V~gc@sWdZddlZddlZddlmZddlmZ ej ej dZ eZ de ddfdYZdd Zdd Zed dd d ZeddddZeddddZeddddZgZxQeeefD]@ZedeZereeejkrejeqqWeje[[dS(sWrapper to the POSIX crypt library call and associated functionality. Note that the ``methods`` and ``METHOD_*`` attributes are non-standard extensions to Python 2.7, backported from 3.3iN(t SystemRandom(t namedtuples./t_Methods name ident salt_chars total_sizecBseZdZdZRS(siClass representing a salt method per the Modular Crypt Format or the legacy 2-character crypt method.cCs d|jS(Ns(tname(tself((s*/opt/alt/python27/lib64/python2.7/crypt.pyt__repr__s(t__name__t __module__t__doc__R(((s*/opt/alt/python27/lib64/python2.7/crypt.pyRscCs[|dkrtd}n|jr/d|jnd}|djtjt|j7}|S(sGenerate a salt for the specified method. If not specified, the strongest available method will be used. This is a non-standard extension to Python 2.7, backported from 3.3 is$%s$tN(tNonetmethodstidenttjoint_srtsamplet _saltcharst salt_chars(tmethodts((s*/opt/alt/python27/lib64/python2.7/crypt.pytmksalts   "cCs:|dkst|tr*t|}ntj||S(sNReturn a string representing the one-way hash of a password, with a salt prepended. If ``salt`` is not specified or is ``None``, the strongest available method will be selected and a salt generated. Otherwise, ``salt`` may be one of the ``crypt.METHOD_*`` values, or a string as returned by ``crypt.mksalt()``. Note that these are non-standard extensions to Python 2.7's crypt.crypt() entrypoint, backported from 3.3: the standard Python 2.7 crypt.crypt() entrypoint requires two strings as the parameters, and does not support keyword arguments. N(R t isinstanceRRt_crypttcrypt(twordtsalt((s*/opt/alt/python27/lib64/python2.7/crypt.pyR'stCRYPTii tMD5t1ii"tSHA256t5ii?tSHA512t6ijR (RRtstringt_stringtrandomRt _SystemRandomt collectionsRt _namedtuplet ascii_letterstdigitsRRRR RRt METHOD_CRYPTt METHOD_MD5t METHOD_SHA256t METHOD_SHA512R t_methodt_resulttlent total_sizetappend(((s*/opt/alt/python27/lib64/python2.7/crypt.pyts(