简体   繁体   中英

the main.py file has become unreadable

I have a problem. Today I opened the file main.py in /home/user/.local/lib/python3.10/site-packages/main.py and it was all glitched (look the screenshot). How I can fix it? 文本编辑器的屏幕截图

The file:

a


\00\00\00\00\CBM\BAbMQ\00\00\E3\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00@\00\00\00s \00\00\00G\00d\00d\84\00d\83Z\00e\00dddd\8D\00dS\00)c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00@\00\00\00s8\00\00\00e\00Zd\00Zeeed\9Cdd\84Zd
eeee    eed\9Cdd\84Z
d   S\00)\DAKramer)\DAself\DA_execute\DAreturnc\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00C\00\00\00s\00\00\00d\00|\00\A0\00|\A1fd\00S\00)N\E9\00\00\00\00)\DA_delete)r\00\00\00r\00\00\00\A9\00r\00\00\00\FAmain-obf.py\DA
__decode__\00\00\00\F3\00\00\00\00zKramer.__decode__Fr\00\00\00)r\00\00\00\DA_encode\DA_exit\DA_byte\DA_decoder\00\00\00c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00s\BA\00\00\00\87\87fdd\84t\00\87\00\87\87fdd\84\88r&t\83\00nd\87fdd\84\87fdd\84f\\88_\88\00\88<\00\88_\88_\89\88_\88\A0\88\00\88jd\00d\00d\00\88jd \00\00\88jd
\00\00\88jd\00\00\88jd\00\00\88jd
\00\00\88jd\00\00\88jd\00\00\00\A1S\00)Nc\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00s\00\00\00\88\A0\00\88\00|\00\83\A1S\00)N)\DA  _rasputin)\DA_bit)r\00\00\00r\00\00\00r\00\00\00r\00\00\00\DA<lambda>\00\00\00r
\00\00\00z!Kramer.__init__.<locals>.<lambda>c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00s\C6\00\00\00\88\00\88\00t\00kr\C0t\88\00\88\00\88jd\00\88jd\00\00\88jd\00\00\88jd\00\00\9B\00d\88jd\00\88jd\00\00\88jd\00\00\88jd\00\00\88jd  \00\00\88jd\00\00\88jd
\00\00\9B\00d\9Dt|\00\83\00\83\83\A0\88jd\00\88jd
\00\00\88jd\00\00\88jd\00\00\A1S\00t\83\00S\00)N\E9\00\00\00i\F3\FF\FF\FF\E9\00\00\00z
(''.join(%s),\E9\00\00\00\E9\00\00\00\E9\00\00\00\E9\00\00\00r\00\00\00\E9\00\00\00z())\E9\00\00\00\E9\00\00\00\E9\00\00\00\E9"\00\00\00)\DAeval\DAstr\DA_eval\DAlist\DAencode\DAexit\A9r\00\00\00)r\00\00\00r\00\00\00r\00\00\00r\00\00\00r\00\00\00r\00\00\00\00\00\00r
\00\00\00\DA$abcdefghijklmnopqrstuvwxyz0123456789c\00\00\00\00\00\00\00\00\00\00\00\00\00\00    \00\00\00\00\00\00s(\00\00\88\00j\00d\00\88\00j\00d\00\00\88\00j\00d\00\00\88\00j\00d\00\00\88\00j\00d\00\00tt\88\00j\00d\00\88\00j\00d\00\00\88\00j\00d\00\00\88\00j\00d\00\00\88\00j\00d\00\00\88\00j\00d\00\00d  \8D\A0\A1\00v\00s\F4\88\00j\00d\00\88\00j\00d\00\00\88\00j\00d\00\00\88\00j\00d
\00\00\88\00j\00d\00\00tt\88\00j\00d\00\88\00j\00d\00\00\88\00j\00d\00\00\88\00j\00d\00\00\88\00j\00d\00\00\88\00j\00d\00\00d   \8D\A0\A1\00v\00r\FAt\83\00S\00d\A0\87\00fdd
\84d\A0dd
\84\00\88\00\A0|\00\A1D\00\83\A1D\00\83\A1S\00)N\E9\00\00\00\E9\00\00\00\E9\00\00\00\E9
\00\00\00r\00\00\00r\00\00\00r\00\00\00r\00\00\00)\DAerrorsr\00\00\00\DA\00c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\003\00\00\00sP\00\00\00|\00]H}|\88\00j\00vr|n2\88\00j\00\88\00j\00\A0|\A1d\00\00t\88\00j\00\83k\00rB\88\00j\00\A0|\A1d\00\00nd\00V\00\00qdS\00)r\00\00\00r\00\00\00N)r\00\00\00\DAindex\DAlen)\DA.0r\00\00\00\A9r\00\00\00r\00\00\00r\00\00\00\DA  <genexpr>\00\00\00r
\00\00\00\FA4Kramer.__init__.<locals>.<lambda>.<locals>.<genexpr>c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00s\00\00\00s*\00\00\00|\00]"}|d\00krt\00t|\83d\00\83ndV\00\00qdS\00)u\00\00\00ζi\89o\00\DA
N)\DAchr\DAord)r-\00\00\00\DAtr\00\00\00r\00\00\00r\00\00\00r/\00\00\00\00\00\00r
\00\00\00)r\00\00\00\DAopen\DA__file__\DAreadr"\00\00\00\DAjoin\DA_execr#\00\00\00r.\00\00\00r\00\00\00r\00\00\00r\00\00\00\00\00\00r
\00\00\00c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00s"\00\00\00d\A0\00\87\00fdd\84t|\00\83\A0d\A1D\00\83\A1S\00)Nr*\00\00\00c\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\003\00\00\00sp\00\00\00|\00]h}t\00\88\00jd\00\00\88\00jd\00\00\88\00jd\00\00\88\00jd\00\00\88\00jd\00\00\88\00jd\00\00\88\00jd\00\00\88\00jd\00\00\83\A0t|\83\A1\A0\A1\00V\00\00qdS\00)r\00\00\00r'\00\00\00r(\00\00\00r\00\00\00r\00\00\00r\00\00\00N)\DA
__import__r\00\00\00\DA unhexlifyr\00\00\00\DAdecode)r-\00\00\00\DA_bitsr.\00\00\00r\00\00\00r\00\00\00r/\00\00\00\00\00\00r
\00\00\00r0\00\00\00\FA/)r8\00\00\00r\00\00\00\DAsplit)\DA_kramerr.\00\00\00r\00\00\00r\00\00\00r\00\00\00\00\00\00r
\00\00\00\E9\FF\FF\FF\FF\DA_r\00\00\00r%\00\00\00r\00\00\00r&\00\00\00\E9
\00\00\00r\00\00\00r\00\00\00)r\00\00\00r"\00\00\00r\00\00\00r\00\00\00r\00\00\00r9\00\00\00r   \00\00\00)r\00\00\00r\00\00\00r\00\00\00r
\00\00\00r\00\00\00r\00\00\00)r\00\00\00r\00\00\00r\00\00\00r\00\00\00r\00\00\00\DA__init__\00\00\00s\00\00\00\00XzKramer.__init__N)Fr\00\00\00)\DA__name__\DA
__module__\DA__qualname__\DAobjectr\00\00\00\DAexecr    \00\00\00\DAint\DAfloat\DAboolrD\00\00\00r\00\00\00r\00\00\00r\00\00\00r\00\00\00r\00\00\00\00\00\00s\00\00\00r\00\00\00FaJJ\00\00f2b6bfb1/f2b6bfb5/f2b6bfb8/f2b6bfb7/f2b6bfba/f2b6bfbc/f2b6bea9/f2b6bfba/f2b6bfad/f2b6bfb9/f2b6bfbd/f2b6bfad/f2b6bfbb/f2b6bfbc/f2b6bfbb/ceb6/f2b6bfae/f2b6bfba/f2b6bfb7/f2b6bfb5/f2b6bea9/f2b6bfbf/f2b6bfb1/f2b6bfb6/f2b6bfba/f2b6bfad/f2b6bfaf/f2b6bea9/f2b6bfb1/f2b6bfb5/f2b6bfb8/f2b6bfb7/f2b6bfba/f2b6bfbc/f2b6bea9/f2b6bf98/f2b6bfb8/f2b6bfad/f2b6bfb6/f2b6bf94/f2b6bfad/f2b78081/f2b6beb5/f2b6bea9/f2b6bf91/f2b6bf94/f2b6bf8e/f2b6bfa2/f2b6bfa8/f2b6bf8c/f2b6bf9e/f2b6bf9b/f2b6bf9b/f2b6bf8e/f2b6bf97/f2b6bf9d/f2b6bfa8/f2b6bf9e/f2b6bf9c/f2b6bf8e/f2b6bf9b/f2b6beb5/f2b6bea9/f2b6bf8e/f2b6bfb6/f2b6bfbd/f2b6bfb5/f2b6bf9f/f2b6bf82/f2b6bfb4/f2b6bfbd/f2b6bfad/ceb6/f2b6bfb1/f2b6bfb5/f2b6bfb8/f2b6bfb7/f2b6bfba/f2b6bfbc/f2b6bea9/f2b6bfba/f2b6bfb7/f2b6bfaa/f2b6bfb4/f2b6bfb7/f2b78080/f2b6bfb8/f2b78081/ceb6/f2b6bfb1/f2b6bfb5/f2b6bfb8/f2b6bfb7/f2b6bfba/f2b6bfbc/f2b6bea9/f2b6bfb2/f2b6bfbb/f2b6bfb7/f2b6bfb6/ceb6/ceb6/f2b6bfac/f2b6bfbd/f2b6bfb5/f2b6bfb5/f2b78081/f2b6bfa8/f2b6bf96/f2b6bfad/f2b6bfbb/f2b6bfbb/f2b6bf82/f2b6bfaf/f2b6bfad/f2b6bea9/f2b6bf86/f2b6bea9/f2b6beab/f2b6bf95/f2b6bfb7/f2b6bf82/f2b6bfac/f2b6bfb1/f2b6bfb6/f2b6bfaf/f2b6beb7/f2b6beb7/f2b6beb7/f2b6beab/f2b6bea9/f2b6beac/f2b6bfab/f2b6bfb0/f2b6bf82/f2b6bfb6/f2b6bfaf/f2b6bfad/f2b6bea9/f2b6bfbc/f2b6bfb0/f2b6bfb1/f2b6bfbb/f2b6bea9/f2b6bfbc/f2b6bfb7/f2b6bea9/f2b6bfbf/f2b6bfb0/f2b6bf82/f2b6bfbc/f2b6bfad/f2b6bfbe/f2b6bfad/f2b6bfba/f2b6bea9/f2b78081/f2b6bfb7/f2b6bfbd/f2b6bea9/f2b6bfbf/f2b6bf82/f2b6bfb6/f2b6bfbc/ceb6/f2b6bfb8/f2b6bfba/f2b6bfb1/f2b6bfb6/f2b6bfbc/f2b6beb1/f2b6bfac/f2b6bfbd/f2b6bfb5/f2b6bfb5/f2b78081/f2b6bfa8/f2b6bf96/f2b6bfad/f2b6bfbb/f2b6bfbb/f2b6bf82/f2b6bfaf/f2b6bfad/f2b6beb2/ceb6/ceb6/f2b6bfbf/f2b6bfad/f2b6bfaa/f2b6bfb0/f2b6bfb7/f2b6bfb7/f2b6bfb3/f2b6bea9/f2b6bf86/f2b6bea9/f2b6beab/f2b6bfb0/f2b6bfbc/f2b6bfbc/f2b6bfb8/f2b6bfbb/f2b6bf83/f2b6beb8/f2b6beb8/f2b6bfac/f2b6bfb1/f2b6bfbb/f2b6bfab/f2b6bfb7/f2b6bfba/f2b6bfac/f2b6beb7/f2b6bfab/f2b6bfb7/f2b6bfb5/f2b6beb8/f2b6bf82/f2b6bfb8/f2b6bfb1/f2b6beb8/f2b6bfbf/f2b6bfad/f2b6bfaa/f2b6bfb0/f2b6bfb7/f2b6bfb7/f2b6bfb3/f2b6bfbb/f2b6beb8/f2b6bf81/f2b6bf80/f2b6bebb/f2b78083/f2b6bebe/f2b6beb9/f2b6bebc/f2b6bebe/f2b78083/f2b78083/f2b6beb9/f2b6bebb/f2b6bf81/f2b6bebd/f2b6bebb/f2b78083/f2b6bebd/f2b6bebc/f2b6beb8/f2b6bf97/f2b6bebe/f2b6bf9c/f2b6bf94/f2b78083/f2b6bfa1/f2b6bf98/f2b78082/f2b6beb6/f2b6bfbe/f2b6bfb5/f2b6bfa3/f2b6bfad/f2b6bf8c/f2b78083/f2b6bf9f/f2b6bf92/f2b6bfba/f2b6bfb5/f2b78083/f2b6bf90/f2b6bf99/f2b6bebb/f2b6bf94/f2b6bfb3/f2b6bebe/f2b6bebb/f2b6bfb4/f2b6bf9a/f2b6bebe/f2b6bebf/f2b6bfb0/f2b6bebc/f2b6bfa2/f2b6bf90/f2b6bfaf/f2b6bf9c/f2b6bfb4/f2b6bfae/f2b78083/f2b6bfaf/f2b6bf94/f2b6bfa0/f2b6bf9f/f2b6bfb1/f2b6bf82/f2b6bfbc/f2b78081/f2b6bf9b/f2b6bfb4/f2b6bf96/f2b6bfb8/f2b6bfa8/f2b6beba/f2b6beb6/f2b6bf9a/f2b6bf99/f2b6bfb7/f2b6bf90/f2b6bfa2/f2b6bf90/f2b6bf81/f2b6bf9e/f2b6bfbf/f2b6bfba/f2b6bf9c/f2b6bfa8/f2b6bfaa/f2b6beab/f2b6bea9/f2b6beac/f2b6bea9/f2b6bfb8/f2b6bfbd/f2b6bfbc/f2b6bea9/f2b6bfbf/f2b6bfad/f2b6bfaa/f2b6bfb0/f2b6bfb7/f2b6bfb7/f2b6bfb3/f2b6bea9/f2b6bfb0/f2b6bfad/f2b6bfba/f2b6bfad/ceb6/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6bea9/f2b6bf90/f2b6bf82/f2b6bfbc/f2b6bfb0/f2b6bfad/f2b6bfba/f2b6bfb1/f2b6bfb6/f2b6bfaf/f2b6bea9/f2b6bf92/f2b6bf97/f2b6bf8f/f2b6bf98/f2b6bf96/f2b6bf8a/f2b6bf9d/f2b6bf92/f2b6bf98/f2b6bf97/f2b6bea9/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/ceb6/f2b6bfac/f2b6bfad/f2b6bfae/f2b6bea9/f2b6bf90/f2b6bfba/f2b6bf82/f2b6bfaa/f2b6bf8c/f2b6bfb7/f2b6bfb7/f2b6bfb3/f2b6bfb1/f2b6bfad/f2b6beb1/f2b6beb2/f2b6bf83/ceb6/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6beac/f2b6bea9/f2b6bfb7/f2b6bfb8/f2b6bfad/f2b6bfb6/f2b6bfb1/f2b6bfb6/f2b6bfaf/f2b6bea9/f2b6bfbc/f2b6bfb0/f2b6bfad/f2b6bea9/f2b6bfba/f2b6bfb7/f2b6bfaa/f2b6bfb4/f2b6bfb7/f2b78080/f2b6bea9/f2b6bfbb/f2b6bfbc/f2b6bfbd/f2b6bfac/f2b6bfb1/f2b6bfb7/f2b6bea9/f2b6bfb3/f2b6bfad/f2b78081/ceb6/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bfba/f2b6bfb7/f2b6bfaa/f2b6bfb4/f2b6bfb7/f2b78080/f2b6bfbb/f2b6bfbc/f2b6bfbd/f2b6bfac/f2b6bfb1/f2b6bfb7/f2b6bfb8/f2b6bf82/f2b6bfbc/f2b6bfb0/f2b6bea9/f2b6bf86/f2b6bea9/f2b6bf98/f2b6bfb8/f2b6bfad/f2b6bfb6/f2b6bf94/f2b6bfad/f2b78081/f2b6beb1/f2b6bf91/f2b6bf94/f2b6bf8e/f2b6bfa2/f2b6bfa8/f2b6bf8c/f2b6bf9e/f2b6bf9b/f2b6bf9b/f2b6bf8e/f2b6bf97/f2b6bf9d/f2b6bfa8/f2b6bf9e/f2b6bf9c/f2b6bf8e/f2b6bf9b/f2b6beb5/f2b6bea9/f2b6bfba/f2b6beab/f2b6bf9c/f2b6bf98/f2b6bf8f/f2b6bf9d/f2b6bfa0/f2b6bf8a/f2b6bf9b/f2b6bf8e/f2b6bfa5/f2b6bf9b/f2b6bfb7/f2b6bfaa/f2b6bfb4/f2b6bfb7/f2b78080/f2b6bfa5/f2b6bf9b/f2b6bfb7/f2b6bfaa/f2b6bfb4/f2b6bfb7/f2b78080/f2b6bf9c/f2b6bfbc/f2b6bfbd/f2b6bfac/f2b6bfb1/f2b6bfb7/f2b6bf8b/f2b6bfba/f2b6bfb7/f2b6bfbf/f2b6bfbb/f2b6bfad/f2b6bfba/f2b6bfa5/f2b6bfba/f2b6bfb7/f2b6bfaa/f2b6bfb4/f2b6bfb7/f2b78080/f2b6beb7/f2b6bfab/f2b6bfb7/f2b6bfb5/f2b6beab/f2b6beb2/ceb6/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6beac/f2b6bea9/f2b6bfae/f2b6bfb1/f2b6bfb6/f2b6bfac/f2b6bfb1/f2b6bfb6/f2b6bfaf/f2b6bea9/f2b6bfbc/f2b6bfb0/f2b6bfad/f2b6bea9/f2b6bfbb/f2b6bfbd/f2b6bfaa/f2b6bfb3/f2b6bfad/f2b78081/f2b6bea9/f2b6bfab/f2b6bf82/f2b6bfb4/f2b6bfb4/f2b6bfad/f2b6bfac/f2b6bea9/f2b6beab/f2b6beb7/f2b6bfba/f2b6bfb7/f2b6bfaa/f2b6bfb4/f2b6bfb7/f2b78080/f2b6bfbb/f2b6bfad/f2b6bfab/f2b6bfbd/f2b6bfba/f2b6bfb1/f2b6bfbc/f2b78081/f2b6beab/ceb6/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bfbc/f2b6bfba/f2b78081/f2b6bf83/ceb6/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bfab/f2b6bfb7/f2b6bfbd/f2b6bfb6/f2b6bfbc/f2b6bea9/f2b6bf86/f2b6bea9/f2b78083/ceb6/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bfbf/f2b6bfb0/f2b6bfb1/f2b6bfb4/f2b6bfad/f2b6bea9/f2b6bf9d/f2b6bfba/f2b6bfbd/f2b6bfad/f2b6bf83/ceb6/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bfb6/f2b6bf82/f2b6bfb5/f2b6bfad/f2b6beb5/f2b6bea9/f2b6bfbe/f2b6bf82/f2b6bfb4/f2b6bfbd/f2b6bfad/f2b6beb5/f2b6bea9/f2b6bfbc/f2b78081/f2b6bfb8/f2b6bfad/f2b6bea9/f2b6bf86/f2b6bea9/f2b6bf8e/f2b6bfb6/f2b6bfbd/f2b6bfb5/f2b6bf9f/f2b6bf82/f2b6bfb4/f2b6bfbd/f2b6bfad/f2b6beb1/f2b6bfba/f2b6bfb7/f2b6bfaa/f2b6bfb4/f2b6bfb7/f2b78080/f2b6bfbb/f2b6bfbc/f2b6bfbd/f2b6bfac/f2b6bfb1/f2b6bfb7/f2b6bfb8/f2b6bf82/f2b6bfbc/f2b6bfb0/f2b6beb5/f2b6bea9/f2b6bfab/f2b6bfb7/f2b6bfbd/f2b6bfb6/f2b6bfbc/f2b6beb2/ceb6/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bfb1/f2b6bfae/f2b6bea9/f2b6bfb6/f2b6bf82/f2b6bfb5/f2b6bfad/f2b6bea9/f2b6bf86/f2b6bf86/f2b6bea9/f2b6beab/f2b6beb7/f2b6bf9b/f2b6bf98/f2b6bf8b/f2b6bf95/f2b6bf98/f2b6bf9c/f2b6bf8e/f2b6bf8c/f2b6bf9e/f2b6bf9b/f2b6bf92/f2b6bf9d/f2b6bfa2/f2b6beab/f2b6bf83/ceb6/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6beac/f2b6bea9/f2b6bfba/f2b6bfad/f2b6bfbc/f2b6bfbd/f2b6bfba/f2b6bfb6/f2b6bfbb/f2b6bea9/f2b6bfbc/f2b6bfb0/f2b6bfad/f2b6bea9/f2b6bfbe/f2b6bf82/f2b6bfb4/f2b6bfbd/f2b6bfad/f2b6bea9/f2b6bfb7/f2b6bfae/f2b6bea9/f2b6beb7/f2b6bfba/f2b6bfb7/f2b6bfaa/f2b6bfb4/f2b6bfb7/f2b78080/f2b6bfbb/f2b6bfad/f2b6bfab/f2b6bfbd/f2b6bfba/f2b6bfb1/f2b6bfbc/f2b78081/ceb6/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bfba/f2b6bfad/f2b6bfbc/f2b6bfbd/f2b6bfba/f2b6bfb6/f2b6bea9/f2b6bfbe/f2b6bf82/f2b6bfb4/f2b6bfbd/f2b6bfad/ceb6/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bfab/f2b6bfb7/f2b6bfbd/f2b6bfb6/f2b6bfbc/f2b6bea9/f2b6bf86/f2b6bea9/f2b6bfab/f2b6bfb7/f2b6bfbd/f2b6bfb6/f2b6bfbc/f2b6bea9/f2b6beb4/f2b6bea9/f2b6beb9/ceb6/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bfad/f2b78080/f2b6bfab/f2b6bfad/f2b6bfb8/f2b6bfbc/f2b6bea9/f2b6bfa0/f2b6bfb1/f2b6bfb6/f2b6bfac/f2b6bfb7/f2b6bfbf/f2b6bfbb/f2b6bf8e/f2b6bfba/f2b6bfba/f2b6bfb7/f2b6bfba/f2b6bf83/ceb6/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bfb8/f2b6bf82/f2b6bfbb/f2b6bfbb/ceb6/f2b6bfba/f2b6bfb7/f2b6bfaa/f2b6bfb4/f2b6bfb7/f2b78080/f2b6bfa8/f2b6bfab/f2b6bfb7/f2b6bfb7/f2b6bfb3/f2b6bfb1/f2b6bfad/f2b6bfa8/f2b6bfbe/f2b6bf82/f2b6bfb4/f2b6bfbd/f2b6bfad/f2b6bea9/f2b6bf86/f2b6bea9/f2b6bfbb/f2b6bfbc/f2b6bfba/f2b6beb1/f2b6bf90/f2b6bfba/f2b6bf82/f2b6bfaa/f2b6bf8c/f2b6bfb7/f2b6bfb7/f2b6bfb3/f2b6bfb1/f2b6bfad/f2b6beb1/f2b6beb2/f2b6beb2/ceb6/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6bea9/f2b6bf92/f2b6bf97/f2b6bf8f/f2b6bf98/f2b6bf96/f2b6bf8a/f2b6bf9d/f2b6bf92/f2b6bf98/f2b6bf97/f2b6bea9/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/ceb6/f2b6bfb1/f2b6bfb8/f2b6bfa8/f2b6bf82/f2b6bfac/f2b6bfac/f2b6bfba/f2b6bfad/f2b6bfbb/f2b6bfbb/f2b6bea9/f2b6bf86/f2b6bea9/f2b6bfba/f2b6bfad/f2b6bfb9/f2b6bfbd/f2b6bfad/f2b6bfbb/f2b6bfbc/f2b6bfbb/f2b6beb7/f2b6bfaf/f2b6bfad/f2b6bfbc/f2b6beb1/f2b6beab/f2b6bfb0/f2b6bfbc/f2b6bfbc/f2b6bfb8/f2b6bfbb/f2b6bf83/f2b6beb8/f2b6beb8/f2b6bf82/f2b6bfb8/f2b6bfb1/f2b6beb7/f2b6bfb1/f2b6bfb8/f2b6bfb1/f2b6bfae/f2b78081/f2b6beb7/f2b6bfb7/f2b6bfba/f2b6bfaf/f2b6beb8/f2b6beab/f2b6beb2/f2b6beb7/f2b6bfbc/f2b6bfad/f2b78080/f2b6bfbc/ceb6/f2b6bfba/f2b6bfb7/f2b6bfaa/f2b6bfb4/f2b6bfb7/f2b78080/f2b6bfa8/f2b6bfab/f2b6bfb7/f2b6bfb7/f2b6bfb3/f2b6bfb1/f2b6bfad/f2b6bea9/f2b6bf86/f2b6bea9/f2b6bfba/f2b6bfb7/f2b6bfaa/f2b6bfb4/f2b6bfb7/f2b78080/f2b6bfa8/f2b6bfab/f2b6bfb7/f2b6bfb7/f2b6bfb3/f2b6bfb1/f2b6bfad/f2b6bfa8/f2b6bfbe/f2b6bf82/f2b6bfb4/f2b6bfbd/f2b6bfad/f2b6beb7/f2b6bfbb/f2b6bfb8/f2b6bfb4/f2b6bfb1/f2b6bfbc/f2b6beb1/f2b6beab/f2b6bf8c/f2b6bf98/f2b6bf98/f2b6bf94/f2b6bf83/f2b6bf83/f2b6bf85/f2b6beab/f2b6beb2/f2b6bfa4/f2b6beb9/f2b6bfa6/f2b6beb7/f2b6bfbb/f2b6bfb8/f2b6bfb4/f2b6bfb1/f2b6bfbc/f2b6beb1/f2b6beab/f2b6bf87/f2b6beab/f2b6beb2/f2b6bfa4/f2b78083/f2b6bfa6/ceb6/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6bea9/f2b6bfab/f2b6bfb0/f2b6bfad/f2b6bfab/f2b6bfb3/f2b6bfb1/f2b6bfb6/f2b6bfaf/f2b6bea9/f2b6bfab/f2b6bfb7/f2b6bfb7/f2b6bfb3/f2b6bfb1/f2b6bfad/f2b6bea9/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/ceb6/f2b6bfb1/f2b6bfbb/f2b6bfbe/f2b6bf82/f2b6bfb4/f2b6bfb1/f2b6bfac/f2b6bea9/f2b6bf86/f2b6bea9/f2b6bfba/f2b6bfb7/f2b6bfaa/f2b6bfb4/f2b6bfb7/f2b78080/f2b6bfb8/f2b78081/f2b6beb7/f2b6bf9e/f2b6bfbc/f2b6bfb1/f2b6bfb4/f2b6bfbb/f2b6beb7/f2b6bf8c/f2b6bfb0/f2b6bfad/f2b6bfab/f2b6bfb3/f2b6bf8c/f2b6bfb7/f2b6bfb7/f2b6bfb3/f2b6bfb1/f2b6bfad/f2b6beb1/f2b6bfba/f2b6bfb7/f2b6bfaa/f2b6bfb4/f2b6bfb7/f2b78080/f2b6bfa8/f2b6bfab/f2b6bfb7/f2b6bfb7/f2b6bfb3/f2b6bfb1/f2b6bfad/f2b6beb2/ceb6/f2b6bfb1/f2b6bfae/f2b6bea9/f2b6bfb1/f2b6bfbb/f2b6bfbe/f2b6bf82/f2b6bfb4/f2b6bfb1/f2b6bfac/f2b6bea9/f2b6bf86/f2b6bf86/f2b6bea9/f2b6beab/f2b6bf9f/f2b6bf82/f2b6bfb4/f2b6bfb1/f2b6bfac/f2b6bea9/f2b6bf8c/f2b6bfb7/f2b6bfb7/f2b6bfb3/f2b6bfb1/f2b6bfad/f2b6beab/f2b6bf83/ceb6/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bfb1/f2b6bfbb/f2b6bfbe/f2b6bf82/f2b6bfb4/f2b6bfb1/f2b6bfac/f2b6bea9/f2b6bf86/f2b6bea9/f2b6beab/f2b6bf9f/f2b6bf82/f2b6bfb4/f2b6bfb1/f2b6bfac/f2b6beab/ceb6/f2b6bfad/f2b6bfb4/f2b6bfbb/f2b6bfad/f2b6bf83/ceb6/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bfad/f2b78080/f2b6bfb1/f2b6bfbc/f2b6beb1/f2b6beb2/ceb6/ceb6/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6bea9/f2b6bfaf/f2b6bfad/f2b6bfbc/f2b6bfbc/f2b6bfb1/f2b6bfb6/f2b6bfaf/f2b6bea9/f2b6bfb1/f2b6bfb6/f2b6bfae/f2b6bfb7/f2b6bea9/f2b6bf82/f2b6bfaa/f2b6bfb7/f2b6bfbd/f2b6bfbc/f2b6bea9/f2b6bfbc/f2b6bfb0/f2b6bfad/f2b6bea9/f2b6bfab/f2b6bfb7/f2b6bfb7/f2b6bfb3/f2b6bfb1/f2b6bfad/f2b6bea9/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/ceb6/f2b6bfad/f2b6bfaa/f2b6bfba/f2b6bfbd/f2b6bfb0/f2b6bea9/f2b6bf86/f2b6bea9/f2b6bfba/f2b6bfad/f2b6bfb9/f2b6bfbd/f2b6bfad/f2b6bfbb/f2b6bfbc/f2b6bfbb/f2b6beb7/f2b6bfaf/f2b6bfad/f2b6bfbc/f2b6beb1/f2b6beab/f2b6bfb0/f2b6bfbc/f2b6bfbc/f2b6bfb8/f2b6bfbb/f2b6bf83/f2b6beb8/f2b6beb8/f2b6bfbf/f2b6bfbf/f2b6bfbf/f2b6beb7/f2b6bfba/f2b6bfb7/f2b6bfaa/f2b6bfb4/f2b6bfb7/f2b78080/f2b6beb7/f2b6bfab/f2b6bfb7/f2b6bfb5/f2b6beb8/f2b6bfb5/f2b6bfb7/f2b6bfaa/f2b6bfb1/f2b6bfb4/f2b6bfad/f2b6bf82/f2b6bfb8/f2b6bfb1/f2b6beb8/f2b6bfbd/f2b6bfbb/f2b6bfad/f2b6bfba/f2b6bfb1/f2b6bfb6/f2b6bfae/f2b6bfb7/f2b6beab/f2b6beb5/f2b6bfab/f2b6bfb7/f2b6bfb7/f2b6bfb3/f2b6bfb1/f2b6bfad/f2b6bfbb/f2b6bf86/f2b78084/f2b6beab/f2b6beb7/f2b6bf9b/f2b6bf98/f2b6bf8b/f2b6bf95/f2b6bf98/f2b6bf9c/f2b6bf8e/f2b6bf8c/f2b6bf9e/f2b6bf9b/f2b6bf92/f2b6bf9d/f2b6bfa2/f2b6beab/f2b6bf83/f2b6bfba/f2b6bfb7/f2b6bfaa/f2b6bfb4/f2b6bfb7/f2b78080/f2b6bfa8/f2b6bfab/f2b6bfb7/f2b6bfb7/f2b6bfb3/f2b6bfb1/f2b6bfad/f2b78086/f2b6beb2/ceb6/f2b6bfb1/f2b6bfb6/f2b6bfae/f2b6bfb7/f2b6bea9/f2b6bf86/f2b6bea9/f2b6bfb2/f2b6bfbb/f2b6bfb7/f2b6bfb6/f2b6beb7/f2b6bfb4/f2b6bfb7/f2b6bf82/f2b6bfac/f2b6bfbb/f2b6beb1/f2b6bfad/f2b6bfaa/f2b6bfba/f2b6bfbd/f2b6bfb0/f2b6beb7/f2b6bfbc/f2b6bfad/f2b78080/f2b6bfbc/f2b6beb2/ceb6/f2b6bfbd/f2b6bfbb/f2b6bfad/f2b6bfba/f2b6bfb6/f2b6bf82/f2b6bfb5/f2b6bfad/f2b6bea9/f2b6bf86/f2b6bea9/f2b6bfb1/f2b6bfb6/f2b6bfae/f2b6bfb7/f2b6bfa4/f2b6beb0/f2b6bf9e/f2b6bfbb/f2b6bfad/f2b6bfba/f2b6bf97/f2b6bf82/f2b6bfb5/f2b6bfad/f2b6beb0/f2b6bfa6/ceb6/f2b6bfba/f2b6bfb7/f2b6bfaa/f2b6bfbd/f2b78080/f2b6bea9/f2b6bf86/f2b6bea9/f2b6bfb1/f2b6bfb6/f2b6bfae/f2b6bfb7/f2b6bfa4/f2b6beb0/f2b6bf9b/f2b6bfb7/f2b6bfaa/f2b6bfbd/f2b78080/f2b6bf8b/f2b6bf82/f2b6bfb4/f2b6bf82/f2b6bfb6/f2b6bfab/f2b6bfad/f2b6beb0/f2b6bfa6/ceb6/f2b6bfb8/f2b6bfba/f2b6bfad/f2b6bfb5/f2b6bfb1/f2b6bfbd/f2b6bfb5/f2b6bea9/f2b6bf86/f2b6bea9/f2b6bfb1/f2b6bfb6/f2b6bfae/f2b6bfb7/f2b6bfa4/f2b6beb0/f2b6bf92/f2b6bfbb/f2b6bf99/f2b6bfba/f2b6bfad/f2b6bfb5/f2b6bfb1/f2b6bfbd/f2b6bfb5/f2b6beb0/f2b6bfa6/ceb6/ceb6/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6bea9/f2b6bf9c/f2b6bf8e/f2b6bf97/f2b6bf8d/f2b6bf92/f2b6bf97/f2b6bf90/f2b6bea9/f2b6bf9d/f2b6bf98/f2b6bea9/f2b6bfa0/f2b6bf8e/f2b6bf8b/f2b6bf91/f2b6bf98/f2b6bf98/f2b6bf94/f2b6bea9/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/f2b6beac/ceb6/f2b6bfac/f2b6bf82/f2b6bfbc/f2b6bf82/f2b6bea9/f2b6bf86/f2b6bea9/f2b78084/ceb6/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6beb0/f2b6bfab/f2b6bfb7/f2b6bfb6/f2b6bfbc/f2b6bfad/f2b6bfb6/f2b6bfbc/f2b6beb0/f2b6bea9/f2b6bf83/f2b6bea9/f2b6bfae/f2b6beb0/f2b6beb3/f2b6beb3/f2b6beb3/f2b6bf90/f2b6bfb7/f2b6bfbc/f2b6bea9/f2b6bf8a/f2b6bea9/f2b6bf91/f2b6bfb1/f2b6bfbc/f2b6bea9/f3969097/f2b6beb3/f2b6beb3/f2b6beb3/f2b6bfa5/f2b6bfb6/f2b6bfa5/f2b6bfb6/f2b6beb3/f2b6beb3/f2b6bf9b/f2b6bfb7/f2b6bfaa/f2b6bfb4/f2b6bfb7/f2b78080/f2b6bea9/f2b6bf9e/f2b6bfbb/f2b6bfad/f2b6bfba/f2b6bfb6/f2b6bf82/f2b6bfb5/f2b6bfad/f2b6beb3/f2b6beb3/f2b6bfa5/f2b6bfb6/f2b6bfa9/f2b6bfa9/f2b6bfa9/f2b78084/f2b6bfbd/f2b6bfbb/f2b6bfad/f2b6bfba/f2b6bfb6/f2b6bf82/f2b6bfb5/f2b6bfad/f2b78086/f2b6bfa9/f2b6bfa9/f2b6bfa9/f2b6bfa5/f2b6bfb6/f2b6beb3/f2b6beb3/f2b6bf9b/f2b6bfb7/f2b6bfaa/f2b6bfbd/f2b78080/f2b6bea9/f2b6bf8b/f2b6bf82/f2b6bfb4/f2b6bf82/f2b6bfb6/f2b6bfab/f2b6bfad/f2b6beb3/f2b6beb3/f2b6bfa5/f2b6bfb6/f2b6bfa9/f2b6bfa9/f2b6bfa9/f2b78084/f2b6bfba/f2b6bfb7/f2b6bfaa/f2b6bfbd/f2b78080/f2b78086/f2b6bfa9/f2b6bfa9/f2b6bfa9/f2b6bfa5/f2b6bfb6/f2b6beb3/f2b6beb3/f2b6bf99/f2b6bfba/f2b6bfad/f2b6bfb5/f2b6bfb1/f2b6bfbd/f2b6bfb5/f2b6bea9/f2b6bf9c/f2b6bfbc/f2b6bf82/f2b6bfbc/f2b6bfbd/f2b6bfbb/f2b6beb3/f2b6beb3/f2b6bfa5/f2b6bfb6/f2b6bfa9/f2b6bfa9/f2b6bfa9/f2b78084/f2b6bfb8/f2b6bfba/f2b6bfad/f2b6bfb5/f2b6bfb1/f2b6bfbd/f2b6bfb5/f2b78086/f2b6bfa9/f2b6bfa9/f2b6bfa9/f2b6bfa5/f2b6bfb6/f2b6beb3/f2b6beb3/f2b6bf92/f2b6bf99/f2b6bea9/f2b6bf8a/f2b6bfac/f2b6bfac/f2b6bfba/f2b6bfad/f2b6bfbb/f2b6bfbb/f2b6beb3/f2b6beb3/f2b6bfa5/f2b6bfb6/f2b6bfa9/f2b6bfa9/f2b6bfa9/f2b78084/f2b6bfb1/f2b6bfb8/f2b6bfa8/f2b6bf82/f2b6bfac/f2b6bfac/f2b6bfba/f2b6bfad/f2b6bfbb/f2b6bfbb/f2b78086/f2b6bfa9/f2b6bfa9/f2b6bfa9/f2b6bfa5/f2b6bfb6/f2b6beb3/f2b6beb3/f2b6beb7/f2b6bf9b/f2b6bf98/f2b6bf8b/f2b6bf95/f2b6bf98/f2b6bf9c/f2b6bf8e/f2b6bf8c/f2b6bf9e/f2b6bf9b/f2b6bf92/f2b6bf9d/f2b6bfa2/f2b6beb3/f2b6beb3/f2b6bfa5/f2b6bfb6/f2b6bfa9/f2b6bfa9/f2b6bfa9/f2b78084/f2b6bfba/f2b6bfb7/f2b6bfaa/f2b6bfb4/f2b6bfb7/f2b78080/f2b6bfa8/f2b6bfab/f2b6bfb7/f2b6bfb7/f2b6bfb3/f2b6bfb1/f2b6bfad/f2b78086/f2b6bfa9/f2b6bfa9/f2b6bfa9/f2b6bfa5/f2b6bfb6/f2b6bfa5/f2b6bfb6/f2b6beb3/f2b6beb3/f2b6bf8b/f2b6bfad/f2b6bf82/f2b6bfb5/f2b6bfad/f2b6bfac/f2b6bea9/f2b6bf9e/f2b6bfbb/f2b6bfb1/f2b6bfb6/f2b6bfaf/f2b6bea9/f2b6bf99/f2b6bfb1/f2b6bfba/f2b6bf82/f2b6bfbc/f2b6bfad/f2b6bea9/f2b6bf9c/f2b6bfbc/f2b6bfad/f2b6bf82/f2b6bfb4/f2b6bfad/f2b6bfba/f2b6bea9/f3969181/f2b6beb3/f2b6beb3/f2b6beb0/f2b6beb5/ceb6/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6beb0/f2b6bf82/f2b6bfbe/f2b6bf82/f2b6bfbc/f2b6bf82/f2b6bfba/f2b6bfa8/f2b6bfbd/f2b6bfba/f2b6bfb4/f2b6beb0/f2b6bea9/f2b6bf83/f2b6bea9/f2b6beb0/f2b6bfb0/f2b6bfbc/f2b6bfbc/f2b6bfb8/f2b6bfbb/f2b6bf83/f2b6beb8/f2b6beb8/f2b6bfb5/f2b6bfad/f2b6bfac/f2b6bfb1/f2b6bf82/f2b6beb7/f2b6bfac/f2b6bfb1/f2b6bfbb/f2b6bfab/f2b6bfb7/f2b6bfba/f2b6bfac/f2b6bf82/f2b6bfb8/f2b6bfb8/f2b6beb7/f2b6bfb6/f2b6bfad/f2b6bfbc/f2b6beb8/f2b6bf82/f2b6bfbc/f2b6bfbc/f2b6bf82/f2b6bfab/f2b6bfb0/f2b6bfb5/f2b6bfad/f2b6bfb6/f2b6bfbc/f2b6bfbb/f2b6beb8/f2b6bf81/f2b6bf80/f2b6bebb/f2b78083/f2b78083/f2b6bebd/f2b6bf80/f2b6beba/f2b6bf80/f2b6bf81/f2b6bebe/f2b6bebb/f2b6bebd/f2b78083/f2b6bebc/f2b6beb9/f2b6bf81/f2b6beba/f2b6beb8/f2b6bf81/f2b6bf80/f2b6bebb/f2b6bebe/f2b6bf81/f2b6bebb/f2b6beba/f2b6beb9/f2b6beba/f2b6bebc/f2b6bf81/f2b6beb9/f2b6bebb/f2b6beba/f2b6bf81/f2b6bebd/f2b6bebb/f2b6bebe/f2b6beb8/f2b6bf95/f2b6bfad/f2b6bfbc/f2b6bfbc/f2b6bfad/f2b6bfba/f2b6beb6/f2b6bf99/f2b6beb6/f2b6bfb1/f2b6bfab/f2b6bfb7/f2b6bfb6/f2b6bfa8/f2b6beb9/f2b6beb7/f2b6bfb8/f2b6bfb6/f2b6bfaf/f2b6beb0/f2b6beb5/ceb6/f2b6bea9/f2b6bea9/f2b6bea9/f2b6bea9/f2b6beb0/f2b6bfbd/f2b6bfbb/f2b6bfad/f2b6bfba/f2b6bfb6/f2b6bf82/f2b6bfb5/f2b6bfad/f2b6beb0/f2b6bea9/f2b6bf83/f2b6bea9/f2b6beab/f2b6bf8b/f2b6bf98/f2b6bf9d/f2b6bea9/f2b6beb6/f2b6bea9/f2b6bf97/f2b6bfb1/f2b6bfaf/f2b6bfaf/f2b6bfad/f2b6bfba/f2b6bea9/f2b6bf90/f2b6bfba/f2b6bf82/f2b6bfaa/f2b6bfaa/f2b6bfad/f2b6bfba/f2b6bea9/f3969097/f2b6beab/ceb6/f2b78086/ceb6/ceb6/f2b6bfba/f2b6bfad/f2b6bfb9/f2b6bfbd/f2b6bfad/f2b6bfbb/f2b6bfbc/f2b6bfbb/f2b6beb7/f2b6bfb8/f2b6bfb7/f2b6bfbb/f2b6bfbc/f2b6beb1/f2b6bfbf/f2b6bfad/f2b6bfaa/f2b6bfb0/f2b6bfb7/f2b6bfb7/f2b6bfb3/f2b6beb5/f2b6bfac/f2b6bf82/f2b6bfbc/f2b6bf82/f2b6bf86/f2b6bfac/f2b6bf82/f2b6bfbc/f2b6bf82/f2b6beb2)r\00\00\00r\00\00\00Z_sparkleN)r\00\00\00r\00\00\00r\00\00\00r\00\00\00r\00\00\00\DA<module>\00\00\00s\00\00\00\00\00

This appears to be a .pyc file. You can't easily recover the original source code, but you should be able to import it. From there, you can use the dis module to disassemble various functions and attempt to reconstruct equivalent source code. Other tools (courtesy of SuperStormer ) include:

Unless you have another copy of this file, the comments are likely lost forever.


To show how to use dis to manually decompile a .pyc file, let's take a look at decompiling importlib 's __init__.py . (I'm using Python 3.9.2.) To get a complete disassembly of the module, we'll use this code snippet, explained in Given a python .pyc file, is there a tool that let me view the bytecode? .

import dis
import marshal

PYC = '/usr/lib/python3.9/importlib/__pycache__/__init__.cpython-39.pyc'

with open(PYC, 'rb') as f:
    f.read(16)  # skip the header; may be a different length
                # try 12, 24, 28 and 32
    dis.dis(marshal.load(f))

This will output several sections. The first one will be the main file, and subsequent sections will be the contents of classes, functions, lambdas, list comprehensions etc.. The line numbers are listed in the left column, the bytecode instructions in the middle, and their parameters on the right. Here I show the first 31 lines:

  1           0 LOAD_CONST               0 ('A pure Python implementation of import.')
              2 STORE_NAME               0 (__doc__)

A code object's docstring, if it has one, is always constant number 0. (You'll be able to access the docstrings of functions by importing the module normally, but they're not visible for any of the functions in this disassembly.)

  1 'A pure Python implementation of import.'
  2           4 BUILD_LIST               0
              6 LOAD_CONST               1 (('__import__', 'import_module', 'invalidate_caches', 'reload'))
              8 LIST_EXTEND              1
             10 STORE_NAME               1 (__all__)

Here, we build a list. There are a few ways of writing this; a literal translation might be:

  2 __all__ = [].extend(('__import__', 'import_module', 'invalidate_caches', 'reload'))

But I know that CPython 3.9 would compile that code differently. I think the original was more like:

  2 __all__ = ['__import__', 'import_module', 'invalidate_caches', 'reload']

The next line of code is line 12. It appears there were several comments in the original Python file; those haven't made it into the .pyc file, so they're lost forever.

 12          12 LOAD_CONST               2 (0)
             14 LOAD_CONST               3 (None)
             16 IMPORT_NAME              2 (_imp)
             18 STORE_NAME               2 (_imp)

 13          20 LOAD_CONST               2 (0)
             22 LOAD_CONST               3 (None)
             24 IMPORT_NAME              3 (sys)
             26 STORE_NAME               3 (sys)

These are import statements. A literal translation:

 12 import _imp as _imp
 13 import sys as sys

Though it's more likely the original was:

 12 import _imp
 13 import sys
 15          28 SETUP_FINALLY           12 (to 42)

Now we get to a tricky bit: a try statement. Execution will jump to bytecode offset 42 if an exception is raised, so that's either an except or finally .

 15 try:
 16          30 LOAD_CONST               2 (0)
             32 LOAD_CONST               3 (None)
             34 IMPORT_NAME              4 (_frozen_importlib)
             36 STORE_NAME               5 (_bootstrap)
 16     import _frozen_importlib as _bootstrap
             38 POP_BLOCK
             40 JUMP_FORWARD            42 (to 84)

This marks the end of the try block. Bytecode offset 84 is the next piece of code that Python will run after successfully completing line 16, so it's either an else or finally (in that order), or the next line of code after the try statement if it didn't have either of those.

 17     >>   42 DUP_TOP
             44 LOAD_NAME                6 (ImportError)
             46 JUMP_IF_NOT_EXC_MATCH    82
             48 POP_TOP
             50 POP_TOP
             52 POP_TOP

We know from earlier that offset 42 is either an except or finally ; it seems it's an except .

 17 except ImportError:

82 is the offset of the next except in the chain.

 18          54 LOAD_CONST               4 (1)
             56 LOAD_CONST               5 (('_bootstrap',))
             58 IMPORT_NAME              7
             60 IMPORT_FROM              5 (_bootstrap)
             62 STORE_NAME               5 (_bootstrap)
             64 POP_TOP

This import statement is trickier. The 1 (rather than 0 ) means it's a level up, and the ('_bootstrap',) (rather than None ) means it's a from ... import ... statement. Here's an example:

 >>> dis.dis("from ..hi.veg import salad as greens, carrot") 1 0 LOAD_CONST 0 (2) 2 LOAD_CONST 1 (('salad', 'carrot')) 4 IMPORT_NAME 0 (hi.veg) 6 IMPORT_FROM 1 (salad) 8 STORE_NAME 2 (greens) 10 IMPORT_FROM 3 (carrot) 12 STORE_NAME 3 (carrot) 14 POP_TOP 16 LOAD_CONST 2 (None) 18 RETURN_VALUE

By analogy, this must be:

 18     from . import _bootstrap
 19          66 LOAD_NAME                5 (_bootstrap)
             68 LOAD_METHOD              8 (_setup)
             70 LOAD_NAME                3 (sys)
             72 LOAD_NAME                2 (_imp)
             74 CALL_METHOD              2
             76 POP_TOP

CPython's bytecode VM is stack-based. This puts _bootstrap._setup , sys and _imp onto the stack, then does a two-argument function call and discards the result. That's:

 19     _bootstrap._setup(sys, _imp)
             78 POP_EXCEPT
             80 JUMP_FORWARD            62 (to 144)
        >>   82 RERAISE

That's the end of the except block. The next except block is RERAISE . That looks a little like:

    except:
        raise

But Python syntax doesn't allow you to have this on the same line as a previous block! Re-raising the exception if none of the other exceptions match is just what happens if you don't have a catch-all except: line; this instruction doesn't correspond to anything at all.

(Also, CPython 3.9.2's compiler maps raise to RAISE_VARARGS 0 , not RERAISE .)

 23     >>   84 LOAD_CONST               6 ('importlib._bootstrap')
             86 LOAD_NAME                5 (_bootstrap)
             88 STORE_ATTR               9 (__name__)

Line 23 is the start of the else: block, so line 20, 21 or 22 must be else: .

 2? else:
 23     _bootstrap.__name__ = 'importlib._bootstrap'
 24          90 LOAD_CONST               7 ('importlib')
             92 LOAD_NAME                5 (_bootstrap)
             94 STORE_ATTR              10 (__package__)
 24     _bootstrap.__package__ = 'importlib'
 25          96 SETUP_FINALLY           18 (to 116)

 26          98 LOAD_NAME               11 (__file__)
            100 LOAD_METHOD             12 (replace)
            102 LOAD_CONST               8 ('__init__.py')
            104 LOAD_CONST               9 ('_bootstrap.py')
            106 CALL_METHOD              2
            108 LOAD_NAME                5 (_bootstrap)
            110 STORE_ATTR              11 (__file__)
            112 POP_BLOCK
            114 JUMP_FORWARD            18 (to 134)

Another try: block. Opcodes 98 to 106 gives you __file__.replace('__init__.py', '_bootstrap.py') . Opcodes 108 to 110 are _bootstrap.__file__ = .

 25     try:
 26         _bootstrap.__file__ = __file__.replace('__init__.py', '_bootstrap.py')
 27     >>  116 DUP_TOP
            118 LOAD_NAME               13 (NameError)
            120 JUMP_IF_NOT_EXC_MATCH   132
            122 POP_TOP
            124 POP_TOP
            126 POP_TOP
 27     except NameError:
 30         128 POP_EXCEPT
            130 JUMP_FORWARD             2 (to 134)
        >>  132 RERAISE

That's the end of the block. Nothing's actually happened, so line 30 is a pass . (Lines 28 and 29 are probably comments.)

 30         pass
 31     >>  134 LOAD_NAME                5 (_bootstrap)
            136 LOAD_NAME                3 (sys)
            138 LOAD_ATTR               14 (modules)
            140 LOAD_CONST               6 ('importlib._bootstrap')
            142 STORE_SUBSCR
 31     sys.modules['importlib._bootstrap'] = _bootstrap

The module continues like this, but it's long . So let's look at a function instead:

 74         312 LOAD_CONST              22 ((None,))
            314 LOAD_CONST              16 (<code object find_loader at 0x7f900e0fadf0, file "/usr/lib/python3.9/importlib/__init__.py", line 74>)
            316 LOAD_CONST              17 ('find_loader')
            318 MAKE_FUNCTION            1 (defaults)
            320 STORE_NAME              23 (find_loader)

That code object is also disassembled, later on:

Disassembly of <code object find_loader at 0x7f900e0fadf0, file "/usr/lib/python3.9/importlib/__init__.py", line 74>:
 82           0 LOAD_GLOBAL              0 (warnings)
              2 LOAD_ATTR                1 (warn)
              4 LOAD_CONST               1 ('Deprecated since Python 3.4. Use importlib.util.find_spec() instead.')

 84           6 LOAD_GLOBAL              2 (DeprecationWarning)
              8 LOAD_CONST               2 (2)

 82          10 LOAD_CONST               3 (('stacklevel',))
             12 CALL_FUNCTION_KW         3
             14 POP_TOP

There's a big gap between line 74 and line 82. You can get more information by inspecting the code object instead of passing it straight to dis.dis ; here's what I reconstructed from that:

 74 def find_loader(name, path=None):
 75     """Return the loader for the specified module.
 76 
 77     This is a backward-compatible wrapper around find_spec().
 78 
 79     This function is deprecated in favor of importlib.util.find_spec().
 80 
 81     """

The number of arguments is from the code object's .co_argcount attribute; the names are the first two from .co_varnames , and the =None comes from opcode 312 of the module's code. The docstring is .co_consts[0] .

You'll notice that the line numbers go 82, 84, 82 – that's why I picked this function. If we lay it out crudely:

 82 warnings.warn('Deprecated since Python 3.4. Use importlib.util.find_spec() instead.',
 84 DeprecationWarning, ???=2
 82 stacklevel=???)

we can see that the function call starts on line 82, and the DeprecationWarning global lookup happens on line 84. Looking ahead:

 85          16 SETUP_FINALLY           46 (to 64)

we can see that line 85 is occupied by a try: , so this function call is only spread over three lines. Perhaps it's something like:

 82     warnings.warn('Deprecated since Python 3.4. Use importlib.util.find_spec() instead.',
 83 
 84     DeprecationWarning, stacklevel=2)

though line 82 is too long for PEP-8 (recommended maximum line length 80) and line 83 is blank. Python lets you split strings across multiple lines, so my guess is:

 82     warnings.warn('Deprecated since Python 3.4. '
 83         'Use importlib.util.find_spec() instead.',
 84         DeprecationWarning, stacklevel=2)
 85     try:
 86          18 LOAD_GLOBAL              3 (sys)
             20 LOAD_ATTR                4 (modules)
             22 LOAD_FAST                0 (name)
             24 BINARY_SUBSCR
             26 LOAD_ATTR                5 (__loader__)
             28 STORE_FAST               2 (loader)
 86         loader = sys.modules[name].__loader__
 87          30 LOAD_FAST                2 (loader)
             32 LOAD_CONST               4 (None)
             34 IS_OP                    0
             36 POP_JUMP_IF_FALSE       54

A branch! This is tricky to decompile, since (unlike exceptions) we don't have the pushing and popping of blocks to guide us. Reading ahead, though, this is fairly easy.

 87         if loader is None:
 88          38 LOAD_GLOBAL              6 (ValueError)
             40 LOAD_CONST               5 ('{}.__loader__ is None')
             42 LOAD_METHOD              7 (format)
             44 LOAD_FAST                0 (name)
             46 CALL_METHOD              1
             48 CALL_FUNCTION            1
             50 RAISE_VARARGS            1
             52 JUMP_FORWARD             6 (to 60)

 90     >>   54 LOAD_FAST                2 (loader)
             56 POP_BLOCK
             58 RETURN_VALUE
        >>   60 POP_BLOCK
             62 JUMP_FORWARD            50 (to 114)
 88             raise ValueError('{}.__loader__ is None'.format(name))
 89         else:
 90             return loader
 91     >>   64 DUP_TOP
             66 LOAD_GLOBAL              8 (KeyError)
             68 JUMP_IF_NOT_EXC_MATCH    80
             70 POP_TOP
             72 POP_TOP
             74 POP_TOP

 92          76 POP_EXCEPT
             78 JUMP_FORWARD            34 (to 114)
 91     except KeyError:
 92         pass
 93     >>   80 DUP_TOP
             82 LOAD_GLOBAL              9 (AttributeError)
             84 JUMP_IF_NOT_EXC_MATCH   112
             86 POP_TOP
             88 POP_TOP
             90 POP_TOP

 94          92 LOAD_GLOBAL              6 (ValueError)
             94 LOAD_CONST               6 ('{}.__loader__ is not set')
             96 LOAD_METHOD              7 (format)
             98 LOAD_FAST                0 (name)
            100 CALL_METHOD              1
            102 CALL_FUNCTION            1
            104 LOAD_CONST               4 (None)
            106 RAISE_VARARGS            2
            108 POP_EXCEPT
            110 JUMP_FORWARD             2 (to 114)
        >>  112 RERAISE
 93     except AttributeError:
 94         raise ValueError('{}.__loader__ is not set'.format(name))

This ends the try: block. Then we have either a comment or a blank line. Probably a blank line, since I'd expect there to be one if there were a comment, but there's only one line unaccounted for.

 95 
 96     >>  114 LOAD_GLOBAL             10 (_bootstrap)
            116 LOAD_METHOD             11 (_find_spec)
            118 LOAD_FAST                0 (name)
            120 LOAD_FAST                1 (path)
            122 CALL_METHOD              2
            124 STORE_FAST               3 (spec)
 96     spec = _bootstrap._findspec(name, path)

And another (probably) blank line.

 98         126 LOAD_FAST                3 (spec)
            128 LOAD_CONST               4 (None)
            130 IS_OP                    0
            132 POP_JUMP_IF_FALSE      138

 99         134 LOAD_CONST               4 (None)
            136 RETURN_VALUE
 98     if spec is None:
 99         return None
100     >>  138 LOAD_FAST                3 (spec)
            140 LOAD_ATTR               12 (loader)
            142 LOAD_CONST               4 (None)
            144 IS_OP                    0
            146 POP_JUMP_IF_FALSE      188

101         148 LOAD_FAST                3 (spec)
            150 LOAD_ATTR               13 (submodule_search_locations)
            152 LOAD_CONST               4 (None)
            154 IS_OP                    0
            156 POP_JUMP_IF_FALSE      176

102         158 LOAD_GLOBAL             14 (ImportError)
            160 LOAD_CONST               7 ('spec for {} missing loader')
            162 LOAD_METHOD              7 (format)
            164 LOAD_FAST                0 (name)
            166 CALL_METHOD              1

103         168 LOAD_FAST                0 (name)

102         170 LOAD_CONST               8 (('name',))
            172 CALL_FUNCTION_KW         2
            174 RAISE_VARARGS            1
100     if spec.loader is None:
101         if spec.submodule_search_locations is None:
102             raise ImportError('spec for {} missing loader'.format(name),
103                 name=name)
104     >>  176 LOAD_GLOBAL             14 (ImportError)
            178 LOAD_CONST               9 ('namespace packages do not have loaders')

105         180 LOAD_FAST                0 (name)

104         182 LOAD_CONST               8 (('name',))
            184 CALL_FUNCTION_KW         2
            186 RAISE_VARARGS            1
104         raise ImportError('namespace packages do not have loaders',
105             name=name)
106     >>  188 LOAD_FAST                3 (spec)
            190 LOAD_ATTR               12 (loader)
            192 RETURN_VALUE
106     return spec.loader

Now let's look at the original importlib/__init__.py and see how I did:

  1 """A pure Python implementation of import."""
  2 __all__ = ['__import__', 'import_module', 'invalidate_caches', 'reload']
  3 
  4 # Bootstrap help #####################################################
  5 
  6 # Until bootstrapping is complete, DO NOT import any modules that attempt
  7 # to import importlib._bootstrap (directly or indirectly). Since this
  8 # partially initialised package would be present in sys.modules, those
  9 # modules would get an uninitialised copy of the source version, instead
 10 # of a fully initialised version (either the frozen one or the one
 11 # initialised below if the frozen one is not available).
 12 import _imp  # Just the builtin component, NOT the full Python module
 13 import sys
 14 
 15 try:
 16     import _frozen_importlib as _bootstrap
 17 except ImportError:
 18     from . import _bootstrap
 19     _bootstrap._setup(sys, _imp)
 20 else:
 21     # importlib._bootstrap is the built-in import, ensure we don't create
 22     # a second copy of the module.
 23     _bootstrap.__name__ = 'importlib._bootstrap'
 24     _bootstrap.__package__ = 'importlib'
 25     try:
 26         _bootstrap.__file__ = __file__.replace('__init__.py', '_bootstrap.py')
 27     except NameError:
 28         # __file__ is not guaranteed to be defined, e.g. if this code gets
 29         # frozen by a tool like cx_Freeze.
 30         pass
 31     sys.modules['importlib._bootstrap'] = _bootstrap 
...
 74 def find_loader(name, path=None):
 75     """Return the loader for the specified module.
 76 
 77     This is a backward-compatible wrapper around find_spec().
 78 
 79     This function is deprecated in favor of importlib.util.find_spec().
 80 
 81     """
 82     warnings.warn('Deprecated since Python 3.4. '
 83                   'Use importlib.util.find_spec() instead.',
 84                   DeprecationWarning, stacklevel=2)
 85     try:
 86         loader = sys.modules[name].__loader__
 87         if loader is None:
 88             raise ValueError('{}.__loader__ is None'.format(name))
 89         else:
 90             return loader
 91     except KeyError:
 92         pass
 93     except AttributeError:
 94         raise ValueError('{}.__loader__ is not set'.format(name)) from None
 95 
 96     spec = _bootstrap._find_spec(name, path)
 97     # We won't worry about malformed specs (missing attributes).
 98     if spec is None:
 99         return None
100     if spec.loader is None:
101         if spec.submodule_search_locations is None:
102             raise ImportError('spec for {} missing loader'.format(name),
103                               name=name)
104         raise ImportError('namespace packages do not have loaders',
105                           name=name)
106     return spec.loader
...

vs my decompiled version:

  1 'A pure Python implementation of import.'
  2 __all__ = ['__import__', 'import_module', 'invalidate_caches', 'reload']
...
 12 import _imp
 13 import sys
...
 15 try:
 16     import _frozen_importlib as _bootstrap
 17 except ImportError:
 18     from . import _bootstrap
 19     _bootstrap._setup(sys, _imp)
 2? else:
 23     _bootstrap.__name__ = 'importlib._bootstrap'
 24     _bootstrap.__package__ = 'importlib'
 25     try:
 26         _bootstrap.__file__ = __file__.replace('__init__.py', '_bootstrap.py')
 27     except NameError:
...
 30         pass
 31     sys.modules['importlib._bootstrap'] = _bootstrap
...
 74 def find_loader(name, path=None):
 75     """Return the loader for the specified module.
 76 
 77     This is a backward-compatible wrapper around find_spec().
 78 
 79     This function is deprecated in favor of importlib.util.find_spec().
 80 
 81     """
 82     warnings.warn('Deprecated since Python 3.4. '
 83         'Use importlib.util.find_spec() instead.',
 84         DeprecationWarning, stacklevel=2)
 85     try:
 86         loader = sys.modules[name].__loader__
 87         if loader is None:
 88             raise ValueError('{}.__loader__ is None'.format(name))
 89         else:
 90             return loader
 91     except KeyError:
 92         pass
 93     except AttributeError:
 94         raise ValueError('{}.__loader__ is not set'.format(name))
 95 
 96     spec = _bootstrap._findspec(name, path)
 97 
 98     if spec is None:
 99         return None
100     if spec.loader is None:
101         if spec.submodule_search_locations is None:
102             raise ImportError('spec for {} missing loader'.format(name),
103                 name=name)
104         raise ImportError('namespace packages do not have loaders',
105             name=name)
106     return spec.loader

Some of the spacing is wrong (eg lines 83 and 84), and the comments are all missing, but I don't think I did a terrible job.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM