§
    §‘Újn  ã                   óÒ  — U d Z ddlZddlmZ ddlmZmZmZmZm	Z	 ddl
mZ ddlmZmZ ddlmZmZmZ dd	lmZ dd
lmZmZmZ ddlmZmZmZmZmZmZ ej         dd…         dk    rddlm!Z! nddl"m!Z! 	 ddl#m$Z$m%Z% n# e&$ rZ' e&d¦  «        e'‚dZ'['ww xY wed         Z(e!e)d<   dZ*e+e)d<   	 d5dee,e-e         ef         de+de(de+de.e(e/f         f
d„Z0	 	 d6de1de.e+e+f         de+de+d e/de1fd!„Z2d"e(de.e+e+f         de1dee,ef         de.e(e1f         f
d#„Z3d"e,de.e+e+f         de1de$j$        fd$„Z4dede.eeeef         fd%„Z5de.e+e+f         de1d"e(dee,ef         de+d&e,de.e$j$        e,e,e/f         fd'„Z6de.e+e+f         de1d"e(de,de+de.e$j$        e,e,e/f         fd(„Z7d)e$j$        d*e8e,ef         d+edee,e-e         ef         d,e/de$j$        fd-„Z9d*e8e,ef         de+dee,e-e         ef         de.e(e/f         fd.„Z:d)e$j$        d*e8e,ef         d&e,d/e,d0e,d1e;e+         de.e$j$        e,e,f         fd2„Z<	 	 d7d*e8e,ef         d3ee8e,ef         df         d1ee;e+                  de.ee,         e1ef         fd4„Z=dS )8z1Functions to convert an image XObject to an imageé    N)ÚBytesIO)ÚAnyÚLiteralÚOptionalÚUnionÚcasté   )Úget_configuration)Úcheck_if_whitespace_onlyÚlogger_warning)ÚColorSpacesÚImageAttributesÚStreamAttributes)ÚFilterTypes)ÚEmptyImageDataErrorÚLimitReachedErrorÚPdfReadError)ÚArrayObjectÚDecodedStreamObjectÚEncodedStreamObjectÚ
NullObjectÚTextStringObjectÚis_null_or_none)é   é
   )Ú	TypeAlias)ÚImageÚUnidentifiedImageErrorz]pillow is required to do image extraction. It can be installed via 'pip install pypdf[image]')	Ú Ú1ÚRGBÚ2bitsÚ4bitsÚPÚLÚRGBAÚCMYKÚ	ImageModer   ÚMAX_IMAGE_MODE_NESTING_DEPTHÚcolor_spaceÚcolor_componentsÚ	prev_modeÚdepthÚreturnc                 ó   — |t           k    rt          d¦  «        ‚t          | ¦  «        rdS d}t          | t          ¦  «        r| }�nØt          | t
          ¦  «        st          d| ¦  «        ‚| sdS | d                              d¦  «        rd| d         dd	…         z   }�n| d         d
k    rM| d                              ¦   «         }t          t          |d         ¦  «        }| 
                    dd¦  «        }�n&| d         dk    r<| d                              ¦   «         }t          ||||dz   ¦  «        \  }}|dv rd}||fS | d         dk    r6| d                              ¦   «         }t          ||||dz   ¦  «        \  }}|dfS | d         dk    r�| }t          | d         ¦  «        }| d                              ¦   «         }|dk    r=|dk    r7|d         d         dk    r#t          dt          |d         d         ¬¦  «         dS t          ||||dz   ¦  «        \  }}||fS dddddddd œ}	t          |	                     ¦   «         ¦  «        }
|	 
                    |¦  «        p(d|cxk    rt          |
¦  «        k     rn n|
|         nd	p|}||dk    fS )!z“
    Returns:
        Image mode, not taking into account mask (transparency).
        ColorInversion is required (like for some DeviceCMYK).

    z^Color spaces nested too deeply. If required, consider increasing MAX_IMAGE_MODE_NESTING_DEPTH.)r   Fr   zCannot interpret color spacer   z/Calz/Deviceé   Nú	/ICCBasedé   z/Nz
/Alternateú/Indexed)r!   r'   r$   ú/Separationr	   Tz/DeviceNú/DeviceCMYKz/BlackzGColor %(color)s converted to Gray. Please share PDF with pypdf dev team)ÚsourceÚcolor)r%   Tr    r%   r!   r'   r"   r#   )Ú1bitz/DeviceGrayÚpaletteú
/DeviceRGBr5   Ú2bitÚ4bit)r)   r   r   Ú
isinstanceÚstrÚlistÚ
startswithÚ
get_objectr   ÚintÚgetÚ_get_image_modeÚlenr   Ú__name__Úvalues)r*   r+   r,   r-   Úcolor_space_strÚicc_profileÚmodeÚinvert_colorÚoriginal_color_spaceÚmode_mapÚmode_valuess              úŽ/Users/tedpeters/Documents/Projects/Claude Projects/TPC Houses/house-viewer/.venv/lib/python3.11/site-packages/pypdf/generic/_image_xobject.pyrD   rD   *   s=  € ð Õ+Ò+Ð+ÝØlñ
ô 
ð 	
õ �{Ñ#Ô#ð ØˆyØ€OÝ�+�sÑ#Ô#ð +"Ø%ˆ‰Ý˜¥TÑ*Ô*ð )"ÝØ*¨Kñ
ô 
ð 	
ð ð %"ØˆyØ	�QŒ×	"Ò	" 6Ñ	*Ô	*ð #"Ø# k°!¤n°Q°R°RÔ&8Ñ8ˆ‰Ø	�QŒ˜;Ò	&Ð	&Ø! !”n×/Ò/Ñ1Ô1ˆÝ¥ [°Ô%6Ñ7Ô7ÐØ%Ÿ/š/¨,¸Ñ;Ô;ˆ‰Ø	�QŒ˜:Ò	%Ð	%Ø% aœ.×3Ò3Ñ5Ô5ˆÝ,ØÐ-¨y¸%À!¹)ñ
ô 
Ñˆˆlð �?Ð"Ð"ØˆDØ�\Ð!Ð!Ø	�QŒ˜=Ò	(Ð	(Ø% aœ.×3Ò3Ñ5Ô5ˆÝ,ØÐ-¨y¸%À!¹)ñ
ô 
Ñˆˆlð �TˆzÐØ	�QŒ˜:Ò	%Ð	%Ø*ÐÝ˜{¨1œ~Ñ.Ô.ÐØ% aœ.×3Ò3Ñ5Ô5ˆØ˜mÒ+Ð+Ð0@ÀAÒ0EÐ0EØ# AÔ& qÔ)¨XÒ5Ð5ÝØ]Ý#Ø.¨qÔ1°!Ô4ðñ ô ð ð
 �9Ý,ØÐ-¨y¸%À!¹)ñ
ô 
Ñˆˆlð �\Ð!Ð!ð ØØØØØØð&ð &€Hõ �x—’Ñ(Ô(Ñ)Ô)€Kà�Š�_Ñ%Ô%ð 	ð Ð$Ð7Ð7Ò7Ð7¥s¨;Ñ'7Ô'7Ò7Ð7Ð7Ð7Ð7ð Ð(Ô)Ð)àð		ð ð 	ð �˜’ÐÐó    r2   FÚdataÚsizeÚbitsÚcolorsÚscalec                 ór  — t          ¦   «         }|d         |z  }||d         z  }||j        k    rt          d|› d|j        › d�¦  «        ‚t          |¦  «        }d|z  dz
  }	|r|	rd|	z  nd}
|d         ||z  dz   dz  z  }t	          | ¦  «        x}|k     r!t          d	t          ¬
¦  «         | d||z
  z  z  } d}d|z
  }t          |d         ¦  «        D ]V}|d|z
  k    r
|dz  }d|z
  }t          |¦  «        D ]1}| |         |z	  |	z  |
z  ||||z  z   <   ||z  }|dk     r
|dz  }d|z
  }Œ2ŒWt          |¦  «        S )Nr   r2   zRequested buffer size z exceeds limit of ú.éÿ   é   é   z.Image data is not rectangular. Adding padding.)r6   ó    )	r
   Úimage_maximum_buffer_sizer   Ú	bytearrayrE   r   rF   ÚrangeÚbytes)rQ   rR   rS   rT   rU   ÚconfigurationÚsamples_per_rowÚbuffer_sizeÚbyte_bufferÚmaskÚfactorÚrequiredÚlengthÚ
data_indexÚbitÚyÚxs                    rO   Ú	bits2byterl   ‚   s»  € õ &Ñ'Ô'€Mð ˜1”g Ñ&€OØ! D¨¤GÑ+€KØ�]Ô<Ò<Ð<ÝØn [ÐnÐnÀMÔDkÐnÐnÐnñ
ô 
ð 	
õ ˜KÑ(Ô(€KØ�‰I˜‰?€Dð "Ð1 dÐ1ˆS�D‰[ˆ[°€Fà�AŒw˜?¨TÑ1°AÑ5¸!Ñ;Ñ<€HÝ�d‘)”)Ðˆ˜xÒ'Ð'ÝÐGÕPXÐYÑYÔYÐYØ�˜8 fÑ,Ñ-Ñ-ˆà€JØ
ˆd‰(€CÝ�4˜”7‰^Œ^ð ð ˆØ�!�d‘(Š?ˆ?Ø˜!‰OˆJØ�d‘(ˆCÝ�Ñ'Ô'ð 	ð 	ˆAà�zÔ" cÑ)¨TÑ1°VÑ;ð ˜˜A Ñ/Ñ/Ñ0ð �4‰KˆCØ�QŠwˆwØ˜a‘�
Ø˜$‘h�øð	õ �ÑÔÐrP   rJ   c                 óš   — | dvr| |fS t          | d         ¦  «        }|dk    rdt          |||dd¬¦  «        fS dt          |||¦  «        fS )	a,  
    Expand 2- or 4-bit-per-component samples to one byte per component.

    Pillow has no mode for sub-byte samples, so the packed data has to be
    unpacked before an image can be built from it. For a single-component
    color space the samples are palette/grayscale indices ("P"). For a
    multi-component space such as /DeviceRGB they are interleaved color
    components, so they are also scaled to the full 0-255 range and become
    an "RGB" image.

    Returns the resulting mode and data, unchanged when the mode is not a
    low-bit one.
    )r"   r#   r   r:   r!   r   T)rT   rU   r$   )rB   rl   )rJ   rR   rQ   r*   rS   s        rO   Ú_expand_low_bit_samplesrn   °   si   € ð& Ð%Ð%Ð%Ø�TˆzÐÝˆt�AŒw‰<Œ<€DØ�lÒ"Ð"Ø•i  d¨D¸À$ÐGÑGÔGÐGÐGØ•	˜$  dÑ+Ô+Ð+Ð+rP   c                 óî  ‡
— |d         |d         z  }t          | ¦  «        }||z  }t          ¦   «         }||j        k    rt          d|› d|j        › d�¦  «        ‚	 t	          j        | ||¦  «        }n‚# t          $ ru}t          |¦  «        }	|	dk    rt          d¦  «        |‚|	|z  dk    r‚ ||	z  Š
d                     ˆ
fd„|D ¦   «         ¦  «        }t	          j        | ||¦  «        }Y d }~nd }~ww xY w|S )	Nr   r2   zRequested image buffer size z exceeds limit rW   z9Data is 0 bytes, cannot process an image from empty data.rP   c              3   óX   •K  — | ]$}t          |ft          ‰¦  «        z  ¦  «        V — Œ%d S ©N)r_   rB   )Ú.0rk   Úks     €rO   ú	<genexpr>z$_image_from_bytes.<locals>.<genexpr>ä   s7   øè è € Ð;Ð;°�˜q˜d¥S¨¡V¤V™mÑ,Ô,Ð;Ð;Ð;Ð;Ð;Ð;rP   )	rE   r
   r\   r   r   Ú	frombytesÚ
ValueErrorr   Újoin)rJ   rR   rQ   Úpixel_countÚbytes_per_pixelÚrequired_byte_countr`   ÚimgÚexcÚdata_lengthrs   s             @rO   Ú_image_from_bytesr~   Ë   sO  ø€ ð �q”'˜D œGÑ#€KÝ˜$‘i”i€OØ%¨Ñ7Ðå%Ñ'Ô'€MØ˜]ÔDÒDÐDÝð:Ð+>ð :ð :ØÔ6ð:ð :ð :ñ
ô 
ð 	
ð
0ÝŒo˜d D¨$Ñ/Ô/ˆˆøÝð 
0ð 
0ð 
0Ý˜$‘i”iˆØ˜!ÒÐÝ%ØKñô àðð ˜Ñ$¨Ò)Ð)ØØ +Ñ-ˆØ�xŠxÐ;Ð;Ð;Ð;°dÐ;Ñ;Ô;Ñ;Ô;ˆÝŒo˜d D¨$Ñ/Ô/ˆˆˆˆˆˆøøøøð
0øøøð €Js   ÁA3 Á3
C2Á=A+C-Ã-C2c                 óÀ  — t          | ¦  «        }|dk    rd„ | D ¦   «         \  } }}}| |||fS | d         }t          |t          ¦  «        r|n|                     ¦   «         }|dk    red|v ra| d                              ¦   «         | d                              ¦   «         }} |                     d¦  «        \  }}t          |¦  «        }| |||fS t          d|› d	| › �¦  «        ‚)
Nr0   c              3   ó>   K  — | ]}|                      ¦   «         V — Œd S rq   )rA   )rr   Úvalues     rO   rt   z*__handle_flate__indexed.<locals>.<genexpr>ì   s.   è è € Ð+XÐ+XÀ5¨E×,<Ò,<Ñ,>Ô,>Ð+XÐ+XÐ+XÐ+XÐ+XÐ+XrP   r2   r   ú r   r	   z(Expected color space with 4 values, got z: )rE   r=   r>   rA   ÚsplitrB   r   )r*   ÚcountÚbaseÚhivalÚlookupÚelement1s         rO   Ú__handle_flate__indexedr‰   é   sü   € Ý�ÑÔ€EØ�‚z€zØ+XÐ+XÈKÐ+XÑ+XÔ+XÑ(ˆ�T˜5 &Ø˜D %¨Ð/Ð/ð ˜1Œ~€HÝ% hµÑ4Ô4ÐOˆxˆx¸(×:MÒ:MÑ:OÔ:O€HØ�‚z€z�f Ð(Ð(Ø)¨!œn×7Ò7Ñ9Ô9¸;Àq¼>×;TÒ;TÑ;VÔ;V�VˆØ—n’n VÑ,Ô,‰ˆˆeÝ�E‘
”
ˆØ˜D %¨Ð/Ð/Ý
ÐXÀ%ÐXÐXÈ;ÐXÐXÑ
YÔ
YÐYrP   Úobj_as_textc                 ó¸  ‡‡— t          |t          ¦  «        r |d         dk    rt          |¦  «        \  }}}Št          || ||¦  «        \  }}t	          || |¦  «        }|dk    �rŽt          ‰t
          t          f¦  «        r‰                     ¦   «         Št          ‰t          ¦  «        r‰j	        Št          ‰t          ¦  «        r‰                     ¦   «         Š	 ddddddœt          |dd¦  «        d                  \  }	}
}|j        d	k    r|	dk    rt          d
t          |¬¦  «         �nv|j        d	k    �rd|	z  }t!          ‰¦  «        }||k    rq||k     r2t          dt          ||¬¦  «         ‰t#          dg||z
  z  ¦  «        z  Šn/t%          ‰|d…         ¦  «        st          dt          ||¬¦  «         ‰d|…         Š‰d|	…         ‰|	d…         g}|                     d¦  «        Šˆfd„t)          |d         |d         ¦  «        D ¦   «         }|	dk    r|d         nt+          j        ||¦  «        }�ni|                     |
¦  «        }t!          ‰¦  «        |dz   |	z  k    rt          dt          |¬¦  «         dŠ�n|dk    r"d                     d„ ‰D ¦   «         ¦  «        Šd}nß|dk    rÙg }ˆfd„t1          ddt!          ‰¦  «        dz  z  d¦  «        D ¦   «         D ]�\  }}}}t3          dd|dz  z
  z  d|dz  z
  z  ¦  «        }t3          dd|dz  z
  z  d|dz  z
  z  ¦  «        }t3          dd|dz  z
  z  d|dz  z
  z  ¦  «        }|                     t#          |||f¦  «        ¦  «         Œ�d                     |¦  «        Šd}‰�|                     ‰|¬¦  «         |                     |t8          j        k    rdnd¦  «        }n}# t<          $ r t          dt          |¬¦  «         dŠY nXw xY wt?          |¦  «        sE|d         dk    r9|d	k    r3t          |||¦  «        d         }||k    rt+          j         || |¦  «        }|dk    rd }d!}nd"}d#}|||d$fS )%zª
    Process image encoded using the zlib/deflate compression method, corresponds to the FlateDecode filter
    Returns img, image_format, extension, color inversion
    r   r3   )r   r   r   )r2   r$   r%   )r   r$   r!   )r0   r$   r'   )r    r%   r$   r!   r'   r   r    z`Cannot apply lookup for base %(base)s to image with mode 1. Please share PDF with pypdf dev team)r6   r…   r	   zLNot enough lookup values: Expected %(expected_count)d, got %(actual_count)d.)r6   Úexpected_countÚactual_countNzJToo many lookup values: Expected %(expected_count)d, got %(actual_count)d.r%   c                 óV   •— g | ]%\  }}‰                      |gd z  |gd z  z   ¦  «        ‘Œ&S )é€   )Úpoint)rr   Ú	low_valueÚ
high_valuer6   s      €rO   ú
<listcomp>z!_handle_flate.<locals>.<listcomp>E  sS   ø€ ð ð ð ñ .˜	 :ð —L’LØ"˜ cÑ)¨Z¨L¸3Ñ,>Ñ>ñô ðð ð rP   r2   z'Invalid Lookup Table in %(obj_as_text)s©r6   rŠ   rP   c                 ó2   — g | ]}t          |||g¦  «        ‘ŒS © )r_   )rr   Úbs     rO   r“   z!_handle_flate.<locals>.<listcomp>S  s&   € Ð&HÐ&HÐ&H¸A¥u¨a°°A¨YÑ'7Ô'7Ð&HÐ&HÐ&HrP   r!   r'   c              3   ó2   •K  — | ]}‰||d z   …         V — ŒdS )r0   Nr–   )rr   Únr‡   s     €rO   rt   z _handle_flate.<locals>.<genexpr>Y  sA   øè è € ð +ð +Ø./˜˜q 1 q¡5˜yÔ)ð+ð +ð +ð +ð +ð +rP   r0   rX   )Úrawmodez=Base %(base)s not coded. Please share PDF with pypdf dev teamr1   ÚTIFFú.tifÚPNGú.pngF)!r=   r   r‰   rn   r~   r   r   Úget_datar   Úoriginal_bytesr>   ÚencoderD   rJ   r   rF   rE   r_   r   ÚconvertÚzipr   Úmergerw   r^   rB   ÚappendÚ
putpaletter   ÚDEVICE_GRAYÚKeyErrorr   ru   )rR   rQ   rJ   r*   rT   rŠ   r…   r†   r{   ÚnbÚconvrŒ   r�   Ú
colors_arrÚbandsÚ_rgbÚ_cÚ_mÚ_yÚ_kÚ_rÚ_gÚ_bÚmode2Úimage_formatÚ	extensionr‡   r6   s                             @@rO   Ú_handle_flater¸   û   sL  øø€ õ �+�{Ñ+Ô+ð P°¸A´À*Ò0LÐ0LÝ+BÀ;Ñ+OÔ+OÑ(ˆ�T˜5 &Ý(¨¨t°T¸;ÑGÔG�J€Dˆ$Ý
˜D $¨Ñ
-Ô
-€CØ�jÒ Ñ Ý�fÕ2Õ4GÐHÑIÔIð 	'Ø—_’_Ñ&Ô&ˆFÝ�fÕ.Ñ/Ô/ð 	+ØÔ*ˆFÝ�f�cÑ"Ô"ð 	%Ø—]’]‘_”_ˆFðO	Qà Ø"Ø Ø&Ø(ðð õ ˜d A rÑ*Ô*¨1Ô-ô/‰NˆB��dð Œx˜3Šˆ 2¨¢7 7õ ð;å#Øð	ñ ô ð ñ ð ”˜S’‘à!" R¡�Ý" 6™{œ{�Ø >Ò1Ð1Ø# nÒ4Ð4Ý&ØjÝ#+Ø+9Ø)5ð	ñ ô ð ð ¥%¨¨¨~ÀÑ/LÑ(MÑ"NÔ"NÑN˜˜Ý5°f¸^¸_¸_Ô6MÑNÔNð Ý&ØhÝ#+Ø+9Ø)5ð	ñ ô ð ð $ O ^ OÔ4�FØ$ S b Sœk¨6°"°#°#¬;Ð7�
ØŸš SÑ)Ô)�ðð ð ð õ 25°ZÀ´]ÀJÈqÄMÑ1RÔ1Rð	ñ ô �ð #%¨¢' '�e˜A”h�h­u¬{¸4ÀÑ/GÔ/G�‘à—k’k $Ñ'Ô'�Ý�v‘;”; 5¨1¡9°Ñ"2Ò2Ð2Ý"Ð#LÕU]ÐkvÐwÑwÔwÐwØ!�F‘FØ˜S’[�[à ŸXšXÐ&HÐ&HÀÐ&HÑ&HÔ&HÑIÔI�FØ �D�Dð ˜V’^�^Ø�Dð+ð +ð +ð +Ý38¸¸AÅÀVÁÄÐPQÑAQÑ<RÐTUÑ3VÔ3Vð+ñ +ô +ð 9ð 9™˜˜B  Bõ ! ¨¨B°©H©Ñ!5¸¸RÀ#¹X¹Ñ!FÑGÔG˜Ý  ¨¨B°©H©Ñ!5¸¸RÀ#¹X¹Ñ!FÑGÔG˜Ý  ¨¨B°©H©Ñ!5¸¸RÀ#¹X¹Ñ!FÑGÔG˜ØŸš¥E¨2¨r°2¨,Ñ$7Ô$7Ñ8Ô8Ð8Ð8Ø ŸXšX d™^œ^�FØ �DØÐ%Ø—N’N 6°4�NÑ8Ô8Ð8Ø—+’+ T­[Ô-DÒ%DÐ%D˜c˜cÈ%ÑPÔPˆCˆCøõO ð 	ð 	ð 	ÝØOÝØðñ ô ð ð
 ˆFˆFˆFð	øøøõP ˜[Ñ)Ô)ð 	8¨k¸!¬nÀÒ.KÐ.Kð
 �3Š;ˆ;å# K°¸Ñ>Ô>¸qÔAˆEØ�uŠ}ˆ}Ý”o d¨D°$Ñ7Ô7�Øˆv‚~€~ØˆØˆ	ˆ	àˆØˆ	Ø�˜i¨Ð.Ð.s   Ã'O
 Ï
#O0Ï/O0c                 ó  — t          j        t          |¦  «        d¬¦  «        }t          |||¦  «        \  }}|dk    r t	          t
          |j        ¦  «        }|dk    }|j        dk    r|dk    rd}|j        |k    s|j        |hddhk    r|}nR|j        |hddhk    r.t          j        ||j        | 	                    ¦   «         ¦  «        }n| 
                    |¦  «        }|j        dk    r|d	k    r| 
                    d¦  «        }|d
d|fS )zc
    Process image encoded as JPX/JPEG2000
    Returns img, image_format, extension, inversion
    )ÚJPEG2000©Úformatsr   r'   r&   r!   r%   r$   r1   rº   ú.jp2)r   Úopenr   rD   r   r(   rJ   ru   rR   Útobytesr¢   )rR   rQ   rJ   r*   rT   Úimg1rK   r{   s           rO   Ú_handle_jpxrÁ   x  s  € õ œ
¥7¨4¡=¤=¸-ÐHÑHÔH€DÝ(¨°f¸dÑCÔCÑ€Dˆ,Øˆr‚z€zÝ•I˜tœyÑ)Ô)ˆØ˜v’~ˆØ„y�FÒÐ˜t uš}˜}Øˆà„y�DÒÐ˜TœY¨Ð-°#°s°Ò;Ð;àˆˆØ
Œ)�TÐ	˜v vÐ.Ò	.Ð	.õ Œo˜d D¤I¨t¯|ª|©~¬~Ñ>Ô>ˆˆà�lŠl˜4Ñ Ô ˆð „x�6ÒÐ˜k¨[Ò8Ð8Ø�kŠk˜%Ñ Ô ˆØ�
˜F LÐ0Ð0rP   r{   Úx_objectÚlfiltersrK   c                 ó  ‡‡‡	— t           j        |v r[|t           j                 Š| j        dk    r=|t          j        k    r-ˆfd„t          dt          ‰¦  «        dz
  d¦  «        D ¦   «         Šn›| j        dk    r?|t          j        k    r/|sddgnddgŠ‰t          |                      ¦   «         ¦  «        z  ŠnQ| j        dk    r|t          j        k    s|r2| j        dk    r'ddgt          |                      ¦   «         ¦  «        z  Šnd Št          |t          ¦  «        r |d                              ¦   «         d	k    rd Št          |t          ¦  «        rD|d                              ¦   «         d
k    r&ddgt          |                      ¦   «         ¦  «        z  Š‰�Dt          ‰t          ¦  «        rt          ‰¦  «        dz  dk    rt          dt          ‰¬¦  «         d Š‰�¯t          ˆfd„t          t          ‰¦  «        ¦  «        D ¦   «         ¦  «        szg }t          dt          ‰¦  «        d¦  «        D ]D}‰|         Š	‰|dz            Š|                     ˆˆ	fd„t          d¦  «        D ¦   «         ¦  «         ŒE|                      |¦  «        } | S )Nr'   c                 ó@   •— g | ]}‰|d z            ‰|         fD ]}|‘ŒŒS )r2   r–   )rr   Úindexr�   Údecodes      €rO   r“   z!_apply_decode.<locals>.<listcomp>²  sR   ø€ ð ð ð àØ$ U¨Q¡YÔ/°¸´Ð?ðð ð ð ðð ð ð rP   r   r2   r	   g      ð?g        r%   r3   r4   zOIgnoring malformed /Decode array %(decode)s; expected an even number of values.)r6   rÇ   c              3   ó6   •K  — | ]}‰|         |d z  k    V — ŒdS )r	   Nr–   )rr   ÚirÇ   s     €rO   rt   z _apply_decode.<locals>.<genexpr>Ö  s0   øè è € Ð%UÐ%U¸Q f¨Q¤i°1°q±5Ò&8Ð%UÐ%UÐ%UÐ%UÐ%UÐ%UrP   c              3   óT   •K  — | ]"}t          d |d z  ‰‰z
  z  ‰z   z  ¦  «        V — Œ#dS )g     ào@N)Úround)rr   ÚjÚdmaxÚdmins     €€rO   rt   z _apply_decode.<locals>.<genexpr>Û  sS   øè è € ð ð ØFG•�e˜q 5™y¨D°4©KÑ8¸4Ñ?Ñ@ÑAÔAðð ð ð ð ð rP   é   )r   ÚDECODErJ   ÚFTÚ
DCT_DECODEr^   rE   Ú
JPX_DECODEÚgetbandsr=   r   rA   r?   r   rF   ÚallÚextendr�   )
r{   rÂ   rÃ   r*   rK   ÚlutrÉ   rÇ   rÍ   rÎ   s
          @@@rO   Ú_apply_decoderØ   ›  sÃ  øøø€ õ Ô Ð)Ð)Ø�/Ô0Ô1ˆØŒ8�vÒÐ (­b¬mÒ";Ð";ðð ð ð å" 1¥c¨&¡k¤k°A¡o°qÑ9Ô9ðñ ô ˆFøð
 
Œ�VÒ	Ð	 ­B¬MÒ 9Ð 9Ø#/Ð?�#�s��°c¸3°ZˆØ�#˜cŸlšl™nœnÑ-Ô-Ñ-ˆˆØ
Œ(�fÒ
Ð
 ­R¬]Ò!:Ð!:ÀÐ!:ÐQTÔQYÐ]`ÒQ`ÐQ`Ø�s��c #§,¢,¡.¤.Ñ1Ô1Ñ1ˆˆàˆõ 	�;¥Ñ,Ô,ðà˜ŒN×%Ò%Ñ'Ô'¨:Ò5Ð5àˆå�;¥Ñ,Ô,ð2à˜ŒN×%Ò%Ñ'Ô'¨=Ò8Ð8à�s��c #§,¢,¡.¤.Ñ1Ô1Ñ1ˆØÐÝ�v�tÑ$Ô$ð Ý(+¨F©¬°a©¸1Ò(<Ð(<õ 	Ø]ÝØð	
ñ 	
ô 	
ð 	
ð
 ˆØÐ¥#Ð%UÐ%UÐ%UÐ%UÅ%ÍÈFÉÌÑBTÔBTÐ%UÑ%UÔ%UÑ"UÔ"UÐØˆÝ�q�#˜f™+œ+ qÑ)Ô)ð 	ð 	ˆAØ˜!”9ˆDØ˜!˜a™%”=ˆDØ�JŠJð ð ð ð ð ÝKPÐQTÉ:Ì:ðñ ô ñ ô ð ð ð �iŠi˜‰nŒnˆØ€JrP   c                 ó<  — |                       dd¦  «        }t          j        | v r(| t          j                 t          j        k    r|dk    rdS |dk     rt          |› d�dd¦  «        \  }}n/t          ||dk    rt          |¦  «        sd|vrd	n|d¦  «        \  }}||fS )
Nz/BitsPerComponentrZ   )r!   Fri   r   r   r2   ÚGrayr	   )rC   r   ÚCOLOR_SPACEr   Ú
DEVICE_RGBrD   r   )rÂ   rT   r*   rS   rJ   rK   s         rO   Ú_get_mode_and_invert_colorrÝ   â  sÕ   € ð �<Š<Ð+¨QÑ/Ô/€DåÔ# xÐ/Ð/Ø•_Ô0Ô1µ[Ô5KÒKÐKØ�AŠIˆIð ˆ|Øˆa‚x€xÝ,ØˆLˆLˆL˜!˜Rñ
ô 
Ñˆˆlˆlõ -Øð ˜!’�å'¨Ñ4Ô4ð ð  kÐ1Ð1ð ˆAð Øñ
ô 
Ñˆˆlð �ÐÐrP   r¶   r·   Úvisitedc                 óL  — t           j        |vr| ||fS |t           j                 }t          |¦  «        |v rt          dt          |¬¦  «         | ||fS t          ||¬¦  «        d         }| j        |j        k    r$t          dt          | j        |j        |¬¦  «         nv|j        dk    r|                     d¦  «        }| j        dk    r|                      d	¦  «        } n | j        d
k    r|                      d¦  «        } |  	                    |¦  «         d|v rd}d}nd}d}| ||fS )Nz3Ignoring cyclic /SMask reference in %(obj_as_text)sr”   )rÞ   r	   zSImage and mask size not matching: %(image_size)s vs. %(alpha_size)s %(obj_as_text)s)r6   Ú
image_sizeÚ
alpha_sizerŠ   r%   r$   r!   r    ÚJPEGrº   r½   r�   rž   )
r   ÚS_MASKÚidr   rF   Ú_xobj_to_imagerR   rJ   r¢   Úputalpha)r{   rÂ   rŠ   r¶   r·   rÞ   Ús_maskÚalphas           rO   Ú_apply_alpharé     s]  € õ Ô XÐ-Ð-Ø�I˜|Ð+Ð+à•oÔ,Ô-€FÝ	ˆ&�z„z�WÐÐõ
 	ØAÝØ#ð	
ñ 	
ô 	
ð 	
ð
 �I˜|Ð+Ð+å˜6¨7Ð3Ñ3Ô3°AÔ6€EØ
„x�5”:ÒÐÝØaÝØ”xØ”zØ#ð	
ñ 	
ô 	
ð 	
ð 	
ð Œ:˜ÒÐØ—M’M #Ñ&Ô&ˆEØŒ8�sŠ?ˆ?Ø—+’+˜eÑ$Ô$ˆCˆCØŒX˜Š_ˆ_Ø—+’+˜cÑ"Ô"ˆCØ�Š�UÑÔÐà�ÐÐØ!ˆØˆ	ˆ	àˆØˆ	à�	˜<Ð'Ð'rP   Úpillow_parametersc                 óZ  — |€t          ¦   «         }|                     t          | ¦  «        ¦  «         | €| j                             ¦   «         n|                      ¦   «         }t          t          | t          j                 ¦  «        t          t          | t          j	                 ¦  «        f}|  
                    ¦   «         }t          |t          ¦  «        r|                     ¦   «         }t          |¦  «        |d         |d         z  z  dk    r|d         dk    r
|dd…         }|                      dd¦  «        }|                      dt!          ¦   «         ¦  «                             ¦   «         }t          |t$          ¦  «        r-t          |¦  «        dk    r|d                              ¦   «         }t'          | ||¦  «        \  }}	|                      t(          j        t!          ¦   «         ¦  «                             ¦   «         }
|
rt          |
t$          ¦  «        r|
d         n|
}|                      t(          j        ¦  «        }|r%t          |t.          t$          f¦  «        r	|d         }ni }t          |t0          ¦  «        si }d}|t2          j        t2          j        fv rt9          ||||||¦  «        \  }}}}�nÔ|t2          j        t2          j        fv rv|t2          j        k    rd}d	}nd
}d}	 t?          j         tC          |¦  «        d¬¦  «        }�n{# tD          $ r* tG          ||||¦  «        \  }}tI          |||¦  «        }Y �nHw xY w|t2          j%        k    r)t?          j         tC          |¦  «        d¬¦  «        dd}}}�n|t2          j&        k    rtO          |||||¦  «        \  }}}}	nâ|t2          j(        k    r-t?          j         tC          |¦  «        d¬¦  «        dd	df\  }}}}	n¥|t2          j)        k    r-t?          j         tC          |¦  «        d¬¦  «        d
ddf\  }}}}	nh|dk    rtI          |||¦  «        dddf\  }}}}	nG|dk    rtU          d| › �¦  «        ‚tG          ||||¦  «        \  }}tI          |||¦  «        d
ddf\  }}}}	tW          || |||	¦  «        }tY          || ||||¬¦  «        \  }}}|€i }|dk    rd|_-        d|vrd|d<   tC          ¦   «         }	  |j.        |fd|i|¤Ž nN# t^          $ rA | 0                    d¦  «        }d
}d}tC          ¦   «         }| .                    ||¬¦  «         Y nw xY w| 1                    ¦   «         }	 t?          j         tC          |¦  «        ¦  «        }n0# td          $ r#}tg          dth          |¬¦  «         d}Y d}~nd}~ww xY w|||fS ) aT  
    Users need to have the pillow package installed.

    It's unclear if pypdf will keep this function here, hence it's private.
    It might get removed at any point.

    Args:
        x_object:
        pillow_parameters: parameters provided to Pillow Image.save() method,
            cf. <https://pillow.readthedocs.io/en/stable/reference/Image.html#PIL.Image.Image.save>
        visited: Set of id() values of XObjects already being converted higher
            up the /SMask chain, used to detect cyclic soft masks.

    Returns:
        Tuple[file extension, bytes, PIL.Image.Image]

    Nr   r2   éÿÿÿÿr   z/Colorsz/ColorSpacer›   z.tiffr�   rž   )r›   r�   r»   )râ   râ   z.jpg)r›   F)r�   ÚPPMr'   rœ   r   zColorSpace field not found in )r{   rÂ   rŠ   r¶   r·   rÞ   ÚqualityÚkeepÚformatr&   )rð   z#Failed loading image: %(exception)s)r6   Ú	exception)5ÚsetÚaddrä   Úindirect_referenceÚ__repr__r   rB   r   ÚWIDTHÚHEIGHTrŸ   r=   r>   r¡   rE   rC   r   rA   r?   rÝ   r   ÚFILTERÚDECODE_PARMSÚtupleÚdictrÑ   ÚFLATE_DECODEÚRUN_LENGTH_DECODEr¸   Ú
LZW_DECODEÚASCII_85_DECODEr   r¾   r   r   rn   r~   rÒ   rÓ   rÁ   ÚCCITT_FAX_DECODEÚJBIG2_DECODEr   rØ   ré   rð   ÚsaveÚOSErrorr¢   ÚgetvalueÚ	Exceptionr   rF   )rÂ   rê   rÞ   rŠ   rR   rQ   rT   r*   rJ   rK   ÚfiltersÚlast_filterÚdecode_parmsr·   r{   r¶   Ú_Úfallback_modeÚfallback_dataÚimg_byte_arrrÀ   rñ   s                         rO   rå   rå   9  s-  € ð, €Ý‘%”%ˆØ‡K‚K•�8‘”ÑÔÐð
 Ðð 	Ô#×,Ò,Ñ.Ô.Ð.à×ÒÑ Ô ð õ •�h�Ô4Ô5Ñ6Ô6½½SÀ(Í?ÔKaÔBbÑ8cÔ8cÐd€DØ×ÒÑÔ€DÝ�$�ÑÔð Ø�{Š{‰}Œ}ˆÝ
ˆ4�y„y�D˜”G˜d 1œgÑ%Ñ&¨!Ò+Ð+°°R´¸DÒ0@Ð0@Ø�C�R�CŒyˆð �\Š\˜) QÑ'Ô'€FØ—|’| Mµ:±<´<Ñ@Ô@×KÒKÑMÔM€KÝ�+�tÑ$Ô$ð 2­¨[Ñ)9Ô)9¸QÒ)>Ð)>Ø! !”n×/Ò/Ñ1Ô1ˆå3°H¸fÀkÑRÔRÑ€Dˆ,ð �lŠlÕ+Ô2µJ±L´LÑAÔA×LÒLÑNÔN€Gð ")ÐS­Z¸ÅÑ-FÔ-FÐS�'˜"”+�+ÈG€KØ—<’<Õ 0Ô =Ñ>Ô>€LØð �
 <µ%½°Ñ?Ô?ð Ø# A”ˆˆàˆÝ�l¥DÑ)Ô)ð Øˆà€IØ•r”­Ô(<Ð=Ð=Ð=Ý*7ØØØØØØñ+
ô +
Ñ'ˆˆ\˜9 a¡að 
�œ­Ô(:Ð;Ð	;Ð	;ð �"œ-Ò'Ð'Ø!ˆLØˆIˆIà ˆLØˆIð	HÝ”*�W T™]œ]°OÐDÑDÔDˆC‰CøÝ%ð 	Hð 	Hð 	HÝ+BØ�d˜D +ñ,ô ,Ñ(ˆM˜=õ $ M°4¸ÑGÔGˆCˆC‰Cð		Høøøð
 
�œÒ	%Ð	%Ý',¤zµ'¸$±-´-ÈÐ'SÑ'SÔ'SÐU[Ð]c˜9ˆ\ˆ‰à	�œÒ	%Ð	%Ý5@Ø�$˜˜k¨6ñ6
ô 6
Ñ2ˆˆ\˜9 l lð 
�Ô+Ò	+Ð	+åŒJ•w˜t‘}”}¨iÐ8Ñ8Ô8ØØØð	6
Ñ2ˆˆ\˜9 l lð 
�œÒ	'Ð	'åŒJ•w˜t‘}”}¨nÐ=Ñ=Ô=ØØØð	6
Ñ2ˆˆ\˜9 l lð 
�Šˆå˜d D¨$Ñ/Ô/ØØØð	6
Ñ2ˆˆ\˜9 l lð 
�ŠˆÝÐF¸HÐFÐFÑGÔGÐGõ -¨T°4¸¸{ÑKÔK‰
ˆˆdå˜d D¨$Ñ/Ô/ØØØð	6
Ñ2ˆˆ\˜9 lõ ˜˜X {°KÀÑ
NÔ
N€CÝ#/Ø˜(°È,ÐbkØð$ñ $ô $Ñ €Cˆ�Lð
 Ð ØÐà�vÒÐð ˆŒ
ØÐ-Ð-Ð-Ø+1Ð˜iÑ(õ ‘9”9€Lð5ØˆŒ�ÐHÐH lÐHÐ6GÐHÐHÐHÐHøÝð 5ð 5ð 5à�{Š{˜6Ñ"Ô"ˆØˆØˆ	Ý‘y”yˆØ�	Š	�, |ˆ	Ñ4Ô4Ð4Ð4Ð4ð5øøøð × Ò Ñ"Ô"€DðÝŒj� ™œÑ'Ô'ˆˆøÝð ð ð ÝÐ<ÅXÐYbÐcÑcÔcÐcØˆˆˆˆˆˆøøøøðøøøð �d˜CÐÐs=   Ë-#L Ì0MÍMÓ"S3 Ó3AT>Ô=T>Õ!U8 Õ8
V%ÖV Ö V%)r   )r2   F)NN)>Ú__doc__ÚsysÚior   Útypingr   r   r   r   r   Ú_configurationr
   Ú_utilsr   r   Ú	constantsr   r   r   r   rÑ   Úerrorsr   r   r   Úgenericr   r   r   r   r   r   Úversion_infor   Útyping_extensionsÚPILr   r   ÚImportErrorrñ   r(   Ú__annotations__r)   rB   r>   r?   rú   ÚboolrD   r_   rl   rn   r~   r‰   r¸   rÁ   rû   rØ   rÝ   rò   ré   rå   r–   rP   rO   ú<module>r     sC  ðØ 7Ð 7Ð 7à 
€
€
€
Ø Ð Ð Ð Ð Ð Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6à .Ð .Ð .Ð .Ð .Ð .Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ )Ð )Ð )Ð )Ð )Ð )Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ Iðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð Ô�B�Q�BÔ˜7Ò"Ð"Ø Ð Ð Ð Ð Ð Ð à+Ð+Ð+Ð+Ð+Ð+ðØ1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1øØð ð ð Ø
ˆ+ð	=ñô ð ðøøøøðøøøð Ø>ô€	ˆ9ð ð ñ ð %'Ð ˜cÐ &Ð &Ñ &ð ð	U ð U Ø�s˜D œI sÐ*Ô+ðU àðU ð ðU ð ð	U ð
 ˆ9�dˆ?ÔðU ð U ð U ð U ðx Øð+ð +Ø
ð+à
��S�Œ/ð+ð ð+ð ð	+ð
 ð+ð ð+ð +ð +ð +ð\,Ø
ð,à
��S�Œ/ð,ð ð,ð �s˜KÐ'Ô(ð	,ð
 ˆ9�eÐÔð,ð ,ð ,ð ,ð6Ø
ðØ˜3 ˜8”_ðØ,1ðà
„[ðð ð ð ð<Z¨ð Z¸¸sÀCÈÈcÐ?QÔ9Rð Zð Zð Zð Zð$z/Ø
��S�Œ/ðz/à
ðz/ð ðz/ð �s˜KÐ'Ô(ð	z/ð
 ðz/ð ðz/ð ˆ5Œ;˜˜S $Ð&Ô'ðz/ð z/ð z/ð z/ðz 1Ø
��S�Œ/ð 1à
ð 1ð ð 1ð ð	 1ð
 ð 1ð ˆ5Œ;˜˜S $Ð&Ô'ð 1ð  1ð  1ð  1ðFDØ	ŒðDà�3˜�8ŒnðDð ðDð �s˜D œI sÐ*Ô+ð	Dð
 ðDð „[ðDð Dð Dð DðNØ�3˜�8ŒnðØ&)ðØ8=¸cÀ4ÈÄ9ÈcÐ>QÔ8Rðà
ˆ9�dˆ?Ôðð ð ð ðB3(à	Œð3(ð �3˜�8Œnð3(ð ð	3(ð
 ð3(ð ð3(ð �ŒXð3(ð ˆ5Œ;˜˜SÐ Ô!ð3(ð 3(ð 3(ð 3(ðp :>Ø&*ðd ð d Ø�s˜C�x”.ðd à   c¨3 h¤°Ð!5Ô6ðd ð ˜#˜cœ(Ô#ðd ð ˆ8�CŒ=˜% Ð$Ô%ð	d ð d ð d ð d ð d ð d s   Á5A> Á>BÂBÂB