
    :hY|                       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 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 d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d,d-d.d/d0e#fd1d2d3e#fd4d5d6e#fd7d8d9e fd:d;d<e#fd=d>d?e#fd@dAdBe#fdCdDi dEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYe fdZd[d\e$fd]d^d_e fd`dadbe fdcdddee#fdfdgdhe fdidjdke!fdldmdne!fi dodpdqe!fdrdsdte!fdudvdwe!fdxdydze!fd{d|d}e!fd~dde!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/	 d	 	 	 	 	 ddZ0 ejb                  e'jd                  e0e&        ejf                  e'jd                  e.        ejh                  e'jd                  g d        ejj                  e'jd                  d       y)    )annotationsN)IOAny   )Image	ImageFile)i16be)i32be)o8)o16be)	deprecate)presetsFMpoImageFileJpegImageFilec                    t        | j                  j                  d            dz
  }t        j                  | j                  |       y )N   )i16fpreadr   
_safe_read)selfmarkerns      Q/var/www/urcfiles/bundle/venv/lib/python3.12/site-packages/PIL/JpegImagePlugin.pySkipr   ?   s1    DGGLLOq A!$    c                   t        | j                  j                  d            dz
  }t        j                  | j                  |      }d|dz   }|| j
                  |<   | j                  j                  ||f       |dk(  r|j                  d      rt        |d      x| j                  d<   }t        |d      | j                  d	<   	 |d
   }t        |d      t        |d      f}|dk(  r|| j                  d<   n$|dk(  rt        d |D              | j                  d<   || j                  d<   || j                  d<   y |dk(  ro|j                  d      r^d| j                  v r| j                  dxx   |dd  z  cc<   y || j                  d<   | j                  j                         |z
  dz   | _        y |dk(  r4|j                  d      r#|j                  dd      d   | j                  d<   y |dk(  r!|j                  d      r|| j                  d<   y |dk(  r-|j                  d      r| j                   j                  |       y |dk(  r|j                  d      rd}| j                  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(  r9t%        |d$      d%z  t        |d!      t%        |d      d%z  t        |d&      d'|	|
<   n||	|
<   ||z  }||dz  z  }|||d!z    d"k(  ry y |d(k(  r@|j                  d)      r/t        |d      | j                  d*<   	 |d+   }|| j                  d,<   y |dk(  rR|j                  d-      r@|d!d  | j                  d.<   | j                  j                         |z
  d!z   | j                  d/<   y y y # t        $ r Y y w xY w# t&        j(                  $ r Y y w xY w# t*        $ r Y y w xY w)0Nr   APP     s   JFIF   jfif   jfif_version      
   r   dpic              3  &   K   | ]	  }|d z    yw)RQ@N ).0ds     r   	<genexpr>zAPP.<locals>.<genexpr>`   s     (H<aT<s   	jfif_unitjfif_density  s   Exif  exif      http://ns.adobe.com/xap/1.0/     xmp  s   FPXR flashpix   ICC_PROFILE   s   Photoshop 3.0    	photoshop   s   8BIMi  r   i      )XResolutionDisplayedUnitsXYResolutionDisplayedUnitsY  s   Adobeadobe   adobe_transforms   MPF mpmpoffset)r   r   r   r   r   appapplistappend
startswithinfodivmodtuple	Exceptiontell_exif_offsetspliticclist
setdefaulti32structerror
IndexError)r   r   r   srJ   versionr0   r1   offsetr=   codename_lensizedatarG   s                  r   r   r   D   s   
 	DGGLLOq ATWWa(A}
CDHHSMLLa!ALL1&)!Qi/		&G$*7C$8		.!	5!Iq!9c!Rj0L A~#/		% a#((H<(H#H		% %.DIIk"(4DIIn%	6	all;7TYYIIf12& !DIIf $ 2Q 6D	6	all+NO777A.q1		%	6	all95 !		*	6	all+;< 	A	6	all+?@II((b9	!$/!1f~!V9!h,&&1*$1f~!&4-06>'*4|e';+.tQ<'*4|e';+.tR=	'IdO '+IdO$&1*$3 !$/: 
6	all84 AY		'	;eO ,;DII'(	6	all84AB%		$ !% 2Q 6		* 5	[  		B <<   		s7   O  BO O(  	OOO%$O%(	O43O4c                   t        | j                  j                  d            dz
  }t        j                  | j                  |      }|| j
                  d<   || j                  d<   | j                  j                  d|f       y )Nr   commentCOM)	r   r   r   r   r   rN   rJ   rK   rL   )r   r   r   r[   s       r   rd   rd      sf     	DGGLLOq ATWWa(ADIIiDHHUOLL
#r   c                &   t        | j                  j                  d            dz
  }t        j                  | j                  |      }t        |d      t        |d      f| _        |d   | _        | j                  dk7  rd| j                   d}t        |      |d   | _        | j                  dk(  rd	| _	        nI| j                  dk(  rd
| _	        n2| j                  dk(  rd| _	        nd| j                   d}t        |      |dv rdx| j                  d<   | j                  d<   | j                  r| j                  j                          | j                  d   d   t        | j                        k(  r.| j                  D cg c]  }|dd  	 }}dj                  |      }nd }|| j                  d<   g | _        t        dt        |      d      D ];  }|||dz    }	| j                   j#                  |	d   |	d   dz  |	d   dz  |	d   f       = y c c}w )Nr      r   r   r'   zcannot handle z-bit layersr"   LRGBr>   CMYKz-layer images)        progressiveprogression   r<   r   icc_profiler4      r    )r   r   r   r   r   _sizebitsSyntaxErrorlayers_moderN   rU   sortlenjoinrangelayerrL   )
r   r   r   r[   msgpprofilerq   its
             r   SOFr      s    	DGGLLOq ATWWa(AQC1I%DJ!DIyyA~tyyk5#A$DK{{a
		
		
t{{m=9#11>??		- 499]#;||<<?2#dll"33'+||4|!qv|G4((7+KK#.		- 1c!fa a!a%L

1Q41QqTBY!=> ! 5s   Hc                   t        | j                  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kD  r|j                          t        D 	cg c]  }	||	   	 c}	| j                  |d
z  <   ||d  }t        |      ry y c c}	w )Nr   r   rr   r   @   zbad quantization table markerBHlittler    )r   r   r   r   r   ry   ru   arraysys	byteorderbyteswapzigzag_indexquantization)
r   r   r   r[   v	precision	qt_lengthr}   ra   r   s
             r   DQTr      s     	DGGLLOq ATWWa(A
a&aDr'Q,AQ		B&	q6I1Cc""{{)q.3c1Qy>J==H$QMMO6B$ClT!Wl$C!b&!ijM a& %Ds   D	i  SOF0zBaseline DCTi  SOF1zExtended Sequential DCTrj   SOF2zProgressive DCTi  SOF3zSpatial losslessi  DHTzDefine Huffman tablei  SOF5zDifferential sequential DCTrk   SOF6zDifferential progressive DCTi  SOF7zDifferential spatiali  )JPG	ExtensionNi  SOF9zExtended sequential DCT (AC)rl   SOF10zProgressive DCT (AC)i  SOF11zSpatial lossless DCT (AC)i  DACz%Define arithmetic coding conditioningi  SOF13z Differential sequential DCT (AC)rm   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 0r2   APP1zApplication segment 1r8   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 13rD   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 13Nrd   Comment)i  i  i  i  i  i  i  i  i  i    i  c                $    | j                  d      S )Ns   )rM   )prefixs    r   _acceptr   G  s    _--r   c                       e Zd ZdZdZddZddZd fdZd fdZddZ		 	 	 	 	 	 ddZ
dd	Zdd
ZddZddZ xZS )r   JPEGzJPEG (ISO 10918)c                B   | j                   j                  d      }t        |      sd}t        |      d}dx| _        | _        d| _        g | _        i | _        i | _	        i | _
        i | _        g | _        g | _        	 |d   }|dk(  r*|| j                   j                  d      z   }t        |      }n| j                   j                  d      }Q|t        v rt        |   \  }}}|	 || |       |dk(  rK| j                   }| j                   dk(  rd	}t#        j$                  d
d| j&                  z   d|df      g| _        nS| j                   j                  d      }n5|dv rd}n.|dk(  r| j                   j                  d      }nd}t        |      | j+                          y )Nrf   znot a JPEG file   r      r   r   ri   CMYK;Ijpegr   r    >     r   i   zno marker found)r   r   r   ru   rt   rv   rS   r|   _huffman_dc_huffman_acr   rJ   rK   rU   r   MARKERmoder   _Tiler`   tile_read_dpi_from_exif)r   r[   r}   r   namedescriptionhandlerrawmodes           r   _openzJpegImageFile._openT  s   GGLLOqz#Cc"" #$#	DK 79
+-+-24%'02$&!ADyQ'F GGLLOF{-3AY*k7&D!$;"iiGyyF*"*!0BAQS}U!DI GGLLOk!fGGLLO'!#&&? B 	  "r   c                V    |dv rt        |d       t        | d|z         S t        |      )N)
huffman_ac
huffman_dcr?   _)r   getattrAttributeError)r   r   s     r   __getattr__zJpegImageFile.__getattr__  s1    //dB4t,,T""r   c                R    t         |          | j                  | j                  gz   S N)super__getstate__rv   r|   )r   	__class__s    r   r   zJpegImageFile.__getstate__  s#    w#%djj(AAAr   c                H    |dd  \  | _         | _        t        |   |       y )Nr4   )rv   r|   r   __setstate__)r   stater   s     r   r   zJpegImageFile.__setstate__  s$    "')TZU#r   c                    | j                   j                  |      }|s$t        j                  rt	        | d      sd| _        y|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   
read_bytesr[   s      r   	load_readzJpegImageFile.load_read  s;     GGLL$Y44WT8=T DKr   c                   t        | j                        dk7  ry | j                  ry | 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\  s	 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   rh   )rg   YCbCrr   )r'   r>   r   r   r   rf   )ry   r   decoderconfigr`   
isinstancerP   rw   minrs   r   r   r   )r   r   r`   r.   eoascaleoriginal_sizer[   boxs              r   draftzJpegImageFile.draft  s    tyy>Q YYq\
1a		!U###Q45=T^3DJbA		!Q/1a1HIE!A: " = =!!1!q1$*QqT11!q1$*QqT1	A  99Q<!+a/A5		!q8H18LQR7RSDJE__Q1a01	#QZ!]1%-}Q/?%/GHyy#~r   c                
   t        j                         \  }}t        j                  |       t        j                  j                  | j                        r$t        j                  dd|| j                  g       n#	 t        j                  |       d}t        |      	 t        j                  |      5 }|j                          |j                  | _        d d d        	 t        j                  |       | j                  j                   | _        | j                  j$                  | _        g | _        y # t        $ r Y w xY w# 1 sw Y   lxY w# t        $ r Y dw xY w# 	 t        j                  |       w # t        $ r Y w w xY wxY w)Ndjpeg-outfilezInvalid Filename)tempfilemkstemposclosepathexistsfilename
subprocess
check_callunlinkOSError
ValueErrorr   openloadimr   rw   r`   rs   r   )r   fr  r}   _ims        r   
load_djpegzJpegImageFile.load_djpeg  s&    ""$4
77>>$--(!!7Jdmm"LM		$ %CS/!	D!S
&& "		$ WW\\
WW\\
	'   "!  		$ sl   ;D1 E 3"E E E 1	D=<D= E	E 	EEFE32F3	E?<F>E??Fc                    t        |       S r   )_getexifr   s    r   r#  zJpegImageFile._getexif  s    ~r   c                   d| j                   v sd| j                   vry 	 | j                         }|d   }|d   }	 t        |d         |d   z  }t	        j
                  |      rd}t        |      |dk(  r|d	z  }||f| j                   d<   y # t        $ r |}Y Kw xY w# t        j                  t        t        t        t        t        f$ r d
| j                   d<   Y y w xY w)Nr)   r3   i(  i  r   r   zDPI is not a numberrf   r+   )H   r&  )rN   getexiffloat	TypeErrormathisnanr  rX   rY   KeyErrorru   ZeroDivisionError)r   r3   resolution_unitx_resolutionr)   r}   s         r   r   z!JpegImageFile._read_dpi_from_exif  s    DIItyy!8	&<<>D"6lO<L#LO,|A> zz#+ o%!#t"CxDIIe  #"# LL
 	&  &DIIe	&s4   B B =B BB BB <CCc                    t        |       S r   )_getmpr$  s    r   r1  zJpegImageFile._getmp  s    d|r   )returnNone)r   strr2  r   )r2  	list[Any])r   r5  r2  r3  )r   intr2  bytes)r   z
str | Noner`   ztuple[int, int] | Noner2  z0tuple[str, tuple[int, int, float, float]] | None)r2  dict[int, Any] | None)__name__
__module____qualname__formatformat_descriptionr   r   r   r   r   r  r!  r#  r   r1  __classcell__)r   s   @r   r   r   P  s[    F+6#p#B$ &&&<&	9&P>&:r   c                \    d| j                   vry | j                         j                         S )Nr3   )rN   r'  _get_merged_dictr$  s    r   r#  r#    s&    TYY<<>**,,r   c           	        	 | j                   d   }t        j                  |      }|j	                  d      }|j                  d      rdnd}ddlm} 	 |j                  |      }|j                  |j                         |j                  |       t        |      }	 |d	   }
g }	 |d   }t        |
      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$}|j)                  |d%   d&      |d%<   ||d<   |j+                  |        ||d<   |S # t        $ r Y y w xY w# t        $ r}d}	t        |	      |d }~ww xY w# t        $ r}d
}	t        |	      |d }~ww xY w# t        $ r}d'}	t        |	      |d }~ww xY w)(NrH   r'   s   MM *><r   )TiffImagePluginz)malformed MP Index (unreadable directory)  z(malformed MP Index (no number of images)i  LLLHHrr   )	AttributeSize
DataOffsetEntryNo1EntryNo2rG  l        i   @i    i      i      i )DependentParentImageFlagDependentChildImageFlagRepresentativeImageFlagReservedImageDataFormatMPTyperR  r   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   rS  Unknownz!malformed MP Index (bad MP Entry))rN   r,  ioBytesIOr   rM   r   rD  ImageFileDirectory_v2seeknextr  dictrQ   ru   r{   rX   unpack_fromzipboolgetrL   )r   ra   file_contentshead
endiannessrD  rN   rH   r  r}   quant	mpentriesrawmpentriesentrynumunpackedentrylabelsmpentrympentryattr	mptypemaps                      r   r1  r1    sl   yy JJt$Ma D(;<#J!&44T:499%		- $Z
&6

 I$&&zeH"..,e$lHrMM QF3v}56G,01E1Q,R+/0D0P+Q+/0D0P+Q$[1W="D$+K$8G$D#K!+.;K ,-217-.9!#&&%<@8:<5I %.MM+h2G$SK!#.GK W%= %> 6
 IA    &9#A%&  &8#A%&N  &1#A%&s[   F AF$ G $C/G" 	F! F!$	G -F;;G 	GGG"	G>+G99G>rg   rh   r   r  )1rg   rh   RGBXri   r  )@r   r   r"   r4   r<   r    rL     r   r>   r&   rp   rr         *   rf   r'   r?            )   +   	   rF      rM     (   ,   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   c                    t        | t              r| j                  dv ry| j                  d   dd | j                  d   dd z   | j                  d   dd z   }t        j                  |d      S )N)r   r>   r   r   rf   r   )r  r   rv   r|   	samplingsr_  )r  samplings     r   get_samplingr    si     b-(BII,?xx{1Q"((1+a"22RXXa[15EEH==2&&r   c                
   | j                   dk(  s| j                  dk(  rd}t        |      	 t        | j                     }| j                  }|j                  dd      D cg c]  }t        |       }}|j                  dd      }	|j                  d	d      }
|j                  d
      }|	dk(  rd}	d}
d}n|	t        v r/t        |	   }d}	|j                  d	d      }
|j                  d      }nnt        |	t              sd}t        |      |
t        v rt        |
   j                  d	d      }
t        |t              r |t        v rt        |   j                  d      }|
dk(  rd}
nD|
dk(  rd}
n<|
dk(  rd}
n4|
dk(  rd}
n,|
dk(  r'| j                  dk7  rd}t        |      t        |       }
	 	 	 	 d4d}|dk(  r)| j                  dk7  rd}t        |      t!        | dd       } ||      }|j                  dd      }d}|j                  d      }|rJd}||z
  }t#        |      |kD  rd}t        |      t%        d|z   t#        |      z         }|d|z   dz   |z   z  }|j                  d      }|r~d }||z
  }g }|r|j'                  |d |        ||d  }|rd}|D ]P  }t%        d|z   t#        |      z         }|d!|z   d"z   t)        |      z   t)        t#        |            z   |z   z  }|dz  }R |j                  d#| j*                  j                  d#            }|j                  d$d%      xs |j                  d&d%      }|j                  d'd%      }|j                  d(d      }t        |t,        j.                        r|j1                         }t#        |      |kD  rd)}t        |      |	||j                  d*d      ||j                  d+d%      |j                  d,d      ||
|j                  d-d      |j                  d.d      ||||f| _        d}|s|r| j                  d/k(  r#d0| j4                  d   z  | j4                  d   z  }nL|	d1k\  s|	dk(  r#d| j4                  d   z  | j4                  d   z  }n| j4                  d   | j4                  d   z  }|r|t#        |      d2z   z  }|r7|t#        |      dz   z  }n%t7        |t#        |      d2z   t#        |      dz         }t9        j:                  | |t9        j<                  d3d| j4                  z   d|      g|       y # t
        $ r!}d| j                   d}t        |      |d }~ww xY wc c}w )5Nr   z cannot write empty image as JPEGzcannot write mode z as JPEGr)   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 JPEGc                   | | S t        | t              rz	 | j                         D cg c]5  }|j                  dd      d   j                         D ]  }t	        |       7 }}}t        dt        |      d      D cg c]
  }|||dz     } }t        | t        t        t        f      rt        | t              r*t        t        |             D cg c]  }|| v s| |    } }nt        | t              rt        |       } dt        |       cxk  rdk  sn d}t        |      t        |       D ]E  \  }}		 t        |	      dk7  rd}t        |      t        j                  d|	      }
t        |
      | |<   G | S y c c}}w c c}w # t        $ r}d}t        |      |d }~ww xY wc c}w # t        $ r}d}t        |      |d }~ww xY w)	N#r   r   r   zInvalid quantization tabler"   z$None or too many quantization tablesr   )r  r4  
splitlinesrT   r6  r{   ry   r  rP   listr[  	enumerater)  r   )r  linenumlinesr[   r  r}   keyidxtabletable_arrays              r   validate_qtablesz_save.<locals>.validate_qtables  s   
 ?Ngs#
P !( 2 2 4 4#zz#q1!4::< H<  4   7<As5z26NO6N5QV,6NOgtT23'4(,1#g,,?,?S3'>GCL,?   GU+w-G(q(< o%'0
U	55zR':'n,"'++c5"9K
 $(#4GCL 1 N+ 4 P	  -2 o1,- ! 16C$S/q01sR   F :E8#F >E>	F"F"41F'8F 	FFF'	G0F>>Gextrar   r   r7   rp  zXMP data is too longs   r5   rq   r<   s   r:   rc   rn   Fro   optimizer3   zEXIF data is too longsmoothkeep_rgb
streamtyperestart_marker_blocksrestart_marker_rowsri   r>   _   r"   r   )r  zKstr | tuple[list[int], ...] | list[list[int]] | dict[int, list[int]] | Noner2  zlist[list[int]] | None)widthheightr  RAWMODEr   r,  r  encoderinfor_  roundr   r  r6  r4  r<  r  r   ry   o16rL   r   rN   r   Exiftobytesencoderconfigr`   maxr   _saver   )r  r   r  r}   r   r  rN   xr)   r  r  r  presetr  r  MAX_BYTES_IN_MARKERr7   overhead_lenmax_data_bytes_in_markerr`   rq   markersr   r   rc   rn   r  r3   bufsizes                                r   r  r    sy   	xx1}		Q0o""''"
 >>D!XXeV4
54584C
5hhy"%G((="-Khhy!G&	G	!jj3**^,%'o'!!+.22="EKgs#7(:g&**>:Gg						 		99GCS/!"2&(W( 
 	(T &99GCS/!"nd3w'GHHWc"E
((5/C
#6#E s8..(CS/!1|#c#h./t#&IICOO((=)K#6#E NN;'@(@AB%&>&?@K  Fq<'#f+56D"# Q% S\"	#
 E FA  hhy"''++i"89G
 ((=%0RDHH]E4RKxx
E*H88FC D$

#||~
4y&&%o 	1U#q!(!,&*B* G;77f"''!*nrwwqz1G]gm"''!*nrwwqz1Gggaj2771:-Gs4y1}$Gs5zA~%G gs4y1}c%j1n=OO
B"'')91gFGu  ""277)84cl!" 6s   T  T?	T<T77T<c                    | j                         }t        j                  dd||g       	 t        j                  |       y # t
        $ r Y y w xY w)Ncjpegr  )_dumpr  r  r  r  r  )r  r   r  r  s       r   _save_cjpegr  Z  sG    xxzH7J(CD
		( s   A 	AAc                6   t        | |      }	 |j                         }|C|d   dkD  r;|j                  D ]  \  }}|dk(  sd|v s|c S  ddlm}  |j
                  ||      }|S # t        t        f$ r Y |S t        $ r t        j                  d       Y |S w xY w)NrE  r   r   s    hdrgm:Version="r   zTImage appears to be a malformed MPO file, it will be interpreted as a base JPEG file)r   r1  rK   MpoImagePluginr   adoptr)  rZ   ru   warningswarn)r   r  r  mpheadersegmentcontentr   s          r   jpeg_factoryr  f  s     
r8	$B
99;HUOa$7$&JJ f$)<)GI %/
 5 $##B1B I z"  I  
.	
 I
s)   1A%  A% A% 	A% %B7BB)z.jfifz.jpez.jpgz.jpegz
image/jpeg)r   r   r   r6  r2  r3  )r   r7  r2  r^  )r   r   r2  r8  )r  Image.Imager2  r6  )r  r  r   	IO[bytes]r  zstr | bytesr2  r3  r   )r   r  r  zstr | bytes | Noner2  zJpegImageFile | MpoImageFile)6
__future__r   r   rV  r*  r  rX   r  r   r  r  typingr   r   r   r   r   _binaryr	   r   r
   rW   r   r   r  
_deprecater   JpegPresetsr   TYPE_CHECKINGr  r   r   r   rd   r   r   r   r   r   r#  r1  r  r   r  r  r  r  r  register_openr<  register_saveregister_extensionsregister_mimer,   r   r   <module>r     s  D #  	  	   
     ! !  ! !  ,%
g7T$-?`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.AI'' AH-I` 
		 	'CL 37/!<   M((, @   M((% 0   -..0R S   M((, 7r   