o
    Ñ­j£t  ã                   @  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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d„Zdd„ ZdÕdd„ZdÕdd„ZdÕdd„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“d0d1d2ef“d3d4“d5d6d7ef“d8d9d:ef“d;d<d=ef“d>d?d@ef“dAdBdCef“dDdEdFef“dGdHdIef“dJdK“i dLdM“dNdO“dPdQ“dRdS“dTdU“dVdW“dXdY“dZd[“d\d]“d^d_d`ef“daddbef“dcdddeef“dfdgdhef“didjdkef“dldmdnef“dodpdqef“drdsdtef“¥i dudvdwef“dxdydze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’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¢“d£d¤“¥d¥d¦d§d¨d©dªd«d¬d­d®d¯dd°efd±œ¥Z dÖdµd¶„Z!G d·d„ dejƒZ"d×d¹dº„Z#d»d¼„ Z$d½d½d¾d¾d¿dÀdÁœZ%dÂZ&d ddÃdÄœZ'dÅdÆ„ Z(dØdÍdÎ„Z)dØdÏdÐ„Z*dÙdÑdÒ„Z+e ,e"j-e+e!¡ e .e"j-e)¡ e /e"j-g dÓ¢¡ e 0e"j-dÔ¡ dS )Úé    )ÚannotationsN)ÚIOÚAnyé   )ÚImageÚ	ImageFile)Úi16be)Úi32be)Úo8)Úo16be)ÚpresetsÚselfÚJpegImageFileÚmarkerÚintÚreturnÚNonec                 C  s&   t | j d¡ƒd }t | j|¡ d S )Né   )Úi16ÚfpÚreadr   Ú
_safe_read)r   r   Ún© r   úP/var/www/html/CropPilot/venv/lib/python3.10/site-packages/PIL/JpegImagePlugin.pyÚSkip:   s   r   c                 C  s¦  t | j d¡ƒd }t | j|¡}d|d@  }|| j|< | j ||f¡ |dkrr|d d… dkrrt |dƒ | jd< }t	|d	ƒ| jd
< z|d }t |dƒt |dƒf}W n
 t
y\   Y d S w |dkrf|| jd< || jd< || jd< d S |dkr£|d d… dkr£d| jv r’| jd  |dd … 7  < d S || jd< | j ¡ | d | _d S |dkr¼|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 … d#k�ryzZ|d7 }t ||ƒ}
|d7 }|| }|d| 7 }||d@ 7 }t||ƒ}|d7 }|||| … }|
d$k�rPt|d%ƒd& t |dƒt|dƒd& t |dƒd'œ}||	|
< ||7 }||d@ 7 }W n tj�yk   Y d S w |||d … d#k�sd S d S |d(k�rª|d d… d)k�rªt |dƒ| jd*< z|d+ }W n t�y¢   Y d S w || jd,< d S |dk�rÏ|d d… d-k�rÑ|dd … | jd.< | j ¡ | d | 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é   s   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   Úsr@   Úversionr'   r(   Úoffsetr5   ÚcodeÚname_lenÚsizeÚdatar=   r   r   r   ÚAPP?   sˆ   
ÿ






üÿçÿûrV   c                 C  sJ   t | j d¡ƒd }t | j|¡}|| jd< || jd< | j d|f¡ d S )Nr   ÚcommentÚCOM)	r   r   r   r   r   rC   r@   rA   rB   )r   r   r   rO   r   r   r   rX   ¥   s
   

rX   c           	      C  s‚  t | j d¡ƒd }t | j|¡}t |dƒt |dƒf| _|d | _| jdkr1d| j› d�}t|ƒ‚|d | _| jdkr?d	| _	n| jdkrHd
| _	n| jdkrQd| _	nd| j› d�}t|ƒ‚|dv rjd | j
d< | j
d< | jr–| j ¡  | jd d t| jƒkrŒdd„ | jD ƒ}d |¡}nd }|| j
d< g | _tdt|ƒdƒD ] }|||d … }| j |d |d d |d d@ |d f¡ qžd S )Nr   é   r   r   r$   zcannot handle z-bit layersr   ÚLÚRGBr   ÚCMYKz-layer images)éÂÿ  éÆÿ  éÊÿ  éÎÿ  ÚprogressiveÚprogressioné   c                 S  s   g | ]}|d d… ‘qS )r4   Nr   )Ú.0Úpr   r   r   Ú
<listcomp>Ó   s    zSOF.<locals>.<listcomp>ó    Úicc_profiler*   é   r   )r   r   r   r   r   Ú_sizeÚbitsÚSyntaxErrorÚlayersÚ_moderC   rI   ÚsortÚlenÚjoinÚrangeÚlayerrB   )	r   r   r   rO   ÚmsgÚprofilerh   ÚiÚtr   r   r   ÚSOF°   s<   







.ýrx   c                   sÜ   t | j d¡ƒd }t | j|¡}t|ƒrl|d }|d dkr!dnd}d|d  }t|ƒ|k r5d}t|ƒ‚t |dkr=dnd|d|… ¡‰ tj	d	krR|dkrRˆ  
¡  ‡ fd
d„tD ƒ| j|d@ < ||d … }t|ƒsd S d S )Nr   r   ri   r   é@   zbad quantization table markerÚBÚHÚlittlec                   s   g | ]}ˆ | ‘qS r   r   )rd   rv   ©rU   r   r   rf   ô   ó    zDQT.<locals>.<listcomp>r   )r   r   r   r   r   rp   rl   ÚarrayÚsysÚ	byteorderÚbyteswapÚzigzag_indexÚquantization)r   r   r   rO   ÚvÚ	precisionÚ	qt_lengthrt   r   r}   r   ÚDQTà   s    õrˆ   iÀÿ  ÚSOF0zBaseline DCTiÁÿ  ÚSOF1zExtended Sequential DCTr]   ÚSOF2zProgressive DCTiÃÿ  ÚSOF3zSpatial losslessiÄÿ  ÚDHTzDefine Huffman tableiÅÿ  ÚSOF5zDifferential sequential DCTr^   ÚSOF6zDifferential progressive DCTiÇÿ  ÚSOF7zDifferential spatialiÈÿ  )ÚJPGÚ	ExtensionNiÉÿ  ÚSOF9zExtended sequential DCT (AC)r_   ÚSOF10zProgressive DCT (AC)iËÿ  ÚSOF11zSpatial lossless DCT (AC)iÌÿ  ÚDACz%Define arithmetic coding conditioningiÍÿ  ÚSOF13z Differential sequential DCT (AC)r`   Ú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Ûÿ  zDefine quantization tableiÜÿ  ÚDNLzDefine number of linesiÝÿ  ÚDRIzDefine restart intervaliÞÿ  ÚDHPzDefine hierarchical progressionißÿ  ÚEXPzExpand reference componentr   ÚAPP0zApplication segment 0r)   ÚAPP1zApplication segment 1r/   Ú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 12r3   ÚAPP13zApplication segment 13r:   Ú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 13NÚComment)ióÿ  iôÿ  iõÿ  iöÿ  i÷ÿ  iøÿ  iùÿ  iúÿ  iûÿ  iüÿ  éýÿ  iþÿ  ÚprefixÚbytesÚboolc                 C  s   | d d… dkS )NrY   s   ÿØÿr   )rÊ   r   r   r   Ú_accept>  s   rÍ   c                   @  sV   e Zd ZdZdZdd„ Zdd	d
„Zddd„Zddd„Zd dd„Z	ddd„Z
dd„ ZdS )!r   ÚJPEGzJPEG (ISO 10918)c                 C  s@  | j  d¡}t|ƒsd}t|ƒ‚d}d | _| _g | _i | _i | _i | _	i | _
g | _g | _	 |d }|dkrC|| j  d¡ }t|ƒ}n| j  d¡}q-|tv r�t| \}}}|d ur^|| |ƒ |dkrz| j}| jd	krld
}dd| j d|dffg| _n | j  d¡}n|dv rˆd}n|dkr“| j  d¡}nd}t|ƒ‚q.|  ¡  d S )NrY   znot a JPEG fileó   ÿr   Téÿ   r   r¤   r\   úCMYK;IÚjpeg©r   r   Ú >   éÿÿ  r   i ÿ  zno marker found)r   r   rÍ   rl   rk   rm   rs   Ú
huffman_dcÚ
huffman_acr„   r@   rA   rI   r   ÚMARKERÚmoderT   ÚtileÚ_read_dpi_from_exif)r   rO   rt   rv   ÚnameÚdescriptionÚhandlerÚrawmoder   r   r   Ú_openK  sN   


ãzJpegImageFile._openÚ
read_bytesr   r   rË   c                 C  s.   | 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á   rO   r   r   r   Ú	load_read€  s
   zJpegImageFile.load_readrÙ   ú
str | NonerT   útuple[int, int] | Noneú0tuple[str, tuple[int, int, float, float]] | Nonec                 C  s`  t | jƒdkr	d S | jrd S | jd \}}}}d}| j}|d dkr-|dv r-|| _|df}|r�t| jd |d  | jd |d  ƒ}dD ]}	||	krL nqD|d |d |d |d  |	 d |	 |d  |d |d  |	 d |	 |d  f}| jd |	 d |	 | jd |	 d |	 f| _|	}||||fg| _|df| _dd|d | |d | f}
| j|
fS )	Nr   r   r[   )rZ   ÚYCbCrrÔ   )r$   r   r   r   r   rY   )rp   rÚ   ÚdecoderconfigrT   rn   Úminrj   rÙ   )r   rÙ   rT   ÚdÚeÚoÚaÚscaleÚoriginal_sizerO   Úboxr   r   r   Údraft�  s6   &ÿ""ü.

zJpegImageFile.draftr   c                 C  s  t  ¡ \}}t |¡ tj | j¡rt dd|| jg¡ nzt 	|¡ W n	 t
y-   Y nw d}t|ƒ‚z/t |¡�}| ¡  |j| _W d   ƒ n1 sMw   Y  W zt 	|¡ W n t
yc   Y nw zt 	|¡ W w  t
yt   Y w 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Ù   rn   rT   rj   rÚ   )r   Úfrú   rt   Ú_imr   r   r   Ú
load_djpeg¶  s<   
ÿ
þ€ÿþÿ


zJpegImageFile.load_djpegúdict[str, Any] | Nonec                 C  ó   t | ƒS ©N)Ú_getexif©r   r   r   r   r  Õ  ó   zJpegImageFile._getexifc                 C  sÈ   d| j v s
d| j vrd S zA|  ¡ }|d }|d }zt|d ƒ|d  }W n ty0   |}Y nw t |¡r<d}t|ƒ‚|dkrD|d	9 }||f| j d< W d S  tjt	t
tttfyc   d
| j d< Y d S w )Nr&   r+   i(  i  r   r   zDPI is not a numberrY   gR¸…ëQ@)éH   r  )rC   ÚgetexifÚfloatÚ	TypeErrorÚmathÚisnanr  rL   rM   ÚKeyErrorrl   ÚZeroDivisionError)r   r+   Úresolution_unitÚx_resolutionr&   rt   r   r   r   rÛ   Ø  s6   ÿ

úøz!JpegImageFile._read_dpi_from_exifc                 C  r	  r
  )Ú_getmpr  r   r   r   r  õ  r  zJpegImageFile._getmpN)rá   r   r   rË   )rÙ   ræ   rT   rç   r   rè   )r   r   ©r   r  )Ú__name__Ú
__module__Ú__qualname__ÚformatÚformat_descriptionrà   rå   ró   r  r  rÛ   r  r   r   r   r   r   G  s    
5

&

r  c                 C  s   d| j vrd S |  ¡  ¡ S )Nr+   )rC   r  Ú_get_merged_dictr  r   r   r   r  ù  s   
r  c              
   C  s  z| j d }W n
 ty   Y d S w t |¡}| d¡}|d d… dkr&dnd}ddlm} z| |¡}| |j	¡ | 
|¡ t|ƒ}W n tyW } zd	}	t|	ƒ|‚d }~ww z|d
 }
W n tyq } zd}	t|	ƒ|‚d }~ww g }z�|d }td|
ƒD ]p}t |› d�||d ¡}d}tt||ƒƒ}t|d d@ ƒt|d d@ ƒt|d d@ ƒ|d d@ d? |d d@ d? |d d@ dœ}|d dkrËd|d< nd}	t|	ƒ‚ddd d!d"d#d$d%œ}| |d& d'¡|d&< ||d< | |¡ q~||d< W |S  t�y	 } zd(}	t|	ƒ|‚d }~ww ))Nr>   r$   r   s   MM *ú>ú<r   )ÚTiffImagePluginz)malformed MP Index (unreadable directory)é°  z(malformed MP Index (no number of images)i°  r   ÚLLLHHri   )Ú	AttributeÚSizeÚ
DataOffsetÚEntryNo1ÚEntryNo2r%  l        i   @i    i   é   i   é   iÿÿÿ )ÚDependentParentImageFlagÚDependentChildImageFlagÚRepresentativeImageFlagÚReservedÚImageDataFormatÚMPTyper0  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   r1  ÚUnknownz!malformed MP Index (bad MP Entry))rC   r  ÚioÚBytesIOr   rÔ   r"  ÚImageFileDirectory_v2ÚseekÚnextr  ÚdictrE   rl   rr   rL   Úunpack_fromÚziprÌ   ÚgetrB   )r   rU   Úfile_contentsÚheadÚ
endiannessr"  rC   r>   rí   rt   ÚquantÚ	mpentriesÚrawmpentriesÚentrynumÚunpackedentryÚlabelsÚmpentryÚmpentryattrÚ	mptypemapr   r   r   r  ÿ  s€   ÿ




€þ
€þÿ
ú
ù	
ú
€þr  rZ   r[   rÑ   ré   )Ú1rZ   r[   ÚRGBXr\   ré   )@r   r   r   r*   r4   r   r*  é   r   r   r#   rc   ri   é   r,   é*   rY   r$   r1   é   é   é   é)   é+   é	   r<   é   r+  é   é(   é,   é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                 C  sZ   t | dƒr
| jdv rdS | jd dd… | jd dd…  | jd dd…  }t |d¡S )Nrm   )r   r   éÿÿÿÿr   r   rY   r   )rä   rm   rs   Ú	samplingsr<  )r  Úsamplingr   r   r   Úget_samplingk  s   6r{  r  úImage.Imager   ú	IO[bytes]rü   ústr | bytesc                 C  s"  | j dks
| jdkrd}t|ƒ‚zt| j }W n ty/ } zd| j› d�}t|ƒ|‚d }~ww | j}dd„ | dd¡D ƒ}| d	d
¡}| dd
¡}	| d¡}
|dkrZd
}d}	d}
n=|t	v rpt	| }d
}| dd
¡}	| d¡}
n't
|tƒs{d}t|ƒ‚|	t	v r‡t	|	  dd
¡}	t
|
tƒr—|
t	v r—t	|
  d¡}
|	dkržd}	n(|	dkr¥d}	n!|	dkr¬d}	n|	dkr³d}	n|	dkrÆ| jdkrÂd}t|ƒ‚t| ƒ}	dd„ }|
dkrß| jdkrÙd}t|ƒ‚t| dd ƒ}
||
ƒ}
| dd¡}d}| d¡}|�r9d}|| }g }|�r| |d |… ¡ ||d … }|sþd}|D ]%}td| t|ƒ ƒ}|d| d  t|ƒ tt|ƒƒ | 7 }|d7 }�q| d!| j d!¡¡}| d"d#¡�pO| d$d#¡}| d%d#¡}| d&d¡}t
|tjƒ�rg| ¡ }t|ƒ|k�rtd'}t|ƒ‚||| d(d¡|| d)d#¡| d*d¡|d |d |	| d+d¡| d,d¡|
|||f| _d}|�s¦|�rñ| jd-k�r¹d.| jd  | jd  }n!|d/k�sÃ|d
k�rÐd| jd  | jd  }n
| jd | jd  }|�rå|t|ƒd0 7 }|�rð|t|ƒd 7 }nt|t|ƒd0 t|ƒd ƒ}t | |d1d| j d|fg|¡ d S )2Nr   z cannot write empty image as JPEGzcannot write mode z as JPEGc                 S  s   g | ]}t |ƒ‘qS r   )Úround)rd   Úxr   r   r   rf   †  r~   z_save.<locals>.<listcomp>r&   rÓ   Úqualityrx  Ú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                   sV  ˆd u rˆS t ˆtƒr9zdd„ ˆ ¡ D ƒ‰ W n ty) } zd}t|ƒ|‚d }~ww ‡ fdd„tdtˆ ƒdƒD ƒ‰t ˆtttfƒr©t ˆtƒrT‡fdd„ttˆƒƒD ƒ‰n	t ˆtƒr]tˆƒ‰dtˆƒ  k ridk spn d	}t|ƒ‚t	ˆƒD ]2\}}zt|ƒdkr…d}t
|ƒ‚t d
|¡}W n t
yŸ } zd}t|ƒ|‚d }~ww t|ƒˆ|< qtˆS d S )Nc                 S  s.   g | ]}|  d d¡d   ¡ D ]}t|ƒ‘qqS )ú#r   r   )rH   r   )rd   ÚlineÚnumr   r   r   rf   ³  s    ýþÿz3_save.<locals>.validate_qtables.<locals>.<listcomp>zInvalid quantization tablec                   s   g | ]
}ˆ ||d  … ‘qS )ry   r   )rd   rO   )Úlinesr   r   rf   ¼  s    r   ry   c                   s   g | ]
}|ˆ v rˆ | ‘qS r   r   )rd   Úkey)rƒ  r   r   rf   ¿  s    r   z$None or too many quantization tablesr{   )Ú
isinstanceÚstrÚ
splitlinesr  rr   rp   ÚtupleÚlistr9  Ú	enumerater  r   )rƒ  rí   rt   ÚidxÚtabler   )rˆ  rƒ  r   Úvalidate_qtables®  sJ   

þ
€þ


ÿ

€þëz_save.<locals>.validate_qtablesÚextrarg   rÉ   rh   r4   s   ÿâr2   rW   ra   Frb   Úoptimizer+   zEXIF data is too longÚsmoothÚkeep_rgbÚ
streamtypeÚrestart_marker_blocksÚrestart_marker_rowsr\   r   é_   r   rÒ   )ÚwidthÚheightr  ÚRAWMODErÙ   r  r   Úencoderinfor<  r   rŠ  r   r‹  r  r{  ÚgetattrrB   Úo16rp   r
   rC   r   ÚExifÚtobytesÚencoderconfigrT   Úmaxr   Ú_save)r  r   rü   rt   rß   rí   rC   r&   r�  r‚  rƒ  Úpresetr’  r“  ÚMAX_BYTES_IN_MARKERrh   ÚICC_OVERHEAD_LENÚMAX_DATA_BYTES_IN_MARKERÚmarkersrv   r   rT   rW   ra   r”  r+   Úbufsizer   r   r   r¥  y  sì   
€þ


&

þÿþý
üûÿ




ñ€$r¥  c                 C  s@   |   ¡ }t dd||g¡ zt |¡ W d S  ty   Y d S w )NÚcjpegrõ   )Ú_dumprý   rþ   rø   rÿ   r   )r  r   rü   rö   r   r   r   Ú_save_cjpeg0  s   ÿr®  c              	   C  s¢   t | |ƒ}z1| ¡ }|d dkr4|jD ]\}}|dkr$d|v r$|  W S qddlm} | ||¡}W |S W |S  ttfyB   Y |S  tyP   t	 
d¡ Y |S w )Nr#  r   r«   s    hdrgm:Version=")ÚMpoImageFilezTImage appears to be a malformed MPO file, it will be interpreted as a base JPEG file)r   r  rA   ÚMpoImagePluginr¯  Úadoptr  rN   rl   ÚwarningsÚwarn)r   rü   r  ÚmpheaderÚsegmentÚcontentr¯  r   r   r   Újpeg_factory<  s,   

€	îøûÿûr·  )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   )NN)1Ú
__future__r   r   r4  r  rø   rL   rý   r€   rö   r²  Útypingr   r   rÔ   r   r   Ú_binaryr   r   r	   rK   r
   r   r   ÚJpegPresetsr   r   rV   rX   rx   rˆ   rØ   rÍ   r   r  r  r�  rƒ   ry  r{  r¥  r®  r·  Úregister_openr  Úregister_saveÚregister_extensionsÚregister_mimer   r   r   r   Ú<module>   sH  !

f

0
ÿ
þ
ý
ü
û
ú
ù
ø	÷

ö
õ
ô
ó
ò
ñ
ðïîíìëêéèçæ
å
ä
ã
â
á
 à
!ß
"Þ
#Ý
$Ü
%Û
&Ú
'Ù
(Ø
)×
*Ö
+Õ
,Ô
-Ó
.Ò
/Ñ
0Ð1Ï2Î3Í4Á
C	 
3Pú
ý
 
8
