Ñò
…n+Oc           @   sQ  d  Z  d d k Z d d k Z d d k Z d d k Z d d k Z d d k Z d „  Z d „  Z e i	 d ƒ i
 Z d Z h d3 d4 6d5 d6 6d7 d8 6d9 d: 6d; d< 6d= d> 6d? d@ 6dA dB 6dC dD 6dE dF 6dG dH 6dI dJ 6dK dL 6dM dN 6dO dP 6Z d dQ d  „  ƒ  YZ d! dR d" „  ƒ  YZ d# e f d$ „  ƒ  YZ d% „  Z d& e i f d' „  ƒ  YZ d( „  Z d) „  Z h d e d ƒ e d	 ƒ f d 6d* e d ƒ e d	 ƒ f d* 6d e d ƒ e d	 ƒ f d 6d e d ƒ e d	 ƒ f d 6d
 e d ƒ e d	 ƒ f d
 6d e d ƒ e d ƒ f d 6d e d ƒ e d	 ƒ f d 6d e d ƒ e d ƒ f d 6d e d ƒ e d ƒ f d 6d e d ƒ e d ƒ f d 6d e d ƒ e d ƒ f d 6d e d ƒ e d ƒ f d 6d e d ƒ e d ƒ f d 6Z d+ „  Z d, dS d- „  ƒ  YZ e d	 d. „ Z d/ „  Z e i d0 e e ƒ e i d0 e ƒ e i d0 d1 ƒ e i d0 d2 ƒ d S(T   s   0.9iÿÿÿÿNc         C   s    t  |  d ƒ t  |  d ƒ d >S(   Ni   i    i   (   t   ord(   t   c(    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyt   i16)   s    c         C   sD   t  |  d ƒ t  |  d ƒ d >t  |  d ƒ d >t  |  d ƒ d >S(   Ni   i   i   i   i   i    i   (   R    (   R   (    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyt   i32+   s    s   \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;16Bt   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   s9   | |  _  g  |  _ t t i d ƒ p |  i |  _ n d  S(   Nt   crc32(   t   fpt   queuet   hasattrt   Imaget   coret   crc_skipt   crc(   t   selfR   (    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyt   __init__M   s    		c         C   s¦   |  i  o4 |  i  d \ } } } |  i  d =|  i i | ƒ n8 |  i i d ƒ } | d } |  i i ƒ  } t | ƒ } t | ƒ p t d t | ƒ ‚ n | | | f S(   s.   Fetch a new chunk. Returns header information.iÿÿÿÿi   i   s   broken PNG file (chunk %s)(	   R   R   t   seekt   readt   tellR   t   is_cidt   SyntaxErrort   repr(   R   t   cidt   post   lent   s(    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyR   U   s    


c         C   s   d  |  _ |  _ |  _ d  S(   N(   t   NoneR   R   R   (   R   (    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyt   closeg   s    c         C   s   |  i  i | | | f ƒ d  S(   N(   R   t   append(   R   R   R   R   (    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyt   pushj   s    c         C   s9   t  i o d G| G| G| GHn t |  d | ƒ | | ƒ S(   s"   Call the appropriate chunk handlert   STREAMt   chunk_(   R   t   DEBUGt   getattr(   R   R   R   R   (    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyt   calln   s    
c         C   ss   t  i i | t  i i | ƒ ƒ } t |  i i d ƒ ƒ t |  i i d ƒ ƒ f } | | j o t d | ‚ n d S(   s   Read and verify checksumi   s*   broken PNG file(bad header checksum in %s)N(   R   R   R   R   R   R   R   (   R   R   t   datat   crc1t   crc2(    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyR   u   s
    !0c         C   s   |  i  i d ƒ d S(   s3   Read checksum.  Used if the C module is not presenti   N(   R   R   (   R   R   R)   (    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyR   ~   s    t   IENDc         C   sc   g  } xV |  i  ƒ  \ } } } | | j o Pn |  i | t i |  i | ƒ ƒ | i | ƒ q	 | S(   N(   R   R   t	   ImageFilet
   _safe_readR   R"   (   R   t   endchunkt   cidsR   R   R   (    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyt   verifyƒ   s    (
   t   __name__t
   __module__R   R   R!   R#   R(   R   R   R1   (    (    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyR   K   s   								t   PngInfoc           B   s&   e  Z d  „  Z d „  Z d d „ Z RS(   c         C   s   g  |  _  d  S(   N(   t   chunks(   R   (    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyR   ™   s    c         C   s   |  i  i | | f ƒ d  S(   N(   R5   R"   (   R   R   R)   (    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyt   addœ   s    i    c         C   sT   | o1 d d  k  } |  i d | d | i | ƒ ƒ n |  i d | d | ƒ d  S(   Niÿÿÿÿt   zTXtt     t   tEXtt    (   t   zlibR6   t   compress(   R   t   keyt   valuet   zipR;   (    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyt   add_textŸ   s    %(   R2   R3   R   R6   R@   (    (    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyR4   —   s   		t	   PngStreamc           B   sk   e  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   sJ   t  i |  | ƒ h  |  _ h  |  _ d |  _ d  |  _ d  |  _ d  |  _ d  S(   Ni    (   i    i    (	   R   R   t   im_infot   im_textt   im_sizeR    t   im_modet   im_tilet
   im_palette(   R   R   (    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyR   «   s    					c         C   s×   t  i |  i | ƒ } t i | t d ƒ ƒ } t i o$ d G| |  GHd Gt | | ƒ GHn t | | ƒ } | d j o t	 d | ƒ ‚ n y t
 i | | d ƒ } Wn t
 i j
 o d  } n X| |  i d <| S(   Ni    s   iCCP profile names   Compression methods+   Unknown compression method %s in iCCP chunki   t   icc_profile(   R-   R.   R   t   stringt   findt   chrR   R&   R    R   R;   t
   decompresst   errorR    RB   (   R   R   R   R   t   it   comp_methodRH   (    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyt
   chunk_iCCP·   s    
c      	   C   s¶   t  i |  i | ƒ } t | ƒ t | d ƒ f |  _ y4 t t | d ƒ t | d ƒ f \ |  _ |  _ Wn n Xt | d ƒ o d |  i	 d <n t | d ƒ o t
 d ‚ n | S(	   Ni   i   i	   i   i   t	   interlacei   s   unknown filter category(   R-   R.   R   R   RD   t   _MODESR    RE   t
   im_rawmodeRB   R   (   R   R   R   R   (    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyt
   chunk_IHDRÎ   s    4c         C   s5   d d |  i  | |  i f g |  _ | |  _ t ‚ d  S(   NR?   i    (   i    i    (   RD   RS   RF   t   im_idatt   EOFError(   R   R   R   (    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyt
   chunk_IDATÝ   s    "	c         C   s
   t  ‚ d  S(   N(   RV   (   R   R   R   (    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyt
   chunk_IENDä   s    c         C   s<   t  i |  i | ƒ } |  i d j o d | f |  _ n | S(   NR   R   (   R-   R.   R   RE   RG   (   R   R   R   R   (    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyt
   chunk_PLTEé   s    c         C   sÎ   t  i |  i | ƒ } |  i d j o: t i | t d ƒ ƒ } | d j o | |  i d <qÊ nl |  i d j o t | ƒ |  i d <nE |  i d j o4 t | ƒ t | d ƒ t | d ƒ f |  i d <n | S(   NR   i    t   transparencyR   R   i   i   (	   R-   R.   R   RE   RI   RJ   RK   RB   R   (   R   R   R   R   RN   (    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyt
   chunk_tRNSñ   s    4c         C   s0   t  i |  i | ƒ } t | ƒ d |  i d <| S(   Ng     jø@t   gamma(   R-   R.   R   R   RB   (   R   R   R   R   (    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyt
   chunk_gAMAÿ   s    c         C   s°   t  i |  i | ƒ } t | ƒ t | d ƒ } } t | d ƒ } | d j o9 t | d d ƒ t | d d ƒ f } | |  i d <n% | d j o | | f |  i d <n | S(	   Ni   i   i   g¦
F%uš?g      à?t   dpii    t   aspect(   R-   R.   R   R   R    t   intRB   (   R   R   R   R   t   pxt   pyt   unitR^   (    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyt
   chunk_pHYs  s    (c         C   s}   t  i |  i | ƒ } y t i | d d ƒ \ } } Wn t j
 o | } d } n X| o | |  i | <|  i | <n | S(   NR:   i   t    (   R-   R.   R   RI   t   splitt
   ValueErrorRB   RC   (   R   R   R   R   t   kt   v(    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyt
   chunk_tEXt  s     c         C   s–   t  i |  i | ƒ } t i | d d ƒ \ } } t | d ƒ } | d j o t d | ƒ ‚ n d d  k } | i | d ƒ |  i	 | <|  i
 | <| S(   NR:   i   i    s+   Unknown compression method %s in zTXt chunkiÿÿÿÿ(   R-   R.   R   RI   Rf   R    R   R;   RL   RB   RC   (   R   R   R   R   Rh   Ri   RO   R;   (    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyt
   chunk_zTXt  s    %(   R2   R3   R   RP   RT   RW   RX   RY   R[   R]   Rd   Rj   Rk   (    (    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyRA   ©   s   										c         C   s   |  d  t  j S(   Ni   (   t   _MAGIC(   t   prefix(    (    s<   /usr/local/lib/python2.6/dist-packages/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   sr  |  i  i d ƒ t j o t d ‚ n t |  i  ƒ |  _ x§ |  i i ƒ  \ } } } y |  i i | | | ƒ } WnZ t j
 o PnH t j
 o; t	 i
 o | G| G| Gd GHn t i |  i  | ƒ } n X|  i i | | ƒ q; |  i i |  _ |  i i |  _ |  i i |  _ |  i i |  _ |  i i |  _ |  i i o+ |  i i \ } } t i | | ƒ |  _ n | |  _ d  S(   Ni   s   not a PNG files	   (unknown)(   R   R   Rl   R   RA   t   pngR(   RV   t   AttributeErrorR   R&   R-   R.   R   RE   t   modeRD   t   sizeRB   t   infoRC   t   textRF   t   tileRG   t   ImagePalettet   rawt   palettet   _PngImageFile__idat(   R   R   R   R   R   t   rawmodeR)   (    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyt   _open9  s.    
	c         C   sf   |  i  d j o t d ƒ ‚ n |  i  i |  i d d d ƒ |  i i ƒ  |  i i ƒ  d |  _  d S(   s   Verify PNG files)   verify must be called directly after openi    i   i   N(   R   R    t   RuntimeErrorR   Rw   Rq   R1   R!   (   R   (    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyR1   i  s    c         C   s;   |  i  i d ƒ o |  i d |  _ n t i i |  ƒ d S(   s"   internal: prepare to read PNG fileRQ   i   N(   i   (   Ru   t   gett   decoderconfigR-   t   load_prepare(   R   (    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyR   w  s    c         C   s½   xn |  i  d j o] |  i i d ƒ |  i i ƒ  \ } } } | d j o |  i i | | | ƒ d S| |  _  q W| d j o |  i  } n t | |  i  ƒ } |  i  | |  _  |  i i | ƒ S(   s   internal: read more image datai    i   t   IDATt   DDATRe   (   R‚   Rƒ   (   R{   R   R   Rq   R#   t   min(   R   t   bytesR   R   R   (    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyt	   load_read  s     c         C   s   |  i  i ƒ  d |  _  d S(   s%   internal: finished reading image dataN(   Rq   R!   R    (   R   (    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyt   load_endš  s    (	   R2   R3   t   formatt   format_descriptionR}   R1   R   R†   R‡   (    (    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyRo   4  s   	0			c         C   s    t  |  d ?d @ƒ t  |  d @ƒ S(   Ni   iÿ   (   RK   (   RN   (    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyt   o16¤  s    c         C   sD   t  |  d ?d @ƒ t  |  d ?d @ƒ t  |  d ?d @ƒ t  |  d @ƒ S(   Ni   iÿ   i   i   (   RK   (   RN   (    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyt   o32§  s    s   L;1c         G   s„   t  i | d ƒ } |  i t t | ƒ ƒ | ƒ |  i | ƒ t i i | t i i | ƒ ƒ \ } } |  i t | ƒ t | ƒ ƒ d S(   s'   Write a PNG chunk (including CRC field)Re   N(	   RI   t   joint   writeR‹   R   R   R   R   RŠ   (   R   R   R)   t   hit   lo(    (    s<   /usr/local/lib/python2.6/dist-packages/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’   (    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyR   È  s    	c         C   s   |  i  |  i d | ƒ d  S(   NR‚   (   R’   R   (   R   R)   (    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyR   Ë  s    (   R2   R3   R   R   (    (    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyR‘   Å  s   	c         C   sÚ  |  i  } | d j ož |  i i d ƒ o d |  i d >} n d } | d j o
 d } n5 | d j o
 d } n | d j o
 d } n d } | d j o d	 | | f } q´ n |  i i d
 ƒ o |  i d
 } n d } |  i i d ƒ | f |  _ y t | \ }	 } Wn  t j
 o t d | ‚ n X| o | S| i t ƒ | | d t	 |  i
 d ƒ t	 |  i
 d ƒ | t d ƒ t d ƒ t d ƒ ƒ |  i  d j o  | | d |  i i d ƒ ƒ n |  i i d ƒ o|  i  d j oG t d t d |  i d ƒ ƒ }
 | | d t d ƒ |
 t d ƒ ƒ qÛ|  i  d j o9 t d t d |  i d ƒ ƒ }
 | | d t |
 ƒ ƒ qÛ|  i  d j oD |  i d \ } } } | | d t | ƒ t | ƒ t | ƒ ƒ qÛt d ƒ ‚ n |  i i d ƒ } | oP | | d t	 t | d d d ƒ ƒ t	 t | d d d ƒ ƒ t d ƒ ƒ n |  i i d ƒ } | o. x+ | i D] \ } } | | | | ƒ qgWn |  i i d ƒ oÞ y d d  k } | i |  i d ƒ } | i i i d | i i i d  | i i i d! | i i i d" h  ƒ i d# d$ ƒ ƒ ƒ ƒ i d% d& ƒ d'  } Wn t j
 o d$ } n X| d( t i |  i d ƒ } | | d) | ƒ n t i |  t | | ƒ d* d, |  i
 d |	 f g ƒ | | d+ d ƒ y | i ƒ  Wn n Xd  S(-   NR   t   bitsi   i   i   i   i   i   s   %s;%dt
   dictionaryRe   t   optimizes   cannot write mode %s as PNGt   IHDRi    t   PLTER   RZ   iÿ   t   tRNSR   iÿÿ  s%   cannot use transparency for this modeR^   t   pHYsg¦
F%uš?g      à?t   pnginfoRH   iÿÿÿÿt   ASCIIt   Unicodet	   Macintosht   ent   USs   ICC Profilet   latin1t   replaceiO   R8   t   iCCPR?   R,   (   i    i    (    Rs   t   encoderinfot   has_keyt   encoderconfigt	   _OUTMODESt   KeyErrort   IOErrorR   Rl   R‹   Rt   RK   t   imt
   getpalettet   maxR„   RŠ   R   R`   R5   Ru   t
   ICCProfilet   tagst   desct   encodet   ImportErrorR;   R<   R-   t   _saveR‘   t   flush(   R©   R   t   filenameR’   t   checkRs   t   nR“   R”   R|   RZ   t   redt   greent   blueR^   Ru   R   R)   R¬   t   pt   name(    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyR±   Î  sŒ    	


	 		 (.	
 n2c         K   sV   d d d „  ƒ  Y} d „  } | ƒ  } z  | |  _  t |  | d | ƒ Wd |  `  X| i 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)   (    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyR   N  s    c         S   s   |  i  i | ƒ d  S(   N(   R)   R"   (   R   R’   (    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyR"   P  s    (   R2   R3   R)   R   R"   (    (    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyR»   L  s   	c         W   si   t  i | d ƒ } t i i | t i i | ƒ ƒ \ } } t | ƒ t | ƒ } |  i | | | f ƒ d  S(   NRe   (   RI   RŒ   R   R   R   RŠ   R"   (   R   R   R)   RŽ   R   R   (    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyR"   S  s    'N(    (   R£   R±   R    R)   (   R©   t   paramsR»   R"   R   (    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyt	   getchunksI  s    			Rp   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    (   s   RGBs   RGB(   i   i   (   s   RGBs   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   (    (    (    (   t   __version__t   reRI   R   R-   Rx   R;   R   R   t   compilet   matchR   Rl   RR   R   R4   RA   Rn   Ro   RŠ   R‹   RK   R¦   R   R‘   R±   R½   t   register_opent   register_savet   register_extensiont   register_mime(    (    (    s<   /usr/local/lib/python2.6/dist-packages/PIL/PngImagePlugin.pyt   <module>"   sf   0		
L…	p		 	
	{	