Sindbad~EG File Manager
�
$Μgt���� dZddlmZmZmZddlmZddlZddlZddl Z
ddlmZddl
mZddlZddlZddlZddlZgd�Zej(ed� �d
adad�Zd�Zd
�Zd�Zeadadej<dddfd�Zd!d�Z d�Z!d�Z"Gd�d�Z#Gd�d�Z$ej<fd�Z%d"d�Z&ej<fd�Z'd�Z(d�Z)d�Z*d�Z+d�Z,ed k(re%�yy)#z2.6�)�StringIO�BytesIO�
TextIOWrapper)�MappingN)�
FeedParser)�Message)�MiniFieldStorage�FieldStorage�parse�parse_multipart�parse_header�test�print_exception�
print_environ�
print_form�print_directory�print_arguments�print_environ_usage)��
)�remove�c��� tjdtd��trts ttdd��atstantat|�y#t$rY�'wxYw)Nz7cgi.log() is deprecated as of 3.10. Use logging instead�)�
stacklevel�a�locale)�encoding)
�warnings�warn�DeprecationWarning�logfile�logfp�open�OSError�nolog�log�dolog��allargss � /usr/local/lib/python3.12/cgi.py�initlogr,As_���.
�M�M�K�$��4��u� ���#��9�E��������M��
� �� �s�A� A%�$A%c�<� tj||zdz�y)N�
)r#�write)�fmt�argss r+r(r(fs��G� �K�K��D��4�� �c�� y�N�r)s r+r&r&js��C�r2c�N� datrtj�datay)Nr)r"r#�closer,r'r5r2r+�closelogr8ns ����G��
���
���
�Cr2�&c��� |�tj}t|d�r
|j}nd}t |t
�r|j}d|vrd|d<|ddk(r�t|d�\}}|dk(rt|||��S|d k(rIt|d
�}tr|tkDrtd��|j|�j|�} nd} d
|vr| r| dz} | |d
z} n0tjddr| r| dz} | tjdz} | |d
<n8d
|vr|d
} n.tjddrtjd} nd} | |d
<tj j#| ||||��S)Nrzlatin-1�REQUEST_METHOD�GET�POST�CONTENT_TYPEzmultipart/form-data)� separator�!application/x-www-form-urlencoded�CONTENT_LENGTH�Maximum content length exceededr�QUERY_STRINGr9�)rr?)�sys�stdin�hasattrr�
isinstancer�bufferr
r�int�maxlen�
ValueError�read�decode�argv�urllibr�parse_qs)
�fp�environ�keep_blank_values�strict_parsingr?r�ctype�pdict�clength�qss
r+rr�s����,
�z�
�Y�Y���r�*���;�;�����"�m�$�
�Y�Y���w�&�$)�� �!��� �F�*�#�G�N�$;�<���u��)�)�"�2�u� �B�B�
�9�
9��'�"2�3�4�G��'�F�*� �!B�C�C�����!�(�(��2�B��B��W�$���S��2��g�n�-�-�B�
�X�X�a�b�\���S��2��c�h�h�q�k�!�B�"$���� �7� "�
�^�
$���8�8�A�B�<����!��B��B�"$�����<�<� � ��%6��*2�i�!�I�Ir2c�$� |djd�}dj|�}t�}|j|� |d|d<t||||ddi|��}|D� cic]} | |j
| ���c} S#t$rY�>wxYwcc} w) N�boundary�asciiz multipart/form-data; boundary={}zCONTENT-LENGTHzContent-Lengthr;r=)�headersr�errorsrSr?)rN�formatr�set_type�KeyErrorr
�getlist)
rRrWrr^r?r[rVr]�fs�ks
r+rr�s�����Z� �'�'��0�H�.�5�5�h�?�E��i�G����U��
�$)�*:�$;�� �!�
�b�'�H�V�!�6�*�i�
A�B�&(�)�b��A�r�z�z�!�}��b�)�)�� �
��
��*s�A>�"B
�> B
� B
c#�K�|dddk(r�|dd}|jd�}|dkDro|jdd|�|jdd|�z
dzrE|jd|dz�}|dkDr+|jdd|�|jdd|�z
dzr�E|dkrt|�}|d|}|j���||d}|dddk(r��yy�w)NrD�;r�"�\"r)�find�count�len�strip)�s�end�fs r+�_parseparamrp�s�����
�B�Q�%�3�,�
�a�b�E���f�f�S�k���A�g�1�7�7�3��3�/�!�'�'�%��C�2H�H�A�M��&�&��c�A�g�&�C��A�g�1�7�7�3��3�/�!�'�'�%��C�2H�H�A�M���7��a�&�C�
�d�s�G���g�g�i��
�c�d�G���B�Q�%�3�,�s�BC�4C�
Cc�� td|z�}|j�}i}|D]�}|jd�}|dk\s�|d|j�j �}||dzdj�}t|�dk\r;|d|dcxk(rdk(r*nn'|dd}|j
dd �j
d
d�}|||<��||fS)Nrf�=rrDr���rgz\\�\rh)rp�__next__rirl�lowerrk�replace)�line�parts�keyrW�p�i�name�values r+r
r
�s����
��d�
�#�E�
�.�.�
�C��E�
��
�F�F�3�K����6��R�a�5�;�;�=�&�&�(�D��a��c�d�G�M�M�O�E��5�z�Q��5��8�u�R�y�#?�C�#?��a�����
�
�f�d�3�;�;�E�3�G���E�$�K����:�r2c�:�eZdZ dZdZdZdZiZdZiZ iZ
d�Zd�Zy)r Nc�"� ||_||_yr4�r}r~��selfr}r~s r+�__init__zMiniFieldStorage.__init__s��4��� ���
r2c�<�d|j�d|j�d�S)NzMiniFieldStorage(�, �)r��r�s r+�__repr__zMiniFieldStorage.__repr__s��.�-1�Y�Y��
�
�C�Cr2)
�__name__�
__module__�__qualname__�filename�list�type�file�type_options�disposition�disposition_optionsr]r�r�r5r2r+r r s;��G��H��D��D��D��L��K����G��Dr2r c���eZdZ dddejdddddddfd�Zd�Zd �Zd
�Zd�Z d�Z
d
�Zd�Zd!d�Z
d!d�Zd�Zd�Zd�Zd�Zd�Zd�ZdZd�Zd�ZdZd�Zd�Zd�Zd�Zd�Zd�Zd �Zy)"r
Nr2r�utf-8rwr9c�8� d}||_||_|
|_||_d|vr|dj �}d|_|dk(s|dk(rhd|vr|d}
n)tjddrtjd}
nd}
|
jtj�d�}
t|
�}|�dd i}|�3i}|d
k(rd |d<d|vr|d|d<d|vr
|d|_d|vr*|d|d
<n!t|ttf�std��||_|� tj"j$|_nLt|t(�r|j$|_n*t+|d�rt+|d�std��||_||_| |_t|t0�s!tdt3|�j4z��||_d|_||_di}}d|j vrt=|j d�\}}||_||_ d|_!d|vr
|d|_!d|_"d|vr
|d|_"|jDdu|_#d|j vrt=|j d�\}}n|j6s|d
k7rdi}}nd i}}||_||_$d|vr/|dj|j,|j.�|_%nd|_%d}d
|j vr3 tM|j d
�}tPr|tPkDrtOd��||_)|j:�|dk\r||_dx|_*|_+d|_,|d k(r|j[�y|dddk(r|j]|||�y|j_�y#tN$rY��wxYw)Nr<r;�HEADrCrDr�surrogateescapezcontent-typer@r=r>rA�content-lengthz?headers must be mapping or an instance of email.message.MessagerM�readlinezfp must be file pointerz#outerboundary must be bytes, not %srzcontent-dispositionr}r�z
text/plainr[r2rsrB�
z
multipart/)0rTrU�max_num_fieldsr?�upper�
qs_on_postrErO�encoder�getpreferredencodingrrHrr� TypeErrorr]rFrIrRrrGrr^�bytesr�r��
outerboundary�
bytes_read�limitr
r�r�r}r��_binary_filer��
innerboundaryrJrLrK�lengthr�r��done�read_urlencoded�
read_multi�read_single)r�rRr]r�rSrTrUr�rr^r�r?�methodrY�cdisprWrV�clens r+r�zFieldStorage.__init__Js���* �V��!2���,���,���"����w�&��-�.�4�4�6�F�����U�?�f��.���(��^�,�����!�"���X�X�a�[�������6�6�6�8�:K�L�B����B���)�>�@���?��G����*M���'���(�*1�.�*A���'���(�")�.�"9����7�*�,3�4D�,E��(�)��w��'�(:�;��!8�9�9����
�:��i�i�&�&�D�G�
��M�
*��i�i�D�G��B��'�G�B�
�,C�� 9�:�:��D�G� ��
�����-��/��A�"�=�1�:�:�;�<�
<�*��������
��2�u�� �D�L�L�0�'����5J�(K�L�L�E�5� ���#(�� ��� ��U�?��f�
�D�I���
����!�*�-�D�M� �M�M��5����T�\�\�)�'����^�(D�E�L�E�5�
�
�
�6�V�#3�'��5�E�>��5�E��� �!������!&�z�!2�!9�!9�$�-�-�:>�+�+�"G�D��"%�D�����t�|�|�+�
��4�<�<�(8�9�:���$��-� �!B�C�C�����:�:��$�!�)��D�J� $�$�� �D�I��� ��7�7�� � �"�
�3�B�Z�<�
'��O�O�G�%6��G�������
��
�s�$N
�
N�Nc�X� |jj�y#t$rYywxYwr4)r�r7�AttributeErrorr�s r+�__del__zFieldStorage.__del__�s'�� ��I�I�O�O���� �� �s�� )�)c��|Sr4r5r�s r+� __enter__zFieldStorage.__enter__�s���r2c�8�|jj�yr4)r�r7)r�r1s r+�__exit__zFieldStorage.__exit__�s��� � ���r2c�V�d|j�d|j�d|j�d�S)Nz
FieldStorage(r�r�)r}r�r~r�s r+r�zFieldStorage.__repr__�s"��0�� � �4�=�=�$�*�*�6� 6r2c�4�t|j��Sr4)�iter�keysr�s r+�__iter__zFieldStorage.__iter__s���D�I�I�K� � r2c��|dk7rt|��|jrR|jjd�|jj�}|jjd�|S|j�|j}|Sd}|S)Nr~r)r�r��seekrMr�r�s r+�__getattr__zFieldStorage.__getattr__sz���7�?� ��&�&��9�9��I�I�N�N�1���I�I�N�N�$�E��I�I�N�N�1��
�� �Y�Y�
"��I�I�E����E��r2c��� |j�td��g}|jD]#}|j|k(s�|j|��%|st |��t|�dk(r|dS|S)N�
not indexablerDr)r�r�r}�appendrark)r�rz�found�items r+�__getitem__zFieldStorage.__getitem__sj��(��9�9���O�,�,����I�I�D��y�y�C�����d�!3����3�-���u�:��?���8�O��Lr2c�� ||vr;||}t|t�r|D�cgc]}|j��c}S|jS|Scc}wr4�rHr�r~)r�rz�defaultr~�xs r+�getvaluezFieldStorage.getvaluesL��F��$�;���I�E��%��&�).�/��A�����/�/��{�{�"��N�� 0s�Ac�p� ||vr0||}t|t�r|djS|jS|S�Nrr�)r�rzr�r~s r+�getfirstzFieldStorage.getfirst)s<��/��$�;���I�E��%��&��Q�x�~�~�%��{�{�"��Nr2c�� ||vr<||}t|t�r|D�cgc]}|j��c}S|jgSgScc}wr4r�)r�rzr~r�s r+rbzFieldStorage.getlist4sN��.��$�;���I�E��%��&�).�/��A�����/�/����}�$��I�� 0s�Ac�|� |j�td��ttd�|jD���S)Nr�c3�4K�|]}|j���y�wr4�r})�.0r�s r+� <genexpr>z$FieldStorage.keys.<locals>.<genexpr>Cs����8�i�d�� � �i�s�)r�r��setr�s r+r�zFieldStorage.keys?s4��-��9�9���O�,�,��C�8�d�i�i�8�8�9�9r2c�p�� |j�td��t�fd�|jD��S)Nr�c3�<�K�|]}|j�k(���y�wr4r�)r�r�rzs �r+r�z,FieldStorage.__contains__.<locals>.<genexpr>Is�����:� ��4�9�9��#� �s�)r�r��any)r�rzs `r+�__contains__zFieldStorage.__contains__Es0���3��9�9���O�,�,��:�� � �:�:�:r2c�6� t|j��Sr4)rkr�r�s r+�__len__zFieldStorage.__len__Ks��.��4�9�9�;��r2c�Z�|j�td��t|j�S)NzCannot be converted to bool.)r�r��boolr�s r+�__bool__zFieldStorage.__bool__Os&���9�9���:�;�;��D�I�I��r2c �� |jj|j�}t|t�s-t|j�dt
|�j����|j|j|j�}|jr|d|jzz
}tjj||j|j |j|j|j"|j$��}|D��cgc]\}}t'||���c}}|_|j+�ycc}}w)N� should return bytes, got r9�rr^r�r?)rRrMr�rHr�rLr�r�rNrr^r�rPr� parse_qslrTrUr�r?r r��
skip_lines)r�rY�queryrzr~s r+r�zFieldStorage.read_urlencodedTs���9�
�W�W�\�\�$�+�+�
&���"�e�$�� $����b��):�):�<�=�
=�
�Y�Y�t�}�}�d�k�k�
2���?�?��#����'�'�B����&�&���&�&��(;�(;��]�]�4�;�;��.�.�$�.�.�'�J��EJ�J�E�j�c�5�%�c�5�1�E�J�� ������Ks�D?c
�~� |j}t|�std|����g|_|jr�t
jj|j|j|j|j|j|j|j��}|jjd�|D��|jxs|j }|j"j%�}t'|t(�s-t|j"�dt+|�j,����|xj.t1|�z
c_|j3�d|jzk7r]|r[|j"j%�}|xj.t1|�z
c_|j3�d|jzk7r|r�[|j}|�|t1|j�z} t5�} d}
|j"j%�}|
|z
}
|j3�sn�1|
s�nq|xj.t1|
�z
c_| j7|
j9|j|j��| j;�}d|vr|d=|j<�dn|j<|j.z
}
||j"||||||
|j|j||j�}|�9|dz}|jr|t1|j�z}|d krtd
��|xj.|j.z
c_|jj?|�|j@s"|j.|jBcxk\rd kDrnnn���|jE�y)Nz$Invalid boundary in multipart form: r�c3�:K�|]\}}t||����y�wr4)r )r�rzr~s r+r�z*FieldStorage.read_multi.<locals>.<genexpr>qs����R�E�j�c�5�-�c�5�9�E�s�r��--r2r�rDrzMax number of fields exceeded)#r��valid_boundaryrLr�r�rPrr�rTrUrr^r�r?�extend�FieldStorageClass� __class__rRr�rHr�r�r�r�rkrlr�feedrNr7r�r�r�r�r�)r�rSrTrU�ibr��klass�
first_liner��parser�hdr_text�datar]r��parts r+r�zFieldStorage.read_multifs��=�
�
�
���b�!���M�N�N��� ��?�?��L�L�*�*�����!7�!7��9L�9L����t�{�{�#�2�2�d�n�n�+�N�E�
�I�I���R�E�R�R��&�&�8�$�.�.���W�W�%�%�'�
��*�e�,�� $����j�)9�)B�)B�D�E�
E����3�z�?�*�����!�e�d�.@�.@�&@�A�����)�)�+�J��O�O�s�:��.�O����!�e�d�.@�.@�&@�A��
�,�,���%��c�$�)�)�n�,�N���\�F��H���w�w�'�'�)���D� ���z�z�|�� �
���O�O�s�8�}�,�O��K�K�����
�
�t�{�{�C�D��l�l�n�G� �7�*��,�-� �J�J�.�D��Z�Z�$�/�/�1�
�����'�2�w�8I�'��������^�T�^�^�U�D��)��!�#���9�9�"�c�$�)�)�n�4�N�!�A�%�$�%D�E�E��O�O�t���.�O��I�I���T�"��y�y�D�O�O�t�{�{�>�Q�>��G�H
���r2c�� |jdk\r!|j�|j�n|j�|jjd�yr�)r��read_binaryr��
read_linesr�r�r�s r+r�zFieldStorage.read_single�sA��,��;�;�!�������O�O���O�O��� � ���q�r2i c��� |j�|_|j}|dk\r�|dkDr�|jj t||j��}t|t�s-t|j�dt|�j����|xjt|�z
c_|sd|_y|jj|�|t|�z
}|dkDr��yyy)Nrr�rs)� make_filer�r�rRrM�min�bufsizerHr�rLr�r�r�rkr�r/)r��todor�s r+r�zFieldStorage.read_binary�s���)��N�N�$�� ��{�{���1�9���(��w�w�|�|�C��d�l�l�$;�<��!�$��.�$�(,����d��1D�1D�&F�G�G����3�t�9�,��� "�D�I��� � ����%��c�$�i�'����(�r2c��� |jrt�x|_|_nt �x|_|_|j
r|j
�y|j�yr4)r�rr��_FieldStorage__filerr��read_lines_to_outerboundary�read_lines_to_eofr�s r+r�zFieldStorage.read_lines�sO��>����&-�i�/�D�I���&.�j�0�D�I�������,�,�.��"�"�$r2c��� |j�z|jj�t|�zdkDrQ|j�|_|jj�}|jj
|�d|_|jr|jj
|�y|jj
|j|j|j��y)Ni�)r��tellrkr�r�r�r/r�rNrr^)r�rxr�s r+�__writezFieldStorage.__write�s���.��;�;�"��{�{���!�C��I�-��4� �N�N�,�� ��{�{�+�+�-��� � ����%�"�������I�I�O�O�D�!�
�I�I�O�O�D�K�K��
�
�t�{�{�C�Dr2c�� |jjd�}|xjt|�z
c_|sd|_y|j|��U)N�rs)rRr�r�rkr��_FieldStorage__write)r�rxs r+r�zFieldStorage.read_lines_to_eof�sL��-���7�7�#�#�E�*�D��O�O�s�4�y�(�O���� ���L�L���
r2c�� d|jz}|dz}d}d}d} |j�d|jcxkr|kry|jjd�}|xjt|�z
c_|t|�z
}|sd|_y|dk(r||z}d}|jd�r%|r#|j�}||k(ry||k(rd|_y|}|jd �r
d }|dd
}d}n:|jd�r
d}|dd}d}n|jd�r
d}|dd}d}nd}d}|j||z���#)
Nr�r2TrrDrrs�
s
����
F)r�r�rRr�r�rkr��
startswith�rstrip�endswithr) r��
next_boundary�
last_boundary�delim�last_line_lfend�_readrx�strippedline�odelims r+r�z(FieldStorage.read_lines_to_outerboundary�sn�� ��� 2� 2�2�
�%��-�
���������z�z�%�!�t�z�z�*B�U�*B��+C��7�7�#�#�E�*�D��O�O�s�4�y�(�O��S��Y��E���� ����~��t�|�������u�%�/�#�{�{�}���=�0���=�0� !�D�I���F��}�}�W�%����C�R�y��"&�����u�%����C�R�y��"&�����u�%����C�R�y��"'����"'���L�L��$��'�Mr2c�z� |jr|jryd|jz}|dz}d} |jjd�}|xjt|�z
c_|sd|_y|j
d�r%|r#|j�}||k(ry||k(rd|_y|j
d�}��)Nr�TrrsrDr)r�r�rRr�r�rkr
rl)r�rrrrxrs r+r�zFieldStorage.skip_liness���C��!�!�T�Y�Y���� 2� 2�2�
�%��-�
�����7�7�#�#�E�*�D��O�O�s�4�y�(�O���� ���}�}�U�#��#�z�z�|���=�0���=�0� !�D�I��"�m�m�E�2�O�r2c�� |jrtjd�Stjd|jd��S)Nzwb+zw+r.)r�newline)r��tempfile�
TemporaryFilerr�s r+r�zFieldStorage.make_file3sA�� �.����)�)�%�0�0��)�)�$����$�8�
8r2r4) r�r�r��osrSr�r�r�r�r�r�r�r�r�r�rbr�r�r�r�r�r�r�r�r�r�r�rr�r�r�r�r5r2r+r
r
s���(�R��C����q���g�i� $��c�J���6�
!��� � � �:�;� ��
� ��C�J��G�(�" %�
E��0(�d3�,8r2r
c��� td�t�tjt_ t �}t�t
�t|�t|�t�d�}|fd�}td�|�td�da t �}t�t
�t|�t|�y#t�Y�QxYw#t�YyxYw)NzContent-type: text/htmlc��td�y)Nz,testing print_exception() -- <I>italics?</I>)�execr5r2r+roztest.<locals>.ffs���?�@r2c��|�yr4r5)ros r+�gztest.<locals>.ghs��
�Cr2z9<H3>What follows is a test, not an actual exception:</H3>z*<H1>Second try with a small maxlen...</H1>�2)�printrE�stdout�stderrr
rrrrrrrK)rS�formrors r+rrUs����
�
#�$� �G����C�J���~�������4���g���� A�� �
�I�J� ��
�
6�7��F���~�������4���g����������s�AC�4C�C�C+c
�P�|�tj�\}}}ddl}t�td�|j ||�|j||�z}tdt
jdj|dd���dt
j|d��d��~y)Nrz+<H3>Traceback (most recent call last):</H3>z<PRE>rrsz<B>z
</B></PRE>) rE�exc_info� tracebackr� format_tb�format_exception_only�html�escape�join)r�r~�tbr�r$r�s r+rr|s����|��,�,�.���e�R�� �G� �
7�8����r�5�)��*�*�4��7�8�D� ����B�G�G�D��"�I�&�'����D��H��
�� r2c
�� t|j��}t�td�td�|D]9}tdtj|�dtj||���;td�t�y)Nz<H3>Shell Environment:</H3>�<DL>�<DT>�<DD>�</DL>)�sortedr�rr'r()rSr�rzs r+rr�sd��-��'�,�,�.�!�D� �G� �
'�(� �&�M���
�f�d�k�k�#�&�����G�C�L�0I�J�� �'�N� �Gr2c��� t|j��}t�td�|std�td�|D]�}tdtj|�zdzd��||}tdtjtt
|���zd z�td
tjt|��z���td�t�y)Nz<H3>Form Contents:</H3>z<P>No form fields.r,r-�:� )rnz<i>z</i>r.r/)r0r�rr'r(�reprr�)r!r�rzr~s r+rr�s���.��$�)�)�+��D� �G� �
#�$��
�"�#� �&�M���
�f�t�{�{�3�'�'�#�-�3�7��S� ��
�e�d�k�k�$�t�E�{�"3�4�4�v�=�>�
�f�t�{�{�4��;�/�/�0� �
�'�N� �Gr2c �:� t�td� tj�}ttj|��t�y#t
$r<}tdtjt
|���Yd}~t�yd}~wwxYw)Nz#<H3>Current Working Directory:</H3>zOSError:)rr�getcwdr'r(r%�str)�pwd�msgs r+rr�sn��-� �G� �
/�0� ��i�i�k�� �d�k�k�#��� �G�� �1�
�j�$�+�+�c�#�h�/�0�0�
�G�� 1�s�A� B�(B�Bc��t�td�t�ttj�t�y)Nz <H3>Command Line Arguments:</H3>)rrErOr5r2r+rr�s%�� �G� �
,�-� �G� �#�(�(�O� �Gr2c�� td�y)Na�
<H3>These environment variables could have been set:</H3>
<UL>
<LI>AUTH_TYPE
<LI>CONTENT_LENGTH
<LI>CONTENT_TYPE
<LI>DATE_GMT
<LI>DATE_LOCAL
<LI>DOCUMENT_NAME
<LI>DOCUMENT_ROOT
<LI>DOCUMENT_URI
<LI>GATEWAY_INTERFACE
<LI>LAST_MODIFIED
<LI>PATH
<LI>PATH_INFO
<LI>PATH_TRANSLATED
<LI>QUERY_STRING
<LI>REMOTE_ADDR
<LI>REMOTE_HOST
<LI>REMOTE_IDENT
<LI>REMOTE_USER
<LI>REQUEST_METHOD
<LI>SCRIPT_NAME
<LI>SERVER_NAME
<LI>SERVER_PORT
<LI>SERVER_PROTOCOL
<LI>SERVER_ROOT
<LI>SERVER_SOFTWARE
</UL>
In addition, HTTP headers sent by the server may be passed in the
environment as well. Here are some common variable names:
<UL>
<LI>HTTP_ACCEPT
<LI>HTTP_CONNECTION
<LI>HTTP_HOST
<LI>HTTP_PRAGMA
<LI>HTTP_REFERER
<LI>HTTP_USER_AGENT
</UL>
)rr5r2r+rr�s��C� �'�'r2c�X�ddl}t|t�rd}nd}|j||�S)Nrs^[ -~]{0,200}[!-~]$z^[ -~]{0,200}[!-~]$)�rerHr��match)rmr=�_vb_patterns r+r�r��s*��
��!�U��,��+��
�8�8�K��#�#r2�__main__)r�rwr9)NNNN)-�__version__�iorrr�collections.abcrrEr�urllib.parserP�email.parserr�
email.messagerr'rrr�__all__�_deprecatedr�r"r#r,r(r&r8r'rKrSrrrpr
r r
rrrrrrrr�r5r2r+�<module>rIs�� �*��0�/�#�
� ��#�!��
���"������X�f�-�
����#�J!� ����
��
�2�:�:���c�CI�L*�6
��0D�D�2p8�p8�l���%�N��*�*� ��
��)�^$��z���F�r2
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists