B Hg@sddlZddlZddlZddlZddlmZmZddlmZdddddd d d gZ e e d j d dZ ddZGdddeZeZdeed<ddZddZddZddZdd ZeedZdd ZeedZeedZddd ZdS)N) ascii_lettersdigits)errorsdecode_qencode_qdecode_bencode_blen_qlen_bdecodeencodes=([a-fA-F0-9]{2})cCst|dS)N)bytesfromhexgroupr )mr9/opt/alt/python37/lib64/python3.7/email/_encoded_words.pyArcCs|dd}t|gfS)N_ )replace_q_byte_subber)encodedrrrrCs c@s,eZdZdededZddZdS) _QByteMaps-!*+/asciicCs.||jkrt|||<nd|||<||S)Nz={:02X})safechrformat)selfkeyrrr __missing__Ms z_QByteMap.__missing__N)__name__ __module__ __qualname__rr rrr"rrrrrIsr_ cCsddd|DS)Ncss|]}t|VqdS)N) _q_byte_map).0xrrr Zszencode_q..)join)bstringrrrrYscCstdd|DS)Ncss|]}tt|VqdS)N)lenr))r*r+rrrr,]szlen_q..)sum)r.rrrr \scCst|d}|r ddd|nd}y$tj||dd|rDtgngfStjk rytj|ddtgfStjk ry"tj|dddttgfStjk r|tgfSXYnXYnXdS)Ns===rT)ZvalidateFs==) r/base64Z b64decoderZInvalidBase64PaddingDefectbinasciiErrorZInvalidBase64CharactersDefectZInvalidBase64LengthDefect)rZpad_errZmissing_paddingrrrrds     cCst|dS)Nr)r2Z b64encoder )r.rrrrscCs&tt|d\}}|d|r dndS)Nr1r)divmodr/)r.Z groups_of_3Zleftoverrrrr s)qbc Cs|d\}}}}}|d\}}}|}|dd}t||\}}y||}Wnvtk r|t d |||d}YnBt k r|dd}|dkr|t d |YnX||||fS)N?*rsurrogateescapez:Encoded word contains bytes not decodable using {} charsetz unknown-8bitz*s@    &+