Ë
    ˜2Úi…W  ã                   óÚ   — d Z ddlZddlZddlZddlmZ ddlmZ ddlm	Z	m
Z
 dxZZd„ Z G d„ d	«      Z G d
„ dee«      Z G d„ de«      Z G d„ de«      Z G d„ dee«      Z G d„ d«      Zy)z
A low-level PDF generator.

é    N)ÚBOM_UTF16_BE)Úmd5)ÚceilÚlogz0.12.1c                 ó\  — t        | t        «      r| S t        | t        «      rU| j                  «       r#t	        t        | «      «      j                  d«      S | d›j                  d«      j                  d«      S t        | t        «      r| j                  S t	        | «      j                  d«      S )zConvert item to bytes.ÚasciiÚfÚ0)
Ú
isinstanceÚbytesÚfloatÚ
is_integerÚstrÚintÚencodeÚrstripÚObjectÚdata)Úitems    úE/var/www/html/acx/venv/lib/python3.12/site-packages/pydyf/__init__.pyÚ	_to_bytesr      s‡   € ä�$œÔØˆÜ	�Dœ%Ô	 Ø�?‰?ÔÜ”s˜4“y“>×(Ñ(¨Ó1Ð1à˜1�X×%Ñ% cÓ*×1Ñ1°'Ó:Ð:Ü	�Dœ&Ô	!Ø�y‰yÐÜˆt‹9×Ñ˜GÓ$Ð$ó    c                   óV   — e Zd ZdZd„ Zed„ «       Zed„ «       Zed„ «       Zed„ «       Z	y)r   zBase class for PDF objects.c                 ó<   — d | _         d| _        d| _        d| _        y )Nr   Ún)ÚnumberÚoffsetÚ
generationÚfree©Úselfs    r   Ú__init__zObject.__init__    s    € àˆŒàˆŒàˆŒð ˆ�	r   c                 óz   — | j                   › d| j                  › d�j                  «       }|| j                  z   dz   S )z%Indirect representation of an object.ú z obj
s   
endobj)r   r   r   r   )r!   Úheaders     r   ÚindirectzObject.indirect+   s<   € ð —K‘K�=  $§/¡/Ð!2°&Ð9×@Ñ@ÓBˆØ˜Ÿ	™	Ñ! KÑ/Ð/r   c                 óV   — | j                   › d| j                  › d�j                  «       S )zObject identifier.r$   z R)r   r   r   r    s    r   Ú	referencezObject.reference1   s)   € ð —+‘+�˜a §¡Ð0°Ð3×:Ñ:Ó<Ð<r   c                 ó   — t        «       ‚)z@Data contained in the object. Shall be defined in each subclass.)ÚNotImplementedErrorr    s    r   r   zObject.data6   s   € ô "Ó#Ð#r   c                 óB   — | j                    xr t        | t        «       S )z7Whether the object can be included in an object stream.)r   r   ÚStreamr    s    r   ÚcompressiblezObject.compressible;   s    € ð —?‘?Ð"ÒC¬:°d¼FÓ+CÐ'CÐCr   N)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r"   Úpropertyr&   r(   r   r-   © r   r   r   r      s\   „ Ù%ò	ð ñ0ó ð0ð
 ñ=ó ð=ð ñ$ó ð$ð ñDó ñDr   r   c                   ó(   — e Zd ZdZdd„Zed„ «       Zy)Ú
DictionaryzPDF Dictionary object.Nc                 ób   — t         j                  | «       t        j                  | |xs i «       y ©N)r   r"   Údict)r!   Úvaluess     r   r"   zDictionary.__init__C   s    € Ü�‰˜ÔÜ�‰�d˜FšL bÕ)r   c                 ó¶   — | j                  «       D ��cg c]"  \  }}dt        |«      z   dz   t        |«      z   ‘Œ$ }}}ddj                  |«      z   dz   S c c}}w )Nó   /ó    ó   <<r   ó   >>)Úitemsr   Újoin)r!   ÚkeyÚvalueÚresults       r   r   zDictionary.dataG   sc   € ð #Ÿj™j›l÷,á��Uð ”9˜S“>Ñ! DÑ(¬9°UÓ+;Ó;ð,ˆñ ,ð �s—x‘x Ó'Ñ'¨%Ñ/Ð/ùó,s   ”'Ar7   ©r.   r/   r0   r1   r"   r2   r   r3   r   r   r5   r5   A   s   „ Ù ó*ð ñ0ó ñ0r   r5   c                   ó4  ‡ — e Zd ZdZd,ˆ fd„	Zd-d„Zd„ Zd.d„Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd.d„Zd.d„Zd.d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd.d„Zd.d„Zd.d„Zd„ Zd„ Zd„ Z d„ Z!d „ Z"d!„ Z#d"„ Z$d#„ Z%d$„ Z&d%„ Z'd&„ Z(d'„ Z)d(„ Z*d)„ Z+d*„ Z,e-d+„ «       Z.ˆ xZ/S )/r,   zPDF Stream object.c                 ó\   •— t         ‰| �  «        |xs g | _        |xs i | _        || _        y r7   )Úsuperr"   ÚstreamÚextraÚcompress)r!   rH   rI   rJ   Ú	__class__s       €r   r"   zStream.__init__Q   s+   ø€ Ü‰ÑÔà’l ˆŒà’[˜bˆŒ
à ˆ�r   c                 óè   — | j                   j                  d|› �«       |€| j                   j                  d«       y| j                   j                  |«       | j                   j                  d«       y)zBegin marked-content sequence.ú/Ns   BMCs   BDC©rH   Úappend)r!   ÚtagÚproperty_lists      r   Úbegin_marked_contentzStream.begin_marked_contentZ   sV   € à�‰×Ñ˜Q˜s˜e˜9Ô%ØÐ Ø�K‰K×Ñ˜vÕ&à�K‰K×Ñ˜}Ô-Ø�K‰K×Ñ˜vÕ&r   c                 ó:   — | j                   j                  d«       y)zBegin a text object.s   BTNrN   r    s    r   Ú
begin_textzStream.begin_textc   ó   € à�‰×Ñ˜5Õ!r   c                 óL   — | j                   j                  |rd«       yd«       y)a  Modify current clipping path by intersecting it with current path.

        Use the nonzero winding number rule to determine which regions lie
        inside the clipping path by default.

        Use the even-odd rule if ``even_odd`` set to ``True``.

        s   W*ó   WNrN   ©r!   Úeven_odds     r   ÚclipzStream.clipg   s   € ð 	�‰×Ñ¡H˜5Õ7°$Õ7r   c                 ó:   — | j                   j                  d«       y)z�Close current subpath.

        Append a straight line segment from the current point to the starting
        point of the subpath.

        ó   hNrN   r    s    r   ÚclosezStream.closer   s   € ð 	�‰×Ñ˜4Õ r   c                 óÒ   — | j                   j                  dj                  t        |«      t        |«      t        |«      t        |«      t        |«      t        |«      df«      «       y)u¯   Add cubic BÃ©zier curve to current path.

        The curve shall extend from ``(x3, y3)`` using ``(x1, y1)`` and ``(x2,
        y2)`` as the BÃ©zier control points.

        r<   ó   cN©rH   rO   r@   r   )r!   Úx1Úy1Úx2Úy2Úx3Úy3s          r   Úcurve_tozStream.curve_to{   sO   € ð 	�‰×Ñ˜4Ÿ9™9Ü�b‹Mœ9 R›=Ü�b‹Mœ9 R›=Ü�b‹Mœ9 R›=¨$ð&0ó 1õ 	2r   c           
      óª   — | j                   j                  dj                  t        |«      t        |«      t        |«      t        |«      df«      «       y)u±   Add cubic BÃ©zier curve to current path

        The curve shall extend to ``(x3, y3)`` using the current point and
        ``(x2, y2)`` as the BÃ©zier control points.

        r<   ó   vNr`   )r!   rc   rd   re   rf   s        r   Úcurve_start_tozStream.curve_start_to‡   óB   € ð 	�‰×Ñ˜4Ÿ9™9Ü�b‹Mœ9 R›=Ü�b‹Mœ9 R›=¨$ð&0ó 1õ 	2r   c           
      óª   — | j                   j                  dj                  t        |«      t        |«      t        |«      t        |«      df«      «       y)u«   Add cubic BÃ©zier curve to current path

        The curve shall extend to ``(x3, y3)`` using `(x1, y1)`` and ``(x3,
        y3)`` as the BÃ©zier control points.

        r<   ó   yNr`   )r!   ra   rb   re   rf   s        r   Úcurve_end_tozStream.curve_end_to’   rk   r   c                 óX   — | j                   j                  dt        |«      z   dz   «       y)zDraw object given by reference.r;   s    DoN©rH   rO   r   )r!   r(   s     r   Údraw_x_objectzStream.draw_x_object�   s#   € à�‰×Ñ˜4¤)¨IÓ"6Ñ6¸Ñ?Õ@r   c                 ó:   — | j                   j                  d«       y)z%End path without filling or stroking.ó   nNrN   r    s    r   Úendz
Stream.end¡   ó   € à�‰×Ñ˜4Õ r   c                 ó:   — | j                   j                  d«       y)zEnd marked-content sequence.s   EMCNrN   r    s    r   Úend_marked_contentzStream.end_marked_content¥   s   € à�‰×Ñ˜6Õ"r   c                 ó:   — | j                   j                  d«       y)zEnd text object.s   ETNrN   r    s    r   Úend_textzStream.end_text©   rU   r   c                 óL   — | j                   j                  |rd«       yd«       y)znFill path using nonzero winding rule.

        Use even-odd rule if ``even_odd`` is set to ``True``.

        s   f*ó   fNrN   rX   s     r   ÚfillzStream.fill­   ó   € ð 	�‰×Ñ¡H˜5Õ7°$Õ7r   c                 óL   — | j                   j                  |rd«       yd«       y)zyFill and stroke path usign nonzero winding rule.

        Use even-odd rule if ``even_odd`` is set to ``True``.

        s   B*ó   BNrN   rX   s     r   Úfill_and_strokezStream.fill_and_strokeµ   r}   r   c                 óL   — | j                   j                  |rd«       yd«       y)z€Fill, stroke and close path using nonzero winding rule.

        Use even-odd rule if ``even_odd`` is set to ``True``.

        s   b*ó   bNrN   rX   s     r   Úfill_stroke_and_closezStream.fill_stroke_and_close½   r}   r   c                 ó|  — | j                   rt        j                   |«      n|}t        j                  |«      dz   }| j                  j                  dj                  ddt        |«      dt        |«      dt        |«      ddt        |«      z   d	| j                   rd
nddt        t        |«      «      d|df«      «       y)a¾  Add an inline image.

        :param width: The width of the image.
        :type width: :obj:`int`
        :param height: The height of the image.
        :type height: :obj:`int`
        :param colorspace: The color space of the image, f.e. RGB, Gray.
        :type colorspace: :obj:`str`
        :param bpc: The bits per component. 1 for BW, 8 for grayscale.
        :type bpc: :obj:`int`
        :param raw_data: The raw pixel data.

        s   ~>r<   s   BIs   /Ws   /Hs   /BPCs   /CSs   /Devices   /Fs
   [/A85 /Fl]s   /A85s   /Ls   IDs   EIN)	rJ   ÚzlibÚbase64Ú	a85encoderH   rO   r@   r   Úlen)r!   ÚwidthÚheightÚcolor_spaceÚbpcÚraw_datar   Úa85_datas           r   Úinline_imagezStream.inline_imageÅ   s¦   € ð +/¯-ª-Œt�}‰}˜XÔ&¸XˆÜ×#Ñ# DÓ)¨EÑ1ˆØ�‰×Ñ˜4Ÿ9™9ØØ”9˜UÓ#Ø”9˜VÓ$Ø”Y˜s“^ØØœ ;Ó/Ñ/ØØ!Ÿ]š]‰M°Ø”9œS ›]Ó+ØØØð&
ó õ 	r   c                 ó‚   — | j                   j                  dj                  t        |«      t        |«      df«      «       y)z0Add line from current point to point ``(x, y)``.r<   ó   lNr`   ©r!   ÚxÚys      r   Úline_tozStream.line_toä   ó,   € à�‰×Ñ˜4Ÿ9™9¤i°£l´I¸a³LÀ$Ð%GÓHÕIr   c                 ó‚   — | j                   j                  dj                  t        |«      t        |«      df«      «       y)z8Begin new subpath by moving current point to ``(x, y)``.r<   ó   mNr`   r’   s      r   Úmove_tozStream.move_toè   r–   r   c                 ó‚   — | j                   j                  dj                  t        |«      t        |«      df«      «       y)zAMove text to next line at ``(x, y)`` distance from previous line.r<   s   TdNr`   r’   s      r   Úmove_text_tozStream.move_text_toì   s,   € à�‰×Ñ˜4Ÿ9™9¤i°£l´I¸a³LÀ%Ð%HÓIÕJr   c                 óX   — | j                   j                  dt        |«      z   dz   «       y)z@Paint shape and color shading using shading dictionary ``name``.r;   s    shNrp   )r!   Únames     r   Úpaint_shadingzStream.paint_shadingð   s"   € à�‰×Ñ˜4¤)¨D£/Ñ1°FÑ:Õ;r   c                 ó:   — | j                   j                  d«       y)zRestore graphic state.ó   QNrN   r    s    r   Ú	pop_statezStream.pop_stateô   ru   r   c                 ó:   — | j                   j                  d«       y)zSave graphic state.ó   qNrN   r    s    r   Ú
push_statezStream.push_stateø   ru   r   c           
      óª   — | j                   j                  dj                  t        |«      t        |«      t        |«      t        |«      df«      «       y)z–Add rectangle to current path as complete subpath.

        ``(x, y)`` is the lower-left corner and width and height the
        dimensions.

        r<   s   reNr`   )r!   r“   r”   r‰   rŠ   s        r   Ú	rectanglezStream.rectangleü   sD   € ð 	�‰×Ñ˜4Ÿ9™9Ü�a‹Lœ) A›,Ü�eÓœi¨Ó/°ð&8ó 9õ 	:r   c           	      óž   — | j                   j                  dj                  t        |«      t        |«      t        |«      |rdndf«      «       y)z”Set RGB color for nonstroking operations.

        Set RGB color for stroking operations instead if ``stroke`` is set to
        ``True``.

        r<   s   RGs   rgNr`   )r!   ÚrÚgÚbÚstrokes        r   Úset_color_rgbzStream.set_color_rgb  s@   € ð 	�‰×Ñ˜4Ÿ9™9Ü�a‹Lœ) A›,¬	°!«Ù‰U %ð&*ó +õ 	,r   c                 ót   — | j                   j                  dt        |«      z   dz   |r	dz   «       ydz   «       y)zwSet the nonstroking color space.

        If stroke is set to ``True``, set the stroking color space instead.

        r;   r<   s   CSs   csNrp   )r!   Úspacer«   s      r   Úset_color_spacezStream.set_color_space  s<   € ð 	�‰×ÑØ”9˜UÓ#Ñ# dÑ*±v¨eÑIõ	KØCHÑIõ	Kr   c                 ó²   — |rg |¢dt        |«      z   ‘­}| j                  j                  dj                  d„ |D «       «      dz   |r	dz   «       ydz   «       y)z‹Set special color for nonstroking operations.

        Set special color for stroking operation if ``stroke`` is set to ``True``.

        r;   r<   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr7   ©r   )Ú.0Úoperands     r   ú	<genexpr>z+Stream.set_color_special.<locals>.<genexpr>$  s   è ø€ ÒA¨W”i ×(ÑAùó   ‚s   SCNs   scnN)r   rH   rO   r@   )r!   r�   r«   Úoperandss       r   Úset_color_specialzStream.set_color_special  s_   € ñ Ø:˜Ð: 4¬)°D«/Ñ#9Ñ:ˆHØ�‰×ÑØ�I‰IÑA¸ÔAÓAÀDÑHÙˆVñ+õ	,à#)ñ+õ	,r   c                 ó–   — | j                   j                  dj                  t        |«      j                  t        |«      df«      «       y)zÊSet dash line pattern.

        :param dash_array: Dash pattern.
        :type dash_array: :term:`iterable`
        :param dash_phase: Start of dash phase.
        :type dash_phase: :obj:`int`

        r<   ó   dN)rH   rO   r@   ÚArrayr   r   )r!   Ú
dash_arrayÚ
dash_phases      r   Úset_dashzStream.set_dash'  s@   € ð 	�‰×Ñ˜4Ÿ9™9Ü�*Ó×"Ñ"¤I¨jÓ$9¸4ð&Aó Bõ 	Cr   c                 óv   — | j                   j                  dt        |«      z   dz   t        |«      z   dz   «       y)zSet font name and size.r;   r<   s    TfNrp   )r!   ÚfontÚsizes      r   Úset_font_sizezStream.set_font_size3  s4   € à�‰×ÑØ”9˜T“?Ñ" TÑ)¬I°d«OÑ;¸fÑDõ	Fr   c                 óR   — | j                   j                  t        |«      dz   «       y)zSet text rendering mode.s    TrNrp   )r!   Úmodes     r   Úset_text_renderingzStream.set_text_rendering8  s   € à�‰×Ñœ9 T›?¨VÑ3Õ4r   c                 óR   — | j                   j                  t        |«      dz   «       y)zSet text rise.s    TsNrp   )r!   rŠ   s     r   Úset_text_risezStream.set_text_rise<  s   € à�‰×Ñœ9 VÓ,¨vÑ5Õ6r   c                 óR   — | j                   j                  t        |«      dz   «       y)zSet line cap style.s    JNrp   )r!   Úline_caps     r   Úset_line_capzStream.set_line_cap@  s   € à�‰×Ñœ9 XÓ.°Ñ6Õ7r   c                 óR   — | j                   j                  t        |«      dz   «       y)zSet line join style.s    jNrp   )r!   Ú	line_joins     r   Úset_line_joinzStream.set_line_joinD  s   € à�‰×Ñœ9 YÓ/°%Ñ7Õ8r   c                 óR   — | j                   j                  t        |«      dz   «       y)zSet line width.s    wNrp   )r!   r‰   s     r   Úset_line_widthzStream.set_line_widthH  s   € à�‰×Ñœ9 UÓ+¨eÑ3Õ4r   c                 óÒ   — | j                   j                  dj                  t        |«      t        |«      t        |«      t        |«      t        |«      t        |«      df«      «       y)am  Set current transformation matrix.

        :param a: Top left number in the matrix.
        :type a: :obj:`int` or :obj:`float`
        :param b: Top middle number in the matrix.
        :type b: :obj:`int` or :obj:`float`
        :param c: Middle left number in the matrix.
        :type c: :obj:`int` or :obj:`float`
        :param d: Middle middle number in the matrix.
        :type d: :obj:`int` or :obj:`float`
        :param e: Bottom left number in the matrix.
        :type e: :obj:`int` or :obj:`float`
        :param f: Bottom middle number in the matrix.
        :type f: :obj:`int` or :obj:`float`

        r<   s   cmNr`   ©r!   Úarª   ÚcÚdÚer	   s          r   Ú
set_matrixzStream.set_matrixL  óN   € ð" 	�‰×Ñ˜4Ÿ9™9Ü�a‹Lœ) A›,¬	°!«Ü�a‹Lœ) A›,¬	°!«°eð&=ó >õ 	?r   c                 óR   — | j                   j                  t        |«      dz   «       y)zSet miter limit.s    MNrp   )r!   Úmiter_limits     r   Úset_miter_limitzStream.set_miter_limita  s   € à�‰×Ñœ9 [Ó1°EÑ9Õ:r   c                 óX   — | j                   j                  dt        |«      z   dz   «       y)zkSet specified parameters in graphic state.

        :param state_name: Name of the graphic state.

        r;   s    gsNrp   )r!   Ú
state_names     r   Ú	set_statezStream.set_statee  s%   € ð 	�‰×Ñ˜4¤)¨JÓ"7Ñ7¸&Ñ@ÕAr   c                 óÒ   — | j                   j                  dj                  t        |«      t        |«      t        |«      t        |«      t        |«      t        |«      df«      «       y)a€  Set current text and text line transformation matrix.

        :param a: Top left number in the matrix.
        :type a: :obj:`int` or :obj:`float`
        :param b: Top middle number in the matrix.
        :type b: :obj:`int` or :obj:`float`
        :param c: Middle left number in the matrix.
        :type c: :obj:`int` or :obj:`float`
        :param d: Middle middle number in the matrix.
        :type d: :obj:`int` or :obj:`float`
        :param e: Bottom left number in the matrix.
        :type e: :obj:`int` or :obj:`float`
        :param f: Bottom middle number in the matrix.
        :type f: :obj:`int` or :obj:`float`

        r<   s   TmNr`   rÑ   s          r   Úset_text_matrixzStream.set_text_matrixm  r×   r   c                 óX   — | j                   j                  dt        |«      z   dz   «       y)z4Show text strings with individual glyph positioning.ó   [s   ] TJNrp   ©r!   Útexts     r   Ú	show_textzStream.show_text‚  s"   € à�‰×Ñ˜4¤)¨D£/Ñ1°GÑ;Õ<r   c                 óf   — | j                   j                  t        |«      j                  dz   «       y)zShow single text string.s    TjN)rH   rO   ÚStringr   râ   s     r   Úshow_text_stringzStream.show_text_string†  s#   € à�‰×Ñœ6 $›<×,Ñ,¨vÑ5Õ6r   c                 ó:   — | j                   j                  d«       y)zStroke path.ó   SNrN   r    s    r   r«   zStream.strokeŠ  ru   r   c                 ó:   — | j                   j                  d«       y)zStroke and close path.ó   sNrN   r    s    r   Ústroke_and_closezStream.stroke_and_closeŽ  ru   r   c                 ó|  — dj                  d„ | j                  D «       «      }t        | j                  j	                  «       «      }| j
                  r?d|d<   t        j                  d¬«      }|j                  |«      }||j                  «       z  }t        |«      |d<   dj                  |j                  d|d	f«      S )
Nó   
c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr7   r²   )r³   r   s     r   rµ   zStream.data.<locals>.<genexpr>”  s   è ø€ ÒD°œI dŸOÑDùr¶   z/FlateDecodeÚFilteré	   )ÚlevelÚLengths   streams	   endstream)r@   rH   r5   rI   ÚcopyrJ   r…   ÚcompressobjÚflushrˆ   r   )r!   rH   rI   rõ   s       r   r   zStream.data’  s›   € à—‘ÑD¸¿¹ÔDÓDˆÜ˜4Ÿ:™:Ÿ?™?Ó,Ó-ˆØ�=Š=Ø,ˆE�(‰OÜ×*Ñ*°Ô3ˆKØ ×)Ñ)¨&Ó1ˆFØ�k×'Ñ'Ó)Ñ)ˆFÜ˜f›+ˆˆh‰Ø�z‰z˜5Ÿ:™: y°&¸,ÐGÓHÐHr   )NNFr7   )F)0r.   r/   r0   r1   r"   rR   rT   rZ   r]   rg   rj   rn   rq   rt   rw   ry   r|   r€   rƒ   r�   r•   r™   r›   rž   r¡   r¤   r¦   r¬   r¯   r¸   r¾   rÂ   rÅ   rÇ   rÊ   rÍ   rÏ   rÖ   rÚ   rÝ   rß   rä   rç   r«   rì   r2   r   Ú__classcell__©rK   s   @r   r,   r,   O   sñ   ø„ Ùõ!ó'ò"ó	8ò!ò
2ò	2ò	2òAò!ò#ò"ó8ó8ó8òò>JòJòKò<ò!ò!ò	:ó	,óKó
,ò
CòFò
5ò7ò8ò9ò5ò?ò*;òBò?ò*=ò7ò!ò!ð ñ	Ió ô	Ir   r,   c                   ó4   ‡ — e Zd ZdZdˆ fd„	Zed„ «       Zˆ xZS )ræ   zPDF String object.c                 ó0   •— t         ‰| �  «        || _        y r7   )rG   r"   Ústring)r!   rû   rK   s     €r   r"   zString.__init__¡  s   ø€ Ü‰ÑÔàˆ�r   c                 ó$  — 	 t        j                  ddt        | j                  «      «      }d|z   dz   S # t        $ rR t
        t        | j                  «      j                  d«      z   }d|j                  «       j                  «       z   dz   cY S w xY w)Ns
   ([\\\(\)])s   \\\1ó   (ó   )z	utf-16-beó   <ó   >)	ÚreÚsubr   rû   ÚUnicodeEncodeErrorr   r   r   Úhex)r!   ÚescapedÚencodeds      r   r   zString.data¦  s   € ð		8ô
 —f‘f˜^¨X´yÀÇÁÓ7MÓNˆGØ˜'‘> DÑ(Ð(øÜ!ò 	8Ü"¤S¨¯©Ó%5×%<Ñ%<¸[Ó%IÑIˆGØ˜'Ÿ+™+›-×.Ñ.Ó0Ñ0°4Ñ7Ò7ð	8ús   ‚14 ´ABÂB)Ú )r.   r/   r0   r1   r"   r2   r   r÷   rø   s   @r   ræ   ræ   Ÿ  s   ø„ Ùõð
 ñ
8ó ô
8r   ræ   c                   ó(   — e Zd ZdZdd„Zed„ «       Zy)r»   zPDF Array object.Nc                 ób   — t         j                  | «       t        j                  | |xs g «       y r7   )r   r"   Úlist)r!   Úarrays     r   r"   zArray.__init__¶  s    € Ü�‰˜ÔÜ�‰�d˜EšK RÕ(r   c                 ó>   — ddj                  d„ | D «       «      z   dz   S )Nrá   r<   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr7   r²   )r³   Úchilds     r   rµ   zArray.data.<locals>.<genexpr>¼  s   è ø€ ÒC°U¤	¨%× 0ÑCùr¶   ó   ])r@   r    s    r   r   z
Array.dataº  s!   € à�d—i‘iÑC¸dÔCÓCÑCÀdÑJÐJr   r7   rD   r3   r   r   r»   r»   ´  s    „ Ùó)ð ñKó ñKr   r»   c                   ó@   — e Zd ZdZd„ Zd„ Zd„ Zed„ «       Zd„ Z	d	d„Z
y)
ÚPDFzPDF document.c                 ó”  — g | _         t        «       }d|_        d|_        | j	                  |«       t        dt        g «      ddœ«      | _        | j	                  | j                  «       t        i «      | _        t        d| j                  j                  dœ«      | _
        | j	                  | j                  «       d| _        d| _        y)	zCreate a PDF document.iÿÿ  r	   z/Pagesr   )ÚTypeÚKidsÚCountz/Catalog)r  ÚPagesN)Úobjectsr   r   r   Ú
add_objectr5   r»   ÚpagesÚinfor(   ÚcatalogÚcurrent_positionÚxref_position)r!   Úzero_objects     r   r"   zPDF.__init__Á  s´   € ð ˆŒä“hˆØ!&ˆÔØˆÔØ�‰˜Ô$ô  ØÜ˜"“IØñ!
ó ˆŒ
ð
 	�‰˜Ÿ
™
Ô#ô ˜r“NˆŒ	ô "ØØ—Z‘Z×)Ñ)ñ#
ó ˆŒð 	�‰˜Ÿ™Ô%ð !"ˆÔà!ˆÕr   c                 óª   — | j                   dxx   dz  cc<   | j                  |«       | j                   d   j                  |j                  ddg«       y)zfAdd page to the PDF.

        :param page: New page.
        :type page: :class:`Dictionary`

        r  é   r  r   ÚRN)r  r  Úextendr   )r!   Úpages     r   Úadd_pagezPDF.add_pageã  sF   € ð 	�
‰
�7Ó˜qÑ ÓØ�‰˜ÔØ�
‰
�6Ñ×!Ñ! 4§;¡;°°3Ð"7Õ8r   c                 ón   — t        | j                  «      |_        | j                  j                  |«       y)zAdd object to the PDF.N)rˆ   r  r   rO   )r!   Úobject_s     r   r  zPDF.add_objectî  s$   € ä˜TŸ\™\Ó*ˆŒØ�‰×Ñ˜GÕ$r   c                 óL   — t        d„ | j                  d   d d d…   D «       «      S )Nc              3   óD   K  — | ]  }|› d �j                  d«      –— Œ y­w)z 0 Rr   N)r   )r³   Úobject_numbers     r   rµ   z&PDF.page_references.<locals>.<genexpr>õ  s*   è ø€ ò :àð ˆo˜TÐ"×)Ñ)¨'×2ñ:ùs   ‚ r  é   )Útupler  r    s    r   Úpage_referenceszPDF.page_referencesó  s.   € äñ :à!%§¡¨FÑ!3±C°a°CÑ!8ô:ó :ð 	:r   c                 ón   — | xj                   t        |«      dz   z  c_         |j                  |dz   «       y)zÅWrite line to output.

        :param content: Content to write.
        :type content: :obj:`bytes`
        :param output: Output stream.
        :type output: binary :term:`file object`

        r   rî   N)r  rˆ   Úwrite)r!   ÚcontentÚoutputs      r   Ú
write_linezPDF.write_lineù  s.   € ð 	×Ò¤ W£°Ñ!1Ñ1ÕØ�‰�W˜u‘_Õ%r   c           
      ó.  ‡— t        |xs d«      }|dvrt        |«      }| j                  r| j                  | j                  «       | j                  d|z   |«       | j                  d|«       |dk\  �ró|�rðg }| j                  D ]]  }|j
                  dk(  rŒ|j                  r|j                  |«       Œ1| j                  |_	        | j                  |j                  |«       Œ_ g g}d}t        |«      D ]e  \  }	}|j                  }
|j                  |
«       |d   j                  |j                  «       |d   j                  |«       |t        |
«      dz   z  }Œg d	j                  d
„ |d   D «       «      |d<   dt        |«      t        |d   «      dz   dœ}t!        |||«      }| j                  |_	        | j                  |«       | j                  |j                  |«       g }d}| j                  D ]m  }|j                  r$|j                  d|j                  |f«       |dz  }Œ3|j                  t#        |j                  «      |j                  |j$                  f«       Œo |j                  d| j                  df«       t'        t)        | j                  dz   d«      «      }t+        d„ | j                  D «       «      }t'        t)        t+        |t        |«      «      dz   d«      «      }d||fŠdj                  ˆfd„|D «       «      }dt-        dt        | j                  «      dz   f«      t-        ‰«      t        | j                  «      dz   | j.                  j0                  dœ}| j                  r| j                  j0                  |d<   |r…dj                  d„ | j                  D «       «      }
t3        |
«      j5                  «       j7                  «       }|du r|}t-        t9        |«      j                  t9        |«      j                  f«      |d<   t!        |g||«      }| j                  x| _        |_	        | j                  |«       | j                  |j                  |«       �n`| j                  D ]?  }|j
                  dk(  rŒ| j                  |_	        | j                  |j                  |«       ŒA | j                  | _        | j                  d|«       | j                  dt        | j                  «      › �j7                  «       |«       | j                  D ]K  }| j                  |j                  d›d	|j$                  d›d	|j
                  › d	�j7                  «       |«       ŒM | j                  d|«       | j                  d|«       | j                  dt        | j                  «      › �j7                  «       |«       | j                  d| j.                  j0                  z   |«       | j                  r)| j                  d | j                  j0                  z   |«       |r“dj                  d!„ | j                  D «       «      }
t3        |
«      j5                  «       j7                  «       }|du r|}| j                  d"t9        |«      j                  z   d#z   t9        |«      j                  z   d$z   |«       | j                  d%|«       | j                  d&|«       | j                  | j:                  › j7                  «       |«       | j                  d'|«       y())aÛ  Write PDF to output.

        :param output: Output stream.
        :type output: binary :term:`file object`
        :param bytes version: PDF version.
        :param identifier: PDF file identifier. Default is :obj:`False`
          to include no identifier, can be set to :obj:`True` to generate an
          automatic identifier.
        :type identifier: :obj:`bytes` or :obj:`bool`
        :param bool compress: whether the PDF uses a compressed object stream.

        ó   1.7)FTNs   %PDF-s   %ðŸ–¤s   1.5r	   r   r   r$   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­wr7   )r   )r³   Úis     r   rµ   zPDF.write.<locals>.<genexpr>4  s   è ø€ Ò ;¨A¤ Q§Ñ ;ùr¶   z/ObjStm)r  ÚNÚFirsté   é   c              3   ó4   K  — | ]  }|j                   –— Œ y ­wr7   )r   )r³   r&  s     r   rµ   zPDF.write.<locals>.<genexpr>L  s   è ø€ ò !@Ø'.�×"Õ"ñ!@ùs   ‚r   c              3   ój   •K  — | ]*  }t        ‰|«      D ]  \  }}|j                  |d «      –— Œ Œ, y­w)ÚbigN)ÚzipÚto_bytes)r³   ÚlineÚlengthrB   Úxref_lengthss       €r   rµ   zPDF.write.<locals>.<genexpr>Q  sE   øè ø€ ò #Oà´c¸,ÈÓ6Mò#Oá%2 V¨Uð —‘˜v u×-ð#OØ-ñ#Oùs   ƒ03z/XRef)r  ÚIndexÚWÚSizeÚRootÚInfoc              3   óT   K  — | ]   }|j                   d k7  sŒ|j                  –— Œ" y­w©r	   N©r   r   ©r³   Úobjs     r   rµ   zPDF.write.<locals>.<genexpr>^  s   è ø€ ÒT¨SÀCÇHÁHÐPSÃO §¥ÑTùó   ‚(—(TÚIDs   xrefz0 Ú010Ú05s   trailerr=   z/Size s   /Root s   /Info c              3   óT   K  — | ]   }|j                   d k7  sŒ|j                  –— Œ" y­wrH  rI  rJ  s     r   rµ   zPDF.write.<locals>.<genexpr>€  s%   è ø€ ò  IØ!$¸¿¹ÀC»�C—H•Hñ IùrL  s   /ID [r<   r  r>   s	   startxrefs   %%EOFN)r   r  r  r1  r  r   r-   rO   r  r   r&   Ú	enumerater   r   rˆ   r@   r,   Úboolr   r   r   Úmaxr»   r  r(   r   Ú	hexdigestr   ræ   r  )r!   r0  ÚversionÚ
identifierrJ   Úcompressed_objectsr&  rH   Úpositionr5  r   rI   Úobject_streamÚxrefÚ
dict_indexÚfield2_sizeÚmax_generationÚfield3_sizeÚxref_streamÚ	data_hashÚdict_streamrA  s                        @r   r.  z	PDF.write  sB  ø€ ô ˜GÒ- vÓ.ˆØÐ0Ñ0Ü" :Ó.ˆJð �9Š9Ø�O‰O˜DŸI™IÔ&ð 	�‰˜ 7Ñ*¨FÔ3Ø�‰Ð,¨fÔ5à�fÓ¢à!#ÐØŸ<™<ò >�Ø—<‘< 3Ò&ØØ×'Ò'Ø&×-Ñ-¨gÕ6à%)×%:Ñ%:�G”NØ—O‘O G×$4Ñ$4°fÕ=ð>ð �TˆFØˆHÜ'Ð(:Ó;ò *‘
��7Ø—|‘|�Ø—‘˜dÔ#Ø�q‘	× Ñ  §¡Ô0Ø�q‘	× Ñ  Ô*ØœC ›I¨™MÑ)‘ð*ð Ÿ™Ñ ;°¸±Ô ;Ó;ˆF�1‰Ià!ÜÐ+Ó,Ü˜V A™Y›¨!Ñ+ñˆEô
 # 6¨5°(Ó;ˆMØ#'×#8Ñ#8ˆMÔ Ø�O‰O˜MÔ*Ø�O‰O˜M×2Ñ2°FÔ;ð ˆDØˆJØŸ<™<ò S�Ø×'Ò'Ø—K‘K  M×$8Ñ$8¸*Ð EÔFØ !‘O‘Jà—K‘KÜ˜WŸ^™^Ó,¨g¯n©n¸g×>PÑ>Pð!Rõ SðSð �K‰K˜˜D×1Ñ1°1Ð5Ô6äœs 4×#8Ñ#8¸1Ñ#<¸cÓBÓCˆKÜ ñ !@Ø26·,±,ô!@ó @ˆNäœsÜ�N¤CÐ(:Ó$;Ó<¸qÑ@À#ó Gó HˆKà˜{¨KÐ8ˆLØŸ(™(ó #Oà ô#Oó OˆKð  Ü ¤3 t§|¡|Ó#4°qÑ#8Ð9Ó:Ü˜<Ó(Ü˜DŸL™LÓ)¨AÑ-ØŸ™×.Ñ.ñˆEð �yŠyØ $§	¡	× 3Ñ 3��f‘ÙØ—x‘xÑT°D·L±LÔTÓT�Ü ›I×/Ñ/Ó1×8Ñ8Ó:�	Ø Ñ%Ø!*�JÜ#¤V¨JÓ%7×%<Ñ%<¼fÀYÓ>O×>TÑ>TÐ$UÓV��d‘Ü  + °°xÓ@ˆKØ6:×6KÑ6KÐKˆDÔ Ô!3Ø�O‰O˜KÔ(Ø�O‰O˜K×0Ñ0°&Ö9ð  Ÿ<™<ò :�Ø—<‘< 3Ò&ØØ!%×!6Ñ!6�”Ø—‘ × 0Ñ 0°&Õ9ð	:ð "&×!6Ñ!6ˆDÔØ�O‰O˜G VÔ,Ø�O‰O˜b¤ T§\¡\Ó!2Ð 3Ð4×;Ñ;Ó=¸vÔFØŸ<™<ò ;�Ø—‘ØŸ™ sÐ+¨1¨W×-?Ñ-?ÀÐ,CÀ1ØŸ™�~ Qð(ß)/©«°6õ;ð;ð �O‰O˜J¨Ô/Ø�O‰O˜E 6Ô*Ø�O‰O˜f¤S¨¯©Ó%6Ð$7Ð8×?Ñ?ÓAÀ6ÔJØ�O‰O˜I¨¯©×(>Ñ(>Ñ>ÀÔGØ�yŠyØ—‘ 	¨D¯I©I×,?Ñ,?Ñ ?ÀÔHÙØ—x‘xñ  IØ(,¯©ô Ió I�ä ›I×/Ñ/Ó1×8Ñ8Ó:�	Ø Ñ%Ø!*�JØ—‘Øœv jÓ1×6Ñ6Ñ6¸Ñ=Ü˜9Ó%×*Ñ*ñ+Ø-1ñ2Ø39ô;ð �O‰O˜E 6Ô*à�‰˜ fÔ-Ø�‰˜4×-Ñ-Ð.×6Ñ6Ó8¸&ÔAØ�‰˜ &Õ)r   N)r3  FF)r.   r/   r0   r1   r"   r$  r  r2   r,  r1  r.  r3   r   r   r  r  ¿  s4   „ Ùò "òD	9ò%ð
 ñ:ó ð:ò

&ôG*r   r  )r1   r†   r  r…   Úcodecsr   Úhashlibr   Úmathr   r   ÚVERSIONÚ__version__r   r   r8   r5   r,   ræ   r
  r»   r  r3   r   r   ú<module>rg     s�   ðñó
 Û 	Û Ý Ý ß à Ð  €ˆ+ò%÷ Dñ  DôF0�˜ô 0ôMIˆVô MIô`
8ˆVô 8ô*KˆF�Dô K÷M*ò M*r   