
    gz                    x   d dl mZ d dlZd dlZd dlZd dlZd dl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 ddlmZmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ erddlmZ ddZ ddZ!ddZ"ddZ#ddZ$i ddde#fddde#fddd e#fd!d"d#e#fd$d%d&e fd'd(d)e#fd*d+d,e#fd-d.d/e#fd0d1d2d3d4e#fd5d6d7e#fd8d9d:e#fd;d<d=e fd>d?d@e#fdAdBdCe#fdDdEdFe#fdGdHi dIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]e fd^d_d`e$fdadbdce fdddedfe fdgdhdie#fdjdkdle fdmdndoe!fdpdqdre!fi dsdtdue!fdvdwdxe!fdydzd{e!fd|d}d~e!fddde!fddde!fddde!fddde!fddde!fddde!fddde!fddde!fddde!fddde!fddddddddddddddddddde"fdZ%ddZ& G d dej                  Z'ddZ(ddZ)dddddddZ*dZ+d dddZ,ddÄZ-ddȄZ.ddɄZ/	 ddd̄Z0 ej1        e'j2        e0e&            ej3        e'j2        e.            ej4        e'j2        g d͢            ej5        e'j2        dΦ           dS )    )annotationsN)IOTYPE_CHECKINGAny   )Image	ImageFile)i16be)i32be)o8)o16be)	deprecate)presetsMpoImageFileselfJpegImageFilemarkerintreturnNonec                    t          | j                            d                    dz
  }t          j        | j        |           d S )N   )i16fpreadr	   
_safe_read)r   r   ns      O/var/www/html/ai-engine/env/lib/python3.11/site-packages/PIL/JpegImagePlugin.pySkipr    >   s;    DGLLOOq A!$$$$$    c                   t          | j                            d                    dz
  }t          j        | j        |          }d|dz  z  }|| j        |<   | j                            ||f           |dk    r|d d         dk    rt          |d          x| j        d<   }t          |d	          | j        d
<   	 |d         }t          |d          t          |d          f}|dk    r
|| j        d<   || j        d<   || j        d<   d S # t          $ r Y d S w xY w|dk    rf|d d         dk    rXd| j        v r| j        dxx         |dd          z  cc<   d S || j        d<   | j                                        |z
  dz   | _        d S |dk    r4|d d         dk    r&|                    dd          d         | j        d<   d S |dk    r|d d         dk    r|| j        d<   d S |dk    r*|d d         dk    r| j                            |           d S |dk    r|d d          d!k    rd }| j                            d"i           }	|||dz            d#k    r	 |dz  }t          ||          }
|dz  }||         }|d|z   z  }||dz  z  }t!          ||          }|dz  }||||z            }|
d$k    rIt!          |d%          d&z  t          |d          t!          |d          d&z  t          |d          d'|	|
<   n||	|
<   ||z  }||dz  z  }n# t"          j        $ r Y d S w xY w|||dz            d#k    d S d S |d(k    rL|d d         d)k    r>t          |d          | j        d*<   	 |d+         }|| j        d,<   d S # t&          $ r Y d S w xY w|dk    rI|d d         d-k    r=|dd          | j        d.<   | j                                        |z
  dz   | j        d/<   d S d S d S )0Nr   zAPP%d        s   JFIF   jfif   jfif_version      
   r   dpi	jfif_unitjfif_density     s   Exif  exif      http://ns.adobe.com/xap/1.0/     xmp  s   FPXR flashpix      ICC_PROFILE      s   Photoshop 3.0 	photoshops   8BIMi  r   i   )XResolutionDisplayedUnitsXYResolutionDisplayedUnitsY  s   Adobeadobe   adobe_transforms   MPF mpmpoffset)r   r   r   r	   r   appapplistappendinfodivmod	Exceptiontell_exif_offsetspliticclist
setdefaulti32structerror
IndexError)r   r   r   srH   versionr.   r/   offsetr=   codename_lensizedatarE   s                  r   APPr^   C   s   
 	DGLLOOq ATWa((A
Vb[
!CDHSMLa!!!AbqbEW,,&)!Qii/	&G$*7C$8$8	.!		5!Iq!99c!Rjj0L A~~#/	% %.DIk"(4DIn%%%  	 	 	DD	 
6		ae{22TYIf122& !DIf $ 2Q 6D	6		af(KKK777A..q1	%	6		aey00 !	*	6		af(888 	A	6		af(<<<I((b99	!#$//!1f~~!V9!h,&&1*$1f~~!&4-/06>>'*4||e';+.tQ<<'*4||e';+.tR==	' 'IdOO '+IdO$&1*$<   5 !#$//////: 
6		aex// AYY	'	;eO ,;DI'(((  	 	 	DD	 
6		aex//ABB%	$ !% 2Q 6	* 
	//s7   :(D 
DDB5L
 
LL"M6 6
NNc                    t          | j                            d                    dz
  }t          j        | j        |          }|| j        d<   || j        d<   | j                            d|f           d S )Nr   commentCOM)	r   r   r   r	   r   rK   rH   rI   rJ   )r   r   r   rW   s       r   ra   ra      sm     	DGLLOOq ATWa((ADIiDHUOL
#####r!   c                   t          | j                            d                    dz
  }t          j        | j        |          }t          |d          t          |d          f| _        |d         | _        | j        dk    rd| j         d}t          |          |d         | _        | j        dk    rd	| _	        n@| j        dk    rd
| _	        n-| j        dk    rd| _	        nd| j         d}t          |          |dv rdx| j
        d<   | j
        d<   | j        r|| j                                         | j        d         d         t          | j                  k    r'd | j        D             }d                    |          }nd }|| j
        d<   g | _        t          dt          |          d          D ]K}|||dz            }| j                            |d         |d         dz  |d         dz  |d         f           Ld S )Nr      r   r   r+   zcannot handle z-bit layersr&   LRGBr%   CMYKz-layer images)        progressiveprogression   c                "    g | ]}|d d         S )r<   N ).0ps     r   
<listcomp>zSOF.<locals>.<listcomp>   s     444!qv444r!   r!   icc_profiler1      r#   )r   r   r   r	   r   _sizebitsSyntaxErrorlayers_moderK   rQ   sortlenjoinrangelayerrJ   )	r   r   r   rW   msgprofilers   its	            r   SOFr      s    	DGLLOOq ATWa((AQC1II%DJ!DIyA~~5ty555#A$DK{a

			

			

9t{999#111>??	- 49]#;| 	<?2#dl"3"33344t|444G((7++KKK#.	- 1c!ffa   ? ?a!a%iL
1Q41QqTBY!=>>>>? ?r!   c                @   t          | j                            d                    dz
  }t          j        | j        |          }t          |          r|d         }|dz  dk    rdnd}d|dz  z   }t          |          |k     rd}t          |          t          j        |dk    rdnd|d|                   t          j	        d	k    r|dk    r
                                 fd
t          D             | j        |dz  <   ||d          }t          |          d S d S )Nr   r   rt   r   @   zbad quantization table markerBHlittlec                     g | ]
}|         S ro   ro   )rp   r   r]   s     r   rr   zDQT.<locals>.<listcomp>   s    $C$C$CT!W$C$C$Cr!   r#   )r   r   r   r	   r   r{   rw   arraysys	byteorderbyteswapzigzag_indexquantization)	r   r   r   rW   v	precision	qt_lengthr   r]   s	           @r   DQTr      s2    	DGLLOOq ATWa((A
a&& aDr'Q,,AAQ		B&	q66I1Cc"""{)q..33c1Qy[>JJ=H$$QMMOOO$C$C$C$Cl$C$C$C!b&!ijjM a&&     r!   i  SOF0zBaseline DCTi  SOF1zExtended Sequential DCTrg   SOF2zProgressive DCTi  SOF3zSpatial losslessi  DHTzDefine Huffman tablei  SOF5zDifferential sequential DCTrh   SOF6zDifferential progressive DCTi  SOF7zDifferential spatiali  )JPG	ExtensionNi  SOF9zExtended sequential DCT (AC)ri   SOF10zProgressive DCT (AC)i  SOF11zSpatial lossless DCT (AC)i  DACz%Define arithmetic coding conditioningi  SOF13z Differential sequential DCT (AC)rj   SOF14z!Differential progressive DCT (AC)i  SOF15zDifferential spatial (AC)i  )RST0z	Restart 0Ni  )RST1z	Restart 1Ni  )RST2z	Restart 2Ni  )RST3z	Restart 3Ni  )RST4z	Restart 4Ni  )RST5z	Restart 5Ni  )RST6z	Restart 6Ni  )RST7z	Restart 7Ni  )SOIzStart of imageNi  )EOIzEnd of imageN  SOSzStart of scani  r   zDefine quantization tablei  DNLzDefine number of linesi  DRIzDefine restart intervali  DHPzDefine hierarchical progressioni  EXPzExpand reference componentr$   APP0zApplication segment 0r0   APP1zApplication segment 1r7   APP2zApplication segment 2i  APP3zApplication segment 3i  APP4zApplication segment 4i  APP5zApplication segment 5i  APP6zApplication segment 6i  APP7zApplication segment 7i  APP8zApplication segment 8i  APP9zApplication segment 9i  APP10zApplication segment 10i  APP11zApplication segment 11i  APP12zApplication segment 12r;   APP13zApplication segment 13rB   APP14zApplication segment 14i  APP15zApplication segment 15i  )JPG0zExtension 0Ni  )JPG1zExtension 1Ni  )JPG2zExtension 2N)JPG3zExtension 3N)JPG4zExtension 4N)JPG5zExtension 5N)JPG6zExtension 6N)JPG7zExtension 7N)JPG8zExtension 8N)JPG9zExtension 9N)JPG10zExtension 10N)JPG11zExtension 11N)JPG12zExtension 12N)JPG13zExtension 13Nra   Comment)i  i  i  i  i  i  i  i  i  i    i  prefixbytesboolc                    | d d         dk    S )Nrc   s   ro   )r   s    r   _acceptr   C  s    "1":((r!   c                  V    e Zd ZdZdZddZdd	ZddZddZddZ	ddZ
ddZddZdS )r   JPEGzJPEG (ISO 10918)r   r   c                `   | j                             d          }t          |          sd}t          |          d}dx| _        | _        d| _        g | _        i | _        i | _	        i | _
        i | _        g | _        g | _        	 |d         }|dk    r-|| j                             d          z   }t          |          }n| j                             d          }W|t          v r|t          |         \  }}}| || |           |dk    r<| j        }| j        d	k    rd
}t#          j        dd| j        z   d|df          g| _        nV| j                             d          }n9|dv rd}n2|dk    r| j                             d          }nd}t          |          |                                  d S )Nrc   znot a JPEG file   r   T   r   r   rf   CMYK;Ijpegr   r    >     r   i   zno marker found)r   r   r   rw   rv   rx   rO   r~   _huffman_dc_huffman_acr   rH   rI   rQ   r   MARKERmoder	   _Tiler\   tile_read_dpi_from_exif)r   rW   r   r   namedescriptionhandlerrawmodes           r   _openzJpegImageFile._openP  s   GLLOOqzz 	##Cc""" #$#	DK 79
+-+-24%'02$&	'!ADyyQ'FF GLLOOF{{-3AY*k7&GD!$$$;;"iGyF**"*!0BAQS}UU!DI GLLOOk!!fGLLOO'!#&&&?	'B 	  """""r!   r   strr   c                n    |dv r#t          |d           t          | d|z             S t          |          )N)
huffman_ac
huffman_dcr9   _)r   getattrAttributeError)r   r   s     r   __getattr__zJpegImageFile.__getattr__  s@    ///dB4t,,,T"""r!   
read_bytesr   r   c                    | j                             |          }|s%t          j        rt	          | d          s	d| _        dS |S )z
        internal: read more image data
        For premature EOF and LOAD_TRUNCATED_IMAGES adds EOI marker
        so libjpeg can finish decoding
        _endedTs   )r   r   r	   LOAD_TRUNCATED_IMAGEShasattrr   )r   r   rW   s      r   	load_readzJpegImageFile.load_read  sM     GLL$$ 	Y4 	WT8=T=T 	 DK;r!   r   
str | Noner\   tuple[int, int] | None0tuple[str, tuple[int, int, float, float]] | Nonec                   t          | j                  dk    rd S | j        rd S | j        d         \  }}}}d}| j        }t	          |t
                    sJ |d         dk    r|dv r|| _        |df}|rt          | j        d         |d         z  | j        d         |d         z            }dD ]
}	||	k    r n|J |d         |d         |d         |d         z
  |	z   dz
  |	z  |d         z   |d         |d         z
  |	z   dz
  |	z  |d         z   f}| j        d         |	z   dz
  |	z  | j        d         |	z   dz
  |	z  f| _        |	}t          j
        ||||          g| _        |df| _        dd|d         |z  |d         |z  f}
| j        |
fS )	Nr   r   re   )rd   YCbCrr   )r+   r%   r   r   r   rc   )r{   r   decoderconfigr\   
isinstancetuplery   minru   r	   r   r   )r   r   r\   deoascaleoriginal_sizerW   boxs              r   draftzJpegImageFile.draft  s    ty>>Q4  	4Yq\
1a	!U#####Q45==T^33DJbA 		!Q/1a1HIIE!  A::E ===!!1!q1$*QqT11!q1$*QqT1	A  9Q<!+a/A5	!q8H18LQR7RSDJE_Q1a001	#QZ!]1%-}Q/?%/GHy#~r!   c                   t          j                    \  }}t          j        |           t          j                            | j                  rt          j        dd|| j        g           n7	 t          j	        |           n# t          $ r Y nw xY wd}t          |          	 t          j        |          5 }|                                 |j        | _        d d d            n# 1 swxY w Y   	 t          j	        |           n:# t          $ r Y n.w xY w# 	 t          j	        |           w # t          $ r Y w w xY wxY w| j        j        | _        | j        j        | _        g | _        d S )Ndjpeg-outfilezInvalid Filename)tempfilemkstemposclosepathexistsfilename
subprocess
check_callunlinkOSError
ValueErrorr   openloadimr   ry   r\   ru   r   )r   fr  r   _ims        r   
load_djpegzJpegImageFile.load_djpeg  s    "$$4
7>>$-(( 		"!7Jdm"LMMMM	$    %CS//!	D!! !S


&! ! ! ! ! ! ! ! ! ! ! ! ! ! !	$   	$    W\
W\
			sx   .B 
BB%D 9!C&D &C**D -C*.D 2D 
DDD>D.-D>.
D;8D>:D;;D>dict[int, Any] | Nonec                     t          |           S N)_getexifr   s    r   r'  zJpegImageFile._getexif  s    ~~r!   c                   d| j         v s	d| j         vrd S 	 |                                 }|d         }|d         }	 t          |d                   |d         z  }n# t          $ r |}Y nw xY wt	          j        |          rd}t          |          |dk    r|d	z  }||f| j         d<   d S # t          j        t          t          t          t          t          f$ r d
| j         d<   Y d S w xY w)Nr-   r2   i(  i  r   r   zDPI is not a numberrc   gRQ@)H   r*  )rK   getexiffloat	TypeErrormathisnanr  rT   rU   KeyErrorrw   ZeroDivisionError)r   r2   resolution_unitx_resolutionr-   r   s         r   r   z!JpegImageFile._read_dpi_from_exif  s   DIty!8!8F	&<<>>D"6lO<L#LO,,|A> # # #"#z# &+ oo%!##t"CxDIeL
 	& 	& 	&  &DIe	&s4   $B* A B* A)&B* (A))?B* *8C&%C&c                     t          |           S r&  )_getmpr(  s    r   r5  zJpegImageFile._getmp  s    d||r!   N)r   r   )r   r   r   r   )r   r   r   r   )r   r   r\   r   r   r   )r   r$  )__name__
__module____qualname__formatformat_descriptionr   r   r   r  r#  r'  r   r5  ro   r!   r   r   r   L  s        F+6# 6# 6# 6#p# # # #    & & & &P   >   & & & &:     r!   r$  c                d    d| j         vrd S |                                                                 S )Nr2   )rK   r+  _get_merged_dictr(  s    r   r'  r'  	  s.    TYt<<>>**,,,r!   c           	        	 | j         d         }n# t          $ r Y d S w xY wt          j        |          }|                    d          }|d d         dk    rdnd}ddlm} 	 |                    |          }|                    |j	                   |
                    |           t          |          }n$# t          $ r}d	}	t          |	          |d }~ww xY w	 |d
         }
n$# t          $ r}d}	t          |	          |d }~ww xY wg }	 |d         }t          d|
          D ]}t          j        | d||dz            }d}t          t#          ||                    }t%          |d         dz            t%          |d         dz            t%          |d         dz            |d         dz  dz	  |d         dz  dz	  |d         dz  d}|d         dk    rd|d<   nd}	t          |	          ddd d!d"d#d$d%}|                    |d&         d'          |d&<   ||d<   |                    |           ||d<   n$# t          $ r}d(}	t          |	          |d }~ww xY w|S ))NrF   r+   r%   s   MM *><r   )TiffImagePluginz)malformed MP Index (unreadable directory)  z(malformed MP Index (no number of images)i  r   LLLHHrt   )	AttributeSize
DataOffsetEntryNo1EntryNo2rC  l        i   @i    i      i      i )DependentParentImageFlagDependentChildImageFlagRepresentativeImageFlagReservedImageDataFormatMPTyperN  r   z!unsupported picture format in MPO	Undefinedz Large Thumbnail (VGA Equivalent)z$Large Thumbnail (Full HD Equivalent)zMulti-Frame Image (Panorama)zMulti-Frame Image: (Disparity)z Multi-Frame Image: (Multi-Angle)zBaseline MP Primary Image)r   i  i  i  i  i  i   rO  Unknownz!malformed MP Index (bad MP Entry))rK   r0  ioBytesIOr   r   r@  ImageFileDirectory_v2seeknextr  dictrM   rw   r}   rT   unpack_fromzipr   getrJ   )r   r]   file_contentshead
endiannessr@  rK   rF   r  r   quant	mpentriesrawmpentriesentrynumunpackedentrylabelsmpentrympentryattr	mptypemaps                      r   r5  r5    s   y   ttJt$$Ma  DRaR$777SJ!!!!!!&44T::49%%%		-   $ZZ & & &9#A%&&6
 & & &8#A%& I$&&za 	& 	&H".$$$lHrM M QF3v}5566G,01E1Q,R,R+/0D0P+Q+Q+/0D0P+Q+Q$[1W="D$+K$8G$D#K!+.; K ,-2217-..9!#&&&%<@8:<5 I %.MM+h2G$S$SK!#.GK W%%%%6

 & & &1#A%& IsV    
#AB7 7
CCCC% %
D/DDD/H< <
IIIrd   re   r   r  )1rd   re   RGBXrf   r  )@r   r   r&   r1   r<   r#   rH     r   r%   r*   rm   rt      r3   *   rc   r+   r9            )   +   	   rD      rI     (   ,   5   r,             '   -   4   6         !   &   .   3   7   <      "   %   /   2   8   ;   =   #   $   0   1   9   :   >   ?   r   ))r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   r   Image.Imagec                    t          | t                    r	| j        dv rdS | j        d         dd         | j        d         dd         z   | j        d         dd         z   }t                              |d          S )N)r   r%   r   r   rc   r   )r  r   rx   r~   	samplingsrZ  )r   samplings     r   get_samplingr  {  sw     b-(( BI,?,?rx{1Q3"(1+ac"22RXa[15EEH==2&&&r!   r   	IO[bytes]r  str | bytesc                   | j         dk    s| j        dk    rd}t          |          	 t          | j                 }n-# t
          $ r }d| j         d}t          |          |d }~ww xY w| j        }d |                    dd          D             }|                    dd	          }|                    d
d	          }	|                    d          }
|dk    rd	}d}	d}
n|t          v r;t          |         }d	}|                    d
d	          }	|                    d          }
nt          |t                    sd}t          |          |	t          v r!t          |	                             d
d	          }	t          |
t                    r)|
t          v r t          |
                             d          }
|	dk    rd}	nL|	dk    rd}	nC|	dk    rd}	n:|	dk    rd}	n1|	dk    r+| j        dk    rd}t          |          t          |           }	d8d}|
dk    r-| j        dk    rd}t          |          t          | dd           }
 ||
          }
|                    dd          }d}|                    d| j                            d                    }|r[d}||z
  }t#          |          |k    rd }t          |          t%          d|z   t#          |          z             }|d!|z   d"z   |z   z  }|                    d#          }|rd$}||z
  }g }|r)|                    |d |                    ||d          }|)d}|D ]d}t%          d|z   t#          |          z             }|d%|z   d&z   t)          |          z   t)          t#          |                    z   |z   z  }|dz  }e|                    d'| j                            d'                    }|                    d(d)          p|                    d*d)          }|                    d+d)          }|                    d,d          }t          |t*          j                  r|                                }t#          |          |k    rd-}t          |          |||                    d.d          ||                    d/d)          |                    d0d          |d         |d         |	|                    d1d          |                    d2d          |
|||f| _        d}|s|r| j        d3k    rd4| j        d         z  | j        d         z  }nF|d5k    s|d	k    rd| j        d         z  | j        d         z  }n| j        d         | j        d         z  }|r|t#          |          d6z   z  }|r|t#          |          dz   z  }n1t5          |t#          |          d6z   t#          |          dz             }t7          j        | |t7          j        d7d| j        z   d|          g|           d S )9Nr   z cannot write empty image as JPEGzcannot write mode z as JPEGc                ,    g | ]}t          |          S ro   )round)rp   xs     r   rr   z_save.<locals>.<listcomp>  s    
5
5
5588
5
5
5r!   r-   r   qualityr  subsamplingqtableskeepr   zInvalid quality settingz4:4:4z4:2:2r   z4:2:0r   z4:1:1r   z3Cannot use 'keep' when original image is not a JPEGKstr | tuple[list[int], ...] | list[list[int]] | dict[int, list[int]] | Noner   list[list[int]] | Nonec                      S t           t                    rn	 d                                  D             fdt          dt	                    d          D              n$# t
          $ r}d}t          |          |d }~ww xY wt           t          t          t          f          rt           t                    r) fdt          t	                               D              n$t           t                    rt                      dt	                     cxk     rdk     sn d}t          |          t                     D ]u\  }}	 t	          |          dk    rd}t          |          t          j        d	|          }t          |           |<   R# t          $ r}d}t          |          |d }~ww xY w S d S )
Nc                    g | ]B}|                     d d          d                                          D ]}t          |          CS )#r   r   )rP   r   )rp   linenums      r   rr   z3_save.<locals>.validate_qtables.<locals>.<listcomp>  sd       #zz#q11!4::<<   HH   r!   c                *    g | ]}||d z            S )r   ro   )rp   rW   liness     r   rr   z3_save.<locals>.validate_qtables.<locals>.<listcomp>  s&    OOO5QV,OOOr!   r   r   zInvalid quantization tablec                (    g | ]}|v |         S ro   ro   )rp   keyr  s     r   rr   z3_save.<locals>.validate_qtables.<locals>.<listcomp>  s)       %(3'>>GCL>>>r!   r&   z$None or too many quantization tablesr   )r  r   
splitlinesr}   r{   r  r  listrW  	enumerater-  r   )r  r  r   idxtabletable_arrayr  s   `     @r   validate_qtablesz_save.<locals>.validate_qtables  s   
 ?Ngs## 	P
P  ' 2 2 4 4   POOOeAs5zz26N6NOOO	  - - -2 oo1,-
 gtT233 	'4(( (   ,1#g,,,?,?   GU++ (w--G((((q((((< oo%'00 
5 
5
U	55zzR'':'nn,"'+c5"9"9K
 $(#4#4GCLL	 ! 1 1 16C$S//q01
 N+	 	s/   A& &
B0BB9F
F>'F99F>extrar!   r   r6   r3   zXMP data is too longs   r4   rs   r<   s   r:   r`   rk   Frl   optimizer2   zEXIF data is too longsmoothkeep_rgb
streamtyperestart_marker_blocksrestart_marker_rowsrf   r%   _   r&   r   )r  r  r   r  )widthheightr  RAWMODEr   r0  r  encoderinforZ  r   r  r   r   r9  r  r   rK   r{   o16rJ   r   r   Exiftobytesencoderconfigr\   maxr	   _saver   )r   r   r  r   r   r  rK   r-   r  r  r  presetr  r  MAX_BYTES_IN_MARKERr6   overhead_lenmax_data_bytes_in_markerr\   rs   markersr   r   r`   rk   r  r2   bufsizes                               r   r  r    s   	x1}}	Q0oo""'" " " "427444cll!" >D
5
5TXXeV44
5
5
5Chhy"%%G((="--Khhy!!G&	G		!jj33**^,,%% ;'oo'!!!+.22="EEKgs## 	;7(:(:g&**>::Gg									 			9GCS//!"2&&( ( ( (T &9GCS//!"nd33w''GHHWc""E
((5"'++e,,
-
-C
 P#6#E s88...(CS//!1|#c#hh.//t#&IICOO((=))K #6#E  	ANN;'@(@'@ABBB%&>&?&?@K  	A  
	 
	Fq<'#f++566D"# Q%% S\\""	#
 E FAAhhy"'++i"8"899G
 ((=%00RDHH]E4R4RKxx
E**H88FC  D$
## ||~~
4yy&&&%oo 	1U##q!!AA(!,,&**B, G >; >7f"'!*nrwqz1GG]]gmm"'!*nrwqz1GGgaj271:-G 	%s4yy1}$G 	&s5zzA~%G gs4yy1}c%jj1n==O
B"')91gFFG    s   < 
A&A!!A&c                    |                                  }t          j        dd||g           	 t          j        |           d S # t
          $ r Y d S w xY w)Ncjpegr  )_dumpr  r  r  r  r  )r   r   r  r  s       r   _save_cjpegr  P  sf    xxzzH7J(CDDD
	(   s   A 
AAstr | bytes | NoneJpegImageFile | MpoImageFilec                >   t          | |          }	 |                                }|>|d         dk    r2|j        D ]\  }}|dk    rd|v r|c S ddlm}  |j        ||          }n6# t          t          f$ r Y n#t          $ r t          j
        d           Y nw xY w|S )NrA  r   r   s    hdrgm:Version="r   zTImage appears to be a malformed MPO file, it will be interpreted as a base JPEG file)r   r5  rI   MpoImagePluginr   adoptr-  rV   rw   warningswarn)r   r  r   mpheadersegmentcontentr   s          r   jpeg_factoryr  \  s     
r8	$	$B
99;;HUOa$7$7$&J   f$$)<)G)GIII444444 $#B11Bz"    
 
 
.	
 	
 	
 	
 	


 Is   ;A' A' 'B:BB)z.jfifz.jpez.jpgz.jpegz
image/jpeg)r   r   r   r   r   r   )r   r   r   r   )r   r   r   r$  )r   r  r   r   )r   r  r   r  r  r  r   r   r&  )r   r  r  r  r   r  )6
__future__r   r   rR  r.  r  rT   r  r   r  r  typingr   r   r   r   r   r	   _binaryr
   r   r   rS   r   r   r  
_deprecater   JpegPresetsr   r  r   r    r^   ra   r   r   r   r   r   r'  r5  r  r   r  r  r  r  r  register_openr9  register_saveregister_extensionsregister_mimero   r!   r   <module>r     sj  D # " " " " "  				  				      



   ) ) ) ) ) ) ) ) ) )         ! ! ! ! ! ! ! ! ! ! ! !       ! ! ! ! ! ! ! ! ! ! ! !             -,,,,,,% % % %
d7 d7 d7 d7N$ $ $ $-? -? -? -?`   6@

V^S)@

V.4@
 V&,@
 V'-	@

 U*D1@
 V2C8@
 V3S9@
 V+S1@
 &@
 V3S9@
 W,c2@
 W137@
 U;TB@
 W8#>@
 W93?@
  W137!@
" '#@
 @
$ '%@
& ''@
( ')@
* '+@
, '-@
. '/@
0 '1@
2 +3@
4 )5@
6 UOT*7@
8 U/59@
: U,d3;@
< U-t4=@
> U5s;?@
@ U0$7A@
B V,c2C@
D V,c2E@
 @
 @
F V,c2G@
H V,c2I@
J V,c2K@
L V,c2M@
N V,c2O@
P V,c2Q@
R V,c2S@
T V,c2U@
V W.4W@
X W.4Y@
Z W.4[@
\ W.4]@
^ W.4_@
` W.4a@
b )c@
d )e@
f )g@
 @
h *))))))++++Is#@
 @
 @
F) ) ) )z z z z zI' z z zz- - - -I I I I` 
	 	  	' ' ' 'D D D DN    37    <  M(, @ @ @  M(% 0 0 0  -.0R0R0R S S S  M(, 7 7 7 7 7r!   