ó zfc@sÝdZddlZddlZddlZddlZddddddd d d d d dddgZgedƒD]Zeeƒ^qsZ dZ d„Z dd„Z dd„Zd„Zd„ZejddƒZejddƒZd„Zd„Zi dd6dd6d d!6d"d#6d$d%6d&d'6d(d)6d*d+6d,d-6d.d/6d0d16d2d36d4d56d6d76d8d96d:d;6d<d=6d>d?6d@dA6dBdC6dDdE6dFdG6dHdI6dJdK6dLdM6dNdO6dPdQ6dRdS6dTdU6dVdW6dXdY6dZd[6ZejƒZejƒgeD]\ZZe^qýZegejƒD]\ZZeeeƒf^q%ƒZd\„Ze dd]„Z!d^„Z"e d_„Z#d`Z$e$d=d5Z%da„Z&db„Z'dc„Z(dd„Z)de„Z*df„Z+e,dgkrŮe*ƒndS(hs/RFC 3548: Base16, Base32, Base64 Data Encodingsi˙˙˙˙Ntencodetdecodet encodestringt decodestringt b64encodet b64decodet b32encodet b32decodet b16encodet b16decodetstandard_b64encodetstandard_b64decodeturlsafe_b64encodeturlsafe_b64decodeitcCsJt}x*|jƒD]\}}||t|ƒ7}||d@d>7}|jt|d?t|d ?d @t|d?d @t|d ?t|d ?d @t|d ?d @t|d?t|d @gƒqSWtj|ƒ}|dkrK|d dS|d krc|d dS|dkr{|d dS|dkr“|d dS|S(scEncode a string using Base32. s is the string to encode. The encoded string is returned. isis!HHBiiii iii iiiú˙˙˙s======iü˙˙˙s====iý˙˙˙s===ii˙˙˙˙t=( tdivmodtlentrangetstructtunpacktextendt_b32tabt EMPTYSTRINGR( Rtpartstquantatleftovertitc1tc2tc3R((s/usr/lib64/python2.7/base64.pyRŽs6 .          c Cs tt|ƒdƒ\}}|r0tdƒ‚n|rX|jtjdd|ƒƒ}n|rm|jƒ}nd}tjd|ƒ}|r˝t|j dƒƒ}|dkr˝|| }q˝ng}d}d} x‰|D]} t j | ƒ} | dkrtd ƒ‚n|t | | >7}| d 8} | dkrÖ|j tjd |ƒƒd}d} qÖqÖWtjd |ƒ} |dkrƒd } np|d krœ| d } nW|dkrľ| d } n>|dkrÎ| d } n%|dkrç| d } n tdƒ‚|j | ƒtj|ƒS(sGDecode a Base32 encoded string. s is the string to decode. Optional casefold is a flag specifying whether a lowercase alphabet is acceptable as input. For security purposes, the default is False. RFC 3548 allows for optional mapping of the digit 0 (zero) to the letter O (oh), and for optional mapping of the digit 1 (one) to either the letter I (eye) or letter L (el). The optional argument map01 when not None, specifies which letter the digit 1 should be mapped to (when map01 is not None, the digit 0 is always mapped to the letter O). For security purposes the default is None, so that 0 and 1 are not allowed in the input. The decoded string is returned. A TypeError is raised if s were incorrectly padded or if there are non-alphabet characters present in the string. isIncorrect paddingt01R;is(?P[=]*)$tpadi#sNon-base32 digit foundis%010xRii˙˙˙˙iiţ˙˙˙iiý˙˙˙iiü˙˙˙N(RGRHR"RRRtuppertretsearchtgroupt_b32revtgetRtappendRt unhexlifyRNR( Rtcasefoldtmap01RPRQtpadcharstmoROtacctshifttctvaltlast((s/usr/lib64/python2.7/base64.pyR¸sP"                  cCstj|ƒjƒS(scEncode a string using Base16. s is the string to encode. The encoded string is returned. (RthexlifyRX(R((s/usr/lib64/python2.7/base64.pyRscCsC|r|jƒ}ntjd|ƒr6tdƒ‚ntj|ƒS(suDecode a Base16 encoded string. s is the string to decode. Optional casefold is a flag specifying whether a lowercase alphabet is acceptable as input. For security purposes, the default is False. The decoded string is returned. A TypeError is raised if s is incorrectly padded or if there are non-alphabet characters present in the string. s [^0-9A-F]sNon-base16 digit found(RXRYRZR"RR_(RR`((s/usr/lib64/python2.7/base64.pyR s iLcCsŒx…tr‡|jtƒ}|s"PnxCt|ƒtkrg|jtt|ƒƒ}|sZPn||7}q%Wtj|ƒ}|j|ƒqWdS(sEncode a file.N(tTruetreadt MAXBINSIZERHRRtwrite(tinputtoutputRtnstline((s/usr/lib64/python2.7/base64.pyR$s cCsCx<tr>|jƒ}|sPntj|ƒ}|j|ƒqWdS(sDecode a file.N(RjtreadlineRR Rm(RnRoRqR((s/usr/lib64/python2.7/base64.pyR3s   cCs]g}xGtdt|ƒtƒD]-}|||t!}|jtj|ƒƒqWdj|ƒS(s4Encode a string into multiple lines of base-64 data.iR(RIRHRlR^RRR(RtpiecesRRtchunk((s/usr/lib64/python2.7/base64.pyR=s cCs tj|ƒS(sDecode a string.(RR (R((s/usr/lib64/python2.7/base64.pyRFsc CsQddl}ddl}y#|j|jddƒ\}}WnD|jk r}|j|_|GHd|jdGH|jdƒnXt}xj|D]b\}}|dkr°t}n|d krĹt}n|d krÚt}n|d krt ƒdSqW|r:|dd kr:t |dd ƒ}|||jƒWdQXn||j |jƒdS(sSmall test programi˙˙˙˙Nitdeutsusage: %s [-d|-e|-u|-t] [file|-] -d, -u: decode -e: encode (default) -t: encode and decode string 'Aladdin:open sesame'iis-es-ds-us-tt-trb( tsystgetopttargvterrortstderrtstdouttexitRRttest1topentstdin( RxRytoptstargsR#tfunctotatf((s/usr/lib64/python2.7/base64.pyttestMs.#     cCs5d}t|ƒ}t|ƒ}|Gt|ƒG|GHdS(NsAladdin:open sesame(RRtrepr(ts0ts1ts2((s/usr/lib64/python2.7/base64.pyRgs  t__main__(-t__doc__RYRJRRt__all__RIt_xtchrRRNRRRRR R RR$R%R R t _b32alphabetRRMtsortRRtdicttlongR\RtFalseRRR t MAXLINESIZERlRRRRRˆRt__name__(((s/usr/lib64/python2.7/base64.pyts`       %        7 *J