403Webshell
Server IP : 54.37.205.81  /  Your IP : 216.73.216.76
Web Server : nginx/1.22.1
System : Linux vps-249481fa 6.1.0-50-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.176-1 (2026-07-02) x86_64
User : debian ( 1000)
PHP Version : 8.2.32
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /lib/python3/dist-packages/PIL/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3/dist-packages/PIL/__pycache__/PngImagePlugin.cpython-311.pyc
�

�"�c�����ddlZddlZddlZddlZddlZddlZddlmZddlm	Z	m
Z
mZmZm
Z
ddlmZddlmZddlmZddlmZdd	lmZdd
lmZeje��Zejd��jZdZ d
ddddddddddddddd�Z!ejd��Z"ej#Z$	de$zZ%	Gd�d e��Z&Gd!�d"e��Z'd#�Z(d$�Z)dLd%�Z*Gd&�d'��Z+Gd(�d)e,��Z-Gd*�d+��Z.Gd,�d-e+��Z/d.�Z0Gd/�d0ej��Z1d1d2d3d4d5d6d7d7d8d9d:d;d<d=d>�Z2d?�Z3Gd@�dA��Z4GdB�dC��Z5dD�Z6dE�Z7e3dFfdG�Z8dH�Z9e	j:e1j;e1e0��e	j<e1j;e8��e	j=e1j;e7��e	j>e1j;dIdJg��e	j?e1j;dK��dS)M�N)�IntEnum�)�Image�
ImageChops�	ImageFile�ImagePalette�
ImageSequence)�i16be)�i32be)�o8)�o16be)�o32be)�	deprecates\w\w\w\ws�PNG

)�1r)�L�L;2)r�L;4)rr)�I�I;16B)�RGBr)rzRGB;16B)�P�P;1)r�P;2)r�P;4)rr)�LAr)�RGBAzLA;16B)rr)rzRGBA;16B))rr)�r)�r)�r)�r)rr)r r)r�)rr!)rr!)rr!)rr)r r)r�)r r"s^�*�*$�@c��eZdZdZ	dZ	dZdS)�DisposalrrrN)�__name__�
__module__�__qualname__�OP_NONE�
OP_BACKGROUND�OP_PREVIOUS���4/usr/lib/python3/dist-packages/PIL/PngImagePlugin.pyr%r%cs1�������G���M��
�K��r-r%c��eZdZdZ	dZdS)�BlendrrN)r&r'r(�	OP_SOURCE�OP_OVERr,r-r.r0r0xs%�������I��
�G��r-r0c�H�tdtdi���D]c\}}|�|��rI|t	|��d�}||jvr)t
|�|��d|j�d|����||cS�ddt�d|�d�}t|���)N�
APNG_DISPOSE_�APNG_BLEND_�
�.zmodule 'z' has no attribute '�')	r%r0�items�
startswith�len�__members__rr&�AttributeError)�name�enum�prefix�msgs    r.�__getattr__rB�s���!�?�E�=�I�O�O�Q�Q�"�"���f��?�?�6�"�"�	"���F���
�
�&�D��t�'�'�'��V�+�T�+�+�R�D�M�1J�1J�D�1J�1J�K�K�K��D�z�!�!�!��
:�X�
:�
:�4�
:�
:�
:�C�
��
�
�r-c��tj��}|�|t��}|jrd}t|���|S)NzDecompressed Data Too Large)�zlib�
decompressobj�
decompress�MAX_TEXT_CHUNK�unconsumed_tail�
ValueError)�s�dobj�	plaintextrAs    r.�_safe_zlib_decompressrM�sE������D�����>�2�2�I����+����o�o���r-c�2�tj||��dzS)Nl��)rD�crc32)�data�seeds  r.�_crc32rR�s���:�d�D�!�!�J�.�.r-c�L�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
d�ZdS)�ChunkStreamc�"�||_g|_dS�N)�fp�queue)�selfrWs  r.�__init__zChunkStream.__init__�s�������
�
�
r-c��d}|jr8|j���\}}}|j�|��nL|j�d��}|dd�}|j���}t
|��}t|��s.tj	s"dt|���d�}t|���|||fS)z.Fetch a new chunk. Returns header information.Nrrzbroken PNG file (chunk �))rX�poprW�seek�read�tell�i32�is_cidr�LOAD_TRUNCATED_IMAGES�repr�SyntaxError)rY�cid�pos�lengthrJrAs      r.r_zChunkStream.read�s������:�	�#�z�~�~�/�/��C��f��G�L�L����������Q���A��A�B�B�%�C��'�,�,�.�.�C���V�V�F��c�{�{�	'��2�
'�<��S�	�	�<�<�<��!�#�&�&�&��C���r-c��|SrVr,�rYs r.�	__enter__zChunkStream.__enter__�s���r-c�.�|���dSrV)�close)rY�argss  r.�__exit__zChunkStream.__exit__�s���
�
�����r-c�"�dx|_|_dSrV)rXrWrjs r.rmzChunkStream.close�s��#�#��
�T�W�W�Wr-c�@�|j�|||f��dSrV)rX�append�rYrfrgrhs    r.�pushzChunkStream.push�s%���
���3��V�,�-�-�-�-�-r-c��t�d|||��t|d|�d��z��||��S)z"Call the appropriate chunk handlerzSTREAM %r %s %s�chunk_�ascii)�logger�debug�getattr�decoderss    r.�callzChunkStream.call�sJ��	���&��S�&�9�9�9�<�w�t�X��
�
�7�(;�(;�;�<�<�S�&�I�I�Ir-c��tjr&|ddz	dzr|�||��dS	t|t|����}t	|j�d����}||kr"dt|���d�}t|���dS#tj
$r(}dt|���d�}t|��|�d}~wwxYw)	zRead and verify checksumr�rNrz(broken PNG file (bad header checksum in r\z(broken PNG file (incomplete checksum in )rrc�crc_skiprRrarWr_rdre�struct�error)rYrfrP�crc1�crc2rA�es       r.�crczChunkStream.crc�s����*�	��A��!��a��	��M�M�#�t�$�$�$��F�	*��$��s���,�,�D��t�w�|�|�A���'�'�D��t�|�|�M��c���M�M�M��!�#�&�&�&��|���|�	*�	*�	*�I�T�#�Y�Y�I�I�I�C��c�"�"��)�����	*���s�A,B"�"C�1#C�Cc�:�|j�d��dS)z
Read checksumrN)rWr_)rYrfrPs   r.rzChunkStream.crc_skip�s��	
����Q�����r-�IENDc�(�g}		|���\}}}n)#tj$r}d}t|��|�d}~wwxYw||krnD|�|tj|j|����|�|����|S)NTztruncated PNG file)	r_r�r��OSErrorr�r�
_safe_readrWrr)rY�endchunk�cidsrfrgrhr�rAs        r.�verifyzChunkStream.verify�s���
��
	�
*�#'�9�9�;�;� ��S�&�&���<�
*�
*�
*�*���c�l�l��)�����
*�����h�����H�H�S�)�.�t�w��?�?�@�@�@��K�K�����
	��s��A�?�AN)r�)
r&r'r(rZr_rkrormrtr|r�rr�r,r-r.rTrT�s����������
 � � �(������$�$�$�.�.�.�J�J�J�*�*�*�(���
�����r-rTc�*�eZdZdZedd���ZdS)�iTXtzq
    Subclass of string to allow iTXt chunks to look like strings while
    keeping their extra information

    Nc�X�t�||��}||_||_|S)z�
        :param cls: the class to use when creating the instance
        :param text: value for this key
        :param lang: language code
        :param tkey: UTF-8 version of the key name
        )�str�__new__�lang�tkey)�cls�textr�r�rYs     r.r�ziTXt.__new__s*���{�{�3��%�%����	���	��r-)NN)r&r'r(�__doc__�staticmethodr�r,r-r.r�r��s>�������������\���r-r�c�0�eZdZdZd�Zd	d�Zd
d�Zd	d�ZdS)�PngInfoz<
    PNG chunk container (for use with save(pnginfo=))

    c��g|_dSrV)�chunksrjs r.rZzPngInfo.__init__s
������r-Fc��||g}|r|�d��|j�t|����dS)a"Appends an arbitrary chunk. Use with caution.

        :param cid: a byte string, 4 bytes long.
        :param data: a byte string of the encoded data
        :param after_idat: for use with private chunks. Whether the chunk
                           should be written after IDAT

        TN)rrr��tuple)rYrfrP�
after_idat�chunks     r.�addzPngInfo.addsI���d����	��L�L���������5��<�<�(�(�(�(�(r-�c�*�t|t��s|�dd��}t|t��s|�dd��}t|t��s|�dd��}t|t��s|�dd��}|r<|�d|dz|zdz|zdzt	j|��z��dS|�d|dz|zdz|zdz|z��dS)	z�Appends an iTXt chunk.

        :param key: latin-1 encodable text key name
        :param value: value for this key
        :param lang: language code
        :param tkey: UTF-8 version of the key name
        :param zip: compression flag

        �latin-1�strict�utf-8�iTXts�sN)�
isinstance�bytes�encoder�rD�compress)rY�key�valuer�r��zips      r.�add_itxtzPngInfo.add_itxt,s)���#�u�%�%�	2��*�*�Y��1�1�C��%��'�'�	4��L�L��(�3�3�E��$��&�&�	2��;�;�w��1�1�D��$��&�&�	2��;�;�w��1�1�D��	U��H�H���k�!�D�(�5�0�4�7�%�?�$�-�PU�BV�BV�V�
�
�
�
�
�

�H�H�W�c�I�o��4�u�<�t�C�e�K�e�S�T�T�T�T�Tr-c��t|t��r$|�|||j|j|���St|t
��s@	|�dd��}n(#t$r|�|||���cYSwxYwt|t
��s|�dd��}|r0|�d|dztj
|��z��dS|�d|dz|z��dS)	z�Appends a text chunk.

        :param key: latin-1 encodable text key name
        :param value: value for this key, text or an
           :py:class:`PIL.PngImagePlugin.iTXt` instance
        :param zip: compression flag

        )r�r�r��zTXt��tEXtr�N)r�r�r�r�r�r�r��UnicodeErrorr�rDr�)rYr�r�r�s    r.�add_textzPngInfo.add_textHs���e�T�"�"�	N��=�=��e�U�Z����=�M�M�M��%��'�'�	:�
:����Y��9�9�����
:�
:�
:��}�}�S�%�S�}�9�9�9�9�9�
:�����#�u�%�%�	2��*�*�Y��1�1�C��	3��H�H�W�c�G�m�d�m�E�.B�.B�B�C�C�C�C�C��H�H�W�c�E�k�E�1�2�2�2�2�2s�A'�'"B�BN�F)r�r�F)r&r'r(r�rZr�r�r�r,r-r.r�r�sm��������
���
)�
)�
)�
)�U�U�U�U�83�3�3�3�3�3r-r�c���eZdZ�fd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z�xZS)�	PngStreamc����t���|��i|_i|_d|_d|_d|_d|_d|_d|_	d|_
d|_d|_dS)N�rrr)
�superrZ�im_info�im_text�im_size�im_mode�im_tile�
im_palette�im_custom_mimetype�im_n_frames�_seq_num�rewind_state�text_memory)rYrW�	__class__s  �r.rZzPngStream.__init__ist���
���������������������������"&��������
� �������r-c�z�|xj|z
c_|jtkrd|j�d�}t|���dS)Nz%Too much memory used in text chunks: z>MAX_TEXT_MEMORY)r��MAX_TEXT_MEMORYrI)rY�chunklenrAs   r.�check_text_memoryzPngStream.check_text_memoryzsY�����H�$�����o�-�-�6��#�6�6�6�
��S�/�/�!�.�-r-c�^�|j���|j|jd�|_dS)N)�info�tile�seq_num)r��copyr�r�r�rjs r.�save_rewindzPngStream.save_rewind�s2���L�%�%�'�'��L��}�
�
����r-c�r�|jd|_|jd|_|jd|_dS)Nr�r�r�)r�r�r�r�rjs r.�rewindzPngStream.rewind�s3���(��0����(��0����)�)�4��
�
�
r-c���tj|j|��}|�d��}t�d|d|���t�d||��||}|dkrd|�d�}t
|���	t||dzd���}n2#t$rtj	rd}n�Yntj$rd}YnwxYw||jd<|S)	Nr�ziCCP profile name %rzCompression method %sr�Unknown compression method z in iCCP chunkr�icc_profile)
rr�rW�findrxryrerMrIrcrDr�r�)rYrgrhrJ�i�comp_methodrAr�s        r.�
chunk_iCCPzPngStream.chunk_iCCP�s��
� ���&�1�1��
�F�F�5�M�M�����+�Q�r��r�U�3�3�3����,�a��d�3�3�3���d���!���K��K�K�K�C��c�"�"�"�	�/��!�a�%�'�'�
�;�;�K�K���	�	�	��.�
�"�������z�	�	�	��K�K�K�	����&1���]�#��s�B3�3C"�C"�!C"c��tj|j|��}|dkrtjr|Sd}t	|���t|d��t|d��f|_	t|d|df\|_|_	n#t$rYnwxYw|dr
d|jd	<|d
rd}t|���|S)N�
zTruncated IHDR chunkrrr�	�r�	interlace�zunknown filter category)
rr�rWrcrIrar��_MODESr��
im_rawmode�	Exceptionr�re�rYrgrhrJrAs     r.�
chunk_IHDRzPngStream.chunk_IHDR�s���
� ���&�1�1���B�;�;��.�
���(�C��S�/�/�!��1�a�y�y�#�a��)�)�+���	�,2�A�a�D�!�A�$�<�,@�)�D�L�$�/�/���	�	�	��D�	�����R�5�	*�()�D�L��%��R�5�	#�+�C��c�"�"�"��s�&(B�
B�Bc��d|jvrd|jd||jfg}n%|j�
d|jd<dd|jz||jfg}||_||_t�)N�bboxr�T�
default_imager�)r�r�r�r�r��im_idat�EOFError)rYrgrhr�s    r.�
chunk_IDATzPngStream.chunk_IDAT�so���T�\�!�!��D�L��0�#�t��G�H�D�D���+�04���_�-��F�T�\�1�3���H�I�D��������r-c��t�rV)r�)rYrgrhs   r.�
chunk_IENDzPngStream.chunk_IEND�s	���r-c�b�tj|j|��}|jdkr	d|f|_|S)Nrr)rr�rWr�r��rYrgrhrJs    r.�
chunk_PLTEzPngStream.chunk_PLTE�s5��
� ���&�1�1���<�3���#�Q�h�D�O��r-c��tj|j|��}|jdkrKt�|��r&|�d��}|dkr
||jd<nm||jd<nb|jdvrt|��|jd<nA|jdkr6t|��t|d��t|d��f|jd<|S)	Nrr�r�transparency�rrrrrr)	rr�rWr��_simple_palette�matchr�r��i16)rYrgrhrJr�s     r.�
chunk_tRNSzPngStream.chunk_tRNS�s���
� ���&�1�1���<�3����$�$�Q�'�'�	
1��F�F�5�M�M����6�6�34�D�L��0��01���^�,�,�
�\�_�
,�
,�+.�q�6�6�D�L��(�(�
�\�U�
"�
"�+.�q�6�6�3�q�!�9�9�c�!�Q�i�i�+G�D�L��(��r-c�n�tj|j|��}t|��dz|jd<|S)N�j�@�gamma)rr�rWrar�r�s    r.�
chunk_gAMAzPngStream.chunk_gAMA�s2��� ���&�1�1�� #�A���� 1���W���r-c���tj|j|��}tjdt|��dzz|��}t
d�|D����|jd<|S)Nz>%dIrc3� K�|]	}|dzV��
dS)r�Nr,)�.0�elts  r.�	<genexpr>z'PngStream.chunk_cHRM.<locals>.<genexpr>�s&����,P�,P��S�8�^�,P�,P�,P�,P�,P�,Pr-�chromaticity)rr�rWr��unpackr;r�r�)rYrgrhrJ�raw_valss     r.�
chunk_cHRMzPngStream.chunk_cHRM�s`��
� ���&�1�1���=��3�q�6�6�Q�;�!7��;�;��',�,P�,P�x�,P�,P�,P�'P�'P���^�$��r-c��tj|j|��}|dkrtjr|Sd}t	|���|d|jd<|S)NrzTruncated sRGB chunkr�srgb)rr�rWrcrIr�r�s     r.�
chunk_sRGBzPngStream.chunk_sRGB�sW��
� ���&�1�1���A�:�:��.�
���(�C��S�/�/�!� ��t���V���r-c�.�tj|j|��}|dkrtjr|Sd}t	|���t|d��t|d��}}|d}|dkr|dz|dzf}||jd<n|dkr||f|jd	<|S)
Nr�zTruncated pHYs chunkrrrr�
F%u�?�dpi�aspect)rr�rWrcrIrar�)	rYrgrhrJrA�px�py�unitrs	         r.�
chunk_pHYszPngStream.chunk_pHYss���
� ���&�1�1���A�:�:��.�
���(�C��S�/�/�!��Q����C��1�I�I�B����t���1�9�9��v�+�r�F�{�*�C�"%�D�L����
�Q�Y�Y�%'��V�D�L��"��r-c�p�tj|j|��}	|�dd��\}}n#t$r|}d}YnwxYw|rj|�dd��}|�dd��}|dkr|n||j|<||j|<|�t|����|S)Nr�rr-r�r��replace�exif)
rr�rW�splitrIr{r�r�r�r;)rYrgrhrJ�k�v�v_strs       r.�
chunk_tEXtzPngStream.chunk_tEXt s���
� ���&�1�1��	��7�7�5�!�$�$�D�A�q�q���	�	�	��A��A�A�A�	����
�	/�����H�-�-�A��H�H�Y�	�2�2�E�#$��;�;�a�a�E�D�L��O�#�D�L��O��"�"�3�u�:�:�.�.�.��s�6�A�Ac�F�tj|j|��}	|�dd��\}}n#t$r|}d}YnwxYw|r	|d}nd}|dkrd|�d�}t|���	t
|dd���}n2#t$rtjrd}n�Yntj	$rd}YnwxYw|rb|�
dd��}|�
dd	��}|x|j|<|j|<|�
t|����|S)
Nr�rr-rr�z in zTXt chunkr�r�r)rr�rWrrIrerMrcrDr�r{r�r�r�r;)rYrgrhrJrrr�rAs        r.�
chunk_zTXtzPngStream.chunk_zTXt4sy��
� ���&�1�1��	��7�7�5�!�$�$�D�A�q�q���	�	�	��A��A�A�A�	����
�	��A�$�K�K��K��!���K��K�K�K�C��c�"�"�"�	�%�a����e�,�,�A�A���	�	�	��.�
��������z�	�	�	��A�A�A�	����
�	+�����H�-�-�A�����I�.�.�A�01�1�D�L��O�d�l�1�o��"�"�3�q�6�6�*�*�*��s'�6�A�A�3B�B:�'B:�9B:c�T�tj|j|��x}}	|�dd��\}}n#t$r|cYSwxYwt|��dkr|S|d|d|dd�}}}	|�dd��\}}	}
n#t$r|cYSwxYw|dkrJ|dkrB	t
|
��}
n3#t$rtjr|cYS�tj	$r|cYSwxYw|S	|�
dd��}|�
dd��}|	�
dd��}	|
�
dd��}
n#t$r|cYSwxYwt|
||	��x|j
|<|j|<|�t|
����|S)Nr�rrrr�r�r�)rr�rWrrIr;rMrcrDr�r{r�r�r�r�r�)rYrgrh�rrJr�cf�cmr��tkrs           r.�
chunk_iTXtzPngStream.chunk_iTXtWs
���$�T�W�f�5�5�5��A�	��7�7�5�!�$�$�D�A�q�q���	�	�	��H�H�H�	�����q�6�6�A�:�:��H��a�D�!�A�$��!�"�"���B��	��'�'�%��+�+�K�D�"�a�a���	�	�	��H�H�H�	����
��7�7��Q�w�w��-�a�0�0�A�A��!���� �6�� ������z�����H�H�H�������	�����H�-�-�A��;�;�w��1�1�D����7�H�-�-�B�����(�+�+�A�A���	�	�	��H�H�H�	����-1��D�"�,=�,=�=���Q��$�,�q�/����s�1�v�v�&�&�&��sL�8�A�A�:B�B$�#B$�4C�C2�C2�1C2�8AE�E �E c�T�tj|j|��}d|z|jd<|S)N�Exifr)rr�rWr�r�s    r.�
chunk_eXIfzPngStream.chunk_eXIf�s,��� ���&�1�1��.��2���V���r-c�z�tj|j|��}|dkrtjr|Sd}t	|���|j�d|_t
jd��|St|��}|dks|dkrt
jd��|S||_t|d��|j	d<d|_
|S)	Nrz"APNG contains truncated acTL chunkz4Invalid APNG, will use default PNG image if possiblerlr�loopz
image/apng)rr�rWrcrIr��warnings�warnrar�r�)rYrgrhrJrA�n_framess      r.�
chunk_acTLzPngStream.chunk_acTL�s���� ���&�1�1���A�:�:��.�
���6�C��S�/�/�!���'�#�D���M�P�Q�Q�Q��H��q�6�6���q�=�=�H�z�1�1��M�P�Q�Q�Q��H�#���"�1�a�y�y���V��".����r-c��tj|j|��}|dkrtjr|Sd}t	|���t|��}|j�|dks|j�|j|dz
krd}t|���||_t|d��t|d��}}t|d��t|d	��}	}|j\}
}||z|
ks	|	|z|krd
}t|���||	||z|	|zf|j	d<t|d��t|d
��}
}|
dkrd}
t|��t|
��zdz|j	d<|d|j	d<|d|j	d<|S)N�z"APNG contains truncated fcTL chunkrr�#APNG contains frame sequence errorsrrr�r zAPNG contains invalid framesr����d���duration��disposal��blend)rr�rWrcrIrar�rer�r�r��float)rYrgrhrJrA�seq�width�heightr
r�im_w�im_h�	delay_num�	delay_dens              r.�
chunk_fcTLzPngStream.chunk_fcTL�s���� ���&�1�1���B�;�;��.�
���6�C��S�/�/�!��!�f�f���M�!�c�Q�h�h��M�%�$�-�3��7�*B�*B�7�C��c�"�"�"���
��A�q�	�	�3�q�!�9�9�v���Q����S��B�Z�Z�B���\�
��d�
��:�����V��d� 2� 2�0�C��c�"�"�"� "�B��U�
�B��K�@���V��"�1�b�z�z�3�q�"�:�:�9�	���>�>��I�#(��#3�#3�e�I�6F�6F�#F��#M���Z� �#$�R�5���Z� � !�"����W���r-c�V�|dkr9tjrtj|j|��}|Sd}t	|���tj|jd��}t|��}|j|dz
krd}t|���||_|�|dz|dz
��S)Nrz"APNG contains truncated fDAT chunkrr,)	rrcr�rWrIrar�rer�)rYrgrhrJrAr7s      r.�
chunk_fdATzPngStream.chunk_fdAT�s����A�:�:��.�
��(���&�9�9����6�C��S�/�/�!�� ���!�,�,���!�f�f���=�C�!�G�#�#�7�C��c�"�"�"���
����s�Q�w���
�3�3�3r-)r&r'r(rZr�r�r�r�r�r�r�r�r�r�rrrrrr r#r)r>r@�
__classcell__�r�s@r.r�r�hsf������������""�"�"�
�
�
�5�5�5�
���8���*������
������*��������� ���$���(!�!�!�F'�'�'�R������(���:
4�
4�
4�
4�
4�
4�
4r-r�c�(�|dd�tkS)Nr)�_MAGIC)r@s r.�_acceptrE�s���"�1�"�:���r-c�z��eZdZdZdZd�Zed���Zd�Zd�Z	dd�Z
d	�Zd
�Zd�Z
d�Zd
�Z�fd�Zd�Z�xZS)�PngImageFile�PNGzPortable network graphicsc�|�t|j�d����sd}t|���|j|_d|_g|_t|j��|_	|j���\}}}	|j�	|||��}n�#t$rYn�t$rrt�
d|||��tj|j|��}|dd����r|j�||f��YnwxYw|j�||����|jj|_|jj|_|jj|_d|_|jj|_|jj|_|jjpd|_|j� dd	��|_!|jj"r)|jj"\}}tGj$||��|_%|d
kr|dz
|_&n||_&|jj�vd	|_'|j�(��|j&|_)|j�*��|_+|j!r|xjdz
c_|�,d��|jdk|_-dS)Nrznot a PNG filerT�%r %s %s (unknown)rrr�F�fdATr).rErWr_re�_fp�_PngImageFile__frame�private_chunksr��pngr|r�r=rxryrr��islowerrrr�r��moder��_sizer�r��_textr�r�r��custom_mimetyper�r(�getr�r�r�raw�palette�_PngImageFile__prepare_idat�!_close_exclusive_fp_after_loadingr��_PngImageFile__rewind_idatr`�_PngImageFile__rewind�_seek�is_animated)rYrArfrgrhrJ�rawmoderPs        r.�_openzPngImageFile._open�s����t�w�|�|�A���'�'�	#�"�C��c�"�"�"��7������
!����T�W�%�%���	!�
 $�x�}�}����C��f�
9��H�M�M�#�s�F�3�3�����
�
�
���!�
9�
9�
9����1�3��V�D�D�D��(���&�9�9���q��s�8�#�#�%�%�9��'�.�.��Q�x�8�8�8���	
9����
�H�L�L��a� � � �#	!�4�H�$��	��X�%��
��H�$��	���
��H�$��	�#�x�:�����,�1���
�!�Y�]�]�?�E�B�B����8��	;� �H�/�M�G�T�'�+�G�T�:�:�D�L��'�>�>�"(�1�*�D���"(�D���8��+�5:�D�2��H� � �"�"�"�!%�!4�D�� �H�M�M�O�O�D�M��!�
#��
�
��"�
�
��J�J�q�M�M�M��=�1�,����s�B(�(
D/�4A8D/�.D/c���|j�[|jr$|j}|�|jdz
��|���|jr|�|��|jS)Nr)rSr]rMr^r(�load)rY�frames  r.r�zPngImageFile.textsk���:����
-�����	�	�$�-�!�+�,�,�,��I�I�K�K�K���
!��	�	�%� � � ��z�r-c�D�|j�d}t|���|j�|jdddz
��|j���|j���|jr|j���d|_dS)zVerify PNG fileNz)verify must be called directly after openrrr)rW�RuntimeErrorr^r�rOr�rm�
_exclusive_fp)rYrAs  r.r�zPngImageFile.verify,s����7�?�=�C��s�#�#�#�	
����T�Y�q�\�!�_�q�(�)�)�)�����������������	��G�M�M�O�O�O�����r-c�^�|�|��sdS||jkr|�dd��|j}t|jdz|dz��D]Q}	|�|���#t$r,}|�|��d}t	|��|�d}~wwxYwdS)NrTrzno more images in APNG file)�_seek_checkrMr\�ranger�r^)rYrb�
last_frame�fr�rAs      r.r^zPngImageFile.seek=s�������&�&�	��F��4�<����J�J�q�$�����\�
��t�|�a�'����3�3�	+�	+�A�
+��
�
�1�
�
�
�
���
+�
+�
+��	�	�*�%�%�%�3���s�m�m��*�����
+����	+�	+s�A4�4
B*�>'B%�%B*Fc�&	�|dk�r|r�|j�|j��|j���|j|_d|_|jrd|_|jj	|_
|jj|_|j|_
d|_d|_|j
�dd��|_|j
�d��|_|j
�d��|_|j
�d��|_d|_�ns||jdzkrd|��}t-|���|���|jr%|j�|j|j��|j���|_|j|_
|jr&t5j|j
|j��d|_d}	|j
�d
��	|j���\}}}n#t:jt>f$rYn�wxYw|dkrd}tA|���|d
kr|rd}t?|���d	}	|j�!|||��n�#tD$rYn�t@$r3|dkr|d
z}|r	||_Yndt5j|j
|��YnFtF$r:tH�%d|||��t5j|j
|��YnwxYw��4||_|jj|_|j
�d��|_|j
�d��|_|j
�d��|_|jst@�|j�&|jtLj'krtLj(|_|jtLj'krE|j���|_|�)|j|j��|_dS|jtLj(krVtTj+�,|j-|j.��|_|�)|j|j��|_dSd|_dS)Nrr�Fr3r5r�rzcannot seek to frame Trr�zNo more images in APNG file�fcTLzAPNG missing frame datarKrJ)/rLr^r[rOr�rZrX�im�pyaccessr�r�r�r�rW�_prev_im�disposerUr��
dispose_op�blend_op�dispose_extentrMrIra�paster�rr�r_r�r�rer�r|�UnicodeDecodeErrorr=rxryr%r+r*�_cropr�core�fillrQ�size)rYrbr�rA�frame_startrfrgrhs        r.r\zPngImageFile._seekLs7���A�:�:��	
#���
�
�d�m�,�,�,�����!�!�!�&*�&8��#�����=�)�$(�D�M� �H�,��	� �H�,��	��(��� �D�M��D�L�!%������!F�!F�D��"�i�m�m�J�7�7�D�O� �I�M�M�'�2�2�D�M�"&�)�-�-��"7�"7�D���D�L�L����q�(�(�(�5�e�5�5�� ��o�o�%�
�I�I�K�K�K��|�
A���
�
�d�l�D�,?�@�@�@� �G�L�L�N�N�D�M��h�D�G��"�
(��$�T�W�d�.A�B�B�B�&'��#��K�
:�����Q�����'+�x�}�}���$�C��f�f����k�2�����E������'�>�>�7�C�"�3�-�-�'��'�>�>�"�/�7��)�#�.�.�.�"&�K�
:��H�M�M�#�s�F�3�3�3�3��)�����E��:�:�:��g�~�~��!���&�"�28�D�/�!�E��(���&�9�9�9�9�9�%�:�:�:��L�L�!5�s�C��H�H�H��(���&�9�9�9�9�9�:����;
:�B!�D�L���(�D�I�"�i�m�m�J�7�7�D�O� �I�M�M�'�2�2�D�M�"&�)�-�-��"7�"7�D���9�
����=� �T�_��8L�%L�%L�&�4�D�O��?�h�2�2�2��=�-�-�/�/�D�L��:�:�d�l�D�4G�H�H�D�L�L�L�
�_�� 6�
6�
6� �:�?�?�4�9�d�i�@�@�D�L��:�:�d�l�D�4G�H�H�D�L�L�L��D�L�L�Ls7�<H�H3�2H3�)J�
L�L�1L�
AL�Lc��|jSrV)rMrjs r.r`zPngImageFile.tell�s
���|�r-c��|j�d��r|jdz|_|j|_t
j�|��dS)z"internal: prepare to read PNG filer�)rN)r�rU�
decoderconfigrX�_PngImageFile__idatr�load_preparerjs r.rzPngImageFile.load_prepare�sQ���9�=�=��%�%�	;�!%�!3�d�!:�D���)�����(�(��.�.�.�.�.r-c��|jdkr�|j�d��|j���\}}}|dvr|j�|||��dS|dkr9	|j�|||��n#t$rYnwxYw|dz
|_n||_|jdk��|dkr|j}nt||j��}|j|z
|_|j�|��S)zinternal: read more image datarr)�IDATsDDATrKr-rK)r~rWr_rOrtr|r��min)rY�
read_bytesrfrgrhs     r.�	load_readzPngImageFile.load_read�s���k�Q���
�G�L�L��O�O�O�#�x�}�}����C��f��5�5�5���
�
�c�3��/�/�/��s��g�~�~���H�M�M�#�s�F�3�3�3�3�������D�����$�q�j����$���%�k�Q���*��?�?���J�J��Z���5�5�J��k�J�.����w�|�|�J�'�'�'s�,B	�	
B�Bc���|jdkr|j�|j��	|j�d��	|j���\}}}n#tjtf$rY�nwxYw|dkr�n|dkr+|jr$d|_|j�	|||��n�	|j�
|||��n�#t$rYn�t$r(|dkr|dz}tj|j|��Ynt$rst �d|||��tj|j|��}|dd	����r|j�||df��YnwxYw��j|jj|_|js"|j���d
|_d
S|jr�|jt4jkrr|�|j|j��}|j�||j|� d����|j|_|j!r
d
|_!d
Sd
Sd
Sd
S)z%internal: finished reading image datarTrr�rlrKrJrrNr)"r~rWr_rOr�r�rer]rXrtr|rur�rr�r=rxryrPrNrrr�rSrmrorrr0r2rvrmrsrt�convertrn)rYrfrgrhrJ�updateds      r.�load_endzPngImageFile.load_end�s����;�!����G�L�L���%�%�%�	?��G�L�L��O�O�O�
�#'�8�=�=�?�?� ��S�&�&���L�+�.�
�
�
���
�����g�~�~������D�$4��&'��#���
�
�c�3��/�/�/��
?���
�
�c�3��/�/�/�/��%�
�
�
����
6�
6�
6��'�>�>��a�K�F��$�T�W�f�5�5�5�5�5�!�
?�
?�
?����1�3��V�D�D�D��(���&�9�9���q��s�8�#�#�%�%�?��'�.�.��Q��~�>�>�>���	
?����1	?�:�X�%��
���	)��H�N�N�����D�H�H�H��}�
)���%�-�!?�!?��*�*�T�W�d�.A�B�B���
�#�#��T�0�'�/�/�&�2I�2I�����-����=�)�$(�D�M�M�M�
)�
)�!?�!?�)�)s1�A%�%A?�>A?�<C�
F�%.F�A9F�Fc��d|jvr|���d|jvrd|jvrdS|������S)NrzRaw profile type exif)r�ra�getexif�_get_merged_dictrjs r.�_getexifzPngImageFile._getexifsU�����"�"��I�I�K�K�K����"�"�'>�d�i�'O�'O��4��|�|�~�~�.�.�0�0�0r-c�~��d|jvr|���t�����S)Nr)r�rar�r�)rYr�s �r.r�zPngImageFile.getexifs1������"�"��I�I�K�K�K��w�w��� � � r-c�X�d|jvr |�|jd��niS)z�
        Returns a dictionary containing the XMP tags.
        Requires defusedxml to be installed.

        :returns: XMP tags in a dictionary.
        zXML:com.adobe.xmp)r��_getxmprjs r.�getxmpzPngImageFile.getxmps5��#�d�i�/�/�
�L�L���#6�7�8�8�8��	
r-r�)r&r'r(�format�format_descriptionr_�propertyr�r�r^r\r`rr�r�r�r�r�rArBs@r.rGrG�s�������
�F�4��C-�C-�C-�J����X�����"
+�
+�
+�[ �[ �[ �[ �z���/�/�/�(�(�(�B-)�-)�-)�^1�1�1�!�!�!�!�!�
�
�
�
�
�
�
r-rG)r�)�L;1r�)rs)rs)rs)rs)rs)rs)rs)rs)rs)rs)rs)rr�rrrrrzI;16rrrrrrc�<�d�|��}|�tt|����|z��|�|��t	|t	|����}|�t|����dS)z'Write a PNG chunk (including CRC field)r-N)�join�write�o32r;rR�rWrfrPr�s    r.�putchunkr�6sx���8�8�D�>�>�D��H�H�S��T���^�^�c�
!�"�"�"��H�H�T�N�N�N�
��v�c�{�{�
#�
#�C��H�H�S��X�X�����r-c��eZdZd�Zd�ZdS)�_idatc�"�||_||_dSrV)rWr�)rYrWr�s   r.rZz_idat.__init__Ds�������
�
�
r-c�>�|�|jd|��dS)Nr�)r�rW�rYrPs  r.r�z_idat.writeHs ���
�
�4�7�G�T�*�*�*�*�*r-N�r&r'r(rZr�r,r-r.r�r�As2���������+�+�+�+�+r-r�c��eZdZd�Zd�ZdS)�_fdatc�0�||_||_||_dSrV)rWr�r�)rYrWr�r�s    r.rZz_fdat.__init__Os�������
�����r-c��|�|jdt|j��|��|xjdz
c_dS)NrKr)r�rWr�r�r�s  r.r�z_fdat.writeTs:���
�
�4�7�G�S���%6�%6��=�=�=���������r-Nr�r,r-r.r�r�Ls2���������
����r-r�c���|j�d|j�dd����}|j�d|j�dd����}|j�d|j�dtj����}|j�d|j�dt
j����}	|rtj|��}
ntj|g|��}
g}d}|
D�]}
tj
|
��D�]�}|j|kr|���}n8|dkr|�
||j���}n|�
|��}|j���}t|t t"f��r|||d<t|t t"f��r|||d<t|	t t"f��r|	||d<|dz
}|�r�|d	}|d
�d��}|d
�d��}|tjkrt'|��dkrtj}|tjkr�|d���}t*j�d
|jd��}|d}|r|�|��}n
d|jz}|�||��n'|tjkr|dd}n|d}t7j|�
d��|�
d����}|���}|sl||�d��krS||�d��kr:t|t t"f��r|d
dxx|dz
cc<���nd}|�|||d�������
||dt?t'|����t?|����|r1tAj!|tE||��dd|jzd|fg��d}tG|��D�]�\}}|d}|dsd|jz}n|d}|�|��}|j}|d
}tItK|�d|������}|�d|��}|�d|	��}||dt?|��t?|d��t?|d��t?|d��t?|d��tM|��tMd��tO|��tO|����|dz
}|dkr5|s3tAj!|tE||��dd|jzd|fg�����tQ|||��}tAj!||dd|jzd|fg��|j)}���dS)Nr1rr%r3r5r)rWr����encoderinforrmr)rrrrr�r����r)rmr�r�sacTLr�rlr0)*r�rUr�r%r)r0r1�	itertools�chainr	�IteratorrQr�r�rWr��listr�r+r;r*rrwrxry�croprtr�subtract_modulo�getbboxrrr�r�_saver��	enumerate�int�round�o16rr�r�)rmrWr�r^r��
append_imagesr1r%r3r5r��	im_frames�frame_count�im_seq�im_framer��previous�
prev_disposal�
prev_blend�base_imrpr��deltar�rb�
frame_datary�frame_duration�frame_disposal�frame_blend�fdat_chunkss                               r.�_write_multiple_framesr�Ys<���~�!�!�*�b�g�k�k�*�a�.H�.H�I�I�H�
�>���f�b�g�k�k�&�!�&<�&<�=�=�D��~�!�!�*�b�g�k�k�*�h�FV�.W�.W�X�X�H��N���w�����G�U�_�(M�(M�N�N�E��5���
�.�.�������m�4�4���I��K��4Y�4Y��%�.�v�6�6�3	Y�3	Y�H��}��'�'�#�=�=�?�?����c�>�>�'�/�/����/�L�L�H�H�'�/�/��8�8�H��.�-�-�/�/�K��(�T�5�M�2�2�
@�*2�;�*?��J�'��(�T�5�M�2�2�
@�*2�;�*?��J�'��%�$���/�/�
:�',�[�'9��G�$��1��K��!
�$�R�=�� (�� 7� ;� ;�J� G� G�
�%�m�4�8�8��A�A�
� �H�$8�8�8�S��^�^�a�=O�=O�$,�$:�M� �H�$:�:�:�&�t�n�1�1�3�3�G�#�j�o�o�f�b�g�|�L�L�G�#�F�+�D��0�")�,�,�t�"4�"4���%���/���M�M�'�4�0�0�0�0�"�h�&:�:�:�'��m�D�1�G�G�&�t�n�G�"�2��$�$�U�+�+�W�_�_�U�-C�-C�����}�}������%�����)D�)D�D�D�"�k�o�o�g�&>�&>�>�>�!�(�T�5�M�:�:�W� ��/�
�;�;�;�{�:�?V�V�;�;�;��������H�d�;�W�W�X�X�X�X�g3	Y�l
�E�
���C�	�N�N����D�	�	�	����W����E�"�e�,�,��v���7G��G�/T�.U�V�V�V��G�&�y�1�1�**�**���z��d�#���&�!�	+��H�M�)�D�D��f�%�D��}�}�T�*�*�H��}�� ��/���U�;�?�?�:�x�#H�#H�I�I�J�J��$����X�>�>��!�o�o�g�u�5�5��
������L�L���Q��L�L���Q��L�L���Q��L�L���Q��L�L�������I�I��~����{�O�O�	
�	
�	
�	�1����A�:�:�m�:��O���b�%� � ���(�-�/��G�<�=�
�
�
�
� ��E�7�3�3�K��O�����(�-�/��G�<�=�
�
�
�
"�)�G�G�U**�**r-c�,�t|||d���dS)NT)�save_all)r�)rmrW�filenames   r.�	_save_allr��s��	�"�b�(�T�*�*�*�*�*�*r-Fc��|r�|j�d|j�d����}t��}|j�dg��}|rt	j|��}nt	j|g|��}|D]3}	t
j|	��D]}
|�|
j	����4dD]}||vrn�	|�
��}n|j	}|dkr�d|jvrtd|jdzd��}nU|jrLttt|j���d��dzd��d��}nd}|d	kr|d
krd}
n|dkrd
}
nd}
|�d|
��}|j�d
d��|j�dd��|j�dd��|j�dd��f|_	t"|\}}n(#t$$r}d|�d�}t'|��|�d}~wwxYw|�t*��||dt-|jd��t-|jd��|ddd��gd�}|j�d|j�d����}|r>d}|dzt1j|��z}||d|��|�d��|j�d��}|r�gd �}|jD]}}|dd
�\}}||vr#|�|��||||���6||vr||||���H|dd
����r|d
d�}|s
||||���~|j	dkr_|dz}|j�d!��d|�}t|��|kr|dz
}t|��|k�||d"|��|j�d#|j�d#d����}|s|dk�r|j	dkrk|}t?|t@��r||d$|d|����n@tdtd%|����}d&|zdz}||d$|d|����n|j	d'vr9tdtd(|����}||d$tC|����n�|j	d!krA|\}} }!||d$tC|��tC| ��ztC|!��z��nud#|jvrd)}t'|���nZ|j	dkrO|j�"��d*kr2|j�d*d+��}|}||d$|d|���|j�d,��}"|"r[||d-t-tG|"dd.zd/z����t-tG|"dd.zd/z����d0��|rAd1d2g}|jD]5}|dd
�\}}||vr"|�|��||||���6|j�d3��}#|#r[t?|#tHj%��r|#�&d4��}#|#�'d5��r
|#d6d�}#||d7|#��|rtQ||||||��n1tSj*|tW||��d8d9|jzd|fg��|rL|jD]D}|dd
�\}}|dd
����r|d
d�}|r
||||���E||d:d��tY|d;��r|�-��dSdS)<Nr�r�)rrrr�bitsr�r!r rr�;�optimizeF�compress_levelr��
compress_type�
dictionaryr-zcannot write mode z as PNGsIHDRrr�)scHRMsgAMAssBIT�sRGBstIMEr�sICC Profiler�siCCPr��pnginfo)ssPLTr�r�r�rsPLTEr�stRNS���r�i��z%cannot use transparency for this moder�ArspHYsr
g�?�sbKGDshISTrrr"r"seXIfr�r�r��flush).r�rUr��setr�r�r	r�r�rQr]r�rW�maxr;�getdata�
encoderconfig�	_OUTMODES�KeyErrorr�r�rDr�ryrDr��remover�rPrm�
getpaletter�r�r��getpalettemoder�r�Exif�tobytesr:r�rr�r��hasattrr�)$rmrWr�r�r�r��modesr�r�r�r�rQ�colorsr�r^r�rAr��iccr>rPr��chunks_multiple_allowed�
info_chunkrfr��palette_byte_number�
palette_bytesr��alpha_bytes�alpha�red�green�bluerrs$                                    r.r�r��s�������*�*��R�W�[�[��9�9�
�
�
�������*�*�?�B�?�?�
��	9��O�M�2�2�E�E��O�R�D�-�8�8�E��	)�	)�F�)�2�6�:�:�
)�
)���	�	�(�-�(�(�(�(�
)�(�	�	�D��u�}�}�����9�9�;�;�D���w���s�{�{��R�^�#�#���b�n�V�4�4�c�:�:�F�F��z�
��S��R�Z�%7�%7�%9�%9�!�%<�!=�!=��!B�C�H�H�!�L�L������R�<�<���{�{�����1���������#�#�T�#�#�D�	����:�u�-�-�
����+�R�0�0�
����?�B�/�/�
����<��-�-�	�B��"�!�$��
������"�"�"�0�4�0�0�0���c�l�l��!�����"�����H�H�V����	�E�
���B�G�A�J����B�G�A�J����
�
�
�	�	�	�;�
:�
:�F�
�.�
�
�]�B�G�K�K�
�,F�,F�
G�
G�C�
�
����g�~��
�c� 2� 2�2��
��b�'�4� � � �	�
�
�g����
�>���i�(�(�D��
)�"F�"F�"F���+�	)�	)�J�"�2�A�2��I�C���f�}�}��
�
�c�"�"�"���b�#�t�$�$�$�$��/�/�/���b�#�t�$�$�$�$��Q�q�S��!�!�#�#�
)�'��!��_�
�!�)��E�"�c�4�(�(�(��	�w�#�~�~�$�q�j����(�(��/�/�0D�1D�0D�E�
��-� � �#6�6�6��U�"�M��-� � �#6�6�6�
��b�'�=�)�)�)��>�%�%�n�b�g�k�k�.�RV�6W�6W�X�X�L��4�|�q�(�(�
�7�c�>�>� �K��,��.�.�
8���b�'�<����#=�>�>�>�>�"�1�c�#�|�&<�&<�=�=���,�.��6����b�'�5��+��#6�7�7�7�7�
�W��
'�
'��q�#�e�\�":�":�;�;�L��E�"�g�s�<�0�0�1�1�1�1�
�W��
�
�+��C����E�"�g�s�3�x�x�#�e�*�*�4�s�4�y�y�@�A�A�A�A����/�/�>���c�l�l�"�	0��7�c�>�>�b�e�2�2�4�4��>�>��E�$�$�V�S�1�1�E� �K��E�"�g�u�\�k�\�2�3�3�3�
�.�
�
�U�
#�
#�C�
�
�
������C��F�V�O�c�)�*�*�+�+���C��F�V�O�c�)�*�*�+�+��	
�	
�	
��%��7�#���+�	%�	%�J�"�2�A�2��I�C���f�}�}��
�
�c�"�"�"���b�#�t�$�$�$��
�>���f�%�%�D��!��d�E�J�'�'�	#��<�<��?�?�D��?�?�?�+�+�	�����8�D�
��b�'�4� � � ��W��r�2�u�g�}�m�T�T�T�T����E�"�e�,�,��v���7G��G�/T�.U�V�V�V��)��+�	)�	)�J�"�2�A�2��I�C���1�Q�3�x���!�!�
)�'��!��_�
��)��E�"�c�4�(�(�(��	�E�"�g�s�����r�7����
���
�
�
�
�
��s�=H�
H3�H.�.H3c��Gd�d��}d�}|��}	||_t||d|��|`n#|`wxYw|jS)z4Return a list of PNG chunks representing this image.c��eZdZgZd�Zd�ZdS)�getchunks.<locals>.collectorc��dSrVr,r�s  r.r�z"getchunks.<locals>.collector.write�s���Dr-c�:�|j�|��dSrV)rPrr)rYr�s  r.rrz#getchunks.<locals>.collector.append�s���I���U�#�#�#�#�#r-N)r&r'r(rPr�rrr,r-r.�	collectorr��s7��������	�	�	�	$�	$�	$�	$�	$r-r�c��d�|��}tt|t|������}|�|||f��dS)Nr-)r�r�rRrrr�s    r.rrzgetchunks.<locals>.append�sM���x�x��~�~���&��v�c�{�{�+�+�,�,��
�	�	�3��c�"�#�#�#�#�#r-N)r�r�rP)rm�paramsr�rrrWs     r.�	getchunksr��s���$�$�$�$�$�$�$�$�$�$�$�

����B�����
�b�"�d�F�#�#�#��N�N��B�N�����
�7�Ns�8�<z.pngz.apngz	image/png)r)@r��logging�rer�r&rDr?rr�rrrrr	�_binaryr
r�rrarr
r�rr��
_deprecater�	getLoggerr&rx�compiler�rbrDr�r��	SAFEBLOCKrGr�r%r0rBrMrRrTr�r�r�r�rErGr�r�r�r�r�r�r�r��
register_openr��
register_save�register_save_all�register_extensions�
register_mimer,r-r.�<module>rs|��D��������	�	�	�	�
�
�
�
���������������G�G�G�G�G�G�G�G�G�G�G�G�G�G�!�!�!�!�!�!�!�!�!�!�!�!�������!�!�!�!�!�!�!�!�!�!�!�!�!�!�!�!�!�!�	��	�8�	$�	$��	���L�	!�	!�	'��
��
����
��
������
��
!�+
�
��2�"�*�0�1�1���$���
�~�%��������w����*�����G����������/�/�/�/�Y�Y�Y�Y�Y�Y�Y�Y�x�����3����,M3�M3�M3�M3�M3�M3�M3�M3�h\4�\4�\4�\4�\4��\4�\4�\4�F � � �J
�J
�J
�J
�J
�9�&�J
�J
�J
�d

����	�
�	�"����	��!�
�
�	�&���+�+�+�+�+�+�+�+�
�
�
�
�
�
�
�
�z*�z*�z*�z+�+�+�#+�U�@�@�@�@�N���>���L�'��w�?�?�?����L�'��/�/�/�����+�Y�7�7�7����,�-���/@�A�A�A����L�'��5�5�5�5�5r-

Youez - 2016 - github.com/yon3zu
LinuXploit