
    nj                     D   d dl Z d dlZd dlZd dlZd dlmZ d dlmZmZm	Z	m
Z
mZmZ d dlmZ d dlmZ d dlmZ dZdZd	Zd Zd
ZdZdZdZdZdZdZd
d
dddd
d
ddddddZh dZd
ddddZ h dZ!e G d de	                      Z"ee#e$ej%        f         Z&ee&ee"f         Z' G d de          Z(de'fdZ)d Z*d Z+d Z,d Z-d Z.d  Z/d! Z0d" Z1d# Z2d$ Z3d% Z4d& Z5d' Z6d( Z7d) Z8d* Z9d+d+d+d+d+d,de'd-e:d.e:d/e:d0e:d1e:d2e(fd3Z;d+d4de'd0e:d2e
e<e<f         fd5Z=de'd2e
e<e<f         fd6Z>dS )7    N)Decimal)BinaryIO
NamedTupleProtocolTupleUnionruntime_checkable)urlparse)urlopen)ElementTree                     )r   r   r   r   r   r      r   	   
         >      avif   avis   heic   heix   hevc   hevx   mif1   msf1)r   r   r   r   >            c                   6    e Zd Zd
dedefdZddededefdZd	S )ReadSeekBinaryr   sizereturnc                     d S N )selfr)   s     c/lsinfo/ai/hellotax_ai/data_center/backend/venv/lib/python3.11/site-packages/imagesize/imagesize.pyreadzReadSeekBinary.read9           r   offsetwhencec                     d S r,   r-   )r.   r3   r4   s      r/   seekzReadSeekBinary.seek<   r1   r2   N)r   )r   )__name__
__module____qualname__intbytesr0   r6   r-   r2   r/   r(   r(   7   si          e     3  C      r2   r(   c                   r    e Zd ZU dZeed<   dZeed<   dZeed<   dZeed<   dZ	eed<   dZ
eed<   dZeed<   d	S )
	ImageInfor   widthheightrotationxdpiydpicolorschannelsN)r7   r8   r9   r>   r:   __annotations__r?   r@   rA   rB   rC   rD   r-   r2   r/   r=   r=   D   sy         E3OOOFCHcD#NNND#NNNFCHcr2   r=   filepathc                 P   t          | t                    r| dfS t          | t                    rgt          |           }|j        dv rOt          |           5 }t          j        |                                          dfcd d d            S # 1 swxY w Y   t          | d          dfS )NF)httphttpsTrb)

isinstancer(   strr
   schemer   ioBytesIOr0   open)rF   parsedresponses      r/   
_open_filerS   N   s    (N++ (C   9(##=---"" 9hz(--//22D89 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9$%%s   (BBBc                 &   |t           k    rt          | dz  dz             S |t          k    rt          | dz  dz             S |t          k    rt          | dz  dz             S |t          k    rt          | dz  dz             S |t
          k    rt          | dz  dz             S |t          k    rt          | dz  dz             S |t          k    rt          | dz  dz             S |t          k    r| d	z  S |t          k    r| d
z  S |t          k    r| dz  S | S )Ng5B>g      ?gti0?gd?g
F%u?gK7A?gRQ@gffffff9@   i	  i8c  )_UNIT_KMr:   
_UNIT_100M	_UNIT_10M_UNIT_1M
_UNIT_10CM_UNIT_CM_UNIT_MM_UNIT_0_1MM_UNIT_0_01MM_UNIT_UM)densityunits     r/   _convertToDPIrb   Y   s8   x7Y&,---			7X%+,,,			7W$s*+++			7V#c)***			7U?S()))			7T>C'(((			7T>C'(((			}			~			Nr2   c                 
   t          j        d|           }|st          d| z            |                                \  }}t	          |          }|dk    rt          |          S |dk    r/t          |t	          d          z  t	          d          z            S |dk    r/t          |t	          d          z  t	          d          z            S |d	k    rt          |t	          d          z            S |d
k    r/t          |t	          d          z  t	          d          z            S |dk    r/t          |t	          d          z  t	          d          z            S |dk    rt          |          S t          d|z            )Nz(\d+(?:\.\d+)?)?([a-z]*)$zunknown length value: %s cm96z2.54mmz25.4inpc6pt72pxzunknown unit type: %s)rematch
ValueErrorgroupsr   float)valuematchedlengthra   s       r/   _convertToPxrv   q   sb   h3U;;G =3e;<<<>>##LFDV__FrzzV}}	Vgdmm+gfoo=>>>	Vgdmm+gfoo=>>>	Vgdmm+,,,	Vgdmm+gcll:;;;	Vgdmm+gdmm;<<<	V}}
,t3
4
44r2   c                    d}d}|                      d           |                     d          }t          |          }|dk    rQ|d d         dv rE	 t          j        d|dd                   \  }}
nI# t          j        $ r t          d          w xY w|d	k    rh|                    d
          rS|dd         dk    rE	 t          j        d|dd	                   \  }}	n# t          j        $ r t          d          w xY w|dk    rZ|                    d
          rE	 t          j        d|dd                   \  }}	n{# t          j        $ r t          d          w xY w|dk    r|                    d          r	 |                      d           t          |            |                      dd           t          j        d|                     d                    \  }}n# t          j        t          f$ r t          d          w xY w|dk    rz|                    d          re|                      d           	 t          j        d|                     d                    \  }}nO# t          j        $ r t          d          w xY w|dk    r|dd         dk    rt          j        d|d d                   d         }|dk     rt          d          |                      d           |                     |dz
            t          fdt          D                       r3t          |           \  }}}}|dk    r
|dk    r||fS t          d          n_|dk    rT|                    d          r>t          j        d|dd                   d         }|                      |           t          j        d|                     d                    d         }t          |          D ]}	t          j        d |                     d                    \  }
}}}|
d!k    r1|d"k    rt          |d#z            }nO|dk    r|}nFt          d$          |
d%k    r1|d"k    rt          |d#z            }n|dk    r|}nt          d&          |dk    r|dk    r n|dk    s|dk    rt          d'          n|dk    r|                    d(          rt          j        d)|dd                   d         }|                      |           t          j        d*|                     d                    d         }t          |          D ]N}	t          j        d+|                     d                    \  }
}}}|
d!k    r|}n|
d%k    r|}|dk    r|dk    r nO|dk    s|dk    rt          d'          n|dk    rB|                    d,          r,t          j        d)|dd                   d         }|dk    r"t          d-                    |                    t          j        d.|dd                   d         }|                      |           t          j        d.|                     d                    d         }t          |          D ]N}	t          j        d/|                     d0                    \  }
}}}|
d!k    r|}n|
d%k    r|}|dk    r|dk    r nO|dk    s|dk    rt          d1          n|d2k    r|                    d3          s|                    d4          r|                      d           |                     d5          }	 |                    d6          }t!          j        d7|                              d          }t!          j        d8|                              d          }n# t&          $ r t          d9          w xY wt)          |          }t)          |          }n|d d         d:k    rZ|dd         d;v rM|                      d           g }	 |                     d          }|                                r+|d=k    rt          d>          |d?k    r|                                  [|                                st          d@          |}|                     d          }|                                r.||z  }|                     d          }|                                .|                    t          |                     t          |          dk    rn"|                      dt2          j                   .|\  }}nX|                    dA          r|dd         dBk    r|dd         dCk    r"t          j        dD|dEdF                   \  }}n|dd         dGk    rSt          j        dH|d	dI         dJz             d         dz   }t          j        dH|dIdF         dJz             d         dz   }n|dd         dKk    rQ|dLdM         }|d         dNz  dz  |d         z  dz   }|d"         dOz  dz  |d         dz  z  |d         dPz  dz	  z  dz   }nDt          dQ          |                    dR          r t          j        dS|dTdE                   \  }}||fS )UNr   r   @   r   r   s   GIF87as   GIF89az<hhzInvalid GIF file      PNG

r         IHDR>LLInvalid PNG filer   r      r   z>HHr   Invalid JPEG file      jP  

0   Invalid JPEG2000 files   ftyp>LzInvalid HEIF filec              3       K   | ]}|v V  	d S r,   r-   ).0brandftyp_payloads     r/   	<genexpr>z_get_size.<locals>.<genexpr>   s(      ??u$??????r2      MM *>Hz>HHLL   r      z?Invalid TIFF file: width column data type should be SHORT/LONG.i  z@Invalid TIFF file: height column data type should be SHORT/LONG.z?Invalid TIFF file: width and/or height IDS entries are missing.   II* z<L<Hz<HHLL   II+ z@Invalid BigTIFF file: Expected offset to be 8, found {} instead.z<Qz<HHQQ   zBInvalid BigTIFF file: width and/or height IDS entries are missing.r   s   <?xmls   <svgi   zutf-8z[^-]width="(.*?)"z[^-]height="(.*?)"zInvalid SVG file   Ps   123456Tr2   zInvalid Netpbm file   #z&Invalid character found on Netpbm files   RIFFs   WEBPs   VP8 z<HH      s   VP8Xz<I       s   VP8L      ?         zUnsupported WebP file   BMz<ll   )r6   r0   lenstructunpackerrorrp   
startswith_seek_to_jpeg_sofany_HEIF_BRANDS_read_heif_metadataranger:   formatdecodern   searchgroup	Exceptionrv   isspacereadlineisdigitappendosSEEK_CUR)fhandler?   r>   headr)   	ftyp_size_r3   ifdsizeitagdatatypecountdatabytesize_offsetsizesnext_chrbr   s                     @r/   	_get_sizer      s   FELLOOO<<Dt99Drzzd2A2h"888	1"M%ad<<ME66| 	1 	1 	1/000	1 
(<==$r"u+QXBXBX	1"M%be==ME66| 	1 	1 	1/000	1 
(<==	1"M%ad<<ME66| 	1 	1 	1/000	1 
t{33	2LLOOOg&&&LLA"M%aAAMFEEj) 	2 	2 	20111	2 
(IJJR	6"M%aAAMFEE| 	6 	6 	64555	6 
QqS	W,,M$RaR11!4	q==0111Q||IM22????,????? 	2"5g">">E61a{{v||f}$0111		2 
t':;;tT!A#Y//2V-gll1oo66q9w 	 	A)/wR@P@P)Q)Q&C5$czzq==u--EE]] EE$%fgggq== ..FF]]!FF$%ghhh{{v||B;;&B,,^___ '	t':;;tT!A#Y//2V-gll1oo66q9w 	 	A)/wR@P@P)Q)Q&C5$czz{{v||B;;&B,,^___ ' 
t':;; -d1Q3i88;a_ffgmnnoootT!B$Z003V-gll1oo66q9w 	 	A)/wR@P@P)Q)Q&C5$czz{{v||B;;&B,,abbb ' 
11T__W5M5MQ||D!!	1;;w''DI2D99??BBEY4d;;AA!DDFF 	1 	1 	1/000	1U##f%% 
bqbT		d1Q3i944Q	*||AH!! 3 !67774  """##%% K !IJJJD||AH""$$ + "<<?? ""$$ + LLT###5zzQLLR[)))9	*: vv		!	! :d1R4jG&;&;2;'!!"M%be==ME66"R%[G##M$RUe(;<<Q?!CE]4beu)<==a@1DFF"R%[G##RUAtbyQ&!A$.!3E!r	b(QqTQY7AaD3J1;LMQRRFF4555			 :eT"R%[99v&=sJ    A4 4B  C" "D  E E! A%G' '&H+I. .JA%^? ?_c                 H   |                      d           |                     d          }|                    d          sdS 	 |                     d          }|sn|dk    r"|                     d          }|dk    rn|dk    "B|r|dv rn	 t          j        d	|                     d                    d         }n# t          j        $ r Y nVw xY w|dk     rnK|                     |dz
            }|d
k    s|                    d          st          |dd                    S dS )Nr   r   r   r   Tr      )      r         Exif  r   )r6   r0   r   r   r   r   #_read_orientation_from_exif_payload)r   r   marker_startmarker_codesegment_sizepayloads         r/   _read_jpeg_exif_rotationr   =  sR   LLOOO<<??D??;'' r@||A 	g%%!,,q//Kg%% g%%
  	k-???	!=w||A??BLL| 	 	 	E	!,,|a/00'!!););O)L)L!27122;???2s   .B; ;CCc                 4   |                      d          }|dk    r|                      d          }|dk    |st          d          |d         }t          j        d|                      d                    d         dz
  }|dk     rt          d          ||fS )Nr   r   zUnexpected end of JPEG filer   r   r   zInvalid JPEG segment size)r0   rp   r   r   )r   marker_bytemarkerr   s       r/   _read_jpeg_segment_headerr   a  s    ,,q//K

 
 ll1oo 
 
  86777^F=w||A77:Q>La4555<r2   c                     d}d}d|cxk    rdk    rn n	|t           vsA|                     |d           t          |           \  }}d|cxk    rdk    5n 8|t           vA||fS )Nr   r   r      r   )_JPEG_NO_SOF_MARKERSr6   r   )r   
block_sizer   s      r/   r   r   n  s    JFv%%%%%%%%%&8L*L*LZ###6w??
 v%%%%%%%%%&8L*L*L :r2   c                    t          |           dk     rdS | d d         }|dk    rd}n|dk    rd}ndS 	 t          j        |dz   | d	d                   d
         }n# t          j        $ r Y dS w xY w|dz   t          |           k    rdS 	 t          j        |dz   | ||dz                      d
         }n# t          j        $ r Y dS w xY w|dz   }t	          |          D ]}|dz   t          |           k    r dS 	 t          j        |dz   | ||dz                      \  }}}	}
n# t          j        $ r Y  dS w xY w|dk    r+|dk    r%|	dk    r|dk    rt          |
dz            n|
dz  c S |dz  }dS )Nr   r   r   s   II<s   MM>Lr   r   Hr   HHLL  r   r   r   i  )r   r   r   r   r   r:   )	exif_dataendian_tokenendianfirst_ifd_offset	ifd_countcursorr   r   r   r   rs   s              r/   r   r   w  s   
9~~rRaR=Lu			r!=#y1~FFqI<   rr!c)nn,,rM&3,	:JK[^_K_:_0`aabcd		<   rr!F9 	 	B;Y''22	*0-SYZ`ceZeSeIf*g*g'C5%%| 	 	 	222	&==X]]uzz)/33uu}%%%EFNJJJ"2s5   &A A/.A/)B5 5CC;(D$$D87D8c                 (   t          |           \  }}}}|dk    r|S |dk    r|S |                     d           |                                 }d}|                    |          }|dk    rdS t	          ||t          |          z   d                    S )Nr   r   r   )r   r6   r0   findr   r   )r   r   property_rotationexif_rotationr   r   starts          r/   _read_heif_exif_rotationr     s    -@-I-I*Aq
]B  LLOOO<<>>DFIIfE{{r.tECKK4G4H4H/IJJJr2   c              #   r  K   |}|dz   |k    rt          j        d| ||dz                      d         }| |dz   |dz            }d}|dk    r7|dz   |k    rd S t          j        d| |dz   |dz                      d         }d}n|dk    r||z
  }||k     s	||z   |k    rd S ||||fV  ||z  }|dz   |k    d S d S )Nr   r   r   r   r   r|   z>Q)r   r   )r   r   endr3   r)   box_typeheader_sizes          r/   _iter_iso_boxesr     s     F
1*

}T4vz(9#:;;A>
6A:-.199{S  =tFQJv{,B'CDDQGDKKQYY<D+$!4!4FdHk1111$ 1*





r2   c                 &   |                      d           |                                 }d }t          |dt          |                    D ]\  }}}}|dk    r|||f} n|dS |\  }}}	||	z   dz   }
||z   }d }g }i }i }i }t          ||
|          D ]\  }}}}||z   }||z   }|dk    rz||         }|dk    r3|dz   |k    r*t	          j        d||dz   |dz                      d         }Y|dk    r2|dz   |k    r)t	          j        d	||dz   |dz                      d         }|d
k    r|dz   |k    r||         }|dk    r/t	          j        d||dz   |dz                      d         }|dz   }n8|dz   |k    rt	          j        d	||dz   |dz                      d         }|dz   }t          |          D ]}|dz   |k    r nt	          j        d	|||dz                      d         }||dz   |dz            }||z   }|dk     s||k    r n|dk    r|dz   |k    r|dz   }||         }|dk    rH|dz   |k    r?t	          j        d||dz   |dz                      d         }||dz   |dz            }|||<   nM|dk    rG|dz   |k    r>t	          j        d	||dz   |dz                      d         }||dz   |dz            }|||<   |}<|dk    r|dz   |k    r||         }|dz   }|dz   |k    re||         dz	  }||         dz  }|dz  }||         dz	  } |dv r||         dz  nd}!|dz  }|dk     r7|dz   |k    rt	          j        d|||dz                      d         }"|dz  }n6|dz   |k    rt	          j        d	|||dz                      d         }"|dz  }t          |"          D ]}|dk     r8|dz   |k    r nt	          j        d|||dz                      d         }|dz  }n7|dz   |k    r n{t	          j        d	|||dz                      d         }|dz  }|dv r|dz   |k    r n@|dz  }|dz   |k    r n/|dz  }|| z   |k    r n| r&t                              |||| z            d          nd}#|| z  }|dz   |k    r nt	          j        d|||dz                      d         }$|dz  }g }%t          |$          D ]}|dv r|!r||!z   |k    r n||!z  }||z   |z   |k    r ny|r&t                              ||||z            d          nd}&||z  }|r&t                              ||||z            d          nd}'||z  }|%	                    |#|&z   |'f           |%r|%||<   Ȑ|dk    rt          |||          D ]\  }(})}*}+|(|+z   },|(|)z   }-|*dk    rt          t          ||,|-                    }7|*dk    rn|,dz   |-k    rdt                              ||,dz   |,dz            d          }.t          |.dz            }/|,dz   }|dz   |-k    rt	          j        d	|||dz                      d         }|dz  }t          |          D ]}|dz   |-k    r nt	          j        d|||dz                      d         }|dz  }||         }0|dz  }g }1t          |0          D ]}|/rO|dz   |-k    r nut	          j        d|||dz                      d         }2|dz  }|1	                    |2dz             S|dz   |-k    r n&||         }2|dz  }|1	                    |2dz             |1||<   |sdS |                    |t          t          dt          |          dz                                 }3dx}4x}5x}6}7|3D ]}8d|8cxk    rt          |          k    sn ||8dz
           \  }(})}*}+|(|+z   },|*dk    r3|,dz   |(|)z   k    r't	          j        d||,dz   |,dz                      \  }4}5m|*dk    r3|,dz   |(|)z   k    r't                              ||,dz            dz  d          }6|                                D ]\  }}|d k    r|                    |g           D ]\  }&}'|'dk     r|&|'z   }9|&dk     s|9t          |          k    r+||&|9         }:dt	          j        d	|:d d                   d         z   };|;dz   t          |:          k    rrt          |:|;d                    }7|7dk    r n|7dk    r n|4|5|6|7fS )!Nr   s   meta)r   r   r   r   r   s   pitmr   r   r   r   s   iinfs   infe   r   r   r   r|   s   ilocr   r   )r   r   bigs   iprps   ipcos   ipmai     r   s   isper~   s   irotr   s   Exif)r6   r0   r   r   r   r   r   r:   
from_bytesr   listboolget_HEIF_IROT_TO_EXIFitemsr   )<r   r   meta_boxr3   r)   r   r   meta_offset	meta_sizemeta_header
meta_startmeta_endprimary_item_id
propertiesassociations
item_typesitem_extentspayload_startpayload_endversionentry_countr   r   
entry_size
entry_type	entry_endinfe_payloadinfe_versionitem_id	item_typeoffset_sizelength_sizebase_offset_size
index_size
item_countbase_offsetextent_countextentsextent_offsetextent_lengthp_offsetp_sizep_typep_headerp_payload_startp_payload_endflagsis_large_indexassoc_count
item_propsrs   target_indexesr>   r?   r@   r   index
extent_end	exif_itemtiff_offsets<                                                               r/   r   r     s   LLOOO<<>>DH/>tQD		/R/R  +hwk2HE  ~*2'KK{*Q.JY&HOJLJL/>tZQY/Z/Z S; S;+h,tmw=)G!|| 1[ @ @"(-d=1;L]]^M^;^6_"`"`ab"c1!2k!A!A"(-d=1;L]]^M^;^6_"`"`ab"c  ]Q%6+%E%E=)G!||$mD$}q7HYZIZ7Z2[\\]^_&* 1${22$mD$}q7HYZIZ7Z2[\\]^_&*;'' # #A:++E#]4fVaZ6G1HII!L
!&1*VaZ"78
"Z/	>>Y%<%<E((Vb[K-G-G#)A:L#'#5L#q((\B->)-K-K"(-d<!;KL[\L\;\6]"^"^_`"a$()9,:K)K$L	.7
7++%**|b/@I/M/M"(-d<!;KL[\L\;\6]"^"^_`"a$():<";L)L$M	.7
7+"  ]Q%6+%E%E=)G"Q&FzK''v,!+Kv,-KaKF#F|q029V2C2C$v,--JaKF{{A:++#]4fVaZ6G1HII!L
!A:++#]4fVaZ6G1HII!L
!:&& .4 .4Q;;zK//$mD$vfqj7H2IJJ1MGaKFFzK//$mD$vfqj7H2IJJ1MGaKFf$$zK//aKFA:++E!,,{::E_ovcnnT&BR9R2R-SUZ[[[uv**A:++E%}T4vz8I3JKKAN!|,, Q QA&((Z(!J.<<!E*,+k9KGG`k$rCNN4v?S8S3TV[$\$\$\qrMk)F`k$rCNN4v?S8S3TV[$\$\$\qrMk)FNNK-$?#OPPPP 4,3L)  6EdM[f6g6g "; ";2&&("*X"5 (6 1W$$!%odO]&[&[!\!\JJw&&?Q+>-+O+ONN4!0COVWDW0W+XZ_``E%)%!)__N,q0FzM11 "(-d6&1*;L6M"N"Nq"QKaKF";// ; ;!A:55!E"(-d6&1*;L6M"N"Nq"Q!&*6l!%'
!&{!3!3 @ @A- @#)A:#=#=$)E(.dDQR
AR<S(T(TUV(W &! * 1 1%&. A A A A#)A:#=#=$)E(,V &! * 1 1%$, ? ? ? ?0:W-- ~!%%otE!S__WXEX<Y<Y7Z7Z[[N022E2F2X T TU----c*oo-----7	-B*&&("X-W2!5F9J!J!J"M%o6I/\^J^6^1_``ME66w?Q#6(V:K#K#K)--d?Q3F.G$.NPRSSH(..00  ,8,<,<Wb,I,I 	 	(M=q  &6Jq  JT$:$:]:56IfmD)BQB-@@CCKQY//?	+,,@WXXM"" #BE  &(M11r2   c                    |                      d           |                     d          }t          |          dk     rdS |                    d          rd}d}n6|                    d          rd	}d}n|                    d
          rd	}d}ndS 	 |rt          |          dk     rdS t	          j        |dz   |dd                   d         }|dk    rdS t	          j        |dz   |dd                   d         }|                      |           t	          j        |dz   |                     d                    d         }t          |          D ]}|                     d          }t          |          dk     r dS t	          j        |dz   |d d                   \  }	}
t	          j        |dz   |dd                   d         }|dd         }|	dk    rb|dk    r\|
dk    r(t	          j        |dz   |d d                   d         c S |
dk    r(t	          j        |dz   |d d                   d         c S dS t	          j        |dz   |dd                   d         }|                      |           t	          j        |dz   |                     d                    d         }t          |          D ]}|                     d          }t          |          dk     r dS t	          j        |dz   |d d                   \  }	}
}|dd         }|	dk    rZ|dk    rT|
dk    r(t	          j        |dz   |d d                   d         c S |
dk    r t	          j        |dz   |          d         c S n# t          j        $ r Y dS w xY wdS )Nr   r|   r   r   r   r   Fr   r   r   Tr   r   r   Qr   HHr   r   r   r   r   r   HHL)r6   r0   r   r   r   r   r   r   )r   r   r   
is_bigtiffbytesize
ifd_offsetr  r   entryr   r   r   value_fields                r/   _read_tiff_rotationr2    s   LLOOO<<D
4yy1}}rz"" 


		$	$ 

		$	$ 

r' 	4yy2~~r}Vc\4!9==a@H1}}rv|T!B$Z@@CJLL$$$ -gll1ooFFqIK;'' O OR((u::??22 &ftmU2A2Y G GXfslE!B$K@@C#BrEl#::%1**1}}%}Vc\;rr?KKANNNN1}}%}Vc\;rr?KKANNNN2]6C<ac;;A>
Z   mFSL',,q//BB1E{## 
	G 
	GALL$$E5zzBrr#)=%rr#K#K C5"+Kczzeqjjq==!=#{2A2GGJJJJq==!=#{CCAFFFF
	G <   rr 2sL   M5 ),M5 B&M5 ?BM5 -M5 :M5 =B&M5 %A'M5 %M5 3M5 5NNc                 |    t          |           }|dk    r|S t          |           }|dk    r|S t          |           S )Nr   )r   r   r2  )r   r@   s     r/   _get_rotationr4    sF    '00H2~~'00H2~~w'''r2   c                 
    | dv S )N>   r   r   r   r   r-   )r@   s    r/   _is_rotation_swappedr6    s    |##r2   c                 	   d}d}|                      d           |                     d          }t          |          }|dk    r|d d         dv rn7|dk    r*|                    d          rd}|dd          }	 |d
d         }|dk    rw	 t	          j        d|dd                    \  }}	}
n"# t          j        $ r t          d          w xY w|
r+t          |t                    }t          |	t                    }n|}|	}n~|dk    rnw	 t	          j        d|dd
                   \  }n"# t          j        $ r t          d          w xY w||dz   z  }|                      |           |                     d          }n|dk    r,|                    d          r	 |                      d           d}d}d|cxk    rdk    sn |                      |d           t          |           \  }}|dk    r|                      dd           t	          j        d|                     d                    \  }
}}	|
dk    s|
dk    r|}|	}n0|
dk    r*t          |t                    }t          |	t                    }nd|cxk    rdk    n n# t          j        t          f$ r t          d          w xY w|dk    r|                    d          r|                      d           t	          j        d|                     d
                    d         dz
  }|                      d
d           d}	 |dk    rp|                     d          }|d
d          }|dk    rd	}|dz  }nCt	          j        d|d d
                   \  }|                      |dz
  d           ||z  }|dk    p|r|dk    r|                     d          }|d
d          }|d k    rNt	          j        d!|                     d                    \  }	}}}t          ||          }t          |	|          }nCt	          j        d|d d
                   \  }|                      |dz
  d           ||z  }|dk    n"# t          j        $ r t          d"          w xY w||fS )#Nr   r   rz   r   r   ry   r{   r   Tr   s   pHYsz>LLBr   s   IDATr   r      r   r   r   r   r      r   z>BHHr   r   r       Fs   res s   resdz>HHBBr   )r6   r0   r   r   r   r   r   rp   rb   rY   r   r[   )r   xDPIyDPIr   r)   chunkOffsetchunk	chunkTypexDensityyDensityra   dataSizer   r   
headerSizefoundResBox	boxHeaderboxTypeboxSizeyUnitxUnits                        r/   _get_dpirJ    s   DDLLOOO<<Dt99D rzzd2A2h"888	(<==QRR	)ac
IG##9/5}VU122Y/O/O,Hh| 9 9 9$%78889 $(8<<D(8<<DD#D#Dg%%9 &dE!A#J ? ?IHH| 9 9 9$%78889x"},[)))R((/	)2 
t{33	2LLOOOJFf,,,,,,,,Z+++%>w%G%G"
T>>LLA&&&/5}VW\\RS__/U/U,D(HqyyDAII'',Xx@@,Xx@@ f,,,,,,,,, j) 	2 	2 	20111	2 
(IJJR]4a99!<q@
Q	6q..#LLOO	#ABB-g%%"&K!OJ!=y!}==Wq[!,,,g%
 q..  * 1nn 'QI'mG'));A=RYR^R^_aRbRb;c;c8(E5,Xu==,Xu==%}T9RaR=AAHGLL1a000')J !1nn | 	6 	6 	64555	6 :s2   !B/ /CD+ +E
!C*J &J32D4Q' 'Rc                    d}|                      d           |                     d          }t          |          dk    r%|d d         dv r|d         }|dz  rd	|d
z  dz   z  }nkt          |          dk    rX|                    d          rC|dd         dk    r5|d         }|d         }dddddd                    |          }|rd	||z  z  }|S )Nr   r   r:  r   r   ry   r      r   r   r   r   r{   r   r|   r}   rz   r   r   r   r   r   r   r   )r6   r0   r   r   r   )r   rC   r   packed	bit_depth
color_typerD   s          r/   _get_colorsrQ  ;  s    FLLOOO<<D
4yyB48'===bD= 	0FTMQ./F	TbT__-ABBtBrE{V]G]G]H	"X

 
 #j// 	  	19x/0FMr2   c                 P   d}|                      d           |                     d          }t          |          }|dk    rI|                    d          r4|dd         dk    r&|d	         }d
dd
ddd                    |d          }n|dk    r|                    d          r	 |                      d           t          |            |                      dd
           t          j        d|                     d
                    d         }n# t          j        t          f$ r t          d          w xY w|dk    r|d d         dv rd}nX|dk    rR|                    d          r=t          j        d|dd                   d         }|dk    rd
}n|dk    rd}n|dk    rd}|S )Nr   r   r:  r   r{   r   r|   r}   r   r   r   r   r   rM  r   r   z>Br   r   r   ry   r   r      r   r   rz   )
r6   r0   r   r   r   r   r   r   r   rp   )r   rD   r   r)   rP  rO  s         r/   _get_channelsrT  R  s   HLLOOO<<Dt99Drzzdoo&:;;zRUw@V@V"X

 
 #j"

 	 
t{33	2LLOOOg&&&LLA}T7<<??;;A>HHj) 	2 	2 	20111	2	RaR$:::	..M$RU44Q7	>>HH"__HH"__HOs   'A(D &D6Tr)   dpirC   r   rD   r)   rV  rC   r   rD   r*   c          	         t          |           \  }}	 dx}x}	x}
x}x}x}}|r6t          |          \  }}	t          |          }
|rt          |
          r|	|}	}|rt	          |          \  }}|rt          |          }|rt          |          }t          ||	|
||||          |r|                                 S S # |r|                                 w w xY w)Nr   )r>   r?   r@   rA   rB   rC   rD   )	rS   r   r4  r6  rJ  rQ  rT  r=   close)rF   r)   rV  rC   r   rD   r   should_closer>   r?   r@   rA   rB   color_countchannel_counts                  r/   get_infor\  x  s+   &x00G\PRRRRRDR4R+ 	.%g..ME6$W--H .!5h!?!? . &v 	+!'**JD$ 	/%g..K 	3)'22MuVhTX\ep  |I  J  J  J 	MMOOOO	< 	MMOOOO	s   BB= =C)r   c                n    	 t          | ddd|d          }n# t          $ r Y dS w xY w|j        |j        fS )z
    Return (width, height) for a given img file content.
    Set exif_rotation=False to return stored dimensions as-is.
    :type filepath: Union[bytes, str, pathlib.Path]
    :rtype Tuple[int, int]
    TFrU  r   r   )r\  r   r>   r?   )rF   r   infos      r/   r   r     sV    tuTalqrrr   vv:t{""s    
&&c                 j    	 t          | ddd          }n# t          $ r Y dS w xY w|j        |j        fS )z
    Return (x DPI, y DPI) for a given img file content
    no requirements
    :type filepath: Union[bytes, str, pathlib.Path]
    :rtype Tuple[int, int]
    FT)r)   rV  rC   r^  )r\  r   rA   rB   )rF   r_  s     r/   getDPIra    sP    u$uEEE   vv9dis    
$$)?rN   r   rn   r   decimalr   typingr   r   r   r   r   r	   urllib.parser
   urllib.requestr   	xml.etreer   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   
_UNIT_INCH_TIFF_TYPE_SIZESr   r   r   r(   rL   r;   PathLike	PathInput	FileInputr=   rS   rb   rv   r   r   r   r   r   r   r   r   r2  r4  r6  rJ  rQ  rT  r   r\  r:   r   ra  r-   r2   r/   <module>rl     s   				 				 				        R R R R R R R R R R R R R R R R ! ! ! ! ! ! " " " " " " ! ! ! ! ! !
	

      		   *))      X    #ubk)*	)X~56	    
   & & & & &  05 5 52p p pf! ! !H
  
  
   " " "JK K K   &M2 M2 M2`; ; ;|( ( ($ $ $] ] ]@  .# # #L 37DY]#'$  y 4 T RV  37CL   , 7; # # #) #t #uS#X # # # # Y  5c?            r2   