403Webshell
Server IP : 146.190.157.162  /  Your IP : 216.73.216.78
Web Server : Apache
System : Linux ubuntu-s-2vcpu-4gb-amd-sfo3-01-KIT-DIGITAL 6.5.0-44-generic #44-Ubuntu SMP PREEMPT_DYNAMIC Fri Jun 7 15:10:09 UTC 2024 x86_64
User : businessweek ( 639)
PHP Version : 8.2.10-2ubuntu2.2
Disable Function : exec,passthru,shell_exec,system,proc_open,popen,pcntl_exec,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_signal,pcntl_signal_dispatch,pcntl_getpriority,pcntl_setpriority,dl,putenv,parse_ini_file,show_source
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /usr/lib/python3/dist-packages/PIL/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

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

D#�d����.�ddlZddlZddlZddlZddlmZddlmZmZm	Z	m
Z
mZddlm
ZddlmZddlmZGd�d	e��ZejZd
�ZGd�de	j	��Zd
d
dd�Zd�Zd�Zd�Zd�Zd�Zd�Zd'd�Zd�Zd�Z d�Z!dZ"d�Z#d�Z$d�Z%d�Z&d�Z'd �Z(d!�Z)d(d"�Z*d)d$�Z+ej,ej-ee��ej.ej-e��ej/ej-e��ej0ej-d%��ej1ej-d&��dS)*�N)�IntEnum�)�Image�
ImageChops�	ImageFile�ImagePalette�
ImageSequence)�i16le)�o8)�o16lec��eZdZdZdZdZdZdS)�LoadingStrategyz.. versionadded:: 9.1.0rr�N)�__name__�
__module__�__qualname__�__doc__�RGB_AFTER_FIRST� RGB_AFTER_DIFFERENT_PALETTE_ONLY�
RGB_ALWAYS���4/usr/lib/python3/dist-packages/PIL/GifImagePlugin.pyrr's$������!�!��O�'(�$��J�J�Jrrc��|dd�dvS)N�)sGIF87asGIF89ar)�prefixs r�_acceptr6s���"�1�"�:�/�/�/rc���eZdZdZdZdZdZd�Zd�Zd�Z	e
d���Ze
d	���Zd
�Z
dd�Z�fd
�Zd�Zd�Z�xZS)�GifImageFile�GIFzCompuserve GIFFNc��|j�d��}|r(|dr |j�|d��SdS)Nrr)�fp�read)�self�ss  r�datazGifImageFile.dataFsC���G�L�L��O�O���	&��1��	&��7�<�<��!��%�%�%��trc��tdt|��d��D]6}|dz||cxkr||dzcxkr||dzksndS�7dS)Nr�rrTF)�range�len)r$�p�is   r�_is_palette_neededzGifImageFile._is_palette_neededLsy���q�#�a�&�&�!�$�$�	�	�A���F�a��d�:�:�:�:�a��A��h�:�:�:�:�!�A��E�(�:�:�:�:��t�t�;��urc��|j�d��}t|��sd}t|���|dd�|jd<t|d��t|d��f|_g|_|d}|dzdz}|d	zre|d
|jd<|j�d|z��}|�|��r#tj
d
|��}|x|_|_|j|_
|j���|_d|_d|_|�d��dS)N�
znot a GIF filer�version��
�r���
backgroundr(�RGBr)r"r#r�SyntaxError�info�i16�_size�tiler-r�raw�global_palette�palette�_fp�tell�_GifImageFile__rewind�	_n_frames�_is_animated�_seek)r$r%�msg�flags�bitsr+s      r�_openzGifImageFile._openRs)���G�L�L������q�z�z�	#�"�C��c�"�"�"� ��!��u��	�)����A�Y�Y��A�q�	�	�)��
���	��"�����	�Q����3�;�	7�&'��e�D�I�l�#�����Q�$�Y�'�'�A��&�&�q�)�)�
7� �$�U�A�.�.��56�6��#�d�l��7����������
���� ����
�
�1�
�
�
�
�
rc�$�|j��|���}		|�|���dzd���,#t$r|���dz|_YnwxYw|�|��|jS)NTrF)rCrArE�EOFError�seek�r$�currents  r�n_frameszGifImageFile.n_framesns����>�!��i�i�k�k�G�
1�7��J�J�t�y�y�{�{�Q���6�6�6�7���
1�
1�
1�!%�����q������
1�����I�I�g�����~�s�-A
�
&A3�2A3c� �|j��|j�|jdk|_ni|���}|rd|_nK	|�dd��d|_n#t$r
d|_YnwxYw|�|��|jS)NrTF)rDrCrArErKrLrMs  r�is_animatedzGifImageFile.is_animatedzs�����$��~�)�$(�N�a�$7��!�!��)�)�+�+���	'�(,�D�%�%�2��
�
�1�e�,�,�,�,0��)�)��#�2�2�2�,1��)�)�)�2�����I�I�g�&�&�&�� � s�A�A1�0A1c�j�|�|��sdS||jkrd|_|�d��|j}t	|jdz|dz��D]Q}	|�|���#t
$r,}|�|��d}t|��|�d}~wwxYwdS)Nrrzno more images in GIF file)�_seek_check�_GifImageFile__frame�imrEr)rKrL)r$�frame�
last_frame�f�erFs      rrLzGifImageFile.seek�s�������&�&�	��F��4�<����D�G��J�J�q�M�M�M��\�
��t�|�a�'����3�3�	+�	+�A�
+��
�
�1�
�
�
�
���
+�
+�
+��	�	�*�%�%�%�2���s�m�m��*�����
+����	+�	+s�$A:�:
B0�'B+�+B0Tc�H��|dkrMd�_d�_d�_�j��j��d�_d�jvr�jd=n�jr|r��	��|�jdzkrd|��}t|����j�_�jrO�j��j������r	�����d�_�j�
d��}|r|dkrt�d}i}d}d}d}		|s�j�
d��}|r|dkr�n|dk�rx�j�
d��}����}
|dd	kr?|
d}|dzr|
d
}t|
d��dz|d<d
|z}|dz	}|r|�_n�|ddkr?d}
|
r|
|
z
}
����}
|
�d|vr|dxxd|
zz
cc<n|
|d<d}��|ddkr}|dkrw|
�j���f|d<|
dd�dkrK����}
t#|
��d
kr$|
ddkrt|
d���jd<����r	������n�|dk�r��j�
d��}t|d��t|d��}}|t|d��z|t|d��z}}|�jdks|�jdkrV|rTt'|�jd��t'|�jd��f�_t+j�j��||||f}	|d}|dzdk}|dzrR|dzdz}�j�
d
|z��}��|��rt1jd|��}nd }�j�
d��d}�j����_n	d}��6|�t�|�_|sdSg�_�jr%�j��j�j��|�|n�j�_|�_|dkr^�jr)t@tBj"kr|�d!nd�_#nd"�_#nd#�_#|s�jrdd$l$m$}|�j��}|�_%n͉j#d"kr�t@tBj&ks|r�d�_'d%�jvre�j�(�jd%d���j�)d!t*j*j+���_d!�_#�jd%=n6d�_#�j�)dt*j*j+���_�fd&�}|	�_	�jdkr	d�_�nb�jdkr��j\}}}}||z
||z
f}t+j|��d"}�j�,d%|��}|��j#d'vrd!}||��d(z}n1�j�,d)d��}�j#d'vr
d}||��}t*j-�.|||���_n��j�&��/�j�j���_no|�m�j\}}}}||z
||z
f}t+j|��d"}|}�j#d'vrd!}||��d(z}t*j-�.|||���_n#t`$rYnwxYw|�Md}|�1|dkr t@tBj"kr
|�jd%<n�j#d'vr|}d*||||f�j|||ffg�_|�,d��r|d�jd<d+D](}||vr||�j|<�|�jvr�j|=�)dS),Nr����commentrzcannot seek to frame �;T�!�r(r2�duration�r�r�
��	extensionr5�NETSCAPE2.0�loop�,�	�rr1�@r4r3r7F�RGBA�P�L)�copy�transparencyc�v���jr+t�jj|dz|dzdz���}n|||f}|S)Nr()�_frame_palette�tupler?)�colorr$s �r�_rgbz GifImageFile._seek.<locals>._rgbNsK����"�
.��d�1�9�%�!�)�e�a�i�RS�m�:S�T�U�U�����u�-���Lr�r7rl)rr6�gif)r`re)1�_GifImageFile__offset�disposerTr@rLrB�disposal_methodr9r<�load�
ValueErrorr"r&r#rKr:rAr*�size�maxr;r�_decompression_bomb_checkr-rr=rU�paste�dispose_extentr>rr�_frame_transparency�LOADING_STRATEGYrr�moderor?r�pyaccess�putpalettealpha�convert�Dither�FLOYDSTEINBERG�get�core�fill�_crop�AttributeError)r$rV�update_imagerFr%r?r9�frame_transparency�	interlace�frame_dispose_extent�blockrG�dispose_bitsr\�x0�y0�x1�y1rHr+roru�dispose_size�dispose_modertrp�ks`                          rrEzGifImageFile._seek�s	����A�:�:��D�M��D�L��D�L��H�M�M�$�-�(�(�(�#$�D� ��D�I�%�%��I�i�(���y�
�\�
��	�	�����D�L�1�$�$�$�1�%�1�1�C��S�/�/�!��(����=�	��G�L�L���'�'�'��)�)�+�+�
���)�)�+�+�
��D�M��G�L�L��O�O���	�A��I�I��N�����!���	�#��]	��
$��G�L�L��O�O���X
��T�	�	���d����G�L�L��O�O���	�	�����Q�4�3�;�;�"�!�H�E��q�y�6�-2�1�X�*�'*�5�!�}�}�r�'9�D��$�$.��#5�L�#/�1�#4�L�#�<�
0<��,���q�T�S�[�[�"�G� �,��5�(�� $�	�	���� �,�!�D�(�(��Y����5�7�?�:�����*1��Y���A���q�T�S�[�[�U�a�Z�Z�).�t�w�|�|�~�~�(=�D��%��S�b�S�z�^�3�3� $�	�	�����u�:�:��?�?�u�Q�x�1�}�}�03�E�1�
�
�D�I�f�-��i�i�k�k����i�i�k�k����d����G�L�L��O�O���Q����C��1�I�I�B���c�!�Q�i�i���c�!�Q�i�i��B�����1��%�%��d�i��l�):�):��):�!$�R���1��!6�!6��B��	�!��8M�8M�!M�D�J��3�D�J�?�?�?�')�2�r�2�~�$��!���"�R�Z�A�-�	��3�;�(�!�A�I��?�D�����Q�$�Y�/�/�A��.�.�q�1�1�(�".�"2�5�!�"<�"<���"'���w�|�|�A���q�)�� $�������
����A�{]	�~���N�����	��F���	��<�	=��G�M�M�$�,��(;�<�<�<�)0�)<�g�g�$�BU���#5�� ��A�:�:��"�
 �#��'A�A�A�*<�*H���e�D�I�I� #�D�I�I���	��
4�t�2�
4�%�%�%�%�%�%��$�t�2�3�3��"�D�L�L��y�C���$��(X�X�X��Y�%)�D�M�%���2�2���/�/��	�.�0I�1�M�M�M�"&�'�/�/�&�%�,�:U�"V�"V���$*��	� �I�n�5�5�$)��	�"&�'�/�/�%���9T�"U�"U���	�	�	�	�	�3���+	��#�a�'�'�#�����%��*�*�"&�!4���B��B� "�R���b��1���/��=�=�=� #���	�
�
�n�6H�I�I���$��y�O�3�3�'-�� $��U���d� 2��� �I�M�M�,��:�:�E��y�O�3�3�',�� $��U����$�z���|�\�5�Q�Q�����7�&�#'�:�:�d�g�t�7J�#K�#K�D�L�L�'�3�%)�%8�N�B��B��$&��G�R�"�W�#5�L��3�L�A�A�A�#&�L�.�E��y�O�3�3�'-�� $��%7� 8� 8�4� ?��#(�:�?�?�<��u�#U�#U�D�L����	�	�	��D�	����� ��L�!�-��A�:�:�'�?�+E�E�E�4F��	�.�1���Y�o�5�5�#5�L����R��$��M��9�l�3�	��D�I��8�8�I���	3�#'�	�?�D�I�i� �*�	!�	!�A��D�y�y�#�A�w��	�!����d�i����I�a�L��		!�	!s�<E6]3�3
^�?^c���|jrdnd}d|_|jdkr8|j�0tj�||j|j��|_n||j	dvrs|j|_|jrYtj�d|j|jpd��|_|jj
|j����nd|_||_	d|_t���
��dS)Nrmrnrrv)rr�_prev_imrTr�rr�r�r}rUr��
putpalette�getdata�super�load_prepare)r$�	temp_mode�	__class__s  �rr�zGifImageFile.load_prepare�s�����.�7�C�C�C�	���
��<�1����'�3��*�/�/��t�y�$�*B�������Y�/�
)�
)� �G�D�M��"�
��*�/�/�#�t�y�$�:R�:W�VW�X�X���"���"�D�$7�$?�$?�$A�$A�B�B�B������	�"���
���������rc�
�|jdkr�|jdkrttjkrj|j�(|j�|jd��d|_nd|_|j�|jtj
j��|_dS|jsdS|j�;|j�|jd��|j�d��}n|j�d��}|�
||j��}|j|_|jj|_|jdkr#|j�||j|��dS|j�||j��dS)Nrrmrlr7)rTr�r�rrr�rUr�r�rr�r�r�r�r�r�)r$�frame_ims  r�load_endzGifImageFile.load_end�sS���<�1����y�C���$4��8R�$R�$R��+�7��G�+�+�D�,D�a�H�H�H� &�D�I�I� %�D�I��'�/�/�$�)�U�\�5P�Q�Q����F��}�	��F��#�/��G�#�#�D�$<�a�@�@�@��w���v�.�.�H�H��w���u�-�-�H��:�:�h��(;�<�<���-����G�L��	��=�F�"�"��G�M�M�(�D�$7��B�B�B�B�B��G�M�M�(�D�$7�8�8�8�8�8rc��|jS�N)rT)r$s rrAzGifImageFile.tell�s
���|�r)T)rrr�format�format_description�!_close_exclusive_fp_after_loadingr>r&r-rI�propertyrOrQrLrEr�r�rA�
__classcell__)r�s@rrr?s��������
�F�)��(-�%��N����������8�	�	��X�	��!�!��X�!�$+�+�+� }!�}!�}!�}!�~�����(9�9�9�4������rrrnrm)�1rnrmc��|jtvr|���|Stj|j��dkro|�dtjj���}|jjdkr7|jj	D]*}|ddkr|jj	||j
d<n�+|S|�d��S)	a
    Takes an image (or frame), returns an image in a mode that is appropriate
    for saving in a Gif.

    It may return the original image, or it may return an image converted to
    palette or 'L' mode.

    :param im: Image object
    :returns: Image object
    r7rm�r?rlr(rrprn)r��RAWMODEr{r�getmodebaser��Palette�ADAPTIVEr?�colorsr9)rU�rgbas  r�_normalize_moder��s���
�w�'���
���	�	�	��	�����!�!�U�*�*�
�Z�Z��U�]�%;�Z�
<�
<��
�:�?�f�$�$��
�)�
�
����7�a�<�<�.0�j�.?��.E�B�G�N�+��E� ��	�
�:�:�c�?�?�rc���d}|rgt|tttf��rt|dd���}t|tj��rt|j��}|jdkr%|s"|j�d��dd�}nC|s&td�td��D����}t	jd|���|_|r�g}tdt|��d��D]V}t|||dz���}|jj�
|��}||vrd}|�|���Wt|��D]1\}}|�*tt|����D]
}||vr|||<n��2|�|��}n(t#||��}|�|�||��S||j_|S)	at
    Normalizes the palette for image.
      - Sets the palette to the incoming palette, if provided.
      - Ensures that there's a palette for L mode images
      - Optimizes the palette if necessary/desired.

    :param im: Image object
    :param palette: bytes object containing the source palette, or ....
    :param info: encoderinfo
    :returns: Image object
    Nirmr7c3� K�|]	}|dzV��
dS)r(Nr)�.0r,s  r�	<genexpr>z%_normalize_palette.<locals>.<genexpr>s&����&B�&B�!�q�A�v�&B�&B�&B�&B�&B�&Brr�rr()�
isinstance�bytes�	bytearray�listrr?r�rU�
getpaletter)r*rsr�r��append�	enumerate�
remap_palette�
_get_optimize)	rUr?r9�source_palette�used_palette_colorsr,�source_color�index�js	         r�_normalize_paletter��s���N��8��g��y�$�7�8�8�	6�&�w�t��t�}�5�5�N��g�|�8�9�9�	8�&�w��7�7�N�	�w�#�~�~��	;��U�-�-�e�4�4�T�c�T�:�N���	C�&�&B�&B�u�S�z�z�&B�&B�&B�B�B�N�!�.�u�n�M�M�M��
��I� ���q�#�n�-�-�q�1�1�	.�	.�A� ���A��E�	�!:�;�;�L��J�%�)�)�,�7�7�E��+�+�+����&�&�u�-�-�-�-�!�"5�6�6�	�	�H�A�u��}��s�#6�7�7�8�8���A�� 3�3�3�12�+�A�.���4���
�
�1�
2�
2���+�B��5�5���*��#�#�$7��H�H�H�'�B�J��
�Irc	�*�t|��}|j���D] \}}|j�||���!t|||j��}t
||j��D]}|�|���d}t|��r|dz}t||d|��dt|��f|_
tj||dd|j
zdt|jfg��|�d��dS)Nrrk�rrr1rw�)r�r9�items�encoderinfo�
setdefaultr��_get_global_header�write�
get_interlace�_write_local_header�
encoderconfigr�_saver}r�r�)rUr"r?�im_outr��vr%rGs        r�_write_single_framer�"s��
�R�
 �
 �F���!�!�#�#�(�(���1�
��!�!�!�Q�'�'�'�'�
�����
@�
@�F�
����
7�
7����
��������
�E��R������
����B���.�.�.��}�R�0�0�1�F��
�O�F�B�%��"�'�)9�1�g�f�k�>R�!S� T�U�U�U��H�H�U�O�O�O�O�Orc��t|��t|��krtj||��}n;tj|�d��|�d����}|�d���S)NrlF)�
alpha_only)�_get_palette_bytesr�subtract_modulor��getbbox)�base_im�im_frame�deltas   r�_getbboxr�7sy���(�#�#�'9�'�'B�'B�B�B��*�8�W�=�=����*����V�$�$�g�o�o�f�&=�&=�
�
���=�=�E�=�*�*�*rc	���|j�d��}|j�d|j�d����}g}d}d}tj|g|j�dg����D�]i}tj|��D�]P}	t|	�����}	|dkrA|	j�	��D]'\}
}|
dkr�|j�
|
|���(|j���}t|	||��}	d|	jvr!|�
d|	jd��t|ttf��r|||d<n|�d|	jvr|	jd|d<t|ttf��r|||d<|dz
}|�r|d}
t|
d|	��}|s3|�d��r|
d	dxx|dz
cc<���|�d��d
kr�|��|j�d|j�dd����}t!|	|��}t#jd|	j|��}|�|ddj��t||	��}nd}|�|	||d
�����R��kt/|��dkr�|D]�}|d}	|ds1t1|	|d	��D]}|�|���d}n8|sd|d	d<|	�|d��}	|ddd
�}t7||	||d	����dSd|jvrKt|jdttf��r&t9|jd��|jd<dSdSdS)Nr`�disposalr�
append_imagesrprr[rUr�r)rrrrm)rU�bboxr�r�r�T�include_color_table)r�r�r9�	itertools�chainr	�Iteratorr�ror�r�r�r�r�rsr��_get_backgroundr�newr}r�r?r�r*r�r��crop�_write_frame_data�sum)rUr"r?r`r��	im_frames�frame_count�
background_im�
imSequencer�r�r�r��previousr�rtr6�
frame_datar%�offsets                    r�_write_multiple_framesr�As7���~�!�!�*�-�-�H��~�!�!�*�b�g�k�k�*�.E�.E�F�F�H��I��K��M��o�r�d�B�N�,>�,>��PR�,S�,S�T�T�*Y�*Y�
�%�.�z�:�:�)	Y�)	Y�H�&�x�}�}���7�7�H��a���$�M�/�/�1�1�4�4�D�A�q��N�*�*� ��N�-�-�a��3�3�3�3��.�-�-�/�/�K�)�(�G�[�I�I�H����.�.��&�&�~�x�}�^�7T�U�U�U��(�T�5�M�2�2�
D�*2�;�*?��J�'�'��!�j�H�M�&A�&A�*2�-�
�*C��J�'��(�T�5�M�2�2�
@�*2�;�*?��J�'��1��K��
�$�R�=�������9�9����"���z�2�2�W� ��/�
�;�;�;�{�:�?V�V�;�;�;���?�?�:�.�.�!�3�3�$�,� "�� 2� 2�*�B�G�K�K��	�,R�,R�!�!��&5�X�u�%E�%E�
�(-�	�#�x�}�j�(Q�(Q�
�%�0�0��1��d�1C�1K�L�L�L�#�M�8�<�<�D�������H�d�;�W�W�X�X�X�X�S)	Y�V�9�~�~����#�	O�	O�J�!�$�'�H��f�%�
0�+�H�j��6O�P�P� � �A��H�H�Q�K�K�K�K�����L�GK�J�}�-�.C�D�#�=�=��F�);�<�<��#�F�+�B�Q�B�/���b�(�F�J�}�4M�N�N�N�N��t�	�r�~�	%�	%�*�
��z�"�T�5�M�+�+�	%�&)���
�)C�%D�%D���z�"�"�"�	
&�	%�	%�	%rc�,�t|||d���dS)NT)�save_all)r�)rUr"�filenames   r�	_save_allr��s��	�"�b�(�T�*�*�*�*�*�*rFc��d|jvs	d|jvr4|j�d|j�d����}n%d}|j�dd��|jd<|rt|||��st	|||��|�d��t
|d��r|���dSdS)Nr?�optimizeTr]�flush)r�r9r�r�r�r��hasattrr�)rUr"r�r�r?s     rr�r��s����B�N�"�"�i�2�7�&:�&:��.�$�$�Y�����I�0F�0F�G�G�����%'�^�%7�%7�
�D�%I�%I���z�"��-�1�"�b�'�B�B�-��B��G�,�,�,��H�H�T�N�N�N��r�7����
���
�
�
�
�
��rc�p�|j�dd��}t|j��dkrd}|S)Nr�r�r)r�r��minr})rUr�s  rr�r��s9����"�"�;��2�2�I��2�7�|�|�b����	��rc��d}	d|jvr|jd}n
|jd}t|��}d}t||j��}|�)	|�|��}n*#t
$rd}YnwxYwn#tt
f$rYnwxYwd|jvrt|jddz��}nd}t|j�dd����}|s|dks|r�|rdnd}	|	|d	zz}	|sd}|�d
td��ztd��zt|	��zt|��zt|��ztd��z��|j�d
��}
|
r*t|��}t|��}|r
|dz}||z}|�dt|d��zt|d��zt|j
d��zt|j
d��zt|��z��|
r$|r"|�t|����|�td����dS)NFrpTr`r2rr�rrr^r_rjr�r4rhr1)r�r9�intr�r�r|�KeyErrorr�r�r�o16r��_get_color_table_sizer}�_get_header_palette)
r"rUr�rG�transparent_color_existsrpr�r`r��packed_flagr��
palette_bytes�color_table_sizes
             rr�r��s���$��1��R�^�+�+��>�.�9�L�L��7�>�2�L��<�(�(��
$(� �+�B���?�?���*�
1�2�8�8��F�F�����
1�
1�
1�+0�(�(�(�
1����	+��
�j�!�
�
�
���
�����R�^�#�#��r�~�j�1�B�6�7�7������2�>�%�%�j�!�4�4�5�5�H��
�8�q�=�=�H�=�3�:�a�a����x�1�}�$��'�	��L�
������g�g�
���e�e�
���o�o�
��(�m�m�	
�
����
���e�e�

�	
�	
�	
��.�,�,�-B�C�C���-�*�2�.�.�
�0��?�?���	-��C�K�E��,�,�E��H�H��

�f�Q�i�.�.�	�

�f�Q�i�.�.�	��b�g�a�j�/�/�	��b�g�a�j�/�/�		�

�U�)�)�	�����5�/�5�
���$�]�3�3�4�4�4��H�H�R��U�U�O�O�O�O�Os#�3A:�A'�'A6�5A6�:B�
Bc��|���}	t|d��5}|jdkr$tjd|g|tj���n�dd|g}dg}tj|tjtj���}tj||j|tj���}|j�	��|�
��}	|	rtj|	|���|�
��}	|	rtj|	|���ddd��n#1swxYwY	tj
|��dS#t$rYdSwxYw#	tj
|��w#t$rYwwxYwxYw)N�wbr7�ppmtogif)�stdout�stderr�ppmquant�256)�stdinrr)�_dump�openr��
subprocess�
check_call�DEVNULL�Popen�PIPEr�close�wait�CalledProcessError�os�unlink�OSError)
rUr"r��tempfilerX�	quant_cmd�	togif_cmd�
quant_proc�
togif_proc�retcodes
          r�_save_netpbmr(�s���x�x�z�z�H�#�
�(�D�
!�
!�	L�Q��w�%����%���*�1�Z�=O������(���9�	�'�L�	�'�-��j�o�j�>P����
�(�-��$�+��%�-�	���
��!�'�'�)�)�)�$�/�/�+�+���L�$�7���K�K�K�$�/�/�+�+���L�$�7���K�K�K�;	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L����	L�	L�	L�	L�>	��I�h��������	�	�	��D�D�	�����	��I�h�������	�	�	��D�	������se�E�C9D+�E�+D/�/E�2D/�3E�7E
�
E�E�F� E5�4F�5
F�?F�F�Fc�V�|jdv�r|�r|�dd��r�tp
|jdk}|s|j|jzdkr�g}t|�����D]\}}|r|�|���|s t|��t|��kr|St|j
j
��tj|j
j��z}d|dz
�
��z}t|��|dzkr|dkr|SdSdSdSdSdSdS)	aL
    Palette optimization is a potentially expensive operation.

    This function determines if the palette should be optimized using
    some heuristics, then returns the list of palette entries in use.

    :param im: Image object
    :param info: encoderinfo
    :returns: list of indexes of palette entries in use, or None
    )rmrnr�rrnirrN)r�r��_FORCE_OPTIMIZE�width�heightr��	histogramr�r~r*r?r�getmodebands�
bit_length)rUr9�optimiser�r,�count�num_palette_colors�current_palette_sizes        rr�r�!sl��
�w�*�����$�(�(�:�q�*A�*A��#�4�b�g��n���	+�r�x�"�)�+�i�7�7�"$��%�b�l�l�n�n�5�5�
2�
2���5��2�'�.�.�q�1�1�1���
+�3�2�3�3�s�;N�7O�7O�O�O�*�*�!$�R�Z�%7�!8�!8�E�<N��
��=�=�"��$%�);�a�)?�(K�(K�(M�(M�#M� ��'�(�(�,@�A�,E�E�E�(�1�,�,�*�*�A������8�7� F�E�,�,rc��|sdSt|��dkrdStjtjt|��dzd����dz
S)Nrrirr(r)r*�math�ceil�log)rs rrrOsV���C��q�	�]�	�	�a�	�	��q��y���#�m�"4�"4��"9�1�=�=�>�>��B�Brc��t|��}d|zt|��dzz
}|dkr|td��dz|zz
}|S)z�
    Returns the palette, null padded to the next power of 2 (*3) bytes
    suitable for direct inclusion in the GIF header

    :param palette_bytes: Unpadded palette bytes, in RGBRGB form
    :returns: Null padded palette
    rr(r)rr*r)rr�actual_target_size_diffs   rrrYs]��-�]�;�;�� !�$4�4��M�8J�8J�a�8O�O����"�"���A�����%<�<�<�
��rc�,�|jr|jjndS)z�
    Gets the palette for inclusion in the gif header

    :param im: Image object
    :returns: Bytes, len<=768 suitable for inclusion in gif header
    rr�)rUs rr�r�ks��"$��4�2�:����4rc���d}|r]t|t��rF	|j�||��}n+#t$r}t|��dvr�Yd}~n
d}~wwxYw|}|S)Nr)z$cannot allocate more than 256 colorsz/cannot add non-opaque RGBA color to RGB palette)r�rsr?�getcolorr|�str)rU�info_backgroundr6rYs    rr�r�us����J��)��o�u�-�-�	)�

��Z�0�0��"�E�E�
�
���
�
�
��q�6�6�"�������������
����)�J��s�7�
A�A�Ac���d}|j�d��dks4|r4d|vs.d|vs*|�d��s|�d��rd}t||�d����}t|��}t	|��}d	|zt|jd
��zt|jd��zt|dz��t|��td
��zt|��g}d|vr~|�	d
td��ztd��zdztd��ztd��zt|d��ztd
��z��|�d��r�d
td��z}|d}t|t��r|���}td
t|��d��D]1}	||	|	dz�}
|tt|
����|
zz
}�2|td
��z
}|�	|��|S)z2Return a list of strings representing a GIF headers87ar0s89arprgr`r\r6sGIFrrr4r^rdr5rfr(rb)r9r�r�r�rrr}rrr�r�r=�encoder)r*)rUr9r0r6rr�header�
comment_blockr\r,�subblocks           rr�r��sm���G�	�w�{�{�9����'�'��(�
�d�"�"���~�~��x�x�
�#�#���x�x�	�"�"��
�� ��T�X�X�l�%;�%;�<�<�J�&�r�*�*�M�,�]�;�;��	�
�	�

�b�g�a�j�/�/�	��b�g�a�j�/�/�	�	��c�!�"�"�
�:����A�����M�*�*��F���~�~��
�
����g�g�
���f�f�
��
���e�e�	
�
��e�e�
��$�v�,���

 ���e�e�
�		
�		
�		
��x�x�	���%��r�#�w�w��
��y�/���g�s�#�#�	'��n�n�&�&�G��q�#�g�,�,��,�,�	:�	:�A��q�1�s�7�{�+�H��R��H�
�
�.�.��9�9�M�M���A����
��
�
�m�$�$�$��Mrc	���	||_t|||d��tj||dd|jzdt
|jfg��|�d��|`dS#|`wxYw)Nrrwr�r�)r�r�rr�r}r�r�r�)r"r�r��paramss    rr�r��s���!�%���	�B��&�!�4�4�4����b�E�6�H�M�#9�1�g�h�m�>T�U�V�	
�	
�	
�	�������� � � ��H� � � � � s�A!A'�'A+c���t||��}|�i}d|vrd|jvr|jd|d<t|||��}|j|_|j|_t||��}||fS)a
    Legacy Method to get Gif data from image.

    Warning:: May modify image data.

    :param im: Image object
    :param palette: bytes object containing the source palette, or ....
    :param info: encoderinfo
    :returns: tuple of(list of header items, optimized palette)

    Nr6)r�r9r�r?rUr�)rUr?r9r��im_modrAs      r�	getheaderrH�s���(��D�1�1���|����4���L�B�G�$;�$;��W�\�2��\��
��G�T�
2�
2�F���B�J��I�B�E�
��D�
)�
)�F��&�&�&rr�c��Gd�d��}|���|��}t||||��|jS)a�
    Legacy Method

    Return a list of strings representing this image.
    The first string is a local image header, the rest contains
    encoded image data.

    To specify duration, add the time in milliseconds,
    e.g. ``getdata(im_frame, duration=1000)``

    :param im: Image object
    :param offset: Tuple of (x, y) pixels. Defaults to (0, 0)
    :param \**params: e.g. duration or other encoder info parameters
    :returns: List of bytes containing GIF encoded frame data

    c��eZdZgZd�ZdS)�getdata.<locals>.Collectorc�:�|j�|��dSr�)r&r�)r$r&s  rr�z getdata.<locals>.Collector.writes���I���T�"�"�"�"�"rN)rrrr&r�rrr�	CollectorrKs(��������	#�	#�	#�	#�	#rrM)r{r�r&)rUr�rErMr"s     rr�r��s_��$#�#�#�#�#�#�#�#��G�G�I�I�I�	����B��b�"�f�f�-�-�-�
�7�Nrz.gifz	image/gif)F)NN)r�)2r�r5rr�enumr�rrrrr	�_binaryr
r:rrrrrr�rrr�r�r�r�r�r�r�r�r�r�r(r*r�rrr�r�r�r�rHr��
register_openr��
register_save�register_save_all�register_extension�
register_mimerrr�<module>rVs���6��������	�	�	�	�����������G�G�G�G�G�G�G�G�G�G�G�G�G�G�!�!�!�!�!�!�������!�!�!�!�!�!������g����#�2��0�0�0�L�L�L�L�L�9�&�L�L�L�f�#�C�
(�
(�����21�1�1�h���*+�+�+�HE�HE�HE�V+�+�+�����"���?�?�?�D,�,�,�b��++�++�++�\C�C�C����$5�5�5����.;�;�;�|
!�
!�
!�('�'�'�'�8����H���L�'��w�?�?�?����L�'��/�/�/�����+�Y�7�7�7�����,�f�5�5�5����L�'��5�5�5�5�5r

Youez - 2016 - github.com/yon3zu
LinuXploit