3 \F!ã@sîddlZddlZddlZddlZddlmZmZddlmZdddddd d d gZ ej ej d ƒj d d„ƒZ dd„ZGdd„deƒZeƒZdeedƒ<dd„Zdd„Zdd„Zdd„Zdd „ZeedœZdd „ZeedœZeedœZddd „ZdS)éN)Ú ascii_lettersÚdigits)ÚerrorsÚdecode_qÚencode_qÚdecode_bÚencode_bÚlen_qÚlen_bÚdecodeÚencodes=([a-fA-F0-9]{2})cCstt|jdƒdƒgƒS)Néé)ÚbytesÚintÚgroup)Úm©rú,/usr/lib64/python3.6/email/_encoded_words.pyÚAsrcCs|jddƒ}t|ƒgfS)Nó_ó )ÚreplaceÚ_q_byte_subber)ÚencodedrrrrCs c@s,eZdZdejdƒejdƒZdd„ZdS)Ú _QByteMaps-!*+/ÚasciicCs.||jkrt|ƒ||<ndj|ƒ||<||S)Nz={:02X})ÚsafeÚchrÚformat)ÚselfÚkeyrrrÚ __missing__Ms z_QByteMap.__missing__N)Ú__name__Ú __module__Ú __qualname__rr rrr"rrrrrIsrÚ_ú cCsdjdd„|DƒƒS)NÚcss|]}t|VqdS)N)Ú _q_byte_map)Ú.0Úxrrrú Zszencode_q..)Újoin)ÚbstringrrrrYscCstdd„|DƒƒS)Ncss|]}tt|ƒVqdS)N)Úlenr))r*r+rrrr,]szlen_q..)Úsum)r.rrrr \scCsØt|ƒd}|r ddd|…nd}y$tj||dd�|rDtjƒgngfStjk rÒytj|dd�tjƒgfStjk rÌy"tj|ddd�tjƒtjƒgfStjk rÆ|tjƒgfSXYnXYnXdS)Nés===óT)ZvalidateFs==) r/Úbase64Z b64decoderZInvalidBase64PaddingDefectÚbinasciiÚErrorZInvalidBase64CharactersDefectZInvalidBase64LengthDefect)rZpad_errZmissing_paddingrrrrds     cCstj|ƒjdƒS)Nr)r3Z b64encoder )r.rrrrŠscCs&tt|ƒdƒ\}}|d|r dndS)Nér1r)Údivmodr/)r.Z groups_of_3Zleftoverrrrr �s)ÚqÚbc CsÚ|jdƒ\}}}}}|jdƒ\}}}|jƒ}|jddƒ}t||ƒ\}}y|j|ƒ}Wnvtk rŒ|jtj dj |ƒƒƒ|j|dƒ}YnBt k rÌ|jddƒ}|jƒdkrÈ|jtj dj |ƒƒƒYnX||||fS)Nú?Ú*rÚsurrogateescapez:Encoded word contains bytes not decodable using {} charsetz unknown-8bitz*s@    &+