
O'^c           @  s  d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l m Z m Z m	 Z	 m
 Z
 d Z e j e  Z e
 j Z e
 j Z e
 j Z e j d  j Z d Z i dA dB 6dC dD 6dE dF 6dG dH 6dI dJ 6dK dL 6dM dN 6dO dP 6dQ dR 6dS dT 6dU dV 6dW dX 6dY dZ 6d[ d\ 6d] d^ 6Z e j d  Z e j Z d  e Z d!   Z d" e f d#     YZ d$ e  f d%     YZ! d& e f d'     YZ" d( e f d)     YZ# d*   Z$ d+ e j f d,     YZ% e
 j& Z& e
 j' Z( e
 j) Z* i d_ d 6d` d. 6da d 6db d 6dc d
 6dd d 6de d 6df d 6dg d 6dh d 6di d 6dj d 6dk d 6Z+ d:   Z, d; e f d<     YZ- e, d	 d=  Z. d>   Z/ e j0 e% j1 e% e$  e j2 e% j1 e.  e j3 e% j1 d?  e j4 e% j1 d@  d S(l   i(   t   print_functionN(   t   Imaget	   ImageFilet   ImagePalettet   _binarys   0.9s   \w\w\w\ws   PNG

t   1i   i    t   Ls   L;2i   s   L;4i   i   t   Is   I;16Bi   t   RGBs   RGB;16Bt   Ps   P;1i   s   P;2s   P;4t   LAt   RGBAs   LA;16Bi   s   RGBA;16Bs   ^* *$i@   c         C  s:   t  j   } | j |  t  } | j r6 t d   n  | S(   Ns   Decompressed Data Too Large(   t   zlibt   decompressobjt
   decompresst   MAX_TEXT_CHUNKt   unconsumed_tailt
   ValueError(   t   st   dobjt	   plaintext(    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyt   _safe_zlib_decompressV   s
    	t   ChunkStreamc           B  sS   e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z d d  Z	 RS(	   c         C  s7   | |  _  g  |  _ t t j d  s3 |  j |  _ n  d  S(   Nt   crc32(   t   fpt   queuet   hasattrR   t   coret   crc_skipt   crc(   t   selfR   (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyt   __init__c   s    		c         C  s   d } |  j r: |  j j   \ } } } |  j j |  n7 |  j j d  } | d } |  j j   } t |  } t |  s t	 d t
 |    n  | | | f S(   s.   Fetch a new chunk. Returns header information.i   i   s   broken PNG file (chunk %s)N(   t   NoneR   t   popR   t   seekt   readt   tellt   i32t   is_cidt   SyntaxErrort   repr(   R   t   cidt   post   lengthR   (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyR#   k   s    	
c         C  s   d  |  _ |  _ |  _ d  S(   N(   R    R   R   R   (   R   (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyt   close}   s    c         C  s   |  j  j | | | f  d  S(   N(   R   t   append(   R   R)   R*   R+   (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyt   push   s    c         C  s9   t  j d | | |  t |  d | j d   | |  S(   s"   Call the appropriate chunk handlers   STREAM %s %s %st   chunk_t   ascii(   t   loggert   debugt   getattrt   decode(   R   R)   R*   R+   (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyt   call   s    c         C  s   t  j r5 t | d  d ?d @r5 |  j | |  d Syt t j j | t j j |   } t |  j j	 d   t |  j j	 d   f } | | k r t
 d |   n  Wn$ t j k
 r t
 d |   n Xd S(   s   Read and verify checksumi    i   i   Ni   s+   broken PNG file (bad header checksum in %s)s+   broken PNG file (incomplete checksum in %s)(   R   t   LOAD_TRUNCATED_IMAGESt   i8R   R   R   R   t   i16R   R#   R'   t   structt   error(   R   R)   t   datat   crc1t   crc2(    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyR      s    !!0c         C  s   |  j  j d  d S(   s3   Read checksum.  Used if the C module is not presenti   N(   R   R#   (   R   R)   R;   (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyR      s    t   IENDc         C  s   g  } x t  r y |  j   \ } } } Wn  t j k
 rJ t d   n X| | k r[ Pn  |  j | t j |  j |   | j	 |  q	 W| S(   Ns   truncated PNG file(
   t   TrueR#   R9   R:   t   IOErrorR   R   t
   _safe_readR   R-   (   R   t   endchunkt   cidsR)   R*   R+   (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyt   verify   s    	(
   t   __name__t
   __module__R   R#   R,   R.   R5   R   R   RD   (    (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyR   a   s   							t   iTXtc           B  s   e  Z d  Z e d    Z RS(   sq   
    Subclass of string to allow iTXt chunks to look like strings while
    keeping their extra information

    c         C  s(   t  j |  |  } | | _ | | _ | S(   s   
        :param value: value for this key
        :param lang: language code
        :param tkey: UTF-8 version of the key name
        (   t   strt   __new__t   langt   tkey(   t   clst   textRJ   RK   R   (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyRI      s    		(   RE   RF   t   __doc__t   staticmethodRI   (    (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyRG      s   t   PngInfoc           B  s>   e  Z d  Z d   Z d   Z d d e d  Z d d  Z RS(   s<   
    PNG chunk container (for use with save(pnginfo=))

    c         C  s   g  |  _  d  S(   N(   t   chunks(   R   (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyR      s    c         C  s   |  j  j | | f  d S(   s   Appends an arbitrary chunk. Use with caution.

        :param cid: a byte string, 4 bytes long.
        :param data: a byte string of the encoded data

        N(   RQ   R-   (   R   R)   R;   (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyt   add   s    t    c         C  s   t  | t  s$ | j d d  } n  t  | t  sH | j d d  } n  t  | t  sl | j d d  } n  t  | t  s | j d d  } n  | r |  j d | d | d | d t j |   n( |  j d | d | d | d |  d S(	   s   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

        s   latin-1t   stricts   utf-8RG   s     s    s      N(   t
   isinstancet   bytest   encodeRR   R   t   compress(   R   t   keyt   valueRJ   RK   t   zip(    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyt   add_itxt   s      i    c         C  s   t  | t  r4 |  j | | | j | j t |   St  | t  s y | j d d  } Wq t k
 r |  j | | d t |  SXn  t  | t  s | j d d  } n  | r |  j	 d | d t
 j |   n |  j	 d | d |  d S(	   s   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

        s   latin-1RT   R[   t   zTXts     t   tEXts    N(   RU   RG   R\   RJ   RK   t   boolRV   RW   t   UnicodeErrorRR   R   RX   (   R   RY   RZ   R[   (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyt   add_text   s    	% $(   RE   RF   RN   R   RR   t   FalseR\   Ra   (    (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyRP      s
   		
t	   PngStreamc           B  s}   e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z d
   Z d   Z d   Z RS(   c         C  sS   t  j |  |  i  |  _ i  |  _ d |  _ d  |  _ d  |  _ d  |  _ d |  _	 d  S(   Ni    (   i    i    (
   R   R   t   im_infot   im_textt   im_sizeR    t   im_modet   im_tilet
   im_palettet   text_memory(   R   R   (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyR     s    						c         C  s8   |  j  | 7_  |  j  t k r4 t d |  j    n  d  S(   Ns7   Too much memory used in text chunks: %s>MAX_TEXT_MEMORY(   Rj   t   MAX_TEXT_MEMORYR   (   R   t   chunklen(    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyt   check_text_memory(  s    c         C  s   t  j |  j |  } | j d  } t j d | |   t j d t | |   t | |  } | d k r t d |   n  y t | | d  } Wn? t	 k
 r t  j
 r d  } q   n t j k
 r d  } n X| |  j d <| S(   Ns    s   iCCP profile name %ss   Compression method %si    s+   Unknown compression method %s in iCCP chunki   t   icc_profile(   R   RA   R   t   findR1   R2   R7   R'   R   R   R6   R    R   R:   Rd   (   R   R*   R+   R   t   it   comp_methodRn   (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyt
   chunk_iCCP.  s$    		
c         C  s   t  j |  j |  } t |  t | d  f |  _ y4 t t | d  t | d  f \ |  _ |  _ Wn n Xt | d  r d |  j	 d <n  t | d  r t
 d   n  | S(	   Ni   i   i	   i   i   t	   interlacei   s   unknown filter category(   R   RA   R   R%   Rf   t   _MODESR7   Rg   t
   im_rawmodeRd   R'   (   R   R*   R+   R   (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyt
   chunk_IHDRJ  s    4c         C  s5   d d |  j  | |  j f g |  _ | |  _ t  d  S(   NR[   i    (   i    i    (   Rf   Ru   Rh   t   im_idatt   EOFError(   R   R*   R+   (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyt
   chunk_IDATY  s    "	c         C  s
   t   d  S(   N(   Rx   (   R   R*   R+   (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyt
   chunk_IEND`  s    c         C  s:   t  j |  j |  } |  j d k r6 d | f |  _ n  | S(   NR	   R   (   R   RA   R   Rg   Ri   (   R   R*   R+   R   (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyt
   chunk_PLTEe  s    c         C  s   t  j |  j |  } |  j d k rq t j |  ra | j d  } | d k rn | |  j d <qn q | |  j d <ng |  j d k r t |  |  j d <nB |  j d k r t |  t | d  t | d  f |  j d <n  | S(	   NR	   s    i    t   transparencyR   R   i   i   (	   R   RA   R   Rg   t   _simple_palettet   matchRo   Rd   R8   (   R   R*   R+   R   Rp   (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyt
   chunk_tRNSm  s    3c         C  s0   t  j |  j |  } t |  d |  j d <| S(   Ng     j@t   gamma(   R   RA   R   R%   Rd   (   R   R*   R+   R   (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyt
   chunk_gAMA  s    c         C  s   t  j |  j |  } t |  t | d  } } t | d  } | d k r t | d d  t | d d  f } | |  j d <n" | d k r | | f |  j d <n  | S(	   Ni   i   i   g
F%u?g      ?t   dpii    t   aspect(   R   RA   R   R%   R7   t   intRd   (   R   R*   R+   R   t   pxt   pyt   unitR   (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyt
   chunk_pHYs  s    (c         C  s   t  j |  j |  } y | j d d  \ } } Wn t k
 rP | } d } n X| r t t k	 r | j d d  } | j d d  } n  | |  j | <|  j	 | <|  j
 t |   n  | S(   Ns    i   RS   s   latin-1RT   t   replace(   R   RA   R   t   splitR   RV   RH   R4   Rd   Re   Rm   t   len(   R   R*   R+   R   t   kt   v(    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyt
   chunk_tEXt  s    
c         C  sP  t  j |  j |  } y | j d d  \ } } Wn t k
 rP | } d } n X| rj t | d  } n d } | d k r t d |   n  y t | d  } Wn? t k
 r t  j r d } q   n t	 j
 k
 r d } n X| rLt t k	 r| j d d  } | j d d  } n  | |  j | <|  j | <|  j t |   n  | S(	   Ns    i   RS   i    s+   Unknown compression method %s in zTXt chunks   latin-1RT   R   (   R   RA   R   R   R   R7   R'   R   R6   R   R:   RV   RH   R4   Rd   Re   Rm   R   (   R   R*   R+   R   R   R   Rq   (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyt
   chunk_zTXt  s6    
		
c         C  s  t  j |  j |  } } y | j d d  \ } } Wn t k
 rI | SXt |  d k  r` | St | d  t | d  | d } } } y | j d d  \ } }	 }
 Wn t k
 r | SX| d k r*| d k r#y t |
  }
 Wq't k
 rt  j r| S  q't	 j
 k
 r| SXq*| Sn  t t k	 ryL | j d d  } | j d d  } |	 j d d  }	 |
 j d d  }
 Wqt k
 r| SXn  t |
 | |	  |  j | <|  j | <|  j t |
   | S(   Ns    i   i   i    s   latin-1RT   s   utf-8(   R   RA   R   R   R   R   R7   R   R6   R   R:   RV   RH   R4   R`   RG   Rd   Re   Rm   (   R   R*   R+   t   rR   R   t   cft   cmRJ   t   tkR   (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyt
   chunk_iTXt  sD    ,	$(   RE   RF   R   Rm   Rr   Rv   Ry   Rz   R{   R   R   R   R   R   R   (    (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyRc     s   												$c         C  s   |  d  t  k S(   Ni   (   t   _MAGIC(   t   prefix(    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyt   _accept  s    t   PngImageFilec           B  sA   e  Z d  Z d Z d   Z d   Z d   Z d   Z d   Z RS(   t   PNGs   Portable network graphicsc         C  sk  |  j  j d  t k r' t d   n  t |  j   |  _ x t r |  j j   \ } } } y |  j j | | |  } WnM t k
 r Pn< t	 k
 r t
 j d | | |  t j |  j  |  } n X|  j j | |  q< W|  j j |  _ |  j j |  _ |  j j |  _ |  j j |  _ |  j j |  _ |  j j r^|  j j \ } } t j | |  |  _ n  | |  _ d  S(   Ni   s   not a PNG files   %s %s %s (unknown)(   R   R#   R   R'   Rc   t   pngR?   R5   Rx   t   AttributeErrorR1   R2   R   RA   R   Rg   t   modeRf   t   sizeRd   t   infoRe   RM   Rh   t   tileRi   R   t   rawt   palettet   _PngImageFile__idat(   R   R)   R*   R+   R   t   rawmodeR;   (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyt   _open  s,    		c         C  sd   |  j  d k r t d   n  |  j  j |  j d d d  |  j j   |  j j   d |  _  d S(   s   Verify PNG files)   verify must be called directly after openi    i   i   N(   R   R    t   RuntimeErrorR"   R   R   RD   R,   (   R   (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyRD   6  s    c         C  s9   |  j  j d  r% |  j d |  _ n  t j j |   d S(   s"   internal: prepare to read PNG fileRs   i   N(   i   (   R   t   gett   decoderconfigR   t   load_prepare(   R   (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyR   D  s    c         C  s   xj |  j  d k rl |  j j d  |  j j   \ } } } | d k r` |  j j | | |  d S| |  _  q W| d k r |  j  } n t | |  j   } |  j  | |  _  |  j j |  S(   s   internal: read more image datai    i   t   IDATt   DDATRS   (   R   R   (   R   R   R#   R   R.   t   min(   R   t
   read_bytesR)   R*   R+   (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyt	   load_readL  s    c         C  s   |  j  j   d |  _  d S(   s%   internal: finished reading image dataN(   R   R,   R    (   R   (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyt   load_endf  s    (	   RE   RF   t   formatt   format_descriptionR   RD   R   R   R   (    (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyR     s   	.			s    s   L;1s    s    s    s   s    s   s   s   s   s   s   c         G  s   d j  |  } |  j t t |   |  |  j |  t j j | t j j |   \ } } |  j t |  t |   d S(   s'   Write a PNG chunk (including CRC field)RS   N(   t   joint   writet   o32R   R   R   R   t   o16(   R   R)   R;   t   hit   lo(    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyt   putchunk  s
    't   _idatc           B  s   e  Z d    Z d   Z RS(   c         C  s   | |  _  | |  _ d  S(   N(   R   t   chunk(   R   R   R   (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyR     s    	c         C  s   |  j  |  j d |  d  S(   NR   (   R   R   (   R   R;   (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyR     s    (   RE   RF   R   R   (    (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyR     s   	c      	   C  s9  |  j  } | d k r d |  j k r8 d |  j d >} nA |  j rs t t t |  j j   d  d d  d  } n d } | d k r d } n0 | d k r d } n | d k r d } n d	 } | d	 k r d
 | | f } q n  |  j j d t  |  j j d d  |  j j d d  |  j j d d  f |  _	 y t
 | \ } } Wn! t k
 rht d |   n X| rs| S| j t  | | d t |  j d  t |  j d  | d d d  |  j  d k r"d | d }	 |  j j d  |	  }
 x  t |
  |	 k  r|
 d 7}
 qW| | d |
  n  |  j j d |  j j d d    } | sX| d k r|  j  d k rd | } t | t  r| | d | |   q}t d t d |   } d | d } | | d | |   q|  j  d k rt d t d |   } | | d t |   q|  j  d k r_| \ } } } | | d t |  t |  t |   qd |  j k rt d   qnZ |  j  d k r|  j j   d k r|  j j d d  } d | } | | d | |   n  |  j j d   } | r;| | d! t t | d d" d#   t t | d d" d#   d$  n  |  j j d%  } | rx* | j D] \ } } | | | |  q]Wn  |  j j d& |  j j d&   } | rd' } | d( t j |  } | | d) |  n  t j |  t | |  d* d- |  j d | f g  | | d+ d  t  | d,  r5| j!   n  d  S(.   NR	   t   bitsi   i   i   i   i   i   i   s   %s;%dt   optimizet   compress_levelit   compress_typet
   dictionaryRS   s   cannot write mode %s as PNGt   IHDRi    s    R   t   PLTER|   t   tRNSi   s   R   i  s%   cannot use transparency for this modeR   t   AR   t   pHYsg
F%u?g      ?s   t   pnginfoRn   s   ICC Profiles     t   iCCPR[   R>   t   flush(   i    i    ("   R   t   encoderinfoR   t   maxR   R   t   getdataR   Rb   t   encoderconfigt	   _OUTMODESt   KeyErrorR@   R   R   R   R   t   imt
   getpaletteR   R    RU   RV   R   t   getpalettemodeR   RQ   R   RX   R   t   _saveR   R   R   (   R   R   t   filenameR   t   checkR   t   colorsR   R   t   palette_byte_numbert   palette_bytesR|   t   alpha_bytest   alphat   redt   greent   blueR   R   R)   R;   t   icct   name(    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyR     s    		2				 
-$
	
!c         K  sY   d t  f d     Y} d   } |   } z  | |  _ t |  | d |  Wd |  ` X| j S(   s4   Return a list of PNG chunks representing this image.t	   collectorc           B  s    e  Z g  Z d    Z d   Z RS(   c         S  s   d  S(   N(    (   R   R;   (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyR   $  s    c         S  s   |  j  j |  d  S(   N(   R;   R-   (   R   R   (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyR-   '  s    (   RE   RF   R;   R   R-   (    (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyR   !  s   	c         W  sf   d j  |  } t j j | t j j |   \ } } t |  t |  } |  j | | | f  d  S(   NRS   (   R   R   R   R   R   R-   (   R   R)   R;   R   R   R   (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyR-   *  s    'N(   t   objectR   R   R    R;   (   R   t   paramsR   R-   R   (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyt	   getchunks  s    				s   .pngs	   image/png(   R   R   (   i   i    (   R   s   L;2(   i   i    (   R   s   L;4(   i   i    (   R   R   (   i   i    (   R   s   I;16B(   i   i    (   R   R   (   i   i   (   R   s   RGB;16B(   i   i   (   R	   s   P;1(   i   i   (   R	   s   P;2(   i   i   (   R	   s   P;4(   i   i   (   R	   R	   (   i   i   (   R
   R
   (   i   i   (   R   s   LA;16B(   i   i   (   R   R   (   i   i   (   R   s   RGBA;16B(   i   i   (   R   s    (   s   L;1s    (   s   L;2s    (   s   L;4s    (   R   s    (   R
   s   (   s   I;16Bs    (   s   P;1s   (   s   P;2s   (   s   P;4s   (   R	   s   (   R   s   (   R   s   (5   t
   __future__R    t   loggingt   reR   R9   t   PILR   R   R   R   t   __version__t	   getLoggerRE   R1   R7   t   i16beR8   t   i32beR%   t   compileR~   R&   R   Rt   R}   t	   SAFEBLOCKR   Rk   R   R   R   RH   RG   RP   Rc   R   R   t   o8t   o16beR   t   o32beR   R   R   R   R   R   t   register_openR   t   register_savet   register_extensiont   register_mime(    (    (    s4   /tmp/pip-unpacked-wheel-ivxKtu/PIL/PngImagePlugin.pyt   <module>"   s~   "			
	
	VM	m			
		 