
    (h                     d   S r SSKrSSKJrJr  SSKJr  SSKJr  SSK	J
r  SSKJr  SS	KJrJrJr  SS
KJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJrJr  SSKJrJ r J!r!J"r"J#r#J$r$J%r%  SSKJ&r'  SSKJ(r)  SSKJ*r+  SSK,J-r-J.r.   SSK/J0r0  SSK2J3r3  \3(       a  SSK4J5r5  \Rl                  " \75      r8SSSS.r9 " S S5      r: " S S\:5      r; " S  S!\#5      r< " S" S#\#5      r= " S$ S%\#5      r> " S& S'5      r? " S( S)\#5      r@ " S* S+\#5      rA " S, S-\!5      rB " S. S/\!5      rC " S0 S1\!5      rD " S2 S3\!5      rE " S4 S55      rF " S6 S7\#5      rG " S8 S9\#5      rH " S: S;\#5      rI " S< S=\:5      rJ " S> S?5      rK " S@ SA5      rL " SB SC5      rM   SISD\4SE jjrNSF rOSG rPSJSH jrQg! \1 a    Sr0 GN$f = f)Kai  
This module contains the serialization logic that produces a PDF document from a FPDF instance.
Most of the code in this module is used when FPDF.output() is called.

The contents of this module are internal to fpdf2, and not part of the public API.
They may change at any time without prior warning or any deprecation period,
in non-backward-compatible ways.
    N)OrderedDictdefaultdict)contextmanager)BytesIO)subset   )PDFAnnotation)PDFResourceTypePageLabelStyleSignatureFlag)OutputIntentSubType)FPDFException)TotalPagesSubstitutionFragment)RasterImageInfo)build_outline_objs)	Signaturesign_content)NamePDFArrayPDFContentStreamPDFDate	PDFObject	PDFStringbuild_obj_dict)create_dictionary_string)create_list_string)iobj_ref)	int2romanint_to_letters)signer)TYPE_CHECKING)FPDF)z/Fit)z/FitHnull)/XYZr#   r#   1)fullpage	fullwidthrealc                       \ rS rSrSS jrSrg)ContentWithoutID;   Nc                     g N self_security_handlers     GC:\Users\13-19\Desktop\PokeDex\pokedex\Lib\site-packages\fpdf/output.py	serializeContentWithoutID.serialize<   s        r.   r-   )__name__
__module____qualname____firstlineno__r3   __static_attributes__r.   r5   r2   r*   r*   ;   s    r5   r*   c                   $    \ rS rSrS rSS jrSrg)	PDFHeader@   c                     Xl         g r-   pdf_version)r0   r@   s     r2   __init__PDFHeader.__init__A   s    &r5   Nc                      SU R                    3$ )Nz%PDF-r?   r/   s     r2   r3   PDFHeader.serializeE   s    t''())r5   r?   r-   r6   r7   r8   r9   rA   r3   r:   r.   r5   r2   r<   r<   @   s    '*r5   r<   c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )PDFFontI   c                   > [         TU ]  5         [        S5      U l        [        U5      U l        [        U5      U l        U(       a  [        U5      OS U l        X@l        XPl        S U l	        S U l
        S U l        S U l        S U l        g )NFont)superrA   r   typesubtype	base_fontencodingd_wwdescendant_fonts
to_unicodec_i_d_system_infofont_descriptorc_i_d_to_g_i_d_map)r0   rM   rN   rO   rP   rQ   	__class__s         r2   rA   PDFFont.__init__J   so    L	G}i*2X $!%#"&r5   )rN   rT   rV   rP   rR   rO   rU   rM   rS   rL   rQ   NNNr6   r7   r8   r9   rA   r:   __classcell__rW   s   @r2   rG   rG   I   s    ' 'r5   rG   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )CIDSystemInfoY   c                 l   > [         TU ]  5         [        SSS9U l        [        SSS9U l        SU l        g )NAdobeTencryptUCSr   )rK   rA   r   registryordering
supplement)r0   rW   s    r2   rA   CIDSystemInfo.__init__Z   s1    !'48!%6r5   )rf   re   rg   rZ   r\   s   @r2   r^   r^   Y   s     r5   r^   c                   0   ^  \ rS rSrS\4U 4S jjrSrU =r$ )PDFInfoa   creation_datec                 N  > [         TU ]  5         U(       a
  [        USS9OS U l        U(       a
  [        USS9OS U l        U(       a
  [        USS9OS U l        U(       a
  [        USS9OS U l        U(       a
  [        USS9OS U l        U(       a
  [        USS9OS U l        Xpl	        g )NTrb   )
rK   rA   r   titlesubjectauthorkeywordscreatorproducerrl   )	r0   rn   ro   rp   rq   rr   rs   rl   rW   s	           r2   rA   PDFInfo.__init__b   s     	7<Yud3$
;By$79?i5T=E	(D94;By$7=E	(D94*r5   )rp   rl   rr   rq   rs   ro   rn   )r6   r7   r8   r9   r   rA   r:   r[   r\   s   @r2   rj   rj   a   s    + + +r5   rj   c                   $    \ rS rSrS rSS jrSrg)AcroFormv   c                     Xl         X l        g r-   fields	sig_flags)r0   rz   r{   s      r2   rA   AcroForm.__init__w   s    "r5   Nc           
      |    [        [        U 5       Vs0 s H  o3[        X5      _M     snUUS9n[        USS9$ s  snf )Nr1   _obj_id 
field_joinr   dirgetattrpdf_dictr0   r1   r   keyobj_dicts        r2   r3   AcroForm.serialize{   sD    !03D	:	'$$$	:/

 S11	 ;s   9ry   NNrE   r.   r5   r2   rv   rv   v   s    #2r5   rv   c                   .   ^  \ rS rSr SU 4S jjrSrU =r$ )
PDFCatalog   c                   > [         TU ]  5         [        S5      U l        U(       a  [	        U5      OS U l        X l        X0l        X@l        S U l	        S U l
        S U l        S U l        S U l        S U l        S U l        S U l        S U l        g )NCatalog)rK   rA   r   rL   r   langpage_layout	page_modeviewer_preferencespages	acro_formopen_action	mark_infometadatanamesoutlinesoutput_intentsstruct_tree_root)r0   r   r   r   r   rW   s        r2   rA   PDFCatalog.__init__   s}     	O	'+IdO	&""4

" $r5   )r   r   r   r   r   r   r   r   r   r   r   r   rL   r   NNNNrZ   r\   s   @r2   r   r      s    NR% %r5   r   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )PDFResources   c                 j   > [         TU ]  5         Xl        X l        X0l        X@l        XPl        X`l        g r-   )rK   rA   proc_setfontx_objectext_g_stateshadingpattern)r0   r   r   r   r   r   r   rW   s          r2   rA   PDFResources.__init__   s-     	 &r5   )r   r   r   r   r   r   rZ   r\   s   @r2   r   r      s     r5   r   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )PDFFontStream   c                 B   > [         TU ]  USS9  [        U5      U l        g NTcontentscompress)rK   rA   lenlength1r0   r   rW   s     r2   rA   PDFFontStream.__init__   s     (T:8}r5   )r   rZ   r\   s   @r2   r   r      s    % %r5   r   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )PDFXmpMetadata   c                 ~   > [         TU ]  UR                  S5      S9  [        S5      U l        [        S5      U l        g )Nzutf-8r   MetadataXML)rK   rA   encoder   rL   rM   r   s     r2   rA   PDFXmpMetadata.__init__   s3    (//'":;$	E{r5   )rM   rL   rZ   r\   s   @r2   r   r      s    # #r5   r   c                   6   ^  \ rS rSrSr   SU 4S jjrSrU =r$ )
PDFXObject   )_id	_contentsfilterlengthrL   rM   widthheightcolor_spacebits_per_componentdecodedecode_parmss_maskc
                    > [         T
U ]  US9  [        S5      U l        [        U5      U l        X0l        X@l        XPl        X`l        [        U5      U l	        Xl
        Xl        S U l        g )Nr   XObject)rK   rA   r   rL   rM   r   r   r   r   r   r   r   r   )r0   r   rM   r   r   r   r   
img_filterr   r   rW   s             r2   rA   PDFXObject.__init__   s_     	(+O	G}
&"4:&(r5   )
r   r   r   r   r   r   r   rM   rL   r   rY   )r6   r7   r8   r9   	__slots__rA   r:   r[   r\   s   @r2   r   r      s    I0  r5   r   c                   0   ^  \ rS rSrSrSrU 4S jrSrU =r$ )PDFICCProfile   zholds values for ICC Profile Stream
Args:
    contents (str): stream content
    n (int): [1|3|4], # the numbers for colors 1=Gray, 3=RGB, 4=CMYK
    alternate (str): ['DeviceGray'|'DeviceRGB'|'DeviceCMYK']
)r   r   r   r   n	alternatec                 N   > [         TU ]  USS9  X l        [        U5      U l        g r   )rK   rA   r   r   r   )r0   r   r   r   rW   s       r2   rA   PDFICCProfile.__init__   s'     	(T:ir5   )r   r   )	r6   r7   r8   r9   __doc__r   rA   r:   r[   r\   s   @r2   r   r      s    I) )r5   r   c                       \ rS rSrSrS\S\S\4S jr\	S\
4S j5       r\	S\4S	 j5       rS
 rS rS\4S jrS\4S jrS\4S jrS\4S jrSrg)PDFPageLabel   _style_prefixstlabel_stylelabel_prefixlabel_startc                 (    Xl         X l        X0l        g r-   r   )r0   r   r   r   s       r2   rA   PDFPageLabel.__init__   s     '2("r5   returnc                 f    U R                   (       a  [        U R                   R                  5      $ S $ r-   )r   r   valuer0   s    r2   sPDFPageLabel.s  s"    *.++tDKK%%&?4?r5   c                 R    U R                   (       a  [        U R                   5      $ S $ r-   )r   r   r   s    r2   pPDFPageLabel.p  s    *.,,y&@D@r5   c                 V    SU R                    SU R                   SU R                   S3$ )NzPDFPageLabel(, )r   r   s    r2   __repr__PDFPageLabel.__repr__	  s)    t{{m2dll^2dggYaHHr5   c                    U R                   (       a  U R                   OSnU R                  (       Ga8  U R                  [        R                  :X  a  U[	        U R
                  5      -  nU$ U R                  [        R                  :X  a  U[        U R
                  5      -  nU$ U R                  [        R                  :X  a(  U[        U R
                  5      R                  5       -  nU$ U R                  [        R                  :X  a  U[        U R
                  S-
  5      -  nU$ U R                  [        R                  :X  a)  U[        U R
                  S-
  5      R                  5       -  nU$ )N r   )r   r   r   NUMBERstrr   UPPER_ROMANr   LOWER_ROMANlowerUPPER_LETTERr   LOWER_LETTER)r0   rets     r2   __str__PDFPageLabel.__str__  s   "lldll;;;{{n333s477|# 
  : ::y)) 
  : ::y)//11
 
	  ; ;;~dggk22 
  ; ;;~dggk288::
r5   c           
      h    [        [        U 5       Vs0 s H  o[        X5      _M     sn5      $ s  snf r-   )r   r   r   )r0   r   s     r2   r3   PDFPageLabel.serialize  s+    #d)L)3GD$66)LMMLs   /c                     U R                   $ r-   )r   r   s    r2   	get_stylePDFPageLabel.get_style      {{r5   c                     U R                   $ r-   )r   r   s    r2   
get_prefixPDFPageLabel.get_prefix!  s    ||r5   c                     U R                   $ r-   )r   r   s    r2   	get_startPDFPageLabel.get_start$  s    wwr5   )r   r   r   N)r6   r7   r8   r9   r   r   r   intrA   propertyr   r   r   r   r   r   dictr3   r  r  r  r:   r.   r5   r2   r   r      s    +I#)#9<#KN# @4 @ @ A9 A AIN4 N> C 3 r5   r   c                   ~   ^  \ rS rSrSrU 4S jrS rS rS rS r	S\
S	\
4S
 jrS\
4S jrS\4S jrS rS rSrU =r$ )PDFPagei(  )r   rL   r   durtransannotsgroup	media_boxstruct_parents	resourcesparent_index	_width_pt
_height_pt_page_label_text_substitution_fragmentsc                 $  > [         TU ]  5         [        S5      U l        X0l        U(       a  UOS U l        X l        [        5       U l        S U l	        S U l
        S U l        S U l        S U l        X@l        Su  U l        U l        S U l        / U l        g )NPager   )rK   rA   r   rL   r   r  r  r   r  r  r  r  r  r  r  r  r  r  r  )r0   duration
transitionr   indexrW   s        r2   rA   PDFPage.__init__<  s     	L	 '8T
j
"*4')-RT)r5   c                     U R                   $ r-   r  r   s    r2   r#  PDFPage.indexT  r  r5   c                     Xl         g r-   r&  )r0   is     r2   	set_indexPDFPage.set_indexW  s    r5   c                 2    U R                   U R                  4$ )zGReturn a pair (width, height) in the unit specified to FPDF constructorr  r  r   s    r2   
dimensionsPDFPage.dimensionsZ  s    ~~t..r5   c                      XsU l         U l        g)zHAccepts a pair (width, height) in the unit specified to FPDF constructorNr-  )r0   width_pt	height_pts      r2   set_dimensionsPDFPage.set_dimensions^  s    *2'r5   previous_page_label
page_labelc                    U(       at  U(       am  UR                  5       UR                  5       :X  aK  UR                  5       UR                  5       :X  a)  UR                  (       d  UR                  5       S-   Ul        U(       a  UR                  5       (       d  SUl        U(       aA  U(       d:  [	        UR                  5       UR                  5       UR                  5       S-   5      nX l        g Nr   )r  r  r   r  r   r  )r0   r5  r6  s      r2   set_page_labelPDFPage.set_page_labelb  s      $$&*=*G*G*II%%'+>+I+I+KKMM/99;a?JM'')) !
z%#--/#..0#--/!3J &r5   r   c                     U R                   $ r-   )r  r   s    r2   get_page_labelPDFPage.get_page_label{  s    r5   c                     U R                   (       d  [        U R                  5       5      $ [        U R                   5      $ r-   )r  r   r#  r   s    r2   	get_labelPDFPage.get_label~  s+    (,(8(8s4::< Sc$BRBR>SSr5   c                     U R                   $ r-   )r  r   s    r2   get_text_substitutionsPDFPage.get_text_substitutions  s    000r5   c                 :    U R                   R                  U5        g r-   )r  append)r0   fragments     r2   add_text_substitutionPDFPage.add_text_substitution  s    ))00:r5   )r  r  r  r  r  r  r   r  r  r  r  r  r  r  rL   )r6   r7   r8   r9   r   rA   r#  r*  r.  r3  r   r9  r<  r   r?  rB  rG  r:   r[   r\   s   @r2   r  r  (  sb    I&U0/>&#/&=I&2   T3 T1; ;r5   r  c                   (   ^  \ rS rSrU 4S jrSrU =r$ )PDFPagesRooti  c                 h   > [         TU ]  5         [        S5      U l        Xl        X l        S U l        g )NPages)rK   rA   r   rL   countr  kids)r0   rM  r  rW   s      r2   rA   PDFPagesRoot.__init__  s*    M	
"	r5   )rM  rN  r  rL   rZ   r\   s   @r2   rJ  rJ    s     r5   rJ  c                   2   ^  \ rS rSrU 4S jrSS jrSrU =r$ )PDFExtGStatei  c                 .   > [         TU ]  5         Xl        g r-   )rK   rA   _dict_as_str)r0   dict_as_strrW   s     r2   rA   PDFExtGState.__init__  s    'r5   c                 :    U R                    SU R                   S3$ )Nz 0 obj
z
endobj)idrS  )r0   r   r1   s      r2   r3   PDFExtGState.serialize  s     ''(4#4#4"5X>>r5   )rS  r   )r6   r7   r8   r9   rA   r3   r:   r[   r\   s   @r2   rQ  rQ    s    (
? ?r5   rQ  c                   (    \ rS rSrSrS rSS jrSrg)PDFXrefAndTraileri  z$Cross-reference table & file trailerc                 b    Xl         UR                  S-   U l        S U l        S U l        S U l        g r8  )output_builderobj_idrM  catalog_objinfo_objencryption_obj)r0   r\  s     r2   rA   PDFXrefAndTrailer.__init__  s1    ,#**Q.
"r5   Nc                    U R                   n[        [        UR                  5      5      n/ nUR	                  S5        UR	                  SU R
                   35        UR	                  S5        [        SU R
                  5       H%  nUR	                  UR                  U   S S35        M'     UR	                  S5        UR	                  S5        UR	                  S	U R
                   35        UR	                  S
[        U R                  R                  5       35        UR	                  S[        U R                  R                  5       35        UR                  nU R                  (       aH  UR	                  S[        U R                  R                  5       35        UR                  R                  nO1UR                  5       nUS:X  a  UR!                  UR                  5      nU(       a  UR	                  SU S35        UR	                  S5        UR	                  S5        UR	                  U5        UR	                  S5        SR#                  U5      $ )Nxrefz0 z0000000000 65535 f r   010z	 00000 n trailer<<z/Size z/Root z/Info z	/Encrypt z/ID []>>	startxrefz%%EOF
)r\  r   r   bufferrE  rM  rangeoffsetspdf_refr^  rW  r_  fpdfr`  r1   file_id_default_file_idjoin)r0   r1   builderrj  outr]  rp  rq  s           r2   r3   PDFXrefAndTrailer.serialize  s   %%GNN+,	

6

R

|$%

()Atzz*FJJ'//&1#6i@A +

9

4

VDJJ<()

VGD$4$4$7$789:;

VGDMM$4$45678||JJ74+>+>+A+A#B"CDE,,44GllnG"}//?JJwiq)*

4

;

9

7yy~r5   )r^  rM  r`  r_  r\  r-   )r6   r7   r8   r9   r   rA   r3   r:   r.   r5   r2   rZ  rZ    s    *#r5   rZ  c                   T    \ rS rSrSrSr    SSSS\S\S	\S
\S\4S jjrSS jr	Sr
g)OutputIntentDictionaryi  aq  The optional OutputIntents (PDF 1.4) entry in the document
catalog dictionary holds an array of output intent dictionaries,
each describing the colour reproduction characteristics of a possible
output device.

Args:
    subtype (OutputIntentSubType, required): PDFA, PDFX or ISOPDF
    output_condition_identifier (str, required): see the Name in
        https://www.color.org/registry.xalter
    output_condition (str, optional): see the Definition in
        https://www.color.org/registry.xalter
    registry_name (str, optional): "https://www.color.org"
    dest_output_profile (PDFICCProfile, required/optional):
        PDFICCProfile | None # (required if
        output_condition_identifier does not specify a standard
        production condition; optional otherwise)
    info (str, required/optional see dest_output_profile): human
        readable description of profile
)rL   r   output_condition_identifieroutput_conditionregistry_namedest_output_profileinfoNrM   zOutputIntentSubType | strry  rz  r{  r|  r}  c                    [        S5      U l        [        [        R                  " U5      R                  5      U l        U(       a  [        U5      OS U l        U(       a  [        U5      OS U l        U(       a  [        U5      OS U l	        U(       a  [        U[        5      (       a  UOS U l        U(       a  [        U5      U l        g S U l        g )NOutputIntent)r   rL   r   coercer   r   r   ry  rz  r{  
isinstancer   r|  r}  )r0   rM   ry  rz  r{  r|  r}  s          r2   rA   OutputIntentDictionary.__init__  s     (	)009??@ + 12 	( ,<I&' 	 :GY}5D #z2E}'U'U   	 
 (,IdO		r5   c           
      ~    [        [        U 5       Vs0 s H  o3[        X5      _M     snUUS9n[        U5      $ s  snf )Nr~   r   r   s        r2   r3    OutputIntentDictionary.serialize  sB    !03D	:	'$$$	:/

 !!	 ;s   :)r|  r}  rz  ry  r{  r   rL   r   r   )r6   r7   r8   r9   r   r   r   r   rA   r3   r:   r.   r5   r2   rx  rx    s`    (I !%!-16,6 &)6 	6
 6 +6 66"r5   rx  c                   v    \ rS rSrSrS rS\S\4S jrS\4S jr	S\S\4S jr
S\4S	 jr\S\4S
 j5       rSrg)ResourceCatalogi  zKManage the indexing of resources and association to the pages they are usedc                 T    [        [        5      U l        [        [        5      U l        g r-   )r   r  r  setresources_per_pager   s    r2   rA   ResourceCatalog.__init__  s    $T*"-c"2r5   resource_typepage_numberc                 B   U[         R                  [         R                  4;   a\  U R                  U   nX$;  a#  U R	                  U5       [        U5      S-    3XB'   U R                  X14   R                  XB   5        XB   $ U R                  X14   R                  U5        g r8  )r
   PATTERNSHADDINGr  _get_prefixr   r  add)r0   r  resourcer  re   s        r2   r  ResourceCatalog.add  s    _44o6N6NOO~~m4H'''67H8I7JK " ##[$@AEE" %% <=AA(Kr5   c                 <    U R                   U   R                  5       $ r-   )r  items)r0   r  s     r2   	get_itemsResourceCatalog.get_items  s    ~~m,2244r5   c                 "    U R                   X4   $ r-   )r  )r0   r  r  s      r2   get_resources_per_page&ResourceCatalog.get_resources_per_page   s    &&'CDDr5   c                     [        5       nU R                  R                  5        H   u  u  p4nXA:X  d  M  UR                  U5        M"     U$ r-   )r  r  r  update)r0   r  unique_rtyper  s         r2   get_used_resources"ResourceCatalog.get_used_resources#  sC    $($;$;$A$A$C JQ%h' %D r5   c                 r    U[         R                  :X  a  gU[         R                  :X  a  g[        SU 35      e)NPShzNo prefix for resource type )r
   r  r  
ValueError)clsr  s     r2   r  ResourceCatalog._get_prefix*  s7    O333O4447GHHr5   )r  r  N)r6   r7   r8   r9   r   rA   r
   r  r  r  r  r  classmethodr  r:   r.   r5   r2   r  r    si    Q3  5 5E# Eo E  I I Ir5   r  c                       \ rS rSrSrS!S jrS rS rS"S jrS r	S	 r
\" S
S5      4S jrS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r\S 5       r S r!S r"g)#OutputProduceri3  zVGenerates the final bytearray representing the PDF document, based on a FPDF instance.c                     Xl         / U l        0 U l        SU l        0 U l        0 U l        [        [        5      U l        [        5       U l
        g )Nr   )rp  pdf_objsiccp_i_to_pdf_ir]  rn  trace_labels_per_obj_idr   r  sections_size_per_trace_label	bytearrayrl  )r0   rp  s     r2   rA   OutputProducer.__init__6  sB    	!')$-8-=*kr5   c           
      "   U R                   nUR                  (       aK  UR                  5       nUS:X  a  UR                  [	        S5      5      nUR                  R                  U5        UR                  nUR                  (       a0  UR                  R                  U:  a  UR                  R                  nU R                  R                  [        U5      5        U R                  5       nU R                  5       nU R                  5       nU R                  5       nUR                    H  nU R#                  US5        M     U R%                  U5        U R'                  5       n	U R)                  5       u  pU R+                  5       nU R-                  5       nU R/                  5       n[1        U 5      nU R                  R                  U5        [3        U5      Ul        U R7                  UUUS   UUU	U
S9  / nU GH  nUUl        UR:                   H  n/ nUR<                  (       a  UR                  UR<                  5        UR>                  (       a@  [A        UR>                  S5      (       a%  UR                  UR>                  R<                  5        U HF  nURB                  [E        U5      :  d  M  [G        SURB                   SURI                  5        S35      e   URK                  U5        M     UR:                  (       a  GM  S	Ul        GM     U H  nUR                  UR<                  5        M      U H-  n[M        UURB                  S
-
     RN                  5      Ul(        M/     URR                  RT                  RV                   H  nUURC                  5       S
-
     Ul,        M      X_l-        Xl.        Xl/        U R`                  (       a   SU R`                   35       eU Rb                  (       a   S[E        U Rb                  5       35       eU R                   H  n[e        U[f        5      (       a  S	nOQ[E        U R`                  5      U Rb                  URN                  '   U Rh                  Rk                  URN                  5      nU(       aD  U Rm                  U5         U Ro                  URq                  UR                  S95        S	S	S	5        M  U Ro                  URq                  UR                  S95        M     U Rs                  5         URt                  (       aV  [w        [x        U R`                  URt                  URz                  UR|                  UR~                  UR                  5      U l0        U R`                  $ ! , (       d  f       GMv  = f)z
This method alters the target FPDF instance
by assigning IDs to all PDF objects,
plus a few other properties on PDFPage instances
rg  r   embedded_files)pages_root_objfirst_page_objsig_annotation_objxmp_metadata_objstruct_tree_root_objoutline_dict_objdestz'Invalid reference to non-existing page z present on page z: Nr   z@Nothing should have been appended to the .buffer at this stage: z.No offset should have been set at this stage: )r1   )Arp  r1   rq  rr  r  generate_passwordsr@   r   _min_pdf_versionr  rE  r<   _add_pages_root_add_catalog
_add_pages_add_annotations_as_objectsr  _add_pdf_obj_insert_resources_add_structure_tree_add_document_outline_add_xmp_metadata	_add_info_add_encryptionrZ  r   rN  _finalize_catalogr  r  r  ahasattrr  r   r  r#  extendro  rW  page_refstruct_builderdoc_struct_elemkpgr^  r_  r`  rl  rn  r  r*   r  get_trace_size_outr3   _log_final_sections_sizes	_sign_keyr   r    
_sign_cert_sign_extra_certs_sign_hashalgo
_sign_time)r0   rp  rq  r@   r  r^  	page_objsr  embedded_filer  r  outline_itemsr  r_  r`  rc  destspage_objannot
page_destsr  outline_itemstruct_elempdf_objtrace_labels                            r2   	bufferizeOutputProducer.bufferizeA  s    yy
 !!llnG"}//	$@""55g>&&##''88;F11BBKY{34--/'')OO%	!==?!00Mm-=> 1y)#779*.*D*D*F'113>>#--/ &T" 'y1)$Q<1-!5- 	 	
 !H,HO!
::%%ejj177wuww77%%eggll3&D''#i.8(EdFVFVEWWhiqiwiwiyhzz|}  '
 Z( ) ???"&! "" *LLL**+ * D#Id.>.>.B$C$F$FGDM ..>>@@K&{'>'>'@1'DEKN A& , 	\Mdkk][	\ 	P;C<M;NO	P }}G'#344"+.t{{+;WZZ("::>>wzzJ%%k2II))D<R<R)S 32
 		'++d>T>T+UV % 	&&(>>&&&##DK {{% 32s   )U>>
V	c                     [        U[        5      (       d1  [        U[        5      (       d  [        U5      nUR                  S5      nU =R                  US-   -  sl        g)zAppend data to the bufferlatin1   
N)r  bytesr   r   rl  )r0   datas     r2   r  OutputProducer._out  sE    $&&dC((4y;;x(Dte|#r5   Nc                     U =R                   S-  sl         U R                   Ul        U R                  R                  U5        U(       a  X R                  U R                   '   U R                   $ r8  )r]  rW  r  rE  r  )r0   r  r  s      r2   r  OutputProducer._add_pdf_obj  sL    q[[
W%8C((5{{r5   c                     U R                   n[        UR                  [        UR                  5      S9nU R                  U5        U$ )N)rM  r  )rp  rJ  pages_count_dimensions_to_mediaboxdefault_page_dimensionsr  )r0   rp  r  s      r2   r  OutputProducer._add_pages_root  sB    yy%""-d.J.JK
 	.)r5   c              #      #    [        SU R                  R                  S-   5       HQ  nU R                  R                  U   nUR	                  5       U:X  d   SUR	                  5       < SU< 35       eUv   MS     g 7f)Nr   zpage_obj.index()=z != page_index=)rm  rp  r  r   r#  )r0   
page_indexr  s      r2   _iter_pages_in_order#OutputProducer._iter_pages_in_order  ss     499#8#81#<=Jyyz2H  J.7#(.."$$467.N >s   A:A<r   c                    U R                   n/ n[        U R                  5       5      U    H  nUR                  S:  a  [	        SSSS.SS9Ul        UR                  5       UR                  :w  a  [        UR                  5       5      Ul	        U R                  US5        UR                  U5        [        UR                  UR                  S	9nU R                  US5        XTl        M     U$ )
Nz1.3z/Groupz/Transparency
/DeviceRGB)z/Typez/Sz/CSr   r   r   r   )rp  listr  r@   r   r  r.  r  r  r  r  rE  r   r   r   )r0   _slicerp  r  r  cs_objs         r2   r  OutputProducer._add_pages  s    yy	T6689&AH%'!)&olS"" ""$(D(DD%<X=P=P=R%S"h0X& &!**T]]F fg. &! B$ r5   c                 0   S nU R                   R                  R                  5        Hk  nUR                   HX  n[	        U[
        5      (       d  M  U R                  U5        [	        UR                  [        5      (       d  ML  Ub   S5       eUnMZ     Mm     U$ )Nz0A /Sig annotation is present on more than 1 page)	rp  r   valuesr  r  r	   r  vr   )r0   r  r  	annot_objs       r2   r  *OutputProducer._add_annotations_as_objects  s    !		..0H%__	i77%%i0!)++y99.6NMN6-6* - 1 "!r5   c                 
  ^ 0 n[        U R                  R                  R                  5       S S9 GH  nUR                  S:X  aK  UR
                  S;  a  SOS n[        SUR
                  US9nU R                  US5        XAUR                  '   M_  UR                  S	:X  d  Mq  S
UR
                   3nUR                  R                  5       n[        UR                  5      S:  as  SR                  S UR                  S S  5       5      n[        UR                  5      S:  a  US[        UR                  5      S-
   S3-  n[        R                  SXW5        [         R"                  " SSS9nU=R$                  / SQ-  sl        [         R&                  " U5      n	U	R)                  US9  U	R                  UR*                  5        UR                  R-                  5        V
Vs0 s H*  u  pXR*                  R/                  U
R0                  5      _M,     nn
n[3        5       nUR*                  R5                  U5        UR7                  S5        UR9                  5       n[        SUSS9nU R                  US5        XUR                  '   [        SUUR:                  R<                  [?        U5      S9nU R                  US5        [A        U/5      Ul!        / nS mUR                  R-                  5        H]  u  n
n[        U
RD                  5      S:X  a  M!  URG                  SUS SSR                  U4S jU
RD                   5       5       S 35        M_     [I        S![        U5       S"SR                  U5       S#35      nU R                  US5        UUl%        [M        5       nU R                  US5        UUl'        UR:                  n[Q        U5      Ul)        U R                  US5        UUl*        S$/S%-  S%-  S&-  nUR-                  5        H1  u  nn
[W        U
S'-	  5      UUS&-  '   [W        U
S(-  5      UUS&-  S)-   '   M3     SR                  U5      n[I        URY                  S*5      SS+9nU R                  US5        UUl-        []        US,9nU R                  US5        UUl/        UR                  R`                  Rc                  5         UR                  Rd                  Rc                  5         URg                  5         GM     U$ s  snn
f )-Nc                     U R                   $ r-   )r)  )r   s    r2   <lambda>+OutputProducer._add_fonts.<locals>.<lambda>  s    dffr5   r   core)SymbolZapfDingbatsWinAnsiEncodingType1)rM   rN   rO   fontsTTFzMPDFAA+r   r   c              3      #    U  H=  nS [        U5       S[        U5      R                  S5      R                  5        S3v   M?     g7f)'z' (zunicode-escaper   N)chrr   r   ).0xs     r2   	<genexpr>,OutputProducer._add_fonts.<locals>.<genexpr>  sC      $!9A CF83s1v}}5E'F'M'M'O&PPQR!9s   AA
   z, ... (and z others)z+Font %s is missing the following glyphs: %sT)notdef_outlinerecommended_glyphs)FFTMGDEFGPOSGSUBMATHhdmxmetasbixCBDTCBLCEBDTEBLCEBSCzSVG CPALCOLRfvar)glyphsType0z
Identity-HCIDFontType2)rM   rN   rP   rQ   c                 L    U S:  a  SU S-
  S-	  -  nSU S-  -  nUS US 3$ U S $ )Ni  i   i   r  i   i  04Xr.   )unicode	code_highcode_lows      r2   format_code.OutputProducer._add_fonts.<locals>.format_codeg  sI    '$*g.?B-F$F	#)Wu_#="+C#??%c]+r5   <r-  z> <r   c              3   4   >#    U  H  nT" U5      v   M     g 7fr-   r.   )r  coder1  s     r2   r  r  s  s     7dVcdD8I8IVcs   z>
z/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo
<</Registry (Adobe)
/Ordering (UCS)
/Supplement 0
>> def
/CMapName /Adobe-Identity-UCS def
/CMapType 2 def
1 begincodespacerange
<0000> <FFFF>
endcodespacerange
z beginbfchar
zGendbfchar
endcmap
CMapName currentdict /CMap defineresource pop
end
end             r   r  r   r   )4sortedrp  r  r  rL   namerG   r  r)  r   get_all_glyph_namesr   missing_glyphsrs  LOGGERwarningftsubsetOptionsdrop_tables	Subsetterpopulatettfontr  
getGlyphID
glyph_namer   saveseekreaddescmissing_width_tt_font_widthsr   rR   r.  rE  r   rS   r^   rT   r   	font_namerU   r  r   rV   r   
font_file2pickcache_clear	get_glyphclose)r0   font_objs_per_indexr   rO   core_font_objfontnameglyph_namesmsgoptions	subsetterglyphchar_idcode_to_glyphoutputttfontstreamcomposite_font_objcid_font_objbfCharcode_mappedto_unicode_objcid_system_info_objfont_descriptor_objcid_to_gid_mapcccid_to_gid_map_objfont_file_cs_objr1  s                             @r2   
_add_fontsOutputProducer._add_fonts  s    499??1139LMDyyF" yy(BB & 
 !(#tyy8! !!-9.;DFF+e#$TYYK0 #kk==?t**+a/)) $!%!4!4Sb!9$ C 4../"4S1D1D-E-J,K8TTNNEx #**$SWX## ( #* %..w7	""+"6  - +/++*;*;*=!*= [[33E4D4DEE*=  ! !  (A%{{} &-#x,&" !!"4g>.@DFF+  '*&		//%d+	  !!,86>~6N"3 , +/++*;*;*=&E;5==)Q. MMK,C7dV[VcVc7d0d/eehi +> "2* 6{m>wwv'", !!.':0>"-&3o#!!"5w?1D.&*ii#04X#-!!"5w?/B, #)C#!5!9!.!4!4!6IB-0!_N26*14UT\1BN26A:. "7 "$!8 &6+228<t&" !!"4g>2D/#0,#G !!"2G<1A#.  ,,.%%113

] N` #"[!s    1Tc                     0 n[        U R                  R                  R                  R	                  5       S S9 H$  nUS   S:  d  M  U R                  U5      XS   '   M&     U$ )Nc                     U S   $ )Nr)  r.   )imgs    r2   r  ,OutputProducer._add_images.<locals>.<lambda>  s    3s8r5   r  usagesr   r)  )r;  rp  image_cacheimagesr  
_add_image)r0   img_objs_per_indexrp  s      r2   _add_imagesOutputProducer._add_images  sb    II!!((//17K
C 8}q /3s/C"s8,	

 "!r5   c                 :   US   nX R                   ;   a  U R                   U   $ SnU R                  R                  R                  R	                  5        H  u  pEX%:X  d  M  Un  O   Uc   e[        X1S   US   S9nU R                  US5      nXpR                   U'   U$ )zf
Returns the PDF object of the ICC profile indexed iccp_i in the FPDF object.
Adds it if not present.
iccp_iNdpncs)r   r   r   iccp)r  rp  rs  icc_profilesr  r   r  )r0   img_inforz  iccp_contenticcp_cr)  iccp_obj
iccp_pdf_is           r2   _ensure_iccpOutputProducer._ensure_iccp  s    
 (#)))''//..;;AACIF{% D ''' !e_
 &&x8
'1V$r5   c                    [        US   5      nS nUR                  S5      nUS:X  a"  [        SS[        US   5      S-  S-
   /5      nOFUb3  U R	                  U5      n[        S	[        U5      [        S
5      S/5      nOUS:X  a
  US   SL a  SnSUS    SUS    S3n[        SUS   US   US   UUS   US   UUS9	nU R                  US5        U R                  R                  (       a8  SU;   a2  SUS    3nU R                  US   US   SSUS   UUS   S .5      Ul        SU;   aa  [        US   U R                  R                  S!9n	U R                  U	S5        UR                  R                  [!        U	R"                  5      5        U$ )"Nr|  rz  Indexedz/Indexedr  pal   r   z	/ICCBased0R
DeviceCMYKinvertedTz[1 0 1 0 1 0 1 0]rf  dpz /BitsPerComponent bpcri  Imager  rQ   hf)	rM   r   r   r   r   r   r   r   r   rt  smaskz!/Predictor 15 /Colors 1 /Columns 
DeviceGrayr9  )rQ   r  r|  r  r  r  r  r   )r   r  r   r   r  r   r   r  rp  allow_images_transparencyru  r   r   r   r   rE  ro  rW  )
r0   r}  r   r   rz  r  r   img_objr  
pal_cs_objs
             r2   ru  OutputProducer._add_image  s   4:&(#)#"\c$u+.>!.Ca.G-HJK **40J"KZ#c(C#PQKL(J4',DJ<':4;-rJ&\s)9##E{Cy%

 	'8, 99..7d?4T#YK@B!__cc&c M
GN $)etyy/A/AJ j(3&&wz}}'=>r5   c                     [        5       nU R                  R                  R                  5        H&  u  p#[	        U5      nU R                  US5        XAU'   M(     U$ )Ngfxstate)r   rp   _drawing_graphics_state_registryr  rQ  r  )r0   gfxstate_objs_per_name
state_dictr<  gfxstate_objs        r2   _add_gfxstatesOutputProducer._add_gfxstates  sU    !, $		 J J P P RJ'
3LlJ7+74( !S &%r5   c                 (   [        5       nU R                  R                  R                  [        R
                  5       HP  u  p#UR                   H  nU R                  US5        M     UR                  5       nU R                  US5        XQU'   MR     U$ )Nfunctionr   )	r   rp  _resource_catalogr  r
   r  	functionsr  get_shading_object)r0   shading_objs_per_namer   r<  r  shading_objs         r2   _add_shadingsOutputProducer._add_shadings  s     +!YY88BB$$
MG $--!!(J7 .!446Kk95*5$'
 %$r5   c                     [        5       nU R                  R                  R                  [        R
                  5       H  u  p#U R                  US5        X!U'   M     U$ )Nr   )r   rp  r  r  r
   r  r  )r0   pattern_objs_per_namer   r<  s       r2   _add_patternsOutputProducer._add_patterns  sV     +!YY88BB##
MG gy1*1$'	

 %$r5   c           
         U R                  5       nU R                  5       nU R                  5       nU R                  5       nU R	                  5       nU R
                  R                  (       a%  U R                  UUUUU5      nU H	  nXxl        M     g [        USS9 GH  u  pU R
                  R                  R                  U	[        R                  5       V
s0 s H  n
XU
   _M
     nn
U R
                  R                  R                  U	[        R                  5       Vs0 s H  nXU   _M
     nnUR                  5        VVs0 s HA  u  pUU R
                  R                  R                  U	[        R                   5      ;   d  M?  X_MC     nnnU R
                  R                  R                  U	[        R"                  5       Vs0 s H	  nUUU   _M     nnU R
                  R                  R                  U	[        R$                  5       Vs0 s H	  nUUU   _M     nnU R                  UUUUU5      Ul        GM     g s  sn
f s  snf s  snnf s  snf s  snf )Nr   )start)rl  rw  r  r  r  rp  single_resources_object_add_resources_dictr  	enumerater  r  r
   FONTX_OBJECTr  EXT_G_STATEr  r  )r0   r  rU  rv  r  r  r  resources_dict_objr  r  font_idpage_font_objs_per_indeximg_idpage_img_objs_per_indexgfx_name	gfx_statepage_gfxstate_objs_per_nameshading_namepage_shading_objs_per_namepattern_namepage_pattern_objs_per_names                        r2   r   OutputProducer._insert_resources#  s|   "oo/!--/!%!4!4!6 $ 2 2 4 $ 2 2 499,,!%!9!9#"&%%" &%7" & *39A)F% $(99#>#>#U#U#_%9%9$,$ 99$ ) , #'))"="="T"T#_%=%=#+# v66# ( + 2H1M1M1O/1O-yy22II#_%@%@ (H'1O , / )-		(C(C(Z(Z#_%=%=).) !"7"EE) + . )-		(C(C(Z(Z#_%<%<).) !"7"EE) + . &*%=%=,+/..&"C *G,+/..s$   H=I>IIIIc           
         SnSu  pxpnU(       aN  [        [        UR                  5       5       VVs0 s H  u  pSU 3[        UR                  5      _M      snn5      nU(       aN  [        [        UR                  5       5       VVs0 s H  u  pSU 3[        UR                  5      _M      snn5      nU(       aF  [        UR                  5        VVs0 s H  u  nnSU 3[        UR                  5      _M!     snn5      n	U(       aO  [        [        UR                  5       5       VVs0 s H  u  nnSU 3[        UR                  5      _M!     snn5      n
U(       aO  [        [        UR                  5       5       VVs0 s H  u  nnSU 3[        UR                  5      _M!     snn5      n[        UUUU	U
US9nU R                  U5        U$ s  snnf s  snnf s  snnf s  snnf s  snnf )Nz$[/PDF /Text /ImageB /ImageC /ImageI])NNNNNz/Fz/I/)r   r   r   r   r   r   )r   r;  r  ro  rW  r   r  )r0   rU  rv  r  r  r  r   r   r   r   r   r   r#  font_objr  r<  r  r  pattern_objresources_objs                       r2   r  "OutputProducer._add_resources_dict^  s    :8T5g ,22E2K2K2M+N+N L'(++"66+ND  +11C1I1I1K*L*L L''**"55*LH "" /E.J.J.L.L*l vJ 88.LK ! .44I4O4O4Q-R-R)k vJ 77-RG ! .44I4O4O4Q-R-R)k vJ 77-RG %#
 	-(]s   %G
%G
&G
(&G
>&G%
c                     U R                   R                  R                  5       (       a  gSnU R                   R                   H  nUc  UnU R                  US5        M     U$ )zDBuilds a Structure Hierarchy, including image alternate descriptionsNstructure_tree)rp  r  emptyr  )r0   r  r  s      r2   r  "OutputProducer._add_structure_tree  s]    99##))++#yy//G#+'.$g'78 0 $#r5   c                     U R                   R                  (       d  gS / p![        U R                   R                  5       H,  nUc  UnOUR                  U5        U R	                  US5        M.     X4$ )N)Nr.   document_outline)rp  _outliner   rE  r  )r0   r  r  r  s       r2   r  $OutputProducer._add_document_outline  sh    yy!!*.-)$))*<*<=G'#* $$W-g'9: >  ..r5   c                     U R                   R                  (       d  g SU R                   R                   S3n[        U5      nU R                  U5        U$ )Nu9   <?xpacket begin="ï»¿" id="W5M0MpCehiHzreSzNTczkc9d"?>
z
<?xpacket end="w"?>
)rp  xmp_metadatar   r  )r0   xpacketr  s      r2   r   OutputProducer._add_xmp_metadata  sI    yy%%NtyyOeOeNff}~ )'"r5   c                    U R                   nS nUR                  (       a   [        UR                  SSS9n[        UR                  [        USS 5      [        USS 5      [        USS 5      [        USS 5      [        USS 5      US	9nU R                  U5        U$ ! [         a  n[	        SUR                   35      UeS nAff = f)
NT)with_tzrc   zCould not format date: ro   rp   rq   rr   rs   )rn   ro   rp   rq   rr   rs   rl   )	rp  rl   r   	Exceptionr   rj   rn   r   r  )r0   rp  rl   errorr_  s        r2   r  OutputProducer._add_info  s    yy '(:(:DRV W
 **D)T2440T:t4D)T2T:t4'
 	(#  #-d.@.@-ABs   B 
C#B<<Cc                     U R                   R                  (       a9  U R                   R                  nUR                  5       nU R                  U5        U$ g r-   )rp  r1   get_encryption_objr  )r0   encryption_handlerr  s      r2   r  OutputProducer._add_encryption  sC    99&&!%!<!<(;;=Gg&Nr5   c                     U R                   R                  nU(       d  gU H1  nUR                  (       d  M  U R                  UR                  5        M3     [	        U5      $ )zshould be added in _add_catalogN)rp  r   r|  r  r   )r0   r   output_intents      r2   _add_output_intents"OutputProducer._add_output_intents  sN    11+M000!!-"C"CD , ''r5   c                     U R                   n[        [        USS 5      UR                  UR                  UR
                  S9nU R                  5       Ul        U R                  U5        U$ )Nr   )r   r   r   r   )	rp  r   r   r   r   r   r  r   r  )r0   rp  r^  s      r2   r  OutputProducer._add_catalog  sa    yy vt,((nn#66	
 &*%=%=%?"+&r5   c           
         U R                   nX!l        Xal        Xql        XQl        U(       a:  [
        R                  [
        R                  -   n	[        [        U/5      U	S9Ul
        UR                  [        ;   a*  [        UR                  5      /[        UR                     Qn
O0[        UR                  5      SSS[        UR                  S-  5      /n
[!        U
5      Ul        U(       a  [%        SS05      Ul        UR(                  (       a  UR(                   Vs/ s H^  nUR*                  (       d  M  [-        UR/                  5       5      R1                  5        SUR3                  5       R1                  5        3PM`     nn[%        S[%        S	[!        U5      05      05      Ul        [7        U R9                  5       5       VVs/ s HH  u  pUR;                  5       (       d  M  U S[%        UR;                  5       R1                  5       5       3PMJ     nnnU(       a4  UR                  S
   R;                  5       (       d  UR=                  SS5        U(       a*  [%        S[        U5      R1                  5       05      Ul        g g s  snf s  snnf )Nry   r$   r#   d   z/Markedtruer   z/EmbeddedFilesz/Namesr   r   z0 <<>>z/Nums) rp  r   r   r   r   r   SIGNATURES_EXISTAPPEND_ONLYrv   r   r   	zoom_modeZOOM_CONFIGSro  rW  r   pdf_listr   r   r   r  globally_enclosedr   basenamer3   	file_specr   r  r  r<  insertpage_labels)r0   r^  r  r  r  r  r  r  rp  flagszoom_configr  file_spec_namesr)  pager  s                   r2   r   OutputProducer._finalize_catalog  s?    yy*';$//!22]5N5NNE$,!3 45%K! >>\)))*dnn-K ))*DNNS()K #+;"7$,i-@$AK! &*%8%8%8M 22 m9]3356@@BC1]E\E\E^EhEhEjDkl%8  
 !)!8Xx7P,Q#RS!K
 %T%>%>%@A
A""$ Aqc8D//1;;=>?@A 	 

 tzz!};;==q(+&.(;/99;<'K# !
s   J5AJJ	$0J	c              #      #    [        U R                  5      nS v   U R                  U==   [        U R                  5      U-
  -  ss'   g 7fr-   )r   rl  r  )r0   label	prev_sizes      r2   r  OutputProducer._trace_size.  s:     $	**51S5E	5QQ1s   AA
c                     [         R                  S5        U R                  R                  5        H%  u  p[         R                  SU[	        U5      5        M'     g )Nz4Final size summary of the biggest document sections:z- %s: %s)r?  debugr  r  _sizeof_fmt)r0   r  section_sizes      r2   r  (OutputProducer._log_final_sections_sizes4  sA    KL#'#E#E#K#K#MELLUK,EF $Nr5   )rl  rp  r  r]  rn  r  r  r  )rp  r"   r-   )#r6   r7   r8   r9   r   rA   r  r  r  r  r  slicer  r  rl  rw  r  ru  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r:   r.   r5   r2   r  r  3  s    \	"tl$ !&a ."r#h",4l&
%%9v@D	$
/,(8t R R
Gr5   r  r}  c                     U(       a  U R                  XX45      u  pp4U(       a
  UnXt-
  U-
  n	OU* nX$-   n	SX6-  S SX-  S SX-  S SX-  S SU S    S3$ )Nzq .2fz 0 0 r   z cm /Ir)  z Do Q)scale_inside_box)
r}  r  yrQ   r  keep_aspect_ratioscalepdf_height_to_flipstream_hstream_ys
             r2   stream_content_for_raster_imager	  :  s     **16
a%)A-25
QYsO5!1# 6
AIc?!H,S1 23i[	r5   c           
         Sn0 n0 nSnSnSn[        [        U R                  R                  5       S S95      nU H  nXx   n	XS-   :X  a  UR                  U:X  ak  UR                  X!   S   :X  a,  UR                  U/ 5      R                  UR                  5        O#X!   R                  5         UnXXR                  /X!'   SnSX1'   OLU(       a  U	nUR                  /X!'   OX!   R                  UR                  5        SnOU	nUR                  /X!'   SnU	nUR                  nM     Sn
SnSnUn[        UR                  5       5       HX  u  p[        U5      nX:X  a'  U(       d   X;  d  US	:  a  X;   a  X	 X*   X.   -   X*'   X.	 OUn
UU-   nX;   a  US	:  nX	 US-  nMV  SnMZ     / n[        UR                  5       5       Hy  u  p[        [        U5      5      S:X  a.  UR                  S
U S
U[        U5      -   S-
   S
US    35        MK  UR                  S
U SS
R                  S U 5       5       S35        M{     SSR                  U5       S3$ )Nr   rg  Fc                     U S   $ r8  r.   )items    r2   r  !_tt_font_widths.<locals>.<lambda>\  s    tAwr5   r  r   Tr  r   z [ c              3   J   #    U  H  n[        [        U5      5      v   M     g 7fr-   )r   r  )r  r  s     r2   r  "_tt_font_widths.<locals>.<genexpr>  s     '@RCFRs   !#z ]
[r   rh  )r  r;  r   r  glyph_width
setdefaultrE  popr   r  rs  )r   rangeidrange_range_intervalprevcid	prevwidthintervalr)  r\  
cid_mappedprevknextkprevintrir  wscwsrQ   s                     r2   rN  rN  S  sd   GFNGIH &**,2FGHF]
A+&  I-$$(::%%gr299%:K:KLO'')%G'02C2C&DFO*.'(G','8'8&9FOO**5+<+<=  G$001FOH%%	5 6 EEG	B'"g:g1;#'wE"MFI5FM	EC7AgGQJEG (  	A's2w<1HHq1QR[1_-Qr!ug67HHq3sxx'@R'@@AFG	 (
 rwwqzl!r5   c                      U u  pSUS SUS S3$ )Nz[0 0 r  r   rh  r.   )r.  r1  r2  s      r2   r  r    s#    $H8C.)C22r5   c                 b    S H"  n[        U 5      S:  a  U S U U 3s  $ U S-  n M$     U S SU 3$ )N)r   KiMiGiTiPiEiZii   z3.1fz.1fYi)abs)numsuffixunits      r2   r  r    sJ    >s8d?$ZvfX..t ? #Yb!!r5   )Fr   N)B)Rr   loggingcollectionsr   r   
contextlibr   ior   	fontToolsr   rA  annotationsr	   enumsr
   r   r   r   errorsr   
line_breakr   image_datastructuresr   outliner   signr   r   syntaxr   r   r   r   r   r   r   r   r   r   r  r   ro  utilr   r   endesiver    ImportErrortypingr!   rp  r"   	getLoggerr6   r?  r  r*   r<   rG   r^   rj   rv   r   r   r   r   r   r   r   r  rJ  rQ  rZ  rx  r  r  r	  rN  r  r  r.   r5   r2   <module>rC     s    0 %  ( & A A & ! 6 1 ' )   9 2 ' + !			8	$ ") 
*  *'i ' I +i +*2 2% %*9 %$ %#% #'! 'T)$ )8. .b];i ];@9 ?9 ?'( 'T@" @"F(I (IVDG DGZ 

2AH3
"e+  Fs   F# #F/.F/